1711648100320Simon Kornblith and Avram Lyon/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2011 Avram Lyon and the Center for History and New Media
George Mason University, Fairfax, Virginia, USA
http://zotero.org
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
/* eslint-disable camelcase */
var HIGHWIRE_MAPPINGS = {
citation_title: "title",
citation_publication_date: "date", // perhaps this is still used in some old implementations
citation_cover_date: "date", // used e.g. by Springer http://link.springer.com/article/10.1023/A:1021669308832
citation_date: "date",
citation_journal_title: "publicationTitle",
citation_journal_abbrev: "journalAbbreviation",
citation_inbook_title: "publicationTitle", // used as bookTitle or proceedingTitle, e.g. http://pubs.rsc.org/en/content/chapter/bk9781849730518-00330/978-1-84973-051-8
citation_book_title: "bookTitle",
citation_volume: "volume",
citation_issue: "issue",
citation_series_title: "series",
citation_conference_title: "conferenceName",
citation_conference: "conferenceName",
citation_dissertation_institution: "university",
citation_technical_report_institution: "institution",
citation_technical_report_number: "number",
citation_publisher: "publisher",
citation_isbn: "ISBN",
citation_abstract: "abstractNote",
citation_doi: "DOI",
citation_public_url: "url",
citation_language: "language"
/* the following are handled separately in addHighwireMetadata()
"citation_author"
"citation_authors"
"citation_firstpage"
"citation_lastpage"
"citation_issn"
"citation_eIssn"
"citation_pdf_url"
"citation_abstract_html_url"
"citation_fulltext_html_url"
"citation_pmid"
"citation_online_date"
"citation_year"
"citation_keywords"
*/
};
/* eslint-enable */
// Maps actual prefix in use to URI
// The defaults are set to help out in case a namespace is not declared
// Copied from RDF translator
var _prefixes = {
bib: "http://purl.org/net/biblio#",
bibo: "http://purl.org/ontology/bibo/",
dc: "http://purl.org/dc/elements/1.1/",
dcterms: "http://purl.org/dc/terms/",
prism: "http://prismstandard.org/namespaces/1.2/basic/",
foaf: "http://xmlns.com/foaf/0.1/",
vcard: "http://nwalsh.com/rdf/vCard#",
link: "http://purl.org/rss/1.0/modules/link/",
z: "http://www.zotero.org/namespaces/export#",
eprint: "http://purl.org/eprint/terms/",
eprints: "http://purl.org/eprint/terms/",
og: "http://ogp.me/ns#", // Used for Facebook's OpenGraph Protocol
article: "http://ogp.me/ns/article#",
book: "http://ogp.me/ns/book#",
music: "http://ogp.me/ns/music#",
video: "http://ogp.me/ns/video#",
so: "http://schema.org/",
codemeta: "https://codemeta.github.io/terms/",
rdf: "http://www.w3.org/1999/02/22-rdf-syntax-ns#"
};
var _prefixRemap = {
// DC should be in lower case
"http://purl.org/DC/elements/1.0/": "http://purl.org/dc/elements/1.0/",
"http://purl.org/DC/elements/1.1/": "http://purl.org/dc/elements/1.1/"
};
var namespaces = {};
var _haveItem = false,
_itemType;
var RDF;
var CUSTOM_FIELD_MAPPINGS;
function addCustomFields(customFields) {
CUSTOM_FIELD_MAPPINGS = customFields;
}
function setPrefixRemap(map) {
_prefixRemap = map;
}
function remapPrefix(uri) {
if (_prefixRemap[uri]) return _prefixRemap[uri];
return uri;
}
function getPrefixes(doc) {
var links = doc.getElementsByTagName("link");
for (let i = 0; i < links.length; i++) {
let link = links[i];
// Look for the schema's URI in our known schemata
var rel = link.getAttribute("rel");
if (rel) {
var matches = rel.match(/^schema\.([a-zA-Z]+)/);
if (matches) {
let uri = remapPrefix(link.getAttribute("href"));
// Zotero.debug("Prefix '" + matches[1].toLowerCase() +"' => '" + uri + "'");
_prefixes[matches[1].toLowerCase()] = uri;
}
}
}
// also look in html and head elements
var prefixes = (doc.documentElement.getAttribute('prefix') || '')
+ (doc.head.getAttribute('prefix') || '');
var prefixRE = /(\w+):\s+(\S+)/g;
var m;
while ((m = prefixRE.exec(prefixes))) {
let uri = remapPrefix(m[2]);
Z.debug("Prefix '" + m[1].toLowerCase() + "' => '" + uri + "'");
_prefixes[m[1].toLowerCase()] = uri;
}
}
// Boolean Parameters (default values false)
// * strict = false: compare only ending substring, e.g. bepress
// * strict = true: compare exactly
// * all = false: return only first match
// * all = true: concatenate all values
function getContentText(doc, name, strict, all) {
let csspath = 'html>head>meta[name' + (strict ? '="' : '$="') + name + '"]';
if (all) {
return Array.from(doc.querySelectorAll(csspath)).map(obj => obj.content || obj.contents).join(', ');
}
else {
return attr(doc, csspath, 'content') || attr(doc, csspath, 'contents');
}
}
function getContent(doc, name, strict) {
var xpath = '/x:html/'
+ (
exports.searchForMetaTagsInBody
? '*[local-name() = "head" or local-name() = "body"]'
: 'x:head' // default
)
+ '/x:meta['
+ (strict ? '@name' : 'substring(@name, string-length(@name)-' + (name.length - 1) + ')')
+ '="' + name + '"]/';
return ZU.xpath(doc, xpath + '@content | ' + xpath + '@contents', namespaces);
}
function fixCase(authorName) {
// fix case if all upper or all lower case
if (authorName.toUpperCase() === authorName
|| authorName.toLowerCase() === authorName) {
return ZU.capitalizeTitle(authorName, true);
}
return authorName;
}
function processFields(doc, item, fieldMap, strict) {
for (var metaName in fieldMap) {
var zoteroName = fieldMap[metaName];
// only concatenate values for ISSN and ISBN; otherwise take the first
var allValues = (zoteroName == "ISSN" || zoteroName == "ISBN");
var value = getContentText(doc, metaName, strict, allValues);
if (value && value.trim()) {
item[zoteroName] = ZU.trimInternal(value);
}
}
}
function completeItem(doc, newItem, hwType) {
// Strip off potential junk from RDF
newItem.seeAlso = [];
addHighwireMetadata(doc, newItem, hwType);
addOtherMetadata(doc, newItem);
addLowQualityMetadata(doc, newItem);
finalDataCleanup(doc, newItem);
if (CUSTOM_FIELD_MAPPINGS) {
processFields(doc, newItem, CUSTOM_FIELD_MAPPINGS, true);
}
newItem.complete();
}
// eslint-disable-next-line consistent-return
function detectWeb(doc, url) {
// blacklist wordpress jetpack comment plugin so it doesn't override other metadata
if (url.includes("jetpack.wordpress.com/jetpack-comment/")) return false;
if (exports.itemType) return exports.itemType;
init(doc, url, Zotero.done);
}
function init(doc, url, callback, forceLoadRDF) {
getPrefixes(doc);
let metaSelector
= exports.searchForMetaTagsInBody
? "head > meta, body > meta"
: "head > meta"; // default
var metaTags = doc.querySelectorAll(metaSelector);
Z.debug("Embedded Metadata: found " + metaTags.length + " meta tags.");
if (forceLoadRDF /* check if this is called from doWeb */ && !metaTags.length) {
if (!exports.searchForMetaTagsInBody && doc.head) {
Z.debug(doc.head.innerHTML
.replace(/<style[^<]+(?:<\/style>|\/>)/ig, '')
.replace(/<link[^>]+>/ig, '')
.replace(/(?:\s*[\r\n]\s*)+/g, '\n')
);
}
else {
Z.debug("Embedded Metadata: No <meta> tag found in body or head tag");
}
}
var hwType, hwTypeGuess, generatorType, statements = [];
for (let i = 0; i < metaTags.length; i++) {
let metaTag = metaTags[i];
// Two formats allowed:
// <meta name="..." content="..." />
// <meta property="..." content="..." />
// The first is more common; the second is recommended by Facebook
// for their OpenGraph vocabulary
var tags = metaTag.getAttribute("name");
if (!tags) tags = metaTag.getAttribute("property");
var value = metaTag.getAttribute("content");
if (!tags || !value) continue;
// Z.debug(tags + " -> " + value);
tags = tags.split(/\s+/);
for (var j = 0, m = tags.length; j < m; j++) {
var tag = tags[j];
let parts = tag.split(/[.:_]/);
let prefix;
let prefixLength;
if (parts.length > 2) {
// e.g. og:video:release_date
prefix = parts[1].toLowerCase();
prefixLength = parts[0].length + parts[1].length + 1;
}
if (!prefix || !_prefixes[prefix]) {
prefix = parts[0].toLowerCase();
prefixLength = parts[0].length;
}
if (_prefixes[prefix]) {
var prop = tag.substr(prefixLength + 1);
prop = prop.charAt(0).toLowerCase() + prop.slice(1);
// bib and bibo types are special, they use rdf:type to define type
var specialNS = [_prefixes.bib, _prefixes.bibo];
if (prop == 'type' && specialNS.includes(_prefixes[prefix])) {
value = _prefixes[prefix] + value;
prefix = 'rdf';
}
// This debug is for seeing what is being sent to RDF
// Zotero.debug(_prefixes[prefix]+prop +"=>"+value);
statements.push([url, _prefixes[prefix] + prop, value]);
}
else if (tag.toLowerCase() == 'generator') {
var lcValue = value.toLowerCase();
if (lcValue.includes('blogger')
|| lcValue.includes('wordpress')
|| lcValue.includes('wooframework')
) {
generatorType = 'blogPost';
}
}
else {
var shortTag = tag.slice(tag.lastIndexOf('citation_'));
switch (shortTag) {
case "citation_journal_title":
hwType = "journalArticle";
break;
case "citation_technical_report_institution":
hwType = "report";
break;
case "citation_conference_title":
case "citation_conference":
hwType = "conferencePaper";
break;
case "citation_book_title":
case "citation_inbook_title":
hwType = "bookSection";
break;
case "citation_dissertation_institution":
hwType = "thesis";
break;
case "citation_title": // fall back to journalArticle, since this is quite common
case "citation_series_title": // possibly journal article, though it could be book
hwTypeGuess = hwTypeGuess || "journalArticle";
break;
case 'citation_isbn':
hwTypeGuess = "book"; // Unlikely, but other item types may have ISBNs as well (e.g. Reports?)
break;
}
}
}
}
if (statements.length || forceLoadRDF) {
// load RDF translator, so that we don't need to replicate import code
var translator = Zotero.loadTranslator("import");
translator.setTranslator("5e3ad958-ac79-463d-812b-a86a9235c28f");
translator.setHandler("itemDone", function (obj, newItem) {
_haveItem = true;
// Z.debug(newItem)
completeItem(doc, newItem, hwType);
});
translator.getTranslatorObject(function (rdf) {
for (var i = 0; i < statements.length; i++) {
var statement = statements[i];
rdf.Zotero.RDF.addStatement(statement[0], statement[1], statement[2], true);
}
var nodes = rdf.getNodes(true);
rdf.defaultUnknownType = hwTypeGuess || generatorType
// if we have RDF data, then default to webpage
|| (nodes.length ? "webpage" : false);
// if itemType is overridden, no reason to run RDF.detectWeb
if (exports.itemType) {
rdf.itemType = exports.itemType;
_itemType = exports.itemType;
}
else if (hwType) _itemType = hwType; // hwTypes are generally most accurate
else {
_itemType = nodes.length ? rdf.detectType({}, nodes[0], {}) : rdf.defaultUnknownType;
}
RDF = rdf;
callback(_itemType);
});
}
else {
callback(exports.itemType || hwType || hwTypeGuess || generatorType);
}
}
function doWeb(doc, url) {
// set default namespace
namespaces.x = doc.documentElement.namespaceURI;
// populate _rdfPresent, _itemType, and _prefixes
// As of https://github.com/zotero/zotero/commit/0cd183613f5dacc85676109c3a5c6930e3632fae
// globals do not seem to be isolated to individual translators, so
// RDF object, importantly the "itemDone" handlers, can get overridden
// by other translators, so we cannot reuse the RDF object from detectWeb
RDF = false;
if (!RDF) init(doc, url, function () {
importRDF(doc, url);
}, true);
else importRDF(doc, url);
}
// perform RDF import
function importRDF(doc) {
RDF.doImport();
if (!_haveItem) {
completeItem(doc, new Zotero.Item(_itemType));
}
}
/**
* Adds HighWire metadata and completes the item
*/
function addHighwireMetadata(doc, newItem, hwType) {
// HighWire metadata
processFields(doc, newItem, HIGHWIRE_MAPPINGS);
var authorNodes = getContent(doc, 'citation_author');
if (authorNodes.length == 0) {
authorNodes = getContent(doc, 'citation_authors');
}
var editorNodes = getContent(doc, 'citation_editor');
if (editorNodes.length == 0) {
editorNodes = getContent(doc, 'citation_editors');
}
// save rdfCreators for later
var rdfCreators = newItem.creators;
newItem.creators = processHighwireCreators(authorNodes, "author", doc).concat(processHighwireCreators(editorNodes, "editor", doc));
if (!newItem.creators.length) {
newItem.creators = rdfCreators;
}
else if (rdfCreators.length) {
// try to use RDF creator roles to update the creators we have
for (let i = 0, n = newItem.creators.length; i < n; i++) {
var name = newItem.creators[i].firstName
+ newItem.creators[i].lastName;
for (let j = 0, m = rdfCreators.length; j < m; j++) {
var creator = rdfCreators[j];
if (name.toLowerCase() == (creator.firstName + creator.lastName).toLowerCase()) {
// highwire should set all to author, so we only care about editor
// contributor is not always a contributor
if (creator.creatorType == 'editor') {
newItem.creators[i].creatorType = creator.creatorType;
}
rdfCreators.splice(j, 1);
break;
}
}
}
/* This may introduce duplicates
// if there are leftover creators from RDF, we should use them
if(rdfCreators.length) {
for(var i=0, n=rdfCreators.length; i<n; i++) {
newItem.creators.push(rdfCreators[i]);
}
}*/
}
// Deal with tags in a string
// we might want to look at the citation_keyword metatag later
if (!newItem.tags || !newItem.tags.length) {
var tags = getContent(doc, 'citation_keywords');
newItem.tags = [];
for (let i = 0; i < tags.length; i++) {
var tag = tags[i].textContent.trim();
if (tag) {
var splitTags = tag.split(';');
for (let j = 0; j < splitTags.length; j++) {
if (!splitTags[j].trim()) continue;
newItem.tags.push(splitTags[j].trim());
}
}
}
}
// sometimes RDF has more info, let's not drop it
var rdfPages = (newItem.pages) ? newItem.pages.split(/\s*-\s*/) : [];
// matches hyphens and en-dashes
let dashRe = /[-\u2013]/g;
var firstpage = getContentText(doc, 'citation_firstpage');
var lastpage = getContentText(doc, 'citation_lastpage');
if (firstpage) {
firstpage = firstpage.replace(dashRe, '-');
if (firstpage.includes("-")) {
firstpage = firstpage.split(/\s*-\s*/)[0];
lastpage = lastpage || firstpage.split(/\s*-\s*/)[1];
}
}
if (lastpage) {
lastpage = lastpage.replace(dashRe, '-');
if (lastpage.includes('-')) {
firstpage = firstpage || lastpage.split(/\s*-\s*/)[0];
lastpage = lastpage.split(/\s*-\s*/)[1];
}
}
firstpage = firstpage || rdfPages[0];
lastpage = lastpage || rdfPages[1];
if (firstpage && (firstpage = firstpage.trim())) {
newItem.pages = firstpage
+ ((lastpage && (lastpage = lastpage.trim())) ? '-' + lastpage : '');
}
// swap in hwType for itemType
if (hwType && hwType != newItem.itemType) {
newItem.itemType = hwType;
}
// fall back to some other date options
if (!newItem.date) {
var onlineDate = getContentText(doc, 'citation_online_date');
var citationYear = getContentText(doc, 'citation_year');
if (onlineDate && citationYear) {
onlineDate = ZU.strToISO(onlineDate);
if (citationYear < onlineDate.substr(0, 4)) {
// online date can be years after the citation year
newItem.date = citationYear;
}
else {
newItem.date = onlineDate;
}
}
else {
newItem.date = onlineDate || citationYear;
}
}
// prefer ISSN over eISSN
var issn = getContentText(doc, 'citation_issn', null, true)
|| getContentText(doc, 'citation_ISSN', null, true)
|| getContentText(doc, 'citation_eIssn', null, true);
if (issn) newItem.ISSN = issn;
// This may not always yield desired results
// i.e. if there is more than one pdf attachment (not common)
var pdfURL = getContent(doc, 'citation_pdf_url');
if (pdfURL.length) {
pdfURL = pdfURL[0].textContent;
// delete any pdf attachments if present
// would it be ok to just delete all attachments??
for (let i = newItem.attachments.length - 1; i >= 0; i--) {
if (newItem.attachments[i].mimeType == 'application/pdf') {
newItem.attachments.splice(i, 1);
}
}
newItem.attachments.push({ title: "Full Text PDF", url: pdfURL, mimeType: "application/pdf" });
}
else {
// Only add snapshot if we didn't add a PDF
newItem.attachments.push({ document: doc, title: "Snapshot" });
}
// store PMID in Extra and as a link attachment
// e.g. http://www.sciencemag.org/content/332/6032/977.full
var PMID = getContentText(doc, 'citation_pmid');
if (PMID) {
if (newItem.extra) newItem.extra += '\n';
else newItem.extra = '';
newItem.extra += 'PMID: ' + PMID;
newItem.attachments.push({
title: "PubMed entry",
url: "http://www.ncbi.nlm.nih.gov/pubmed/" + PMID,
mimeType: "text/html",
snapshot: false
});
}
// Other last chances
if (!newItem.url) {
newItem.url = getContentText(doc, "citation_abstract_html_url")
|| getContentText(doc, "citation_fulltext_html_url");
}
}
// process highwire creators; currently only editor and author, but easy to extend
function processHighwireCreators(creatorNodes, role, doc) {
let itemCreators = [];
let lastCreator = null;
for (let creatorNode of creatorNodes) {
let creators = creatorNode.nodeValue.split(/\s*;\s*/);
if (creators.length == 1 && creatorNodes.length == 1) {
var authorsByComma = creators[0].split(/\s*,\s*/);
/* If there is only one author node and
we get nothing when splitting by semicolon, there are at least two
words on either side of a comma, and it doesn't appear to be a
two-word Spanish surname, we split by comma. */
let lang = getContentText(doc, 'citation_language');
let twoWordName = authorsByComma.length == 2
&& ['es', 'spa', 'Spanish', 'español'].includes(lang)
&& authorsByComma[0].split(' ').length == 2;
if (authorsByComma.length > 1
&& authorsByComma[0].includes(" ")
&& authorsByComma[1].includes(" ")
&& !twoWordName) creators = authorsByComma;
}
for (let creator of creators) {
creator = creator.trim();
// skip empty authors. Try to match something other than punctuation
if (!creator || !creator.match(/[^\s,-.;]/)) continue;
// Skip adjacent repeated authors
if (lastCreator && creator == lastCreator) continue;
lastCreator = creator;
creator = ZU.cleanAuthor(creator, role, creator.includes(","));
if (creator.firstName) {
// fix case for personal names
creator.firstName = fixCase(creator.firstName);
creator.lastName = fixCase(creator.lastName);
}
itemCreators.push(creator);
}
}
return itemCreators;
}
function addOtherMetadata(doc, newItem) {
// Scrape parsely metadata http://parsely.com/api/crawler.html
var parselyJSON = ZU.xpathText(doc, '(//x:meta[@name="parsely-page"]/@content)[1]', namespaces);
if (parselyJSON) {
try {
var parsely = JSON.parse(parselyJSON);
}
catch (e) {}
if (parsely) {
if (!newItem.title && parsely.title) {
newItem.title = parsely.title;
}
if (!newItem.url && parsely.url) {
newItem.url = parsely.url;
}
if (!newItem.date && parsely.pub_date) {
var date = new Date(parsely.pub_date);
if (!isNaN(date.getUTCFullYear())) {
newItem.date = ZU.formatDate({
year: date.getUTCFullYear(),
month: date.getUTCMonth(),
day: date.getUTCDate()
}, true);
}
}
if (!newItem.creators.length && parsely.author) {
newItem.creators.push(ZU.cleanAuthor('' + parsely.author, 'author'));
}
if (!newItem.tags.length && parsely.tags && parsely.tags.length) {
newItem.tags = parsely.tags;
}
}
}
}
function addLowQualityMetadata(doc, newItem) {
// if we don't have a creator, look for byline on the page
// but first, we're desperate for a title
if (!newItem.title) {
Z.debug("Title was not found in meta tags. Using document title as title");
newItem.title = doc.title;
}
if (newItem.title) {
newItem.title = newItem.title.replace(/\s+/g, ' '); // make sure all spaces are \u0020
if (newItem.publicationTitle) {
// remove publication title from the end of title (see #604)
// this can occur if we have to doc.title, og:title etc.
// Make sure we escape all regex special chars in publication title
var removePubTitleRegex = new RegExp('\\s*[-–—=_:|~#]\\s*'
+ newItem.publicationTitle.replace(/([()[\]$^*+.?|])/g, '\\$1') + '\\s*$', 'i');
newItem.title = newItem.title.replace(removePubTitleRegex, '');
}
}
if (!newItem.creators.length) {
// the authors in the standard W3 author tag are safer than byline guessing
var w3authors = new Set(
Array.from(doc.querySelectorAll('meta[name="author" i], meta[property="author" i]'))
.map(authorNode => authorNode.content)
.filter(content => content && /[^\s,-.;]/.test(content)));
// Condé Nast is a company, not an author
if (w3authors.size && !(w3authors.size == 1 && w3authors.has("Condé Nast"))) {
for (let author of w3authors) {
newItem.creators.push(ZU.cleanAuthor(author, "author"));
}
}
else if (tryOgAuthors(doc)) {
newItem.creators = tryOgAuthors(doc);
}
else {
getAuthorFromByline(doc, newItem);
}
}
// fall back to "keywords"
if (!newItem.tags.length) {
newItem.tags = attr(doc, 'meta[name="keywords" i]', 'content');
}
// We can try getting abstract from 'description'
if (!newItem.abstractNote) {
newItem.abstractNote = ZU.trimInternal(
attr(doc, 'meta[name="description" i]', 'content'));
}
if (!newItem.url) {
newItem.url = ZU.xpathText(doc, '//head/link[@rel="canonical"]/@href') || doc.location.href;
}
if (!newItem.language) {
newItem.language = attr(doc, 'meta[name="language" i]', 'content')
|| ZU.xpathText(doc, '//x:meta[@name="lang"]/@content', namespaces)
|| ZU.xpathText(doc, '//x:meta[@http-equiv="content-language"]/@content', namespaces)
|| ZU.xpathText(doc, '//html/@lang')
|| doc.documentElement.getAttribute('xml:lang');
}
if (!newItem.date) {
newItem.date = ZU.strToISO(attr(doc, 'time[datetime]', 'datetime'));
}
newItem.libraryCatalog = doc.location.host;
// add access date
newItem.accessDate = 'CURRENT_TIMESTAMP';
}
/* returns an array of objects of Og authors, but only where they do not contain a URL to prevent getting facebook profiles
In a worst case scenario, where real authors and social media profiles are mixed, we might miss some, but that's still
preferable to garbage */
function tryOgAuthors(doc) {
var authors = [];
var ogAuthors = ZU.xpath(doc, '//meta[@property="article:author" or @property="video:director" or @property="music:musician"]');
for (var i = 0; i < ogAuthors.length; i++) {
if (ogAuthors[i].content && !/(https?:\/\/)?[\da-z.-]+\.[a-z.]{2,6}/.test(ogAuthors[i].content) && ogAuthors[i].content !== "false") {
authors.push(ZU.cleanAuthor(ogAuthors[i].content, "author"));
}
}
return authors.length ? authors : null;
}
function getAuthorFromByline(doc, newItem) {
var bylineClasses = ['byline', 'bylines', 'vcard', 'article-byline'];
Z.debug("Looking for authors in " + bylineClasses.join(', '));
var bylines = [], byline;
for (var i = 0; i < bylineClasses.length; i++) {
byline = doc.getElementsByClassName(bylineClasses[i]);
Z.debug("Found " + byline.length + " elements with '" + bylineClasses[i] + "' class");
for (var j = 0; j < byline.length; j++) {
if (!byline[j].innerText.trim()) continue;
bylines.push(byline[j]);
}
}
var actualByline;
if (!bylines.length) {
Z.debug("No byline found.");
return;
}
else if (bylines.length == 1) {
actualByline = bylines[0];
}
else if (newItem.title) {
Z.debug(bylines.length + " bylines found:");
Z.debug(bylines.map(function (n) {
return ZU.trimInternal(n.innerText);
}).join('\n'));
Z.debug("Locating the one closest to title.");
// find the closest one to the title (in DOM)
actualByline = false;
var parentLevel = 1;
var skipList = [];
// Wrap title in quotes so we can use it in the xpath
var xpathTitle = newItem.title.toLowerCase();
if (xpathTitle.includes('"')) {
if (!xpathTitle.includes("'")) {
// We can just use single quotes then
xpathTitle = "'" + xpathTitle + "'";
}
else {
// Escaping double quotes in xpaths is really hard
// Solution taken from http://kushalm.com/the-perils-of-xpath-expressions-specifically-escaping-quotes
xpathTitle = 'concat("' + xpathTitle.replace(/"+/g, '",\'$&\', "') + '")';
}
}
else {
xpathTitle = '"' + xpathTitle + '"';
}
var titleXPath = './/*[normalize-space(translate(text(),"ABCDEFGHJIKLMNOPQRSTUVWXYZ\u00a0","abcdefghjiklmnopqrstuvwxyz "))='
+ xpathTitle + ']';
Z.debug("Looking for title using: " + titleXPath);
while (!actualByline && bylines.length != skipList.length && parentLevel < 5) {
Z.debug("Parent level " + parentLevel);
for (let i = 0; i < bylines.length; i++) {
if (skipList.includes(i)) continue;
if (parentLevel == 1) {
// skip bylines that contain bylines
var containsBylines = false;
for (let j = 0; !containsBylines && j < bylineClasses.length; j++) {
containsBylines = bylines[i].getElementsByClassName(bylineClasses[j]).length;
}
if (containsBylines) {
Z.debug("Skipping potential byline " + i + ". Contains other bylines");
skipList.push(i);
continue;
}
}
var bylineParent = bylines[i];
for (let j = 0; j < parentLevel; j++) {
bylineParent = bylineParent.parentElement;
}
if (!bylineParent) {
Z.debug("Skipping potential byline " + i + ". Nowhere near title");
skipList.push(i);
continue;
}
if (ZU.xpath(bylineParent, titleXPath).length) {
if (actualByline) {
// found more than one, bail
Z.debug('More than one possible byline found. Will not proceed');
return;
}
actualByline = bylines[i];
}
}
parentLevel++;
}
}
if (actualByline) {
// are any of these actual likely to appear in the real world?
// well, no, but things happen:
// https://github.com/zotero/translators/issues/2001
let irrelevantTags = 'time, button, textarea, script';
if (actualByline.querySelector(irrelevantTags)) {
actualByline = actualByline.cloneNode(true);
for (let child of actualByline.querySelectorAll(irrelevantTags)) {
child.parentNode.removeChild(child);
}
}
byline = ZU.trimInternal(actualByline.innerText);
Z.debug("Extracting author(s) from byline: " + byline);
var li = actualByline.getElementsByTagName('li');
if (li.length) {
for (let i = 0; i < li.length; i++) {
var author = ZU.trimInternal(li[i].textContent).replace(/[,\s]+$/, "");
newItem.creators.push(ZU.cleanAuthor(fixCase(author), 'author', author.includes(',')));
}
}
else {
byline = byline.split(/\bby[:\s]+/i);
byline = byline[byline.length - 1].replace(/\s*[[(].+?[)\]]\s*/g, '');
var authors = byline.split(/\s*(?:(?:,\s*)?\band\b|,|&)\s*/i);
if (authors.length == 2 && authors[0].split(' ').length == 1) {
// this was probably last, first
newItem.creators.push(ZU.cleanAuthor(fixCase(byline), 'author', true));
}
else {
for (let i = 0, n = authors.length; i < n; i++) {
if (!authors[i].length || authors[i].includes('@')) {
// skip some odd splits and twitter handles
continue;
}
if (authors[i].split(/\s/).length == 1) {
// probably corporate author
newItem.creators.push({
lastName: authors[i],
creatorType: 'author',
fieldMode: 1
});
}
else {
newItem.creators.push(
ZU.cleanAuthor(fixCase(authors[i]), 'author'));
}
}
}
}
}
else {
Z.debug("No reliable byline found.");
}
}
/** If we already have tags - run through them one by one,
* split where necessary and concat them.
* This will deal with multiple tags, some of them comma delimited,
* some semicolon, some individual
*/
function finalDataCleanup(doc, newItem) {
if (typeof newItem.tags == 'string') {
newItem.tags = [newItem.tags];
}
if (newItem.tags && newItem.tags.length && Zotero.parentTranslator) {
if (exports.splitTags) {
var tags = [];
for (let i in newItem.tags) {
newItem.tags[i] = newItem.tags[i].trim();
if (!newItem.tags[i].includes(';')) {
// split by comma, since there are no semicolons
tags = tags.concat(newItem.tags[i].split(/\s*,\s*/));
}
else {
tags = tags.concat(newItem.tags[i].split(/\s*;\s*/));
}
}
for (let i = 0; i < tags.length; i++) {
if (tags[i] === "") tags.splice(i, 1);
}
newItem.tags = tags;
}
}
else {
// Unless called from another translator, don't include automatic tags,
// because most of the time they are not right
newItem.tags = [];
}
// Cleanup DOI
if (newItem.DOI) {
newItem.DOI = ZU.cleanDOI(newItem.DOI);
}
// Add DOI to non-supported item types
if (newItem.DOI && !ZU.fieldIsValidForType("DOI", newItem.itemType)) {
if (newItem.extra) {
newItem.extra += "\nDOI: " + newItem.DOI;
}
else {
newItem.extra = "DOI: " + newItem.DOI;
}
}
// URLs in meta tags can technically be relative (see the ccc.de test for
// an example), so we need to handle that
if (newItem.url) {
newItem.url = relativeToAbsolute(doc, newItem.url);
}
// remove itemID - comes from RDF translator, doesn't make any sense for online data
newItem.itemID = "";
// worst case, if this is not called from another translator, use URL for title
if (!newItem.title && !Zotero.parentTranslator) newItem.title = newItem.url;
}
function relativeToAbsolute(doc, url) {
if (ZU.resolveURL) {
return ZU.resolveURL(url);
}
// adapted from Nuclear Receptor Signaling translator
if (!url) {
return doc.location.href;
}
// check whether it's already absolute
if (url.match(/^(\w+:)?\/\//)) {
return url;
}
if (url[0] == '/') {
if (url[1] == '/') {
// protocol-relative
return doc.location.protocol + url;
}
else {
// relative to root
return doc.location.protocol + '//' + doc.location.host
+ url;
}
}
// relative to current directory
let location = doc.location.href;
if (location.includes('?')) {
location = location.slice(0, location.indexOf('?'));
}
return location.replace(/([^/]\/)[^/]+$/, '$1') + url;
}
var exports = {
doWeb: doWeb,
detectWeb: detectWeb,
addCustomFields: addCustomFields,
itemType: false,
// workaround for meta tags in body caused by parsing invalid HTML; only
// use as a last resort
searchForMetaTagsInBody: false,
// activate/deactivate splitting tags in final data cleanup when they contain commas or semicolons
splitTags: true,
fixSchemaURI: setPrefixRemap
};
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.ajol.info/index.php/thrb/article/view/63347",
"items": [
{
"itemType": "journalArticle",
"title": "Knowledge, treatment seeking and preventive practices in respect of malaria among patients with HIV at the Lagos University Teaching Hospital",
"creators": [
{
"firstName": "Akinwumi A.",
"lastName": "Akinyede",
"creatorType": "author"
},
{
"firstName": "Alade",
"lastName": "Akintonwa",
"creatorType": "author"
},
{
"firstName": "Charles",
"lastName": "Okany",
"creatorType": "author"
},
{
"firstName": "Olufunsho",
"lastName": "Awodele",
"creatorType": "author"
},
{
"firstName": "Duro C.",
"lastName": "Dolapo",
"creatorType": "author"
},
{
"firstName": "Adebimpe",
"lastName": "Adeyinka",
"creatorType": "author"
},
{
"firstName": "Ademola",
"lastName": "Yusuf",
"creatorType": "author"
}
],
"date": "2011/10/17",
"DOI": "10.4314/thrb.v13i4.63347",
"ISSN": "1821-9241",
"abstractNote": "The synergistic interaction between Human Immunodeficiency virus (HIV) disease and Malaria makes it mandatory for patients with HIV to respond appropriately in preventing and treating malaria. Such response will help to control the two diseases. This study assessed the knowledge of 495 patients attending the HIV clinic, in Lagos University Teaching Hospital, Nigeria. Their treatment seeking, preventive practices with regards to malaria, as well as the impact of socio – demographic / socio - economic status were assessed. Out of these patients, 245 (49.5 %) used insecticide treated bed nets; this practice was not influenced by socio – demographic or socio – economic factors. However, knowledge of the cause, knowledge of prevention of malaria, appropriate use of antimalarial drugs and seeking treatment from the right source increased with increasing level of education (p < 0.05). A greater proportion of the patients, 321 (64.9 %) utilized hospitals, pharmacy outlets or health centres when they perceived an attack of malaria. Educational intervention may result in these patients seeking treatment from the right place when an attack of malaria fever is perceived.",
"issue": "4",
"journalAbbreviation": "1",
"language": "en",
"libraryCatalog": "www.ajol.info",
"publicationTitle": "Tanzania Journal of Health Research",
"rights": "Copyright (c)",
"url": "https://www.ajol.info/index.php/thrb/article/view/63347",
"volume": "13",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://scholarworks.umass.edu/climate_nuclearpower/2011/nov19/34/",
"items": [
{
"itemType": "conferencePaper",
"title": "Session F: Contributed Oral Papers – F2: Energy, Climate, Nuclear Medicine: Reducing Energy Consumption and CO2 One Street Lamp at a Time",
"creators": [
{
"firstName": "Peter",
"lastName": "Somssich",
"creatorType": "author"
}
],
"date": "2011",
"abstractNote": "Why wait for federal action on incentives to reduce energy use and address Greenhouse Gas (GHG) reductions (e.g. CO2), when we can take personal actions right now in our private lives and in our communities? One such initiative by private citizens working with Portsmouth NH officials resulted in the installation of energy reducing lighting products on Court St. and the benefits to taxpayers are still coming after over 4 years of operation. This citizen initiative to save money and reduce CO2 emissions, while only one small effort, could easily be duplicated in many towns and cities. Replacing old lamps in just one street fixture with a more energy efficient (Non-LED) lamp has resulted after 4 years of operation ($\\sim $15,000 hr. life of product) in real electrical energy savings of $>$ {\\$}43. and CO2 emission reduction of $>$ 465 lbs. The return on investment (ROI) was less than 2 years. This is much better than any financial investment available today and far safer. Our street only had 30 such lamps installed; however, the rest of Portsmouth (population 22,000) has at least another 150 street lamp fixtures that are candidates for such an upgrade. The talk will also address other energy reduction measures that green the planet and also put more green in the pockets of citizens and municipalities.",
"conferenceName": "Climate Change and the Future of Nuclear Power",
"language": "en",
"libraryCatalog": "scholarworks.umass.edu",
"shortTitle": "Session F",
"url": "https://scholarworks.umass.edu/climate_nuclearpower/2011/nov19/34",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://scholarworks.umass.edu/lov/vol2/iss1/2/",
"items": [
{
"itemType": "journalArticle",
"title": "Wabanaki Resistance and Healing: An Exploration of the Contemporary Role of an Eighteenth Century Bounty Proclamation in an Indigenous Decolonization Process",
"creators": [
{
"firstName": "Bonnie D.",
"lastName": "Newsom",
"creatorType": "author"
},
{
"firstName": "Jamie",
"lastName": "Bissonette-Lewey",
"creatorType": "author"
}
],
"date": "2012",
"DOI": "10.7275/R5KW5CXB",
"ISSN": "1947-508X",
"abstractNote": "The purpose of this paper is to examine the contemporary role of an eighteenth century bounty proclamation issued on the Penobscot Indians of Maine. We focus specifically on how the changing cultural context of the 1755 Spencer Phips Bounty Proclamation has transformed the document from serving as a tool for sanctioned violence to a tool of decolonization for the Indigenous peoples of Maine. We explore examples of the ways indigenous and non-indigenous people use the Phips Proclamation to illustrate past violence directed against Indigenous peoples. This exploration is enhanced with an analysis of the re-introduction of the Phips Proclamation using concepts of decolonization theory.",
"issue": "1",
"language": "en",
"libraryCatalog": "scholarworks.umass.edu",
"pages": "2",
"publicationTitle": "Landscapes of Violence",
"shortTitle": "Wabanaki Resistance and Healing",
"url": "https://scholarworks.umass.edu/lov/vol2/iss1/2",
"volume": "2",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://scholarworks.umass.edu/open_access_dissertations/508/",
"items": [
{
"itemType": "thesis",
"title": "Decision-Theoretic Meta-reasoning in Partially Observable and Decentralized Settings",
"creators": [
{
"firstName": "Alan Scott",
"lastName": "Carlin",
"creatorType": "author"
}
],
"date": "2012",
"abstractNote": "This thesis examines decentralized meta-reasoning. For a single agent or multiple agents, it may not be enough for agents to compute correct decisions if they do not do so in a timely or resource efficient fashion. The utility of agent decisions typically increases with decision quality, but decreases with computation time. The reasoning about one's computation process is referred to as meta-reasoning. Aspects of meta-reasoning considered in this thesis include the reasoning about how to allocate computational resources, including when to stop one type of computation and begin another, and when to stop all computation and report an answer. Given a computational model, this translates into computing how to schedule the basic computations that solve a problem. This thesis constructs meta-reasoning strategies for the purposes of monitoring and control in multi-agent settings, specifically settings that can be modeled by the Decentralized Partially Observable Markov Decision Process (Dec-POMDP). It uses decision theory to optimize computation for efficiency in time and space in communicative and non-communicative decentralized settings. Whereas base-level reasoning describes the optimization of actual agent behaviors, the meta-reasoning strategies produced by this thesis dynamically optimize the computational resources which lead to the selection of base-level behaviors.",
"extra": "DOI: 10.7275/n8e9-xy93",
"language": "en",
"libraryCatalog": "scholarworks.umass.edu",
"university": "University of Massachusetts Amherst",
"url": "https://scholarworks.umass.edu/open_access_dissertations/508",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://scielosp.org/article/rsp/2007.v41suppl2/94-100/en/",
"items": [
{
"itemType": "journalArticle",
"title": "Perceptions of HIV rapid testing among injecting drug users in Brazil",
"creators": [
{
"firstName": "P. R.",
"lastName": "Telles-Dias",
"creatorType": "author"
},
{
"firstName": "S.",
"lastName": "Westman",
"creatorType": "author"
},
{
"firstName": "A. E.",
"lastName": "Fernandez",
"creatorType": "author"
},
{
"firstName": "M.",
"lastName": "Sanchez",
"creatorType": "author"
}
],
"date": "2007-12",
"DOI": "10.1590/S0034-89102007000900015",
"ISSN": "0034-8910, 0034-8910, 1518-8787",
"abstractNote": "OBJETIVO: Descrever as impressões, experiências, conhecimentos, crenças e a receptividade de usuários de drogas injetáveis para participar das estratégias de testagem rápida para HIV. MÉTODOS: Estudo qualitativo exploratório foi conduzido entre usuários de drogas injetáveis, de dezembro de 2003 a fevereiro de 2004, em cinco cidades brasileiras, localizadas em quatro regiões do País. Um roteiro de entrevista semi-estruturado contendo questões fechadas e abertas foi usado para avaliar percepções desses usuários sobre procedimentos e formas alternativas de acesso e testagem. Foram realizadas 106 entrevistas, aproximadamente 26 por região. RESULTADOS: Características da população estudada, opiniões sobre o teste rápido e preferências por usar amostras de sangue ou saliva foram apresentadas junto com as vantagens e desvantagens associadas a cada opção. Os resultados mostraram a viabilidade do uso de testes rápidos entre usuários de drogas injetáveis e o interesse deles quanto à utilização destes métodos, especialmente se puderem ser equacionadas questões relacionadas à confidencialidade e confiabilidade dos testes. CONCLUSÕES: Os resultados indicam que os testes rápidos para HIV seriam bem recebidos por essa população. Esses testes podem ser considerados uma ferramenta valiosa, ao permitir que mais usuários de drogas injetáveis conheçam sua sorologia para o HIV e possam ser referidos para tratamento, como subsidiar a melhoria das estratégias de testagem entre usuários de drogas injetáveis.",
"journalAbbreviation": "Rev. Saúde Pública",
"language": "en",
"libraryCatalog": "scielosp.org",
"pages": "94-100",
"publicationTitle": "Revista de Saúde Pública",
"url": "https://scielosp.org/article/rsp/2007.v41suppl2/94-100/en/",
"volume": "41",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.hindawi.com/journals/mpe/2013/868174/",
"items": [
{
"itemType": "journalArticle",
"title": "Robust Filtering for Networked Stochastic Systems Subject to Sensor Nonlinearity",
"creators": [
{
"firstName": "Guoqiang",
"lastName": "Wu",
"creatorType": "author"
},
{
"firstName": "Jianwei",
"lastName": "Zhang",
"creatorType": "author"
},
{
"firstName": "Yuguang",
"lastName": "Bai",
"creatorType": "author"
}
],
"date": "2013/2/20",
"DOI": "10.1155/2013/868174",
"ISSN": "1024-123X",
"abstractNote": "The problem of network-based robust filtering for stochastic systems with sensor nonlinearity is investigated in this paper. In the network environment, the effects of the sensor saturation, output quantization, and network-induced delay are taken into simultaneous consideration, and the output measurements received in the filter side are incomplete. The random delays are modeled as a linear function of the stochastic variable described by a Bernoulli random binary distribution. The derived criteria for performance analysis of the filtering-error system and filter design are proposed which can be solved by using convex optimization method. Numerical examples show the effectiveness of the design method.",
"language": "en",
"libraryCatalog": "www.hindawi.com",
"publicationTitle": "Mathematical Problems in Engineering",
"url": "https://www.hindawi.com/journals/mpe/2013/868174/",
"volume": "2013",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://volokh.com/2013/12/22/northwestern-cant-quit-asa-boycott-member/",
"items": [
{
"itemType": "blogPost",
"title": "Northwestern Can't Quit ASA Over Boycott Because it is Not a Member",
"creators": [
{
"firstName": "Eugene",
"lastName": "Kontorovich",
"creatorType": "author"
}
],
"date": "2013-12-22T16:58:34+00:00",
"abstractNote": "Northwestern University recently condemned the American Studies Association boycott of Israel. Unlike some other schools that quit their institutional membership in the ASA over the boycott, Northwestern has not. Many of my Northwestern colleagues were about to start urging a similar withdrawal. Then we learned from our administration that despite being listed as in institutional […]",
"blogTitle": "The Volokh Conspiracy",
"language": "en-US",
"url": "https://volokh.com/2013/12/22/northwestern-cant-quit-asa-boycott-member/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://hbr.org/2015/08/how-to-do-walking-meetings-right",
"items": [
{
"itemType": "webpage",
"title": "How to Do Walking Meetings Right",
"creators": [
{
"firstName": "Russell",
"lastName": "Clayton",
"creatorType": "author"
},
{
"firstName": "Christopher",
"lastName": "Thomas",
"creatorType": "author"
},
{
"firstName": "Jack",
"lastName": "Smothers",
"creatorType": "author"
}
],
"date": "2015-08-05T12:05:17Z",
"abstractNote": "New research finds creativity benefits.",
"url": "https://hbr.org/2015/08/how-to-do-walking-meetings-right",
"websiteTitle": "Harvard Business Review",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://olh.openlibhums.org/article/id/4400/",
"items": [
{
"itemType": "journalArticle",
"title": "Opening the Open Library of Humanities",
"creators": [
{
"firstName": "Martin Paul",
"lastName": "Eve",
"creatorType": "author"
},
{
"firstName": "Caroline",
"lastName": "Edwards",
"creatorType": "author"
}
],
"date": "2015-09-28",
"DOI": "10.16995/olh.46",
"ISSN": "2056-6700",
"issue": "1",
"language": "en",
"libraryCatalog": "olh.openlibhums.org",
"publicationTitle": "Open Library of Humanities",
"url": "https://olh.openlibhums.org/article/id/4400/",
"volume": "1",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.vox.com/2016/1/7/10726296/wheres-rey-star-wars-monopoly",
"items": [
{
"itemType": "webpage",
"title": "#WheresRey and the big Star Wars toy controversy, explained",
"creators": [
{
"firstName": "Caroline",
"lastName": "Framke",
"creatorType": "author"
}
],
"date": "2016-01-07T08:20:02-05:00",
"abstractNote": "Excluding female characters in merchandise is an ongoing pattern.",
"language": "en",
"url": "https://www.vox.com/2016/1/7/10726296/wheres-rey-star-wars-monopoly",
"websiteTitle": "Vox",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.diva-portal.org/smash/record.jsf?pid=diva2%3A766397&dswid=5057",
"items": [
{
"itemType": "conferencePaper",
"title": "Mobility modeling for transport efficiency : Analysis of travel characteristics based on mobile phone data",
"creators": [
{
"firstName": "Vangelis",
"lastName": "Angelakis",
"creatorType": "author"
},
{
"firstName": "David",
"lastName": "Gundlegård",
"creatorType": "author"
},
{
"firstName": "Clas",
"lastName": "Rydergren",
"creatorType": "author"
},
{
"firstName": "Botond",
"lastName": "Rajna",
"creatorType": "author"
},
{
"firstName": "Katerina",
"lastName": "Vrotsou",
"creatorType": "author"
},
{
"firstName": "Richard",
"lastName": "Carlsson",
"creatorType": "author"
},
{
"firstName": "Julien",
"lastName": "Forgeat",
"creatorType": "author"
},
{
"firstName": "Tracy H.",
"lastName": "Hu",
"creatorType": "author"
},
{
"firstName": "Evan L.",
"lastName": "Liu",
"creatorType": "author"
},
{
"firstName": "Simon",
"lastName": "Moritz",
"creatorType": "author"
},
{
"firstName": "Sky",
"lastName": "Zhao",
"creatorType": "author"
},
{
"firstName": "Yaotian",
"lastName": "Zheng",
"creatorType": "author"
}
],
"date": "2013",
"abstractNote": "DiVA portal is a finding tool for research publications and student theses written at the following 50 universities and research institutions.",
"conferenceName": "Netmob 2013 - Third International Conference on the Analysis of Mobile Phone Datasets, May 1-3, 2013, MIT, Cambridge, MA, USA",
"language": "eng",
"libraryCatalog": "www.diva-portal.org",
"shortTitle": "Mobility modeling for transport efficiency",
"url": "http://urn.kb.se/resolve?urn=urn:nbn:se:liu:diva-112443",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://link.springer.com/article/10.1023/A:1021669308832",
"items": [
{
"itemType": "journalArticle",
"title": "Why Bohm's Quantum Theory?",
"creators": [
{
"firstName": "H. D.",
"lastName": "Zeh",
"creatorType": "author"
}
],
"date": "1999/04/01",
"DOI": "10.1023/A:1021669308832",
"ISSN": "1572-9524",
"abstractNote": "This is a brief reply to S. Goldstein's article “Quantum theory without observers” in Physics Today. It is pointed out that Bohm's pilot wave theory is successful only because it keeps Schrödinger's (exact) wave mechanics unchanged, while the rest of it is observationally meaningless and solely based on classical prejudice.",
"issue": "2",
"journalAbbreviation": "Found Phys Lett",
"language": "en",
"libraryCatalog": "link.springer.com",
"pages": "197-200",
"publicationTitle": "Foundations of Physics Letters",
"rights": "1999 Plenum Publishing Corporation",
"url": "https://link.springer.com/article/10.1023/A:1021669308832",
"volume": "12",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://muse.jhu.edu/article/234097",
"items": [
{
"itemType": "journalArticle",
"title": "Serfs on the Move: Peasant Seasonal Migration in Pre-Reform Russia, 1800–61",
"creators": [
{
"firstName": "Boris B.",
"lastName": "Gorshkov",
"creatorType": "author"
}
],
"date": "2000",
"DOI": "10.1353/kri.2008.0061",
"ISSN": "1538-5000",
"issue": "4",
"language": "en",
"libraryCatalog": "muse.jhu.edu",
"pages": "627-656",
"publicationTitle": "Kritika: Explorations in Russian and Eurasian History",
"shortTitle": "Serfs on the Move",
"url": "https://muse.jhu.edu/article/234097",
"volume": "1",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://media.ccc.de/v/35c3-9386-introduction_to_deep_learning",
"items": [
{
"itemType": "videoRecording",
"title": "Introduction to Deep Learning",
"creators": [
{
"firstName": "",
"lastName": "teubi",
"creatorType": "author"
}
],
"date": "2018-12-27 01:00:00 +0100",
"abstractNote": "This talk will teach you the fundamentals of machine learning and give you a sneak peek into the internals of the mystical black box. You...",
"language": "en",
"libraryCatalog": "media.ccc.de",
"url": "https://media.ccc.de/v/35c3-9386-introduction_to_deep_learning",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://upcommons.upc.edu/handle/2117/114657",
"items": [
{
"itemType": "conferencePaper",
"title": "Necesidad y morfología: la forma racional",
"creators": [
{
"firstName": "Antonio A.",
"lastName": "García García",
"creatorType": "author"
}
],
"date": "2015-06",
"ISBN": "9788460842118",
"abstractNote": "Abstracts aceptados sin presentacion / Accepted abstracts without presentation",
"conferenceName": "International Conference Arquitectonics Network: Architecture, Education and Society, Barcelona, 3-5 June 2015: Abstracts",
"language": "spa",
"libraryCatalog": "upcommons.upc.edu",
"publisher": "GIRAS. Universitat Politècnica de Catalunya",
"rights": "Open Access",
"shortTitle": "Necesidad y morfología",
"url": "https://upcommons.upc.edu/handle/2117/114657",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.pewresearch.org/fact-tank/2019/12/12/u-s-children-more-likely-than-children-in-other-countries-to-live-with-just-one-parent/",
"items": [
{
"itemType": "blogPost",
"title": "U.S. has world’s highest rate of children living in single-parent households",
"creators": [
{
"firstName": "Stephanie",
"lastName": "Kramer",
"creatorType": "author"
}
],
"abstractNote": "Almost a quarter of U.S. children under 18 live with one parent and no other adults, more than three times the share of children around the world who do so.",
"blogTitle": "Pew Research Center",
"language": "en-US",
"url": "https://www.pewresearch.org/fact-tank/2019/12/12/u-s-children-more-likely-than-children-in-other-countries-to-live-with-just-one-parent/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.cambridge.org/core/books/conservation-research-policy-and-practice/22AB241C45F182E40FC7F13637485D7E",
"items": [
{
"itemType": "webpage",
"title": "Conservation Research, Policy and Practice",
"creators": [
{
"firstName": "William J.",
"lastName": "Sutherland",
"creatorType": "editor"
},
{
"firstName": "Peter N. M.",
"lastName": "Brotherton",
"creatorType": "editor"
},
{
"firstName": "Zoe G.",
"lastName": "Davies",
"creatorType": "editor"
},
{
"firstName": "Nancy",
"lastName": "Ockendon",
"creatorType": "editor"
},
{
"firstName": "Nathalie",
"lastName": "Pettorelli",
"creatorType": "editor"
},
{
"firstName": "Juliet A.",
"lastName": "Vickery",
"creatorType": "editor"
}
],
"date": "2020/04",
"abstractNote": "Conservation research is essential for advancing knowledge but to make an impact scientific evidence must influence conservation policies, decision making and practice. This raises a multitude of challenges. How should evidence be collated and presented to policymakers to maximise its impact? How can effective collaboration between conservation scientists and decision-makers be established? How can the resulting messages be communicated to bring about change? Emerging from a successful international symposium organised by the British Ecological Society and the Cambridge Conservation Initiative, this is the first book to practically address these questions across a wide range of conservation topics. Well-renowned experts guide readers through global case studies and their own experiences. A must-read for practitioners, researchers, graduate students and policymakers wishing to enhance the prospect of their work 'making a difference'. This title is also available as Open Access on Cambridge Core.",
"extra": "DOI: 10.1017/9781108638210",
"language": "en",
"url": "https://www.cambridge.org/core/books/conservation-research-policy-and-practice/22AB241C45F182E40FC7F13637485D7E",
"websiteTitle": "Cambridge Core",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://journals.linguisticsociety.org/proceedings/index.php/PLSA/article/view/4468",
"items": [
{
"itemType": "journalArticle",
"title": "A Robin Hood approach to forced alignment: English-trained algorithms and their use on Australian languages",
"creators": [
{
"firstName": "Sarah",
"lastName": "Babinski",
"creatorType": "author"
},
{
"firstName": "Rikker",
"lastName": "Dockum",
"creatorType": "author"
},
{
"firstName": "J. Hunter",
"lastName": "Craft",
"creatorType": "author"
},
{
"firstName": "Anelisa",
"lastName": "Fergus",
"creatorType": "author"
},
{
"firstName": "Dolly",
"lastName": "Goldenberg",
"creatorType": "author"
},
{
"firstName": "Claire",
"lastName": "Bowern",
"creatorType": "author"
}
],
"date": "2019/03/15",
"DOI": "10.3765/plsa.v4i1.4468",
"ISSN": "2473-8689",
"abstractNote": "Forced alignment automatically aligns audio recordings of spoken language with transcripts at the segment level, greatly reducing the time required to prepare data for phonetic analysis. However, existing algorithms are mostly trained on a few well-documented languages. We test the performance of three algorithms against manually aligned data. For at least some tasks, unsupervised alignment (either based on English or trained from a small corpus) is sufficiently reliable for it to be used on legacy data for low-resource languages. Descriptive phonetic work on vowel inventories and prosody can be accurately captured by automatic alignment with minimal training data. Consonants provided significantly more challenges for forced alignment.",
"issue": "1",
"language": "en",
"libraryCatalog": "journals.linguisticsociety.org",
"pages": "3-12",
"publicationTitle": "Proceedings of the Linguistic Society of America",
"rights": "Copyright (c) 2019 Sarah Babinski, Rikker Dockum, J. Hunter Craft, Anelisa Fergus, Dolly Goldenberg, Claire Bowern",
"shortTitle": "A Robin Hood approach to forced alignment",
"url": "https://journals.linguisticsociety.org/proceedings/index.php/PLSA/article/view/4468",
"volume": "4",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.swr.de/wissen/1000-antworten/kultur/woher-kommt-redensart-ueber-die-wupper-gehen-100.html",
"items": [
{
"itemType": "webpage",
"title": "Woher kommt \"über die Wupper gehen\"?",
"creators": [
{
"firstName": "",
"lastName": "SWRWissen",
"creatorType": "author"
}
],
"date": "2019-04-11",
"abstractNote": "Es gibt eine Vergleichsredensart: \"Der ist über den Jordan gegangen.“ Das heißt, er ist gestorben. Das bezieht sich auf die alten Grenzen Israels. In Wuppertal jedoch liegt jenseits des Flusses das Gefängnis.",
"language": "de",
"url": "https://www.swr.de/wissen/1000-antworten/woher-kommt-redensart-ueber-die-wupper-gehen-100.html",
"websiteTitle": "swr.online",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.azatliq.org/a/24281041.html",
"items": [
{
"itemType": "webpage",
"title": "Татар яшьләре татарлыкны сакларга тырыша",
"creators": [
{
"firstName": "гүзәл",
"lastName": "мәхмүтова",
"creatorType": "author"
}
],
"date": "2011-07-29",
"abstractNote": "Бу көннәрдә “Идел” җәйләвендә XXI Татар яшьләре көннәре үтә. Яшьләр вакытларын төрле чараларда катнашып үткәрә.",
"language": "tt",
"url": "https://www.azatliq.org/a/24281041.html",
"websiteTitle": "Азатлык Радиосы",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.hackingarticles.in/windows-privilege-escalation-kernel-exploit/",
"items": [
{
"itemType": "blogPost",
"title": "Windows Privilege Escalation: Kernel Exploit",
"creators": [
{
"firstName": "Raj",
"lastName": "Chandel",
"creatorType": "author"
}
],
"date": "2021-12-30T17:41:33+00:00",
"abstractNote": "As this series was dedicated to Windows Privilege escalation thus I’m writing this Post to explain command practice for kernel-mode exploitation. Table of Content What",
"blogTitle": "Hacking Articles",
"language": "en",
"shortTitle": "Windows Privilege Escalation",
"url": "https://www.hackingarticles.in/windows-privilege-escalation-kernel-exploit/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://opg.optica.org/oe/fulltext.cfm?uri=oe-30-21-39188&id=509758",
"items": [
{
"itemType": "journalArticle",
"title": "Self-calibration interferometric stitching test method for cylindrical surfaces",
"creators": [
{
"firstName": "Hao",
"lastName": "Hu",
"creatorType": "author"
},
{
"firstName": "Zizhou",
"lastName": "Sun",
"creatorType": "author"
},
{
"firstName": "Shuai",
"lastName": "Xue",
"creatorType": "author"
},
{
"firstName": "Chaoliang",
"lastName": "Guan",
"creatorType": "author"
},
{
"firstName": "Yifan",
"lastName": "Dai",
"creatorType": "author"
},
{
"firstName": "Junfeng",
"lastName": "Liu",
"creatorType": "author"
},
{
"firstName": "Xiaoqiang",
"lastName": "Peng",
"creatorType": "author"
},
{
"firstName": "Shanyong",
"lastName": "Chen",
"creatorType": "author"
},
{
"firstName": "Yong",
"lastName": "Liu",
"creatorType": "author"
}
],
"date": "2022/10/10",
"DOI": "10.1364/OE.473836",
"ISSN": "1094-4087",
"abstractNote": "The surface figure accuracy requirement of cylindrical surfaces widely used in rotors of gyroscope, spindles of ultra-precision machine tools and high-energy laser systems is nearly 0.1 µm. Cylindricity measuring instrument that obtains 1-D profile result cannot be utilized for deterministic figuring methods. Interferometric stitching test for cylindrical surfaces utilizes a CGH of which the system error will accumulated to unacceptable extent for large aperture/angular aperture that require many subapertures. To this end, a self-calibration interferometric stitching method for cylindrical surfaces is proposed. The mathematical model of cylindrical surface figure and the completeness condition of self-calibration stitching test of cylindrical surfaces were analyzed theoretically. The effects of shear/stitching motion error and the subapertures lattice on the self-calibration test results were analyzed. Further, a self-calibration interferometric stitching algorithm that can theoretically recover all the necessary components of the system error for testing cylindrical surfaces was proposed. Simulations and experiments on a shaft were conducted to validate the feasibility.",
"issue": "21",
"journalAbbreviation": "Opt. Express, OE",
"language": "EN",
"libraryCatalog": "opg.optica.org",
"pages": "39188-39206",
"publicationTitle": "Optics Express",
"rights": "© 2022 Optica Publishing Group",
"url": "https://opg.optica.org/oe/abstract.cfm?uri=oe-30-21-39188",
"volume": "30",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://themarkup.org/inside-the-markup/2023/01/18/five-ways-toward-a-fairer-more-transparent-hiring-process",
"items": [
{
"itemType": "webpage",
"title": "Five Ways Toward a Fairer, More Transparent Hiring Process – The Markup",
"creators": [
{
"firstName": "Sisi",
"lastName": "Wei",
"creatorType": "author"
}
],
"date": "2023-01-18",
"abstractNote": "We want candidates hearing about us for the first time to feel just as equipped as those with friends on staff",
"language": "en",
"url": "https://themarkup.org/inside-the-markup/2023/01/18/five-ways-toward-a-fairer-more-transparent-hiring-process",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.nhs.uk/conditions/baby/babys-development/behaviour/separation-anxiety/",
"items": [
{
"itemType": "webpage",
"title": "Separation anxiety",
"creators": [],
"date": "7 Dec 2020, 4:40 p.m.",
"abstractNote": "Separation anxiety is a normal part of your child's development. Find out how to handle the times when your baby or toddler cries or is clingy when you leave them.",
"language": "en",
"url": "https://www.nhs.uk/conditions/baby/babys-development/behaviour/separation-anxiety/",
"websiteTitle": "nhs.uk",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.tatler.com/article/clodagh-mckenna-hon-harry-herbert-wedding-george-osborne-highclere-castle",
"items": [
{
"itemType": "webpage",
"title": "The Queen’s godson married glamorous Irish chef Clodagh McKenna at Highclere this weekend",
"creators": [
{
"firstName": "Annabel",
"lastName": "Sampson",
"creatorType": "author"
}
],
"date": "2021-08-16T09:54:36.000Z",
"abstractNote": "The Hon Harry Herbert, son of the 7th Earl of Carnarvon, married Clodagh McKenna in a fairytale wedding attended by everyone from George Osborne and his fiancée, Thea Rogers, to Laura Whitmore",
"language": "en-GB",
"url": "https://www.tatler.com/article/clodagh-mckenna-hon-harry-herbert-wedding-george-osborne-highclere-castle",
"websiteTitle": "Tatler",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Abe Jellinek, Sebastian Karcher^https?://timesmachine\.nytimes\.com/timesmachine//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021-2024 Abe Jellinek, Sebastian Karcher
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, _url) {
if (doc.querySelector('#index_article_selected_view')) {
return "newspaperArticle";
}
return false;
}
function doWeb(doc, url) {
scrape(doc, url);
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
// translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
// the title that EM finds contains both the main title and the heading
// used when the story is continued on another page. we really only want
// the former.
item.title = text(doc, '.index_article_title') || item.title;
item.date = ZU.strToISO(text(doc, '#publish_date_content'));
item.pages = ZU.trimInternal(text(doc, '#page_num_content'))
.replace(/ ,/g, ',');
// The URL and abstract don't update when you move from issue to article and it duplicates the hostname
item.url = doc.location.href.replace(/\?.+./, "");
item.abstractNote = text(doc, '.index_article_lede');
let byline = text(doc, '#byline_content').replace(/^\s*by\b/gi, '');
for (let author of byline.split(/ and |, /)) {
author = ZU.capitalizeName(author);
if (author.toLowerCase() == 'special to the new york times') {
continue;
}
item.creators.push(ZU.cleanAuthor(author, 'author'));
}
for (let subject of doc.querySelectorAll('#subjects_container .subjects_item')) {
item.tags.push({ tag: subject.textContent.trim() });
}
let pdfURL = attr(doc, '.index_article_pdf a', 'href');
if (pdfURL) {
item.attachments = [{
title: 'Full Text PDF',
mimeType: 'application/pdf',
url: pdfURL
}];
}
item.ISSN = '0362-4331';
item.libraryCatalog = 'TimesMachine';
item.publicationTitle = 'The New York Times';
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.itemType = "newspaperArticle";
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://timesmachine.nytimes.com/timesmachine/1969/08/17/89365215.html?pageNumber=1",
"items": [
{
"itemType": "newspaperArticle",
"title": "300,000 at Folk-Rock Fair Camp Out in a Sea of Mud",
"creators": [
{
"firstName": "Barnard L.",
"lastName": "Collier",
"creatorType": "author"
}
],
"date": "1969-08-17",
"ISSN": "0362-4331",
"abstractNote": "BETHEL, N. Y., Aug. 16 — Despite massive traffic jams, drenching rainstorms and shortages of food, water and medical facilities, about 300,000 young people swarmed over this rural area today for the Woodstock Music and Art Fair.",
"language": "en",
"libraryCatalog": "TimesMachine",
"pages": "1, 80",
"publicationTitle": "The New York Times",
"url": "https://timesmachine.nytimes.com/timesmachine/1969/08/17/89365215.html",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "drug addiction, abuse and traffic"
},
{
"tag": "new york state"
},
{
"tag": "traffic (vehicular and pedestrian) and parking"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://timesmachine.nytimes.com/timesmachine/1969/08/17/89365277.html?pageNumber=2",
"items": [
{
"itemType": "newspaperArticle",
"title": "PORTUGAL'S NEEDS DEBATED IN PRESS",
"creators": [],
"date": "1969-08-17",
"ISSN": "0362-4331",
"abstractNote": "LISBON, Aug. 16 — The principal problem facing Portugal today is freedom, according to the leader of the Democratic opposition, but it is education in the view of the head of the regime's political organization.",
"language": "en",
"libraryCatalog": "TimesMachine",
"pages": "2",
"publicationTitle": "The New York Times",
"url": "https://timesmachine.nytimes.com/timesmachine/1969/08/17/89365277.html",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "news and newspapers"
},
{
"tag": "portugal"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://timesmachine.nytimes.com/timesmachine/1969/08/17/89365432.html?pageNumber=16",
"items": [
{
"itemType": "newspaperArticle",
"title": "Saudis Replacing Bedouin Rifles With Missiles",
"creators": [],
"date": "1969-08-17",
"ISSN": "0362-4331",
"abstractNote": "RIYADH, Saudi Arabia, Aug. 16 (Reuters) — This Islamic kingdom, forged in this century by the rifles of Bedouin nomads in 30 years of desert warfare, is equipping itself for defense in the missile age.",
"language": "en",
"libraryCatalog": "TimesMachine",
"pages": "16",
"publicationTitle": "The New York Times",
"url": "https://timesmachine.nytimes.com/timesmachine/1969/08/17/89365432.html",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "saudi arabia"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
{"dataMode":"xml\/dom"}100Sebastian Karcherxml/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2019 Sebastian Karcher
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
/* CrossRef uses unixref; documentation at https://data.crossref.org/reports/help/schema_doc/unixref1.1/unixref1.1.html */
/** ********************
* Utilitiy Functions *
**********************/
function innerXML(n) {
var escapedXMLcharacters = {
'&': '&',
'"': '"',
'<': '<',
'>': '>'
};
return n.innerHTML // outer XML
.replace(/\n/g, "")
.replace(/("|<|>|&)/g,
function (str, item) {
return escapedXMLcharacters[item];
}
);
}
var markupRE = /<(\/?)(\w+)[^<>]*>/gi;
var supportedMarkup = ['i', 'b', 'sub', 'sup', 'span', 'sc'];
var transformMarkup = {
scp: {
open: '<span style="font-variant:small-caps;">',
close: '</span>'
}
};
function removeUnsupportedMarkup(text) {
return text.replace(/<!\[CDATA\[([\s\S]*?)\]\]>/g, '$1') // Remove CDATA markup
.replace(markupRE, function (m, close, name) {
if (supportedMarkup.includes(name.toLowerCase())) {
return m;
}
var newMarkup = transformMarkup[name.toLowerCase()];
if (newMarkup) {
return close ? newMarkup.close : newMarkup.open;
}
return '';
});
}
function fixAuthorCapitalization(string) {
// Try to use capitalization function from Zotero Utilities,
// because the current one doesn't support unicode names.
// Can't fix this either because ZU.XRegExp.replace is
// malfunctioning when calling from translators.
if (ZU.capitalizeName) return ZU.capitalizeName(string);
if (typeof string === "string" && string.toUpperCase() === string) {
string = string.toLowerCase().replace(/\b[a-z]/g, function (m) {
return m[0].toUpperCase();
});
}
return string;
}
function parseCreators(node, item, typeOverrideMap) {
var contributors = ZU.xpath(node, 'contributors/organization | contributors/person_name');
if (!contributors.length) {
contributors = ZU.xpath(node, 'organization | person_name');
}
for (var contributor of contributors) {
var creatorXML = contributor;
var creator = {};
var role = creatorXML.getAttribute("contributor_role");
if (typeOverrideMap && typeOverrideMap[role] !== undefined) {
creator.creatorType = typeOverrideMap[role];
}
else if (role === "author" || role === "editor" || role === "translator") {
creator.creatorType = role;
}
else {
creator.creatorType = "contributor";
}
if (!creator.creatorType) continue;
if (creatorXML.nodeName === "organization") {
creator.fieldMode = 1;
creator.lastName = creatorXML.textContent;
}
else if (creatorXML.nodeName === "person_name") {
creator.firstName = fixAuthorCapitalization(ZU.xpathText(creatorXML, 'given_name'));
creator.lastName = fixAuthorCapitalization(ZU.xpathText(creatorXML, 'surname'));
if (!creator.firstName) creator.fieldMode = 1;
}
item.creators.push(creator);
}
}
function parseDate(pubDateNode) {
if (pubDateNode.length) {
var year = ZU.xpathText(pubDateNode[0], 'year');
var month = ZU.xpathText(pubDateNode[0], 'month');
var day = ZU.xpathText(pubDateNode[0], 'day');
if (year) {
if (month) {
if (day) {
return year + "-" + month + "-" + day;
}
else {
return month + "/" + year;
}
}
else {
return year;
}
}
else return null;
}
else return null;
}
function detectImport() {
var line;
var i = 0;
while ((line = Zotero.read()) !== false) {
if (line !== "") {
if (line.includes("<crossref>")) {
return true;
}
else if (i++ > 7) {
return false;
}
}
}
return false;
}
function doImport() {
// XPath does not give us the ability to use the same XPaths regardless of whether or not
// there is a namespace, so we add an element to make sure that there will always be a
// namespace.
var doc = Zotero.getXML();
var doiRecord = ZU.xpath(doc, "//doi_records/doi_record");
// Z.debug(doiRecord.length)
// ensure this isn't an error
var errorString = ZU.xpathText(doiRecord, 'crossref/error');
if (errorString !== null) {
throw errorString;
}
var itemXML, item, refXML, metadataXML, seriesXML;
if ((itemXML = ZU.xpath(doiRecord, 'crossref/journal')).length) {
item = new Zotero.Item("journalArticle");
refXML = ZU.xpath(itemXML, 'journal_article');
metadataXML = ZU.xpath(itemXML, 'journal_metadata');
item.publicationTitle = ZU.xpathText(metadataXML, 'full_title[1]');
item.journalAbbreviation = ZU.xpathText(metadataXML, 'abbrev_title[1]');
item.volume = ZU.xpathText(itemXML, 'journal_issue/journal_volume/volume');
item.issue = ZU.xpathText(itemXML, 'journal_issue/journal_volume/issue');
// Sometimes the <issue> tag is not nested inside the volume tag; see 10.1007/BF00938486
if (!item.issue) item.issue = ZU.xpathText(itemXML, 'journal_issue/issue');
}
else if ((itemXML = ZU.xpath(doiRecord, 'crossref/report-paper')).length) {
// Report Paper
// Example: doi: 10.4271/2010-01-0907
item = new Zotero.Item("report");
refXML = ZU.xpath(itemXML, 'report-paper_metadata');
if (refXML.length === 0) {
// Example doi: 10.1787/5jzb6vwk338x-en
refXML = ZU.xpath(itemXML, 'report-paper_series_metadata');
seriesXML = ZU.xpath(refXML, 'series_metadata');
}
metadataXML = refXML;
item.reportNumber = ZU.xpathText(refXML, 'publisher_item/item_number');
if (!item.reportNumber) item.reportNumber = ZU.xpathText(refXML, 'volume');
item.institution = ZU.xpathText(refXML, 'publisher/publisher_name');
item.place = ZU.xpathText(refXML, 'publisher/publisher_place');
}
else if ((itemXML = ZU.xpath(doiRecord, 'crossref/book')).length) {
// Book chapter
// Example: doi: 10.1017/CCOL0521858429.016
// Reference book entry
// Example: doi: 10.1002/14651858.CD002966.pub3
// Entire edited book. This should _not_ be imported as bookSection
// Example: doi: 10.4135/9781446200957
var bookType = itemXML[0].hasAttribute("book_type") ? itemXML[0].getAttribute("book_type") : null;
var componentType = ZU.xpathText(itemXML[0], 'content_item/@component_type');
// is this an entry in a reference book?
var isReference = (bookType == "reference"
&& ["chapter", "reference_entry", "other"].includes(componentType))
|| (bookType == "other"
&& ["chapter", "reference_entry"].includes(componentType));
// for items that are entry in reference books OR edited book types that have some type of a chapter entry.
if ((bookType === "edited_book" && componentType) || isReference) {
item = new Zotero.Item("bookSection");
refXML = ZU.xpath(itemXML, 'content_item');
if (isReference) {
metadataXML = ZU.xpath(itemXML, 'book_metadata');
if (!metadataXML.length) metadataXML = ZU.xpath(itemXML, 'book_series_metadata');
// TODO: Check book_set_metadata here too, as we do below?
item.bookTitle = ZU.xpathText(metadataXML, 'titles[1]/title[1]');
item.seriesTitle = ZU.xpathText(metadataXML, 'series_metadata/titles[1]/title[1]');
var metadataSeriesXML = ZU.xpath(metadataXML, 'series_metadata');
if (metadataSeriesXML.length) parseCreators(metadataSeriesXML, item, { editor: "seriesEditor" });
}
else {
metadataXML = ZU.xpath(itemXML, 'book_series_metadata');
if (!metadataXML.length) metadataXML = ZU.xpath(itemXML, 'book_metadata');
item.bookTitle = ZU.xpathText(metadataXML, 'series_metadata/titles[1]/title[1]');
if (!item.bookTitle) item.bookTitle = ZU.xpathText(metadataXML, 'titles[1]/title[1]');
}
// Handle book authors
parseCreators(metadataXML, item, { author: "bookAuthor" });
// Book
}
else {
item = new Zotero.Item("book");
refXML = ZU.xpath(itemXML, 'book_metadata');
// Sometimes book data is in book_series_metadata
// doi: 10.1007/978-1-4419-9164-5
// And sometimes in book_set_metadata
// doi: 10.7551/mitpress/9780262533287.003.0006
if (!refXML.length) refXML = ZU.xpath(itemXML, 'book_series_metadata');
if (!refXML.length) refXML = ZU.xpath(itemXML, 'book_set_metadata');
metadataXML = refXML;
seriesXML = ZU.xpath(refXML, 'series_metadata');
}
item.place = ZU.xpathText(metadataXML, 'publisher/publisher_place');
}
else if ((itemXML = ZU.xpath(doiRecord, 'crossref/standard')).length) {
item = new Zotero.Item('standard');
refXML = ZU.xpath(itemXML, 'standard_metadata');
metadataXML = ZU.xpath(itemXML, 'standard_metadata');
}
else if ((itemXML = ZU.xpath(doiRecord, 'crossref/conference')).length) {
item = new Zotero.Item("conferencePaper");
refXML = ZU.xpath(itemXML, 'conference_paper');
metadataXML = ZU.xpath(itemXML, 'proceedings_metadata');
seriesXML = ZU.xpath(metadataXML, 'proceedings_metadata');
item.publicationTitle = ZU.xpathText(metadataXML, 'proceedings_title');
item.place = ZU.xpathText(itemXML, 'event_metadata/conference_location');
item.conferenceName = ZU.xpathText(itemXML, 'event_metadata/conference_name');
}
else if ((itemXML = ZU.xpath(doiRecord, 'crossref/database')).length) {
item = new Zotero.Item('dataset');
refXML = ZU.xpath(itemXML, 'dataset');
metadataXML = ZU.xpath(itemXML, 'database_metadata');
var pubDate = ZU.xpath(refXML, 'database_date/publication_date');
if (!pubDate.length) pubDate = ZU.xpath(metadataXML, 'database_date/publication_date');
item.date = parseDate(pubDate);
if (!ZU.xpathText(refXML, 'contributors')) {
parseCreators(metadataXML, item);
}
if (!ZU.xpathText(metadataXML, 'publisher')) {
item.institution = ZU.xpathText(metadataXML, 'institution/institution_name');
}
}
else if ((itemXML = ZU.xpath(doiRecord, 'crossref/dissertation')).length) {
item = new Zotero.Item("thesis");
item.date = parseDate(ZU.xpath(itemXML, "approval_date[1]"));
item.university = ZU.xpathText(itemXML, "institution/institution_name");
item.place = ZU.xpathText(itemXML, "institution/institution_place");
var type = ZU.xpathText(itemXML, "degree");
if (type) item.thesisType = type.replace(/\(.+\)/, "");
}
else if ((itemXML = ZU.xpath(doiRecord, 'crossref/posted_content')).length) {
let type = ZU.xpathText(itemXML, "./@type");
if (type == "preprint") {
item = new Zotero.Item("preprint");
item.repository = ZU.xpathText(itemXML, "group_title");
}
else {
item = new Zotero.Item("blogPost");
item.blogTitle = ZU.xpathText(itemXML, "institution/institution_name");
}
item.date = parseDate(ZU.xpath(itemXML, "posted_date"));
}
else if ((itemXML = ZU.xpath(doiRecord, 'crossref/peer_review')).length) {
item = new Zotero.Item("manuscript"); // is this the best category
item.date = parseDate(ZU.xpath(itemXML, "reviewed_date"));
if (ZU.xpath(itemXML, "/contributors/anonymous")) {
item.creators.push({ lastName: "Anonymous Reviewer", fieldMode: 1, creatorType: "author" });
}
item.type = "peer review";
var reviewOf = ZU.xpathText(itemXML, "//related_item/inter_work_relation");
if (reviewOf) {
var identifierType = ZU.xpathText(itemXML, "//related_item/inter_work_relation/@identifier-type");
var identifier;
if (identifierType == "doi") {
identifier = "<a href=\"https://doi.org/" + reviewOf + "\">https://doi.org/" + reviewOf + "</a>";
}
else if (identifierType == "url") {
identifier = "<a href=\"" + reviewOf + "\">" + reviewOf + "</a>";
}
else {
identifier = reviewOf;
}
var noteText = "Review of " + identifier;
// Z.debug(noteText);
item.notes.push(noteText);
}
}
else {
item = new Zotero.Item("document");
}
if (!refXML || !refXML.length) {
refXML = itemXML;
}
if (!metadataXML || !metadataXML.length) {
metadataXML = refXML;
}
item.abstractNote = ZU.xpathText(refXML, 'description|abstract');
item.language = ZU.xpathText(metadataXML, './@language');
item.ISBN = ZU.xpathText(metadataXML, 'isbn');
item.ISSN = ZU.xpathText(metadataXML, 'issn');
item.publisher = ZU.xpathText(metadataXML, 'publisher/publisher_name');
item.edition = ZU.xpathText(metadataXML, 'edition_number');
if (!item.volume) item.volume = ZU.xpathText(metadataXML, 'volume');
parseCreators(refXML, item, (item.itemType == 'bookSection' ? { editor: null } : "author"));
if (seriesXML && seriesXML.length) {
parseCreators(seriesXML, item, { editor: "seriesEditor" });
item.series = ZU.xpathText(seriesXML, 'titles[1]/title[1]');
item.seriesNumber = ZU.xpathText(seriesXML, 'series_number');
item.reportType = ZU.xpathText(seriesXML, 'titles[1]/title[1]');
}
// prefer article to journal metadata and print to other dates
var pubDateNode = ZU.xpath(refXML, 'publication_date[@media_type="print"]');
if (!pubDateNode.length) pubDateNode = ZU.xpath(refXML, 'publication_date');
if (!pubDateNode.length) pubDateNode = ZU.xpath(metadataXML, 'publication_date[@media_type="print"]');
if (!pubDateNode.length) pubDateNode = ZU.xpath(metadataXML, 'publication_date');
if (pubDateNode.length) {
item.date = parseDate(pubDateNode);
}
var pages = ZU.xpath(refXML, 'pages[1]');
if (pages.length) {
item.pages = ZU.xpathText(pages, 'first_page[1]');
var lastPage = ZU.xpathText(pages, 'last_page[1]');
if (lastPage) item.pages += "-" + lastPage;
}
else {
// use article Number instead
item.pages = ZU.xpathText(refXML, 'publisher_item/item_number');
}
item.DOI = ZU.xpathText(refXML, 'doi_data/doi');
// add DOI to extra for unsupprted items
if (item.DOI && !ZU.fieldIsValidForType("DOI", item.itemType)) {
if (item.extra) {
item.extra += "\nDOI: " + item.DOI;
}
else {
item.extra = "DOI: " + item.DOI;
}
}
// I think grabbing the first license will usually make the most sense;
// not sure how many different options they are and how well labelled they are
item.rights = ZU.xpathText(refXML, 'program/license_ref[1]');
item.url = ZU.xpathText(refXML, 'doi_data/resource');
var title = ZU.xpath(refXML, 'titles[1]/title[1]')[0];
if (!title && metadataXML) {
title = ZU.xpath(metadataXML, 'titles[1]/title[1]')[0];
}
if (title) {
item.title = ZU.trimInternal(
removeUnsupportedMarkup(innerXML(title))
);
var subtitle = ZU.xpath(refXML, 'titles[1]/subtitle[1]')[0];
if (subtitle) {
item.title = item.title.replace(/:$/, '') + ': ' + ZU.trimInternal(
removeUnsupportedMarkup(innerXML(subtitle))
);
}
}
if (!item.title || item.title == "") {
item.title = "[No title found]";
}
// Zotero.debug(JSON.stringify(item, null, 4));
// Check if there are potential issues with character encoding and try to fix them.
// E.g., in 10.1057/9780230391116.0016, the en dash in the title is displayed as â<80><93>,
// which is what you get if you decode a UTF-8 en dash (<E2><80><93>) as Latin-1 and then serve
// as UTF-8 (<C3><A2> <C2><80> <C2><93>)
for (var field in item) {
if (typeof item[field] != 'string') continue;
// Check for control characters that should never be in strings from Crossref
if (/[\u007F-\u009F]/.test(item[field])) {
// <E2><80><93> -> %E2%80%93 -> en dash
try {
item[field] = decodeURIComponent(escape(item[field]));
}
// If decoding failed, just strip control characters
// https://forums.zotero.org/discussion/102271/lookup-failed-for-doi
catch (e) {
item[field] = item[field].replace(/[\u0000-\u001F\u007F-\u009F]/g, "");
}
}
}
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "import",
"input": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<doi_records>\n <doi_record owner=\"10.1109\" timestamp=\"2017-03-18 06:36:17\">\n <crossref>\n <conference>\n <event_metadata>\n <conference_name>2017 IEEE International Solid- State Circuits Conference - (ISSCC)</conference_name>\n <conference_location>San Francisco, CA, USA</conference_location>\n <conference_date start_month=\"2\" start_year=\"2017\" start_day=\"5\" end_month=\"2\" end_year=\"2017\" end_day=\"9\" />\n </event_metadata>\n <proceedings_metadata>\n <proceedings_title>2017 IEEE International Solid-State Circuits Conference (ISSCC)</proceedings_title>\n <publisher>\n <publisher_name>IEEE</publisher_name>\n </publisher>\n <publication_date>\n <month>2</month>\n <year>2017</year>\n </publication_date>\n <isbn media_type=\"electronic\">978-1-5090-3758-2</isbn>\n </proceedings_metadata>\n <conference_paper>\n <contributors>\n <person_name sequence=\"first\" contributor_role=\"author\">\n <given_name>Pen-Jui</given_name>\n <surname>Peng</surname>\n </person_name>\n <person_name sequence=\"additional\" contributor_role=\"author\">\n <given_name>Jeng-Feng</given_name>\n <surname>Li</surname>\n </person_name>\n <person_name sequence=\"additional\" contributor_role=\"author\">\n <given_name>Li-Yang</given_name>\n <surname>Chen</surname>\n </person_name>\n <person_name sequence=\"additional\" contributor_role=\"author\">\n <given_name>Jri</given_name>\n <surname>Lee</surname>\n </person_name>\n </contributors>\n <titles>\n <title>6.1 A 56Gb/s PAM-4/NRZ transceiver in 40nm CMOS</title>\n </titles>\n <publication_date>\n <month>2</month>\n <year>2017</year>\n </publication_date>\n <pages>\n <first_page>110</first_page>\n <last_page>111</last_page>\n </pages>\n <publisher_item>\n <item_number item_number_type=\"arNumber\">7870285</item_number>\n </publisher_item>\n <doi_data>\n <doi>10.1109/ISSCC.2017.7870285</doi>\n <resource>http://ieeexplore.ieee.org/document/7870285/</resource>\n <collection property=\"crawler-based\">\n <item crawler=\"iParadigms\">\n <resource>http://xplorestaging.ieee.org/ielx7/7866667/7870233/07870285.pdf?arnumber=7870285</resource>\n </item>\n </collection>\n </doi_data>\n </conference_paper>\n </conference>\n </crossref>\n </doi_record>\n</doi_records>\n",
"items": [
{
"itemType": "conferencePaper",
"title": "6.1 A 56Gb/s PAM-4/NRZ transceiver in 40nm CMOS",
"creators": [
{
"creatorType": "author",
"firstName": "Pen-Jui",
"lastName": "Peng"
},
{
"creatorType": "author",
"firstName": "Jeng-Feng",
"lastName": "Li"
},
{
"creatorType": "author",
"firstName": "Li-Yang",
"lastName": "Chen"
},
{
"creatorType": "author",
"firstName": "Jri",
"lastName": "Lee"
}
],
"date": "2/2017",
"DOI": "10.1109/ISSCC.2017.7870285",
"ISBN": "978-1-5090-3758-2",
"conferenceName": "2017 IEEE International Solid- State Circuits Conference - (ISSCC)",
"pages": "110-111",
"place": "San Francisco, CA, USA",
"proceedingsTitle": "2017 IEEE International Solid-State Circuits Conference (ISSCC)",
"publisher": "IEEE",
"url": "http://ieeexplore.ieee.org/document/7870285/",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "<doi_records>\n <doi_record owner=\"10.1093\" timestamp=\"2017-08-23 03:08:26\">\n <crossref>\n <journal>\n <journal_metadata language=\"en\">\n <full_title>FEMS Microbiology Ecology</full_title>\n <abbrev_title>FEMS Microbiol Ecol</abbrev_title>\n <issn>01686496</issn>\n </journal_metadata>\n <journal_issue>\n <publication_date media_type=\"print\">\n <month>04</month>\n <year>2013</year>\n </publication_date>\n <journal_volume>\n <volume>84</volume>\n </journal_volume>\n <issue>1</issue>\n </journal_issue>\n <journal_article publication_type=\"full_text\">\n <titles>\n <title> Microbial community\n changes at a terrestrial volcanic CO\n <sub>2</sub>\n vent induced by soil acidification and anaerobic microhabitats within the soil column\n </title>\n </titles>\n <contributors>\n <person_name contributor_role=\"author\" sequence=\"first\">\n <given_name>Janin</given_name>\n <surname>Frerichs</surname>\n <affiliation>Federal Institute for Geosciences and Natural Resources (BGR); Hannover; Germany</affiliation>\n </person_name>\n <person_name contributor_role=\"author\" sequence=\"additional\">\n <given_name>Birte I.</given_name>\n <surname>Oppermann</surname>\n <affiliation>Institute of Biogeochemistry and Marine Chemistry; University of Hamburg; Hamburg; Germany</affiliation>\n </person_name>\n <person_name contributor_role=\"author\" sequence=\"additional\">\n <given_name>Simone</given_name>\n <surname>Gwosdz</surname>\n <affiliation>Federal Institute for Geosciences and Natural Resources (BGR); Hannover; Germany</affiliation>\n </person_name>\n <person_name contributor_role=\"author\" sequence=\"additional\">\n <given_name>Ingo</given_name>\n <surname>Möller</surname>\n <affiliation>Federal Institute for Geosciences and Natural Resources (BGR); Hannover; Germany</affiliation>\n </person_name>\n <person_name contributor_role=\"author\" sequence=\"additional\">\n <given_name>Martina</given_name>\n <surname>Herrmann</surname>\n <affiliation>Institute of Ecology, Limnology/Aquatic Geomicrobiology Working Group; Friedrich Schiller University of Jena; Jena; Germany</affiliation>\n </person_name>\n <person_name contributor_role=\"author\" sequence=\"additional\">\n <given_name>Martin</given_name>\n <surname>Krüger</surname>\n <affiliation>Federal Institute for Geosciences and Natural Resources (BGR); Hannover; Germany</affiliation>\n </person_name>\n </contributors>\n <publication_date media_type=\"print\">\n <month>04</month>\n <year>2013</year>\n </publication_date>\n <publication_date media_type=\"online\">\n <month>12</month>\n <day>10</day>\n <year>2012</year>\n </publication_date>\n <pages>\n <first_page>60</first_page>\n <last_page>74</last_page>\n </pages>\n <doi_data>\n <doi>10.1111/1574-6941.12040</doi>\n <resource>https://academic.oup.com/femsec/article-lookup/doi/10.1111/1574-6941.12040</resource>\n <collection property=\"crawler-based\">\n <item crawler=\"iParadigms\">\n <resource>http://academic.oup.com/femsec/article-pdf/84/1/60/19537307/84-1-60.pdf</resource>\n </item>\n </collection>\n </doi_data>\n </journal_article>\n </journal>\n </crossref>\n </doi_record>\n</doi_records>\n",
"items": [
{
"itemType": "journalArticle",
"title": "Microbial community changes at a terrestrial volcanic CO <sub>2</sub> vent induced by soil acidification and anaerobic microhabitats within the soil column",
"creators": [
{
"creatorType": "author",
"firstName": "Janin",
"lastName": "Frerichs"
},
{
"creatorType": "author",
"firstName": "Birte I.",
"lastName": "Oppermann"
},
{
"creatorType": "author",
"firstName": "Simone",
"lastName": "Gwosdz"
},
{
"creatorType": "author",
"firstName": "Ingo",
"lastName": "Möller"
},
{
"creatorType": "author",
"firstName": "Martina",
"lastName": "Herrmann"
},
{
"creatorType": "author",
"firstName": "Martin",
"lastName": "Krüger"
}
],
"date": "04/2013",
"DOI": "10.1111/1574-6941.12040",
"ISSN": "01686496",
"issue": "1",
"journalAbbreviation": "FEMS Microbiol Ecol",
"language": "en",
"pages": "60-74",
"publicationTitle": "FEMS Microbiology Ecology",
"url": "https://academic.oup.com/femsec/article-lookup/doi/10.1111/1574-6941.12040",
"volume": "84",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<doi_records>\n <doi_record owner=\"10.1080\" timestamp=\"2018-09-06 15:38:40\">\n <crossref>\n <journal>\n <journal_metadata language=\"en\">\n <full_title>Eurasian Geography and Economics</full_title>\n <abbrev_title>Eurasian Geography and Economics</abbrev_title>\n <issn media_type=\"print\">1538-7216</issn>\n <issn media_type=\"electronic\">1938-2863</issn>\n </journal_metadata>\n <journal_issue>\n <publication_date media_type=\"online\">\n <month>05</month>\n <day>15</day>\n <year>2013</year>\n </publication_date>\n <publication_date media_type=\"print\">\n <month>03</month>\n <year>2009</year>\n </publication_date>\n <journal_volume>\n <volume>50</volume>\n </journal_volume>\n <issue>2</issue>\n </journal_issue>\n <journal_article publication_type=\"full_text\">\n <titles>\n <title>\n The Chinese\n <i>Hukou</i>\n System at 50\n </title>\n </titles>\n <contributors>\n <person_name sequence=\"first\" contributor_role=\"author\">\n <given_name>Kam Wing</given_name>\n <surname>Chan</surname>\n <affiliation>a University of Washington</affiliation>\n </person_name>\n </contributors>\n <publication_date media_type=\"online\">\n <month>05</month>\n <day>15</day>\n <year>2013</year>\n </publication_date>\n <publication_date media_type=\"print\">\n <month>03</month>\n <year>2009</year>\n </publication_date>\n <pages>\n <first_page>197</first_page>\n <last_page>221</last_page>\n </pages>\n <publisher_item>\n <item_number item_number_type=\"sequence-number\">5</item_number>\n <identifier id_type=\"doi\">10.2747/1539-7216.50.2.197</identifier>\n </publisher_item>\n <doi_data>\n <doi>10.2747/1539-7216.50.2.197</doi>\n <resource>https://www.tandfonline.com/doi/full/10.2747/1539-7216.50.2.197</resource>\n <collection property=\"crawler-based\">\n <item crawler=\"iParadigms\">\n <resource>https://www.tandfonline.com/doi/pdf/10.2747/1539-7216.50.2.197</resource>\n </item>\n <item crawler=\"google\">\n <resource>http://bellwether.metapress.com/index/10.2747/1539-7216.50.2.197</resource>\n </item>\n </collection>\n </doi_data>\n </journal_article>\n </journal>\n </crossref>\n </doi_record>\n</doi_records>\n",
"items": [
{
"itemType": "journalArticle",
"title": "The Chinese <i>Hukou</i> System at 50",
"creators": [
{
"creatorType": "author",
"firstName": "Kam Wing",
"lastName": "Chan"
}
],
"date": "03/2009",
"DOI": "10.2747/1539-7216.50.2.197",
"ISSN": "1538-7216, 1938-2863",
"issue": "2",
"journalAbbreviation": "Eurasian Geography and Economics",
"language": "en",
"pages": "197-221",
"publicationTitle": "Eurasian Geography and Economics",
"url": "https://www.tandfonline.com/doi/full/10.2747/1539-7216.50.2.197",
"volume": "50",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<doi_records>\n <doi_record owner=\"10.17077\" timestamp=\"2018-11-29 17:31:41\">\n <crossref>\n <dissertation publication_type=\"full_text\" language=\"en\">\n <person_name sequence=\"first\" contributor_role=\"author\">\n <given_name>Joseph Emil</given_name>\n <surname>Kasper</surname>\n <affiliation>State University of Iowa</affiliation>\n </person_name>\n <titles>\n <title>Contributions to geomagnetic theory</title>\n </titles>\n <approval_date media_type=\"print\">\n <month>01</month>\n <year>1958</year>\n </approval_date>\n <institution>\n <institution_name>State University of Iowa</institution_name>\n <institution_acronym>UIowa</institution_acronym>\n <institution_acronym>SUI</institution_acronym>\n <institution_place>Iowa City, Iowa, USA</institution_place>\n <institution_department>Physics</institution_department>\n </institution>\n <degree>PhD (Doctor of Philosophy)</degree>\n <doi_data>\n <doi>10.17077/etd.xnw0xnau</doi>\n <resource>https://ir.uiowa.edu/etd/4529</resource>\n </doi_data>\n </dissertation>\n </crossref>\n </doi_record>\n</doi_records>\n",
"items": [
{
"itemType": "thesis",
"title": "Contributions to geomagnetic theory",
"creators": [
{
"creatorType": "author",
"firstName": "Joseph Emil",
"lastName": "Kasper"
}
],
"date": "01/1958",
"extra": "DOI: 10.17077/etd.xnw0xnau",
"language": "en",
"place": "Iowa City, Iowa, USA",
"thesisType": "PhD",
"university": "State University of Iowa",
"url": "https://ir.uiowa.edu/etd/4529",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<doi_records>\n <doi_record owner=\"10.31219\" timestamp=\"2018-11-13 07:19:46\">\n <crossref>\n <posted_content type=\"preprint\">\n <group_title>Open Science Framework</group_title>\n <contributors>\n <person_name contributor_role=\"author\" sequence=\"first\">\n <given_name>Steve</given_name>\n <surname>Haroz</surname>\n </person_name>\n </contributors>\n <titles>\n <title>Open Practices in Visualization Research</title>\n </titles>\n <posted_date>\n <month>07</month>\n <day>03</day>\n <year>2018</year>\n </posted_date>\n <item_number>osf.io/8ag3w</item_number>\n <abstract>\n <p>Two fundamental tenants of scientific research are that it can be scrutinized and built-upon. Both require that the collected data and supporting materials be shared, so others can examine, reuse, and extend them. Assessing the accessibility of these components and the paper itself can serve as a proxy for the reliability, replicability, and applicability of a field’s research. In this paper, I describe the current state of openness in visualization research and provide suggestions for authors, reviewers, and editors to improve open practices in the field. A free copy of this paper, the collected data, and the source code are available at https://osf.io/qf9na/</p>\n </abstract>\n <program>\n <license_ref start_date=\"2018-07-03\">https://creativecommons.org/licenses/by/4.0/legalcode</license_ref>\n </program>\n <doi_data>\n <doi>10.31219/osf.io/8ag3w</doi>\n <resource>https://osf.io/8ag3w</resource>\n </doi_data>\n </posted_content>\n </crossref>\n </doi_record>\n</doi_records>\n",
"items": [
{
"itemType": "preprint",
"title": "Open Practices in Visualization Research",
"creators": [
{
"creatorType": "author",
"firstName": "Steve",
"lastName": "Haroz"
}
],
"date": "2018-07-03",
"DOI": "10.31219/osf.io/8ag3w",
"abstractNote": "Two fundamental tenants of scientific research are that it can be scrutinized and built-upon. Both require that the collected data and supporting materials be shared, so others can examine, reuse, and extend them. Assessing the accessibility of these components and the paper itself can serve as a proxy for the reliability, replicability, and applicability of a field’s research. In this paper, I describe the current state of openness in visualization research and provide suggestions for authors, reviewers, and editors to improve open practices in the field. A free copy of this paper, the collected data, and the source code are available at https://osf.io/qf9na/",
"repository": "Open Science Framework",
"rights": "https://creativecommons.org/licenses/by/4.0/legalcode",
"url": "https://osf.io/8ag3w",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<doi_records>\n <doi_record owner=\"10.21468\" timestamp=\"2018-01-22 15:00:32\">\n <crossref>\n <peer_review stage=\"pre-publication\">\n <contributors>\n <anonymous sequence=\"first\" contributor_role=\"reviewer\" />\n </contributors>\n <titles>\n <title>Report on 1607.01285v1</title>\n </titles>\n <review_date>\n <month>09</month>\n <day>08</day>\n <year>2016</year>\n </review_date>\n <program>\n <related_item>\n <description>Report on 1607.01285v1</description>\n <inter_work_relation relationship-type=\"isReviewOf\" identifier-type=\"doi\">10.21468/SciPostPhys.1.1.010</inter_work_relation>\n </related_item>\n </program>\n <doi_data>\n <doi>10.21468/SciPost.Report.10</doi>\n <resource>https://scipost.org/SciPost.Report.10</resource>\n </doi_data>\n </peer_review>\n </crossref>\n </doi_record>\n</doi_records>\n",
"items": [
{
"itemType": "manuscript",
"title": "Report on 1607.01285v1",
"creators": [
{
"lastName": "Anonymous Reviewer",
"fieldMode": 1,
"creatorType": "author"
}
],
"extra": "DOI: 10.21468/SciPost.Report.10",
"manuscriptType": "peer review",
"url": "https://scipost.org/SciPost.Report.10",
"attachments": [],
"tags": [],
"notes": [
"Review of <a href=\"https://doi.org/10.21468/SciPostPhys.1.1.010\">https://doi.org/10.21468/SciPostPhys.1.1.010</a>"
],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "<?xml version=\"1.0\" encoding=\"UTF-8\"?> <doi_records> <doi_record owner=\"10.4086\" timestamp=\"2018-12-31 08:08:13\"> <crossref> <journal> <journal_metadata language=\"en\"> <full_title>Chicago Journal of Theoretical Computer Science</full_title> <abbrev_title>Chicago J. of Theoretical Comp. Sci.</abbrev_title> <abbrev_title>CJTCS</abbrev_title> <issn media_type=\"electronic\">1073-0486</issn> <coden>CJTCS</coden> <doi_data> <doi>10.4086/cjtcs</doi> <resource>http://cjtcs.cs.uchicago.edu/</resource> </doi_data> </journal_metadata> <journal_issue> <publication_date media_type=\"online\"> <year>2012</year> </publication_date> <journal_volume> <volume>18</volume> </journal_volume> <issue>1</issue> <doi_data> <doi>10.4086/cjtcs.2012.v018</doi> <resource>http://cjtcs.cs.uchicago.edu/articles/2012/contents.html</resource> </doi_data> </journal_issue> <journal_article publication_type=\"full_text\"> <titles> <title /> </titles> <contributors> <person_name sequence=\"first\" contributor_role=\"author\"> <given_name>Michael</given_name> <surname>Hoffman</surname> </person_name> <person_name sequence=\"additional\" contributor_role=\"author\"> <given_name>Jiri</given_name> <surname>Matousek</surname> </person_name> <person_name sequence=\"additional\" contributor_role=\"author\"> <given_name>Yoshio</given_name> <surname>Okamoto</surname> </person_name> <person_name sequence=\"additional\" contributor_role=\"author\"> <given_name>Phillipp</given_name> <surname>Zumstein</surname> </person_name> </contributors> <publication_date media_type=\"online\"> <year>2012</year> </publication_date> <pages> <first_page>1</first_page> <last_page>10</last_page> </pages> <doi_data> <doi>10.4086/cjtcs.2012.002</doi> <resource>http://cjtcs.cs.uchicago.edu/articles/2012/2/contents.html</resource> </doi_data> </journal_article> </journal> </crossref> </doi_record> </doi_records>",
"items": [
{
"itemType": "journalArticle",
"title": "[No title found]",
"creators": [
{
"creatorType": "author",
"firstName": "Michael",
"lastName": "Hoffman"
},
{
"creatorType": "author",
"firstName": "Jiri",
"lastName": "Matousek"
},
{
"creatorType": "author",
"firstName": "Yoshio",
"lastName": "Okamoto"
},
{
"creatorType": "author",
"firstName": "Phillipp",
"lastName": "Zumstein"
}
],
"date": "2012",
"DOI": "10.4086/cjtcs.2012.002",
"ISSN": "1073-0486",
"issue": "1",
"journalAbbreviation": "Chicago J. of Theoretical Comp. Sci.",
"language": "en",
"pages": "1-10",
"publicationTitle": "Chicago Journal of Theoretical Computer Science",
"url": "http://cjtcs.cs.uchicago.edu/articles/2012/2/contents.html",
"volume": "18",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<doi_records>\n <doi_record owner=\"10.1002\" timestamp=\"2020-10-06 16:52:28\">\n <crossref>\n <book book_type=\"reference\">\n <book_metadata language=\"en\">\n <contributors>\n <person_name contributor_role=\"editor\" sequence=\"first\">\n <given_name>Jan</given_name>\n <surname>Bulck</surname>\n </person_name>\n </contributors>\n <titles>\n <title>The International Encyclopedia of Media Psychology</title>\n </titles>\n <edition_number>1</edition_number>\n <publication_date media_type=\"online\">\n <month>09</month>\n <day>08</day>\n <year>2020</year>\n </publication_date>\n <isbn media_type=\"electronic\">9781119011071</isbn>\n <publisher>\n <publisher_name>Wiley</publisher_name>\n </publisher>\n <publisher_item>\n <identifier id_type=\"doi\">10.1002/9781119011071</identifier>\n </publisher_item>\n <program name=\"AccessIndicators\">\n <license_ref applies_to=\"tdm\">http://doi.wiley.com/10.1002/tdm_license_1.1</license_ref>\n </program>\n <doi_data>\n <doi>10.1002/9781119011071</doi>\n <timestamp>2020100613475700320</timestamp>\n <resource>https://onlinelibrary.wiley.com/doi/book/10.1002/9781119011071</resource>\n </doi_data>\n </book_metadata>\n <content_item component_type=\"other\" level_sequence_number=\"1\" publication_type=\"full_text\">\n <contributors>\n <person_name contributor_role=\"author\" sequence=\"first\">\n <given_name>Allison</given_name>\n <surname>Eden</surname>\n </person_name>\n </contributors>\n <titles>\n <title>Appreciation and Eudaimonic Reactions to Media</title>\n </titles>\n <publication_date media_type=\"online\">\n <month>09</month>\n <day>09</day>\n <year>2020</year>\n </publication_date>\n <pages>\n <first_page>1</first_page>\n <last_page>9</last_page>\n </pages>\n <publisher_item>\n <identifier id_type=\"doi\">10.1002/9781119011071.iemp0172</identifier>\n </publisher_item>\n <archive_locations>\n <archive name=\"Portico\" />\n </archive_locations>\n <program name=\"AccessIndicators\">\n <license_ref applies_to=\"tdm\">http://doi.wiley.com/10.1002/tdm_license_1.1</license_ref>\n </program>\n <doi_data>\n <doi>10.1002/9781119011071.iemp0172</doi>\n <timestamp>2020100613475700320</timestamp>\n <resource>https://onlinelibrary.wiley.com/doi/10.1002/9781119011071.iemp0172</resource>\n <collection property=\"crawler-based\">\n <item crawler=\"iParadigms\">\n <resource>https://onlinelibrary.wiley.com/doi/pdf/10.1002/9781119011071.iemp0172</resource>\n </item>\n </collection>\n <collection property=\"text-mining\">\n <item>\n <resource mime_type=\"application/pdf\">https://onlinelibrary.wiley.com/doi/pdf/10.1002/9781119011071.iemp0172</resource>\n </item>\n <item>\n <resource mime_type=\"application/xml\">https://onlinelibrary.wiley.com/doi/full-xml/10.1002/9781119011071.iemp0172</resource>\n </item>\n </collection>\n </doi_data>\n <citation_list>\n <citation key=\"e_1_2_9_1_2_1\">\n <doi>10.1080/15213269.2016.1182030</doi>\n </citation>\n <citation key=\"e_1_2_9_1_3_1\">\n <doi>10.1080/23736992.2017.1329019</doi>\n </citation>\n <citation key=\"e_1_2_9_1_4_1\">\n <doi>10.1111/jcom.12228</doi>\n </citation>\n <citation key=\"e_1_2_9_1_5_1\">\n <doi>10.1080/10510974.2017.1340903</doi>\n </citation>\n <citation key=\"e_1_2_9_1_6_1\">\n <doi>10.1111/jcom.12101</doi>\n </citation>\n <citation key=\"e_1_2_9_1_7_1\">\n <doi>10.1080/15205436.2013.872277</doi>\n </citation>\n <citation key=\"e_1_2_9_1_8_1\">\n <doi>10.1111/j.1468-2958.2009.01368.x</doi>\n </citation>\n <citation key=\"e_1_2_9_1_9_1\">\n <doi>10.1027/1864-1105/a000029</doi>\n </citation>\n <citation key=\"e_1_2_9_1_10_1\">\n <doi>10.1037/ppm0000066</doi>\n </citation>\n <citation key=\"e_1_2_9_1_11_1\">\n <doi>10.1111/j.1460-2466.2011.01585.x</doi>\n </citation>\n <citation key=\"e_1_2_9_1_12_1\">\n <volume_title>The role of intuition accessibility on the appraisal and selection of media content</volume_title>\n <author>Prabhu S.</author>\n <cYear>2014</cYear>\n </citation>\n <citation key=\"e_1_2_9_1_13_1\">\n <doi>10.1080/15213269.2013.773494</doi>\n </citation>\n <citation key=\"e_1_2_9_1_14_1\">\n <doi>10.1111/j.1460-2466.2012.01649.x</doi>\n </citation>\n <citation key=\"e_1_2_9_1_15_1\">\n <doi>10.1111/jcom.12099</doi>\n </citation>\n <citation key=\"e_1_2_9_1_16_1\">\n <doi>10.1111/jcom.12097</doi>\n </citation>\n <citation key=\"e_1_2_9_1_17_1\">\n <doi>10.1111/jcom.12100</doi>\n </citation>\n <citation key=\"e_1_2_9_1_18_1\">\n <doi>10.1027/1864-1105/a000031</doi>\n </citation>\n <citation key=\"e_1_2_9_1_19_1\">\n <volume_title>Sage handbook of media processes and effects</volume_title>\n <author>Vorderer P.</author>\n <first_page>455</first_page>\n <cYear>2009</cYear>\n </citation>\n <citation key=\"e_1_2_9_1_20_1\">\n <doi>10.1111/j.1468-2958.2012.01434.x</doi>\n </citation>\n <citation key=\"e_1_2_9_1_21_1\">\n <doi>10.1177/000276488031003005</doi>\n </citation>\n <citation key=\"e_1_2_9_2_2_1\">\n <doi>10.1080/15213260701813447</doi>\n </citation>\n <citation key=\"e_1_2_9_2_3_1\">\n <volume_title>Thinking, fast and slow</volume_title>\n <author>Kahneman D.</author>\n <cYear>2011</cYear>\n </citation>\n <citation key=\"e_1_2_9_2_4_1\">\n <doi>10.1093/joc/jqx020</doi>\n </citation>\n </citation_list>\n </content_item>\n </book>\n </crossref>\n </doi_record>\n</doi_records>",
"items": [
{
"itemType": "bookSection",
"title": "Appreciation and Eudaimonic Reactions to Media",
"creators": [
{
"creatorType": "editor",
"firstName": "Jan",
"lastName": "Bulck"
},
{
"creatorType": "author",
"firstName": "Allison",
"lastName": "Eden"
}
],
"date": "2020-09-09",
"ISBN": "9781119011071",
"bookTitle": "The International Encyclopedia of Media Psychology",
"edition": "1",
"extra": "DOI: 10.1002/9781119011071.iemp0172",
"language": "en",
"pages": "1-9",
"publisher": "Wiley",
"rights": "http://doi.wiley.com/10.1002/tdm_license_1.1",
"url": "https://onlinelibrary.wiley.com/doi/10.1002/9781119011071.iemp0172",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<doi_records>\n <doi_record owner=\"10.1045\" timestamp=\"2016-05-13 10:02:13\">\n <crossref>\n <journal>\n <journal_metadata language=\"en\">\n <full_title>D-Lib Magazine</full_title>\n <abbrev_title>D-Lib Magazine</abbrev_title>\n <issn media_type=\"electronic\">1082-9873</issn>\n <doi_data>\n <doi>10.1045/dlib.magazine</doi>\n <resource>http://www.dlib.org/</resource>\n </doi_data>\n </journal_metadata>\n <journal_issue>\n <publication_date media_type=\"online\">\n <month>05</month>\n <year>2016</year>\n </publication_date>\n <journal_volume>\n <volume>22</volume>\n </journal_volume>\n <issue>5/6</issue>\n <doi_data>\n <doi>10.1045/may2016-contents</doi>\n <resource>http://www.dlib.org/dlib/may16/05contents.html</resource>\n </doi_data>\n </journal_issue>\n <journal_article publication_type=\"full_text\">\n <titles>\n <title>Scientific Stewardship in the Open Data and Big Data Era Roles and Responsibilities of Stewards and Other Major Product Stakeholders</title>\n </titles>\n <contributors>\n <person_name sequence=\"first\" contributor_role=\"author\">\n <given_name>Ge</given_name>\n <surname>Peng</surname>\n </person_name>\n <person_name sequence=\"additional\" contributor_role=\"author\">\n <given_name>Nancy A.</given_name>\n <surname>Ritchey</surname>\n </person_name>\n <person_name sequence=\"additional\" contributor_role=\"author\">\n <given_name>Kenneth S.</given_name>\n <surname>Casey</surname>\n </person_name>\n <person_name sequence=\"additional\" contributor_role=\"author\">\n <given_name>Edward J.</given_name>\n <surname>Kearns</surname>\n </person_name>\n <person_name sequence=\"additional\" contributor_role=\"author\">\n <given_name>Jeffrey L.</given_name>\n <surname>Prevette</surname>\n </person_name>\n <person_name sequence=\"additional\" contributor_role=\"author\">\n <given_name>Drew</given_name>\n <surname>Saunders</surname>\n </person_name>\n <person_name sequence=\"additional\" contributor_role=\"author\">\n <given_name>Philip</given_name>\n <surname>Jones</surname>\n </person_name>\n <person_name sequence=\"additional\" contributor_role=\"author\">\n <given_name>Tom</given_name>\n <surname>Maycock</surname>\n </person_name>\n <person_name sequence=\"additional\" contributor_role=\"author\">\n <given_name>Steve</given_name>\n <surname>Ansari</surname>\n </person_name>\n </contributors>\n <publication_date media_type=\"online\">\n <month>05</month>\n <year>2016</year>\n </publication_date>\n <doi_data>\n <doi>10.1045/may2016-peng</doi>\n <resource>http://www.dlib.org/dlib/may16/peng/05peng.html</resource>\n </doi_data>\n </journal_article>\n </journal>\n </crossref>\n </doi_record>\n</doi_records>",
"items": [
{
"itemType": "journalArticle",
"title": "Scientific Stewardship in the Open Data and Big Data Era Roles and Responsibilities of Stewards and Other Major Product Stakeholders",
"creators": [
{
"creatorType": "author",
"firstName": "Ge",
"lastName": "Peng"
},
{
"creatorType": "author",
"firstName": "Nancy A.",
"lastName": "Ritchey"
},
{
"creatorType": "author",
"firstName": "Kenneth S.",
"lastName": "Casey"
},
{
"creatorType": "author",
"firstName": "Edward J.",
"lastName": "Kearns"
},
{
"creatorType": "author",
"firstName": "Jeffrey L.",
"lastName": "Prevette"
},
{
"creatorType": "author",
"firstName": "Drew",
"lastName": "Saunders"
},
{
"creatorType": "author",
"firstName": "Philip",
"lastName": "Jones"
},
{
"creatorType": "author",
"firstName": "Tom",
"lastName": "Maycock"
},
{
"creatorType": "author",
"firstName": "Steve",
"lastName": "Ansari"
}
],
"date": "05/2016",
"DOI": "10.1045/may2016-peng",
"ISSN": "1082-9873",
"issue": "5/6",
"journalAbbreviation": "D-Lib Magazine",
"language": "en",
"publicationTitle": "D-Lib Magazine",
"url": "http://www.dlib.org/dlib/may16/peng/05peng.html",
"volume": "22",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<doi_records>\n\t<doi_record owner=\"10.1300\" timestamp=\"2017-11-02 16:28:36\">\n\t\t<crossref>\n\t\t\t<journal>\n\t\t\t\t<journal_metadata language=\"en\">\n\t\t\t\t\t<full_title>Journal of Hospitality & Leisure Marketing</full_title>\n\t\t\t\t\t<abbrev_title>Journal of Hospitality & Leisure Marketing</abbrev_title>\n\t\t\t\t\t<issn media_type=\"print\">1050-7051</issn>\n\t\t\t\t\t<issn media_type=\"electronic\">1541-0897</issn>\n\t\t\t\t</journal_metadata>\n\t\t\t\t<journal_issue>\n\t\t\t\t\t<publication_date media_type=\"online\">\n\t\t\t\t\t\t<month>10</month>\n\t\t\t\t\t\t<day>25</day>\n\t\t\t\t\t\t<year>2008</year>\n\t\t\t\t\t</publication_date>\n\t\t\t\t\t<publication_date media_type=\"print\">\n\t\t\t\t\t\t<month>05</month>\n\t\t\t\t\t\t<day>10</day>\n\t\t\t\t\t\t<year>1996</year>\n\t\t\t\t\t</publication_date>\n\t\t\t\t\t<journal_volume>\n\t\t\t\t\t\t<volume>3</volume>\n\t\t\t\t\t</journal_volume>\n\t\t\t\t\t<issue>4</issue>\n\t\t\t\t</journal_issue>\n\t\t\t\t<journal_article publication_type=\"full_text\">\n\t\t\t\t\t<titles>\n\t\t\t\t\t\t<title>Service Value Determination:</title>\n\t\t\t\t\t\t<subtitle>An Integrative Perspective</subtitle>\n\t\t\t\t\t</titles>\n\t\t\t\t\t<contributors>\n\t\t\t\t\t\t<person_name sequence=\"first\" contributor_role=\"author\">\n\t\t\t\t\t\t\t<given_name>Rama K.</given_name>\n\t\t\t\t\t\t\t<surname>Jayanti</surname>\n\t\t\t\t\t\t\t<affiliation>a Department of Marketing, James J. Nance College of Business, Cleveland State\n\t\t\t\t\t\t\t\tUniversity, Cleveland, OH, 44115\n\t\t\t\t\t\t\t</affiliation>\n\t\t\t\t\t\t</person_name>\n\t\t\t\t\t\t<person_name sequence=\"additional\" contributor_role=\"author\">\n\t\t\t\t\t\t\t<given_name>Amit K.</given_name>\n\t\t\t\t\t\t\t<surname>Ghosh</surname>\n\t\t\t\t\t\t\t<affiliation>a Department of Marketing, James J. Nance College of Business, Cleveland State\n\t\t\t\t\t\t\t\tUniversity, Cleveland, OH, 44115\n\t\t\t\t\t\t\t</affiliation>\n\t\t\t\t\t\t</person_name>\n\t\t\t\t\t</contributors>\n\t\t\t\t\t<publication_date media_type=\"online\">\n\t\t\t\t\t\t<month>10</month>\n\t\t\t\t\t\t<day>25</day>\n\t\t\t\t\t\t<year>2008</year>\n\t\t\t\t\t</publication_date>\n\t\t\t\t\t<publication_date media_type=\"print\">\n\t\t\t\t\t\t<month>05</month>\n\t\t\t\t\t\t<day>10</day>\n\t\t\t\t\t\t<year>1996</year>\n\t\t\t\t\t</publication_date>\n\t\t\t\t\t<pages>\n\t\t\t\t\t\t<first_page>5</first_page>\n\t\t\t\t\t\t<last_page>25</last_page>\n\t\t\t\t\t</pages>\n\t\t\t\t\t<publisher_item>\n\t\t\t\t\t\t<item_number item_number_type=\"sequence-number\">2</item_number>\n\t\t\t\t\t\t<identifier id_type=\"doi\">10.1300/J150v03n04_02</identifier>\n\t\t\t\t\t</publisher_item>\n\t\t\t\t\t<doi_data>\n\t\t\t\t\t\t<doi>10.1300/J150v03n04_02</doi>\n\t\t\t\t\t\t<resource>https://www.tandfonline.com/doi/full/10.1300/J150v03n04_02</resource>\n\t\t\t\t\t\t<collection property=\"crawler-based\">\n\t\t\t\t\t\t\t<item crawler=\"iParadigms\">\n\t\t\t\t\t\t\t\t<resource>https://www.tandfonline.com/doi/pdf/10.1300/J150v03n04_02</resource>\n\t\t\t\t\t\t\t</item>\n\t\t\t\t\t\t</collection>\n\t\t\t\t\t</doi_data>\n\t\t\t\t</journal_article>\n\t\t\t</journal>\n\t\t</crossref>\n\t</doi_record>\n</doi_records>",
"items": [
{
"itemType": "journalArticle",
"title": "Service Value Determination: An Integrative Perspective",
"creators": [
{
"creatorType": "author",
"firstName": "Rama K.",
"lastName": "Jayanti"
},
{
"creatorType": "author",
"firstName": "Amit K.",
"lastName": "Ghosh"
}
],
"date": "1996-05-10",
"DOI": "10.1300/J150v03n04_02",
"ISSN": "1050-7051, 1541-0897",
"issue": "4",
"journalAbbreviation": "Journal of Hospitality & Leisure Marketing",
"language": "en",
"pages": "5-25",
"publicationTitle": "Journal of Hospitality & Leisure Marketing",
"url": "https://www.tandfonline.com/doi/full/10.1300/J150v03n04_02",
"volume": "3",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "<doi_records>\r\n <doi_record owner=\"10.59350\" timestamp=\"2023-10-25 13:27:18\">\r\n <crossref>\r\n <posted_content type=\"other\" language=\"en\">\r\n <group_title>Social sciences</group_title>\r\n <contributors>\r\n <person_name contributor_role=\"author\" sequence=\"first\">\r\n <given_name>Sebastian</given_name>\r\n <surname>Karcher</surname>\r\n </person_name>\r\n </contributors>\r\n <titles>\r\n <title>QDR Creates New Course on Data Management for CITI</title>\r\n </titles>\r\n <posted_date>\r\n <month>3</month>\r\n <day>31</day>\r\n <year>2023</year>\r\n </posted_date>\r\n <institution>\r\n <institution_name>QDR Blog</institution_name>\r\n </institution>\r\n <item_number item_number_type=\"uuid\">e1574118b63a40b0b56a605bf5e99c48</item_number>\r\n <program name=\"AccessIndicators\">\r\n <license_ref applies_to=\"vor\">https://creativecommons.org/licenses/by/4.0/legalcode</license_ref>\r\n <license_ref applies_to=\"tdm\">https://creativecommons.org/licenses/by/4.0/legalcode</license_ref>\r\n </program>\r\n <doi_data>\r\n <doi>10.59350/5znft-x4j11</doi>\r\n <resource>https://qdr.syr.edu/qdr-blog/qdr-creates-new-course-data-management-citi</resource>\r\n <collection property=\"text-mining\">\r\n <item>\r\n <resource mime_type=\"text/html\">https://qdr.syr.edu/qdr-blog/qdr-creates-new-course-data-management-citi</resource>\r\n </item>\r\n </collection>\r\n </doi_data>\r\n <citation_list />\r\n </posted_content>\r\n </crossref>\r\n </doi_record>\r\n</doi_records>",
"items": [
{
"itemType": "blogPost",
"title": "QDR Creates New Course on Data Management for CITI",
"creators": [
{
"creatorType": "author",
"firstName": "Sebastian",
"lastName": "Karcher"
}
],
"date": "2023-3-31",
"blogTitle": "QDR Blog",
"extra": "DOI: 10.59350/5znft-x4j11",
"language": "en",
"rights": "https://creativecommons.org/licenses/by/4.0/legalcode",
"url": "https://qdr.syr.edu/qdr-blog/qdr-creates-new-course-data-management-citi",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://europepmc\.org//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/article/')) {
if (url.includes('/PPR/')) {
return 'preprint';
}
else {
return "journalArticle";
}
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.citation-title > a[href*="/article/"]');
for (let row of rows) {
let href = getJSONURL(row.href);
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
async function doWeb(doc, url) {
if (detectWeb(doc, url) == 'multiple') {
let items = await Zotero.selectItems(getSearchResults(doc, false));
if (!items) return;
for (let url of Object.keys(items)) {
await scrape(await requestDocument(url));
}
}
else {
let jsonURL = getJSONURL(url);
if (jsonURL) {
await scrape(jsonURL);
}
else {
Z.debug('Couldn\'t extract ID from URL: ' + url);
}
}
}
async function scrape(jsonURL) {
// Z.debug(jsonURL);
let respText = await requestJSON(jsonURL);
processJSON(respText);
}
function getJSONURL(pageURL) {
let id = (pageURL.match(/\/article\/[^/]+\/([^/?]+)/) || [])[1];
if (!id) return null;
let idField = id.match(/pmc/i) ? 'PMCID' : 'ext_id';
return `https://europepmc.org/api/get/articleApi?query=${idField}:${id}&resultType=core&format=json`;
}
function processJSON(json) {
// Z.debug(json);
if (!json.resultList || !json.resultList.result || !json.resultList.result.length) {
Z.debug('Query returned no results');
return;
}
for (let result of json.resultList.result) {
let item = resultToItem(result);
item.complete();
}
}
function resultToItem(result) {
let item = new Zotero.Item();
processPubTypeList(result.pubTypeList, item);
item.title = result.title.replace(/.$/, '');
item.abstractNote = result.abstractText && ZU.cleanTags(result.abstractText);
item.pages = result.pageInfo;
item.language = result.language;
item.DOI = result.doi && ZU.cleanDOI(result.doi);
item.rights = result.license;
processJournalInfo(result.journalInfo, item);
processURLList(result.fullTextUrlList, item);
processAuthorList(result.authorList, item);
processKeywordList(result.keywordList, item);
if (!item.date) {
item.date = result.pubYear;
}
if (result.pmid) {
item.extra = (item.extra || '') + `PMID: ${result.pmid}\n`;
}
if (result.pmcid) {
item.extra = (item.extra || '') + `PMCID: ${result.pmcid}\n`;
}
return item;
}
function processPubTypeList(pubTypeList, item) {
if (!pubTypeList || !pubTypeList.pubType) return;
if (pubTypeList.pubType.length == 1 && pubTypeList.pubType[0] == 'Preprint') {
item.itemType = 'preprint';
}
else {
item.itemType = 'journalArticle';
}
}
function processJournalInfo(journalInfo, item) {
if (!journalInfo || !journalInfo.journal) return;
item.publicationTitle = journalInfo.journal.title.split(' : ')[0].replace('. ', ' ');
item.journalAbbreviation = journalInfo.journal.isoabbreviation;
item.volume = journalInfo.volume;
item.issue = journalInfo.issue;
item.ISSN = journalInfo.journal.ESSN || journalInfo.journal.essn
|| journalInfo.journal.ISSN || journalInfo.journal.issn;
item.date = journalInfo.printPublicationDate;
}
function processURLList(urlList, item) {
if (!urlList || !urlList.fullTextUrl) return;
let foundOA = false;
for (let urlBlock of urlList.fullTextUrl) {
if (!foundOA && urlBlock.documentStyle == 'pdf') {
item.attachments.push({
url: urlBlock.url,
title: `Full Text PDF (${urlBlock.availability})`,
mimeType: 'application/pdf'
});
if (urlBlock.availabilityCode == 'OA') {
foundOA = true;
}
}
else if (urlBlock.documentStyle == 'html'
|| (urlBlock.documentStyle == 'doi' && !item.url)) {
item.url = urlBlock.url;
}
}
}
function processAuthorList(authorList, item) {
if (!authorList || !authorList.author) return;
for (let author of authorList.author) {
if (author.firstName && author.lastName) {
item.creators.push({
firstName: author.firstName || author.initials,
lastName: author.lastName,
creatorType: 'author'
});
}
else {
let nameWithComma = author.fullName.replace(/(\s)/, ',$1');
item.creators.push(ZU.cleanAuthor(nameWithComma, 'author', true));
}
}
}
function processKeywordList(keywordList, item) {
if (!keywordList || !keywordList.keyword) return;
for (let keyword of keywordList.keyword) {
item.tags.push({ tag: keyword });
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://europepmc.org/article/MED/32923700",
"items": [
{
"itemType": "journalArticle",
"title": "Exposure to low temperatures suppresses the production of B-cell activating factor via TLR3 in BEAS-2B cells",
"creators": [
{
"firstName": "Yusuke",
"lastName": "Yoshino",
"creatorType": "author"
},
{
"firstName": "Ai",
"lastName": "Yamamoto",
"creatorType": "author"
},
{
"firstName": "Keita",
"lastName": "Misu",
"creatorType": "author"
},
{
"firstName": "Yoshitaka",
"lastName": "Wakabayashi",
"creatorType": "author"
},
{
"firstName": "Takatoshi",
"lastName": "Kitazawa",
"creatorType": "author"
},
{
"firstName": "Yasuo",
"lastName": "Ota",
"creatorType": "author"
}
],
"date": "2020-12-01",
"DOI": "10.1016/j.bbrep.2020.100809",
"ISSN": "2405-5808",
"abstractNote": "Acute viral respiratory tract infections (RTIs) are commonly associated with cold weather; however, the mechanism behind this is still unclear. Secretory IgA (sIgA) mainly contributes to the immune response against pathogenic microorganisms in the respiratory tract. Certain pathogen-associated molecular patterns (PAMPs) induce the expression of B-cell activating factor (BAFF) in epithelial cells, macrophages, and dendritic cells. BAFF transforms B cells into plasma cells, which leads to the mass production of immunoglobulins, including IgA, on the mucosal epithelium. However, no studies have described the relationship between cold exposure and BAFF and/or sIgA in RTI. The aim of our study was to determine this relationship in vitro by investigating the effect of low temperature on BAFF production by BEAS-2B cells after the addition of toll-like receptor (TLR) ligands. We showed stimulation of polyinosinic:polycytidylic acid (poly I:C), which led BEAS-2B to produce interferon (IFN)-β. IFN-β itself induced BEAS-2B cells to produce BAFF. Janus kinase inhibitor I decreased the amount of BAFF produced in BEAS-2B cells upon stimulation with IFN-β and poly I:C. Significantly less BAFF was produced post-poly I:C stimulation in low-temperature conditions than in normal-temperature conditions (mean ± SD: 41.2 ± 23.3 [33 °C] vs. 138.3 ± 7.1 pg/mL [37 °C], P = 0.05). However, the low-temperature condition itself was not cytotoxic. The stimulation of poly I:C produced BAFF from BEAS2B cells via IFN-β production and the JAK/signal transducer and activator of transcription pathway played an important role in BAFF production in BEAS-2B cells. Cold exposure reduced BAFF production by BEAS2B cells after stimulation with the TLR3 ligand. Cold exposure may, therefore, suppress the production of BAFF, resulting in the inhibition of IgA secretion in the bronchial epithelium, which explains the increased frequency of RTIs in cold weather.",
"extra": "PMID: 32923700\nPMCID: PMC7474404",
"journalAbbreviation": "Biochem Biophys Rep",
"language": "eng",
"libraryCatalog": "Europe PMC",
"pages": "100809",
"publicationTitle": "Biochemistry and biophysics reports",
"rights": "cc by-nc-nd",
"url": "https://europepmc.org/articles/PMC7474404",
"volume": "24",
"attachments": [
{
"title": "Full Text PDF (Open access)",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "B-cell Activating Factor"
},
{
"tag": "Beas-2b Cells"
},
{
"tag": "Low temperature"
},
{
"tag": "Secretory IgA"
},
{
"tag": "Toll-like Receptor Ligand"
},
{
"tag": "Viral Respiratory Tract Infection"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://europepmc.org/article/MED/34136733",
"items": [
{
"itemType": "journalArticle",
"title": "Quantum simulation of hyperbolic space with circuit quantum electrodynamics: From graphs to geometry",
"creators": [
{
"firstName": "Igor",
"lastName": "Boettcher",
"creatorType": "author"
},
{
"firstName": "Przemyslaw",
"lastName": "Bienias",
"creatorType": "author"
},
{
"firstName": "Ron",
"lastName": "Belyansky",
"creatorType": "author"
},
{
"firstName": "Alicia J",
"lastName": "Kollár",
"creatorType": "author"
},
{
"firstName": "Alexey V",
"lastName": "Gorshkov",
"creatorType": "author"
}
],
"date": "2020-09-01",
"DOI": "10.1103/physreva.102.032208",
"ISSN": "2469-9934",
"abstractNote": "We show how quantum many-body systems on hyperbolic lattices with nearest-neighbor hopping and local interactions can be mapped onto quantum field theories in continuous negatively curved space. The underlying lattices have recently been realized experimentally with superconducting resonators and therefore allow for a table-top quantum simulation of quantum physics in curved background. Our mapping provides a computational tool to determine observables of the discrete system even for large lattices, where exact diagonalization fails. As an application and proof of principle we quantitatively reproduce the ground state energy, spectral gap, and correlation functions of the noninteracting lattice system by means of analytic formulas on the Poincaré disk, and show how conformal symmetry emerges for large lattices. This sets the stage for studying interactions and disorder on hyperbolic graphs in the future. Importantly, our analysis reveals that even relatively small discrete hyperbolic lattices emulate the continuous geometry of negatively curved space, and thus can be used to experimentally resolve fundamental open problems at the interface of interacting many-body systems, quantum field theory in curved space, and quantum gravity.",
"extra": "PMID: 34136733\nPMCID: PMC8204532",
"issue": "3",
"journalAbbreviation": "Phys Rev A (Coll Park)",
"language": "eng",
"libraryCatalog": "Europe PMC",
"publicationTitle": "Physical review A",
"shortTitle": "Quantum simulation of hyperbolic space with circuit quantum electrodynamics",
"url": "https://europepmc.org/articles/PMC8204532",
"volume": "102",
"attachments": [
{
"title": "Full Text PDF (Free)",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://europepmc.org/article/PPR/PPR358366",
"items": [
{
"itemType": "preprint",
"title": "Fly ash application in moorum embankment and its stability analysis using FLAC/SLOPE and Response Surface Metho",
"creators": [
{
"firstName": "Sagar Dattatray",
"lastName": "Turkane",
"creatorType": "author"
},
{
"firstName": "Sandeep Kumar",
"lastName": "Chouksey",
"creatorType": "author"
}
],
"date": "2021",
"DOI": "10.21203/rs.3.rs-631949/v1",
"abstractNote": "This paper presents the application of fly ash in moorum embankment by partial replacement of moorum with fly ash and its stability analysis has been carried out. An experimental investigation was carried out on moorum blended with fly ash at different proportions of fly ash by dry weight of soil for the moorum embankment stability analysis. The Index properties and strength properties were assessed by performing Atterberg's limit, specific gravity, grain size distribution, compaction test, direct shear test (DST), and California Bearing Ratio (CBR) test respectively. The embankment slope stability analysis was performed using FLAC/SLOPE version 8.10 (Fast Lagrangian Analysis of Continua) software at a various slope angle of 30°, 32°, and 34° and different heights of the embankment of 6 m, 8 m, and 10 m to calculate Factor of Safety (FOS). FOS decreases with the increment of fly ash content, the height of embankment, and slope angle respectively. In addition to the numerical analysis, Response Surface Methodology (RSM) based (Face-Centered Central Composite Design) was used to predict FOS. The developed mathematical equation illustrates that the RSM model was statistically significant and the results give a reliable prediction of FOS.",
"libraryCatalog": "Europe PMC",
"rights": "cc by",
"url": "https://doi.org/10.21203/rs.3.rs-631949/v1",
"attachments": [
{
"title": "Full Text PDF (Open access)",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://europepmc.org/search?query=symmetry",
"defer": true,
"items": "multiple"
},
{
"type": "web",
"url": "https://europepmc.org/article/pmc/pmc3198533",
"items": [
{
"itemType": "journalArticle",
"title": "Zotero: A bibliographic assistant to researcher",
"creators": [
{
"firstName": "K K Mueen",
"lastName": "Ahmed",
"creatorType": "author"
},
{
"firstName": "Bandar E",
"lastName": "Al Dhubaib",
"creatorType": "author"
}
],
"date": "2011-10-01",
"DOI": "10.4103/0976-500x.85940",
"ISSN": "0976-5018",
"extra": "PMID: 22025866\nPMCID: PMC3198533",
"issue": "4",
"journalAbbreviation": "J Pharmacol Pharmacother",
"language": "eng",
"libraryCatalog": "Europe PMC",
"pages": "303-305",
"publicationTitle": "Journal of pharmacology & pharmacotherapeutics",
"rights": "cc by-nc-sa",
"shortTitle": "Zotero",
"url": "https://europepmc.org/articles/PMC3198533",
"volume": "2",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
200Abe Jellinek^https?://(www\.)?(((openresearchcentral|(aas|amrc|hrb|wellcome|gates)openresearch)\.org)|(f1000research|emeraldopenresearch)\.com)//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
// we should also support open-research-europe.ec.europa.eu, but it uses a
// version of the platform without any EM metadata and an obfuscated citation
// export mechanism...
function detectWeb(doc, url) {
if (url.includes('/articles/')
&& doc.querySelector('meta[name="citation_title"]')) {
return "preprint";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.article-listing .article-link');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
item.itemType = 'preprint';
delete item.pages;
delete item.genre;
if (item.volume && item.issue) {
item.archiveID = `${item.volume}:${item.issue}`;
}
delete item.volume;
delete item.issue;
delete item.number;
item.publisher = item.publicationTitle;
delete item.publicationTitle;
delete item.distributor;
delete item.company;
delete item.institution;
delete item.label;
if (item.date) {
item.date = ZU.strToISO(item.date);
}
item.attachments = item.attachments.filter(at => at.title != 'Snapshot');
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.itemType = "preprint";
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://f1000research.com/articles/10-614",
"items": [
{
"itemType": "preprint",
"title": "Cerebrospinal fluid neurofilament light chain levels in CLN2 disease patients treated with enzyme replacement therapy normalise after two years on treatment",
"creators": [
{
"firstName": "Katharina",
"lastName": "Iwan",
"creatorType": "author"
},
{
"firstName": "Nina",
"lastName": "Patel",
"creatorType": "author"
},
{
"firstName": "Amanda",
"lastName": "Heslegrave",
"creatorType": "author"
},
{
"firstName": "Mina",
"lastName": "Borisova",
"creatorType": "author"
},
{
"firstName": "Laura",
"lastName": "Lee",
"creatorType": "author"
},
{
"firstName": "Rebecca",
"lastName": "Bower",
"creatorType": "author"
},
{
"firstName": "Sara E.",
"lastName": "Mole",
"creatorType": "author"
},
{
"firstName": "Philippa B.",
"lastName": "Mills",
"creatorType": "author"
},
{
"firstName": "Henrik",
"lastName": "Zetterberg",
"creatorType": "author"
},
{
"firstName": "Kevin",
"lastName": "Mills",
"creatorType": "author"
},
{
"firstName": "Paul",
"lastName": "Gissen",
"creatorType": "author"
},
{
"firstName": "Wendy E.",
"lastName": "Heywood",
"creatorType": "author"
}
],
"date": "2022-01-05",
"DOI": "10.12688/f1000research.54556.2",
"abstractNote": "Classic late infantile neuronal ceroid lipofuscinosis (CLN2 disease) is caused by a deficiency of tripeptidyl-peptidase-1. In 2017, the first CLN2 enzyme replacement therapy (ERT) cerliponase alfa (Brineura) was approved by the FDA and EMA. The CLN2 disease clinical rating scale (CLN2 CRS) was developed to monitor loss of motor function, language and vision as well as frequency of generalised tonic clonic seizures. Using CLN2 CRS in an open label clinical trial it was shown that Brineura slowed down the progression of CLN2 symptoms. Neurofilament light chain (NfL) is a protein highly expressed in myelinated axons. An increase of cerebrospinal fluid (CSF) and blood NfL is found in a variety of neuroinflammatory, neurodegenerative, traumatic, and cerebrovascular diseases. We analysed CSF NfL in CLN2 patients treated with Brineura to establish whether it can be used as a possible biomarker of response to therapy. Newly diagnosed patients had CSF samples collected and analysed at first treatment dose and up to 12 weeks post-treatment to look at acute changes. Patients on a compassionate use programme who were already receiving ERT for approximately 1yr had CSF samples collected and NfL analysed over the following 1.3 years (2.3 years post-initiation of ERT) to look at long-term changes. All newly diagnosed patients we investigated with classical late infantile phenotype had high NfL levels >2000 pg/ml at start of treatment. No significant change was observed in NfL up to 12 weeks post-treatment. After one year of ERT, two out of six patients still had high NfL levels, but all patients showed a continued decrease, and all had low NfL levels after two years on ERT. NfL levels appear to correspond and predict improved clinical status of patients on ERT and could be useful as a biomarker to monitor neurodegeneration and verify disease modification in CLN2 patients on ERT.",
"archiveID": "10:614",
"language": "en",
"libraryCatalog": "f1000research.com",
"repository": "F1000Research",
"rights": "http://creativecommons.org/licenses/by/4.0/",
"url": "https://f1000research.com/articles/10-614",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Enzyme replacement therapy"
},
{
"tag": "Neurofilament light"
},
{
"tag": "Neuronal Ceroid lipofuscinosis"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://f1000research.com/articles/10-153",
"items": [
{
"itemType": "preprint",
"title": "Regional disparities in postnatal care among mothers aged 15-49 years old: An analysis of the Indonesian Demographic and Health Survey 2017",
"creators": [
{
"firstName": "Mochammad Nur",
"lastName": "Cahyono",
"creatorType": "author"
},
{
"firstName": "Ferry",
"lastName": "Efendi",
"creatorType": "author"
},
{
"firstName": "Harmayetty",
"lastName": "Harmayetty",
"creatorType": "author"
},
{
"firstName": "Qorinah Estiningtyas Sakilah",
"lastName": "Adnani",
"creatorType": "author"
},
{
"firstName": "Hsiao Ying",
"lastName": "Hung",
"creatorType": "author"
}
],
"date": "2021-08-16",
"DOI": "10.12688/f1000research.50938.2",
"abstractNote": "Background: In Indonesia, maternal mortality remains high, significantly 61.59% occur in the postnatal period. Postnatal care (PNC) provision is a critical intervention between six hours and 42 days after childbirth and is the primary strategy to reduce maternal mortality rates. However, underutilisation of PNC in Indonesia still remains high, and limited studies have shown the regional disparities of PNC in Indonesia. Methods: This study aims to explore the gaps between regions in PNC service for mothers who have had live births during the last five years in Indonesia. This study was a secondary data analysis study using the Indonesian Demographic and Health Survey (IDHS) in 2017. A total of 13,901 mothers aged 15-49 years having had live births within five years were included. Chi-squared test and binary logistic regression were performed to determine regional disparities in PNC. Results: Results indicated that the prevalence of PNC service utilisation among mothers aged 15-49 years was 70.94%. However, regional gaps in the utilisation of PNC service were indicated. Mothers in the Central of Indonesia have used PNC services 2.54 times compared to mothers in the Eastern of Indonesia (OR = 2.54; 95% CI = 1.77-3.65, p<0.001). Apart from the region, other variables have a positive relationship with PNC service, including wealth quintile, accessibility health facilities, age of children, childbirth order, mother's education, maternal occupation, spouse's age, and spouse's education. Conclusion: The results suggest the need for national policy focuses on service equality, accessible, and reliable implementation to improve postnatal care utilisation among mothers to achieve the maximum results for the Indonesian Universal Health Coverage plan.",
"archiveID": "10:153",
"language": "en",
"libraryCatalog": "f1000research.com",
"repository": "F1000Research",
"rights": "http://creativecommons.org/licenses/by/4.0/",
"shortTitle": "Regional disparities in postnatal care among mothers aged 15-49 years old",
"url": "https://f1000research.com/articles/10-153",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "postnatal care"
},
{
"tag": "reduced inequalities"
},
{
"tag": "regional disparities"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://wellcomeopenresearch.org/articles/6-209",
"items": [
{
"itemType": "report",
"title": "Methodology of Natsal-COVID Wave 1: a large, quasi-representative survey with qualitative follow-up measuring the impact of COVID-19 on sexual and reproductive health in Britain",
"creators": [
{
"firstName": "Emily",
"lastName": "Dema",
"creatorType": "author"
},
{
"firstName": "Andrew J.",
"lastName": "Copas",
"creatorType": "author"
},
{
"firstName": "Soazig",
"lastName": "Clifton",
"creatorType": "author"
},
{
"firstName": "Anne",
"lastName": "Conolly",
"creatorType": "author"
},
{
"firstName": "Margaret",
"lastName": "Blake",
"creatorType": "author"
},
{
"firstName": "Julie",
"lastName": "Riddell",
"creatorType": "author"
},
{
"firstName": "Raquel Boso",
"lastName": "Perez",
"creatorType": "author"
},
{
"firstName": "Clare",
"lastName": "Tanton",
"creatorType": "author"
},
{
"firstName": "Chris",
"lastName": "Bonell",
"creatorType": "author"
},
{
"firstName": "Pam",
"lastName": "Sonnenberg",
"creatorType": "author"
},
{
"firstName": "Catherine H.",
"lastName": "Mercer",
"creatorType": "author"
},
{
"firstName": "Kirstin R.",
"lastName": "Mitchell",
"creatorType": "author"
},
{
"firstName": "Nigel",
"lastName": "Field",
"creatorType": "author"
}
],
"date": "2021-08-16",
"abstractNote": "Background: Britain’s National Surveys of Sexual Attitudes and Lifestyles (Natsal) have been undertaken decennially since 1990 and provide a key data source underpinning sexual and reproductive health (SRH) policy. The COVID-19 pandemic disrupted many aspects of sexual lifestyles, triggering an urgent need for population-level data on sexual behaviour, relationships, and service use at a time when gold-standard in-person, household-based surveys with probability sampling were not feasible. We designed the Natsal-COVID study to understand the impact of COVID-19 on the nation’s SRH and assessed the sample representativeness. Methods: Natsal-COVID Wave 1 data collection was conducted four months (29/7-10/8/2020) after the announcement of Britain’s first national lockdown (23/03/2020). This was an online web-panel survey administered by survey research company, Ipsos MORI. Eligible participants were resident in Britain, aged 18-59 years, and the sample included a boost of those aged 18-29. Questions covered participants’ sexual behaviour, relationships, and SRH service use. Quotas and weighting were used to achieve a quasi-representative sample of the British general population. Participants meeting criteria of interest and agreeing to recontact were selected for qualitative follow-up interviews. Comparisons were made with contemporaneous national probability surveys and Natsal-3 (2010-12) to understand bias. Results: 6,654 participants completed the survey and 45 completed follow-up interviews. The weighted Natsal-COVID sample was similar to the general population in terms of gender, age, ethnicity, rurality, and, among sexually-active participants, numbers of sexual partners in the past year. However, the sample was more educated, contained more sexually-inexperienced people, and included more people in poorer health. Conclusions: Natsal-COVID Wave 1 rapidly collected quasi-representative population data to enable evaluation of the early population-level impact of COVID-19 and lockdown measures on SRH in Britain and inform policy. Although sampling was less representative than the decennial Natsals, Natsal-COVID will complement national surveillance data and Natsal-4 (planned for 2022).",
"extra": "Type: article",
"institution": "Wellcome Open Research",
"language": "en",
"libraryCatalog": "wellcomeopenresearch.org",
"reportNumber": "6:209",
"rights": "http://creativecommons.org/licenses/by/4.0/",
"shortTitle": "Methodology of Natsal-COVID Wave 1",
"url": "https://wellcomeopenresearch.org/articles/6-209",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "COVID-19"
},
{
"tag": "online survey"
},
{
"tag": "population estimates"
},
{
"tag": "relationships"
},
{
"tag": "sexual behaviour"
},
{
"tag": "sexual health"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://wellcomeopenresearch.org/articles/2-83",
"items": [
{
"itemType": "report",
"title": "H3K36me3 and PSIP1/LEDGF associate with several DNA repair proteins, suggesting their role in efficient DNA repair at actively transcribing loci",
"creators": [
{
"firstName": "Jayakumar",
"lastName": "Sundarraj",
"creatorType": "author"
},
{
"firstName": "Gillian C. A.",
"lastName": "Taylor",
"creatorType": "author"
},
{
"firstName": "Alex von",
"lastName": "Kriegsheim",
"creatorType": "author"
},
{
"firstName": "Madapura M.",
"lastName": "Pradeepa",
"creatorType": "author"
}
],
"date": "2021-08-16",
"abstractNote": "Background: Trimethylation at histone H3 at lysine 36 (H3K36me3) is associated with expressed gene bodies and recruit proteins implicated in transcription, splicing and DNA repair. PC4 and SF2 interacting protein (PSIP1/LEDGF) is a transcriptional coactivator, possesses an H3K36me3 reader PWWP domain. Alternatively spliced isoforms of PSIP1 binds to H3K36me3 and suggested to function as adaptor proteins to recruit transcriptional modulators, splicing factors and proteins that promote homology-directed repair (HDR), to H3K36me3 chromatin. Methods: We performed chromatin immunoprecipitation of H3K36me3 followed by quantitative mass spectrometry (qMS) to identify proteins associated with H3K36 trimethylated chromatin in mouse embryonic stem cells (mESCs). We also performed stable isotope labelling with amino acids in cell culture (SILAC) followed by qMS for a longer isoform of PSIP1 (PSIP/p75) and MOF/KAT8 in mESCs and mouse embryonic fibroblasts ( MEFs). Furthermore, immunoprecipitation followed by western blotting was performed to validate the qMS data. DNA damage in PSIP1 knockout MEFs was assayed by a comet assay. Results: Proteomic analysis shows the association of proteins involved in transcriptional elongation, RNA processing and DNA repair with H3K36me3 chromatin. Furthermore, we show DNA repair proteins like PARP1, gamma H2A.X, XRCC1, DNA ligase 3, SPT16, Topoisomerases and BAZ1B are predominant interacting partners of PSIP /p75. We further validated the association of PSIP/p75 with PARP1, hnRNPU and gamma H2A.X and also demonstrated accumulation of damaged DNA in PSIP1 knockout MEFs. Conclusions: In contrast to the previously demonstrated role of H3K36me3 and PSIP/p75 in promoting homology-directed repair (HDR), our data support a wider role of H3K36me3 and PSIP1 in maintaining the genome integrity by recruiting proteins involved in DNA damage response pathways to the actively transcribed loci.",
"extra": "Type: article",
"institution": "Wellcome Open Research",
"language": "en",
"libraryCatalog": "wellcomeopenresearch.org",
"reportNumber": "2:83",
"rights": "http://creativecommons.org/licenses/by/4.0/",
"url": "https://wellcomeopenresearch.org/articles/2-83",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "DNA repair"
},
{
"tag": "H3K36me3"
},
{
"tag": "LEDGF"
},
{
"tag": "MOF"
},
{
"tag": "PSIP1"
},
{
"tag": "SILAC"
},
{
"tag": "mass spectrometry"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://hrbopenresearch.org/articles/4-87",
"items": [
{
"itemType": "preprint",
"title": "Effectiveness of quality improvement strategies for type 1 diabetes in children and adolescents: a systematic review protocol",
"creators": [
{
"firstName": "Paul M.",
"lastName": "Ryan",
"creatorType": "author"
},
{
"firstName": "Michael",
"lastName": "Zahradnik",
"creatorType": "author"
},
{
"firstName": "Kristin J.",
"lastName": "Konnyu",
"creatorType": "author"
},
{
"firstName": "Tamara",
"lastName": "Rader",
"creatorType": "author"
},
{
"firstName": "Michael",
"lastName": "Halasy",
"creatorType": "author"
},
{
"firstName": "Rayzel",
"lastName": "Shulman",
"creatorType": "author"
},
{
"firstName": "Noah",
"lastName": "Ivers",
"creatorType": "author"
},
{
"firstName": "Colin P.",
"lastName": "Hawkes",
"creatorType": "author"
},
{
"firstName": "Jeremy M.",
"lastName": "Grimshaw",
"creatorType": "author"
}
],
"date": "2021-08-10",
"DOI": "10.12688/hrbopenres.13223.1",
"abstractNote": "Introduction: Optimal glycaemic control is often a challenge in children and adolescents with type 1 diabetes (T1D). Implementation of patient, clinician or organisation-targeted quality improvement (QI) strategies has been proven to be beneficial in terms of improving glycaemic outcomes in adults living with diabetes. This review aims to assess the effectiveness of such QI interventions in improving glycaemic control, care delivery, and screening rates in children and adolescents with T1D. Methods and analysis: MEDLINE, EMBASE, CINAHL and Cochrane CENTRAL databases will be searched for relevant studies up to January 2021. Trial registries, ClinicalTrials.gov and ICTRP, will also be explored for any ongoing trials of relevance. We will include trials which examine QI strategies as defined by a modified version of the Cochrane Effective Practice and Organisation of Care 2015 Taxonomy in children (<18 years) with a diagnosis of T1D. The primary outcome to be assessed is glycated haemoglobin (HbA1c), although a range of secondary outcomes relating to clinical management, adverse events, healthcare engagement, screening rates and psychosocial parameters will also be assessed. Our primary intention is to generate a best-evidence narrative to summarise and synthesise the resulting studies. If a group of studies are deemed to be highly similar, then a meta-analysis using a random effects model will be considered. Cochrane Risk of Bias 1.0 tool will be applied for quality assessment. All screening, data extraction and quality assessment will be performed by two independent researchers. Dissemination: The results of this review will be disseminated through peer-reviewed publication in order to inform invested partners (e.g., Paediatric Endocrinologists) on the potential of QI strategies to improve glycaemic management and other related health outcomes in children with T1D, thereby guiding best practices in the outpatient management of the disorder. PROSPERO registration number: CRD42021233974 (28/02/2021).",
"archiveID": "4:87",
"language": "en",
"libraryCatalog": "hrbopenresearch.org",
"repository": "HRB Open Research",
"rights": "http://creativecommons.org/licenses/by/4.0/",
"shortTitle": "Effectiveness of quality improvement strategies for type 1 diabetes in children and adolescents",
"url": "https://hrbopenresearch.org/articles/4-87",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Quality improvement"
},
{
"tag": "adolescents"
},
{
"tag": "children"
},
{
"tag": "diabetes"
},
{
"tag": "glycaemic management"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://hrbopenresearch.org/browse/articles",
"items": "multiple"
},
{
"type": "web",
"defer": true,
"url": "https://f1000research.com/search?q=test",
"items": "multiple"
},
{
"type": "web",
"url": "https://gatesopenresearch.org/articles/5-122",
"items": [
{
"itemType": "preprint",
"title": "Young infant clinical signs study­­, Pakistan: a data note",
"creators": [
{
"firstName": "Shahira",
"lastName": "Shahid",
"creatorType": "author"
},
{
"firstName": "Shiyam Sunder",
"lastName": "Tikmani",
"creatorType": "author"
},
{
"firstName": "Nick",
"lastName": "Brown",
"creatorType": "author"
},
{
"firstName": "Anita K. M.",
"lastName": "Zaidi",
"creatorType": "author"
},
{
"firstName": "Fyezah",
"lastName": "Jehan",
"creatorType": "author"
},
{
"firstName": "Muhammad Imran",
"lastName": "Nisar",
"creatorType": "author"
}
],
"date": "2021-08-12",
"DOI": "10.12688/gatesopenres.13317.1",
"abstractNote": "Neonatal sepsis is the leading cause of child death globally with most of these deaths occurring in the first week of life. It is of utmost public health importance that clinical signs predictive of severe illness and need for referral are identified early in the course of illness. From 2002-2005, a multi country trial called the Young Infant Clinical Signs Study (YICSS) was conducted in seven sites across three South-Asian (Bangladesh, India, and Pakistan), two African (Ghana, and South Africa), and one South American (Bolivia) country. The study aimed to develop a simplified algorithm to be used by primary healthcare workers for the identification of sick young infants needing prompt referral and treatment. The main study enrolled 8,889 young infants between the ages of 0-59 days old. This dataset contains observations on 2950 young infants aged 0-59 days from the Pakistan site. The data was collected between 2003-2004 with information on the most prevalent signs and symptoms. The data from this study was used to update the Integrated Management of Childhood Illness guidelines. The World Health Organisation (WHO) seven-sign algorithm has been used in other major community-based trials to study possible serious bacterial infection and its treatment regimens.",
"archiveID": "5:122",
"language": "en",
"libraryCatalog": "gatesopenresearch.org",
"repository": "Gates Open Research",
"rights": "http://creativecommons.org/licenses/by/4.0/",
"shortTitle": "Young infant clinical signs study­­, Pakistan",
"url": "https://gatesopenresearch.org/articles/5-122",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Pakistan"
},
{
"tag": "clinical signs"
},
{
"tag": "community"
},
{
"tag": "severe illness requiring hospitalization"
},
{
"tag": "young infants"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Andrew Bergan and Abe Jellinek^https?://ntrs\.nasa\.gov/(citations/|search)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Andrew Bergan and Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/search')) {
if (getSearchResults(doc, true)) {
return "multiple";
}
else {
Z.monitorDOMChanges(doc.querySelector('app-search'));
}
}
else if (url.includes('/citations/')) {
return mapType(
ZU.xpathText(doc,
'//div[@class="label" and contains(text(), "Document Type")]/following-sibling::div/text()'));
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('app-record-item mat-card-title a');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
async function doWeb(doc, url) {
if (detectWeb(doc, url) == 'multiple') {
let items = await Zotero.selectItems(getSearchResults(doc, false));
if (!items) return;
for (let url of Object.keys(items)) {
await scrape(null, url);
}
}
else {
await scrape(doc, url);
}
}
function mapType(docType) {
if (!docType) return false;
docType = docType.trim().toLowerCase();
let mapping = {
'conference paper|conference publication': 'conferencePaper',
'bibliograph(y|ic)|report|collected works|brief|memo|note|white paper': 'report',
'journal (article|issue)|^reprint': 'journalArticle',
'presentation|poster': 'presentation',
'thesis|dissertation': 'thesis',
chapter: 'bookSection',
'book/monograph|conference proceedings': 'book',
patent: 'patent',
'computer program': 'computerProgram',
'motion picture|video': 'videoRecording',
preprint: 'preprint',
manuscript: 'manuscript'
};
for (let [regex, itemType] of Object.entries(mapping)) {
if (docType.match(new RegExp(regex))) {
return itemType;
}
}
return 'document';
}
function processJSON(json) {
let item = new Zotero.Item(mapType(json.stiTypeDetails || json.stiType));
function addToExtra(label, value) {
if (item.extra == undefined) item.extra = '';
item.extra += `NTRS ${label}: ${value}\n`;
}
item.title = json.title;
if (json.sourceIdentifiers) {
for (let identifier of json.sourceIdentifiers) {
if (identifier.type == 'DOI') {
item.DOI = ZU.cleanDOI(identifier.number);
break;
}
}
}
if (json.downloads) {
for (let download of json.downloads) {
item.attachments.push({
url: download.links.pdf || download.links.original,
title: download.name,
mimeType: download.mimetype
});
}
}
if (json.authorAffiliations) {
let affiliations = [];
for (let entry of json.authorAffiliations) {
let name = entry.meta.author.name;
item.creators.push(ZU.cleanAuthor(name, 'author', name.includes(', ')));
affiliations.push(entry.meta.organization.name);
}
if (affiliations.length) {
affiliations = ZU.arrayUnique(affiliations);
addToExtra('Author Affiliations', affiliations.join(', '));
}
}
if (json.subjectCategories) {
for (let subjectCategory of json.subjectCategories) {
item.tags.push({ tag: subjectCategory });
}
}
if (json.publications && json.publications.length) {
let earliest;
for (let publication of json.publications) {
// we're comparing +00:00 ISO dates here, so string comparison
// *should* be safe. either way i've never seen an item with more
// than one publication in this database.
if (!earliest || publication.publicationDate < earliest.publicationDate) {
earliest = publication;
}
}
item.date = ZU.strToISO(earliest.publicationDate);
if (item.itemType == 'journalArticle') {
item.publicationTitle = earliest.publicationName;
item.volume = earliest.volume;
item.issue = earliest.issue;
}
}
if (json.meetings && json.meetings.length) {
let meeting = json.meetings[0];
if (item.itemType == 'conferencePaper') {
item.conferenceName = meeting.name;
item.place = meeting.location;
}
else if (meeting.startDate && meeting.endDate) {
let start = meeting.startDate.substring(0, 10);
let end = meeting.endDate.substring(0, 10);
addToExtra('Meeting Information', `${meeting.name}; ${start} to ${end}; ${meeting.place}`);
}
}
if (json.otherReportNumbers && json.otherReportNumbers.length) {
if (item.itemType == 'report') {
item.reportNumber = json.otherReportNumbers[0];
}
else {
addToExtra('Report/Patent Number', json.otherReportNumbers[0]);
}
}
if (json.abstract != 'No abstract available') {
item.abstractNote = json.abstract;
}
if (json.id) {
addToExtra('Document ID', json.id);
}
if (json.center) {
addToExtra('Research Center', `${json.center.name} (${json.center.code})`);
}
return item;
}
async function scrape(doc, url) {
let json = await requestJSON(url.replace('/citations', '/api/citations'));
let item = processJSON(json);
item.url = url;
if (doc) {
item.attachments.push({ title: "Snapshot", document: doc });
}
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://ntrs.nasa.gov/citations/20130010248",
"defer": true,
"items": [
{
"itemType": "conferencePaper",
"title": "Integration of Airborne Aerosol Prediction Systems and Vegetation Phenology to Track Pollen for Asthma Alerts in Public Health Decision Support Systems",
"creators": [
{
"firstName": "Jeffrey C.",
"lastName": "Luvall",
"creatorType": "author"
},
{
"firstName": "William A.",
"lastName": "Sprigg",
"creatorType": "author"
},
{
"firstName": "Goran",
"lastName": "Pejanovic",
"creatorType": "author"
},
{
"firstName": "Slobodan",
"lastName": "Nickovic",
"creatorType": "author"
},
{
"firstName": "Anup",
"lastName": "Prasad",
"creatorType": "author"
},
{
"firstName": "Ana",
"lastName": "Vukovic",
"creatorType": "author"
},
{
"firstName": "Miram",
"lastName": "Vujadinovic",
"creatorType": "author"
},
{
"firstName": "Estelle",
"lastName": "Levetin",
"creatorType": "author"
},
{
"firstName": "Landon",
"lastName": "Bunderson",
"creatorType": "author"
},
{
"firstName": "Peter K.",
"lastName": "VandeWater",
"creatorType": "author"
},
{
"firstName": "Amy",
"lastName": "Budge",
"creatorType": "author"
},
{
"firstName": "William",
"lastName": "Hudspeth",
"creatorType": "author"
},
{
"firstName": "Alfredo",
"lastName": "Huete",
"creatorType": "author"
},
{
"firstName": "Alan",
"lastName": "Zelicoff",
"creatorType": "author"
},
{
"firstName": "Theresa",
"lastName": "Crimmins",
"creatorType": "author"
},
{
"firstName": "Jake",
"lastName": "Welzin",
"creatorType": "author"
},
{
"firstName": "Heide",
"lastName": "Krapfl",
"creatorType": "author"
},
{
"firstName": "Barbara",
"lastName": "Toth",
"creatorType": "author"
}
],
"date": "2013-01-06",
"conferenceName": "213th American Meteorological Society (AMS) Meeting",
"extra": "NTRS Author Affiliations: NASA Marshall Space Flight Center, Chapman Univ., Belgrade Univ., Tulsa Univ., California State Univ., New Mexico Univ., University of Technology, Saint Louis Univ., Geological Survey, Department of Health\nNTRS Report/Patent Number: M12-2358\nNTRS Document ID: 20130010248\nNTRS Research Center: Marshall Space Flight Center (MSFC)",
"libraryCatalog": "NASA NTRS",
"place": "Austin, TX",
"url": "https://ntrs.nasa.gov/citations/20130010248",
"attachments": [
{
"title": "20130010248.pdf",
"mimeType": "application/pdf"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Life Sciences (General)"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://ntrs.nasa.gov/citations/20130010247",
"defer": true,
"items": [
{
"itemType": "conferencePaper",
"title": "Extreme Transients in the High Energy Universe",
"creators": [
{
"firstName": "Chryssa",
"lastName": "Kouveliotou",
"creatorType": "author"
}
],
"date": "2013-01-08",
"abstractNote": "The High Energy Universe is rich in diverse populations of objects spanning the entire cosmological (time)scale, from our own present-day Milky Way to the re-ionization epoch. Several of these are associated with extreme conditions irreproducible in laboratories on Earth. Their study thus sheds light on the behavior of matter under extreme conditions, such as super-strong magnetic fields (in excess of 10^14 G), high gravitational potentials (e.g., Super Massive Black Holes), very energetic collimated explosions resulting in relativistic jet flows (e.g., Gamma Ray Bursts, exceeding 10^53 ergs). In the last thirty years, my work has been mostly focused on two apparently different but potentially linked populations of such transients: magnetars (highly magnetized neutron stars) and Gamma Ray Bursts (strongly beamed emission from relativistic jets), two populations that constitute unique astrophysical laboratories, while also giving us the tools to probe matter conditions in the Universe to redshifts beyond z=10, when the first stars and galaxies were assembled. I did not make this journey alone I have either led or participated in several international collaborations studying these phenomena in multi-wavelength observations; solitary perfection is not sufficient anymore in the world of High Energy Astrophysics. I will describe this journey, present crucial observational breakthroughs, discuss key results and muse on the future of this field.",
"conferenceName": "219th American Astronomical Society (AAS) Meeting",
"extra": "NTRS Author Affiliations: NASA Marshall Space Flight Center\nNTRS Report/Patent Number: M12-2354\nNTRS Document ID: 20130010247\nNTRS Research Center: Marshall Space Flight Center (MSFC)",
"libraryCatalog": "NASA NTRS",
"place": "Austin, TX",
"url": "https://ntrs.nasa.gov/citations/20130010247",
"attachments": [
{
"title": "20130010247.pdf",
"mimeType": "application/pdf"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Astrophysics"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://ntrs.nasa.gov/citations/20130010221",
"defer": true,
"items": [
{
"itemType": "document",
"title": "Gas-Liquid Supersonic Cleaning and Cleaning Verification Spray System",
"creators": [
{
"firstName": "Lewis M.",
"lastName": "Parrish",
"creatorType": "author"
}
],
"date": "2009-03-01",
"abstractNote": "NASA Kennedy Space Center (KSC) recently entered into a nonexclusive license agreement with Applied Cryogenic Solutions (ACS), Inc. (Galveston, TX) to commercialize its Gas-Liquid Supersonic Cleaning and Cleaning Verification Spray System technology. This technology, developed by KSC, is a critical component of processes being developed and commercialized by ACS to replace current mechanical and chemical cleaning and descaling methods used by numerous industries. Pilot trials on heat exchanger tubing components have shown that the ACS technology provides for: Superior cleaning in a much shorter period of time. Lower energy and labor requirements for cleaning and de-scaling uper.ninih. Significant reductions in waste volumes by not using water, acidic or basic solutions, organic solvents, or nonvolatile solid abrasives as components in the cleaning process. Improved energy efficiency in post-cleaning heat exchanger operations. The ACS process consists of a spray head containing supersonic converging/diverging nozzles, a source of liquid gas; a novel, proprietary pumping system that permits pumping liquid nitrogen, liquid air, or supercritical carbon dioxide to pressures in the range of 20,000 to 60,000 psi; and various hoses, fittings, valves, and gauges. The size and number of nozzles can be varied so the system can be built in configurations ranging from small hand-held spray heads to large multinozzle cleaners. The system also can be used to verify if a part has been adequately cleaned.",
"extra": "NTRS Author Affiliations: QinetiQ North America\nNTRS Report/Patent Number: KSC-2009-044\nNTRS Document ID: 20130010221\nNTRS Research Center: Kennedy Space Center (KSC)",
"libraryCatalog": "NASA NTRS",
"url": "https://ntrs.nasa.gov/citations/20130010221",
"attachments": [
{
"title": "20130010221.pdf",
"mimeType": "application/pdf"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Engineering (General)"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://ntrs.nasa.gov/citations/20130010127",
"defer": true,
"items": [
{
"itemType": "journalArticle",
"title": "Mineralogy of Meteorite Groups: An Update",
"creators": [
{
"firstName": "Alan E.",
"lastName": "Rubin",
"creatorType": "author"
}
],
"date": "1997-09-01",
"DOI": "10.1111/j.1945-5100.1997.tb01558.x",
"abstractNote": "Twenty minerals that were not included in the most recent list of meteoritic minerals have been reported as occurring in meteorites. Extraterrestrial anhydrous Ca phosphate should be called menillite, not whitlockite.",
"extra": "NTRS Author Affiliations: California Univ.\nNTRS Document ID: 20130010127\nNTRS Research Center: Headquarters (HQ)",
"issue": "5",
"libraryCatalog": "NASA NTRS",
"publicationTitle": "Meteoritics and Planetary Science",
"shortTitle": "Mineralogy of Meteorite Groups",
"url": "https://ntrs.nasa.gov/citations/20130010127",
"volume": "32",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Geophysics"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://ntrs.nasa.gov/citations/20040200977",
"defer": true,
"items": [
{
"itemType": "thesis",
"title": "Validation of Design and Analysis Techniques of Tailored Composite Structures",
"creators": [
{
"firstName": "Dawn C.",
"lastName": "Jegley",
"creatorType": "author"
},
{
"firstName": "Dulnath D.",
"lastName": "Wijayratne",
"creatorType": "author"
}
],
"date": "2004-12-01",
"abstractNote": "Aeroelasticity is the relationship between the elasticity of an aircraft structure and its aerodynamics. This relationship can cause instabilities such as flutter in a wing. Engineers have long studied aeroelasticity to ensure such instabilities do not become a problem within normal operating conditions. In recent decades structural tailoring has been used to take advantage of aeroelasticity. It is possible to tailor an aircraft structure to respond favorably to multiple different flight regimes such as takeoff, landing, cruise, 2-g pull up, etc. Structures can be designed so that these responses provide an aerodynamic advantage. This research investigates the ability to design and analyze tailored structures made from filamentary composites. Specifically the accuracy of tailored composite analysis must be verified if this design technique is to become feasible. To pursue this idea, a validation experiment has been performed on a small-scale filamentary composite wing box. The box is tailored such that its cover panels induce a global bend-twist coupling under an applied load. Two types of analysis were chosen for the experiment. The first is a closed form analysis based on a theoretical model of a single cell tailored box beam and the second is a finite element analysis. The predicted results are compared with the measured data to validate the analyses. The comparison of results show that the finite element analysis is capable of predicting displacements and strains to within 10% on the small-scale structure. The closed form code is consistently able to predict the wing box bending to 25% of the measured value. This error is expected due to simplifying assumptions in the closed form analysis. Differences between the closed form code representation and the wing box specimen caused large errors in the twist prediction. The closed form analysis prediction of twist has not been validated from this test.",
"extra": "NTRS Author Affiliations: NASA Langley Research Center, George Washington Univ.\nNTRS Report/Patent Number: NASA/CR-2004-212650\nNTRS Document ID: 20040200977\nNTRS Research Center: Langley Research Center (LaRC)",
"libraryCatalog": "NASA NTRS",
"url": "https://ntrs.nasa.gov/citations/20040200977",
"attachments": [
{
"title": "20040200977.pdf",
"mimeType": "application/pdf"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Structural Mechanics"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://ntrs.nasa.gov/citations/19630002484",
"defer": true,
"items": [
{
"itemType": "document",
"title": "Third Saturn Rocket to be Launched",
"creators": [],
"date": "1962-11-13",
"abstractNote": "Saturn sa-3 launch - high water project",
"extra": "NTRS Document ID: 19630002484\nNTRS Research Center: Legacy CDMS (CDMS)",
"libraryCatalog": "NASA NTRS",
"url": "https://ntrs.nasa.gov/citations/19630002484",
"attachments": [
{
"title": "19630002484.pdf",
"mimeType": "application/pdf"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Space Vehicles"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://ntrs.nasa.gov/search?q=saturn%20v",
"defer": true,
"items": "multiple"
},
{
"type": "web",
"url": "https://ntrs.nasa.gov/citations/20205011830",
"items": [
{
"itemType": "report",
"title": "Fitting Leak Test Report",
"creators": [
{
"firstName": "Jared",
"lastName": "Sass",
"creatorType": "author"
},
{
"firstName": "Angela",
"lastName": "Krenn",
"creatorType": "author"
}
],
"date": "2020-12-28",
"abstractNote": "Many Human Landing System flight elements are anticipated to implement mechanically connected joints in cryogenic fluid lines to simplify system assembly. These joints will need to survive launch vibration, while cold, and remain as leak‐free as possible to minimize commodity loss. Threaded fluid fittings should be qualified for use in their expected environments to reduce risk and ensure mission success. A new ground‐based test apparatus was developed and validated to obtain quantifiable low leak rate test data for a small component, such as a pressurized threaded fluid fitting, while in the temperature range of liquid hydrogen. A cryocooler is used to attain the cold test temperature and helium leakage from a pressurized fitting mounted within a vacuum test chamber is measured using a mass spectrometer leak detector. Two different sizes of Swagelok VCR fittings with three different types of seal rings were selected as the test articles for the initial proof of concept testing. Each fitting configuration was subjected to two consecutive cryogenic thermal cycles and cold leak measurement tests, followed by exposure to a high vibration test profile at ambient temperature on a shaker table, and then two additional cold leak measurement tests. Very low leak rates, below the acceptable leak rate threshold, were measured at the pressures tested. Several enhancements to the test hardware are discussed that would facilitate a comprehensive fitting qualification test campaign by enabling a higher test throughput rate and ensuring a repeatable test profile.",
"extra": "NTRS Author Affiliations: Kennedy Space Center\nNTRS Document ID: 20205011830\nNTRS Research Center: Kennedy Space Center (KSC)",
"libraryCatalog": "NASA NTRS",
"url": "https://ntrs.nasa.gov/citations/20205011830",
"attachments": [
{
"title": "Fitting Leak Test Report Public Release - Dec 2020.pdf",
"mimeType": "application/pdf"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Engineering (General)"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
200Aurimas Vinckevicius and Abe Jellinek/(article|preprint|issue)/view/|/catalog/book/|/search/search|/index\.php/default/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2012-2021 Aurimas Vinckevicius and Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
let generator = attr(doc, 'meta[name="generator"]', 'content')
|| text(doc, '#developedBy');
if (!generator && doc.body.id.includes('openJournalSystems')) {
generator = 'Open Journal Systems';
}
if (generator.startsWith('Open ')
&& (url.includes('/search/search')
|| doc.querySelector('.obj_issue_toc .cmp_article_list')
|| doc.querySelector('#content > .tocArticle'))) {
if (getSearchResults(doc, true)) {
return "multiple";
}
else {
return false;
}
}
if (generator.startsWith('Open Journal Systems')) {
return 'journalArticle';
}
if (generator.startsWith('Open Monograph Press')) {
return 'book';
}
if (generator.startsWith('Open Preprint Systems')) {
return 'preprint';
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.title a[href*="/view/"], .title a[href*="/catalog/"], .tocTitle a[href*="/view/"], .tocTitle a[href*="/catalog/"]');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
// In OJS 3, up to at least version 3.1.1-2, the PDF view does not
// include metadata, so we must get it from the article landing page.
var urlParts = url.match(/(.+\/[^/]+\/view\/)([^/]+)\/[^/]+/);
if (urlParts) { // PDF view
ZU.processDocuments(urlParts[1] + urlParts[2], scrape);
}
else { // Article view
scrape(doc, url);
}
}
}
function scrape(doc, url) {
// use Embeded Metadata
var trans = Zotero.loadTranslator('web');
trans.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
trans.setDocument(doc);
trans.setHandler('itemDone', function (obj, item) {
if (!item.title) {
item.title = text(doc, '#articleTitle');
}
if (item.creators.length == 0) {
var authorString = doc.getElementById("authorString");
if (authorString) {
var authorsList = authorString.textContent.split(',');
for (let i = 0; i < authorsList.length; i++) {
item.creators.push(ZU.cleanAuthor(authorsList[i], "author"));
}
}
}
// OJS journal abbreviations are rarely correct. sometimes they're
// generated from the journal's URL slug, other times they're just the
// number "1", or the full name of the journal, or an abbreviation that
// isn't correct according to ISO 4 or the journal's editors
// (see MeteoHistory test).
delete item.journalAbbreviation;
var doiNode = doc.getElementById('pub-id::doi');
if (!doiNode) doiNode = doc.querySelector('.pubid .value');
if (!item.DOI && doiNode) {
item.DOI = doiNode.textContent;
}
if (item.itemType == 'journalArticle') {
// abstract is supplied in DC:description, so it ends up in extra
// abstractNote is pulled from description, which is same as title
item.abstractNote = item.extra;
item.extra = undefined;
}
// if we still don't have abstract, we can try scraping from page
if (!item.abstractNote) {
item.abstractNote = ZU.xpathText(doc, '//div[@id="articleAbstract"]/div[1]')
|| ZU.xpathText(doc, '//div[contains(@class, "main_entry")]/div[contains(@class, "abstract")]');
}
if (item.abstractNote) {
item.abstractNote = item.abstractNote.trim().replace(/^Abstract:?\s*/, '');
}
if (!item.abstractNote) {
item.abstractNote = attr(doc, 'meta[name="DC.Description"]', 'content');
}
if (!item.ISBN) {
item.ISBN = ZU.cleanISBN(text(doc, '.identification_code .value'));
}
if (item.date) {
item.date = ZU.strToISO(item.date);
}
else {
item.date = ZU.strToISO(
attr(doc, 'meta[name="DC.Date.modified"]', 'content')
|| attr(doc, 'meta[name="DC.Date.created"]', 'content')
);
}
if (item.volume == '0') {
item.volume = '';
}
if (item.institution) {
item.institution = '';
}
var pdfAttachment = false;
// some journals link to a PDF view page in the header, not the PDF itself
for (let i = 0; i < item.attachments.length; i++) {
if (item.attachments[i].mimeType == 'application/pdf') {
pdfAttachment = true;
item.attachments[i].url = item.attachments[i].url.replace('/view/', '/download/');
}
else if (item.attachments[i].title == 'Snapshot') {
item.attachments.splice(i--, 1); // delete it
}
}
var pdfUrl = doc.querySelector("a.pdf");
// add linked PDF if there isn't one listed in the header
if (!pdfAttachment && pdfUrl) {
pdfAttachment = true;
item.attachments.push({
title: "Full Text PDF",
mimeType: "application/pdf",
url: pdfUrl.href.replace('/view/', '/download/')
});
}
// add linked PDF if there isn't one listed in the header
if (!pdfAttachment) {
for (let link of doc.querySelectorAll("a.obj_galley_link")) {
if (link.textContent.includes('PDF')) {
pdfAttachment = true;
item.attachments.push({
title: "Full Text PDF",
mimeType: "application/pdf",
url: link.href.replace('/view/', '/download/')
});
break;
}
}
}
item.complete();
});
trans.getTranslatorObject(function (trans) {
trans.itemType = detectWeb(doc, url);
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://journals.linguisticsociety.org/elanguage/dad/article/view/362.html",
"items": [
{
"itemType": "journalArticle",
"title": "On Incrementality in Dialogue: Evidence from Compound Contributions",
"creators": [
{
"firstName": "Christine",
"lastName": "Howes",
"creatorType": "author"
},
{
"firstName": "Matthew",
"lastName": "Purver",
"creatorType": "author"
},
{
"firstName": "Patrick G. T.",
"lastName": "Healey",
"creatorType": "author"
},
{
"firstName": "Gregory",
"lastName": "Mills",
"creatorType": "author"
},
{
"firstName": "Eleni",
"lastName": "Gregoromichelaki",
"creatorType": "author"
}
],
"date": "2011-05-11",
"DOI": "10.5087/d&d.v2i1.362",
"ISSN": "2152-9620",
"abstractNote": "Spoken contributions in dialogue often continue or complete earlier contributions by either the same or a different speaker. These compound contributions (CCs) thus provide a natural context for investigations of incremental processing in dialogue.\n\nWe present a corpus study which confirms that CCs are a key dialogue phenomenon: almost 20% of contributions fit our general definition of CCs, with nearly 3% being the cross-person case most often studied. The results suggest that processing is word-by-word incremental, as splits can occur within syntactic constituents; however, some systematic differences between same- and cross-person cases indicate important dialogue-specific pragmatic effects. An experimental study then investigates these effects by artificially introducing CCs into multi-party text dialogue. Results suggest that CCs affect peoples expectations about who will speak next and whether other participants have formed a coalition or party.\n\nTogether, these studies suggest that CCs require an incremental processing mechanism that can provide a resource for constructing linguistic constituents that span multiple contributions and multiple participants. They also suggest the need to model higher-level dialogue units that have consequences for the organisation of turn-taking and for the development of a shared context.",
"issue": "1",
"language": "en",
"libraryCatalog": "journals.linguisticsociety.org",
"pages": "279-311",
"publicationTitle": "Dialogue & Discourse",
"shortTitle": "On Incrementality in Dialogue",
"url": "http://journals.linguisticsociety.org/elanguage/dad/article/view/362.html",
"volume": "2",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.ijdc.net/index.php/ijdc/article/view/8.2.5/",
"items": [
{
"itemType": "journalArticle",
"title": "Disciplinary differences in faculty research data management practices and perspectives",
"creators": [
{
"firstName": "Katherine G.",
"lastName": "Akers",
"creatorType": "author"
},
{
"firstName": "Jennifer",
"lastName": "Doty",
"creatorType": "author"
}
],
"date": "2013-11-21",
"DOI": "10.2218/ijdc.v8i2.263",
"ISSN": "1746-8256",
"abstractNote": "Academic librarians are increasingly engaging in data curation by providing infrastructure (e.g., institutional repositories) and offering services (e.g., data management plan consultations) to support the management of research data on their campuses. Efforts to develop these resources may benefit from a greater understanding of disciplinary differences in research data management needs. After conducting a survey of data management practices and perspectives at our research university, we categorized faculty members into four research domains—arts and humanities, social sciences, medical sciences, and basic sciences—and analyzed variations in their patterns of survey responses. We found statistically significant differences among the four research domains for nearly every survey item, revealing important disciplinary distinctions in data management actions, attitudes, and interest in support services. Serious consideration of both the similarities and dissimilarities among disciplines will help guide academic librarians and other data curation professionals in developing a range of data-management services that can be tailored to the unique needs of different scholarly researchers.",
"issue": "2",
"language": "en",
"libraryCatalog": "www.ijdc.net",
"pages": "5-26",
"publicationTitle": "International Journal of Digital Curation",
"rights": "Copyright (c)",
"url": "http://www.ijdc.net/index.php/ijdc/article/view/8.2.5/",
"volume": "8",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "DCC"
},
{
"tag": "IJDC"
},
{
"tag": "International Journal of Digital Curation"
},
{
"tag": "curation"
},
{
"tag": "digital curation"
},
{
"tag": "digital preservation"
},
{
"tag": "preservation"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://journals.ub.uni-heidelberg.de/index.php/ip/article/view/31976/26301",
"items": [
{
"itemType": "journalArticle",
"title": "Anleitung zur Organisation von Webkonferenzen am Beispiel der “Bibcast”-Aktion zum Bibliothekskongress 2016",
"creators": [
{
"firstName": "Daniel",
"lastName": "Beucke",
"creatorType": "author"
},
{
"firstName": "Arvid",
"lastName": "Deppe",
"creatorType": "author"
},
{
"firstName": "Tracy",
"lastName": "Hoffmann",
"creatorType": "author"
},
{
"firstName": "Felix",
"lastName": "Lohmeier",
"creatorType": "author"
},
{
"firstName": "Christof",
"lastName": "Rodejohann",
"creatorType": "author"
},
{
"firstName": "Pascal Ngoc Phu",
"lastName": "Tu",
"creatorType": "author"
}
],
"date": "2016-08-16",
"DOI": "10.11588/ip.2016.2.31976",
"ISSN": "2297-3249",
"abstractNote": "Zwischen dem 7. und 11. März 2016 fand der erste Bibcast, eine Webcast-Serie zu bibliothekarisch relevanten Themen statt. Aus der Idee heraus entstanden, abgelehnten Einreichungen für den Bibliothekskongress ein alternatives Forum zu bieten, hat sich der Bibcast als interessantes, flexibles und innovatives Format herausgestellt, das die Landschaft der Präsenzkonferenzen zukünftig sinnvoll ergänzen kann. In diesem Praxisbeitrag soll über Entstehung und Ablauf berichtet, Mehrwerte und Stolpersteine veranschaulicht und damit zugleich eine Anleitung zur Organisation von Webkonferenzen gegeben werden.",
"issue": "2",
"language": "de",
"libraryCatalog": "journals.ub.uni-heidelberg.de",
"publicationTitle": "Informationspraxis",
"rights": "Copyright (c) 2016 Daniel Beucke, Arvid Deppe, Tracy Hoffmann, Felix Lohmeier, Christof Rodejohann, Pascal Ngoc Phu Tu",
"url": "https://journals.ub.uni-heidelberg.de/index.php/ip/article/view/31976",
"volume": "2",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.mediaesthetics.org/index.php/mae/article/view/50",
"items": [
{
"itemType": "journalArticle",
"title": "World War II in American Movie Theatres from 1942-45: On Images of Civilian and Military Casualties and the Negotiation of a Shared Experience",
"creators": [
{
"firstName": "David",
"lastName": "Gaertner",
"creatorType": "author"
}
],
"date": "2016-06-23",
"DOI": "10.17169/mae.2016.50",
"ISSN": "2567-9309",
"abstractNote": "This study deals with the question of genre cinema in terms of an aesthetic experience that also accounts for a shared experience. The focus will be on the historical framework that constituted the emotional mobilization of the American public during World War II when newsreels and fictional war films were screened together as part of the staple program in movie theaters. Drawing on existing concepts of cinema and public sphere as well as on a phenomenological theory of spectator engagement this study sets out to propose a definition of the term moviegoing experience. On these grounds a historiographical account of the institutional practice of staple programming shall be explored together with a theoretical conceptualization of the spectator within in the realm of genre cinema.Diese Studie befragt das Genrekino als Modus ästhetischer Erfahrung in Hinblick auf die konkrete geteilten Erfahrung des Kinosaals. Der Fokus liegt auf den historischen Rahmenbedingen der emotionalen Mobilisierung der US-amerikanischen Öffentlichkeit während des Zweiten Weltkriegs und der gemeinsamen Vorführung von Kriegsnachrichten und fiktionalen Kriegsfilmen in Kinoprogrammen. Dabei wird auf Konzepte des Kinos als öffentlichem Raum und auf phänomenologische Theorien der Zuschaueradressierung Bezug genommen und ein integrative Definition der moviegoing experience entworfen. Dadurch ist es möglich, historiographische Schilderungen der institutionalisierten Praktiken der Kinoprogrammierung mit theoretischen Konzeptualisierungen der Zuschauererfahrung und des Genrekinos ins Verhältnis zu setzen.David Gaertner, M.A. is currently writing his dissertation on the cinematic experience of World War II and is a lecturer at the division of Film Studies at Freie Universität Berlin. From 2011 to 2014 he was research associate in the project “Staging images of war as a mediated experience of community“. He is co-editor of the book “Mobilisierung der Sinne. Der Hollywood-Kriegsfilm zwischen Genrekino und Historie” (Berlin 2013). // David Gaertner, M.A. arbeitet an einer Dissertation zur Kinoerfahrung im Zweiten Weltkrieg und lehrt am Seminar für Filmwissenschaft an der Freien Universität Berlin. 2011 bis 2014 war er wissenschaftlicher Mitarbeiter im DFG-Projekt „Inszenierungen des Bildes vom Krieg als Medialität des Gemeinschaftserlebens“. Er ist Mitherausgeber des Sammelbands “Mobilisierung der Sinne. Der Hollywood-Kriegsfilm zwischen Genrekino und Historie” (Berlin 2013).",
"issue": "1",
"language": "en",
"libraryCatalog": "www.mediaesthetics.org",
"publicationTitle": "mediaesthetics – Journal of Poetics of Audiovisual Images",
"rights": "Copyright (c) 2016 David Gaertner",
"shortTitle": "World War II in American Movie Theatres from 1942-45",
"url": "http://www.mediaesthetics.org/index.php/mae/article/view/50",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.qualitative-research.net/index.php/fqs/article/view/2477",
"items": [
{
"itemType": "journalArticle",
"title": "Computer Analysis of Qualitative Data in Literature and Research Performed by Polish Sociologists",
"creators": [
{
"firstName": "Jakub",
"lastName": "Niedbalski",
"creatorType": "author"
},
{
"firstName": "Izabela",
"lastName": "Ślęzak",
"creatorType": "author"
}
],
"date": "2016-07-28",
"DOI": "10.17169/fqs-17.3.2477",
"ISSN": "1438-5627",
"abstractNote": "The application of computer-assisted qualitative data analysis software (CAQDAS) in the field of qualitative sociology is becoming more popular. However, in Polish scientific research, the use of computer software to aid qualitative data analysis is uncommon. Nevertheless, the Polish qualitative research community is turning to CAQDAS software increasingly often. One noticeable result of working with CAQDAS is an increase in methodological awareness, which is reflected in higher accuracy and precision in qualitative data analysis. Our purpose in this article is to describe the qualitative researchers' environment in Poland and to consider the use of computer-assisted qualitative data analysis. In our deliberations, we focus mainly on the social sciences, especially sociology.URN: http://nbn-resolving.de/urn:nbn:de:0114-fqs160344",
"issue": "3",
"language": "en",
"libraryCatalog": "www.qualitative-research.net",
"publicationTitle": "Forum Qualitative Sozialforschung / Forum: Qualitative Social Research",
"rights": "Copyright (c) 2016 Jakub Niedbalski, Izabela Ślęzak",
"url": "https://www.qualitative-research.net/index.php/fqs/article/view/2477",
"volume": "17",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "CAQDAS"
},
{
"tag": "Polish sociology"
},
{
"tag": "computer-assisted qualitative data analysis"
},
{
"tag": "qualitative research"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://heiup.uni-heidelberg.de/journals/index.php/transcultural/article/view/23541",
"items": [
{
"itemType": "journalArticle",
"title": "On the Threshold of the \"Land of Marvels:\" Alexandra David-Neel in Sikkim and the Making of Global Buddhism",
"creators": [
{
"firstName": "Samuel",
"lastName": "Thévoz",
"creatorType": "author"
}
],
"date": "2016-07-21",
"DOI": "10.17885/heiup.ts.23541",
"ISSN": "2191-6411",
"abstractNote": "Alexandra David-Neel had already been acquainted with the Himalayas for a long time before the visits to Tibet in 1924 that would make her a mainstream figure of modern Buddhism. In fact, her encounter with Tibet and Tibetan Buddhism can be linked with Sikkim, where she arrived in 1912 after visiting India. An exploration of her Sikkim stay invites us to reconsider the self-fashioning of David-Neel’s image as an explorer of what she called the “land of marvels.” This paper highlights her construction of Sikkim as the locality that helped her create her singular vision of Tibet. Her encounters with local Buddhists in Sikkim provided her with the lofty images of a spiritual Tibet that she contributed to publicizing in the wake of the globalization of Buddhism.",
"issue": "1",
"language": "en",
"libraryCatalog": "heiup.uni-heidelberg.de",
"pages": "149-186",
"publicationTitle": "The Journal of Transcultural Studies",
"rights": "Copyright (c) 2016 Samuel Thevoz",
"shortTitle": "On the Threshold of the \"Land of Marvels",
"url": "https://heiup.uni-heidelberg.de/journals/index.php/transcultural/article/view/23541",
"volume": "7",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "World Literature"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.zeitschrift-fuer-balkanologie.de/index.php/zfb/article/view/423",
"items": [
{
"itemType": "journalArticle",
"title": "Nachträge zur Bio-Bibliographie von Ármin(ius) Vámbéry [V]",
"creators": [
{
"firstName": "Michael",
"lastName": "Knüppel",
"creatorType": "author"
}
],
"date": "2016-03-18",
"ISSN": "0044-2356",
"abstractNote": "Der Verfasser setzt mit diesem Beitrag seine Serie, in der Ergänzungen und Korrekturen zur Bio-Bibliographie des großen ungarischen Reisenden und Entdeckers sowie Pioniers der Zentralasienforschung Á. Vámbéry (1832–1913) gegeben wurden, fort. Zudem findet sich im Anhang zum bio-bibliographischen Teil des Beitrags ein Brief Vámbérys an den Ethnologen und Geographen Richard Andree (1835–1912).",
"issue": "2",
"language": "de",
"libraryCatalog": "www.zeitschrift-fuer-balkanologie.de",
"publicationTitle": "Zeitschrift für Balkanologie",
"rights": "Copyright (c) 2016 Harrassowitz Verlag",
"url": "http://www.zeitschrift-fuer-balkanologie.de/index.php/zfb/article/view/423",
"volume": "51",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://journals.ub.uni-heidelberg.de/index.php/miradas/article/view/22445",
"items": [
{
"itemType": "journalArticle",
"title": "Un desafío a la construcción de la identidad en la fotografía de Carlos Ruiz-Valarino",
"creators": [
{
"firstName": "Laura Bravo",
"lastName": "López",
"creatorType": "author"
}
],
"date": "2015-07-21",
"DOI": "10.11588/mira.2015.0.22445",
"ISSN": "2363-8087",
"abstractNote": "La obra fotográfica del artista puertorriqueño Carlos Ruiz-Valarino plantea un marcado contraste con una de las tradiciones más arraigadas en la historia del arte de esta isla del Caribe, que es la representación de una identidad cultural construida a través de símbolos. Recurriendo a la parodia a través de tres géneros pictóricos, como son el paisaje, el retrato y el objeto (en el marco de la naturaleza muerta), Ruiz-Valarino cuestiona los símbolos que reiteradamente se emplean en la construcción de un concepto tan controvertido como es el de identidad, conversando para ello con la tradición iconográfica de la fotografía antropológica y etnográfica, así como la de la ilustración científica o la caricatura.",
"language": "es",
"libraryCatalog": "journals.ub.uni-heidelberg.de",
"pages": "36-49",
"publicationTitle": "Miradas - Zeitschrift für Kunst- und Kulturgeschichte der Amérikas und der iberischen Halbinsel",
"rights": "Copyright (c) 2015",
"url": "https://journals.ub.uni-heidelberg.de/index.php/miradas/article/view/22445",
"volume": "2",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://ojs.ub.uni-konstanz.de/ba/article/view/6175",
"items": [
{
"itemType": "journalArticle",
"title": "Was kann Plagiatserkennungs-Software?",
"creators": [
{
"firstName": "Ansgar",
"lastName": "Schäfer",
"creatorType": "author"
}
],
"date": "2015-05-17",
"abstractNote": "-",
"issue": "99",
"language": "de",
"libraryCatalog": "ojs.ub.uni-konstanz.de",
"publicationTitle": "Bibliothek aktuell",
"rights": "Copyright (c) 2015 Willkommen bei Bibliothek aktuell",
"url": "https://ojs.ub.uni-konstanz.de/ba/article/view/6175",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.querelles.de/index.php/qjb/article/view/29",
"items": [
{
"itemType": "journalArticle",
"title": "Anonymität nach dem Tod: Subjektive Deutungen anonymer Bestattung und genderbezogene Differenzen",
"creators": [
{
"firstName": "Nicole",
"lastName": "Sachmerda-Schulz",
"creatorType": "author"
},
{
"firstName": "Paul Sebastian",
"lastName": "Ruppel",
"creatorType": "author"
}
],
"date": "2014-04-10",
"DOI": "10.15461/29",
"ISSN": "2191-9127",
"abstractNote": "Anonyme Bestattungen haben in den letzten Jahrzehnten in Deutschland stark zugenommen. Damit hat sich neben traditionellen Formen der Bestattung und Grabgestaltung eine Beisetzungsform etablieren können, bei der das Grab nicht namentlich gekennzeichnet und daher für die Öffentlichkeit sowie häufig auch für Angehörige nicht auffindbar ist. Der Frage, was es bedeutet, bei der Grabwahl auf die Namensnennung und damit auf die Lokalisierung der persönlichen Grabstätte zu verzichten, wird im Beitrag anhand offener Leitfadeninterviews mit Personen, die sich für eine anonyme Bestattung entschieden haben, nachgegangen. In der Analyse der im Rahmen einer Grounded-Theory-Studie erhobenen und ausgewerteten Daten werden Aspekte deutlich, die sich zum Beispiel um Kontrollierbarkeit eigener Belange bis über den Tod hinaus, ein auf Inklusion und Exklusion abzielendes Handeln sowie scheinbar paradoxe Momente von Individualitätsstreben drehen. Zudem zeigen sich hier auffällige Differenzen zwischen Frauen und Männern: Die Präsentation bzw. Repräsentation von Weltanschauungen und Werthaltungen stellt für die Interviewpartner eine Triebfeder für die Entscheidung für eine Anonymbestattung dar. Aussagen der Interviewpartnerinnen indes verweisen darauf, dass diese Entscheidung primär einer pragmatischen und am sozialen Umfeld ausgerichteten Orientierung folgt.",
"issue": "0",
"language": "de",
"libraryCatalog": "www.querelles.de",
"publicationTitle": "QJB – Querelles. Jahrbuch für Frauen- und Geschlechterforschung",
"rights": "Copyright (c) 2014 Nicole Sachmerda-Schulz, Paul Sebastian Ruppel",
"shortTitle": "Anonymität nach dem Tod",
"url": "http://www.querelles.de/index.php/qjb/article/view/29",
"volume": "17",
"attachments": [],
"tags": [
{
"tag": "Anonymität"
},
{
"tag": "Bestattung"
},
{
"tag": "Genderdifferenzen"
},
{
"tag": "Säkularisierung"
},
{
"tag": "Tod"
},
{
"tag": "anonymity"
},
{
"tag": "burial"
},
{
"tag": "death"
},
{
"tag": "gender difference"
},
{
"tag": "secularisation"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.ajol.info/index.php/thrb/article/view/63347",
"items": [
{
"itemType": "journalArticle",
"title": "Knowledge, treatment seeking and preventive practices in respect of malaria among patients with HIV at the Lagos University Teaching Hospital",
"creators": [
{
"firstName": "Akinwumi A.",
"lastName": "Akinyede",
"creatorType": "author"
},
{
"firstName": "Alade",
"lastName": "Akintonwa",
"creatorType": "author"
},
{
"firstName": "Charles",
"lastName": "Okany",
"creatorType": "author"
},
{
"firstName": "Olufunsho",
"lastName": "Awodele",
"creatorType": "author"
},
{
"firstName": "Duro C.",
"lastName": "Dolapo",
"creatorType": "author"
},
{
"firstName": "Adebimpe",
"lastName": "Adeyinka",
"creatorType": "author"
},
{
"firstName": "Ademola",
"lastName": "Yusuf",
"creatorType": "author"
}
],
"date": "2011-10-17",
"DOI": "10.4314/thrb.v13i4.63347",
"ISSN": "1821-9241",
"abstractNote": "The synergistic interaction between Human Immunodeficiency virus (HIV) disease and Malaria makes it mandatory for patients with HIV to respond appropriately in preventing and treating malaria. Such response will help to control the two diseases. This study assessed the knowledge of 495 patients attending the HIV clinic, in Lagos University Teaching Hospital, Nigeria. Their treatment seeking, preventive practices with regards to malaria, as well as the impact of socio – demographic / socio - economic status were assessed. Out of these patients, 245 (49.5 %) used insecticide treated bed nets; this practice was not influenced by socio – demographic or socio – economic factors. However, knowledge of the cause, knowledge of prevention of malaria, appropriate use of antimalarial drugs and seeking treatment from the right source increased with increasing level of education (p < 0.05). A greater proportion of the patients, 321 (64.9 %) utilized hospitals, pharmacy outlets or health centres when they perceived an attack of malaria. Educational intervention may result in these patients seeking treatment from the right place when an attack of malaria fever is perceived.",
"issue": "4",
"language": "en",
"libraryCatalog": "www.ajol.info",
"publicationTitle": "Tanzania Journal of Health Research",
"rights": "Copyright (c)",
"url": "https://www.ajol.info/index.php/thrb/article/view/63347",
"volume": "13",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "HIV patients"
},
{
"tag": "Nigeria"
},
{
"tag": "knowledge"
},
{
"tag": "malaria"
},
{
"tag": "prevention"
},
{
"tag": "treatment"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://ejournals.library.vanderbilt.edu/index.php/ameriquests/article/view/220",
"items": [
{
"itemType": "journalArticle",
"title": "Canadian Literature in the Early Twenty-First Century: The Emergence of an Inter-American Perspective",
"creators": [
{
"firstName": "Earl E.",
"lastName": "Fitz",
"creatorType": "author"
}
],
"date": "2011-07-28",
"DOI": "10.15695/amqst.v8i1.220",
"ISSN": "1553-4316",
"abstractNote": "Historically, Canadian literature has been chary of entering too far into the new discipline of inter-American literary study. Rightly concerned about the danger of blurring its identity as a distinctive national literature (one made up, as is well known, of two great strands, the French and the English), Canadian writing has, however, come of age, both nationally and internationally. One dramatic aspect of this transformation is that we now have mounting evidence that both English and French Canadian writers are actively engaging with the literatures and cultures of their hemispheric neighbors. By extending the methodologies of Comparative Literature to the inter-American paradigm, Canadian writers, critics, and literary historians are finding ways to maintain their status as members of a unique and under-appreciated national literature while also entering into the kinds of comparative studies that demonstrate their New World ties as well.",
"issue": "1",
"language": "en",
"libraryCatalog": "ejournals.library.vanderbilt.edu",
"publicationTitle": "AmeriQuests",
"rights": "Copyright (c) 2015 AmeriQuests",
"shortTitle": "Canadian Literature in the Early Twenty-First Century",
"url": "https://ejournals.library.vanderbilt.edu/index.php/ameriquests/article/view/220",
"volume": "8",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://jms.uwinnipeg.ca/index.php/jms/article/view/1369",
"items": [
{
"itemType": "journalArticle",
"title": "Mennonites in Unexpected Places: Sociologist and Settler in Latin America",
"creators": [
{
"firstName": "Ben",
"lastName": "Nobbs-Thiessen",
"creatorType": "author"
}
],
"date": "2010",
"ISSN": "1918-610X",
"language": "en",
"libraryCatalog": "jms.uwinnipeg.ca",
"pages": "203-224",
"publicationTitle": "Journal of Mennonite Studies",
"rights": "Copyright (c)",
"shortTitle": "Mennonites in Unexpected Places",
"url": "http://jms.uwinnipeg.ca/index.php/jms/article/view/1369",
"volume": "28",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://journals.sfu.ca/jmde/index.php/jmde_1/article/view/100/115",
"items": [
{
"itemType": "journalArticle",
"title": "The Value of Evaluation Standards: A Comparative Assessment",
"creators": [
{
"firstName": "Robert",
"lastName": "Picciotto",
"creatorType": "author"
}
],
"date": "2005",
"ISSN": "1556-8180",
"issue": "3",
"language": "en",
"libraryCatalog": "journals.sfu.ca",
"pages": "30-59",
"publicationTitle": "Journal of MultiDisciplinary Evaluation",
"rights": "Copyright (c)",
"shortTitle": "The Value of Evaluation Standards",
"url": "https://journals.sfu.ca/jmde/index.php/jmde_1/article/view/100",
"volume": "2",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://jecs.pl/index.php/jecs/article/view/551",
"items": [
{
"itemType": "journalArticle",
"title": "PREPARING FUTURE LEADERS OF THEIR RACES -THE POLITICAL FUNCTION OF CHILDREN’S CHARACTERS IN CONTEMPORARY AFRICAN AMERICAN PICTURE-BOOKS",
"creators": [
{
"firstName": "Ewa",
"lastName": "Klęczaj-Siara",
"creatorType": "author"
}
],
"date": "2019-06-30",
"DOI": "10.15503/jecs20191.173.184",
"ISSN": "2081-1640",
"abstractNote": "Aim. The aim of the article is to analyse the ways African American children’s characters are constructed in selected picture-books and to determine whether they have any impact on the conduct of contemporary black youth facing discrimination in their own lives. It also argues that picture-books are one of the most influential media in the representation of racial problems.Methods. The subjects of the study are picture-books. The analysis pertains to the visual and the verbal narrative of the books, with a special emphasis being placed on the interplay between text and image as well as on the ways the meaning of the books is created. The texts are analysed using a number of existing research methods used for examining the picture-book format. Results. The article shows that the actions of selected children’s characters, whether real or imaginary, may serve as an incentive for contemporary youth to struggle for equal rights and contribute to the process of racial integration on a daily basis.Conclusions. The results can be considered in the process of establishing educational curricula for students from minority groups who need special literature that would empower them to take action and join in the efforts of adult members of their communities.",
"issue": "1",
"language": "en",
"libraryCatalog": "jecs.pl",
"pages": "173-184",
"publicationTitle": "Journal of Education Culture and Society",
"rights": "Copyright (c) 2019 Ewa Klęczaj-Siara",
"url": "https://jecs.pl/index.php/jecs/article/view/551",
"volume": "10",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "political agents"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://journal.meteohistory.org/index.php/hom/article/view/79",
"items": [
{
"itemType": "journalArticle",
"title": "Trajectories and reconversions of the Center for Weather Forecasting and Climate Studies (CPTEC): Forming the meteorological science elite in Brazil",
"creators": [
{
"firstName": "Thales de",
"lastName": "Andrade",
"creatorType": "author"
},
{
"firstName": "Paulo",
"lastName": "Escada",
"creatorType": "author"
}
],
"date": "2021-05-18",
"ISSN": "1555-5763",
"abstractNote": "The process that created the Center for Weather Forecasting and Climate Studies (CPTEC) in Brazil in the 1980s and 90s, which introduced Numerical Weather Prediction (NWP) models, was also a moment for reconversion of a meteorological science elite in the country. This double-sided process occurred in view of a series of favorable historical conditions, such as the institutionalization of space research, as well as of the implementation of new scientific policies in Brazil. CPTEC was formed by young scientists from the National Institute for Space Research (INPE) who had recently obtained their doctoral degrees abroad. While defending the modernization of Brazilian meteorology, through the creation of this new meteorological center, these scientists, based on their trajectories and attributes of scientific excellence, constituted a group of science elite. The introduction of research on climate change would be a new opportunity for recognition of part of these researchers as members of this elite. This study describes how the trajectories of certain scientists shaped their careers, producing what we call reconversion of science elites, as well as the scientific field in the implementation of the first NWP center in Brazil.",
"archiveLocation": "Brazil, 1970-2000",
"language": "en",
"libraryCatalog": "journal.meteohistory.org",
"pages": "1-23",
"publicationTitle": "History of Meteorology",
"rights": "Copyright (c) 2021 Thales de Andrade, Paulo Escada",
"shortTitle": "Trajectories and reconversions of the Center for Weather Forecasting and Climate Studies (CPTEC)",
"url": "https://journal.meteohistory.org/index.php/hom/article/view/79",
"volume": "10",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "scientific elites"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://langsci-press.org/search/search?query=structure",
"items": "multiple"
},
{
"type": "web",
"url": "https://langsci-press.org/catalog/book/189",
"items": [
{
"itemType": "book",
"title": "Advances in formal Slavic linguistics 2016",
"creators": [
{
"firstName": "Denisa",
"lastName": "Lenertová",
"creatorType": "author"
},
{
"firstName": "Roland",
"lastName": "Meyer",
"creatorType": "author"
},
{
"firstName": "Radek",
"lastName": "Šimík",
"creatorType": "author"
},
{
"firstName": "Luka",
"lastName": "Szucsich",
"creatorType": "author"
},
{
"firstName": "Julia",
"lastName": "Bacskai-Atkari",
"creatorType": "author"
},
{
"firstName": "Tatiana",
"lastName": "Bondarenko",
"creatorType": "author"
},
{
"firstName": "Olga",
"lastName": "Borik",
"creatorType": "author"
},
{
"firstName": "Berit",
"lastName": "Gehrke",
"creatorType": "author"
},
{
"firstName": "Mojmír",
"lastName": "Dočekal",
"creatorType": "author"
},
{
"firstName": "Marcin",
"lastName": "Wągiel",
"creatorType": "author"
},
{
"firstName": "Guillaume",
"lastName": "Enguehard",
"creatorType": "author"
},
{
"firstName": "Anja",
"lastName": "Gattnar",
"creatorType": "author"
},
{
"firstName": "Robin",
"lastName": "Hörnig",
"creatorType": "author"
},
{
"firstName": "Johanna",
"lastName": "Heininger",
"creatorType": "author"
},
{
"firstName": "Peđa",
"lastName": "Kovačević",
"creatorType": "author"
},
{
"firstName": "Tanja",
"lastName": "Milićev",
"creatorType": "author"
},
{
"firstName": "Ivona",
"lastName": "Kučerová",
"creatorType": "author"
},
{
"firstName": "Franc",
"lastName": "Marušič",
"creatorType": "author"
},
{
"firstName": "Petra",
"lastName": "Mišmaš",
"creatorType": "author"
},
{
"firstName": "Vesna",
"lastName": "Plesničar",
"creatorType": "author"
},
{
"firstName": "Tina",
"lastName": "Šuligoj",
"creatorType": "author"
},
{
"firstName": "Emilia",
"lastName": "Melara",
"creatorType": "author"
},
{
"firstName": "Krzysztof",
"lastName": "Migdalski",
"creatorType": "author"
},
{
"firstName": "Kristina",
"lastName": "Mihajlović",
"creatorType": "author"
},
{
"firstName": "Małgorzata",
"lastName": "Ćavar",
"creatorType": "author"
},
{
"firstName": "Olav",
"lastName": "Mueller-Reichau",
"creatorType": "author"
},
{
"firstName": "Andrew",
"lastName": "Murphy",
"creatorType": "author"
},
{
"firstName": "Zorica",
"lastName": "Puškar",
"creatorType": "author"
},
{
"firstName": "Matías Guzmán",
"lastName": "Naranjo",
"creatorType": "author"
},
{
"firstName": "Vanessa",
"lastName": "Petroj",
"creatorType": "author"
},
{
"firstName": "Gereon",
"lastName": "Müller",
"creatorType": "author"
},
{
"firstName": "Teodora",
"lastName": "Radeva-Bork",
"creatorType": "author"
},
{
"firstName": "Jelena",
"lastName": "Runić",
"creatorType": "author"
},
{
"firstName": "Elena",
"lastName": "Titov",
"creatorType": "author"
},
{
"firstName": "Maria D.",
"lastName": "Vasilyeva",
"creatorType": "author"
},
{
"firstName": "Ekaterina",
"lastName": "Vostrikova",
"creatorType": "author"
},
{
"firstName": "Karolina",
"lastName": "Zuchewicz",
"creatorType": "author"
}
],
"date": "2018-01-08",
"ISBN": "9783961101276",
"abstractNote": "Advances in Formal Slavic Linguistics 2016 initiates a new series of collective volumes on formal Slavic linguistics. It presents a selection of high quality papers authored by young and senior linguists from around the world and contains both empirically oriented work, underpinned by up-to-date experimental methods, as well as more theoretically grounded contributions. The volume covers all major linguistic areas, including morphosyntax, semantics, pragmatics, phonology, and their mutual interfaces. The particular topics discussed include argument structure, word order, case, agreement, tense, aspect, clausal left periphery, or segmental phonology. The topical breadth and analytical depth of the contributions reflect the vitality of the field of formal Slavic linguistics and prove its relevance to the global linguistic endeavour. Early versions of the papers included in this volume were presented at the conference on Formal Description of Slavic Languages 12 or at the satellite Workshop on Formal and Experimental Semantics and Pragmatics, which were held on December 7-10, 2016 in Berlin.",
"language": "en",
"libraryCatalog": "langsci-press.org",
"publisher": "Language Science Press",
"rights": "Copyright (c) 2018 Language Science Press",
"url": "https://langsci-press.org/catalog/view/189/1065/1365-1",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://ebooks.au.dk/aul/catalog/book/421",
"items": [
{
"itemType": "book",
"title": "Overgange – anbragte unges veje fra skole til uddannelse",
"creators": [
{
"firstName": "Søren",
"lastName": "Langager",
"creatorType": "author"
},
{
"firstName": "Anna Kathrine",
"lastName": "Frørup",
"creatorType": "author"
},
{
"firstName": "André",
"lastName": "Torre",
"creatorType": "author"
},
{
"firstName": "Charlotte Lange",
"lastName": "Hald",
"creatorType": "author"
}
],
"date": "2021-06-22",
"ISBN": "9788776845124",
"abstractNote": "Dette er den afsluttende rapport om projektet ’Lær for Livet’, som er et projekt initieret af Egmont Fonden. Via blandt andet årlige intensive læringscamps og løbende mentorordninger som supplement til skolens læringsmiljø har projektet haft som overordnet mål at forbedre anbragte børns skolefaglige præstationer og herigennem øge antallet af anbragte unge, der starter på en ungdomsuddannelse efter skolen. I tilknytning til projektet blev etableret et følgeforskningsprojekt, som blev varetaget af DPU, Aarhus Universitet, der fulgte projektet i årene 2014-2020.",
"extra": "DOI: 10.7146/aul.421",
"language": "da",
"libraryCatalog": "ebooks.au.dk",
"rights": "Ophavsret (c) 2021 Søren Langager, Anna Kathrine Frørup, André Torre, Charlotte Lange Hald (Forfatter)",
"url": "https://ebooks.au.dk/aul/catalog/book/421",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://munispace.muni.cz/library/catalog/book/1986",
"items": [
{
"itemType": "book",
"title": "Tomáškovy dny 2021",
"creators": [
{
"firstName": "Lukáš",
"lastName": "Vacek",
"creatorType": "author"
},
{
"firstName": "Dominika",
"lastName": "Kleknerová",
"creatorType": "author"
}
],
"date": "2021",
"abstractNote": "Tomáškovy dny mladých mikrobiologů jsou konferencí, kterou od roku 1992 každoročně organizuje Mikrobiologický ústav Lékařské fakulty Masarykovy univerzity a Fakultní nemocnice u sv. Anny v Brně ve spolupráci s Československou společností mikrobiologickou. Dalšími oficiálními pořadateli konference jsou Společnost pro mikrobiologii a epidemiologii České lékařské společnosti J. E. Purkyně a Společnost pro lékařskou mikrobiologii ČLS. Jedinou podmínkou konference je, že referující autor (příp. hlavní autor posteru) musí být mladší 35 let.",
"language": "cze,eng,slo",
"libraryCatalog": "munispace.muni.cz",
"publisher": "Masarykova univerzita",
"url": "https://munispace.muni.cz/library/catalog/book/1986",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "E-knihy"
},
{
"tag": "Elektronické knihy"
},
{
"tag": "Flipbook"
},
{
"tag": "Knihy"
},
{
"tag": "Masarykova univerzita"
},
{
"tag": "Munipress"
},
{
"tag": "Munispace"
},
{
"tag": "Open Access"
},
{
"tag": "Čítárna"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://llibres.urv.cat/index.php/purv/catalog/book/467",
"items": [
{
"itemType": "book",
"title": "Recerca en Humanitats 2020",
"creators": [
{
"firstName": "Maria Bargalló",
"lastName": "Escrivà",
"creatorType": "author"
}
],
"date": "2021-05-25",
"ISBN": "9788484249115",
"abstractNote": "Aquest volum inclou els onze treballs corresponents a les presentacions realitzades a la cinquena edició de les Jornades del Doctorand. Aquests textos constitueixen una nova mostra de la recerca en Humanitats en els diversos àmbits d’investigació que inclou el nostre programa; així els estudis comprenen qüestions d’història i història de l’art, de llengua i literatura.\n* * *\nSUMARIIntroduccióSalazar y la guerra civil española: la discreta ayuda portuguesa al bando nacional (1936-1939), David Almeida de Andrade Animal Metaphors through Subtitling in Family Guy, Mariazell-Eugènia Bosch Fábregas Hacia una formalización para la detección automática de la violencia lingüística en las redes sociales, Susana Campillo Muñoz Les cultures polítiques del socialisme espanyol en la Transició, Gerard Cintas Hernández La cultura pop a Espanya, exemple de dissidència política i crítica social durant la dictadura franquista, Sara Espinós Ferrer Mujeres y madres de Barcino en los epitafios funerarios. Siglos I-II d.C. , Montse Guallarte Salvat La Teoría de las Funciones Lexicográficas como base para la definición de una app para entrenadores de fútbol, Ángel Huete-García «Furtivament al marge»: corporalitat i abjecció a les poètiques catalanes de la segona dècada del segle XXI, Meritxell Matas Revilla Una època de canvis i continuïtats. Societat i cultura a Tarragona després de la Guerra del Francès (1814-1820) , Carlos Moruno Moyano La huella estilística del traductor: léxico borgiano en la traducción de Orlando de Woolf, Nerea Tera Faba Extravagàncies escèniques i nous formats artístics a Tarragona durant l’últim terç del segle XIX, M. Teresa Velasco Osca ",
"language": "en",
"libraryCatalog": "llibres.urv.cat",
"rights": "Copyright (c) 2021 Publicacions URV",
"url": "http://llibres.urv.cat/index.php/purv/catalog/book/467",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://preprints.scielo.org/index.php/scielo/preprint/view/2577",
"items": [
{
"itemType": "preprint",
"title": "RETRATO DAS NARRATIVAS DE MAES UNIVERSITARIAS NO CONTEXTO ACADÊMICO",
"creators": [
{
"firstName": "Elenir Lindaura da",
"lastName": "Silva",
"creatorType": "author"
},
{
"firstName": "Priscila",
"lastName": "Benitez",
"creatorType": "author"
},
{
"firstName": "Táhcita Medrado",
"lastName": "Mizael",
"creatorType": "author"
},
{
"firstName": "Mara Silvia",
"lastName": "Pasian",
"creatorType": "author"
}
],
"date": "2021-07-05",
"DOI": "10.1590/SciELOPreprints.2577",
"abstractNote": "SciELO Preprints Collection is an integral part of SciELO, an international cooperation program aiming at the development of open access scientific communication covering all areas of knowledge. It operates as a collection of non-peer-reviewed manuscripts within the SciELO Network of national and thematic collection of journals.",
"language": "pt",
"libraryCatalog": "preprints.scielo.org",
"repository": "SciELO Preprints",
"url": "https://preprints.scielo.org/index.php/scielo/preprint/view/2577",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "college education"
},
{
"tag": "gender"
},
{
"tag": "inclusion"
},
{
"tag": "maternity"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://preprints.scielo.org/index.php/scielo/search/search?query=efl&dateFromYear=&dateFromMonth=&dateFromDay=&dateToYear=&dateToMonth=&dateToDay=&authors=",
"items": "multiple"
},
{
"type": "web",
"url": "https://kurdishstudies.net/journal/ks/issue/view/59",
"items": "multiple"
},
{
"type": "web",
"url": "https://jnp.journals.yorku.ca/index.php/default",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.journals.aiac.org.au/index.php/IJALEL/issue/view/273",
"items": "multiple"
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://www\.researchsquare\.com/(article|browse)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/article/') && doc.querySelector('[name="citation_title"]')) {
return "preprint";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('a.article-title[href*="/article/"]');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
async function doWeb(doc, url) {
if (detectWeb(doc, url) == 'multiple') {
let items = await Zotero.selectItems(getSearchResults(doc, false));
if (!items) return;
for (let url of Object.keys(items)) {
await scrape(await requestDocument(url));
}
}
else {
await scrape(doc, url);
}
}
async function scrape(doc, url = doc.location.href) {
let bareURL = url.replace(/[?#].*/, '');
let risURL = bareURL
.replace('researchsquare.com/article', 'researchsquare.com/api/article')
+ '.ris';
let pdfURL = bareURL + '.pdf';
let text = await requestText(risURL);
var translator = Zotero.loadTranslator("import");
translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7");
translator.setString(text);
translator.setHandler("itemDone", function (obj, item) {
if (!item.title) {
// ...no title in the RIS sometimes? odd
item.title = attr(doc, 'meta[property="og:title"]', 'content');
}
item.itemType = 'preprint';
// research square assigns preprints publication titles based on
// where they've been submitted to, which isn't really right from
// zotero's point of view
delete item.publicationTitle;
delete item.journalAbbreviation;
item.repository = "Research Square";
item.attachments.push({
url: pdfURL,
title: "Full Text PDF",
mimeType: "application/pdf"
});
for (let creator of item.creators) {
if (creator.fieldMode == 1) {
delete creator.fieldMode;
Object.assign(creator,
ZU.cleanAuthor(creator.lastName, creator.creatorType));
}
}
item.url = bareURL;
item.complete();
});
translator.translate();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.researchsquare.com/article/rs-629724/v1",
"items": [
{
"itemType": "preprint",
"title": "Peptide formation as on the early Earth: from amino acid mixtures to peptides in sulphur dioxide",
"creators": [
{
"lastName": "Trapp",
"creatorType": "author",
"firstName": "Oliver"
},
{
"lastName": "Sauer",
"creatorType": "author",
"firstName": "Fabian"
},
{
"lastName": "Haas",
"creatorType": "author",
"firstName": "Maren"
},
{
"lastName": "Sydow",
"creatorType": "author",
"firstName": "Constanze"
},
{
"lastName": "Siegle",
"creatorType": "author",
"firstName": "Alexander"
},
{
"lastName": "Lauer",
"creatorType": "author",
"firstName": "Christoph"
}
],
"date": "2024-03-21",
"DOI": "10.21203/rs.3.rs-629724/v1",
"abstractNote": "The formation of peptide bonds is one of the most important biochemical reaction steps. Without the development of structurally and catalytically active polymers, there would be no life on our planet. Intensive research is being conducted on possible reaction pathways for the formation of complex peptides on the early Earth. Salt-induced peptide formation (SIPF) by metal catalysis is one possible pathway for abiotic peptide synthesis. The high salt concentration supports dehydration in this process. However, the formation of large, complex oligomer systems is prevented by the high thermodynamic barrier of peptide condensation in aqueous solution. Liquid sulphur dioxide proves to be a superior alternative for copper-catalysed peptide condensation. Compared to water, the amino acids are activated in sulphur dioxide, which leads to the incorporation of all 20 proteinogenic amino acids into the resulting proteins and thus to a large variety of products. Strikingly, even extremely low initial reactant concentrations of only 50 mM are sufficient for extensive peptide formation, leading to an overall yield of 2.9% for dialanine in 7 days. The reactions carried out at room temperature and the successful use of the Hadean mineral covellite as a catalyst, suggest a volcanic environment for the formation of the peptide world on early Earth as a likely scenario.",
"libraryCatalog": "Research Square",
"shortTitle": "Peptide formation as on the early Earth",
"url": "https://www.researchsquare.com/article/rs-629724/v1",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.researchsquare.com/article/rs-624370/v1",
"items": [
{
"itemType": "preprint",
"title": "A dual mechanism of action of AT-527 against SARS-CoV-2 polymerase",
"creators": [
{
"lastName": "Canard",
"creatorType": "author",
"firstName": "Bruno"
},
{
"lastName": "Shannon",
"creatorType": "author",
"firstName": "Ashleigh"
},
{
"lastName": "Fattorini",
"creatorType": "author",
"firstName": "Veronique"
},
{
"lastName": "Sama",
"creatorType": "author",
"firstName": "Bhawna"
},
{
"lastName": "Selisko",
"creatorType": "author",
"firstName": "Barbara"
},
{
"lastName": "Feracci",
"creatorType": "author",
"firstName": "Mikael"
},
{
"lastName": "Falcou",
"creatorType": "author",
"firstName": "Camille"
},
{
"lastName": "Gauffre",
"creatorType": "author",
"firstName": "Pierre"
},
{
"lastName": "El-Kazzi",
"creatorType": "author",
"firstName": "Priscila"
},
{
"lastName": "Decroly",
"creatorType": "author",
"firstName": "Etienne"
},
{
"lastName": "Alvarez",
"creatorType": "author",
"firstName": "Karine"
},
{
"lastName": "Eydoux",
"creatorType": "author",
"firstName": "Cecilia"
},
{
"lastName": "Guillemot",
"creatorType": "author",
"firstName": "Jean-Claude"
},
{
"lastName": "Moussa",
"creatorType": "author",
"firstName": "Adel"
},
{
"lastName": "Good",
"creatorType": "author",
"firstName": "Steven"
},
{
"lastName": "Colla",
"creatorType": "author",
"firstName": "Paolo La"
},
{
"lastName": "Lin",
"creatorType": "author",
"firstName": "Kai"
},
{
"lastName": "Sommadossi",
"creatorType": "author",
"firstName": "Jean-Pierre"
},
{
"lastName": "Zhu",
"creatorType": "author",
"firstName": "Yingxao"
},
{
"lastName": "Yan",
"creatorType": "author",
"firstName": "Xiaodong"
},
{
"lastName": "Shi",
"creatorType": "author",
"firstName": "Hui"
},
{
"lastName": "Ferron",
"creatorType": "author",
"firstName": "Francois"
},
{
"lastName": "Delpal",
"creatorType": "author",
"firstName": "Adrien"
}
],
"date": "2024-03-21",
"DOI": "10.21203/rs.3.rs-624370/v1",
"abstractNote": "A worldwide effort is ongoing to discover drugs against the Severe Acute Respiratory Syndrome coronavirus type 2 (SARS-CoV-2), which has so far caused >3.5 million fatalities (https://covid19.who.int/). The virus essential RNA-dependent RNA polymerase complex is targeted by several nucleoside/tide analogues whose mechanisms of action and clinical potential are currently evaluated. The guanosine analogue AT-527, a double prodrug of its 5'-triphosphate AT-9010, is currently in phase III clinical trials as a COVID19 treatment. Here we report the cryo-EM structure at 2.98 Å resolution of the SARS-CoV-2 nsp12-nsp7-(nsp8)2 complex with RNA showing AT-9010 bound at three sites of nsp12. At the RdRp active-site, one AT-9010 is incorporated into the RNA product. Its 2'-methyl group prevents correct alignment of a second AT-9010 occupying the incoming NTP pocket. The 2'-F, 2'-methyl 3'-OH ribose scaffold explains the non-obligate RNA chain-termination potency of this NA series for both HCV NS5 and SARS-CoV RTCs. A third AT-9010 molecule 5'-diphosphate binds to a coronavirus-specific pocket in the nsp12 N-terminus NiRAN domain, a SelO pseudo-kinase structural and functional homologue. This unique binding mode impedes NiRAN-mediated UMPylation of SARS-CoV-2 nsp8 and nsp9 proteins. Our results suggest a mechanism of action for AT-527 in line with a therapeutic use for COVID19.",
"libraryCatalog": "Research Square",
"url": "https://www.researchsquare.com/article/rs-624370/v1",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.researchsquare.com/browse?offset=0&status=all&title=test",
"items": "multiple"
}
]
/** END TEST CASES **/
{"getCollections":true}{"exportCharset":"UTF-8","exportNotes":false,"exportFileData":false,"useJournalAbbreviation":false}100Simon Kornblith, Richard Karnesky and Anders Johanssonbib/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2019 Simon Kornblith, Richard Karnesky and Anders Johansson
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
// %a = first listed creator surname
// %y = year
// %t = first word of title
var citeKeyFormat = "%a_%t_%y";
var fieldMap = {
location: "place",
chapter: "chapter",
edition: "edition",
title: "title",
volume: "volume",
rights: "rights", // it's rights in zotero nowadays
isbn: "ISBN",
issn: "ISSN",
url: "url",
doi: "DOI",
series: "series",
shorttitle: "shortTitle",
holder: "assignee",
abstract: "abstractNote",
volumes: "numberOfVolumes",
version: "version",
eventtitle: "conferenceName",
pages: "pages",
pagetotal: "numPages"
};
// more conversions done below with special rules
/**
* Identifiers from item.extra
* Copied from BibTeX
*/
// Exported in BibTeX and BibLaTeX
var revExtraIds = {
LCCN: 'lccn',
MR: 'mrnumber',
Zbl: 'zmnumber',
PMCID: 'pmcid',
PMID: 'pmid',
DOI: 'doi'
};
// Imported by BibTeX. Exported by BibLaTeX only
var revEprintIds = {
// eprinttype: Zotero label
// From BibLaTeX manual
arXiv: 'arxiv', // Sorry, but no support for eprintclass yet
JSTOR: 'jstor',
// PMID: 'pubmed', // Not sure if we should do this instead
HDL: 'hdl',
GoogleBooksID: 'googlebooks'
};
function parseExtraFields(extra) {
var lines = extra.split(/[\r\n]+/);
var fields = [];
for (var i = 0; i < lines.length; i++) {
var rec = { raw: lines[i] };
var line = lines[i].trim();
var splitAt = line.indexOf(':');
if (splitAt > 1) {
rec.field = line.substr(0, splitAt).trim();
rec.value = line.substr(splitAt + 1).trim();
}
fields.push(rec);
}
return fields;
}
function extraFieldsToString(extra) {
var str = '';
for (var i = 0; i < extra.length; i++) {
if (!extra[i].raw) {
str += '\n' + extra[i].field + ': ' + extra[i].value;
}
else {
str += '\n' + extra[i].raw;
}
}
return str.substr(1);
}
// POTENTIAL ISSUES
// accessDate:"accessDate", //only written on attached webpage snapshots by zotero
var zotero2biblatexTypeMap = {
book: "book",
bookSection: "incollection",
journalArticle: "article",
magazineArticle: "article",
newspaperArticle: "article",
thesis: "thesis",
letter: "letter",
manuscript: "unpublished",
interview: "misc",
film: "movie",
artwork: "artwork",
webpage: "online",
conferencePaper: "inproceedings",
report: "report",
bill: "legislation",
case: "jurisdiction",
hearing: "jurisdiction",
patent: "patent",
statute: "legislation",
email: "letter",
map: "misc",
blogPost: "online",
instantMessage: "misc",
forumPost: "online",
audioRecording: "audio",
presentation: "unpublished",
videoRecording: "video",
tvBroadcast: "misc",
radioBroadcast: "misc",
podcast: "audio",
computerProgram: "software",
document: "misc",
encyclopediaArticle: "inreference",
dictionaryEntry: "inreference"
};
var alwaysMap = {
"|": "{\\textbar}",
"<": "{\\textless}",
">": "{\\textgreater}",
"~": "{\\textasciitilde}",
"^": "{\\textasciicircum}",
"\\": "{\\textbackslash}",
"{": "\\{",
"}": "\\}"
};
// to map ISO language codes (tries to follow IETF RFC5646) to babel
// language codes used in biblatex. Taken from Babel manual 3.9h.
var babelLanguageMap = {
af: "afrikaans",
ar: "arabic",
// bahasa (see malay and indonesian)
eu: "basque",
br: "breton",
bg: "bulgarian",
ca: "catalan",
hr: "croatian",
cz: "czech",
da: "danish",
nl: "dutch",
en: {
"": "english", // same as american
US: "american",
GB: "british",
CA: "canadian",
AU: "australian",
NZ: "newzealand"
},
eo: "esperanto",
et: "estonian",
// ethiop (package for many languages)
fa: "farsi",
fi: "finnish",
fr: {
"": "french",
CA: "canadien"
// frenchle (a special package)
},
fur: "friulan",
gl: "galician",
de: {
"": "german",
AT: "austrian",
"DE-1996": "ngerman", // these are valid IETF language codes
"AT-1996": "naustrian",
1996: "ngerman"
},
el: {
"": "greek",
polyton: "polutonikogreek"
},
he: "hebrew",
hi: "hindi",
is: "icelandic",
id: "indonesian", // aliases: bahasai, indon
ia: "interlingua",
ga: "irish",
it: "italian",
ja: "japanese",
la: "latin",
lv: "latvian",
lt: "lithuanian",
dsb: "lowersorbian",
hu: "magyar",
zlm: "malay", // aliases: bahasam, melayu (currently, there's no
// real difference between bahasam and bahasai in babel)
mn: "mongolian",
se: "samin",
nn: "nynorsk", // nynorsk
nb: "norsk", // bokmål
no: "norwegian", // "no" could be used, norwegian is an alias for "norsk" in babel
zh: {
"": "pinyin", // only supported chinese in babel is the romanization pinyin?
Latn: "pinyin"
},
pl: "polish",
pt: {
"": "portuguese",
PT: "portuguese",
BR: "brazil"
},
ro: "romanian",
rm: "romansh",
ru: "russian",
gd: "scottish",
sr: {
"": "serbian", // latin script as default?
Cyrl: "serbianc",
Latn: "serbian",
},
sk: "slovak",
sl: "slovene",
// spanglish (pseudo language)
es: "spanish",
sv: "swedish",
th: "thaicjk", // thaicjk preferred?
tr: "turkish",
tk: "turkmen",
uk: "ukrainian",
hsb: "uppersorbian",
vi: "vietnamese",
cy: "welsh",
};
// some fields are, in fact, macros. If that is the case then we should not put the
// data in the braces as it will cause the macros to not expand properly
function writeField(field, value, isMacro, noEscape) {
if (!value && typeof value != "number") return;
value += ""; // convert integers to strings
Zotero.write(",\n\t" + field + " = ");
if (!isMacro) Zotero.write("{");
// url field is preserved, for use with \href and \url
// Other fields (DOI?) may need similar treatment
if (!noEscape && !isMacro && !(field == "url" || field == "doi" || field == "file" || field == "lccn")) {
// var titleCase = isTitleCase(value); //figure this out before escaping all the characters
// I hope these are all the escape characters! (except for < > which are handled later)
value = value.replace(/[|~^\\{}]/g, mapEscape).replace(/[#$%&_]/g, "\\$&");
// convert the HTML markup allowed in Zotero for rich text to TeX
value = mapHTMLmarkup(value);
// escape < > if mapHTMLmarkup did not convert some
value = value.replace(/[<>]/g, mapEscape);
// Case of words with uppercase characters in non-initial positions is preserved with braces.
// we're looking at all unicode letters
var protectCaps = new ZU.XRegExp("\\b\\p{Letter}+\\p{Uppercase_Letter}\\p{Letter}*", 'g');
if (field != "pages") {
value = ZU.XRegExp.replace(value, protectCaps, "{$0}");
}
// Page ranges should use double dash
if (field == "pages") {
value = value.replace(/[-\u2012-\u2015\u2053]+/g, "--");
}
}
// we write utf8
// convert the HTML markup allowed in Zotero for rich text to TeX; excluding doi/url/file shouldn't be necessary, but better to be safe;
if (!((field == "url") || (field == "doi") || (field == "file"))) value = mapHTMLmarkup(value);
Zotero.write(value);
if (!isMacro) Zotero.write("}");
}
function mapHTMLmarkup(characters) {
// converts the HTML markup allowed in Zotero for rich text to TeX
// since < and > have already been escaped, we need this rather hideous code - I couldn't see a way around it though.
// italics and bold
characters = characters.replace(/\{\\textless\}i\{\\textgreater\}(((?!\{\\textless\}\/i{\\textgreater\}).)+)\{\\textless\}\/i{\\textgreater\}/g, "\\textit{$1}").replace(/\{\\textless\}b\{\\textgreater\}(((?!\{\\textless\}\/b{\\textgreater\}).)+)\{\\textless\}\/b{\\textgreater\}/g, "\\textbf{$1}");
// sub and superscript
characters = characters.replace(/\{\\textless\}sup\{\\textgreater\}(((?!\{\\textless\}\/sup\{\\textgreater\}).)+)\{\\textless\}\/sup{\\textgreater\}/g, "$^{\\textrm{$1}}$").replace(/\{\\textless\}sub\{\\textgreater\}(((?!\{\\textless\}\/sub\{\\textgreater\}).)+)\{\\textless\}\/sub\{\\textgreater\}/g, "$_{\\textrm{$1}}$");
// two variants of small caps
characters = characters.replace(/\{\\textless\}span\sstyle="small-caps"\{\\textgreater\}(((?!\{\\textless\}\/span\{\\textgreater\}).)+)\{\\textless\}\/span{\\textgreater\}/g, "\\textsc{$1}").replace(/\{\\textless\}sc\{\\textgreater\}(((?!\{\\textless\}\/sc\{\\textgreater\}).)+)\{\\textless\}\/sc\{\\textgreater\}/g, "\\textsc{$1}");
return characters;
}
function mapEscape(character) {
return alwaysMap[character];
}
// a little substitution function for BibTeX keys, where we don't want LaTeX
// escaping, but we do want to preserve the base characters
function tidyAccents(s) {
var r = s.toLowerCase();
// XXX Remove conditional when we drop Zotero 2.1.x support
// This is supported in Zotero 3.0 and higher
if (ZU.removeDiacritics !== undefined) {
r = ZU.removeDiacritics(r, true);
}
else {
// We fall back on the replacement list we used previously
r = r.replace(new RegExp("[ä]", 'g'), "ae");
r = r.replace(new RegExp("[ö]", 'g'), "oe");
r = r.replace(new RegExp("[ü]", 'g'), "ue");
r = r.replace(new RegExp("[àáâãå]", 'g'), "a");
r = r.replace(new RegExp("æ", 'g'), "ae");
r = r.replace(new RegExp("ç", 'g'), "c");
r = r.replace(new RegExp("[èéêë]", 'g'), "e");
r = r.replace(new RegExp("[ìíîï]", 'g'), "i");
r = r.replace(new RegExp("ñ", 'g'), "n");
r = r.replace(new RegExp("[òóôõ]", 'g'), "o");
r = r.replace(new RegExp("œ", 'g'), "oe");
r = r.replace(new RegExp("[ùúû]", 'g'), "u");
r = r.replace(new RegExp("[ýÿ]", 'g'), "y");
}
return r;
}
var numberRe = /^[0-9]+/;
// Below is a list of words that should not appear as part of the citation key
// it includes the indefinite articles of English, German, French and Spanish, as well as a small set of English prepositions whose
// force is more grammatical than lexical, i.e. which are likely to strike many as 'insignificant'.
// The assumption is that most who want a title word in their key would prefer the first word of significance.
var citeKeyTitleBannedRe = /\b(a|an|the|some|from|on|in|to|of|do|with|der|die|das|ein|eine|einer|eines|einem|einen|un|une|la|le|l'|les|el|las|los|al|uno|una|unos|unas|de|des|del|d')(\s+|\b)|(<\/?(i|b|sup|sub|sc|span style="small-caps"|span)>)/g;
var citeKeyConversionsRe = /%([a-zA-Z])/;
var citeKeyConversions = {
a: function (flags, item) {
if (item.creators && item.creators[0] && item.creators[0].lastName) {
return item.creators[0].lastName.toLowerCase().replace(/ /g, "_").replace(/,/g, "");
}
return "noauthor";
},
t: function (flags, item) {
if (item.title) {
return item.title.toLowerCase().replace(citeKeyTitleBannedRe, "").split(/\s+/g)[0];
}
return "notitle";
},
y: function (flags, item) {
if (item.date) {
var date = Zotero.Utilities.strToDate(item.date);
if (date.year && numberRe.test(date.year)) {
return date.year;
}
}
return "nodate";
}
};
// checks whether an item contains any creator of type ctype
function creatorCheck(item, ctype) {
if (item.creators && item.creators.length) {
for (var i = 0; i < item.creators.length; i++) {
if (item.creators[i].creatorType == ctype) {
return true; // found a ctype creator
}
}
}
// didn't find any ctype creator (or no creators at all)
return false;
}
function buildCiteKey(item, extraFields, citekeys) {
if (extraFields) {
const citationKey = extraFields.findIndex(field => field.field && field.value && field.field.toLowerCase() === 'citation key');
if (citationKey >= 0) return extraFields.splice(citationKey, 1)[0].value;
}
if (item.citationKey) return item.citationKey;
var basekey = "";
var counter = 0;
var citeKeyFormatRemaining = citeKeyFormat;
while (citeKeyConversionsRe.test(citeKeyFormatRemaining)) {
if (counter > 100) {
Zotero.debug("Pathological BibTeX format: " + citeKeyFormat);
break;
}
var m = citeKeyFormatRemaining.match(citeKeyConversionsRe);
if (m.index > 0) {
// add data before the conversion match to basekey
basekey += citeKeyFormatRemaining.substr(0, m.index);
}
var flags = ""; // for now
var f = citeKeyConversions[m[1]];
if (typeof (f) == "function") {
var value = f(flags, item);
Zotero.debug("Got value " + value + " for %" + m[1]);
// add conversion to basekey
basekey += value;
}
citeKeyFormatRemaining = citeKeyFormatRemaining.substr(m.index + m.length);
counter++;
}
if (citeKeyFormatRemaining.length > 0) {
basekey += citeKeyFormatRemaining;
}
// for now, remove any characters not explicitly known to be allowed;
// we might want to allow UTF-8 citation keys in the future, depending
// on implementation support.
//
// no matter what, we want to make sure we exclude
// " # % ' ( ) , = { } ~ and backslash
// however, we want to keep the base characters
basekey = tidyAccents(basekey);
// use legacy pattern for all old items to not break existing usages
var citeKeyCleanRe = /[^a-z0-9!$&*+\-./:;<>?[\]^_`|]+/g;
// but use the simple pattern for all newly added items
// or always if the hiddenPref is set
// extensions.zotero.translators.BibLaTeX.export.simpleCitekey
if ((Zotero.getHiddenPref && Zotero.getHiddenPref('BibLaTeX.export.simpleCitekey'))
|| (item.dateAdded && parseInt(item.dateAdded.substr(0, 4)) >= 2020)) {
citeKeyCleanRe = /[^a-z0-9_-]/g;
}
basekey = basekey.replace(citeKeyCleanRe, "");
var citekey = basekey;
var i = 0;
while (citekeys[citekey]) {
i++;
citekey = basekey + "-" + i;
}
citekeys[citekey] = true;
return citekey;
}
var filePathSpecialChars = '\\\\:;{}$'; // $ for Mendeley
var encodeFilePathRE = new RegExp('[' + filePathSpecialChars + ']', 'g');
function encodeFilePathComponent(value) {
if (!value) return '';
return value.replace(encodeFilePathRE, "\\$&");
}
// We strip out {} in general, because \{ and \} break BibLaTeX
function cleanFilePath(str) {
if (!str) return '';
return str.replace(/(?:\s*[{}]+)+\s*/g, ' ');
}
function doExport() {
// Zotero.write("% biblatex export generated by Zotero "+Zotero.Utilities.getVersion());
// to make sure the BOM gets ignored
Zotero.write("\n");
var first = true;
var citekeys = {};
var item;
// eslint-disable-next-line no-cond-assign
while (item = Zotero.nextItem()) {
// don't export standalone notes and attachments
if (item.itemType == "note" || item.itemType == "attachment") continue;
var noteused = false; // a switch for keeping track whether the
// field "note" has been written to
// determine type
var type = zotero2biblatexTypeMap[item.itemType];
if (typeof (type) == "function") {
type = type(item);
}
// inbook is reasonable at times, using a bookauthor should
// indicate this
if (item.itemType == "bookSection"
&& creatorCheck(item, "bookAuthor")) type = "inbook";
// a book without author but with editors is a collection
if (item.itemType == "book" && !creatorCheck(item, "author")
&& creatorCheck(item, "editor")) type = "collection";
// biblatex recommends us to use mvbook for multi-volume book
// i.e. a book with "# of vols" filled
if (type == "book" && item.numberOfVolumes) type = "mvbook";
if (!type) type = "misc";
var extraFields = item.extra ? parseExtraFields(item.extra) : null;
var citekey = buildCiteKey(item, extraFields, citekeys);
// write citation key (removed the comma)
Zotero.write((first ? "" : "\n\n") + "@" + type + "{" + citekey);
first = false;
for (var field in fieldMap) {
if (item[fieldMap[field]]) {
writeField(field, item[fieldMap[field]]);
}
}
// Fields needing special treatment and not easily translatable via fieldMap
// e.g. where fieldname translation is dependent upon type, or special transformations
// has to be made
// all kinds of numbers except patents, which need post-processing
if (item.reportNumber || item.seriesNumber || item.billNumber || item.episodeNumber || item.number && !item.patentNumber) {
writeField("number", item.reportNumber || item.seriesNumber || item.billNumber || item.episodeNumber || item.number);
}
// split numeric and nonnumeric issue specifications (for journals) into "number" and "issue"
if (item.issue) { // issue
var jnumber = parseInt(item.issue);
if (!isNaN(jnumber)) {
writeField("number", jnumber);
}
else {
writeField("issue", item.issue);
}
}
// publicationTitles and special titles
if (item.publicationTitle) {
if (item.itemType == "bookSection" || item.itemType == "conferencePaper" || item.itemType == "dictionaryEntry" || item.itemType == "encyclopediaArticle") {
writeField("booktitle", item.publicationTitle);
}
else if (item.itemType == "magazineArticle" || item.itemType == "newspaperArticle") {
writeField("journaltitle", item.publicationTitle);
}
else if (item.itemType == "journalArticle") {
if (Zotero.getOption("useJournalAbbreviation") && item.journalAbbreviation) {
writeField("journaltitle", item.journalAbbreviation);
}
else {
writeField("journaltitle", item.publicationTitle);
writeField("shortjournal", item.journalAbbreviation);
}
}
}
if (item.websiteTitle || item.forumTitle || item.blogTitle || item.programTitle) {
writeField("titleaddon", item.websiteTitle || item.forumTitle || item.blogTitle || item.programTitle);
}
// publishers
if (item.publisher) {
if (item.itemType == "thesis" || item.itemType == "report") {
writeField("institution", item.publisher);
}
else {
writeField("publisher", item.publisher);
}
}
// things concerning "type"
if (item.itemType == "letter") {
if (item.letterType) {
writeField("type", item.letterType);
}
else {
writeField("type", "Letter"); // this isn't optimal, perhaps later versions of biblatex will add some suitable localization key
}
}
else if (item.itemType == "email") {
writeField("type", "E-mail");
}
else if (item.itemType == "thesis"
&& (!item.thesisType || item.thesisType.search(/ph\.?d/i) != -1)) {
writeField("type", "phdthesis");
}
else if (item.manuscriptType || item.thesisType || item.websiteType || item.presentationType || item.reportType || item.mapType) {
writeField("type", item.manuscriptType || item.thesisType || item.websiteType || item.presentationType || item.reportType || item.mapType);
}
else if (item.itemType == "patent") {
// see https://tex.stackexchange.com/questions/447383/biblatex-biber-patent-citation-support-based-on-zoterobbl-output/447508
if (!item.patentNumber) {
writeField("type", "patent");
}
else if (item.patentNumber.startsWith("US")) {
writeField("type", "patentus");
writeField("number", item.patentNumber.replace(/^US/, ""));
}
else if (item.patentNumber.startsWith("EP")) {
writeField("type", "patenteu");
writeField("number", item.patentNumber.replace(/^EP/, ""));
}
else if (item.patentNumber.startsWith("GB")) {
writeField("type", "patentuk");
writeField("number", item.patentNumber.replace(/^GB/, ""));
}
else if (item.patentNumber.startsWith("DE")) {
writeField("type", "patentde");
writeField("number", item.patentNumber.replace(/^DE/, ""));
}
else if (item.patentNumber.startsWith("FR")) {
writeField("type", "patentfr");
writeField("number", item.patentNumber.replace(/^FR/, ""));
}
else {
writeField("type", "patent");
writeField("number", item.patentNumber);
}
}
if (item.presentationType || item.manuscriptType) {
writeField("howpublished", item.presentationType || item.manuscriptType);
}
// case of specific eprint-archives in archive-fields
if (item.archive && item.archiveLocation) {
if (item.archive == "arXiv" || item.archive == "arxiv") {
writeField("eprinttype", "arxiv");
writeField("eprint", item.archiveLocation);
if (item.callNumber) { // assume call number is used for arxiv class
writeField("eprintclass", item.callNumber);
}
}
else if (item.archive == "JSTOR" || item.archive == "jstor") {
writeField("eprinttype", "jstor");
writeField("eprint", item.archiveLocation);
}
else if (item.archive == "PubMed" || item.archive == "pubmed") {
writeField("eprinttype", "pubmed");
writeField("eprint", item.archiveLocation);
}
else if (item.archive == "HDL" || item.archive == "hdl") {
writeField("eprinttype", "hdl");
writeField("eprint", item.archiveLocation);
}
else if (item.archive == "googlebooks" || item.archive == "Google Books") {
writeField("eprinttype", "googlebooks");
writeField("eprint", item.archiveLocation);
}
}
// presentations have a meetingName field which we want to
// map to note
if (item.meetingName) {
writeField("note", item.meetingName);
noteused = true;
}
if (item.creators && item.creators.length) {
// split creators into subcategories
var author = "";
var bookauthor = "";
var commentator = "";
var editor = "";
var editora = "";
var editorb = "";
var holder = "";
var translator = "";
var noEscape = false;
for (let i = 0; i < item.creators.length; i++) {
var creator = item.creators[i];
var creatorString;
if (creator.firstName) {
var fname = creator.firstName.split(/\s*,!?\s*/);
fname.push(fname.shift()); // If we have a Jr. part(s), it should precede first name
creatorString = creator.lastName + ", " + fname.join(', ');
}
else {
creatorString = creator.lastName;
}
creatorString = creatorString.replace(/[|<>~^\\{}]/g, mapEscape)
.replace(/([#$%&_])/g, "\\$1");
if (creator.fieldMode == true) { // fieldMode true, assume corporate author
creatorString = "{" + creatorString + "}";
noEscape = true;
}
else {
creatorString = creatorString.replace(/ (and) /gi, ' {$1} ');
}
if (creator.creatorType == "author" || creator.creatorType == "interviewer" || creator.creatorType == "inventor" || creator.creatorType == "director" || creator.creatorType == "programmer" || creator.creatorType == "artist" || creator.creatorType == "podcaster" || creator.creatorType == "presenter") {
author += " and " + creatorString;
}
else if (creator.creatorType == "bookAuthor") {
bookauthor += " and " + creatorString;
}
else if (creator.creatorType == "commenter") {
commentator += " and " + creatorString;
}
else if (creator.creatorType == "editor") {
editor += " and " + creatorString;
}
else if (creator.creatorType == "translator") {
translator += " and " + creatorString;
}
else if (creator.creatorType == "seriesEditor") { // let's call them redacors
editorb += " and " + creatorString;
}
else { // the rest into editora with editoratype = collaborator
editora += " and " + creatorString;
}
}
// remove first " and " string
if (author) {
writeField("author", author.substr(5), false, noEscape);
}
if (bookauthor) {
writeField("bookauthor", bookauthor.substr(5), false, noEscape);
}
if (commentator) {
writeField("commentator", commentator.substr(5), false, noEscape);
}
if (editor) {
writeField("editor", editor.substr(5), false, noEscape);
}
if (editora) {
writeField("editora", editora.substr(5), false, noEscape);
writeField("editoratype", "collaborator");
}
if (editorb) {
writeField("editorb", editorb.substr(5), false, noEscape);
writeField("editorbtype", "redactor");
}
if (holder) {
writeField("holder", holder.substr(5), false, noEscape);
}
if (translator) {
writeField("translator", translator.substr(5), false, noEscape);
}
}
if (item.accessDate) {
writeField("urldate", Zotero.Utilities.strToISO(item.accessDate));
}
// TODO enable handling of date ranges when that's added to zotero
if (item.date) {
writeField("date", Zotero.Utilities.strToISO(item.date));
}
// Map Languages to biblatex-field "langid" (used for
// hyphenation with a correct setting of the "autolang" option)
// if possible. See babelLanguageMap above for languagecodes to use
if (item.language) {
var langcode = item.language.match(/^([a-z]{2,3})(?:[^a-z](.+))?$/i); // not too strict
if (langcode) {
var lang = babelLanguageMap[langcode[1]];
if (typeof lang == 'string') {
// if there are no variants for this language
writeField("langid", lang);
}
else if (typeof lang == 'object') {
var variant = lang[langcode[2]];
if (variant) {
writeField("langid", variant);
}
else {
writeField("langid", lang[""]); // use default variant
}
}
}
}
if (extraFields) {
// Export identifiers
// Dedicated fields
for (let i = 0; i < extraFields.length; i++) {
var rec = extraFields[i];
if (!rec.field) continue;
if (!revExtraIds[rec.field] && !revEprintIds[rec.field]) continue;
var value = rec.value.trim();
if (!value) continue;
var label = revExtraIds[rec.field];
if (label) {
writeField(label, '{' + value + '}', true);
}
else {
label = revEprintIds[rec.field];
if (label) {
writeField('eprinttype', label);
writeField('eprint', '{' + value + '}', true);
}
}
extraFields.splice(i, 1);
i--;
}
var extra = extraFieldsToString(extraFields);
if (extra && !noteused) writeField("note", extra);
}
if (item.tags && item.tags.length) {
var tagString = "";
for (let i = 0; i < item.tags.length; i++) {
tagString += ", " + item.tags[i].tag;
}
writeField("keywords", tagString.substr(2));
}
if (item.notes && Zotero.getOption("exportNotes")) {
for (let i = 0; i < item.notes.length; i++) {
var note = item.notes[i];
writeField("annotation", Zotero.Utilities.unescapeHTML(note.note));
}
}
if (item.attachments) {
var attachmentString = "";
for (let i = 0; i < item.attachments.length; i++) {
var attachment = item.attachments[i];
var title = cleanFilePath(attachment.title),
path = null;
if (Zotero.getOption("exportFileData") && attachment.saveFile) {
path = cleanFilePath(attachment.defaultPath);
attachment.saveFile(path, true);
}
else if (attachment.localPath) {
path = cleanFilePath(attachment.localPath);
}
if (path) {
attachmentString += ";" + encodeFilePathComponent(title)
+ ":" + encodeFilePathComponent(path)
+ ":" + encodeFilePathComponent(attachment.mimeType);
}
}
if (attachmentString) {
writeField("file", attachmentString.substr(1));
}
}
Zotero.write(",\n}");
}
Zotero.write("\n");
}
/** BEGIN TEST CASES **/
var testCases = [
]
/** END TEST CASES **/
{"async":true,"getCollections":true}{"exportCharset":"UTF-8","exportNotes":true,"exportFileData":false,"useJournalAbbreviation":false}200Simon Kornblith, Richard Karnesky and Emiliano heynsbib/*
BibTeX Translator
Copyright (C) 2019 CHNM, Simon Kornblith, Richard Karnesky and Emiliano heyns
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
function detectImport() {
var maxChars = 1048576; // 1MB
var inComment = false;
var block = "";
var buffer = "";
var chr = "";
var charsRead = 0;
var re = /^\s*@[a-zA-Z]+[\(\{]/;
while ((buffer = Zotero.read(4096)) && charsRead < maxChars) {
Zotero.debug("Scanning " + buffer.length + " characters for BibTeX");
charsRead += buffer.length;
for (var i=0; i<buffer.length; i++) {
chr = buffer[i];
if (inComment && chr != "\r" && chr != "\n") {
continue;
}
inComment = false;
if (chr == "%") {
// read until next newline
block = "";
inComment = true;
} else if ((chr == "\n" || chr == "\r"
// allow one-line entries
|| i == (buffer.length - 1))
&& block) {
// check if this is a BibTeX entry
if (re.test(block)) {
return true;
}
block = "";
} else if (!" \n\r\t".includes(chr)) {
block += chr;
}
}
}
}
//%a = first listed creator surname
//%y = year
//%t = first word of title
var citeKeyFormat = "%a_%t_%y";
var fieldMap = {
address:"place",
chapter:"section",
edition:"edition",
type:"type",
series:"series",
title:"title",
volume:"volume",
copyright:"rights",
isbn:"ISBN",
issn:"ISSN",
shorttitle:"shortTitle",
url:"url",
doi:"DOI",
abstract:"abstractNote",
nationality: "country",
language:"language",
assignee:"assignee"
};
// Fields for which upper case letters will be protected on export
var caseProtectedFields = [
"title",
"type",
"shorttitle",
"booktitle",
"series"
];
// Import/export in BibTeX
var extraIdentifiers = {
lccn: 'LCCN',
mrnumber: 'MR',
zmnumber: 'Zbl',
pmid: 'PMID',
pmcid: 'PMCID'
//Mostly from Wikipedia citation templates
//asin - Amazon ID
//bibcode/refcode - used in astronomy, but haven't seen any Bib(La)TeX examples
//jfm - Jahrbuch ID, but it seems to be part of Zentralblatt MATH, so Zbl
//oclc
//ol - openlibrary.org ID
//osti
//rfc
//ssrn? http://cyber.law.harvard.edu/cybersecurity/Guidelines_for_adding_Bibliography_entries
};
// Make a reverse map for convenience with additional DOI handling
var revExtraIds = {'DOI': 'doi'};
for (var field in extraIdentifiers) {
revExtraIds[extraIdentifiers[field]] = field;
}
// Import only. Exported by BibLaTeX
var eprintIds = {
// eprinttype: Zotero label
// From BibLaTeX manual
'arxiv': 'arXiv', // Sorry, but no support for eprintclass yet
'jstor': 'JSTOR',
'pubmed': 'PMID',
'hdl': 'HDL',
'googlebooks': 'GoogleBooksID'
};
function dateFieldsToDate(year, month, day) {
// per the latest ISO 8601 standard, you can't have a month/day without a
// year (and it would be silly anyway)
if (year) {
let date = year;
if (month) {
if (month.includes(date)) {
date = month;
}
else {
date += `-${month}`;
}
if (day) {
date += `-${day}`;
}
}
return ZU.strToISO(date);
}
return false;
}
function parseExtraFields(extra) {
var lines = extra.split(/[\r\n]+/);
var fields = [];
for (var i=0; i<lines.length; i++) {
var rec = { raw: lines[i] };
var line = lines[i].trim();
var splitAt = line.indexOf(':');
if (splitAt > 1) {
rec.field = line.substr(0,splitAt).trim();
rec.value = line.substr(splitAt + 1).trim();
}
fields.push(rec);
}
return fields;
}
function extraFieldsToString(extra) {
var str = '';
for (var i=0; i<extra.length; i++) {
if (!extra[i].raw) {
str += '\n' + extra[i].field + ': ' + extra[i].value;
} else {
str += '\n' + extra[i].raw;
}
}
return str.substr(1);
}
var inputFieldMap = {
booktitle :"publicationTitle",
school:"publisher",
publisher:"publisher",
issue:"issue",
// import also BibLaTeX fields:
journaltitle:"publicationTitle",
shortjournal:"journalAbbreviation",
eventtitle:"conferenceName",
pagetotal:"numPages",
version:"version"
};
var zotero2bibtexTypeMap = {
"book":"book",
"bookSection":"incollection",
"journalArticle":"article",
"magazineArticle":"article",
"newspaperArticle":"article",
"thesis":"phdthesis",
"letter":"misc",
"manuscript":"unpublished",
"patent" :"patent",
"interview":"misc",
"film":"misc",
"artwork":"misc",
"webpage":"misc",
"conferencePaper":"inproceedings",
"report":"techreport"
};
var bibtex2zoteroTypeMap = {
"book":"book", // or booklet, proceedings
"inbook":"bookSection",
"incollection":"bookSection",
"article":"journalArticle", // or magazineArticle or newspaperArticle
"patent" :"patent",
"phdthesis":"thesis",
"unpublished":"manuscript",
"inproceedings":"conferencePaper", // check for conference also
"conference":"conferencePaper",
"techreport":"report",
"booklet":"book",
"manual":"book",
"mastersthesis":"thesis",
"misc":"document",
"proceedings":"book",
"online":"webpage",
// alias for online from BibLaTeX:
"electronic":"webpage",
// from BibLaTeX translator:
"thesis":"thesis",
"letter":"letter",
"movie":"film",
"artwork":"artwork",
"report":"report",
"legislation":"bill",
"jurisdiction":"case",
"audio":"audioRecording",
"video":"videoRecording",
"software":"computerProgram",
"inreference":"encyclopediaArticle",
"collection":"book",
"mvbook":"book"
};
/*
* three-letter month abbreviations. i assume these are the same ones that the
* docs say are defined in some appendix of the LaTeX book. (i don't have the
* LaTeX book.)
*/
var months = ["jan", "feb", "mar", "apr", "may", "jun",
"jul", "aug", "sep", "oct", "nov", "dec"];
var jabref = {
format: null,
root: {}
};
var alwaysMap = {
"|":"{\\textbar}",
"<":"{\\textless}",
">":"{\\textgreater}",
"~":"{\\textasciitilde}",
"^":"{\\textasciicircum}",
"\\":"{\\textbackslash}",
// See http://tex.stackexchange.com/questions/230750/open-brace-in-bibtex-fields/230754
"{" : "\\{\\vphantom{\\}}",
"}" : "\\vphantom{\\{}\\}"
};
var strings = {};
var keyRe = /[a-zA-Z0-9\-]/;
// Split keywords on space by default when called from another translator
// This is purely for historical reasons. Otherwise we risk breaking tag import
// from some websites
var keywordSplitOnSpace = !!Zotero.parentTranslator;
var keywordDelimRe = /\s*[,;]\s*/;
function setKeywordSplitOnSpace( val ) {
keywordSplitOnSpace = val;
}
function setKeywordDelimRe( val, flags ) {
//expect string, but it could be RegExp
if (typeof(val) != 'string') {
val = val.toString();
flags = val.slice(val.lastIndexOf('/')+1);
val = val.slice(1, val.lastIndexOf('/'));
}
keywordDelimRe = new RegExp(val, flags);
}
function processField(item, field, value, rawValue) {
if (Zotero.Utilities.trim(value) == '') return null;
if (fieldMap[field]) {
//map DOIs + Label to Extra for unsupported item types
if (field == "doi" &&!ZU.fieldIsValidForType("DOI", item.itemType) && ZU.cleanDOI(value)) {
item._extraFields.push({field: "DOI", value: ZU.cleanDOI(value)});
}
if (field == "url") { // pass raw values for URL
item.url = rawValue;
}
else {
item[fieldMap[field]] = value;
}
} else if (inputFieldMap[field]) {
item[inputFieldMap[field]] = value;
} else if (field == "subtitle") {
if (!item.title) item.title = '';
item.title = item.title.trim();
value = value.trim();
if (!/[-–—:!?.;]$/.test(item.title)
&& !/^[-–—:.;¡¿]/.test(value)
) {
item.title += ': ';
} else if (item.title.length) {
item.title += ' ';
}
item.title += value;
} else if (field == "journal") {
if (item.publicationTitle) {
item.journalAbbreviation = value;
} else {
item.publicationTitle = value;
}
} else if (field == "fjournal") {
if (item.publicationTitle) {
// move publicationTitle to abbreviation, since it probably came from 'journal'
item.journalAbbreviation = item.publicationTitle;
}
item.publicationTitle = value;
} else if (field == "author" || field == "editor" || field == "translator") {
// parse authors/editors/translators
var names = splitUnprotected(rawValue.trim(), /\s+and\s+/gi);
for (var i in names) {
var name = names[i];
// skip empty names
if (!name) continue;
// Names in BibTeX can have three commas
var pieces = splitUnprotected(name, /\s*,\s*/g);
var creator = {};
if (pieces.length > 1) {
creator.firstName = pieces.pop();
creator.lastName = unescapeBibTeX(pieces.shift());
if (pieces.length) {
// If anything is left, it should only be the 'Jr' part
creator.firstName += ', ' + pieces.join(', ');
}
creator.firstName = unescapeBibTeX(creator.firstName);
creator.creatorType = field;
} else if (splitUnprotected(name, / +/g).length > 1){
creator = Zotero.Utilities.cleanAuthor(unescapeBibTeX(name), field, false);
} else {
creator = {
lastName: unescapeBibTeX(name),
creatorType: field,
fieldMode: 1
};
}
item.creators.push(creator);
}
} else if (field == "institution" || field == "organization") {
item.backupPublisher = value;
} else if (field == "location") {
item.backupLocation = value;
} else if (field == "number") { // fix for techreport
if (item.itemType == "report") {
item.reportNumber = value;
} else if (item.itemType == "book" || item.itemType == "bookSection") {
item.seriesNumber = value;
} else if (item.itemType == "patent"){
item.patentNumber = value;
} else {
item.issue = value;
}
} else if (field == "day") {
// this and the following two blocks assign to temporary fields that
// are cleared before the item is completed. "day" isn't an official
// field, but some sites use it.
item.day = value;
} else if (field == "month") {
var monthIndex = months.indexOf(value.toLowerCase());
if (monthIndex != -1) {
value = Zotero.Utilities.formatDate({month:monthIndex});
}
item.month = value;
} else if (field == "year") {
item.year = value;
} else if (field == "date") {
//We're going to assume that "date" and the date parts don't occur together. If they do, we pick date, which should hold all.
item.date = value;
} else if (field == "pages") {
if (item.itemType == "book" || item.itemType == "thesis" || item.itemType == "manuscript") {
item.numPages = value;
}
else {
item.pages = value.replace(/--/g, "-");
}
} else if (field == "note") {
var isExtraId = false;
for (var element in extraIdentifiers) {
if (value.trim().startsWith(extraIdentifiers[element])) {
isExtraId = true;
}
}
if (isExtraId) {
item._extraFields.push({raw: value.trim()});
} else {
item.notes.push({note:Zotero.Utilities.text2html(value)});
}
} else if (field == "howpublished") {
if (value.length >= 7) {
var str = value.substr(0, 7);
if (str == "http://" || str == "https:/" || str == "mailto:") {
item.url = value;
} else {
item._extraFields.push({field: 'Published', value: value});
}
}
}
//accept lastchecked or urldate for access date. These should never both occur.
//If they do we don't know which is better so we might as well just take the second one
else if (field == "lastchecked"|| field == "urldate"){
item.accessDate = value;
} else if (field == "keywords" || field == "keyword") {
item.tags = value.split(keywordDelimRe);
if (item.tags.length == 1 && keywordSplitOnSpace) {
item.tags = value.split(/\s+/);
}
} else if (field == "comment" || field == "annote" || field == "review" || field == "notes") {
item.notes.push({note:Zotero.Utilities.text2html(value)});
} else if (field == "pdf" || field == "path" /*Papers2 compatibility*/) {
item.attachments.push({path:value, mimeType:"application/pdf"});
} else if (field == "sentelink") { // the reference manager 'Sente' has a unique file scheme in exported BibTeX; it can occur multiple times
item.attachments.push({path:value.split(",")[0], mimeType:"application/pdf"});
} else if (field == "file") {
var start = 0, attachment;
rawValue = rawValue.replace(/\$\\backslash\$/g, '\\') // Mendeley invention?
.replace(/([^\\](?:\\\\)*)\\(.){}/g, '$1$2'); // part of Mendeley's escaping (e.g. \~{} = ~)
for (var i=0; i<rawValue.length; i++) {
if (rawValue[i] == '\\') {
i++; //skip next char
continue;
}
if (rawValue[i] == ';') {
attachment = parseFilePathRecord(rawValue.slice(start, i));
if (attachment) item.attachments.push(attachment);
start = i+1;
}
}
attachment = parseFilePathRecord(rawValue.slice(start));
if (attachment) item.attachments.push(attachment);
} else if (field == "eprint" || field == "eprinttype") {
// Support for IDs exported by BibLaTeX
if (field == 'eprint') item._eprint = value;
else item._eprinttype = value;
var eprint = item._eprint;
var eprinttype = item._eprinttype;
// If we don't have both yet, continue
if (!eprint || !eprinttype) return;
var label = eprintIds[eprinttype.trim().toLowerCase()];
if (!label) return;
item._extraFields.push({field: label, value: eprint.trim()});
delete item._eprinttype;
delete item._eprint;
} else if (extraIdentifiers[field]) {
var label = extraIdentifiers[field];
item._extraFields.push({field: label, value: value.trim()});
}
}
/**
* Split a string on a provided delimiter, but not if delimiter appears inside { }
* @param {String} str String to split
* @param {RegExp} delim RegExp object for the split delimiter. Use g flag to split on each
* @return {String[]} Array of strings without delimiters
*/
function splitUnprotected(str, delim) {
delim.lastIndex = 0; // In case we're reusing a regexp
var nextPossibleSplit = delim.exec(str);
if (!nextPossibleSplit) return [str];
var parts = [], open = 0, nextPartStart = 0;
for (var i=0; i<str.length; i++) {
if (i>nextPossibleSplit.index) {
// Must have been inside braces
nextPossibleSplit = delim.exec(str);
if (!nextPossibleSplit) {
parts.push(str.substr(nextPartStart));
return parts;
}
}
if (str[i] == '\\') {
// Skip next character
i++;
continue;
}
if (str[i] == '{') {
open++;
continue;
}
if (str[i] == '}') {
open--;
if (open < 0) open = 0; // Shouldn't happen, but...
continue;
}
if (open) continue;
if (i == nextPossibleSplit.index) {
parts.push(str.substring(nextPartStart, i));
i += nextPossibleSplit[0].length - 1; // We can jump past the split delim
nextPartStart = i + 1;
nextPossibleSplit = delim.exec(str);
if (!nextPossibleSplit) {
parts.push(str.substr(nextPartStart));
return parts;
}
}
}
// I don't think we should ever get here*, but just to be safe
// *we should always be returning from the for loop
var last = str.substr(nextPartStart).trim();
if (last) parts.push(last);
return parts;
}
function parseFilePathRecord(record) {
var start = 0, fields = [];
for (var i=0; i<record.length; i++) {
if (record[i] == '\\') {
i++;
continue;
}
if (record[i] == ':') {
fields.push(decodeFilePathComponent(record.slice(start, i)));
start = i+1;
}
}
fields.push(decodeFilePathComponent(record.slice(start)));
if (fields.length != 3 && fields.length != 1) {
Zotero.debug("Unknown file path record format: " + record);
return;
}
var attachment = {};
if (fields.length == 3) {
attachment.title = fields[0].trim() || 'Attachment';
attachment.path = fields[1];
attachment.mimeType = fields[2];
if (attachment.mimeType.search(/pdf/i) != -1) {
attachment.mimeType = 'application/pdf';
}
} else {
attachment.title = 'Attachment';
attachment.path = fields[0];
}
attachment.path = attachment.path.trim();
if (!attachment.path) return;
return attachment;
}
function getFieldValue(read) {
var value = "";
// now, we have the first character of the field
if (read == "{") {
// character is a brace
var openBraces = 1, nextAsLiteral = false;
while (read = Zotero.read(1)) {
if (nextAsLiteral) { // Previous character was a backslash
value += read;
nextAsLiteral = false;
continue;
}
if (read == "\\") {
value += read;
nextAsLiteral = true;
continue;
}
if (read == "{") {
openBraces++;
value += "{";
} else if (read == "}") {
openBraces--;
if (openBraces == 0) {
break;
} else {
value += "}";
}
} else {
value += read;
}
}
} else if (read == '"') {
var openBraces = 0;
while (read = Zotero.read(1)) {
if (read == "{" && value[value.length-1] != "\\") {
openBraces++;
value += "{";
} else if (read == "}" && value[value.length-1] != "\\") {
openBraces--;
value += "}";
} else if (read == '"' && openBraces == 0) {
break;
} else {
value += read;
}
}
}
return value;
}
function unescapeBibTeX(value) {
if (value.length < 2) return value;
// replace accented characters (yucky slow)
value = value.replace(/{?(\\[`"'^~=]){?\\?([A-Za-z])}/g, "{$1$2}");
// normalize some special characters, e.g. caron \v{c} -> {\v c}
value = value.replace(/(\\[a-z]){(\\?[A-Za-z])}/g, "{$1 $2}");
//convert tex markup into permitted HTML
value = mapTeXmarkup(value);
for (var mapped in reversemappingTable) { // really really slow!
var unicode = reversemappingTable[mapped];
while (value.includes(mapped)) {
Zotero.debug("Replace " + mapped + " in " + value + " with " + unicode);
value = value.replace(mapped, unicode);
}
mapped = mapped.replace(/[{}]/g, "");
while (value.includes(mapped)) {
//Z.debug(value)
Zotero.debug("Replace(2) " + mapped + " in " + value + " with " + unicode);
value = value.replace(mapped, unicode);
}
}
value = value.replace(/\$([^$]+)\$/g, '$1')
// kill braces
value = value.replace(/([^\\])[{}]+/g, "$1");
if (value[0] == "{") {
value = value.substr(1);
}
// chop off backslashes
value = value.replace(/([^\\])\\([#$%&~_^\\{}])/g, "$1$2");
value = value.replace(/([^\\])\\([#$%&~_^\\{}])/g, "$1$2");
if (value[0] == "\\" && "#$%&~_^\\{}".includes(value[1])) {
value = value.substr(1);
}
if (value[value.length-1] == "\\" && "#$%&~_^\\{}".includes(value[value.length-2])) {
value = value.substr(0, value.length-1);
}
value = value.replace(/\\\\/g, "\\");
value = value.replace(/\s+/g, " ");
// Unescape HTML entities coming from web translators
if (Zotero.parentTranslator && value.includes('&')) {
value = value.replace(/&#?\w+;/g, function(entity) {
var char = ZU.unescapeHTML(entity);
if (char == entity) char = ZU.unescapeHTML(entity.toLowerCase()); // Sometimes case can be incorrect and entities are case-sensitive
return char;
});
}
return value;
}
function jabrefSplit(str, sep) {
var quoted = false;
var result = [];
str = str.split('');
while (str.length > 0) {
if (result.length == 0) { result = ['']; }
if (str[0] == sep) {
str.shift();
result.push('');
} else {
if (str[0] == '\\') { str.shift(); }
result[result.length - 1] += str.shift();
}
}
return result;
}
function jabrefCollect(arr, func) {
if (arr == null) { return []; }
var result = [];
for (var i = 0; i < arr.length; i++) {
if (func(arr[i])) {
result.push(arr[i]);
}
}
return result;
}
function processComment() {
var comment = "";
var read;
var collectionPath = [];
var parentCollection, collection;
while (read = Zotero.read(1)) {
if (read == "}") { break; } // JabRef ought to escape '}' but doesn't; embedded '}' chars will break the import just as it will on JabRef itself
comment += read;
}
if (comment == 'jabref-meta: groupsversion:3;') {
jabref.format = 3;
return;
}
if (comment.startsWith('jabref-meta: groupstree:')) {
if (jabref.format != 3) {
Zotero.debug("jabref: fatal: unsupported group format: " + jabref.format);
return;
}
comment = comment.replace(/^jabref-meta: groupstree:/, '').replace(/[\r\n]/gm, '');
var records = jabrefSplit(comment, ';');
while (records.length > 0) {
var record = records.shift();
var keys = jabrefSplit(record, ';');
if (keys.length < 2) { continue; }
var record = {id: keys.shift()};
record.data = record.id.match(/^([0-9]) ([^:]*):(.*)/);
if (record.data == null) {
Zotero.debug("jabref: fatal: unexpected non-match for group " + record.id);
return;
}
record.level = parseInt(record.data[1]);
record.type = record.data[2];
record.name = record.data[3];
record.intersection = keys.shift(); // 0 = independent, 1 = intersection, 2 = union
if (isNaN(record.level)) {
Zotero.debug("jabref: fatal: unexpected record level in " + record.id);
return;
}
if (record.level == 0) { continue; }
if (record.type != 'ExplicitGroup') {
Zotero.debug("jabref: fatal: group type " + record.type + " is not supported");
return;
}
collectionPath = collectionPath.slice(0, record.level - 1).concat([record.name]);
Zotero.debug("jabref: locating level " + record.level + ": " + collectionPath.join('/'));
if (jabref.root.hasOwnProperty(collectionPath[0])) {
collection = jabref.root[collectionPath[0]];
Zotero.debug("jabref: root " + collection.name + " found");
} else {
collection = new Zotero.Collection();
collection.name = collectionPath[0];
collection.type = 'collection';
collection.children = [];
jabref.root[collectionPath[0]] = collection;
Zotero.debug("jabref: root " + collection.name + " created");
}
parentCollection = null;
for (var i = 1; i < collectionPath.length; i++) {
var path = collectionPath[i];
Zotero.debug("jabref: looking for child " + path + " under " + collection.name);
var child = jabrefCollect(collection.children, function(n) { return (n.name == path); });
if (child.length != 0) {
child = child[0];
Zotero.debug("jabref: child " + child.name + " found under " + collection.name);
} else {
child = new Zotero.Collection();
child.name = path;
child.type = 'collection';
child.children = [];
collection.children.push(child);
Zotero.debug("jabref: child " + child.name + " created under " + collection.name);
}
parentCollection = collection;
collection = child;
}
if (parentCollection) {
parentCollection = jabrefCollect(parentCollection.children, function(n) { return (n.type == 'item'); });
}
if (record.intersection == '2' && parentCollection) { // union with parent
collection.children = parentCollection;
}
while (keys.length > 0) {
var key = keys.shift();
if (key != '') {
Zotero.debug('jabref: adding ' + key + ' to ' + collection.name);
collection.children.push({type: 'item', id: key});
}
}
if (parentCollection && record.intersection == '1') { // intersection with parent
collection.children = jabrefMap(collection.children, function(n) { parentCollection.includes(n); });
}
}
}
}
function beginRecord(type, closeChar) {
type = Zotero.Utilities.trimInternal(type.toLowerCase());
if (type !== "string" && type !== "preamble") {
var zoteroType = bibtex2zoteroTypeMap[type];
if (!zoteroType) {
Zotero.debug("discarded item from BibTeX; type was "+type);
return;
}
var item = new Zotero.Item(zoteroType);
item._extraFields = [];
}
else if (type == "preamble") { // Preamble (keeping separate in case we want to do something with these)
Zotero.debug("discarded preamble from BibTeX");
return;
}
// For theses write the thesisType determined by the BibTeX type.
if (type == "mastersthesis" && item) item.type = "Master's Thesis";
if (type == "phdthesis" && item) item.type = "PhD Thesis";
var field = "";
// by setting dontRead to true, we can skip a read on the next iteration
// of this loop. this is useful after we read past the end of a string.
var dontRead = false;
var value, rawValue;
while (dontRead || (read = Zotero.read(1))) {
dontRead = false;
// the equal sign indicate the start of the value
// which will be handled in the following part
// possible formats are:
// = 42,
// = "42",
// = {42},
// = name, (where this is defined as a string)
if (read == "=") {
var valueArray = [];
var rawValueArray = [];
// concatenation is possible with # and for that we
// do this do-while-loop here, e.g.
// = name # " and " # "Adam Smith",
do {
var read = Zotero.read(1);
// skip whitespaces
while (" \n\r\t".includes(read)) {
read = Zotero.read(1);
}
if (keyRe.test(read)) {
// read numeric data here, since we might get an end bracket
// that we should care about
value = "";
value += read;
// character is a number or part of a string name
while ((read = Zotero.read(1)) && /[a-zA-Z0-9\-:_]/.test(read)) {
value += read;
}
// don't read the next char; instead, process the character
// we already read past the end of the string
dontRead = true;
// see if there's a defined string
if (strings[value.toLowerCase()]) value = strings[value.toLowerCase()];
// rawValue has to be set for some fields to process
// thus, in this case, we set it equal to value
rawValue = value;
} else {
rawValue = getFieldValue(read);
value = unescapeBibTeX(rawValue);
}
valueArray.push(value);
rawValueArray.push(rawValue);
while (" \n\r\t".includes(read)) {
read = Zotero.read(1);
}
} while (read === "#");
value = valueArray.join('');
rawValue = rawValueArray.join('');
if (item) {
processField(item, field.toLowerCase(), value, rawValue);
} else if (type == "string") {
strings[field.toLowerCase()] = value;
}
field = "";
}
// commas reset, i.e. we are not reading a field
// but rather we are reading the bibkey
else if (read == ",") {
if (item.itemID == null) {
item.itemID = field; // itemID = citekey
}
field = "";
}
// closing character
else if (read == closeChar) {
if (item) {
if (item.backupLocation) {
if (item.itemType=="conferencePaper") {
item._extraFields.push({field: "event-place", value: item.backupLocation});
} else if (!item.place) {
item.place = item.backupLocation;
}
delete item.backupLocation;
}
if (!item.date) {
item.date = dateFieldsToDate(item.year, item.month, item.day);
}
delete item.year;
delete item.month;
delete item.day;
item.extra = extraFieldsToString(item._extraFields);
delete item._extraFields;
if (!item.publisher && item.backupPublisher){
item.publisher=item.backupPublisher;
delete item.backupPublisher;
}
return item.complete();
}
return;
}
// skip whitespaces; the rest will become
// the field name (or bibkey)
else if (!" \n\r\t".includes(read)) {
field += read;
}
}
}
function doImport() {
if (typeof Promise == 'undefined') {
readString(
function () {},
function (e) {
throw e;
}
);
}
else {
return new Promise(function (resolve, reject) {
readString(resolve, reject);
});
}
}
function readString(resolve, reject) {
var read = "";
var type = false;
var next = function () {
readString(resolve, reject);
};
try {
while (read = Zotero.read(1)) {
if (read == "@") {
type = "";
} else if (type !== false) {
if (type == "comment") {
processComment();
type = false;
} else if (read == "{") { // possible open character
// This might return a promise if an item was saved
// TODO: When 5.0-only, make sure this always returns a promise
var maybePromise = beginRecord(type, "}");
if (maybePromise) {
maybePromise.then(next);
return;
}
} else if (read == "(") { // possible open character
var maybePromise = beginRecord(type, ")");
if (maybePromise) {
maybePromise.then(next);
return;
}
} else if (/[a-zA-Z0-9-_]/.test(read)) {
type += read;
}
}
}
for (var key in jabref.root) {
// TODO: Handle promise?
if (jabref.root.hasOwnProperty(key)) { jabref.root[key].complete(); }
}
}
catch (e) {
reject(e);
return;
}
resolve();
}
// some fields are, in fact, macros. If that is the case then we should not put the
// data in the braces as it will cause the macros to not expand properly
function writeField(field, value, isMacro) {
if (!value && typeof value != "number") return;
value = value + ""; // convert integers to strings
Zotero.write(",\n\t" + field + " = ");
if (!isMacro) Zotero.write("{");
// url field is preserved, for use with \href and \url
// Other fields (DOI?) may need similar treatment
if (!isMacro && !(field == "url" || field == "doi" || field == "file" || field == "lccn" )) {
// I hope these are all the escape characters!
value = escapeSpecialCharacters(value);
if (caseProtectedFields.includes(field)) {
value = ZU.XRegExp.replace(value, protectCapsRE, "$1{$2$3}"); // only $2 or $3 will have a value, not both
}
}
var exportCharset = Zotero.getOption("exportCharset");
if (exportCharset && !exportCharset.startsWith("UTF-8")) {
value = value.replace(/[\u0080-\uFFFF]/g, mapAccent);
}
//convert the HTML markup allowed in Zotero for rich text to TeX; excluding doi/url/file shouldn't be necessary, but better to be safe;
if (!((field == "url") || (field == "doi") || (field == "file"))) value = mapHTMLmarkup(value);
Zotero.write(value);
if (!isMacro) Zotero.write("}");
}
function mapHTMLmarkup(characters){
//converts the HTML markup allowed in Zotero for rich text to TeX
//since < and > have already been escaped, we need this rather hideous code - I couldn't see a way around it though.
//italics and bold
characters = characters.replace(/\{\\textless\}i\{\\textgreater\}(.+?)\{\\textless\}\/i{\\textgreater\}/g, "\\textit{$1}")
.replace(/\{\\textless\}b\{\\textgreater\}(.+?)\{\\textless\}\/b{\\textgreater\}/g, "\\textbf{$1}");
//sub and superscript
characters = characters.replace(/\{\\textless\}sup\{\\textgreater\}(.+?)\{\\textless\}\/sup{\\textgreater\}/g, "\$^{\\textrm{$1}}\$")
.replace(/\{\\textless\}sub\{\\textgreater\}(.+?)\{\\textless\}\/sub\{\\textgreater\}/g, "\$_{\\textrm{$1}}\$");
//two variants of small caps
characters = characters.replace(/\{\\textless\}span\sstyle=\"small\-caps\"\{\\textgreater\}(.+?)\{\\textless\}\/span{\\textgreater\}/g, "\\textsc{$1}")
.replace(/\{\\textless\}sc\{\\textgreater\}(.+?)\{\\textless\}\/sc\{\\textgreater\}/g, "\\textsc{$1}");
return characters;
}
function xcase(prefix, cased, tag, tex) {
return (prefix ? `$${prefix}$` : '') + (reversemappingTable[`$${tex}{${cased}}$`] || `<${tag}>${cased}</${tag}>`)
}
function sup(match, prefix, cased) {
return xcase(prefix, cased, 'sup', '^');
}
function sub(match, prefix, cased) {
return xcase(prefix, cased, 'sub', '_');
}
function mapTeXmarkup(tex){
//reverse of the above - converts tex mark-up into html mark-up permitted by Zotero
//italics and bold
tex = tex.replace(/\\textit\{([^\}]+\})/g, "<i>$1</i>").replace(/\\textbf\{([^\}]+\})/g, "<b>$1</b>");
//two versions of subscript the .* after $ is necessary because people m
tex = tex.replace(/\$([^\{\$]*)_\{([^\}]+)\}\$/g, sub).replace(/\$([^\{\$]*)_\{\\textrm\{([^\}\$]+)\}\}\$/g, sub);
//two version of superscript
tex = tex.replace(/\$([^\{\$]*)\^\{([^\}]+)\}\$/g, sup).replace(/\$([^\{\$]*)\^\{\\textrm\{([^\}]+)\}\}\$/g, sup);
//small caps
tex = tex.replace(/\\textsc\{([^\}]+)/g, "<span style=\"small-caps\">$1</span>");
return tex;
}
//Disable the isTitleCase function until we decide what to do with it.
/* const skipWords = ["but", "or", "yet", "so", "for", "and", "nor",
"a", "an", "the", "at", "by", "from", "in", "into", "of", "on",
"to", "with", "up", "down", "as", "while", "aboard", "about",
"above", "across", "after", "against", "along", "amid", "among",
"anti", "around", "as", "before", "behind", "below", "beneath",
"beside", "besides", "between", "beyond", "but", "despite",
"down", "during", "except", "for", "inside", "like", "near",
"off", "onto", "over", "past", "per", "plus", "round", "save",
"since", "than", "through", "toward", "towards", "under",
"underneath", "unlike", "until", "upon", "versus", "via",
"within", "without"];
function isTitleCase(string) {
const wordRE = /[\s[(]([^\s,\.:?!\])]+)/g;
var word;
while (word = wordRE.exec(string)) {
word = word[1];
if (word.search(/\d/) != -1 //ignore words with numbers (including just numbers)
|| skipWords.includes(word.toLowerCase())) {
continue;
}
if (word.toLowerCase() == word) return false;
}
return true;
}
*/
// See http://tex.stackexchange.com/questions/230750/open-brace-in-bibtex-fields/230754
var vphantomRe = /\\vphantom{\\}}((?:.(?!\\vphantom{\\}}))*)\\vphantom{\\{}/g;
function escapeSpecialCharacters(str) {
var newStr = str.replace(/[|\<\>\~\^\\\{\}]/g, function(c) { return alwaysMap[c]; })
.replace(/([\#\$\%\&\_])/g, "\\$1");
// We escape each brace in the text by making sure that it has a counterpart,
// but sometimes this is overkill if the brace already has a counterpart in
// the text.
if (newStr.includes('\\vphantom')) {
var m;
while (m = vphantomRe.exec(newStr)) {
// Can't use a simple replace, because we want to match up inner with inner
// and outer with outer
newStr = newStr.substr(0,m.index) + m[1] + newStr.substr(m.index + m[0].length);
vphantomRe.lastIndex = 0; // Start over, because the previous replacement could have created a new pair
}
}
return newStr;
}
function mapAccent(character) {
return (mappingTable[character] ? mappingTable[character] : "?");
}
var filePathSpecialChars = '\\\\:;$'; // $ for Mendeley (see cleanFilePath for {})
var encodeFilePathRE = new RegExp('[' + filePathSpecialChars + ']', 'g');
// We strip out {} in general, because \{ and \} still break BibTeX (0.99d)
function cleanFilePath(str) {
if (!str) return '';
return str.replace(/(?:\s*[{}]+)+\s*/g, ' ');
}
function encodeFilePathComponent(value) {
if (!value) return '';
return value.replace(encodeFilePathRE, "\\$&");
}
function decodeFilePathComponent(value) {
if (!value) return '';
return value.replace(/\\([^A-Za-z0-9.])/g, "$1");
}
// a little substitution function for BibTeX keys, where we don't want LaTeX
// escaping, but we do want to preserve the base characters
function tidyAccents(s) {
var r=s.toLowerCase();
// XXX Remove conditional when we drop Zotero 2.1.x support
// This is supported in Zotero 3.0 and higher
if (ZU.removeDiacritics !== undefined)
r = ZU.removeDiacritics(r, true);
else {
// We fall back on the replacement list we used previously
r = r.replace(new RegExp("[ä]", 'g'),"ae");
r = r.replace(new RegExp("[ö]", 'g'),"oe");
r = r.replace(new RegExp("[ü]", 'g'),"ue");
r = r.replace(new RegExp("[àáâãå]", 'g'),"a");
r = r.replace(new RegExp("æ", 'g'),"ae");
r = r.replace(new RegExp("ç", 'g'),"c");
r = r.replace(new RegExp("[èéêë]", 'g'),"e");
r = r.replace(new RegExp("[ìíîï]", 'g'),"i");
r = r.replace(new RegExp("ñ", 'g'),"n");
r = r.replace(new RegExp("[òóôõ]", 'g'),"o");
r = r.replace(new RegExp("œ", 'g'),"oe");
r = r.replace(new RegExp("[ùúû]", 'g'),"u");
r = r.replace(new RegExp("[ýÿ]", 'g'),"y");
}
return r;
};
var numberRe = /^[0-9]+/;
// Below is a list of words that should not appear as part of the citation key
// it includes the indefinite articles of English, German, French and Spanish, as well as a small set of English prepositions whose
// force is more grammatical than lexical, i.e. which are likely to strike many as 'insignificant'.
// The assumption is that most who want a title word in their key would prefer the first word of significance.
// Also remove markup
var citeKeyTitleBannedRe = /\b(a|an|the|some|from|on|in|to|of|do|with|der|die|das|ein|eine|einer|eines|einem|einen|un|une|la|le|l\'|les|el|las|los|al|uno|una|unos|unas|de|des|del|d\')(\s+|\b)|(<\/?(i|b|sup|sub|sc|span style=\"small-caps\"|span)>)/g;
var citeKeyConversionsRe = /%([a-zA-Z])/;
var citeKeyConversions = {
"a":function (flags, item) {
if (item.creators && item.creators[0] && item.creators[0].lastName) {
return item.creators[0].lastName.toLowerCase().replace(/ /g,"_").replace(/,/g,"");
}
return "noauthor";
},
"t":function (flags, item) {
if (item["title"]) {
return item["title"].toLowerCase().replace(citeKeyTitleBannedRe, "").split(/\s+/g)[0];
}
return "notitle";
},
"y":function (flags, item) {
if (item.date) {
var date = Zotero.Utilities.strToDate(item.date);
if (date.year && numberRe.test(date.year)) {
return date.year;
}
}
return "nodate";
}
};
function buildCiteKey (item, extraFields, citekeys) {
if (extraFields) {
const citationKey = extraFields.findIndex(field => field.field && field.value && field.field.toLowerCase() === 'citation key');
if (citationKey >= 0) return extraFields.splice(citationKey, 1)[0].value;
}
if (item.citationKey) return item.citationKey;
var basekey = "";
var counter = 0;
var citeKeyFormatRemaining = citeKeyFormat;
while (citeKeyConversionsRe.test(citeKeyFormatRemaining)) {
if (counter > 100) {
Zotero.debug("Pathological BibTeX format: " + citeKeyFormat);
break;
}
var m = citeKeyFormatRemaining.match(citeKeyConversionsRe);
if (m.index > 0) {
//add data before the conversion match to basekey
basekey = basekey + citeKeyFormatRemaining.substr(0, m.index);
}
var flags = ""; // for now
var f = citeKeyConversions[m[1]];
if (typeof(f) == "function") {
var value = f(flags, item);
Zotero.debug("Got value " + value + " for %" + m[1]);
//add conversion to basekey
basekey = basekey + value;
}
citeKeyFormatRemaining = citeKeyFormatRemaining.substr(m.index + m.length);
counter++;
}
if (citeKeyFormatRemaining.length > 0) {
basekey = basekey + citeKeyFormatRemaining;
}
// for now, remove any characters not explicitly known to be allowed;
// we might want to allow UTF-8 citation keys in the future, depending
// on implementation support.
//
// no matter what, we want to make sure we exclude
// " # % ' ( ) , = { } ~ and backslash
// however, we want to keep the base characters
basekey = tidyAccents(basekey);
// use legacy pattern for all old items to not break existing usages
var citeKeyCleanRe = /[^a-z0-9\!\$\&\*\+\-\.\/\:\;\<\>\?\[\]\^\_\`\|]+/g;
// but use the simple pattern for all newly added items
// or always if the hiddenPref is set
// extensions.zotero.translators.BibTeX.export.simpleCitekey
if ((Zotero.getHiddenPref && Zotero.getHiddenPref('BibTeX.export.simpleCitekey'))
|| (item.dateAdded && parseInt(item.dateAdded.substr(0, 4)) >= 2020)) {
citeKeyCleanRe = /[^a-z0-9_-]/g;
}
basekey = basekey.replace(citeKeyCleanRe, "");
var citekey = basekey;
var i = 0;
while (citekeys[citekey]) {
i++;
citekey = basekey + "-" + i;
}
citekeys[citekey] = true;
return citekey;
}
var protectCapsRE;
function doExport() {
if (Zotero.getHiddenPref && Zotero.getHiddenPref('BibTeX.export.dontProtectInitialCase')) {
// Case of words with uppercase characters in non-initial positions is
// preserved with braces.
// Two extra captures because of the other regexp below
protectCapsRE = new ZU.XRegExp("()()\\b([\\p{Letter}\\d]+\\p{Uppercase_Letter}[\\p{Letter}\\d]*)", 'g');
} else {
// Protect all upper case letters, even if the uppercase letter is only in
// initial position of the word.
// Don't protect first word if only first letter is capitalized
protectCapsRE = new ZU.XRegExp(
"(.)\\b([\\p{Letter}\\d]*\\p{Uppercase_Letter}[\\p{Letter}\\d]*)" // Non-initial words with capital letter anywhere
+ "|^([\\p{Letter}\\d]+\\p{Uppercase_Letter}[\\p{Letter}\\d]*)" // Initial word with capital in non-initial position
, 'g');
}
//Zotero.write("% BibTeX export generated by Zotero "+Zotero.Utilities.getVersion());
// to make sure the BOM gets ignored
Zotero.write("\n");
var first = true;
var citekeys = new Object();
var item;
while (item = Zotero.nextItem()) {
//don't export standalone notes and attachments
if (item.itemType == "note" || item.itemType == "attachment") continue;
// determine type
var type = zotero2bibtexTypeMap[item.itemType];
if (typeof(type) == "function") { type = type(item); }
// For theses BibTeX distinguish between @mastersthesis and @phdthesis
// and the default mapping will map all Zotero thesis items to a
// BibTeX phdthesis item. Here we try to fix this by examining the
// Zotero thesisType field.
if (type == "phdthesis") {
// In practice, we just want to separate out masters theses,
// and will assume everything else maps to @phdthesis. Better to
// err on the side of caution.
var thesisType = item.type && item.type.toLowerCase().replace(/[\s.]+|thesis|unpublished/g, '');
if (thesisType && (thesisType == 'master' || thesisType == 'masters' || thesisType == "master's" || thesisType == 'ms' || thesisType == 'msc' || thesisType == 'ma')) {
type = "mastersthesis";
item["type"] = "";
}
}
if (!type) type = "misc";
// create a unique citation key
var extraFields = item.extra ? parseExtraFields(item.extra) : null;
var citekey = buildCiteKey(item, extraFields, citekeys);
// write citation key
Zotero.write((first ? "" : "\n\n") + "@"+type+"{"+citekey);
first = false;
for (var field in fieldMap) {
if (item[fieldMap[field]]) {
writeField(field, item[fieldMap[field]]);
}
}
if (item.reportNumber || item.issue || item.seriesNumber || item.patentNumber) {
writeField("number", item.reportNumber || item.issue || item.seriesNumber|| item.patentNumber);
}
if (item.accessDate){
var accessYMD = item.accessDate.replace(/\s*\d+:\d+:\d+/, "");
writeField("urldate", accessYMD);
}
if (item.publicationTitle) {
if (item.itemType == "bookSection" || item.itemType == "conferencePaper") {
writeField("booktitle", item.publicationTitle);
} else if (Zotero.getOption("useJournalAbbreviation") && item.journalAbbreviation){
writeField("journal", item.journalAbbreviation);
} else {
writeField("journal", item.publicationTitle);
}
}
if (item.publisher) {
if (item.itemType == "thesis") {
writeField("school", item.publisher);
} else if (item.itemType =="report") {
writeField("institution", item.publisher);
} else {
writeField("publisher", item.publisher);
}
}
if (item.creators && item.creators.length) {
// split creators into subcategories
var author = "";
var editor = "";
var translator = "";
var collaborator = "";
var primaryCreatorType = Zotero.Utilities.getCreatorsForType(item.itemType)[0];
for (var i in item.creators) {
var creator = item.creators[i];
var creatorString;
if (creator.firstName) {
var fname = creator.firstName.split(/\s*,!?\s*/);
fname.push(fname.shift()); // If we have a Jr. part(s), it should precede first name
creatorString = creator.lastName + ", " + fname.join(', ');
} else {
creatorString = creator.lastName;
}
creatorString = escapeSpecialCharacters(creatorString);
if (creator.fieldMode == true) { // fieldMode true, assume corporate author
creatorString = "{" + creatorString + "}";
} else {
creatorString = creatorString.replace(/ (and) /gi, ' {$1} ');
}
if (creator.creatorType == "editor" || creator.creatorType == "seriesEditor") {
editor += " and "+creatorString;
} else if (creator.creatorType == "translator") {
translator += " and "+creatorString;
} else if (creator.creatorType == primaryCreatorType) {
author += " and "+creatorString;
} else {
collaborator += " and "+creatorString;
}
}
if (author) {
writeField("author", "{" + author.substr(5) + "}", true);
}
if (editor) {
writeField("editor", "{" + editor.substr(5) + "}", true);
}
if (translator) {
writeField("translator", "{" + translator.substr(5) + "}", true);
}
if (collaborator) {
writeField("collaborator", "{" + collaborator.substr(5) + "}", true);
}
}
if (item.date) {
var date = Zotero.Utilities.strToDate(item.date);
// need to use non-localized abbreviation
if (typeof date.month == "number") {
writeField("month", months[date.month], true);
}
if (date.year) {
writeField("year", date.year);
}
}
if (extraFields) {
// Export identifiers
for (var i=0; i<extraFields.length; i++) {
var rec = extraFields[i];
if (!rec.field || !revExtraIds[rec.field]) continue;
var value = rec.value.trim();
if (value) {
writeField(revExtraIds[rec.field], '{'+value+'}', true);
extraFields.splice(i, 1);
i--;
}
}
var extra = extraFieldsToString(extraFields); // Make sure we join exactly with what we split
if (extra) writeField("note", extra);
}
if (item.tags && item.tags.length) {
var tagString = "";
for (var i in item.tags) {
var tag = item.tags[i];
tagString += ", "+tag.tag;
}
writeField("keywords", tagString.substr(2));
}
if (item.pages) {
writeField("pages", item.pages.replace(/[-\u2012-\u2015\u2053]+/g,"--"));
}
// Commented out, because we don't want a books number of pages in the BibTeX "pages" field for books.
//if (item.numPages) {
// writeField("pages", item.numPages);
//}
/* We'll prefer url over howpublished see
https://forums.zotero.org/discussion/24554/bibtex-doubled-url/#Comment_157802
if (item.itemType == "webpage") {
writeField("howpublished", item.url);
}*/
if (item.notes && Zotero.getOption("exportNotes")) {
for (var i in item.notes) {
var note = item.notes[i];
writeField("annote", Zotero.Utilities.unescapeHTML(note["note"]));
}
}
if (item.attachments) {
var attachmentString = "";
for (var i in item.attachments) {
var attachment = item.attachments[i];
// Unfortunately, it looks like \{ in file field breaks BibTeX (0.99d)
// even if properly backslash escaped, so we have to make sure that
// it doesn't make it into this field at all
var title = cleanFilePath(attachment.title),
path = null;
if (Zotero.getOption("exportFileData") && attachment.saveFile) {
path = cleanFilePath(attachment.defaultPath);
attachment.saveFile(path, true);
} else if (attachment.localPath) {
path = cleanFilePath(attachment.localPath);
}
if (path) {
attachmentString += ";" + encodeFilePathComponent(title)
+ ":" + encodeFilePathComponent(path)
+ ":" + encodeFilePathComponent(attachment.mimeType);
}
}
if (attachmentString) {
writeField("file", attachmentString.substr(1));
}
}
Zotero.write(",\n}");
}
Zotero.write("\n");
}
var exports = {
"doExport": doExport,
"doImport": doImport,
"setKeywordDelimRe": setKeywordDelimRe,
"setKeywordSplitOnSpace": setKeywordSplitOnSpace
};
/*
* new mapping table based on that from Matthias Steffens,
* then enhanced with some fields generated from the unicode table.
*/
var mappingTable = {
"\u00A0":"~", // NO-BREAK SPACE
"\u00A1":"{\\textexclamdown}", // INVERTED EXCLAMATION MARK
"\u00A2":"{\\textcent}", // CENT SIGN
"\u00A3":"{\\textsterling}", // POUND SIGN
"\u00A5":"{\\textyen}", // YEN SIGN
"\u00A6":"{\\textbrokenbar}", // BROKEN BAR
"\u00A7":"{\\textsection}", // SECTION SIGN
"\u00A8":"{\\textasciidieresis}", // DIAERESIS
"\u00A9":"{\\textcopyright}", // COPYRIGHT SIGN
"\u00AA":"{\\textordfeminine}", // FEMININE ORDINAL INDICATOR
"\u00AB":"{\\guillemotleft}", // LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
"\u00AC":"{\\textlnot}", // NOT SIGN
"\u00AD":"-", // SOFT HYPHEN
"\u00AE":"{\\textregistered}", // REGISTERED SIGN
"\u00AF":"{\\textasciimacron}", // MACRON
"\u00B0":"{\\textdegree}", // DEGREE SIGN
"\u00B1":"{\\textpm}", // PLUS-MINUS SIGN
"\u00B2":"{\\texttwosuperior}", // SUPERSCRIPT TWO
"\u00B3":"{\\textthreesuperior}", // SUPERSCRIPT THREE
"\u00B4":"{\\textasciiacute}", // ACUTE ACCENT
"\u00B5":"{\\textmu}", // MICRO SIGN
"\u00B6":"{\\textparagraph}", // PILCROW SIGN
"\u00B7":"{\\textperiodcentered}", // MIDDLE DOT
"\u00B8":"{\\c\\ }", // CEDILLA
"\u00B9":"{\\textonesuperior}", // SUPERSCRIPT ONE
"\u00BA":"{\\textordmasculine}", // MASCULINE ORDINAL INDICATOR
"\u00BB":"{\\guillemotright}", // RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
"\u00BC":"{\\textonequarter}", // VULGAR FRACTION ONE QUARTER
"\u00BD":"{\\textonehalf}", // VULGAR FRACTION ONE HALF
"\u00BE":"{\\textthreequarters}", // VULGAR FRACTION THREE QUARTERS
"\u00BF":"{\\textquestiondown}", // INVERTED QUESTION MARK
"\u00C6":"{\\AE}", // LATIN CAPITAL LETTER AE
"\u00D0":"{\\DH}", // LATIN CAPITAL LETTER ETH
"\u00D7":"{\\texttimes}", // MULTIPLICATION SIGN
"\u00D8":"{\\O}", // LATIN CAPITAL LETTER O WITH STROKE
"\u00DE":"{\\TH}", // LATIN CAPITAL LETTER THORN
"\u00DF":"{\\ss}", // LATIN SMALL LETTER SHARP S
"\u00E6":"{\\ae}", // LATIN SMALL LETTER AE
"\u00F0":"{\\dh}", // LATIN SMALL LETTER ETH
"\u00F7":"{\\textdiv}", // DIVISION SIGN
"\u00F8":"{\\o}", // LATIN SMALL LETTER O WITH STROKE
"\u00FE":"{\\th}", // LATIN SMALL LETTER THORN
"\u0131":"{\\i}", // LATIN SMALL LETTER DOTLESS I
"\u0132":"IJ", // LATIN CAPITAL LIGATURE IJ
"\u0133":"ij", // LATIN SMALL LIGATURE IJ
"\u0138":"k", // LATIN SMALL LETTER KRA
"\u0149":"'n", // LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
"\u014A":"{\\NG}", // LATIN CAPITAL LETTER ENG
"\u014B":"{\\ng}", // LATIN SMALL LETTER ENG
"\u0152":"{\\OE}", // LATIN CAPITAL LIGATURE OE
"\u0153":"{\\oe}", // LATIN SMALL LIGATURE OE
"\u017F":"s", // LATIN SMALL LETTER LONG S
"\u02B9":"'", // MODIFIER LETTER PRIME
"\u02BB":"'", // MODIFIER LETTER TURNED COMMA
"\u02BC":"'", // MODIFIER LETTER APOSTROPHE
"\u02BD":"'", // MODIFIER LETTER REVERSED COMMA
"\u02C6":"{\\textasciicircum}", // MODIFIER LETTER CIRCUMFLEX ACCENT
"\u02C8":"'", // MODIFIER LETTER VERTICAL LINE
"\u02C9":"-", // MODIFIER LETTER MACRON
"\u02CC":",", // MODIFIER LETTER LOW VERTICAL LINE
"\u02D0":":", // MODIFIER LETTER TRIANGULAR COLON
"\u02DA":"o", // RING ABOVE
"\u02DC":"\\~{}", // SMALL TILDE
"\u02DD":"{\\textacutedbl}", // DOUBLE ACUTE ACCENT
"\u0374":"'", // GREEK NUMERAL SIGN
"\u0375":",", // GREEK LOWER NUMERAL SIGN
"\u037E":";", // GREEK QUESTION MARK
//Greek letters courtesy of spartanroc
"\u0393":"$\\Gamma$", // GREEK Gamma
"\u0394":"$\\Delta$", // GREEK Delta
"\u0398":"$\\Theta$", // GREEK Theta
"\u039B":"$\\Lambda$", // GREEK Lambda
"\u039E":"$\\Xi$", // GREEK Xi
"\u03A0":"$\\Pi$", // GREEK Pi
"\u03A3":"$\\Sigma$", // GREEK Sigma
"\u03A6":"$\\Phi$", // GREEK Phi
"\u03A8":"$\\Psi$", // GREEK Psi
"\u03A9":"$\\Omega$", // GREEK Omega
"\u03B1":"$\\alpha$", // GREEK alpha
"\u03B2":"$\\beta$", // GREEK beta
"\u03B3":"$\\gamma$", // GREEK gamma
"\u03B4":"$\\delta$", // GREEK delta
"\u03B5":"$\\varepsilon$", // GREEK var-epsilon
"\u03B6":"$\\zeta$", // GREEK zeta
"\u03B7":"$\\eta$", // GREEK eta
"\u03B8":"$\\theta$", // GREEK theta
"\u03B9":"$\\iota$", // GREEK iota
"\u03BA":"$\\kappa$", // GREEK kappa
"\u03BB":"$\\lambda$", // GREEK lambda
"\u03BC":"$\\mu$", // GREEK mu
"\u03BD":"$\\nu$", // GREEK nu
"\u03BE":"$\\xi$", // GREEK xi
"\u03C0":"$\\pi$", // GREEK pi
"\u03C1":"$\\rho$", // GREEK rho
"\u03C2":"$\\varsigma$", // GREEK var-sigma
"\u03C3":"$\\sigma$", // GREEK sigma
"\u03C4":"$\\tau$", // GREEK tau
"\u03C5":"$\\upsilon$", // GREEK upsilon
"\u03C6":"$\\varphi$", // GREEK var-phi
"\u03C7":"$\\chi$", // GREEK chi
"\u03C8":"$\\psi$", // GREEK psi
"\u03C9":"$\\omega$", // GREEK omega
"\u03D1":"$\\vartheta$", // GREEK var-theta
"\u03D2":"$\\Upsilon$", // GREEK Upsilon
"\u03D5":"$\\phi$", // GREEK phi
"\u03D6":"$\\varpi$", // GREEK var-pi
"\u03F1":"$\\varrho$", // GREEK var-rho
"\u03F5":"$\\epsilon$", // GREEK epsilon
//Greek letters end
"\u2000":" ", // EN QUAD
"\u2001":" ", // EM QUAD
"\u2002":" ", // EN SPACE
"\u2003":" ", // EM SPACE
"\u2004":" ", // THREE-PER-EM SPACE
"\u2005":" ", // FOUR-PER-EM SPACE
"\u2006":" ", // SIX-PER-EM SPACE
"\u2007":" ", // FIGURE SPACE
"\u2008":" ", // PUNCTUATION SPACE
"\u2009":" ", // THIN SPACE
"\u2010":"-", // HYPHEN
"\u2011":"-", // NON-BREAKING HYPHEN
"\u2012":"-", // FIGURE DASH
"\u2013":"{\\textendash}", // EN DASH
"\u2014":"{\\textemdash}", // EM DASH
"\u2015":"{\\textemdash}", // HORIZONTAL BAR or QUOTATION DASH (not in LaTeX -- use EM DASH)
"\u2016":"{\\textbardbl}", // DOUBLE VERTICAL LINE
"\u2017":"{\\textunderscore}", // DOUBLE LOW LINE
"\u2018":"{\\textquoteleft}", // LEFT SINGLE QUOTATION MARK
"\u2019":"{\\textquoteright}", // RIGHT SINGLE QUOTATION MARK
"`" : "\u2018", // LEFT SINGLE QUOTATION MARK
"'" : "\u2019", // RIGHT SINGLE QUOTATION MARK
"\u201A":"{\\quotesinglbase}", // SINGLE LOW-9 QUOTATION MARK
"\u201B":"'", // SINGLE HIGH-REVERSED-9 QUOTATION MARK
"\u201C":"{\\textquotedblleft}", // LEFT DOUBLE QUOTATION MARK
"\u201D":"{\\textquotedblright}", // RIGHT DOUBLE QUOTATION MARK
"\u201E":"{\\quotedblbase}", // DOUBLE LOW-9 QUOTATION MARK
"\u201F":"{\\quotedblbase}", // DOUBLE HIGH-REVERSED-9 QUOTATION MARK
"\u2020":"{\\textdagger}", // DAGGER
"\u2021":"{\\textdaggerdbl}", // DOUBLE DAGGER
"\u2022":"{\\textbullet}", // BULLET
"\u2023":">", // TRIANGULAR BULLET
"\u2024":".", // ONE DOT LEADER
"\u2025":"..", // TWO DOT LEADER
"\u2026":"{\\textellipsis}", // HORIZONTAL ELLIPSIS
"\u2027":"-", // HYPHENATION POINT
"\u202F":" ", // NARROW NO-BREAK SPACE
"\u2030":"{\\textperthousand}", // PER MILLE SIGN
"\u2032":"'", // PRIME
"\u2033":"'", // DOUBLE PRIME
"\u2034":"'''", // TRIPLE PRIME
"\u2035":"`", // REVERSED PRIME
"\u2036":"``", // REVERSED DOUBLE PRIME
"\u2037":"```", // REVERSED TRIPLE PRIME
"\u2039":"{\\guilsinglleft}", // SINGLE LEFT-POINTING ANGLE QUOTATION MARK
"\u203A":"{\\guilsinglright}", // SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
"\u203C":"!!", // DOUBLE EXCLAMATION MARK
"\u203E":"-", // OVERLINE
"\u2043":"-", // HYPHEN BULLET
"\u2044":"{\\textfractionsolidus}", // FRACTION SLASH
"\u2048":"?!", // QUESTION EXCLAMATION MARK
"\u2049":"!?", // EXCLAMATION QUESTION MARK
"\u204A":"7", // TIRONIAN SIGN ET
"\u2070":"$^{0}$", // SUPERSCRIPT ZERO
"\u2074":"$^{4}$", // SUPERSCRIPT FOUR
"\u2075":"$^{5}$", // SUPERSCRIPT FIVE
"\u2076":"$^{6}$", // SUPERSCRIPT SIX
"\u2077":"$^{7}$", // SUPERSCRIPT SEVEN
"\u2078":"$^{8}$", // SUPERSCRIPT EIGHT
"\u2079":"$^{9}$", // SUPERSCRIPT NINE
"\u207A":"$^{+}$", // SUPERSCRIPT PLUS SIGN
"\u207B":"$^{-}$", // SUPERSCRIPT MINUS
"\u207C":"$^{=}$", // SUPERSCRIPT EQUALS SIGN
"\u207D":"$^{(}$", // SUPERSCRIPT LEFT PARENTHESIS
"\u207E":"$^{)}$", // SUPERSCRIPT RIGHT PARENTHESIS
"\u207F":"$^{n}$", // SUPERSCRIPT LATIN SMALL LETTER N
"\u2080":"$_{0}$", // SUBSCRIPT ZERO
"\u2081":"$_{1}$", // SUBSCRIPT ONE
"\u2082":"$_{2}$", // SUBSCRIPT TWO
"\u2083":"$_{3}$", // SUBSCRIPT THREE
"\u2084":"$_{4}$", // SUBSCRIPT FOUR
"\u2085":"$_{5}$", // SUBSCRIPT FIVE
"\u2086":"$_{6}$", // SUBSCRIPT SIX
"\u2087":"$_{7}$", // SUBSCRIPT SEVEN
"\u2088":"$_{8}$", // SUBSCRIPT EIGHT
"\u2089":"$_{9}$", // SUBSCRIPT NINE
"\u208A":"$_{+}$", // SUBSCRIPT PLUS SIGN
"\u208B":"$_{-}$", // SUBSCRIPT MINUS
"\u208C":"$_{=}$", // SUBSCRIPT EQUALS SIGN
"\u208D":"$_{(}$", // SUBSCRIPT LEFT PARENTHESIS
"\u208E":"$_{)}$", // SUBSCRIPT RIGHT PARENTHESIS
"\u20AC":"{\\texteuro}", // EURO SIGN
"\u2100":"a/c", // ACCOUNT OF
"\u2101":"a/s", // ADDRESSED TO THE SUBJECT
"\u2103":"{\\textcelsius}", // DEGREE CELSIUS
"\u2105":"c/o", // CARE OF
"\u2106":"c/u", // CADA UNA
"\u2109":"F", // DEGREE FAHRENHEIT
"\u2113":"l", // SCRIPT SMALL L
"\u2116":"{\\textnumero}", // NUMERO SIGN
"\u2117":"{\\textcircledP}", // SOUND RECORDING COPYRIGHT
"\u2120":"{\\textservicemark}", // SERVICE MARK
"\u2121":"TEL", // TELEPHONE SIGN
"\u2122":"{\\texttrademark}", // TRADE MARK SIGN
"\u2126":"{\\textohm}", // OHM SIGN
"\u212A":"K", // KELVIN SIGN
"\u212B":"A", // ANGSTROM SIGN
"\u212E":"{\\textestimated}", // ESTIMATED SYMBOL
"\u2153":" 1/3", // VULGAR FRACTION ONE THIRD
"\u2154":" 2/3", // VULGAR FRACTION TWO THIRDS
"\u2155":" 1/5", // VULGAR FRACTION ONE FIFTH
"\u2156":" 2/5", // VULGAR FRACTION TWO FIFTHS
"\u2157":" 3/5", // VULGAR FRACTION THREE FIFTHS
"\u2158":" 4/5", // VULGAR FRACTION FOUR FIFTHS
"\u2159":" 1/6", // VULGAR FRACTION ONE SIXTH
"\u215A":" 5/6", // VULGAR FRACTION FIVE SIXTHS
"\u215B":" 1/8", // VULGAR FRACTION ONE EIGHTH
"\u215C":" 3/8", // VULGAR FRACTION THREE EIGHTHS
"\u215D":" 5/8", // VULGAR FRACTION FIVE EIGHTHS
"\u215E":" 7/8", // VULGAR FRACTION SEVEN EIGHTHS
"\u215F":" 1/", // FRACTION NUMERATOR ONE
"\u2160":"I", // ROMAN NUMERAL ONE
"\u2161":"II", // ROMAN NUMERAL TWO
"\u2162":"III", // ROMAN NUMERAL THREE
"\u2163":"IV", // ROMAN NUMERAL FOUR
"\u2164":"V", // ROMAN NUMERAL FIVE
"\u2165":"VI", // ROMAN NUMERAL SIX
"\u2166":"VII", // ROMAN NUMERAL SEVEN
"\u2167":"VIII", // ROMAN NUMERAL EIGHT
"\u2168":"IX", // ROMAN NUMERAL NINE
"\u2169":"X", // ROMAN NUMERAL TEN
"\u216A":"XI", // ROMAN NUMERAL ELEVEN
"\u216B":"XII", // ROMAN NUMERAL TWELVE
"\u216C":"L", // ROMAN NUMERAL FIFTY
"\u216D":"C", // ROMAN NUMERAL ONE HUNDRED
"\u216E":"D", // ROMAN NUMERAL FIVE HUNDRED
"\u216F":"M", // ROMAN NUMERAL ONE THOUSAND
"\u2170":"i", // SMALL ROMAN NUMERAL ONE
"\u2171":"ii", // SMALL ROMAN NUMERAL TWO
"\u2172":"iii", // SMALL ROMAN NUMERAL THREE
"\u2173":"iv", // SMALL ROMAN NUMERAL FOUR
"\u2174":"v", // SMALL ROMAN NUMERAL FIVE
"\u2175":"vi", // SMALL ROMAN NUMERAL SIX
"\u2176":"vii", // SMALL ROMAN NUMERAL SEVEN
"\u2177":"viii", // SMALL ROMAN NUMERAL EIGHT
"\u2178":"ix", // SMALL ROMAN NUMERAL NINE
"\u2179":"x", // SMALL ROMAN NUMERAL TEN
"\u217A":"xi", // SMALL ROMAN NUMERAL ELEVEN
"\u217B":"xii", // SMALL ROMAN NUMERAL TWELVE
"\u217C":"l", // SMALL ROMAN NUMERAL FIFTY
"\u217D":"c", // SMALL ROMAN NUMERAL ONE HUNDRED
"\u217E":"d", // SMALL ROMAN NUMERAL FIVE HUNDRED
"\u217F":"m", // SMALL ROMAN NUMERAL ONE THOUSAND
"\u2190":"{\\textleftarrow}", // LEFTWARDS ARROW
"\u2191":"{\\textuparrow}", // UPWARDS ARROW
"\u2192":"{\\textrightarrow}", // RIGHTWARDS ARROW
"\u2193":"{\\textdownarrow}", // DOWNWARDS ARROW
"\u2194":"<->", // LEFT RIGHT ARROW
"\u21D0":"<=", // LEFTWARDS DOUBLE ARROW
"\u21D2":"=>", // RIGHTWARDS DOUBLE ARROW
"\u21D4":"<=>", // LEFT RIGHT DOUBLE ARROW
"\u2212":"-", // MINUS SIGN
"\u2215":"/", // DIVISION SLASH
"\u2216":"\\", // SET MINUS
"\u2217":"*", // ASTERISK OPERATOR
"\u2218":"o", // RING OPERATOR
"\u2219":".", // BULLET OPERATOR
"\u221E":"$\\infty$", // INFINITY
"\u2223":"|", // DIVIDES
"\u2225":"||", // PARALLEL TO
"\u2236":":", // RATIO
"\u223C":"\\~{}", // TILDE OPERATOR
"\u2260":"/=", // NOT EQUAL TO
"\u2261":"=", // IDENTICAL TO
"\u2264":"<=", // LESS-THAN OR EQUAL TO
"\u2265":">=", // GREATER-THAN OR EQUAL TO
"\u226A":"<<", // MUCH LESS-THAN
"\u226B":">>", // MUCH GREATER-THAN
"\u2295":"(+)", // CIRCLED PLUS
"\u2296":"(-)", // CIRCLED MINUS
"\u2297":"(x)", // CIRCLED TIMES
"\u2298":"(/)", // CIRCLED DIVISION SLASH
"\u22A2":"|-", // RIGHT TACK
"\u22A3":"-|", // LEFT TACK
"\u22A6":"|-", // ASSERTION
"\u22A7":"|=", // MODELS
"\u22A8":"|=", // TRUE
"\u22A9":"||-", // FORCES
"\u22C5":".", // DOT OPERATOR
"\u22C6":"*", // STAR OPERATOR
"\u22D5":"$\\#$", // EQUAL AND PARALLEL TO
"\u22D8":"<<<", // VERY MUCH LESS-THAN
"\u22D9":">>>", // VERY MUCH GREATER-THAN
"\u2329":"{\\textlangle}", // LEFT-POINTING ANGLE BRACKET
"\u232A":"{\\textrangle}", // RIGHT-POINTING ANGLE BRACKET
"\u2400":"NUL", // SYMBOL FOR NULL
"\u2401":"SOH", // SYMBOL FOR START OF HEADING
"\u2402":"STX", // SYMBOL FOR START OF TEXT
"\u2403":"ETX", // SYMBOL FOR END OF TEXT
"\u2404":"EOT", // SYMBOL FOR END OF TRANSMISSION
"\u2405":"ENQ", // SYMBOL FOR ENQUIRY
"\u2406":"ACK", // SYMBOL FOR ACKNOWLEDGE
"\u2407":"BEL", // SYMBOL FOR BELL
"\u2408":"BS", // SYMBOL FOR BACKSPACE
"\u2409":"HT", // SYMBOL FOR HORIZONTAL TABULATION
"\u240A":"LF", // SYMBOL FOR LINE FEED
"\u240B":"VT", // SYMBOL FOR VERTICAL TABULATION
"\u240C":"FF", // SYMBOL FOR FORM FEED
"\u240D":"CR", // SYMBOL FOR CARRIAGE RETURN
"\u240E":"SO", // SYMBOL FOR SHIFT OUT
"\u240F":"SI", // SYMBOL FOR SHIFT IN
"\u2410":"DLE", // SYMBOL FOR DATA LINK ESCAPE
"\u2411":"DC1", // SYMBOL FOR DEVICE CONTROL ONE
"\u2412":"DC2", // SYMBOL FOR DEVICE CONTROL TWO
"\u2413":"DC3", // SYMBOL FOR DEVICE CONTROL THREE
"\u2414":"DC4", // SYMBOL FOR DEVICE CONTROL FOUR
"\u2415":"NAK", // SYMBOL FOR NEGATIVE ACKNOWLEDGE
"\u2416":"SYN", // SYMBOL FOR SYNCHRONOUS IDLE
"\u2417":"ETB", // SYMBOL FOR END OF TRANSMISSION BLOCK
"\u2418":"CAN", // SYMBOL FOR CANCEL
"\u2419":"EM", // SYMBOL FOR END OF MEDIUM
"\u241A":"SUB", // SYMBOL FOR SUBSTITUTE
"\u241B":"ESC", // SYMBOL FOR ESCAPE
"\u241C":"FS", // SYMBOL FOR FILE SEPARATOR
"\u241D":"GS", // SYMBOL FOR GROUP SEPARATOR
"\u241E":"RS", // SYMBOL FOR RECORD SEPARATOR
"\u241F":"US", // SYMBOL FOR UNIT SEPARATOR
"\u2420":"SP", // SYMBOL FOR SPACE
"\u2421":"DEL", // SYMBOL FOR DELETE
"\u2423":"{\\textvisiblespace}", // OPEN BOX
"\u2424":"NL", // SYMBOL FOR NEWLINE
"\u2425":"///", // SYMBOL FOR DELETE FORM TWO
"\u2426":"?", // SYMBOL FOR SUBSTITUTE FORM TWO
"\u2460":"(1)", // CIRCLED DIGIT ONE
"\u2461":"(2)", // CIRCLED DIGIT TWO
"\u2462":"(3)", // CIRCLED DIGIT THREE
"\u2463":"(4)", // CIRCLED DIGIT FOUR
"\u2464":"(5)", // CIRCLED DIGIT FIVE
"\u2465":"(6)", // CIRCLED DIGIT SIX
"\u2466":"(7)", // CIRCLED DIGIT SEVEN
"\u2467":"(8)", // CIRCLED DIGIT EIGHT
"\u2468":"(9)", // CIRCLED DIGIT NINE
"\u2469":"(10)", // CIRCLED NUMBER TEN
"\u246A":"(11)", // CIRCLED NUMBER ELEVEN
"\u246B":"(12)", // CIRCLED NUMBER TWELVE
"\u246C":"(13)", // CIRCLED NUMBER THIRTEEN
"\u246D":"(14)", // CIRCLED NUMBER FOURTEEN
"\u246E":"(15)", // CIRCLED NUMBER FIFTEEN
"\u246F":"(16)", // CIRCLED NUMBER SIXTEEN
"\u2470":"(17)", // CIRCLED NUMBER SEVENTEEN
"\u2471":"(18)", // CIRCLED NUMBER EIGHTEEN
"\u2472":"(19)", // CIRCLED NUMBER NINETEEN
"\u2473":"(20)", // CIRCLED NUMBER TWENTY
"\u2474":"(1)", // PARENTHESIZED DIGIT ONE
"\u2475":"(2)", // PARENTHESIZED DIGIT TWO
"\u2476":"(3)", // PARENTHESIZED DIGIT THREE
"\u2477":"(4)", // PARENTHESIZED DIGIT FOUR
"\u2478":"(5)", // PARENTHESIZED DIGIT FIVE
"\u2479":"(6)", // PARENTHESIZED DIGIT SIX
"\u247A":"(7)", // PARENTHESIZED DIGIT SEVEN
"\u247B":"(8)", // PARENTHESIZED DIGIT EIGHT
"\u247C":"(9)", // PARENTHESIZED DIGIT NINE
"\u247D":"(10)", // PARENTHESIZED NUMBER TEN
"\u247E":"(11)", // PARENTHESIZED NUMBER ELEVEN
"\u247F":"(12)", // PARENTHESIZED NUMBER TWELVE
"\u2480":"(13)", // PARENTHESIZED NUMBER THIRTEEN
"\u2481":"(14)", // PARENTHESIZED NUMBER FOURTEEN
"\u2482":"(15)", // PARENTHESIZED NUMBER FIFTEEN
"\u2483":"(16)", // PARENTHESIZED NUMBER SIXTEEN
"\u2484":"(17)", // PARENTHESIZED NUMBER SEVENTEEN
"\u2485":"(18)", // PARENTHESIZED NUMBER EIGHTEEN
"\u2486":"(19)", // PARENTHESIZED NUMBER NINETEEN
"\u2487":"(20)", // PARENTHESIZED NUMBER TWENTY
"\u2488":"1.", // DIGIT ONE FULL STOP
"\u2489":"2.", // DIGIT TWO FULL STOP
"\u248A":"3.", // DIGIT THREE FULL STOP
"\u248B":"4.", // DIGIT FOUR FULL STOP
"\u248C":"5.", // DIGIT FIVE FULL STOP
"\u248D":"6.", // DIGIT SIX FULL STOP
"\u248E":"7.", // DIGIT SEVEN FULL STOP
"\u248F":"8.", // DIGIT EIGHT FULL STOP
"\u2490":"9.", // DIGIT NINE FULL STOP
"\u2491":"10.", // NUMBER TEN FULL STOP
"\u2492":"11.", // NUMBER ELEVEN FULL STOP
"\u2493":"12.", // NUMBER TWELVE FULL STOP
"\u2494":"13.", // NUMBER THIRTEEN FULL STOP
"\u2495":"14.", // NUMBER FOURTEEN FULL STOP
"\u2496":"15.", // NUMBER FIFTEEN FULL STOP
"\u2497":"16.", // NUMBER SIXTEEN FULL STOP
"\u2498":"17.", // NUMBER SEVENTEEN FULL STOP
"\u2499":"18.", // NUMBER EIGHTEEN FULL STOP
"\u249A":"19.", // NUMBER NINETEEN FULL STOP
"\u249B":"20.", // NUMBER TWENTY FULL STOP
"\u249C":"(a)", // PARENTHESIZED LATIN SMALL LETTER A
"\u249D":"(b)", // PARENTHESIZED LATIN SMALL LETTER B
"\u249E":"(c)", // PARENTHESIZED LATIN SMALL LETTER C
"\u249F":"(d)", // PARENTHESIZED LATIN SMALL LETTER D
"\u24A0":"(e)", // PARENTHESIZED LATIN SMALL LETTER E
"\u24A1":"(f)", // PARENTHESIZED LATIN SMALL LETTER F
"\u24A2":"(g)", // PARENTHESIZED LATIN SMALL LETTER G
"\u24A3":"(h)", // PARENTHESIZED LATIN SMALL LETTER H
"\u24A4":"(i)", // PARENTHESIZED LATIN SMALL LETTER I
"\u24A5":"(j)", // PARENTHESIZED LATIN SMALL LETTER J
"\u24A6":"(k)", // PARENTHESIZED LATIN SMALL LETTER K
"\u24A7":"(l)", // PARENTHESIZED LATIN SMALL LETTER L
"\u24A8":"(m)", // PARENTHESIZED LATIN SMALL LETTER M
"\u24A9":"(n)", // PARENTHESIZED LATIN SMALL LETTER N
"\u24AA":"(o)", // PARENTHESIZED LATIN SMALL LETTER O
"\u24AB":"(p)", // PARENTHESIZED LATIN SMALL LETTER P
"\u24AC":"(q)", // PARENTHESIZED LATIN SMALL LETTER Q
"\u24AD":"(r)", // PARENTHESIZED LATIN SMALL LETTER R
"\u24AE":"(s)", // PARENTHESIZED LATIN SMALL LETTER S
"\u24AF":"(t)", // PARENTHESIZED LATIN SMALL LETTER T
"\u24B0":"(u)", // PARENTHESIZED LATIN SMALL LETTER U
"\u24B1":"(v)", // PARENTHESIZED LATIN SMALL LETTER V
"\u24B2":"(w)", // PARENTHESIZED LATIN SMALL LETTER W
"\u24B3":"(x)", // PARENTHESIZED LATIN SMALL LETTER X
"\u24B4":"(y)", // PARENTHESIZED LATIN SMALL LETTER Y
"\u24B5":"(z)", // PARENTHESIZED LATIN SMALL LETTER Z
"\u24B6":"(A)", // CIRCLED LATIN CAPITAL LETTER A
"\u24B7":"(B)", // CIRCLED LATIN CAPITAL LETTER B
"\u24B8":"(C)", // CIRCLED LATIN CAPITAL LETTER C
"\u24B9":"(D)", // CIRCLED LATIN CAPITAL LETTER D
"\u24BA":"(E)", // CIRCLED LATIN CAPITAL LETTER E
"\u24BB":"(F)", // CIRCLED LATIN CAPITAL LETTER F
"\u24BC":"(G)", // CIRCLED LATIN CAPITAL LETTER G
"\u24BD":"(H)", // CIRCLED LATIN CAPITAL LETTER H
"\u24BE":"(I)", // CIRCLED LATIN CAPITAL LETTER I
"\u24BF":"(J)", // CIRCLED LATIN CAPITAL LETTER J
"\u24C0":"(K)", // CIRCLED LATIN CAPITAL LETTER K
"\u24C1":"(L)", // CIRCLED LATIN CAPITAL LETTER L
"\u24C2":"(M)", // CIRCLED LATIN CAPITAL LETTER M
"\u24C3":"(N)", // CIRCLED LATIN CAPITAL LETTER N
"\u24C4":"(O)", // CIRCLED LATIN CAPITAL LETTER O
"\u24C5":"(P)", // CIRCLED LATIN CAPITAL LETTER P
"\u24C6":"(Q)", // CIRCLED LATIN CAPITAL LETTER Q
"\u24C7":"(R)", // CIRCLED LATIN CAPITAL LETTER R
"\u24C8":"(S)", // CIRCLED LATIN CAPITAL LETTER S
"\u24C9":"(T)", // CIRCLED LATIN CAPITAL LETTER T
"\u24CA":"(U)", // CIRCLED LATIN CAPITAL LETTER U
"\u24CB":"(V)", // CIRCLED LATIN CAPITAL LETTER V
"\u24CC":"(W)", // CIRCLED LATIN CAPITAL LETTER W
"\u24CD":"(X)", // CIRCLED LATIN CAPITAL LETTER X
"\u24CE":"(Y)", // CIRCLED LATIN CAPITAL LETTER Y
"\u24CF":"(Z)", // CIRCLED LATIN CAPITAL LETTER Z
"\u24D0":"(a)", // CIRCLED LATIN SMALL LETTER A
"\u24D1":"(b)", // CIRCLED LATIN SMALL LETTER B
"\u24D2":"(c)", // CIRCLED LATIN SMALL LETTER C
"\u24D3":"(d)", // CIRCLED LATIN SMALL LETTER D
"\u24D4":"(e)", // CIRCLED LATIN SMALL LETTER E
"\u24D5":"(f)", // CIRCLED LATIN SMALL LETTER F
"\u24D6":"(g)", // CIRCLED LATIN SMALL LETTER G
"\u24D7":"(h)", // CIRCLED LATIN SMALL LETTER H
"\u24D8":"(i)", // CIRCLED LATIN SMALL LETTER I
"\u24D9":"(j)", // CIRCLED LATIN SMALL LETTER J
"\u24DA":"(k)", // CIRCLED LATIN SMALL LETTER K
"\u24DB":"(l)", // CIRCLED LATIN SMALL LETTER L
"\u24DC":"(m)", // CIRCLED LATIN SMALL LETTER M
"\u24DD":"(n)", // CIRCLED LATIN SMALL LETTER N
"\u24DE":"(o)", // CIRCLED LATIN SMALL LETTER O
"\u24DF":"(p)", // CIRCLED LATIN SMALL LETTER P
"\u24E0":"(q)", // CIRCLED LATIN SMALL LETTER Q
"\u24E1":"(r)", // CIRCLED LATIN SMALL LETTER R
"\u24E2":"(s)", // CIRCLED LATIN SMALL LETTER S
"\u24E3":"(t)", // CIRCLED LATIN SMALL LETTER T
"\u24E4":"(u)", // CIRCLED LATIN SMALL LETTER U
"\u24E5":"(v)", // CIRCLED LATIN SMALL LETTER V
"\u24E6":"(w)", // CIRCLED LATIN SMALL LETTER W
"\u24E7":"(x)", // CIRCLED LATIN SMALL LETTER X
"\u24E8":"(y)", // CIRCLED LATIN SMALL LETTER Y
"\u24E9":"(z)", // CIRCLED LATIN SMALL LETTER Z
"\u24EA":"(0)", // CIRCLED DIGIT ZERO
"\u2500":"-", // BOX DRAWINGS LIGHT HORIZONTAL
"\u2501":"=", // BOX DRAWINGS HEAVY HORIZONTAL
"\u2502":"|", // BOX DRAWINGS LIGHT VERTICAL
"\u2503":"|", // BOX DRAWINGS HEAVY VERTICAL
"\u2504":"-", // BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL
"\u2505":"=", // BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL
"\u2506":"|", // BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL
"\u2507":"|", // BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL
"\u2508":"-", // BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL
"\u2509":"=", // BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL
"\u250A":"|", // BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL
"\u250B":"|", // BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL
"\u250C":"+", // BOX DRAWINGS LIGHT DOWN AND RIGHT
"\u250D":"+", // BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY
"\u250E":"+", // BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT
"\u250F":"+", // BOX DRAWINGS HEAVY DOWN AND RIGHT
"\u2510":"+", // BOX DRAWINGS LIGHT DOWN AND LEFT
"\u2511":"+", // BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY
"\u2512":"+", // BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT
"\u2513":"+", // BOX DRAWINGS HEAVY DOWN AND LEFT
"\u2514":"+", // BOX DRAWINGS LIGHT UP AND RIGHT
"\u2515":"+", // BOX DRAWINGS UP LIGHT AND RIGHT HEAVY
"\u2516":"+", // BOX DRAWINGS UP HEAVY AND RIGHT LIGHT
"\u2517":"+", // BOX DRAWINGS HEAVY UP AND RIGHT
"\u2518":"+", // BOX DRAWINGS LIGHT UP AND LEFT
"\u2519":"+", // BOX DRAWINGS UP LIGHT AND LEFT HEAVY
"\u251A":"+", // BOX DRAWINGS UP HEAVY AND LEFT LIGHT
"\u251B":"+", // BOX DRAWINGS HEAVY UP AND LEFT
"\u251C":"+", // BOX DRAWINGS LIGHT VERTICAL AND RIGHT
"\u251D":"+", // BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY
"\u251E":"+", // BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT
"\u251F":"+", // BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT
"\u2520":"+", // BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT
"\u2521":"+", // BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY
"\u2522":"+", // BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY
"\u2523":"+", // BOX DRAWINGS HEAVY VERTICAL AND RIGHT
"\u2524":"+", // BOX DRAWINGS LIGHT VERTICAL AND LEFT
"\u2525":"+", // BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY
"\u2526":"+", // BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT
"\u2527":"+", // BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT
"\u2528":"+", // BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT
"\u2529":"+", // BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY
"\u252A":"+", // BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY
"\u252B":"+", // BOX DRAWINGS HEAVY VERTICAL AND LEFT
"\u252C":"+", // BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
"\u252D":"+", // BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT
"\u252E":"+", // BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT
"\u252F":"+", // BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY
"\u2530":"+", // BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT
"\u2531":"+", // BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY
"\u2532":"+", // BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY
"\u2533":"+", // BOX DRAWINGS HEAVY DOWN AND HORIZONTAL
"\u2534":"+", // BOX DRAWINGS LIGHT UP AND HORIZONTAL
"\u2535":"+", // BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT
"\u2536":"+", // BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT
"\u2537":"+", // BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY
"\u2538":"+", // BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT
"\u2539":"+", // BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY
"\u253A":"+", // BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY
"\u253B":"+", // BOX DRAWINGS HEAVY UP AND HORIZONTAL
"\u253C":"+", // BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
"\u253D":"+", // BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT
"\u253E":"+", // BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT
"\u253F":"+", // BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY
"\u2540":"+", // BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT
"\u2541":"+", // BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT
"\u2542":"+", // BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT
"\u2543":"+", // BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT
"\u2544":"+", // BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT
"\u2545":"+", // BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT
"\u2546":"+", // BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT
"\u2547":"+", // BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY
"\u2548":"+", // BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY
"\u2549":"+", // BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY
"\u254A":"+", // BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY
"\u254B":"+", // BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL
"\u254C":"-", // BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL
"\u254D":"=", // BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL
"\u254E":"|", // BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL
"\u254F":"|", // BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL
"\u2550":"=", // BOX DRAWINGS DOUBLE HORIZONTAL
"\u2551":"|", // BOX DRAWINGS DOUBLE VERTICAL
"\u2552":"+", // BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
"\u2553":"+", // BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
"\u2554":"+", // BOX DRAWINGS DOUBLE DOWN AND RIGHT
"\u2555":"+", // BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
"\u2556":"+", // BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
"\u2557":"+", // BOX DRAWINGS DOUBLE DOWN AND LEFT
"\u2558":"+", // BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
"\u2559":"+", // BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
"\u255A":"+", // BOX DRAWINGS DOUBLE UP AND RIGHT
"\u255B":"+", // BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
"\u255C":"+", // BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
"\u255D":"+", // BOX DRAWINGS DOUBLE UP AND LEFT
"\u255E":"+", // BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
"\u255F":"+", // BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
"\u2560":"+", // BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
"\u2561":"+", // BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
"\u2562":"+", // BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
"\u2563":"+", // BOX DRAWINGS DOUBLE VERTICAL AND LEFT
"\u2564":"+", // BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
"\u2565":"+", // BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
"\u2566":"+", // BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
"\u2567":"+", // BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
"\u2568":"+", // BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
"\u2569":"+", // BOX DRAWINGS DOUBLE UP AND HORIZONTAL
"\u256A":"+", // BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
"\u256B":"+", // BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
"\u256C":"+", // BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
"\u256D":"+", // BOX DRAWINGS LIGHT ARC DOWN AND RIGHT
"\u256E":"+", // BOX DRAWINGS LIGHT ARC DOWN AND LEFT
"\u256F":"+", // BOX DRAWINGS LIGHT ARC UP AND LEFT
"\u2570":"+", // BOX DRAWINGS LIGHT ARC UP AND RIGHT
"\u2571":"/", // BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT
"\u2572":"\\", // BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT
"\u2573":"X", // BOX DRAWINGS LIGHT DIAGONAL CROSS
"\u257C":"-", // BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT
"\u257D":"|", // BOX DRAWINGS LIGHT UP AND HEAVY DOWN
"\u257E":"-", // BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT
"\u257F":"|", // BOX DRAWINGS HEAVY UP AND LIGHT DOWN
"\u25CB":"o", // WHITE CIRCLE
"\u25E6":"{\\textopenbullet}", // WHITE BULLET
"\u2605":"*", // BLACK STAR
"\u2606":"*", // WHITE STAR
"\u2612":"X", // BALLOT BOX WITH X
"\u2613":"X", // SALTIRE
"\u2639":":-(", // WHITE FROWNING FACE
"\u263A":":-)", // WHITE SMILING FACE
"\u263B":"(-:", // BLACK SMILING FACE
"\u266D":"b", // MUSIC FLAT SIGN
"\u266F":"$\\#$", // MUSIC SHARP SIGN
"\u2701":"$\\%<$", // UPPER BLADE SCISSORS
"\u2702":"$\\%<$", // BLACK SCISSORS
"\u2703":"$\\%<$", // LOWER BLADE SCISSORS
"\u2704":"$\\%<$", // WHITE SCISSORS
"\u270C":"V", // VICTORY HAND
"\u2713":"v", // CHECK MARK
"\u2714":"V", // HEAVY CHECK MARK
"\u2715":"x", // MULTIPLICATION X
"\u2716":"x", // HEAVY MULTIPLICATION X
"\u2717":"X", // BALLOT X
"\u2718":"X", // HEAVY BALLOT X
"\u2719":"+", // OUTLINED GREEK CROSS
"\u271A":"+", // HEAVY GREEK CROSS
"\u271B":"+", // OPEN CENTRE CROSS
"\u271C":"+", // HEAVY OPEN CENTRE CROSS
"\u271D":"+", // LATIN CROSS
"\u271E":"+", // SHADOWED WHITE LATIN CROSS
"\u271F":"+", // OUTLINED LATIN CROSS
"\u2720":"+", // MALTESE CROSS
"\u2721":"*", // STAR OF DAVID
"\u2722":"+", // FOUR TEARDROP-SPOKED ASTERISK
"\u2723":"+", // FOUR BALLOON-SPOKED ASTERISK
"\u2724":"+", // HEAVY FOUR BALLOON-SPOKED ASTERISK
"\u2725":"+", // FOUR CLUB-SPOKED ASTERISK
"\u2726":"+", // BLACK FOUR POINTED STAR
"\u2727":"+", // WHITE FOUR POINTED STAR
"\u2729":"*", // STRESS OUTLINED WHITE STAR
"\u272A":"*", // CIRCLED WHITE STAR
"\u272B":"*", // OPEN CENTRE BLACK STAR
"\u272C":"*", // BLACK CENTRE WHITE STAR
"\u272D":"*", // OUTLINED BLACK STAR
"\u272E":"*", // HEAVY OUTLINED BLACK STAR
"\u272F":"*", // PINWHEEL STAR
"\u2730":"*", // SHADOWED WHITE STAR
"\u2731":"*", // HEAVY ASTERISK
"\u2732":"*", // OPEN CENTRE ASTERISK
"\u2733":"*", // EIGHT SPOKED ASTERISK
"\u2734":"*", // EIGHT POINTED BLACK STAR
"\u2735":"*", // EIGHT POINTED PINWHEEL STAR
"\u2736":"*", // SIX POINTED BLACK STAR
"\u2737":"*", // EIGHT POINTED RECTILINEAR BLACK STAR
"\u2738":"*", // HEAVY EIGHT POINTED RECTILINEAR BLACK STAR
"\u2739":"*", // TWELVE POINTED BLACK STAR
"\u273A":"*", // SIXTEEN POINTED ASTERISK
"\u273B":"*", // TEARDROP-SPOKED ASTERISK
"\u273C":"*", // OPEN CENTRE TEARDROP-SPOKED ASTERISK
"\u273D":"*", // HEAVY TEARDROP-SPOKED ASTERISK
"\u273E":"*", // SIX PETALLED BLACK AND WHITE FLORETTE
"\u273F":"*", // BLACK FLORETTE
"\u2740":"*", // WHITE FLORETTE
"\u2741":"*", // EIGHT PETALLED OUTLINED BLACK FLORETTE
"\u2742":"*", // CIRCLED OPEN CENTRE EIGHT POINTED STAR
"\u2743":"*", // HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK
"\u2744":"*", // SNOWFLAKE
"\u2745":"*", // TIGHT TRIFOLIATE SNOWFLAKE
"\u2746":"*", // HEAVY CHEVRON SNOWFLAKE
"\u2747":"*", // SPARKLE
"\u2748":"*", // HEAVY SPARKLE
"\u2749":"*", // BALLOON-SPOKED ASTERISK
"\u274A":"*", // EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
"\u274B":"*", // HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
"\uFB00":"ff", // LATIN SMALL LIGATURE FF
"\uFB01":"fi", // LATIN SMALL LIGATURE FI
"\uFB02":"fl", // LATIN SMALL LIGATURE FL
"\uFB03":"ffi", // LATIN SMALL LIGATURE FFI
"\uFB04":"ffl", // LATIN SMALL LIGATURE FFL
"\uFB05":"st", // LATIN SMALL LIGATURE LONG S T
"\uFB06":"st", // LATIN SMALL LIGATURE ST
/* Derived accented characters */
/* These two require the "semtrans" package to work; uncomment to enable */
/* "\u02BF":"\{\\Ayn}", // MGR Ayn
"\u02BE":"\{\\Alif}", // MGR Alif/Hamza
*/
"\u00C0":"{\\`A}", // LATIN CAPITAL LETTER A WITH GRAVE
"\u00C1":"{\\'A}", // LATIN CAPITAL LETTER A WITH ACUTE
"\u00C2":"{\\^A}", // LATIN CAPITAL LETTER A WITH CIRCUMFLEX
"\u00C3":"{\\~A}", // LATIN CAPITAL LETTER A WITH TILDE
"\u00C4":"{\\\"A}", // LATIN CAPITAL LETTER A WITH DIAERESIS
"\u00C5":"{\\r A}", // LATIN CAPITAL LETTER A WITH RING ABOVE
"\u00C7":"{\\c C}", // LATIN CAPITAL LETTER C WITH CEDILLA
"\u00C8":"{\\`E}", // LATIN CAPITAL LETTER E WITH GRAVE
"\u00C9":"{\\'E}", // LATIN CAPITAL LETTER E WITH ACUTE
"\u00CA":"{\\^E}", // LATIN CAPITAL LETTER E WITH CIRCUMFLEX
"\u00CB":"{\\\"E}", // LATIN CAPITAL LETTER E WITH DIAERESIS
"\u00CC":"{\\`I}", // LATIN CAPITAL LETTER I WITH GRAVE
"\u00CD":"{\\'I}", // LATIN CAPITAL LETTER I WITH ACUTE
"\u00CE":"{\\^I}", // LATIN CAPITAL LETTER I WITH CIRCUMFLEX
"\u00CF":"{\\\"I}", // LATIN CAPITAL LETTER I WITH DIAERESIS
"\u00D1":"{\\~N}", // LATIN CAPITAL LETTER N WITH TILDE
"\u00D2":"{\\`O}", // LATIN CAPITAL LETTER O WITH GRAVE
"\u00D3":"{\\'O}", // LATIN CAPITAL LETTER O WITH ACUTE
"\u00D4":"{\\^O}", // LATIN CAPITAL LETTER O WITH CIRCUMFLEX
"\u00D5":"{\\~O}", // LATIN CAPITAL LETTER O WITH TILDE
"\u00D6":"{\\\"O}", // LATIN CAPITAL LETTER O WITH DIAERESIS
"\u00D9":"{\\`U}", // LATIN CAPITAL LETTER U WITH GRAVE
"\u00DA":"{\\'U}", // LATIN CAPITAL LETTER U WITH ACUTE
"\u00DB":"{\\^U}", // LATIN CAPITAL LETTER U WITH CIRCUMFLEX
"\u00DC":"{\\\"U}", // LATIN CAPITAL LETTER U WITH DIAERESIS
"\u00DD":"{\\'Y}", // LATIN CAPITAL LETTER Y WITH ACUTE
"\u00E0":"{\\`a}", // LATIN SMALL LETTER A WITH GRAVE
"\u00E1":"{\\'a}", // LATIN SMALL LETTER A WITH ACUTE
"\u00E2":"{\\^a}", // LATIN SMALL LETTER A WITH CIRCUMFLEX
"\u00E3":"{\\~a}", // LATIN SMALL LETTER A WITH TILDE
"\u00E4":"{\\\"a}", // LATIN SMALL LETTER A WITH DIAERESIS
"\u00E5":"{\\r a}", // LATIN SMALL LETTER A WITH RING ABOVE
"\u00E7":"{\\c c}", // LATIN SMALL LETTER C WITH CEDILLA
"\u00E8":"{\\`e}", // LATIN SMALL LETTER E WITH GRAVE
"\u00E9":"{\\'e}", // LATIN SMALL LETTER E WITH ACUTE
"\u00EA":"{\\^e}", // LATIN SMALL LETTER E WITH CIRCUMFLEX
"\u00EB":"{\\\"e}", // LATIN SMALL LETTER E WITH DIAERESIS
"\u00EC":"{\\`i}", // LATIN SMALL LETTER I WITH GRAVE
"\u00ED":"{\\'i}", // LATIN SMALL LETTER I WITH ACUTE
"\u00EE":"{\\^i}", // LATIN SMALL LETTER I WITH CIRCUMFLEX
"\u00EF":"{\\\"i}", // LATIN SMALL LETTER I WITH DIAERESIS
"\u00F1":"{\\~n}", // LATIN SMALL LETTER N WITH TILDE
"\u00F2":"{\\`o}", // LATIN SMALL LETTER O WITH GRAVE
"\u00F3":"{\\'o}", // LATIN SMALL LETTER O WITH ACUTE
"\u00F4":"{\\^o}", // LATIN SMALL LETTER O WITH CIRCUMFLEX
"\u00F5":"{\\~o}", // LATIN SMALL LETTER O WITH TILDE
"\u00F6":"{\\\"o}", // LATIN SMALL LETTER O WITH DIAERESIS
"\u00F9":"{\\`u}", // LATIN SMALL LETTER U WITH GRAVE
"\u00FA":"{\\'u}", // LATIN SMALL LETTER U WITH ACUTE
"\u00FB":"{\\^u}", // LATIN SMALL LETTER U WITH CIRCUMFLEX
"\u00FC":"{\\\"u}", // LATIN SMALL LETTER U WITH DIAERESIS
"\u00FD":"{\\'y}", // LATIN SMALL LETTER Y WITH ACUTE
"\u00FF":"{\\\"y}", // LATIN SMALL LETTER Y WITH DIAERESIS
"\u0100":"{\\=A}", // LATIN CAPITAL LETTER A WITH MACRON
"\u0101":"{\\=a}", // LATIN SMALL LETTER A WITH MACRON
"\u0102":"{\\u A}", // LATIN CAPITAL LETTER A WITH BREVE
"\u0103":"{\\u a}", // LATIN SMALL LETTER A WITH BREVE
"\u0104":"{\\k A}", // LATIN CAPITAL LETTER A WITH OGONEK
"\u0105":"{\\k a}", // LATIN SMALL LETTER A WITH OGONEK
"\u0106":"{\\'C}", // LATIN CAPITAL LETTER C WITH ACUTE
"\u0107":"{\\'c}", // LATIN SMALL LETTER C WITH ACUTE
"\u0108":"{\\^C}", // LATIN CAPITAL LETTER C WITH CIRCUMFLEX
"\u0109":"{\\^c}", // LATIN SMALL LETTER C WITH CIRCUMFLEX
"\u010A":"{\\.C}", // LATIN CAPITAL LETTER C WITH DOT ABOVE
"\u010B":"{\\.c}", // LATIN SMALL LETTER C WITH DOT ABOVE
"\u010C":"{\\v C}", // LATIN CAPITAL LETTER C WITH CARON
"\u010D":"{\\v c}", // LATIN SMALL LETTER C WITH CARON
"\u010E":"{\\v D}", // LATIN CAPITAL LETTER D WITH CARON
"\u010F":"{\\v d}", // LATIN SMALL LETTER D WITH CARON
"\u0112":"{\\=E}", // LATIN CAPITAL LETTER E WITH MACRON
"\u0113":"{\\=e}", // LATIN SMALL LETTER E WITH MACRON
"\u0114":"{\\u E}", // LATIN CAPITAL LETTER E WITH BREVE
"\u0115":"{\\u e}", // LATIN SMALL LETTER E WITH BREVE
"\u0116":"{\\.E}", // LATIN CAPITAL LETTER E WITH DOT ABOVE
"\u0117":"{\\.e}", // LATIN SMALL LETTER E WITH DOT ABOVE
"\u0118":"{\\k E}", // LATIN CAPITAL LETTER E WITH OGONEK
"\u0119":"{\\k e}", // LATIN SMALL LETTER E WITH OGONEK
"\u011A":"{\\v E}", // LATIN CAPITAL LETTER E WITH CARON
"\u011B":"{\\v e}", // LATIN SMALL LETTER E WITH CARON
"\u011C":"{\\^G}", // LATIN CAPITAL LETTER G WITH CIRCUMFLEX
"\u011D":"{\\^g}", // LATIN SMALL LETTER G WITH CIRCUMFLEX
"\u011E":"{\\u G}", // LATIN CAPITAL LETTER G WITH BREVE
"\u011F":"{\\u g}", // LATIN SMALL LETTER G WITH BREVE
"\u0120":"{\\.G}", // LATIN CAPITAL LETTER G WITH DOT ABOVE
"\u0121":"{\\.g}", // LATIN SMALL LETTER G WITH DOT ABOVE
"\u0122":"{\\c G}", // LATIN CAPITAL LETTER G WITH CEDILLA
"\u0123":"{\\c g}", // LATIN SMALL LETTER G WITH CEDILLA
"\u0124":"{\\^H}", // LATIN CAPITAL LETTER H WITH CIRCUMFLEX
"\u0125":"{\\^h}", // LATIN SMALL LETTER H WITH CIRCUMFLEX
"\u0128":"{\\~I}", // LATIN CAPITAL LETTER I WITH TILDE
"\u0129":"{\\~i}", // LATIN SMALL LETTER I WITH TILDE
"\u012A":"{\\=I}", // LATIN CAPITAL LETTER I WITH MACRON
"\u012B":"{\\=\\i}", // LATIN SMALL LETTER I WITH MACRON
"\u012C":"{\\u I}", // LATIN CAPITAL LETTER I WITH BREVE
"\u012D":"{\\u i}", // LATIN SMALL LETTER I WITH BREVE
"\u012E":"{\\k I}", // LATIN CAPITAL LETTER I WITH OGONEK
"\u012F":"{\\k i}", // LATIN SMALL LETTER I WITH OGONEK
"\u0130":"{\\.I}", // LATIN CAPITAL LETTER I WITH DOT ABOVE
"\u0134":"{\\^J}", // LATIN CAPITAL LETTER J WITH CIRCUMFLEX
"\u0135":"{\\^j}", // LATIN SMALL LETTER J WITH CIRCUMFLEX
"\u0136":"{\\c K}", // LATIN CAPITAL LETTER K WITH CEDILLA
"\u0137":"{\\c k}", // LATIN SMALL LETTER K WITH CEDILLA
"\u0139":"{\\'L}", // LATIN CAPITAL LETTER L WITH ACUTE
"\u013A":"{\\'l}", // LATIN SMALL LETTER L WITH ACUTE
"\u013B":"{\\c L}", // LATIN CAPITAL LETTER L WITH CEDILLA
"\u013C":"{\\c l}", // LATIN SMALL LETTER L WITH CEDILLA
"\u013D":"{\\v L}", // LATIN CAPITAL LETTER L WITH CARON
"\u013E":"{\\v l}", // LATIN SMALL LETTER L WITH CARON
"\u0141":"{\\L }", //LATIN CAPITAL LETTER L WITH STROKE
"\u0142":"{\\l }", //LATIN SMALL LETTER L WITH STROKE
"\u0143":"{\\'N}", // LATIN CAPITAL LETTER N WITH ACUTE
"\u0144":"{\\'n}", // LATIN SMALL LETTER N WITH ACUTE
"\u0145":"{\\c N}", // LATIN CAPITAL LETTER N WITH CEDILLA
"\u0146":"{\\c n}", // LATIN SMALL LETTER N WITH CEDILLA
"\u0147":"{\\v N}", // LATIN CAPITAL LETTER N WITH CARON
"\u0148":"{\\v n}", // LATIN SMALL LETTER N WITH CARON
"\u014C":"{\\=O}", // LATIN CAPITAL LETTER O WITH MACRON
"\u014D":"{\\=o}", // LATIN SMALL LETTER O WITH MACRON
"\u014E":"{\\u O}", // LATIN CAPITAL LETTER O WITH BREVE
"\u014F":"{\\u o}", // LATIN SMALL LETTER O WITH BREVE
"\u0150":"{\\H O}", // LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
"\u0151":"{\\H o}", // LATIN SMALL LETTER O WITH DOUBLE ACUTE
"\u0154":"{\\'R}", // LATIN CAPITAL LETTER R WITH ACUTE
"\u0155":"{\\'r}", // LATIN SMALL LETTER R WITH ACUTE
"\u0156":"{\\c R}", // LATIN CAPITAL LETTER R WITH CEDILLA
"\u0157":"{\\c r}", // LATIN SMALL LETTER R WITH CEDILLA
"\u0158":"{\\v R}", // LATIN CAPITAL LETTER R WITH CARON
"\u0159":"{\\v r}", // LATIN SMALL LETTER R WITH CARON
"\u015A":"{\\'S}", // LATIN CAPITAL LETTER S WITH ACUTE
"\u015B":"{\\'s}", // LATIN SMALL LETTER S WITH ACUTE
"\u015C":"{\\^S}", // LATIN CAPITAL LETTER S WITH CIRCUMFLEX
"\u015D":"{\\^s}", // LATIN SMALL LETTER S WITH CIRCUMFLEX
"\u015E":"{\\c S}", // LATIN CAPITAL LETTER S WITH CEDILLA
"\u015F":"{\\c s}", // LATIN SMALL LETTER S WITH CEDILLA
"\u0160":"{\\v S}", // LATIN CAPITAL LETTER S WITH CARON
"\u0161":"{\\v s}", // LATIN SMALL LETTER S WITH CARON
"\u0162":"{\\c T}", // LATIN CAPITAL LETTER T WITH CEDILLA
"\u0163":"{\\c t}", // LATIN SMALL LETTER T WITH CEDILLA
"\u0164":"{\\v T}", // LATIN CAPITAL LETTER T WITH CARON
"\u0165":"{\\v t}", // LATIN SMALL LETTER T WITH CARON
"\u0168":"{\\~U}", // LATIN CAPITAL LETTER U WITH TILDE
"\u0169":"{\\~u}", // LATIN SMALL LETTER U WITH TILDE
"\u016A":"{\\=U}", // LATIN CAPITAL LETTER U WITH MACRON
"\u016B":"{\\=u}", // LATIN SMALL LETTER U WITH MACRON
"\u016C":"{\\u U}", // LATIN CAPITAL LETTER U WITH BREVE
"\u016D":"{\\u u}", // LATIN SMALL LETTER U WITH BREVE
"\u016E":"{\\r U}", // LATIN CAPITAL U WITH A RING ABOVE
"\u016F":"{\\r u}", // LATIN SMALL U WITH A RING ABOVE
"\u0170":"{\\H U}", // LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
"\u0171":"{\\H u}", // LATIN SMALL LETTER U WITH DOUBLE ACUTE
"\u0172":"{\\k U}", // LATIN CAPITAL LETTER U WITH OGONEK
"\u0173":"{\\k u}", // LATIN SMALL LETTER U WITH OGONEK
"\u0174":"{\\^W}", // LATIN CAPITAL LETTER W WITH CIRCUMFLEX
"\u0175":"{\\^w}", // LATIN SMALL LETTER W WITH CIRCUMFLEX
"\u0176":"{\\^Y}", // LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
"\u0177":"{\\^y}", // LATIN SMALL LETTER Y WITH CIRCUMFLEX
"\u0178":"{\\\"Y}", // LATIN CAPITAL LETTER Y WITH DIAERESIS
"\u0179":"{\\'Z}", // LATIN CAPITAL LETTER Z WITH ACUTE
"\u017A":"{\\'z}", // LATIN SMALL LETTER Z WITH ACUTE
"\u017B":"{\\.Z}", // LATIN CAPITAL LETTER Z WITH DOT ABOVE
"\u017C":"{\\.z}", // LATIN SMALL LETTER Z WITH DOT ABOVE
"\u017D":"{\\v Z}", // LATIN CAPITAL LETTER Z WITH CARON
"\u017E":"{\\v z}", // LATIN SMALL LETTER Z WITH CARON
"\u01CD":"{\\v A}", // LATIN CAPITAL LETTER A WITH CARON
"\u01CE":"{\\v a}", // LATIN SMALL LETTER A WITH CARON
"\u01CF":"{\\v I}", // LATIN CAPITAL LETTER I WITH CARON
"\u01D0":"{\\v i}", // LATIN SMALL LETTER I WITH CARON
"\u01D1":"{\\v O}", // LATIN CAPITAL LETTER O WITH CARON
"\u01D2":"{\\v o}", // LATIN SMALL LETTER O WITH CARON
"\u01D3":"{\\v U}", // LATIN CAPITAL LETTER U WITH CARON
"\u01D4":"{\\v u}", // LATIN SMALL LETTER U WITH CARON
"\u01E6":"{\\v G}", // LATIN CAPITAL LETTER G WITH CARON
"\u01E7":"{\\v g}", // LATIN SMALL LETTER G WITH CARON
"\u01E8":"{\\v K}", // LATIN CAPITAL LETTER K WITH CARON
"\u01E9":"{\\v k}", // LATIN SMALL LETTER K WITH CARON
"\u01EA":"{\\k O}", // LATIN CAPITAL LETTER O WITH OGONEK
"\u01EB":"{\\k o}", // LATIN SMALL LETTER O WITH OGONEK
"\u01F0":"{\\v j}", // LATIN SMALL LETTER J WITH CARON
"\u01F4":"{\\'G}", // LATIN CAPITAL LETTER G WITH ACUTE
"\u01F5":"{\\'g}", // LATIN SMALL LETTER G WITH ACUTE
"\u1E02":"{\\.B}", // LATIN CAPITAL LETTER B WITH DOT ABOVE
"\u1E03":"{\\.b}", // LATIN SMALL LETTER B WITH DOT ABOVE
"\u1E04":"{\\d B}", // LATIN CAPITAL LETTER B WITH DOT BELOW
"\u1E05":"{\\d b}", // LATIN SMALL LETTER B WITH DOT BELOW
"\u1E06":"{\\b B}", // LATIN CAPITAL LETTER B WITH LINE BELOW
"\u1E07":"{\\b b}", // LATIN SMALL LETTER B WITH LINE BELOW
"\u1E0A":"{\\.D}", // LATIN CAPITAL LETTER D WITH DOT ABOVE
"\u1E0B":"{\\.d}", // LATIN SMALL LETTER D WITH DOT ABOVE
"\u1E0C":"{\\d D}", // LATIN CAPITAL LETTER D WITH DOT BELOW
"\u1E0D":"{\\d d}", // LATIN SMALL LETTER D WITH DOT BELOW
"\u1E0E":"{\\b D}", // LATIN CAPITAL LETTER D WITH LINE BELOW
"\u1E0F":"{\\b d}", // LATIN SMALL LETTER D WITH LINE BELOW
"\u1E10":"{\\c D}", // LATIN CAPITAL LETTER D WITH CEDILLA
"\u1E11":"{\\c d}", // LATIN SMALL LETTER D WITH CEDILLA
"\u1E1E":"{\\.F}", // LATIN CAPITAL LETTER F WITH DOT ABOVE
"\u1E1F":"{\\.f}", // LATIN SMALL LETTER F WITH DOT ABOVE
"\u1E20":"{\\=G}", // LATIN CAPITAL LETTER G WITH MACRON
"\u1E21":"{\\=g}", // LATIN SMALL LETTER G WITH MACRON
"\u1E22":"{\\.H}", // LATIN CAPITAL LETTER H WITH DOT ABOVE
"\u1E23":"{\\.h}", // LATIN SMALL LETTER H WITH DOT ABOVE
"\u1E24":"{\\d H}", // LATIN CAPITAL LETTER H WITH DOT BELOW
"\u1E25":"{\\d h}", // LATIN SMALL LETTER H WITH DOT BELOW
"\u1E26":"{\\\"H}", // LATIN CAPITAL LETTER H WITH DIAERESIS
"\u1E27":"{\\\"h}", // LATIN SMALL LETTER H WITH DIAERESIS
"\u1E28":"{\\c H}", // LATIN CAPITAL LETTER H WITH CEDILLA
"\u1E29":"{\\c h}", // LATIN SMALL LETTER H WITH CEDILLA
"\u1E30":"{\\'K}", // LATIN CAPITAL LETTER K WITH ACUTE
"\u1E31":"{\\'k}", // LATIN SMALL LETTER K WITH ACUTE
"\u1E32":"{\\d K}", // LATIN CAPITAL LETTER K WITH DOT BELOW
"\u1E33":"{\\d k}", // LATIN SMALL LETTER K WITH DOT BELOW
"\u1E34":"{\\b K}", // LATIN CAPITAL LETTER K WITH LINE BELOW
"\u1E35":"{\\b k}", // LATIN SMALL LETTER K WITH LINE BELOW
"\u1E36":"{\\d L}", // LATIN CAPITAL LETTER L WITH DOT BELOW
"\u1E37":"{\\d l}", // LATIN SMALL LETTER L WITH DOT BELOW
"\u1E3A":"{\\b L}", // LATIN CAPITAL LETTER L WITH LINE BELOW
"\u1E3B":"{\\b l}", // LATIN SMALL LETTER L WITH LINE BELOW
"\u1E3E":"{\\'M}", // LATIN CAPITAL LETTER M WITH ACUTE
"\u1E3F":"{\\'m}", // LATIN SMALL LETTER M WITH ACUTE
"\u1E40":"{\\.M}", // LATIN CAPITAL LETTER M WITH DOT ABOVE
"\u1E41":"{\\.m}", // LATIN SMALL LETTER M WITH DOT ABOVE
"\u1E42":"{\\d M}", // LATIN CAPITAL LETTER M WITH DOT BELOW
"\u1E43":"{\\d m}", // LATIN SMALL LETTER M WITH DOT BELOW
"\u1E44":"{\\.N}", // LATIN CAPITAL LETTER N WITH DOT ABOVE
"\u1E45":"{\\.n}", // LATIN SMALL LETTER N WITH DOT ABOVE
"\u1E46":"{\\d N}", // LATIN CAPITAL LETTER N WITH DOT BELOW
"\u1E47":"{\\d n}", // LATIN SMALL LETTER N WITH DOT BELOW
"\u1E48":"{\\b N}", // LATIN CAPITAL LETTER N WITH LINE BELOW
"\u1E49":"{\\b n}", // LATIN SMALL LETTER N WITH LINE BELOW
"\u1E54":"{\\'P}", // LATIN CAPITAL LETTER P WITH ACUTE
"\u1E55":"{\\'p}", // LATIN SMALL LETTER P WITH ACUTE
"\u1E56":"{\\.P}", // LATIN CAPITAL LETTER P WITH DOT ABOVE
"\u1E57":"{\\.p}", // LATIN SMALL LETTER P WITH DOT ABOVE
"\u1E58":"{\\.R}", // LATIN CAPITAL LETTER R WITH DOT ABOVE
"\u1E59":"{\\.r}", // LATIN SMALL LETTER R WITH DOT ABOVE
"\u1E5A":"{\\d R}", // LATIN CAPITAL LETTER R WITH DOT BELOW
"\u1E5B":"{\\d r}", // LATIN SMALL LETTER R WITH DOT BELOW
"\u1E5E":"{\\b R}", // LATIN CAPITAL LETTER R WITH LINE BELOW
"\u1E5F":"{\\b r}", // LATIN SMALL LETTER R WITH LINE BELOW
"\u1E60":"{\\.S}", // LATIN CAPITAL LETTER S WITH DOT ABOVE
"\u1E61":"{\\.s}", // LATIN SMALL LETTER S WITH DOT ABOVE
"\u1E62":"{\\d S}", // LATIN CAPITAL LETTER S WITH DOT BELOW
"\u1E63":"{\\d s}", // LATIN SMALL LETTER S WITH DOT BELOW
"\u1E6A":"{\\.T}", // LATIN CAPITAL LETTER T WITH DOT ABOVE
"\u1E6B":"{\\.t}", // LATIN SMALL LETTER T WITH DOT ABOVE
"\u1E6C":"{\\d T}", // LATIN CAPITAL LETTER T WITH DOT BELOW
"\u1E6D":"{\\d t}", // LATIN SMALL LETTER T WITH DOT BELOW
"\u1E6E":"{\\b T}", // LATIN CAPITAL LETTER T WITH LINE BELOW
"\u1E6F":"{\\b t}", // LATIN SMALL LETTER T WITH LINE BELOW
"\u1E7C":"{\\~V}", // LATIN CAPITAL LETTER V WITH TILDE
"\u1E7D":"{\\~v}", // LATIN SMALL LETTER V WITH TILDE
"\u1E7E":"{\\d V}", // LATIN CAPITAL LETTER V WITH DOT BELOW
"\u1E7F":"{\\d v}", // LATIN SMALL LETTER V WITH DOT BELOW
"\u1E80":"{\\`W}", // LATIN CAPITAL LETTER W WITH GRAVE
"\u1E81":"{\\`w}", // LATIN SMALL LETTER W WITH GRAVE
"\u1E82":"{\\'W}", // LATIN CAPITAL LETTER W WITH ACUTE
"\u1E83":"{\\'w}", // LATIN SMALL LETTER W WITH ACUTE
"\u1E84":"{\\\"W}", // LATIN CAPITAL LETTER W WITH DIAERESIS
"\u1E85":"{\\\"w}", // LATIN SMALL LETTER W WITH DIAERESIS
"\u1E86":"{\\.W}", // LATIN CAPITAL LETTER W WITH DOT ABOVE
"\u1E87":"{\\.w}", // LATIN SMALL LETTER W WITH DOT ABOVE
"\u1E88":"{\\d W}", // LATIN CAPITAL LETTER W WITH DOT BELOW
"\u1E89":"{\\d w}", // LATIN SMALL LETTER W WITH DOT BELOW
"\u1E8A":"{\\.X}", // LATIN CAPITAL LETTER X WITH DOT ABOVE
"\u1E8B":"{\\.x}", // LATIN SMALL LETTER X WITH DOT ABOVE
"\u1E8C":"{\\\"X}", // LATIN CAPITAL LETTER X WITH DIAERESIS
"\u1E8D":"{\\\"x}", // LATIN SMALL LETTER X WITH DIAERESIS
"\u1E8E":"{\\.Y}", // LATIN CAPITAL LETTER Y WITH DOT ABOVE
"\u1E8F":"{\\.y}", // LATIN SMALL LETTER Y WITH DOT ABOVE
"\u1E90":"{\\^Z}", // LATIN CAPITAL LETTER Z WITH CIRCUMFLEX
"\u1E91":"{\\^z}", // LATIN SMALL LETTER Z WITH CIRCUMFLEX
"\u1E92":"{\\d Z}", // LATIN CAPITAL LETTER Z WITH DOT BELOW
"\u1E93":"{\\d z}", // LATIN SMALL LETTER Z WITH DOT BELOW
"\u1E94":"{\\b Z}", // LATIN CAPITAL LETTER Z WITH LINE BELOW
"\u1E95":"{\\b z}", // LATIN SMALL LETTER Z WITH LINE BELOW
"\u1E96":"{\\b h}", // LATIN SMALL LETTER H WITH LINE BELOW
"\u1E97":"{\\\"t}", // LATIN SMALL LETTER T WITH DIAERESIS
"\u1E98":"{\\r w}", // LATIN SMALL W WITH A RING ABOVE
"\u1E99":"{\\r y}", // LATIN SMALL Y WITH A RING ABOVE
"\u1EA0":"{\\d A}", // LATIN CAPITAL LETTER A WITH DOT BELOW
"\u1EA1":"{\\d a}", // LATIN SMALL LETTER A WITH DOT BELOW
"\u1EB8":"{\\d E}", // LATIN CAPITAL LETTER E WITH DOT BELOW
"\u1EB9":"{\\d e}", // LATIN SMALL LETTER E WITH DOT BELOW
"\u1EBC":"{\\~E}", // LATIN CAPITAL LETTER E WITH TILDE
"\u1EBD":"{\\~e}", // LATIN SMALL LETTER E WITH TILDE
"\u1ECA":"{\\d I}", // LATIN CAPITAL LETTER I WITH DOT BELOW
"\u1ECB":"{\\d i}", // LATIN SMALL LETTER I WITH DOT BELOW
"\u1ECC":"{\\d O}", // LATIN CAPITAL LETTER O WITH DOT BELOW
"\u1ECD":"{\\d o}", // LATIN SMALL LETTER O WITH DOT BELOW
"\u1EE4":"{\\d U}", // LATIN CAPITAL LETTER U WITH DOT BELOW
"\u1EE5":"{\\d u}", // LATIN SMALL LETTER U WITH DOT BELOW
"\u1EF2":"{\\`Y}", // LATIN CAPITAL LETTER Y WITH GRAVE
"\u1EF3":"{\\`y}", // LATIN SMALL LETTER Y WITH GRAVE
"\u1EF4":"{\\d Y}", // LATIN CAPITAL LETTER Y WITH DOT BELOW
"\u1EF5":"{\\d y}", // LATIN SMALL LETTER Y WITH DOT BELOW
"\u1EF8":"{\\~Y}", // LATIN CAPITAL LETTER Y WITH TILDE
"\u1EF9":"{\\~y}" // LATIN SMALL LETTER Y WITH TILDE
};
/* unfortunately the mapping isn't reversible - hence this second table - sigh! */
var reversemappingTable = {
"\\url" : "", // strip 'url'
"\\href" : "", // strip 'href'
"{\\textexclamdown}" : "\u00A1", // INVERTED EXCLAMATION MARK
"{\\textcent}" : "\u00A2", // CENT SIGN
"{\\textsterling}" : "\u00A3", // POUND SIGN
"{\\textyen}" : "\u00A5", // YEN SIGN
"{\\textbrokenbar}" : "\u00A6", // BROKEN BAR
"{\\textsection}" : "\u00A7", // SECTION SIGN
"{\\textasciidieresis}" : "\u00A8", // DIAERESIS
"{\\textcopyright}" : "\u00A9", // COPYRIGHT SIGN
"{\\textordfeminine}" : "\u00AA", // FEMININE ORDINAL INDICATOR
"{\\guillemotleft}" : "\u00AB", // LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
"{\\textlnot}" : "\u00AC", // NOT SIGN
"{\\textregistered}" : "\u00AE", // REGISTERED SIGN
"{\\textasciimacron}" : "\u00AF", // MACRON
"{\\textdegree}" : "\u00B0", // DEGREE SIGN
"{\\textpm}" : "\u00B1", // PLUS-MINUS SIGN
"{\\texttwosuperior}" : "\u00B2", // SUPERSCRIPT TWO
"{\\textthreesuperior}" : "\u00B3", // SUPERSCRIPT THREE
"{\\textasciiacute}" : "\u00B4", // ACUTE ACCENT
"{\\textmu}" : "\u00B5", // MICRO SIGN
"{\\textparagraph}" : "\u00B6", // PILCROW SIGN
"{\\textperiodcentered}" : "\u00B7", // MIDDLE DOT
"{\\c\\ }" : "\u00B8", // CEDILLA
"{\\textonesuperior}" : "\u00B9", // SUPERSCRIPT ONE
"{\\textordmasculine}" : "\u00BA", // MASCULINE ORDINAL INDICATOR
"{\\guillemotright}" : "\u00BB", // RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
"{\\textonequarter}" : "\u00BC", // VULGAR FRACTION ONE QUARTER
"{\\textonehalf}" : "\u00BD", // VULGAR FRACTION ONE HALF
"{\\textthreequarters}" : "\u00BE", // VULGAR FRACTION THREE QUARTERS
"{\\textquestiondown}" : "\u00BF", // INVERTED QUESTION MARK
"{\\AE}" : "\u00C6", // LATIN CAPITAL LETTER AE
"{\\DH}" : "\u00D0", // LATIN CAPITAL LETTER ETH
"{\\texttimes}" : "\u00D7", // MULTIPLICATION SIGN
"{\\O}" : "\u00D8", // LATIN SMALL LETTER O WITH STROKE
"{\\TH}" : "\u00DE", // LATIN CAPITAL LETTER THORN
"{\\ss}" : "\u00DF", // LATIN SMALL LETTER SHARP S
"{\\ae}" : "\u00E6", // LATIN SMALL LETTER AE
"{\\dh}" : "\u00F0", // LATIN SMALL LETTER ETH
"{\\textdiv}" : "\u00F7", // DIVISION SIGN
"{\\o}" : "\u00F8", // LATIN SMALL LETTER O WITH STROKE
"{\\th}" : "\u00FE", // LATIN SMALL LETTER THORN
"{\\i}" : "\u0131", // LATIN SMALL LETTER DOTLESS I
//"'n" : "\u0149", // LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
"{\\NG}" : "\u014A", // LATIN CAPITAL LETTER ENG
"{\\ng}" : "\u014B", // LATIN SMALL LETTER ENG
"{\\OE}" : "\u0152", // LATIN CAPITAL LIGATURE OE
"{\\oe}" : "\u0153", // LATIN SMALL LIGATURE OE
"{\\textasciicircum}" : "\u02C6", // MODIFIER LETTER CIRCUMFLEX ACCENT
// "\\~{}" : "\u02DC", // SMALL TILDE
"{\\textacutedbl}" : "\u02DD", // DOUBLE ACUTE ACCENT
//Greek Letters Courtesy of Spartanroc
"$\\Gamma$" : "\u0393", // GREEK Gamma
"$\\Delta$" : "\u0394", // GREEK Delta
"$\\Theta$" : "\u0398", // GREEK Theta
"$\\Lambda$" : "\u039B", // GREEK Lambda
"$\\Xi$" : "\u039E", // GREEK Xi
"$\\Pi$" : "\u03A0", // GREEK Pi
"$\\Sigma$" : "\u03A3", // GREEK Sigma
"$\\Phi$" : "\u03A6", // GREEK Phi
"$\\Psi$" : "\u03A8", // GREEK Psi
"$\\Omega$" : "\u03A9", // GREEK Omega
"$\\alpha$" : "\u03B1", // GREEK alpha
"$\\beta$" : "\u03B2", // GREEK beta
"$\\gamma$" : "\u03B3", // GREEK gamma
"$\\delta$" : "\u03B4", // GREEK delta
"$\\varepsilon$": "\u03B5", // GREEK var-epsilon
"$\\zeta$" : "\u03B6", // GREEK zeta
"$\\eta$" : "\u03B7", // GREEK eta
"$\\theta$" : "\u03B8", // GREEK theta
"$\\iota$" : "\u03B9", // GREEK iota
"$\\kappa$" : "\u03BA", // GREEK kappa
"$\\lambda$" : "\u03BB", // GREEK lambda
"$\\mu$" : "\u03BC", // GREEK mu
"$\\nu$" : "\u03BD", // GREEK nu
"$\\xi$" : "\u03BE", // GREEK xi
"$\\pi$" : "\u03C0", // GREEK pi
"$\\rho$" : "\u03C1", // GREEK rho
"$\\varsigma$" : "\u03C2", // GREEK var-sigma
"$\\sigma$" : "\u03C3", // GREEK sigma
"$\\tau$" : "\u03C4", // GREEK tau
"$\\upsilon$" : "\u03C5", // GREEK upsilon
"$\\varphi$" : "\u03C6", // GREEK var-phi
"$\\chi$" : "\u03C7", // GREEK chi
"$\\psi$" : "\u03C8", // GREEK psi
"$\\omega$" : "\u03C9", // GREEK omega
"$\\vartheta$" : "\u03D1", // GREEK var-theta
"$\\Upsilon$" : "\u03D2", // GREEK Upsilon
"$\\phi$" : "\u03D5", // GREEK phi
"$\\varpi$" : "\u03D6", // GREEK var-pi
"$\\varrho$" : "\u03F1", // GREEK var-rho
"$\\epsilon$" : "\u03F5", // GREEK epsilon
//Greek letters end
"{\\textendash}" : "\u2013", // EN DASH
"{\\textemdash}" : "\u2014", // EM DASH
"---" : "\u2014", // EM DASH
"--" : "\u2013", // EN DASH
"{\\textbardbl}" : "\u2016", // DOUBLE VERTICAL LINE
"{\\textunderscore}" : "\u2017", // DOUBLE LOW LINE
"{\\textquoteleft}" : "\u2018", // LEFT SINGLE QUOTATION MARK
"{\\textquoteright}" : "\u2019", // RIGHT SINGLE QUOTATION MARK
"{\\textquotesingle}" : "'", // APOSTROPHE / NEUTRAL SINGLE QUOTATION MARK
"{\\quotesinglbase}" : "\u201A", // SINGLE LOW-9 QUOTATION MARK
"{\\textquotedblleft}" : "\u201C", // LEFT DOUBLE QUOTATION MARK
"{\\textquotedblright}" : "\u201D", // RIGHT DOUBLE QUOTATION MARK
"{\\quotedblbase}" : "\u201E", // DOUBLE LOW-9 QUOTATION MARK
// "{\\quotedblbase}" : "\u201F", // DOUBLE HIGH-REVERSED-9 QUOTATION MARK
"{\\textdagger}" : "\u2020", // DAGGER
"{\\textdaggerdbl}" : "\u2021", // DOUBLE DAGGER
"{\\textbullet}" : "\u2022", // BULLET
"{\\textellipsis}" : "\u2026", // HORIZONTAL ELLIPSIS
"{\\textperthousand}" : "\u2030", // PER MILLE SIGN
"'''" : "\u2034", // TRIPLE PRIME
"''" : "\u201D", // RIGHT DOUBLE QUOTATION MARK (could be a double prime)
"``" : "\u201C", // LEFT DOUBLE QUOTATION MARK (could be a reversed double prime)
"```" : "\u2037", // REVERSED TRIPLE PRIME
"{\\guilsinglleft}" : "\u2039", // SINGLE LEFT-POINTING ANGLE QUOTATION MARK
"{\\guilsinglright}" : "\u203A", // SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
"!!" : "\u203C", // DOUBLE EXCLAMATION MARK
"{\\textfractionsolidus}" : "\u2044", // FRACTION SLASH
"?!" : "\u2048", // QUESTION EXCLAMATION MARK
"!?" : "\u2049", // EXCLAMATION QUESTION MARK
"$^{0}$" : "\u2070", // SUPERSCRIPT ZERO
"$^{4}$" : "\u2074", // SUPERSCRIPT FOUR
"$^{5}$" : "\u2075", // SUPERSCRIPT FIVE
"$^{6}$" : "\u2076", // SUPERSCRIPT SIX
"$^{7}$" : "\u2077", // SUPERSCRIPT SEVEN
"$^{8}$" : "\u2078", // SUPERSCRIPT EIGHT
"$^{9}$" : "\u2079", // SUPERSCRIPT NINE
"$^{+}$" : "\u207A", // SUPERSCRIPT PLUS SIGN
"$^{-}$" : "\u207B", // SUPERSCRIPT MINUS
"$^{=}$" : "\u207C", // SUPERSCRIPT EQUALS SIGN
"$^{(}$" : "\u207D", // SUPERSCRIPT LEFT PARENTHESIS
"$^{)}$" : "\u207E", // SUPERSCRIPT RIGHT PARENTHESIS
"$^{n}$" : "\u207F", // SUPERSCRIPT LATIN SMALL LETTER N
"$_{0}$" : "\u2080", // SUBSCRIPT ZERO
"$_{1}$" : "\u2081", // SUBSCRIPT ONE
"$_{2}$" : "\u2082", // SUBSCRIPT TWO
"$_{3}$" : "\u2083", // SUBSCRIPT THREE
"$_{4}$" : "\u2084", // SUBSCRIPT FOUR
"$_{5}$" : "\u2085", // SUBSCRIPT FIVE
"$_{6}$" : "\u2086", // SUBSCRIPT SIX
"$_{7}$" : "\u2087", // SUBSCRIPT SEVEN
"$_{8}$" : "\u2088", // SUBSCRIPT EIGHT
"$_{9}$" : "\u2089", // SUBSCRIPT NINE
"$_{+}$" : "\u208A", // SUBSCRIPT PLUS SIGN
"$_{-}$" : "\u208B", // SUBSCRIPT MINUS
"$_{=}$" : "\u208C", // SUBSCRIPT EQUALS SIGN
"$_{(}$" : "\u208D", // SUBSCRIPT LEFT PARENTHESIS
"$_{)}$" : "\u208E", // SUBSCRIPT RIGHT PARENTHESIS
"{\\texteuro}" : "\u20AC", // EURO SIGN
//"a/c" : "\u2100", // ACCOUNT OF
//"a/s" : "\u2101", // ADDRESSED TO THE SUBJECT
"{\\textcelsius}" : "\u2103", // DEGREE CELSIUS
//"c/o" : "\u2105", // CARE OF
//"c/u" : "\u2106", // CADA UNA
"{\\textnumero}" : "\u2116", // NUMERO SIGN
"{\\textcircledP}" : "\u2117", // SOUND RECORDING COPYRIGHT
"{\\textservicemark}" : "\u2120", // SERVICE MARK
"{TEL}" : "\u2121", // TELEPHONE SIGN
"{\\texttrademark}" : "\u2122", // TRADE MARK SIGN
"{\\textohm}" : "\u2126", // OHM SIGN
"{\\textestimated}" : "\u212E", // ESTIMATED SYMBOL
/*" 1/3" : "\u2153", // VULGAR FRACTION ONE THIRD
" 2/3" : "\u2154", // VULGAR FRACTION TWO THIRDS
" 1/5" : "\u2155", // VULGAR FRACTION ONE FIFTH
" 2/5" : "\u2156", // VULGAR FRACTION TWO FIFTHS
" 3/5" : "\u2157", // VULGAR FRACTION THREE FIFTHS
" 4/5" : "\u2158", // VULGAR FRACTION FOUR FIFTHS
" 1/6" : "\u2159", // VULGAR FRACTION ONE SIXTH
" 5/6" : "\u215A", // VULGAR FRACTION FIVE SIXTHS
" 1/8" : "\u215B", // VULGAR FRACTION ONE EIGHTH
" 3/8" : "\u215C", // VULGAR FRACTION THREE EIGHTHS
" 5/8" : "\u215D", // VULGAR FRACTION FIVE EIGHTHS
" 7/8" : "\u215E", // VULGAR FRACTION SEVEN EIGHTHS
" 1/" : "\u215F", // FRACTION NUMERATOR ONE */
"{\\textleftarrow}" : "\u2190", // LEFTWARDS ARROW
"{\\textuparrow}" : "\u2191", // UPWARDS ARROW
"{\\textrightarrow}" : "\u2192", // RIGHTWARDS ARROW
"{\\textdownarrow}" : "\u2193", // DOWNWARDS ARROW
/*"<->" : "\u2194", // LEFT RIGHT ARROW
"<=" : "\u21D0", // LEFTWARDS DOUBLE ARROW
"=>" : "\u21D2", // RIGHTWARDS DOUBLE ARROW
"<=>" : "\u21D4", // LEFT RIGHT DOUBLE ARROW */
"$\\infty$" : "\u221E", // INFINITY
/*"||" : "\u2225", // PARALLEL TO
"/=" : "\u2260", // NOT EQUAL TO
"<=" : "\u2264", // LESS-THAN OR EQUAL TO
">=" : "\u2265", // GREATER-THAN OR EQUAL TO
"<<" : "\u226A", // MUCH LESS-THAN
">>" : "\u226B", // MUCH GREATER-THAN
"(+)" : "\u2295", // CIRCLED PLUS
"(-)" : "\u2296", // CIRCLED MINUS
"(x)" : "\u2297", // CIRCLED TIMES
"(/)" : "\u2298", // CIRCLED DIVISION SLASH
"|-" : "\u22A2", // RIGHT TACK
"-|" : "\u22A3", // LEFT TACK
"|-" : "\u22A6", // ASSERTION
"|=" : "\u22A7", // MODELS
"|=" : "\u22A8", // TRUE
"||-" : "\u22A9", // FORCES */
"$\\#$" : "\u22D5", // EQUAL AND PARALLEL TO
//"<<<" : "\u22D8", // VERY MUCH LESS-THAN
//">>>" : "\u22D9", // VERY MUCH GREATER-THAN
"{\\textlangle}" : "\u2329", // LEFT-POINTING ANGLE BRACKET
"{\\textrangle}" : "\u232A", // RIGHT-POINTING ANGLE BRACKET
"{\\textvisiblespace}" : "\u2423", // OPEN BOX
//"///" : "\u2425", // SYMBOL FOR DELETE FORM TWO
"{\\textopenbullet}" : "\u25E6", // WHITE BULLET
//":-(" : "\u2639", // WHITE FROWNING FACE
//":-)" : "\u263A", // WHITE SMILING FACE
//"(-: " : "\u263B", // BLACK SMILING FACE
// "$\\#$" : "\u266F", // MUSIC SHARP SIGN
"$\\%<$" : "\u2701", // UPPER BLADE SCISSORS
/* "$\\%<$" : "\u2702", // BLACK SCISSORS
"$\\%<$" : "\u2703", // LOWER BLADE SCISSORS
"$\\%<$" : "\u2704", // WHITE SCISSORS */
/* Derived accented characters */
"{\\`A}" : "\u00C0", // LATIN CAPITAL LETTER A WITH GRAVE
"{\\'A}" : "\u00C1", // LATIN CAPITAL LETTER A WITH ACUTE
"{\\^A}" : "\u00C2", // LATIN CAPITAL LETTER A WITH CIRCUMFLEX
"{\\~A}" : "\u00C3", // LATIN CAPITAL LETTER A WITH TILDE
"{\\\"A}" : "\u00C4", // LATIN CAPITAL LETTER A WITH DIAERESIS
"{\\r A}" : "\u00C5", // LATIN CAPITAL LETTER A WITH RING ABOVE
"{\\AA}" : "\u00C5", // LATIN CAPITAL LETTER A WITH RING ABOVE
"{\\c C}" : "\u00C7", // LATIN CAPITAL LETTER C WITH CEDILLA
"{\\`E}" : "\u00C8", // LATIN CAPITAL LETTER E WITH GRAVE
"{\\'E}" : "\u00C9", // LATIN CAPITAL LETTER E WITH ACUTE
"{\\^E}" : "\u00CA", // LATIN CAPITAL LETTER E WITH CIRCUMFLEX
"{\\\"E}" : "\u00CB", // LATIN CAPITAL LETTER E WITH DIAERESIS
"{\\`I}" : "\u00CC", // LATIN CAPITAL LETTER I WITH GRAVE
"{\\'I}" : "\u00CD", // LATIN CAPITAL LETTER I WITH ACUTE
"{\\^I}" : "\u00CE", // LATIN CAPITAL LETTER I WITH CIRCUMFLEX
"{\\\"I}" : "\u00CF", // LATIN CAPITAL LETTER I WITH DIAERESIS
"{\\~N}" : "\u00D1", // LATIN CAPITAL LETTER N WITH TILDE
"{\\`O}" : "\u00D2", // LATIN CAPITAL LETTER O WITH GRAVE
"{\\'O}" : "\u00D3", // LATIN CAPITAL LETTER O WITH ACUTE
"{\\^O}" : "\u00D4", // LATIN CAPITAL LETTER O WITH CIRCUMFLEX
"{\\~O}" : "\u00D5", // LATIN CAPITAL LETTER O WITH TILDE
"{\\\"O}" : "\u00D6", // LATIN CAPITAL LETTER O WITH DIAERESIS
"{\\`U}" : "\u00D9", // LATIN CAPITAL LETTER U WITH GRAVE
"{\\'U}" : "\u00DA", // LATIN CAPITAL LETTER U WITH ACUTE
"{\\^U}" : "\u00DB", // LATIN CAPITAL LETTER U WITH CIRCUMFLEX
"{\\\"U}" : "\u00DC", // LATIN CAPITAL LETTER U WITH DIAERESIS
"{\\'Y}" : "\u00DD", // LATIN CAPITAL LETTER Y WITH ACUTE
"{\\`a}" : "\u00E0", // LATIN SMALL LETTER A WITH GRAVE
"{\\'a}" : "\u00E1", // LATIN SMALL LETTER A WITH ACUTE
"{\\^a}" : "\u00E2", // LATIN SMALL LETTER A WITH CIRCUMFLEX
"{\\~a}" : "\u00E3", // LATIN SMALL LETTER A WITH TILDE
"{\\\"a}" : "\u00E4", // LATIN SMALL LETTER A WITH DIAERESIS
"{\\r a}" : "\u00E5", // LATIN SMALL LETTER A WITH RING ABOVE
"{\\aa}" : "\u00E5", // LATIN SMALL LETTER A WITH RING ABOVE
"{\\c c}" : "\u00E7", // LATIN SMALL LETTER C WITH CEDILLA
"{\\`e}" : "\u00E8", // LATIN SMALL LETTER E WITH GRAVE
"{\\'e}" : "\u00E9", // LATIN SMALL LETTER E WITH ACUTE
"{\\^e}" : "\u00EA", // LATIN SMALL LETTER E WITH CIRCUMFLEX
"{\\\"e}" : "\u00EB", // LATIN SMALL LETTER E WITH DIAERESIS
"{\\`i}" : "\u00EC", // LATIN SMALL LETTER I WITH GRAVE
"{\\'i}" : "\u00ED", // LATIN SMALL LETTER I WITH ACUTE
"{\\^i}" : "\u00EE", // LATIN SMALL LETTER I WITH CIRCUMFLEX
"{\\\"i}" : "\u00EF", // LATIN SMALL LETTER I WITH DIAERESIS
"{\\~n}" : "\u00F1", // LATIN SMALL LETTER N WITH TILDE
"{\\`o}" : "\u00F2", // LATIN SMALL LETTER O WITH GRAVE
"{\\'o}" : "\u00F3", // LATIN SMALL LETTER O WITH ACUTE
"{\\^o}" : "\u00F4", // LATIN SMALL LETTER O WITH CIRCUMFLEX
"{\\~o}" : "\u00F5", // LATIN SMALL LETTER O WITH TILDE
"{\\\"o}" : "\u00F6", // LATIN SMALL LETTER O WITH DIAERESIS
"{\\`u}" : "\u00F9", // LATIN SMALL LETTER U WITH GRAVE
"{\\'u}" : "\u00FA", // LATIN SMALL LETTER U WITH ACUTE
"{\\^u}" : "\u00FB", // LATIN SMALL LETTER U WITH CIRCUMFLEX
"{\\\"u}" : "\u00FC", // LATIN SMALL LETTER U WITH DIAERESIS
"{\\'y}" : "\u00FD", // LATIN SMALL LETTER Y WITH ACUTE
"{\\\"y}" : "\u00FF", // LATIN SMALL LETTER Y WITH DIAERESIS
"{\\=A}" : "\u0100", // LATIN CAPITAL LETTER A WITH MACRON
"{\\=a}" : "\u0101", // LATIN SMALL LETTER A WITH MACRON
"{\\u A}" : "\u0102", // LATIN CAPITAL LETTER A WITH BREVE
"{\\u a}" : "\u0103", // LATIN SMALL LETTER A WITH BREVE
"{\\k A}" : "\u0104", // LATIN CAPITAL LETTER A WITH OGONEK
"{\\k a}" : "\u0105", // LATIN SMALL LETTER A WITH OGONEK
"{\\'C}" : "\u0106", // LATIN CAPITAL LETTER C WITH ACUTE
"{\\'c}" : "\u0107", // LATIN SMALL LETTER C WITH ACUTE
"{\\^C}" : "\u0108", // LATIN CAPITAL LETTER C WITH CIRCUMFLEX
"{\\^c}" : "\u0109", // LATIN SMALL LETTER C WITH CIRCUMFLEX
"{\\.C}" : "\u010A", // LATIN CAPITAL LETTER C WITH DOT ABOVE
"{\\.c}" : "\u010B", // LATIN SMALL LETTER C WITH DOT ABOVE
"{\\v C}" : "\u010C", // LATIN CAPITAL LETTER C WITH CARON
"{\\v c}" : "\u010D", // LATIN SMALL LETTER C WITH CARON
"{\\v D}" : "\u010E", // LATIN CAPITAL LETTER D WITH CARON
"{\\v d}" : "\u010F", // LATIN SMALL LETTER D WITH CARON
"{\\=E}" : "\u0112", // LATIN CAPITAL LETTER E WITH MACRON
"{\\=e}" : "\u0113", // LATIN SMALL LETTER E WITH MACRON
"{\\u E}" : "\u0114", // LATIN CAPITAL LETTER E WITH BREVE
"{\\u e}" : "\u0115", // LATIN SMALL LETTER E WITH BREVE
"{\\.E}" : "\u0116", // LATIN CAPITAL LETTER E WITH DOT ABOVE
"{\\.e}" : "\u0117", // LATIN SMALL LETTER E WITH DOT ABOVE
"{\\k E}" : "\u0118", // LATIN CAPITAL LETTER E WITH OGONEK
"{\\k e}" : "\u0119", // LATIN SMALL LETTER E WITH OGONEK
"{\\v E}" : "\u011A", // LATIN CAPITAL LETTER E WITH CARON
"{\\v e}" : "\u011B", // LATIN SMALL LETTER E WITH CARON
"{\\^G}" : "\u011C", // LATIN CAPITAL LETTER G WITH CIRCUMFLEX
"{\\^g}" : "\u011D", // LATIN SMALL LETTER G WITH CIRCUMFLEX
"{\\u G}" : "\u011E", // LATIN CAPITAL LETTER G WITH BREVE
"{\\u g}" : "\u011F", // LATIN SMALL LETTER G WITH BREVE
"{\\.G}" : "\u0120", // LATIN CAPITAL LETTER G WITH DOT ABOVE
"{\\.g}" : "\u0121", // LATIN SMALL LETTER G WITH DOT ABOVE
"{\\c G}" : "\u0122", // LATIN CAPITAL LETTER G WITH CEDILLA
"{\\c g}" : "\u0123", // LATIN SMALL LETTER G WITH CEDILLA
"{\\^H}" : "\u0124", // LATIN CAPITAL LETTER H WITH CIRCUMFLEX
"{\\^h}" : "\u0125", // LATIN SMALL LETTER H WITH CIRCUMFLEX
"{\\~I}" : "\u0128", // LATIN CAPITAL LETTER I WITH TILDE
"{\\~i}" : "\u0129", // LATIN SMALL LETTER I WITH TILDE
"{\\=I}" : "\u012A", // LATIN CAPITAL LETTER I WITH MACRON
"{\\=i}" : "\u012B", // LATIN SMALL LETTER I WITH MACRON
"{\\=\\i}" : "\u012B", // LATIN SMALL LETTER I WITH MACRON
"{\\u I}" : "\u012C", // LATIN CAPITAL LETTER I WITH BREVE
"{\\u i}" : "\u012D", // LATIN SMALL LETTER I WITH BREVE
"{\\k I}" : "\u012E", // LATIN CAPITAL LETTER I WITH OGONEK
"{\\k i}" : "\u012F", // LATIN SMALL LETTER I WITH OGONEK
"{\\.I}" : "\u0130", // LATIN CAPITAL LETTER I WITH DOT ABOVE
"{\\^J}" : "\u0134", // LATIN CAPITAL LETTER J WITH CIRCUMFLEX
"{\\^j}" : "\u0135", // LATIN SMALL LETTER J WITH CIRCUMFLEX
"{\\c K}" : "\u0136", // LATIN CAPITAL LETTER K WITH CEDILLA
"{\\c k}" : "\u0137", // LATIN SMALL LETTER K WITH CEDILLA
"{\\'L}" : "\u0139", // LATIN CAPITAL LETTER L WITH ACUTE
"{\\'l}" : "\u013A", // LATIN SMALL LETTER L WITH ACUTE
"{\\c L}" : "\u013B", // LATIN CAPITAL LETTER L WITH CEDILLA
"{\\c l}" : "\u013C", // LATIN SMALL LETTER L WITH CEDILLA
"{\\v L}" : "\u013D", // LATIN CAPITAL LETTER L WITH CARON
"{\\v l}" : "\u013E", // LATIN SMALL LETTER L WITH CARON
"{\\L}" : "\u0141", //LATIN CAPITAL LETTER L WITH STROKE
"{\\l}" : "\u0142", //LATIN SMALL LETTER L WITH STROKE
"{\\'N}" : "\u0143", // LATIN CAPITAL LETTER N WITH ACUTE
"{\\'n}" : "\u0144", // LATIN SMALL LETTER N WITH ACUTE
"{\\c N}" : "\u0145", // LATIN CAPITAL LETTER N WITH CEDILLA
"{\\c n}" : "\u0146", // LATIN SMALL LETTER N WITH CEDILLA
"{\\v N}" : "\u0147", // LATIN CAPITAL LETTER N WITH CARON
"{\\v n}" : "\u0148", // LATIN SMALL LETTER N WITH CARON
"{\\=O}" : "\u014C", // LATIN CAPITAL LETTER O WITH MACRON
"{\\=o}" : "\u014D", // LATIN SMALL LETTER O WITH MACRON
"{\\u O}" : "\u014E", // LATIN CAPITAL LETTER O WITH BREVE
"{\\u o}" : "\u014F", // LATIN SMALL LETTER O WITH BREVE
"{\\H O}" : "\u0150", // LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
"{\\H o}" : "\u0151", // LATIN SMALL LETTER O WITH DOUBLE ACUTE
"{\\'R}" : "\u0154", // LATIN CAPITAL LETTER R WITH ACUTE
"{\\'r}" : "\u0155", // LATIN SMALL LETTER R WITH ACUTE
"{\\c R}" : "\u0156", // LATIN CAPITAL LETTER R WITH CEDILLA
"{\\c r}" : "\u0157", // LATIN SMALL LETTER R WITH CEDILLA
"{\\v R}" : "\u0158", // LATIN CAPITAL LETTER R WITH CARON
"{\\v r}" : "\u0159", // LATIN SMALL LETTER R WITH CARON
"{\\'S}" : "\u015A", // LATIN CAPITAL LETTER S WITH ACUTE
"{\\'s}" : "\u015B", // LATIN SMALL LETTER S WITH ACUTE
"{\\^S}" : "\u015C", // LATIN CAPITAL LETTER S WITH CIRCUMFLEX
"{\\^s}" : "\u015D", // LATIN SMALL LETTER S WITH CIRCUMFLEX
"{\\c S}" : "\u015E", // LATIN CAPITAL LETTER S WITH CEDILLA
"{\\c s}" : "\u015F", // LATIN SMALL LETTER S WITH CEDILLA
"{\\v S}" : "\u0160", // LATIN CAPITAL LETTER S WITH CARON
"{\\v s}" : "\u0161", // LATIN SMALL LETTER S WITH CARON
"{\\c T}" : "\u0162", // LATIN CAPITAL LETTER T WITH CEDILLA
"{\\c t}" : "\u0163", // LATIN SMALL LETTER T WITH CEDILLA
"{\\v T}" : "\u0164", // LATIN CAPITAL LETTER T WITH CARON
"{\\v t}" : "\u0165", // LATIN SMALL LETTER T WITH CARON
"{\\~U}" : "\u0168", // LATIN CAPITAL LETTER U WITH TILDE
"{\\~u}" : "\u0169", // LATIN SMALL LETTER U WITH TILDE
"{\\=U}" : "\u016A", // LATIN CAPITAL LETTER U WITH MACRON
"{\\=u}" : "\u016B", // LATIN SMALL LETTER U WITH MACRON
"{\\u U}" : "\u016C", // LATIN CAPITAL LETTER U WITH BREVE
"{\\u u}" : "\u016D", // LATIN SMALL LETTER U WITH BREVE
"{\\r U}" : "\u016E", // LATIN CAPITAL LETTER U WITH RING ABOVE
"{\\r u}" : "\u016F", // LATIN SMALL LETTER U WITH RING ABOVE
"{\\H U}" : "\u0170", // LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
"{\\H u}" : "\u0171", // LATIN SMALL LETTER U WITH DOUBLE ACUTE
"{\\k U}" : "\u0172", // LATIN CAPITAL LETTER U WITH OGONEK
"{\\k u}" : "\u0173", // LATIN SMALL LETTER U WITH OGONEK
"{\\^W}" : "\u0174", // LATIN CAPITAL LETTER W WITH CIRCUMFLEX
"{\\^w}" : "\u0175", // LATIN SMALL LETTER W WITH CIRCUMFLEX
"{\\^Y}" : "\u0176", // LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
"{\\^y}" : "\u0177", // LATIN SMALL LETTER Y WITH CIRCUMFLEX
"{\\\"Y}" : "\u0178", // LATIN CAPITAL LETTER Y WITH DIAERESIS
"{\\'Z}" : "\u0179", // LATIN CAPITAL LETTER Z WITH ACUTE
"{\\'z}" : "\u017A", // LATIN SMALL LETTER Z WITH ACUTE
"{\\.Z}" : "\u017B", // LATIN CAPITAL LETTER Z WITH DOT ABOVE
"{\\.z}" : "\u017C", // LATIN SMALL LETTER Z WITH DOT ABOVE
"{\\v Z}" : "\u017D", // LATIN CAPITAL LETTER Z WITH CARON
"{\\v z}" : "\u017E", // LATIN SMALL LETTER Z WITH CARON
"{\\v A}" : "\u01CD", // LATIN CAPITAL LETTER A WITH CARON
"{\\v a}" : "\u01CE", // LATIN SMALL LETTER A WITH CARON
"{\\v I}" : "\u01CF", // LATIN CAPITAL LETTER I WITH CARON
"{\\v i}" : "\u01D0", // LATIN SMALL LETTER I WITH CARON
"{\\v O}" : "\u01D1", // LATIN CAPITAL LETTER O WITH CARON
"{\\v o}" : "\u01D2", // LATIN SMALL LETTER O WITH CARON
"{\\v U}" : "\u01D3", // LATIN CAPITAL LETTER U WITH CARON
"{\\v u}" : "\u01D4", // LATIN SMALL LETTER U WITH CARON
"{\\v G}" : "\u01E6", // LATIN CAPITAL LETTER G WITH CARON
"{\\v g}" : "\u01E7", // LATIN SMALL LETTER G WITH CARON
"{\\v K}" : "\u01E8", // LATIN CAPITAL LETTER K WITH CARON
"{\\v k}" : "\u01E9", // LATIN SMALL LETTER K WITH CARON
"{\\k O}" : "\u01EA", // LATIN CAPITAL LETTER O WITH OGONEK
"{\\k o}" : "\u01EB", // LATIN SMALL LETTER O WITH OGONEK
"{\\v j}" : "\u01F0", // LATIN SMALL LETTER J WITH CARON
"{\\'G}" : "\u01F4", // LATIN CAPITAL LETTER G WITH ACUTE
"{\\'g}" : "\u01F5", // LATIN SMALL LETTER G WITH ACUTE
"{\\.B}" : "\u1E02", // LATIN CAPITAL LETTER B WITH DOT ABOVE
"{\\.b}" : "\u1E03", // LATIN SMALL LETTER B WITH DOT ABOVE
"{\\d B}" : "\u1E04", // LATIN CAPITAL LETTER B WITH DOT BELOW
"{\\d b}" : "\u1E05", // LATIN SMALL LETTER B WITH DOT BELOW
"{\\b B}" : "\u1E06", // LATIN CAPITAL LETTER B WITH LINE BELOW
"{\\b b}" : "\u1E07", // LATIN SMALL LETTER B WITH LINE BELOW
"{\\.D}" : "\u1E0A", // LATIN CAPITAL LETTER D WITH DOT ABOVE
"{\\.d}" : "\u1E0B", // LATIN SMALL LETTER D WITH DOT ABOVE
"{\\d D}" : "\u1E0C", // LATIN CAPITAL LETTER D WITH DOT BELOW
"{\\d d}" : "\u1E0D", // LATIN SMALL LETTER D WITH DOT BELOW
"{\\b D}" : "\u1E0E", // LATIN CAPITAL LETTER D WITH LINE BELOW
"{\\b d}" : "\u1E0F", // LATIN SMALL LETTER D WITH LINE BELOW
"{\\c D}" : "\u1E10", // LATIN CAPITAL LETTER D WITH CEDILLA
"{\\c d}" : "\u1E11", // LATIN SMALL LETTER D WITH CEDILLA
"{\\.F}" : "\u1E1E", // LATIN CAPITAL LETTER F WITH DOT ABOVE
"{\\.f}" : "\u1E1F", // LATIN SMALL LETTER F WITH DOT ABOVE
"{\\=G}" : "\u1E20", // LATIN CAPITAL LETTER G WITH MACRON
"{\\=g}" : "\u1E21", // LATIN SMALL LETTER G WITH MACRON
"{\\.H}" : "\u1E22", // LATIN CAPITAL LETTER H WITH DOT ABOVE
"{\\.h}" : "\u1E23", // LATIN SMALL LETTER H WITH DOT ABOVE
"{\\d H}" : "\u1E24", // LATIN CAPITAL LETTER H WITH DOT BELOW
"{\\d h}" : "\u1E25", // LATIN SMALL LETTER H WITH DOT BELOW
"{\\\"H}" : "\u1E26", // LATIN CAPITAL LETTER H WITH DIAERESIS
"{\\\"h}" : "\u1E27", // LATIN SMALL LETTER H WITH DIAERESIS
"{\\c H}" : "\u1E28", // LATIN CAPITAL LETTER H WITH CEDILLA
"{\\c h}" : "\u1E29", // LATIN SMALL LETTER H WITH CEDILLA
"{\\'K}" : "\u1E30", // LATIN CAPITAL LETTER K WITH ACUTE
"{\\'k}" : "\u1E31", // LATIN SMALL LETTER K WITH ACUTE
"{\\d K}" : "\u1E32", // LATIN CAPITAL LETTER K WITH DOT BELOW
"{\\d k}" : "\u1E33", // LATIN SMALL LETTER K WITH DOT BELOW
"{\\b K}" : "\u1E34", // LATIN CAPITAL LETTER K WITH LINE BELOW
"{\\b k}" : "\u1E35", // LATIN SMALL LETTER K WITH LINE BELOW
"{\\d L}" : "\u1E36", // LATIN CAPITAL LETTER L WITH DOT BELOW
"{\\d l}" : "\u1E37", // LATIN SMALL LETTER L WITH DOT BELOW
"{\\b L}" : "\u1E3A", // LATIN CAPITAL LETTER L WITH LINE BELOW
"{\\b l}" : "\u1E3B", // LATIN SMALL LETTER L WITH LINE BELOW
"{\\'M}" : "\u1E3E", // LATIN CAPITAL LETTER M WITH ACUTE
"{\\'m}" : "\u1E3F", // LATIN SMALL LETTER M WITH ACUTE
"{\\.M}" : "\u1E40", // LATIN CAPITAL LETTER M WITH DOT ABOVE
"{\\.m}" : "\u1E41", // LATIN SMALL LETTER M WITH DOT ABOVE
"{\\d M}" : "\u1E42", // LATIN CAPITAL LETTER M WITH DOT BELOW
"{\\d m}" : "\u1E43", // LATIN SMALL LETTER M WITH DOT BELOW
"{\\.N}" : "\u1E44", // LATIN CAPITAL LETTER N WITH DOT ABOVE
"{\\.n}" : "\u1E45", // LATIN SMALL LETTER N WITH DOT ABOVE
"{\\d N}" : "\u1E46", // LATIN CAPITAL LETTER N WITH DOT BELOW
"{\\d n}" : "\u1E47", // LATIN SMALL LETTER N WITH DOT BELOW
"{\\b N}" : "\u1E48", // LATIN CAPITAL LETTER N WITH LINE BELOW
"{\\b n}" : "\u1E49", // LATIN SMALL LETTER N WITH LINE BELOW
"{\\'P}" : "\u1E54", // LATIN CAPITAL LETTER P WITH ACUTE
"{\\'p}" : "\u1E55", // LATIN SMALL LETTER P WITH ACUTE
"{\\.P}" : "\u1E56", // LATIN CAPITAL LETTER P WITH DOT ABOVE
"{\\.p}" : "\u1E57", // LATIN SMALL LETTER P WITH DOT ABOVE
"{\\.R}" : "\u1E58", // LATIN CAPITAL LETTER R WITH DOT ABOVE
"{\\.r}" : "\u1E59", // LATIN SMALL LETTER R WITH DOT ABOVE
"{\\d R}" : "\u1E5A", // LATIN CAPITAL LETTER R WITH DOT BELOW
"{\\d r}" : "\u1E5B", // LATIN SMALL LETTER R WITH DOT BELOW
"{\\b R}" : "\u1E5E", // LATIN CAPITAL LETTER R WITH LINE BELOW
"{\\b r}" : "\u1E5F", // LATIN SMALL LETTER R WITH LINE BELOW
"{\\.S}" : "\u1E60", // LATIN CAPITAL LETTER S WITH DOT ABOVE
"{\\.s}" : "\u1E61", // LATIN SMALL LETTER S WITH DOT ABOVE
"{\\d S}" : "\u1E62", // LATIN CAPITAL LETTER S WITH DOT BELOW
"{\\d s}" : "\u1E63", // LATIN SMALL LETTER S WITH DOT BELOW
"{\\.T}" : "\u1E6A", // LATIN CAPITAL LETTER T WITH DOT ABOVE
"{\\.t}" : "\u1E6B", // LATIN SMALL LETTER T WITH DOT ABOVE
"{\\d T}" : "\u1E6C", // LATIN CAPITAL LETTER T WITH DOT BELOW
"{\\d t}" : "\u1E6D", // LATIN SMALL LETTER T WITH DOT BELOW
"{\\b T}" : "\u1E6E", // LATIN CAPITAL LETTER T WITH LINE BELOW
"{\\b t}" : "\u1E6F", // LATIN SMALL LETTER T WITH LINE BELOW
"{\\~V}" : "\u1E7C", // LATIN CAPITAL LETTER V WITH TILDE
"{\\~v}" : "\u1E7D", // LATIN SMALL LETTER V WITH TILDE
"{\\d V}" : "\u1E7E", // LATIN CAPITAL LETTER V WITH DOT BELOW
"{\\d v}" : "\u1E7F", // LATIN SMALL LETTER V WITH DOT BELOW
"{\\`W}" : "\u1E80", // LATIN CAPITAL LETTER W WITH GRAVE
"{\\`w}" : "\u1E81", // LATIN SMALL LETTER W WITH GRAVE
"{\\'W}" : "\u1E82", // LATIN CAPITAL LETTER W WITH ACUTE
"{\\'w}" : "\u1E83", // LATIN SMALL LETTER W WITH ACUTE
"{\\\"W}" : "\u1E84", // LATIN CAPITAL LETTER W WITH DIAERESIS
"{\\\"w}" : "\u1E85", // LATIN SMALL LETTER W WITH DIAERESIS
"{\\.W}" : "\u1E86", // LATIN CAPITAL LETTER W WITH DOT ABOVE
"{\\.w}" : "\u1E87", // LATIN SMALL LETTER W WITH DOT ABOVE
"{\\d W}" : "\u1E88", // LATIN CAPITAL LETTER W WITH DOT BELOW
"{\\d w}" : "\u1E89", // LATIN SMALL LETTER W WITH DOT BELOW
"{\\.X}" : "\u1E8A", // LATIN CAPITAL LETTER X WITH DOT ABOVE
"{\\.x}" : "\u1E8B", // LATIN SMALL LETTER X WITH DOT ABOVE
"{\\\"X}" : "\u1E8C", // LATIN CAPITAL LETTER X WITH DIAERESIS
"{\\\"x}" : "\u1E8D", // LATIN SMALL LETTER X WITH DIAERESIS
"{\\.Y}" : "\u1E8E", // LATIN CAPITAL LETTER Y WITH DOT ABOVE
"{\\.y}" : "\u1E8F", // LATIN SMALL LETTER Y WITH DOT ABOVE
"{\\^Z}" : "\u1E90", // LATIN CAPITAL LETTER Z WITH CIRCUMFLEX
"{\\^z}" : "\u1E91", // LATIN SMALL LETTER Z WITH CIRCUMFLEX
"{\\d Z}" : "\u1E92", // LATIN CAPITAL LETTER Z WITH DOT BELOW
"{\\d z}" : "\u1E93", // LATIN SMALL LETTER Z WITH DOT BELOW
"{\\b Z}" : "\u1E94", // LATIN CAPITAL LETTER Z WITH LINE BELOW
"{\\b z}" : "\u1E95", // LATIN SMALL LETTER Z WITH LINE BELOW
"{\\b h}" : "\u1E96", // LATIN SMALL LETTER H WITH LINE BELOW
"{\\\"t}" : "\u1E97", // LATIN SMALL LETTER T WITH DIAERESIS
"{\\r w}" : "\u1E98", // LATIN SMALL LETTER W WITH RING ABOVE
"{\\r y}" : "\u1e99", // LATIN SMALL LETTER Y WITH RING ABOVE
"{\\d A}" : "\u1EA0", // LATIN CAPITAL LETTER A WITH DOT BELOW
"{\\d a}" : "\u1EA1", // LATIN SMALL LETTER A WITH DOT BELOW
"{\\d E}" : "\u1EB8", // LATIN CAPITAL LETTER E WITH DOT BELOW
"{\\d e}" : "\u1EB9", // LATIN SMALL LETTER E WITH DOT BELOW
"{\\~E}" : "\u1EBC", // LATIN CAPITAL LETTER E WITH TILDE
"{\\~e}" : "\u1EBD", // LATIN SMALL LETTER E WITH TILDE
"{\\d I}" : "\u1ECA", // LATIN CAPITAL LETTER I WITH DOT BELOW
"{\\d i}" : "\u1ECB", // LATIN SMALL LETTER I WITH DOT BELOW
"{\\d O}" : "\u1ECC", // LATIN CAPITAL LETTER O WITH DOT BELOW
"{\\d o}" : "\u1ECD", // LATIN SMALL LETTER O WITH DOT BELOW
"{\\d U}" : "\u1EE4", // LATIN CAPITAL LETTER U WITH DOT BELOW
"{\\d u}" : "\u1EE5", // LATIN SMALL LETTER U WITH DOT BELOW
"{\\`Y}" : "\u1EF2", // LATIN CAPITAL LETTER Y WITH GRAVE
"{\\`y}" : "\u1EF3", // LATIN SMALL LETTER Y WITH GRAVE
"{\\d Y}" : "\u1EF4", // LATIN CAPITAL LETTER Y WITH DOT BELOW
"{\\d y}" : "\u1EF5", // LATIN SMALL LETTER Y WITH DOT BELOW
"{\\~Y}" : "\u1EF8", // LATIN CAPITAL LETTER Y WITH TILDE
"{\\~y}" : "\u1EF9", // LATIN SMALL LETTER Y WITH TILDE
"{\\~}" : "\u223C", // TILDE OPERATOR
"~" : "\u00A0" // NO-BREAK SPACE
};/** BEGIN TEST CASES **/
var testCases = [
{
"type": "import",
"input": "@article{Adams2001,\nauthor = {Adams, Nancy K and DeSilva, Shanaka L and Self, Steven and Salas, Guido and Schubring, Steven and Permenter, Jason L and Arbesman, Kendra},\nfile = {:Users/heatherwright/Documents/Scientific Papers/Adams\\_Huaynaputina.pdf:pdf;::},\njournal = {Bulletin of Volcanology},\nkeywords = {Vulcanian eruptions,breadcrust,plinian},\npages = {493--518},\ntitle = {{The physical volcanology of the 1600 eruption of Huaynaputina, southern Peru}},\nvolume = {62},\nyear = {2001}\n}",
"items": [
{
"itemType": "journalArticle",
"title": "The physical volcanology of the 1600 eruption of Huaynaputina, southern Peru",
"creators": [
{
"firstName": "Nancy K",
"lastName": "Adams",
"creatorType": "author"
},
{
"firstName": "Shanaka L",
"lastName": "DeSilva",
"creatorType": "author"
},
{
"firstName": "Steven",
"lastName": "Self",
"creatorType": "author"
},
{
"firstName": "Guido",
"lastName": "Salas",
"creatorType": "author"
},
{
"firstName": "Steven",
"lastName": "Schubring",
"creatorType": "author"
},
{
"firstName": "Jason L",
"lastName": "Permenter",
"creatorType": "author"
},
{
"firstName": "Kendra",
"lastName": "Arbesman",
"creatorType": "author"
}
],
"date": "2001",
"itemID": "Adams2001",
"pages": "493–518",
"publicationTitle": "Bulletin of Volcanology",
"volume": "62",
"attachments": [
{
"path": "Users/heatherwright/Documents/Scientific Papers/Adams_Huaynaputina.pdf",
"mimeType": "application/pdf",
"title": "Attachment"
}
],
"tags": [
"Vulcanian eruptions",
"breadcrust",
"plinian"
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "@Book{abramowitz+stegun,\n author = \"Milton {Abramowitz} and Irene A. {Stegun}\",\n title = \"Handbook of Mathematical Functions with\n Formulas, Graphs, and Mathematical Tables\",\n publisher = \"Dover\",\n year = 1964,\n address = \"New York\",\n edition = \"ninth Dover printing, tenth GPO printing\"\n}\n\n@Book{Torre2008,\n author = \"Joe Torre and Tom Verducci\",\n publisher = \"Doubleday\",\n title = \"The Yankee Years\",\n year = 2008,\n isbn = \"0385527403\"\n}\n",
"items": [
{
"itemType": "book",
"title": "Handbook of Mathematical Functions with Formulas, Graphs, and Mathematical Tables",
"creators": [
{
"firstName": "Milton",
"lastName": "Abramowitz",
"creatorType": "author"
},
{
"firstName": "Irene A.",
"lastName": "Stegun",
"creatorType": "author"
}
],
"date": "1964",
"edition": "ninth Dover printing, tenth GPO printing",
"itemID": "abramowitz+stegun",
"place": "New York",
"publisher": "Dover",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
},
{
"itemType": "book",
"title": "The Yankee Years",
"creators": [
{
"firstName": "Joe",
"lastName": "Torre",
"creatorType": "author"
},
{
"firstName": "Tom",
"lastName": "Verducci",
"creatorType": "author"
}
],
"date": "2008",
"ISBN": "0385527403",
"itemID": "Torre2008",
"publisher": "Doubleday",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "@INPROCEEDINGS {author:06,\n title = {Some publication title},\n author = {First Author and Second Author},\n crossref = {conference:06},\n pages = {330—331},\n}\n@PROCEEDINGS {conference:06,\n editor = {First Editor and Second Editor},\n title = {Proceedings of the Xth Conference on XYZ},\n booktitle = {Proceedings of the Xth Conference on XYZ},\n year = {2006},\n month = oct,\n}",
"items": [
{
"itemType": "conferencePaper",
"title": "Some publication title",
"creators": [
{
"firstName": "First",
"lastName": "Author",
"creatorType": "author"
},
{
"firstName": "Second",
"lastName": "Author",
"creatorType": "author"
}
],
"itemID": "author:06",
"pages": "330—331",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
},
{
"itemType": "book",
"title": "Proceedings of the Xth Conference on XYZ",
"creators": [
{
"firstName": "First",
"lastName": "Editor",
"creatorType": "editor"
},
{
"firstName": "Second",
"lastName": "Editor",
"creatorType": "editor"
}
],
"date": "2006-10",
"itemID": "conference:06",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "@Book{hicks2001,\n author = \"von Hicks, III, Michael\",\n title = \"Design of a Carbon Fiber Composite Grid Structure for the GLAST\n Spacecraft Using a Novel Manufacturing Technique\",\n publisher = \"Stanford Press\",\n year = 2001,\n address = \"Palo Alto\",\n edition = \"1st,\",\n isbn = \"0-69-697269-4\"\n}",
"items": [
{
"itemType": "book",
"title": "Design of a Carbon Fiber Composite Grid Structure for the GLAST Spacecraft Using a Novel Manufacturing Technique",
"creators": [
{
"firstName": "Michael, III",
"lastName": "von Hicks",
"creatorType": "author"
}
],
"date": "2001",
"ISBN": "0-69-697269-4",
"edition": "1st,",
"itemID": "hicks2001",
"place": "Palo Alto",
"publisher": "Stanford Press",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "@article{Oliveira_2009, title={USGS monitoring ecological impacts}, volume={107}, number={29}, journal={Oil & Gas Journal}, author={Oliveira, A}, year={2009}, pages={29}}",
"items": [
{
"itemType": "journalArticle",
"title": "USGS monitoring ecological impacts",
"creators": [
{
"firstName": "A",
"lastName": "Oliveira",
"creatorType": "author"
}
],
"date": "2009",
"issue": "29",
"itemID": "Oliveira_2009",
"pages": "29",
"publicationTitle": "Oil & Gas Journal",
"volume": "107",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "@article{test-ticket1661,\ntitle={non-braking space: ~; accented characters: {\\~n} and \\~{n}; tilde operator: \\~},\n} ",
"items": [
{
"itemType": "journalArticle",
"title": "non-braking space: ; accented characters: ñ and ñ; tilde operator: ∼",
"creators": [],
"itemID": "test-ticket1661",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "@ARTICLE{Frit2,\n author = {Fritz, U. and Corti, C. and P\\\"{a}ckert, M.},\n title = {Test of markupconversion: Italics, bold, superscript, subscript, and small caps: Mitochondrial DNA$_{\\textrm{2}}$ sequences suggest unexpected phylogenetic position\n of Corso-Sardinian grass snakes (\\textit{Natrix cetti}) and \\textbf{do not}\n support their \\textsc{species status}, with notes on phylogeography and subspecies\n delineation of grass snakes.},\n journal = {Actes du $4^{\\textrm{ème}}$ Congrès Français d'Acoustique},\n year = {2012},\n volume = {12},\n pages = {71-80},\n doi = {10.1007/s13127-011-0069-8}\n}\n",
"items": [
{
"itemType": "journalArticle",
"title": "Test of markupconversion: Italics, bold, superscript, subscript, and small caps: Mitochondrial DNA₂ sequences suggest unexpected phylogenetic position of Corso-Sardinian grass snakes (<i>Natrix cetti</i>) and <b>do not</b> support their <span style=\"small-caps\">species status</span>, with notes on phylogeography and subspecies delineation of grass snakes.",
"creators": [
{
"firstName": "U.",
"lastName": "Fritz",
"creatorType": "author"
},
{
"firstName": "C.",
"lastName": "Corti",
"creatorType": "author"
},
{
"firstName": "M.",
"lastName": "Päckert",
"creatorType": "author"
}
],
"date": "2012",
"DOI": "10.1007/s13127-011-0069-8",
"itemID": "Frit2",
"pages": "71-80",
"publicationTitle": "Actes du 4<sup>ème</sup> Congrès Français d'Acoustique",
"volume": "12",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "@misc{american_rights_at_work_public_2012,\n title = {Public Service Research Foundation},\n\turl = {http://www.americanrightsatwork.org/blogcategory-275/},\n\turldate = {2012-07-27},\n\tauthor = {American Rights at Work},\n\tyear = {2012},\n\thowpublished = {http://www.americanrightsatwork.org/blogcategory-275/},\n}",
"items": [
{
"itemType": "document",
"title": "Public Service Research Foundation",
"creators": [
{
"firstName": "American Rights at",
"lastName": "Work",
"creatorType": "author"
}
],
"date": "2012",
"itemID": "american_rights_at_work_public_2012",
"url": "http://www.americanrightsatwork.org/blogcategory-275/",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "@article{zoteroFilePath1,\n title = {Zotero: single attachment},\n file = {Test:files/47/test2.pdf:application/pdf}\n}\n\n@article{zoteroFilePaths2,\n title = {Zotero: multiple attachments},\n file = {Test1:files/47/test2.pdf:application/pdf;Test2:files/46/test2-min.pdf:application/pdf}\n}\n\n@article{zoteroFilePaths3,\n title = {Zotero: linked attachments (old)},\n file = {Test:E:\\some\\random\\folder\\test2.pdf:application/pdf}\n}\n\n@article{zoteroFilePaths4,\n title = {Zotero: linked attachments},\n file = {Test:E\\:\\\\some\\\\random\\\\folder\\\\test2.pdf:application/pdf}\n}\n\n@article{mendeleyFilePaths1,\n title = {Mendeley: single attachment},\n url = {https://forums.zotero.org/discussion/28347/unable-to-get-pdfs-stored-on-computer-into-zotero-standalone/},\n file = {:C$\\backslash$:/Users/somewhere/AppData/Local/Mendeley Ltd./Mendeley Desktop/Downloaded/test.pdf:pdf}\n}\n\n@article{mendeleyFilePaths2,\ntitle = {Mendeley: escaped characters}\nfile = {:C$\\backslash$:/some/path/,.$\\backslash$;'[]\\{\\}`-=\\~{}!@\\#\\$\\%\\^{}\\&()\\_+.pdf:pdf},\n}\n\n@article{citaviFilePaths1,\n title = {Citavi: single attachment},\n url = {https://forums.zotero.org/discussion/35909/bibtex-import-from-citavi-including-pdf-attachments/},\n file = {Test:Q\\:\\\\some\\\\random\\\\folder\\\\test.pdf:pdf}\n}",
"items": [
{
"itemType": "journalArticle",
"title": "Zotero: single attachment",
"creators": [],
"itemID": "zoteroFilePath1",
"attachments": [
{
"title": "Test",
"path": "files/47/test2.pdf",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
},
{
"itemType": "journalArticle",
"title": "Zotero: multiple attachments",
"creators": [],
"itemID": "zoteroFilePaths2",
"attachments": [
{
"title": "Test1",
"path": "files/47/test2.pdf",
"mimeType": "application/pdf"
},
{
"title": "Test2",
"path": "files/46/test2-min.pdf",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
},
{
"itemType": "journalArticle",
"title": "Zotero: linked attachments (old)",
"creators": [],
"itemID": "zoteroFilePaths3",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
},
{
"itemType": "journalArticle",
"title": "Zotero: linked attachments",
"creators": [],
"itemID": "zoteroFilePaths4",
"attachments": [
{
"title": "Test",
"path": "E:\\some\\random\\folder\\test2.pdf",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
},
{
"itemType": "journalArticle",
"title": "Mendeley: single attachment",
"creators": [],
"itemID": "mendeleyFilePaths1",
"url": "https://forums.zotero.org/discussion/28347/unable-to-get-pdfs-stored-on-computer-into-zotero-standalone/",
"attachments": [
{
"title": "Attachment",
"path": "C:/Users/somewhere/AppData/Local/Mendeley Ltd./Mendeley Desktop/Downloaded/test.pdf",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
},
{
"itemType": "journalArticle",
"title": "Mendeley: escaped characters",
"creators": [],
"itemID": "mendeleyFilePaths2",
"attachments": [
{
"title": "Attachment",
"path": "C:/some/path/,.;'[]{}`-=~!@#$%^&()_+.pdf",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
},
{
"itemType": "journalArticle",
"title": "Citavi: single attachment",
"creators": [],
"itemID": "citaviFilePaths1",
"url": "https://forums.zotero.org/discussion/35909/bibtex-import-from-citavi-including-pdf-attachments/",
"attachments": [
{
"title": "Test",
"path": "Q:\\some\\random\\folder\\test.pdf",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "@article{BibTeXEscapeTest1,\n title = {\textbackslash\textbackslash\\{\\}: \\\\{}}\n}",
"items": [
{
"itemType": "journalArticle",
"title": "extbackslash extbackslash{}: {",
"creators": [],
"itemID": "BibTeXEscapeTest1",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "@article{sasson_increasing_2013,\n title = {Increasing cardiopulmonary resuscitation provision in communities with low bystander cardiopulmonary resuscitation rates: a science advisory from the American Heart Association for healthcare providers, policymakers, public health departments, and community leaders},\n\tvolume = {127},\n\tissn = {1524-4539},\n\tshorttitle = {Increasing cardiopulmonary resuscitation provision in communities with low bystander cardiopulmonary resuscitation rates},\n\tdoi = {10.1161/CIR.0b013e318288b4dd},\n\tlanguage = {eng},\n\tnumber = {12},\n\tjournal = {Circulation},\n\tauthor = {Sasson, Comilla and Meischke, Hendrika and Abella, Benjamin S and Berg, Robert A and Bobrow, Bentley J and Chan, Paul S and Root, Elisabeth Dowling and Heisler, Michele and Levy, Jerrold H and Link, Mark and Masoudi, Frederick and Ong, Marcus and Sayre, Michael R and Rumsfeld, John S and Rea, Thomas D and {American Heart Association Council on Quality of Care and Outcomes Research} and {Emergency Cardiovascular Care Committee} and {Council on Cardiopulmonary, Critical Care, Perioperative and Resuscitation} and {Council on Clinical Cardiology} and {Council on Cardiovascular Surgery and Anesthesia}},\n\tmonth = mar,\n\tyear = {2013},\n\tnote = {{PMID:} 23439512},\n\tkeywords = {Administrative Personnel, American Heart Association, Cardiopulmonary Resuscitation, Community Health Services, Health Personnel, Heart Arrest, Humans, Leadership, Public Health, United States},\n\tpages = {1342--1350}\n}",
"items": [
{
"itemType": "journalArticle",
"title": "Increasing cardiopulmonary resuscitation provision in communities with low bystander cardiopulmonary resuscitation rates: a science advisory from the American Heart Association for healthcare providers, policymakers, public health departments, and community leaders",
"creators": [
{
"firstName": "Comilla",
"lastName": "Sasson",
"creatorType": "author"
},
{
"firstName": "Hendrika",
"lastName": "Meischke",
"creatorType": "author"
},
{
"firstName": "Benjamin S",
"lastName": "Abella",
"creatorType": "author"
},
{
"firstName": "Robert A",
"lastName": "Berg",
"creatorType": "author"
},
{
"firstName": "Bentley J",
"lastName": "Bobrow",
"creatorType": "author"
},
{
"firstName": "Paul S",
"lastName": "Chan",
"creatorType": "author"
},
{
"firstName": "Elisabeth Dowling",
"lastName": "Root",
"creatorType": "author"
},
{
"firstName": "Michele",
"lastName": "Heisler",
"creatorType": "author"
},
{
"firstName": "Jerrold H",
"lastName": "Levy",
"creatorType": "author"
},
{
"firstName": "Mark",
"lastName": "Link",
"creatorType": "author"
},
{
"firstName": "Frederick",
"lastName": "Masoudi",
"creatorType": "author"
},
{
"firstName": "Marcus",
"lastName": "Ong",
"creatorType": "author"
},
{
"firstName": "Michael R",
"lastName": "Sayre",
"creatorType": "author"
},
{
"firstName": "John S",
"lastName": "Rumsfeld",
"creatorType": "author"
},
{
"firstName": "Thomas D",
"lastName": "Rea",
"creatorType": "author"
},
{
"lastName": "American Heart Association Council on Quality of Care and Outcomes Research",
"creatorType": "author",
"fieldMode": 1
},
{
"lastName": "Emergency Cardiovascular Care Committee",
"creatorType": "author",
"fieldMode": 1
},
{
"lastName": "Council on Cardiopulmonary, Critical Care, Perioperative and Resuscitation",
"creatorType": "author",
"fieldMode": 1
},
{
"lastName": "Council on Clinical Cardiology",
"creatorType": "author",
"fieldMode": 1
},
{
"lastName": "Council on Cardiovascular Surgery and Anesthesia",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "2013-03",
"DOI": "10.1161/CIR.0b013e318288b4dd",
"ISSN": "1524-4539",
"extra": "PMID: 23439512",
"issue": "12",
"itemID": "sasson_increasing_2013",
"language": "eng",
"pages": "1342–1350",
"publicationTitle": "Circulation",
"shortTitle": "Increasing cardiopulmonary resuscitation provision in communities with low bystander cardiopulmonary resuscitation rates",
"volume": "127",
"attachments": [],
"tags": [
{
"tag": "Administrative Personnel"
},
{
"tag": "American Heart Association"
},
{
"tag": "Cardiopulmonary Resuscitation"
},
{
"tag": "Community Health Services"
},
{
"tag": "Health Personnel"
},
{
"tag": "Heart Arrest"
},
{
"tag": "Humans"
},
{
"tag": "Leadership"
},
{
"tag": "Public Health"
},
{
"tag": "United States"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "@article{smith_testing_????,\n title = {Testing identifier import},\n\tauthor = {Smith, John},\n\tdoi = {10.12345/123456},\n\tlccn = {L123456},\n\tmrnumber = {MR123456},\n\tzmnumber = {ZM123456},\n\tpmid = {P123456},\n\tpmcid = {PMC123456},\n\teprinttype = {arxiv},\n\teprint = {AX123456}\n}",
"items": [
{
"itemType": "journalArticle",
"title": "Testing identifier import",
"creators": [
{
"firstName": "John",
"lastName": "Smith",
"creatorType": "author"
}
],
"DOI": "10.12345/123456",
"extra": "LCCN: L123456\nMR: MR123456\nZbl: ZM123456\nPMID: P123456\nPMCID: PMC123456\narXiv: AX123456",
"itemID": "smith_testing_????",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "@inbook{smith_testing_????,\n title = {Testing identifier import chapter},\n\tauthor = {Smith, John},\n\tdoi = {10.12345/123456},\n\tlccn = {L123456},\n\tmrnumber = {MR123456},\n\tzmnumber = {ZM123456},\n\tpmid = {P123456},\n\tpmcid = {PMC123456},\n\teprinttype = {arxiv},\n\teprint = {AX123456}\n}",
"items": [
{
"itemType": "bookSection",
"title": "Testing identifier import chapter",
"creators": [
{
"firstName": "John",
"lastName": "Smith",
"creatorType": "author"
}
],
"extra": "DOI: 10.12345/123456\nLCCN: L123456\nMR: MR123456\nZbl: ZM123456\nPMID: P123456\nPMCID: PMC123456\narXiv: AX123456",
"itemID": "smith_testing_????",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "@mastersthesis{DBLP:ms/Hoffmann2008,\n author = {Oliver Hoffmann},\n title = {Regelbasierte Extraktion und asymmetrische Fusion bibliographischer\n Informationen},\n school = {Diplomarbeit, Universit{\\\"{a}}t Trier, {FB} IV, {DBIS/DBLP}},\n year = {2009},\n url = {http://dblp.uni-trier.de/papers/DiplomarbeitOliverHoffmann.pdf},\n timestamp = {Wed, 03 Aug 2011 15:40:21 +0200},\n biburl = {http://dblp.org/rec/bib/ms/Hoffmann2008},\n bibsource = {dblp computer science bibliography, http://dblp.org}\n}\n\n@phdthesis{DBLP:phd/Ackermann2009,\n author = {Marcel R. Ackermann},\n title = {Algorithms for the Bregman k-Median problem},\n school = {University of Paderborn},\n year = {2009},\n url = {http://digital.ub.uni-paderborn.de/hs/content/titleinfo/1561},\n urn = {urn:nbn:de:hbz:466-20100407029},\n timestamp = {Thu, 01 Dec 2016 16:33:49 +0100},\n biburl = {http://dblp.org/rec/bib/phd/Ackermann2009},\n bibsource = {dblp computer science bibliography, http://dblp.org}\n}",
"items": [
{
"itemType": "thesis",
"title": "Regelbasierte Extraktion und asymmetrische Fusion bibliographischer Informationen",
"creators": [
{
"firstName": "Oliver",
"lastName": "Hoffmann",
"creatorType": "author"
}
],
"date": "2009",
"itemID": "DBLP:ms/Hoffmann2008",
"thesisType": "Master's Thesis",
"university": "Diplomarbeit, Universität Trier, FB IV, DBIS/DBLP",
"url": "http://dblp.uni-trier.de/papers/DiplomarbeitOliverHoffmann.pdf",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
},
{
"itemType": "thesis",
"title": "Algorithms for the Bregman k-Median problem",
"creators": [
{
"firstName": "Marcel R.",
"lastName": "Ackermann",
"creatorType": "author"
}
],
"date": "2009",
"itemID": "DBLP:phd/Ackermann2009",
"thesisType": "PhD Thesis",
"university": "University of Paderborn",
"url": "http://digital.ub.uni-paderborn.de/hs/content/titleinfo/1561",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "@inproceedings{Giannotti:2007:TPM:1281192.1281230,\n author = {Giannotti, Fosca and Nanni, Mirco and Pinelli, Fabio and Pedreschi, Dino},\n title = {Trajectory Pattern Mining},\n booktitle = {Proceedings of the 13th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining},\n series = {KDD '07},\n year = {2007},\n isbn = {978-1-59593-609-7},\n location = {San Jose, California, USA},\n pages = {330--339},\n numpages = {10},\n url = {http://doi.acm.org/10.1145/1281192.1281230},\n doi = {10.1145/1281192.1281230},\n acmid = {1281230},\n publisher = {ACM},\n address = {New York, NY, USA},\n keywords = {spatio-temporal data mining, trajectory patterns},\n }",
"items": [
{
"itemType": "conferencePaper",
"title": "Trajectory Pattern Mining",
"creators": [
{
"firstName": "Fosca",
"lastName": "Giannotti",
"creatorType": "author"
},
{
"firstName": "Mirco",
"lastName": "Nanni",
"creatorType": "author"
},
{
"firstName": "Fabio",
"lastName": "Pinelli",
"creatorType": "author"
},
{
"firstName": "Dino",
"lastName": "Pedreschi",
"creatorType": "author"
}
],
"date": "2007",
"DOI": "10.1145/1281192.1281230",
"ISBN": "978-1-59593-609-7",
"extra": "event-place: San Jose, California, USA",
"itemID": "Giannotti:2007:TPM:1281192.1281230",
"pages": "330–339",
"place": "New York, NY, USA",
"proceedingsTitle": "Proceedings of the 13th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining",
"publisher": "ACM",
"series": "KDD '07",
"url": "http://doi.acm.org/10.1145/1281192.1281230",
"attachments": [],
"tags": [
{
"tag": "spatio-temporal data mining"
},
{
"tag": "trajectory patterns"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "@article{madoc40756,\n author = {Elias Naumann and Moritz He{\\ss} and Leander Steinkopf},\n number = {6},\n language = {Deutsch},\n volume = {44},\n publisher = {Lucius \\& Lucius},\n address = {Stuttgart},\n pages = {426--446},\n journal = {Zeitschrift f{\\\"u}r Soziologie : ZfS},\n year = {2015},\n doi = {10.1515/zfsoz-2015-0604},\n title = {Die Alterung der Gesellschaft und der Generationenkonflikt in Europa},\n url = {https://madoc.bib.uni-mannheim.de/40756/}\n}\n\n@article {MR3077863,\nAUTHOR = {Eli{\\'a}{\\v{s}}, Marek and Matou{\\v{s}}ek, Ji{\\v{r}}{\\'{\\i}}},\nTITLE = {Higher-order {E}rd{\\H o}s-{S}zekeres theorems},\nJOURNAL = {Adv. Math.},\nFJOURNAL = {Advances in Mathematics},\nVOLUME = {244},\nYEAR = {2013},\nPAGES = {1--15},\nISSN = {0001-8708},\nMRCLASS = {05C65 (05C55 52C10)},\nMRNUMBER = {3077863},\nMRREVIEWER = {David Conlon},\nDOI = {10.1016/j.aim.2013.04.020},\nURL = {http://dx.doi.org/10.1016/j.aim.2013.04.020},\n}",
"items": [
{
"itemType": "journalArticle",
"title": "Die Alterung der Gesellschaft und der Generationenkonflikt in Europa",
"creators": [
{
"firstName": "Elias",
"lastName": "Naumann",
"creatorType": "author"
},
{
"firstName": "Moritz",
"lastName": "Heß",
"creatorType": "author"
},
{
"firstName": "Leander",
"lastName": "Steinkopf",
"creatorType": "author"
}
],
"date": "2015",
"DOI": "10.1515/zfsoz-2015-0604",
"issue": "6",
"itemID": "madoc40756",
"language": "Deutsch",
"pages": "426–446",
"publicationTitle": "Zeitschrift für Soziologie : ZfS",
"url": "https://madoc.bib.uni-mannheim.de/40756/",
"volume": "44",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
},
{
"itemType": "journalArticle",
"title": "Higher-order Erdős-Szekeres theorems",
"creators": [
{
"firstName": "Marek",
"lastName": "Eliáš",
"creatorType": "author"
},
{
"firstName": "Jiří",
"lastName": "Matoušek",
"creatorType": "author"
}
],
"date": "2013",
"DOI": "10.1016/j.aim.2013.04.020",
"ISSN": "0001-8708",
"extra": "MR: 3077863",
"itemID": "MR3077863",
"journalAbbreviation": "Adv. Math.",
"pages": "1–15",
"publicationTitle": "Advances in Mathematics",
"url": "http://dx.doi.org/10.1016/j.aim.2013.04.020",
"volume": "244",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "@incollection{madoc44942,\n language = {isl},\n author = {Eva H. {\\\"O}nnud{\\'o}ttir},\n title = {B{\\'u}s{\\'a}haldabyltingin : P{\\'o}lit{\\'i}skt jafnr{\\ae}{\\dh}i og {\\th}{\\'a}tttaka almennings {\\'i} m{\\'o}tm{\\ae}lum},\n year = {2011},\n publisher = {F{\\'e}lagsv{\\'i}sindastofnun H{\\'a}sk{\\'o}la {\\'I}slands},\n address = {Reykjavik},\n pages = {36--44}\n}\n",
"items": [
{
"itemType": "bookSection",
"title": "Búsáhaldabyltingin : Pólitískt jafnræði og þátttaka almennings í mótmælum",
"creators": [
{
"firstName": "Eva H.",
"lastName": "Önnudóttir",
"creatorType": "author"
}
],
"date": "2011",
"itemID": "madoc44942",
"language": "isl",
"pages": "36–44",
"place": "Reykjavik",
"publisher": "Félagsvísindastofnun Háskóla Íslands",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "@String {zotero-url = {https://www.zotero.org/}}\n@string(zotero-creator = \"Corporation for Digital Scholarship\"))\n\n@Electronic{example-electronic-string,\n author = zotero-creator,\n title= {Zotero's Homepage},\n year = 2019,\n url =zotero-url,\n urldate=\"2019-10-12\"\n}\n",
"items": [
{
"itemType": "webpage",
"title": "Zotero's Homepage",
"creators": [
{
"firstName": "Corporation for Digital",
"lastName": "Scholarship",
"creatorType": "author"
}
],
"date": "2019",
"itemID": "example-electronic-string",
"url": "https://www.zotero.org/",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "@String {meta:maintainer = \"Xavier D\\\\'ecoret\"}\n\n@\n %a\npreamble\n %a\n{ \"Maintained by \" # meta:maintainer }\n@String(Stefan = \"Stefan Swe{\\\\i}g\")\n@String(and = \" and \")\n\n@Book{sweig42,\n Author =\t stefan # And # meta:maintainer,\n title =\t { The {impossible} TEL---book },\n publisher =\t { D\\\\\"ead Po$_{eee}$t Society},\n yEAr =\t 1942,\n month = mar\n}",
"items": [
{
"itemType": "book",
"title": "The impossible ℡—book",
"creators": [
{
"firstName": "Stefan",
"lastName": "Swe\\ıg",
"creatorType": "author"
},
{
"firstName": "Xavier",
"lastName": "D\\écoret",
"creatorType": "author"
}
],
"date": "1942-03",
"itemID": "sweig42",
"publisher": "D\\ëad Po<sub>eee</sub>t Society",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "@preamble{BibTeX for papers by David Kotz; for complete/updated list see\nhttps://www.cs.dartmouth.edu/~kotz/research/papers.html}\n\n@Article{batsis:rural,\n author = {John A. Batsis and Curtis L. Petersen and Matthew M. Clark and Summer B. Cook and David Kotz and Tyler L. Gooding and Meredith N. Roderka and Rima I. Al-Nimr and Dawna M. Pidgeon and Ann Haedrich and KC Wright and Christina Aquila and Todd A. Mackenzie},\n title = {A Rural Mobile Health Obesity Wellness Intervention for Older Adults with Obesity},\n journal = {BMC Geriatrics},\n year = 2020,\n month = {December},\n copyright = {the authors},\n URL = {https://www.cs.dartmouth.edu/~kotz/research/batsis-rural/index.html},\n note = {Accepted for publication},\n}\n",
"items": [
{
"itemType": "journalArticle",
"title": "A Rural Mobile Health Obesity Wellness Intervention for Older Adults with Obesity",
"creators": [
{
"firstName": "John A.",
"lastName": "Batsis",
"creatorType": "author"
},
{
"firstName": "Curtis L.",
"lastName": "Petersen",
"creatorType": "author"
},
{
"firstName": "Matthew M.",
"lastName": "Clark",
"creatorType": "author"
},
{
"firstName": "Summer B.",
"lastName": "Cook",
"creatorType": "author"
},
{
"firstName": "David",
"lastName": "Kotz",
"creatorType": "author"
},
{
"firstName": "Tyler L.",
"lastName": "Gooding",
"creatorType": "author"
},
{
"firstName": "Meredith N.",
"lastName": "Roderka",
"creatorType": "author"
},
{
"firstName": "Rima I.",
"lastName": "Al-Nimr",
"creatorType": "author"
},
{
"firstName": "Dawna M.",
"lastName": "Pidgeon",
"creatorType": "author"
},
{
"firstName": "Ann",
"lastName": "Haedrich",
"creatorType": "author"
},
{
"firstName": "K. C.",
"lastName": "Wright",
"creatorType": "author"
},
{
"firstName": "Christina",
"lastName": "Aquila",
"creatorType": "author"
},
{
"firstName": "Todd A.",
"lastName": "Mackenzie",
"creatorType": "author"
}
],
"date": "2020-12",
"itemID": "batsis:rural",
"publicationTitle": "BMC Geriatrics",
"rights": "the authors",
"url": "https://www.cs.dartmouth.edu/~kotz/research/batsis-rural/index.html",
"attachments": [],
"tags": [],
"notes": [
{
"note": "<p>Accepted for publication</p>"
}
],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "@techreport{ietf-bmwg-evpntest-09,\n\tnumber =\t{draft-ietf-bmwg-evpntest-09},\n\ttype =\t\t{Internet-Draft},\n\tinstitution =\t{Internet Engineering Task Force},\n\tpublisher =\t{Internet Engineering Task Force},\n\tnote =\t\t{Work in Progress},\n\turl =\t\t{https://datatracker.ietf.org/doc/html/draft-ietf-bmwg-evpntest-09},\n author =\t{sudhin jacob and Kishore Tiruveedhula},\n\ttitle =\t\t{{Benchmarking Methodology for EVPN and PBB-EVPN}},\n\tpagetotal =\t28,\n\tyear =\t\t2021,\n\tmonth =\t\tjun,\n\tday =\t\t18,\n\tabstract =\t{This document defines methodologies for benchmarking EVPN and PBB- EVPN performance. EVPN is defined in RFC 7432, and is being deployed in Service Provider networks. Specifically, this document defines the methodologies for benchmarking EVPN/PBB-EVPN convergence, data plane performance, and control plane performance.},\n}\n",
"items": [
{
"itemType": "report",
"title": "Benchmarking Methodology for EVPN and PBB-EVPN",
"creators": [
{
"firstName": "sudhin",
"lastName": "jacob",
"creatorType": "author"
},
{
"firstName": "Kishore",
"lastName": "Tiruveedhula",
"creatorType": "author"
}
],
"date": "2021-06-18",
"abstractNote": "This document defines methodologies for benchmarking EVPN and PBB- EVPN performance. EVPN is defined in RFC 7432, and is being deployed in Service Provider networks. Specifically, this document defines the methodologies for benchmarking EVPN/PBB-EVPN convergence, data plane performance, and control plane performance.",
"institution": "Internet Engineering Task Force",
"itemID": "ietf-bmwg-evpntest-09",
"reportNumber": "draft-ietf-bmwg-evpntest-09",
"reportType": "Internet-Draft",
"url": "https://datatracker.ietf.org/doc/html/draft-ietf-bmwg-evpntest-09",
"attachments": [],
"tags": [],
"notes": [
{
"note": "<p>Work in Progress</p>"
}
],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "@inproceedings{NIPS2009_0188e8b8,\n author = {Cuturi, Marco and Vert, Jean-philippe and D\\textquotesingle aspremont, Alexandre},\n booktitle = {Advances in Neural Information Processing Systems},\n editor = {Y. Bengio and D. Schuurmans and J. Lafferty and C. Williams and A. Culotta},\n pages = {},\n publisher = {Curran Associates, Inc.},\n title = {White Functionals for Anomaly Detection in Dynamical Systems},\n url = {https://proceedings.neurips.cc/paper/2009/file/0188e8b8b014829e2fa0f430f0a95961-Paper.pdf},\n volume = {22},\n year = {2009}\n}",
"items": [
{
"itemType": "conferencePaper",
"title": "White Functionals for Anomaly Detection in Dynamical Systems",
"creators": [
{
"firstName": "Marco",
"lastName": "Cuturi",
"creatorType": "author"
},
{
"firstName": "Jean-philippe",
"lastName": "Vert",
"creatorType": "author"
},
{
"firstName": "Alexandre",
"lastName": "D' aspremont",
"creatorType": "author"
},
{
"firstName": "Y.",
"lastName": "Bengio",
"creatorType": "editor"
},
{
"firstName": "D.",
"lastName": "Schuurmans",
"creatorType": "editor"
},
{
"firstName": "J.",
"lastName": "Lafferty",
"creatorType": "editor"
},
{
"firstName": "C.",
"lastName": "Williams",
"creatorType": "editor"
},
{
"firstName": "A.",
"lastName": "Culotta",
"creatorType": "editor"
}
],
"date": "2009",
"itemID": "NIPS2009_0188e8b8",
"proceedingsTitle": "Advances in Neural Information Processing Systems",
"publisher": "Curran Associates, Inc.",
"url": "https://proceedings.neurips.cc/paper/2009/file/0188e8b8b014829e2fa0f430f0a95961-Paper.pdf",
"volume": "22",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "@article{Borissov:2855446,\r\n author = \"Borissov, Alexander and Solokhin, Sergei\",\r\n collaboration = \"ALICE\",\r\n title = \"{Production of $\\Sigma^{0}$ Hyperon and Search of\r\n $\\Sigma^{0}$ Hypernuclei at LHC with ALICE}\",\r\n journal = \"Phys. At. Nucl.\",\r\n volume = \"85\",\r\n number = \"6\",\r\n pages = \"970-975\",\r\n year = \"2023\",\r\n url = \"https://cds.cern.ch/record/2855446\",\r\n doi = \"10.1134/S1063778823010131\",\r\n }",
"items": [
{
"itemType": "journalArticle",
"title": "Production of Σ⁰ Hyperon and Search of Σ⁰ Hypernuclei at LHC with ALICE",
"creators": [
{
"firstName": "Alexander",
"lastName": "Borissov",
"creatorType": "author"
},
{
"firstName": "Sergei",
"lastName": "Solokhin",
"creatorType": "author"
}
],
"date": "2023",
"DOI": "10.1134/S1063778823010131",
"issue": "6",
"itemID": "Borissov:2855446",
"pages": "970-975",
"publicationTitle": "Phys. At. Nucl.",
"url": "https://cds.cern.ch/record/2855446",
"volume": "85",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "@book{derbis1998poczucie,\r\ntitle={Poczucie jako{\\'s}ci {\\.z}ycia a swoboda dzia{\\l}ania i odpowiedzialno{\\'s}{\\'c}},\r\nauthor={Derbis, Romuald and Ba{\\'n}ka, Augustyn},\r\nyear={1998},\r\npublisher={Stowarzyszenie Psychologia i Architektura}\r\n}",
"items": [
{
"itemType": "book",
"title": "Poczucie jakości życia a swoboda działania i odpowiedzialność",
"creators": [
{
"firstName": "Romuald",
"lastName": "Derbis",
"creatorType": "author"
},
{
"firstName": "Augustyn",
"lastName": "Bańka",
"creatorType": "author"
}
],
"date": "1998",
"itemID": "derbis1998poczucie",
"publisher": "Stowarzyszenie Psychologia i Architektura",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Philipp Zumstein, Sebastian Karcher and contributors^https?://(zenodo\.org|sandbox\.zenodo\.org|data\.caltech\.edu|repository\.tugraz\.at|researchdata\.tuwien\.at|ultraviolet\.library\.nyu\.edu|adc\.ei-basel\.hasdai\.org|fdat\.uni-tuebingen\.de|www\.fdr\.uni-hamburg\.de|rodare\.hzdr\.de|aperta\.ulakbim.gov\.tr|www\.openaccessrepository\.it|eic-zenodo\.sdcc\.bnl\.gov)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2016-2023 Philipp Zumstein, Sebastian Karcher and contributors
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
/*
For repositories based on InvenioRDM. Currently supported:
- Zenodo (including the sandbox platform) as of October 2023
- Caltech Data (California Institute of Technology, USA)
- FDAT Research Data Repository (University of Tübingen, USA)
- TU Graz Repository (Graz University of Technology, Austria)
- TU Wien Research Data (Vienna Technical University, Austria)
- UltraViolet (NYU, USA)
Also supports some repositories based on Zenodo's pre-October 2023 Invenio code base:
- Aperta (National Academic Network and Information Center, Turkey)
- Center for Sustainable Research Data Management, Universität Hamburg (Hamburg, Germany)
- EIC-Zenodo (Brookhaven National Laboratory, USA)
- INFN Open Access Repository (National Institute for Nuclear Physics, Italy)
- RODARE (Helmholtz-Zentrum Dresden-Rossendorf, Germany)
*/
// Only the pre-RDM is really necessary
//const invenioRdmRepositories = ['zenodo.org', 'sandbox.zenodo.org', 'data.caltech.edu', 'repository.tugraz.at', 'researchdata.tuwien.at', 'ultraviolet.library.nyu.edu', 'adc.ei-basel.hasdai.org', 'fdat.uni-tuebingen.de'];
const invenioPreRdmRepositories = ['www.fdr.uni-hamburg.de', 'rodare.hzdr.de', 'aperta.ulakbim.gov.tr', 'www.openaccessrepository.it', 'eic-zenodo.sdcc.bnl.gov'];
function detectWeb(doc, _url) {
let collections;
if (doc.location.pathname.startsWith('/record')) {
if (invenioPreRdmRepositories.includes(doc.location.hostname)) {
collections = ZU.xpath(doc, '//span[@class="pull-right"]/span[contains(@class, "label-default")]');
}
else {
collections = doc.querySelectorAll('span[aria-label="Resource type"]');
if (collections.length == 0) {
// A common variant for other InvenioRDM repositories
collections = doc.querySelectorAll('span[title="Resource type"]');
}
}
for (let collection of collections) {
let type = collection.textContent.toLowerCase().trim();
Zotero.debug('type:', type);
switch (type) {
case "software":
return "computerProgram";
case "video/audio":
return "videoRecording";//or audioRecording?
case "figure":
case "drawing":
case "photo":
case "diagram":
case "plot":
return "artwork";
case "presentation":
case "conference paper":
case "poster":
case "lesson":
return "presentation";
case "book":
return "book";
case "book section":
return "bookSection";
case "patent":
return "patent";
case "report":
case "working paper":
case "project deliverables":
return "report";
case "preprint":
return "preprint";
case "thesis":
return "thesis";
case "dataset":
case "veri seti":
//change when dataset as itemtype is available
return "dataset";
case "journal article":
return "journalArticle";
}
}
// Fall-back case
return "journalArticle";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
let rows;
if (invenioPreRdmRepositories.includes(doc.location.hostname)) {
rows = ZU.xpath(doc, '//invenio-search-results//h4/a');
}
else {
// this section is not rendered in the 6.0 Scaffold browser, OK in v7
rows = doc.querySelectorAll('h2>a[href*="/records/"]');
}
//Zotero.debug(rows);
for (let row of rows) {
let href = row.href;
var title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
async function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) {
return;
}
let articles = [];
for (let i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
}
else {
await scrape(doc, url);
}
}
async function scrape(doc, url) {
let abstract;
let tags;
let text;
let doi = ZU.xpathText(doc, '//meta[@name="citation_doi"]/@content');
let pdfURL = ZU.xpathText(doc, '//meta[@name="citation_pdf_url"]/@content');
let cslURL = url.replace(/#.+/, "").replace(/\?.+/, "").replace(/\/export\/.+/, "") + "/export/csl";
if (invenioPreRdmRepositories.includes(doc.location.hostname)) {
Zotero.debug('scraping pre-RDM');
abstract = ZU.xpathText(doc, '//meta[@name="description"]/@content');
tags = ZU.xpath(doc, '//meta[@name="citation_keywords"]');
let textPage = await requestText(cslURL);
let newDoc = new DOMParser().parseFromString(textPage, "text/html");
text = ZU.xpathText(newDoc, '//h3/following-sibling::pre');
}
else {
tags = Array.from(doc.querySelectorAll('a.subject')).map(el => el.textContent.trim());
text = await requestText(cslURL);
}
// use CSL JSON translator
text = text.replace(/publisher_place/, "publisher-place");
text = text.replace(/container_title/, "container-title");
var trans = Zotero.loadTranslator('import');
trans.setTranslator('bc03b4fe-436d-4a1f-ba59-de4d2d7a63f7'); // CSL JSON
trans.setString(text);
trans.setHandler("itemDone", function (obj, item) {
item.itemType = detectWeb(doc, url);
// The "note" field of CSL maps to Extra. Put it in a note instead
if (item.extra) {
item.notes.push({ note: item.extra });
item.extra = "";
}
if (!ZU.fieldIsValidForType('DOI', item.itemType) && doi) {
item.extra = "DOI: " + doi;
}
//get PDF attachment, otherwise just snapshot.
if (pdfURL) {
item.attachments.push({ url: pdfURL, title: "Full Text PDF", mimeType: "application/pdf" });
}
else {
item.attachments.push({ url: url, title: "Snapshot", mimeType: "text/html" });
}
if (invenioPreRdmRepositories.includes(doc.location.hostname)) {
for (let tag of tags) {
item.tags.push(tag.content);
}
}
else {
for (let tag of tags) {
item.tags.push(tag);
}
}
//something is odd with zenodo's author parsing to CSL on some pages; fix it
//e.g. https://zenodo.org/record/569323
for (let i = 0; i < item.creators.length; i++) {
let creator = item.creators[i];
if (!creator.firstName || !creator.firstName.length) {
if (creator.lastName.includes(",")) {
creator.firstName = creator.lastName.replace(/.+?,\s*/, "");
creator.lastName = creator.lastName.replace(/,.+/, "");
}
else {
item.creators[i] = ZU.cleanAuthor(creator.lastName,
creator.creatorType, false);
}
}
delete item.creators[i].creatorTypeID;
}
//Don't use Zenodo as university for theses -- but use as archive
if (item.itemType == "thesis" && item.publisher == "Zenodo") {
item.publisher = "";
item.archive = "Zenodo";
}
// or as institution for reports
else if (item.itemType == "report" && item.institution == "Zenodo") {
item.institution = "";
}
if (item.date) item.date = ZU.strToISO(item.date);
if (url.includes('#')) {
url = url.substring(0, url.indexOf('#'));
}
item.url = url;
if (abstract) item.abstractNote = abstract;
if (doc.location.hostname == "zenodo.org") {
item.libraryCatalog = "Zenodo";
}
item.itemID = "";
item.complete();
});
trans.translate();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://zenodo.org/records/54766#.ZEAfIMQpAUE",
"items": [
{
"itemType": "thesis",
"title": "Measurement and Analysis of Strains Developed on Tie-rods of a Steering System",
"creators": [
{
"lastName": "Asenov",
"firstName": "Stefan",
"creatorType": "author"
}
],
"date": "2016-06-03",
"abstractNote": "Modern day manufacturers research and develop vehicles that are equipped\nwith steering assist to help drivers undertake manoeuvres. However the lack of\nresearch for a situation where one tie-rod experiences different strains than the\nopposite one leads to failure in the tie-rod assembly and misalignment in the wheels over time. The performance of the steering system would be improved if this information existed. This bachelor’s dissertation looks into this specific situation and conducts an examination on the tie-rods.\nA simple kinematic model is used to determine how the steering system moves\nwhen there is a steering input. An investigation has been conducted to determine how the system’s geometry affects the strains.\nThe experiment vehicle is a Formula Student car which is designed by the\nstudents of Coventry University. The tests performed show the difference in situations where the two front tyres are on a single surface, two different surfaces – one with high friction, the other with low friction and a situation where there’s an obstacle in the way of one of the tyres.\nThe experiment results show a major difference in strain in the front tie-rods in\nthe different situations. Interesting conclusions can be made due to the results for the different surface situation where one of the tyres receives similar results in bothcompression and tension, but the other one receives results with great difference.\nThis results given in the report can be a starting ground and help with the\nimprovement in steering systems if more research is conducted.",
"archive": "Zenodo",
"extra": "DOI: 10.5281/zenodo.54766",
"libraryCatalog": "Zenodo",
"url": "https://zenodo.org/records/54766",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "strain steering system"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://zenodo.org/records/54747",
"items": [
{
"itemType": "presentation",
"title": "An introduction to data visualizations for open access advocacy",
"creators": [
{
"lastName": "Guy",
"firstName": "Marieke",
"creatorType": "presenter"
}
],
"date": "2015-09-17",
"abstractNote": "Guides you through important steps in developing relevant visualizations by showcasing the work of PASTEUR4OA to develop visualizations from ROARMAP.",
"extra": "DOI: 10.5281/zenodo.54747",
"url": "https://zenodo.org/records/54747",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Data visualisation"
},
{
"tag": "Open Access"
},
{
"tag": "Open Access policy"
},
{
"tag": "PASTEUR4OA"
},
{
"tag": "ROARMAP"
}
],
"notes": [
{
"note": "Funding by European Commission ROR 00k4n6c32."
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://zenodo.org/records/14837",
"items": [
{
"itemType": "artwork",
"title": "Figures 8-11 in A new Savignia from Cretan caves (Araneae: Linyphiidae)",
"creators": [
{
"lastName": "Bosselaers",
"firstName": "Jan",
"creatorType": "author"
},
{
"lastName": "Henderickx",
"firstName": "Hans",
"creatorType": "author"
}
],
"date": "2002-11-26",
"abstractNote": "FIGURES 8-11. Savignia naniplopi sp. nov., female paratype. 8, epigyne, ventral view; 9, epigyne, posterior view; 10, epigyne, lateral view; 11, cleared vulva, ventral view. Scale bar: 8-10, 0.30 mm; 11, 0.13 mm.",
"extra": "DOI: 10.5281/zenodo.14837",
"libraryCatalog": "Zenodo",
"shortTitle": "Figures 8-11 in A new Savignia from Cretan caves (Araneae",
"url": "https://zenodo.org/records/14837",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Arachnida"
},
{
"tag": "Araneae"
},
{
"tag": "Crete"
},
{
"tag": "Greece"
},
{
"tag": "Linyphiidae"
},
{
"tag": "Savignia"
},
{
"tag": "cave"
},
{
"tag": "new species"
},
{
"tag": "troglobiont"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://zenodo.org/records/11879",
"items": [
{
"itemType": "book",
"title": "Sequence Comparison in Historical Linguistics",
"creators": [
{
"lastName": "List",
"firstName": "Johann-Mattis",
"creatorType": "author"
}
],
"date": "2014-09-04",
"ISBN": "9783943460728",
"abstractNote": "The comparison of sound sequences (words, morphemes) constitutes the core of many techniques and methods in historical linguistics. With the help of these techniques, corresponding sounds can be determined, historically related words can be identified, and the history of languages can be uncovered. So far, the application of traditional techniques for sequence comparison is very tedious and time-consuming, since scholars have to apply them manually, without computational support. In this study, algorithms from bioinformatics are used to develop computational methods for sequence comparison in historical linguistics. The new methods automatize several steps of the traditional comparative method and can thus help to ease the painstaking work of language comparison.",
"extra": "DOI: 10.5281/zenodo.11879",
"libraryCatalog": "Zenodo",
"place": "Düsseldorf",
"publisher": "Düsseldorf University Press",
"url": "https://zenodo.org/records/11879",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "computational linguistics"
},
{
"tag": "historical linguistics"
},
{
"tag": "phonetic alignment"
},
{
"tag": "sequence comparison"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://zenodo.org/records/45756#.ZEAe1sQpAUE",
"items": [
{
"itemType": "dataset",
"title": "X-ray diffraction images for DPF3 tandem PHD fingers co-crystallized with an acetylated histone-derived peptide",
"creators": [
{
"lastName": "Tempel",
"firstName": "Wolfram",
"creatorType": "author"
},
{
"lastName": "Liu",
"firstName": "Yanli",
"creatorType": "author"
},
{
"lastName": "Qin",
"firstName": "Su",
"creatorType": "author"
},
{
"lastName": "Zhao",
"firstName": "Anthony",
"creatorType": "author"
},
{
"lastName": "Loppnau",
"firstName": "Peter",
"creatorType": "author"
},
{
"lastName": "Min",
"firstName": "Jinrong",
"creatorType": "author"
}
],
"date": "2016-02-10",
"DOI": "10.5281/zenodo.45756",
"abstractNote": "This submission includes a tar archive of bzipped diffraction images recorded with the ADSC Q315r detector at the Advanced Photon Source of Argonne National Laboratory, Structural Biology Center beam line 19-ID. Relevant meta data can be found in the headers of those diffraction images.\n\n\nPlease find below the content of an input file XDS.INP for the program XDS (Kabsch, 2010), which may be used for data reduction. The \"NAME_TEMPLATE_OF_DATA_FRAMES=\" item inside XDS.INP may need to be edited to point to the location of the downloaded and untarred images.\n\n\n!!! Paste lines below in to a file named XDS.INP\n\n\nDETECTOR=ADSC MINIMUM_VALID_PIXEL_VALUE=1 OVERLOAD= 65000\nDIRECTION_OF_DETECTOR_X-AXIS= 1.0 0.0 0.0\nDIRECTION_OF_DETECTOR_Y-AXIS= 0.0 1.0 0.0\nTRUSTED_REGION=0.0 1.05\nMAXIMUM_NUMBER_OF_JOBS=10\nORGX= 1582.82 ORGY= 1485.54\nDETECTOR_DISTANCE= 150\nROTATION_AXIS= -1.0 0.0 0.0\nOSCILLATION_RANGE=1\nX-RAY_WAVELENGTH= 1.2821511\nINCIDENT_BEAM_DIRECTION=0.0 0.0 1.0\nFRACTION_OF_POLARIZATION=0.90\nPOLARIZATION_PLANE_NORMAL= 0.0 1.0 0.0\nSPACE_GROUP_NUMBER=20\nUNIT_CELL_CONSTANTS= 100.030 121.697 56.554 90.000 90.000 90.000\nDATA_RANGE=1 180\nBACKGROUND_RANGE=1 6\nSPOT_RANGE=1 3\nSPOT_RANGE=31 33\nMAX_CELL_AXIS_ERROR=0.03\nMAX_CELL_ANGLE_ERROR=2.0\nTEST_RESOLUTION_RANGE=8.0 3.8\nMIN_RFL_Rmeas= 50\nMAX_FAC_Rmeas=2.0\nVALUE_RANGE_FOR_TRUSTED_DETECTOR_PIXELS= 6000 30000\nINCLUDE_RESOLUTION_RANGE=50.0 1.7\nFRIEDEL'S_LAW= FALSE\nSTARTING_ANGLE= -100 STARTING_FRAME=1\nNAME_TEMPLATE_OF_DATA_FRAMES= ../x247398/t1.0???.img\n\n\n!!! End of XDS.INP",
"libraryCatalog": "Zenodo",
"repository": "Zenodo",
"url": "https://zenodo.org/records/45756",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Structural Genomics Consortium"
},
{
"tag": "crystallography"
},
{
"tag": "diffraction"
},
{
"tag": "protein structure"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://zenodo.org/search?page=1&size=20&q=&type=video",
"defer": true,
"items": "multiple"
},
{
"type": "web",
"url": "https://zenodo.org/records/569323",
"items": [
{
"itemType": "journalArticle",
"title": "A few words about methodology",
"creators": [
{
"lastName": "Schaffer",
"firstName": "Frederic Charles",
"creatorType": "author"
}
],
"date": "2016-12-31",
"DOI": "10.5281/zenodo.569323",
"abstractNote": "In mulling over how to most productively respond to the reflections offered by Lahra Smith, Gary Goertz, and Patrick Jackson, I tried to place myself in the armchair of a Qualitative & Multi-Method Research reader. What big methodological questions, I asked myself, are raised by their reviews of my book? How might I weigh in, generatively, on those questions?",
"issue": "1/2",
"libraryCatalog": "Zenodo",
"pages": "52-56",
"publicationTitle": "Qualitative & Multi-Method Research",
"url": "https://zenodo.org/records/569323",
"volume": "14",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "qualitative methods"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://zenodo.org/records/1048320",
"items": [
{
"itemType": "computerProgram",
"title": "ropensci/codemetar: codemetar: Generate CodeMeta Metadata for R Packages",
"creators": [
{
"firstName": "Carl",
"lastName": "Boettiger",
"creatorType": "programmer"
},
{
"firstName": "Maëlle",
"lastName": "Salmon",
"creatorType": "programmer"
},
{
"firstName": "Noam",
"lastName": "Ross",
"creatorType": "programmer"
},
{
"firstName": "Arfon",
"lastName": "Smith",
"creatorType": "programmer"
},
{
"firstName": "Anna",
"lastName": "Krystalli",
"creatorType": "programmer"
}
],
"date": "2017-11-13",
"abstractNote": "an R package for generating and working with codemeta",
"company": "Zenodo",
"extra": "DOI: 10.5281/zenodo.1048320",
"libraryCatalog": "Zenodo",
"shortTitle": "ropensci/codemetar",
"url": "https://zenodo.org/records/1048320",
"versionNumber": "0.1.2",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://zenodo.org/records/8092340",
"items": [
{
"itemType": "preprint",
"title": "Creating Virtuous Cycles for DNA Barcoding: A Case Study in Science Innovation, Entrepreneurship, and Diplomacy",
"creators": [
{
"lastName": "Schindel",
"firstName": "David E.",
"creatorType": "author"
},
{
"lastName": "Page",
"firstName": "Roderic D. M. Page",
"creatorType": "author"
}
],
"date": "2023-06-28",
"DOI": "10.5281/zenodo.8092340",
"abstractNote": "This essay on the history of the DNA barcoding enterprise attempts to set the stage for the more scholarly contributions that follow. How did the enterprise begin? What were its goals, how did it develop, and to what degree are its goals being realized? We have taken a keen interest in the barcoding movement and its relationship to taxonomy, collections and biodiversity informatics more broadly considered. This essay integrates our two different perspectives on barcoding. DES was the Executive Secretary of the Consortium for the Barcode of Life from 2004 to 2017, with the mission to support the success of DNA barcoding without being directly involved in generating barcode data. RDMP viewed barcoding as an important entry into the landscape of biodiversity data, with many potential linkages to other components of the landscape. We also saw it as a critical step toward the era of international genomic research that was sure to follow. Like the Mercury Program that paved the way for lunar landings by the Apollo Program, we saw DNA barcoding as the proving grounds for the interdisciplinary and international cooperation that would be needed for success of whole-genome research.",
"libraryCatalog": "Zenodo",
"repository": "Zenodo",
"shortTitle": "Creating Virtuous Cycles for DNA Barcoding",
"url": "https://zenodo.org/records/8092340",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "BOLD"
},
{
"tag": "Barcode of Life Data System"
},
{
"tag": "CBoL"
},
{
"tag": "Consortium for the Barcode of Life"
},
{
"tag": "DNA barcoding"
},
{
"tag": "dark taxa"
},
{
"tag": "preprint"
},
{
"tag": "specimen voucher"
},
{
"tag": "taxonomy"
},
{
"tag": "virtuous cycles"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://data.caltech.edu/records/kas2z-0fe41",
"items": [
{
"itemType": "dataset",
"title": "Principles of Computation by Competitive Protein Dimerization Networks",
"creators": [
{
"lastName": "Parres-Gold",
"firstName": "Jacob",
"creatorType": "author"
},
{
"lastName": "Levine",
"firstName": "Matthew",
"creatorType": "author"
},
{
"lastName": "Emert",
"firstName": "Benjamin",
"creatorType": "author"
},
{
"lastName": "Stuart",
"firstName": "Andrew M.",
"creatorType": "author"
},
{
"lastName": "Elowitz",
"firstName": "Michael B.",
"creatorType": "author"
}
],
"date": "2023-10-20",
"DOI": "10.22002/kas2z-0fe41",
"abstractNote": "Many biological signaling pathways employ proteins that competitively dimerize in diverse combinations. These dimerization networks can perform biochemical computations, in which the concentrations of monomers (inputs) determine the concentrations of dimers (outputs). Despite their prevalence, little is known about the range of input-output computations that dimerization networks can perform (their \"expressivity\") and how it depends on network size and connectivity. Using a systematic computational approach, we demonstrate that even small dimerization networks (3-6 monomers) can perform diverse multi-input computations. Further, dimerization networks are versatile, performing different computations when their protein components are expressed at different levels, such as in different cell types. Remarkably, individual networks with random interaction affinities, when large enough (≥8 proteins), can perform nearly all (~90%) potential one-input network computations merely by tuning their monomer expression levels. Thus, even the simple process of competitive dimerization provides a powerful architecture for multi-input, cell-type-specific signal processing.",
"language": "eng",
"libraryCatalog": "InvenioRDM",
"repository": "CaltechDATA",
"url": "https://data.caltech.edu/records/kas2z-0fe41",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://repository.tugraz.at/records/7cqqh-nma57",
"items": [
{
"itemType": "videoRecording",
"title": "Rohdaten zum Lernvideo: Herstellung von Textilbeton",
"creators": [
{
"lastName": "Harden",
"firstName": "Jakob",
"creatorType": "director"
}
],
"date": "2023-11-28",
"abstractNote": "Dieser Datensatz beinhaltet die Rohdaten, die für die Produktion des Lernvideos verwendet wurden. Diese bestehen aus den Videoaufzeichnungen, den Präsentationsfolien und der H5P-Datei. Rohdaten und Lernvideo wurden für Lehrzwecke für die VU Konstruktionswerkstoffe [206.455] erstellt. Im Video wird die Herstellung von Probekörpern (Würfel, Balken) aus Textilbeton gezeigt.",
"extra": "DOI: 10.3217/7cqqh-nma57",
"language": "deu",
"libraryCatalog": "InvenioRDM",
"shortTitle": "Rohdaten zum Lernvideo",
"studio": "Graz University of Technology",
"url": "https://repository.tugraz.at/records/7cqqh-nma57",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://researchdata.tuwien.at/records/k1ce7-hrt53",
"items": [
{
"itemType": "dataset",
"title": "RAAV - Results of the PT-STA accessibility analysis",
"creators": [
{
"lastName": "Gidam",
"firstName": "Michael",
"creatorType": "author"
},
{
"lastName": "Dianin",
"firstName": "Alberto",
"creatorType": "author"
},
{
"lastName": "Hauger",
"firstName": "Georg",
"creatorType": "author"
},
{
"lastName": "Ravazzoli",
"firstName": "Elisa",
"creatorType": "author"
}
],
"date": "2023-11-22",
"DOI": "10.48436/k1ce7-hrt53",
"abstractNote": "Dataset description\nAs part of the project \"RAAV - Rural Accessibility and Automated Vehicles\" between the TU Vienna (Austria) and the EURAC institute (Bolzano, Italy), this file serves to summarise the results of a test of the PT-STA method in a comprehensible manner and to make them publicly available.\nContext and methodology\nAn adaption of a classical STA accessibility analysis was formulated and the new method tested on a sample of over 100 individuals in Mühlwald, South Tyrol and over 100 individuals in Sooß, Lower Austria. The test is based on travel diaries, which have been attained in cooperation with and by interviewing said individuals.\nTo be as transparent as possible the data is provided in the Microsoft Excel format with all cell references. By doing this, we ensure that the data can also be used and adapted for other research. The travel diaries on which this research is based on can be accessed here: https://researchdata.tuwien.ac.at/records/hq7b7-xsa12\nTechnical details\nThe dataset contains one Microsoft Excel file containing multiple data sheets. All data from both regions, Mühlwald and Sooß were cumulated. In order to ensure data protection and anonymisation all names, addresses and coordinates of interviewed people, origins and destinations have been deleted from the dataset.\nOther than Microsoft Excel, there is no additional software needed to investigate the data. The first datasheet gives an overview of abbreviations and data stored in each data sheet.",
"libraryCatalog": "InvenioRDM",
"repository": "TU Wien",
"url": "https://researchdata.tuwien.at/records/k1ce7-hrt53",
"versionNumber": "1.0.0",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://ultraviolet.library.nyu.edu/records/vje3m-6z249",
"items": [
{
"itemType": "dataset",
"title": "Occupy Wall Street Archives Working Group Records FTIR dataset (TAM.630, Box 39, Conservation ID 21_098)",
"creators": [
{
"lastName": "Jenks",
"firstName": "Josephine",
"creatorType": "author"
},
{
"lastName": "Stephens",
"firstName": "Catherine",
"creatorType": "author"
},
{
"lastName": "Pace",
"firstName": "Jessica",
"creatorType": "author"
}
],
"date": "2023-08-30",
"DOI": "10.58153/vje3m-6z249",
"abstractNote": "This is a technical analysis dataset for cultural heritage materials that are in the collection of New York University Libraries and were examined by the NYU Barbara Goldsmith Preservation & Conservation Department. The materials were examined on June 28, 2021 and are part of the Occupy Wall Street Archives Working Group Records held by the NYU Special Collections (TAM.630, Box 39). The dataset includes a conservation report, FTIR (Fourier Transform Infrared) spectra and, if applicable, a standard visible light image of the object. For more information about this object or its FTIR spectra, please contact the Barbara Goldsmith Preservation & Conservation Department at lib-preservation@nyu.edu",
"language": "eng",
"libraryCatalog": "InvenioRDM",
"repository": "New York University",
"url": "https://ultraviolet.library.nyu.edu/records/vje3m-6z249",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Spectroscopy, Fourier Transform Infrared"
},
{
"tag": "conservation science (cultural heritage discipline)"
},
{
"tag": "preservation (function)"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://adc.ei-basel.hasdai.org/records/4yqf2-z8t98",
"items": [
{
"itemType": "book",
"title": "THE CHRONICLE & DIRECTORY",
"creators": [
{
"lastName": "Yorick Jones",
"firstName": "Murrow",
"creatorType": "author"
}
],
"date": "1874",
"abstractNote": "1874 edition",
"language": "eng",
"libraryCatalog": "InvenioRDM",
"publisher": "Hong Kong Daily Press",
"url": "https://adc.ei-basel.hasdai.org/records/4yqf2-z8t98",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://fdat.uni-tuebingen.de/records/m3y4j-62y93",
"items": [
{
"itemType": "dataset",
"title": "Dissertation Rohmann: Experimentelle Daten",
"creators": [
{
"lastName": "Rohmann",
"firstName": "Florian",
"creatorType": "author"
}
],
"date": "2018-01-19",
"DOI": "10.57754/FDAT.m3y4j-62y93",
"abstractNote": "Eine typische Verhaltensweise beim Fällen numerischer Urteile ist die Ausrichtung an Vergleichswerten. Inwieweit dabei deren Quellen berücksichtigt werden, insbesondere soziale Charakteristika, war Ausgangspunkt von vier Experimenten. Experiment 1 liefert einen Beleg für die Relevanz der Quelle insofern, als die Anpassungen an die Anker stärker im Fall einer glaubwürdigenn(vs. unglaubwürdigen) Quelle ausfielen. Anhand von Experiment 2 und 3 wurde geprüft, ob sich die Ankerquelle auch auf die Richtung des Effekts auswirken, also nicht nur unterschiedlich starke Assimilation, sondern ebenso Kontrast nach sich ziehen kann. Um dies zu testen, wurde auf Quellen zurückgegriffen, die als voreingenommen gelten konnten, wobei der jeweils gesetzte Anker diese Erwartung entweder bestätigte oder verletzte. Dabei wurde der Eindruck über die Voreingenommenheit zunächst durch Salientmachung von Quellen-Merkmalen (Experiment 2) und später indirekt durch die Erzeugung einer epistemisch ambigen Urteilskonstellation (Experiment 3) verstärkt. Während ein Effekt der Quelle in Experiment 2 ausblieb, wurde in Experiment 3 das vorhergesagte Muster gezeigt: Waren Quellen-Hinweisreiz und Anker inkongruent (Verletzung der Erwartung), kam es zu einer Assimilation, im Fall von Kongruenz (Bestätigung) hingegen zu Kontrast. Schließlich offenbarte Experiment 4, dass die in Experiment 3 gefundenen Effekte nicht durch eine Warnung vor dem Anker neutralisiert werden konnten.",
"libraryCatalog": "InvenioRDM",
"repository": "University of Tübingen",
"shortTitle": "Dissertation Rohmann",
"url": "https://fdat.uni-tuebingen.de/records/m3y4j-62y93",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "linguistics"
}
],
"notes": [
{
"note": "Funding by German Research Foundation (DFG) ROR 018mejw64."
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.fdr.uni-hamburg.de/record/13706",
"items": [
{
"itemType": "dataset",
"title": "Temporal Model BERT-Large_TempEval-3",
"creators": [
{
"firstName": "Kirsanov",
"lastName": "Simon",
"creatorType": "author"
}
],
"date": "2023-11-01",
"DOI": "10.25592/uhhfdm.13706",
"abstractNote": "Temporal Model \"BERT-Large\" finetuned on the \"TempEval-3\" dataset to solve the tasks of extraction and classification of temporal entities. Model produced in the master's thesis \"Extraction and Classification of Time in Unstructured Data [Kirsanov, 2023]\".",
"language": "eng",
"libraryCatalog": "InvenioRDM",
"url": "https://www.fdr.uni-hamburg.de/record/13706",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "aquaint"
},
{
"tag": "bert"
},
{
"tag": "information extraction"
},
{
"tag": "named entity recognition"
},
{
"tag": "natural language processing"
},
{
"tag": "ner"
},
{
"tag": "nlp"
},
{
"tag": "tempeval"
},
{
"tag": "temporal extraction"
},
{
"tag": "temporal tagging"
},
{
"tag": "timebank"
},
{
"tag": "timex3"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://rodare.hzdr.de/record/2582",
"items": [
{
"itemType": "dataset",
"title": "Data publication: SAPPHIRE - Establishment of small animal proton and photon image-guided radiation experiments",
"creators": [
{
"lastName": "Schneider",
"firstName": "Moritz",
"creatorType": "author"
},
{
"lastName": "Schilz",
"firstName": "Joshua",
"creatorType": "author"
},
{
"lastName": "Schürer",
"firstName": "Michael",
"creatorType": "author"
},
{
"lastName": "Gantz",
"firstName": "Sebastian",
"creatorType": "author"
},
{
"lastName": "Dreyer",
"firstName": "Anne",
"creatorType": "author"
},
{
"lastName": "Rothe",
"firstName": "Gerd",
"creatorType": "author"
},
{
"lastName": "Tillner",
"firstName": "Falk",
"creatorType": "author"
},
{
"lastName": "Bodenstein",
"firstName": "Elisabeth",
"creatorType": "author"
},
{
"lastName": "Horst",
"firstName": "Felix",
"creatorType": "author"
},
{
"lastName": "Beyreuther",
"firstName": "Elke",
"creatorType": "author"
}
],
"date": "2023-11-28",
"DOI": "10.14278/rodare.2582",
"abstractNote": "This repository contains the data shown in the results part of the paper entitled: SAPPHIRE - Establishment of small animal proton and photon image-guided radiation experiments.",
"language": "eng",
"libraryCatalog": "InvenioRDM",
"repository": "Rodare",
"shortTitle": "Data publication",
"url": "https://rodare.hzdr.de/record/2582",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.openaccessrepository.it/record/143495",
"items": [
{
"itemType": "presentation",
"title": "Touch Option Model",
"creators": [
{
"firstName": "Tim",
"lastName": "Xiao",
"creatorType": "presenter"
}
],
"date": "2023-12-03",
"abstractNote": "The valuation model of a touch option attempt to price Exotics with volatility smile surface. The idea behind Skew Touch is to build a hedging portfolio made of smile contracts (Call/Put or Risk Reversal /Butterfly) which, under volatility flatness assumption (ATM), matches Black-Scholes Vega and its derivatives with respect to FX spot and volatility, Vanna and Volga, of the target Touch Option.",
"extra": "DOI: 10.15161/oar.it/143495",
"language": "eng",
"url": "https://www.openaccessrepository.it/record/143495",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "touch option, barrier option, option valuation model"
}
],
"notes": [
{
"note": "https://www.kaggle.com/datasets/davidlee118856/convertible-bond-empirical-study/data"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://eic-zenodo.sdcc.bnl.gov/record/64",
"items": [
{
"itemType": "presentation",
"title": "Software documentation and the EICUG website maintenance",
"creators": [
{
"lastName": "Potekhin",
"firstName": "Maxim",
"creatorType": "presenter"
}
],
"date": "2020-11-12",
"abstractNote": "Presentation for the BNL EIC Group on November 12th, 2020. Status of the EICUG software documentation and the Drupal site maintenance.",
"extra": "DOI: 10.5072/zenodo.64",
"language": "eng",
"url": "https://eic-zenodo.sdcc.bnl.gov/record/64",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "collaborative tools"
},
{
"tag": "software"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://aperta.ulakbim.gov.tr/record/252039",
"detectedItemType": "dataset",
"items": [
{
"itemType": "dataset",
"title": "Statik ve Dinamik Mekânsal Panel Veri Modellerinde Sabit Varyanslılığın Testi",
"creators": [
{
"lastName": "GÜLOĞLU",
"firstName": " BÜLENT",
"creatorType": "author"
},
{
"lastName": "DOĞAN",
"firstName": " OSMAN",
"creatorType": "author"
},
{
"lastName": "TAŞPINAR",
"firstName": "SÜLEYMAN",
"creatorType": "author"
}
],
"date": "2022-10-30",
"DOI": "10.48623/aperta.252038",
"abstractNote": "Bu çalışmada gözlenemeyen sabit bireysel ve zaman etkilerinin bulunduğu mekânsal panel veri modelinde sabit varyanslılığı sınamak amacıyla düzeltilmiş skor fonksiyonlarına dayalı test istatistikleri geliştirilmektedir. Maksimum olabilirlik benzeri yaklaşımı çerçevesinde, skor fonksiyonlarının asimtotik varyanslarını tahmin etmek için martingal farkın dış çarpımı yöntemi kullanılmaktadır. Daha sonra bu varyans tahminleri ve düzeltilmiş skor fonksiyonları kullanılarak, sabit varyanslılığı test etmek için hesaplanması kolay ve güçlü test istatistikleri türetilmektedir. Önerilen test istatistikleri aşağıdaki özelliklere sahip olacaklardır: · Geliştirilen testler mekânsal panel modellerindeki hata terimlerinin normal dağılmamasına karşı güçlüdürüler. · Önerilen testler yerel parametrik model kurma hatasına güçlü olacak biçimde türetilmişlerdir. · Testlerin hesaplanması görece basit olup zaman alıcı sayısal optimizasyon gibi ileri düzey tekniklerin kullanılmasını gerektirmemektedir. Testler sabit bireysel ve zaman etkilerinin olduğu iki yönlü panel veri modelinden grup-içi tahminci kullanılarak elde edilebilmektedir. Dolayısıyla statik mekânsal panel veri modeli çerçevesinde, önerilen test istatistiği bağımlı değişkendeki ve/veya hata teriminde mekânsal bağımlılığın varlığını gerektirmemektedir. Benzer biçimde dinamik panel veri modeli çerçevesinde geliştirilen test istatistiği i) bağımlı değişkenin mekânsal bağımlılığıyla, ii) bağımlı değişkenin zaman gecikmesiyle, iii) bağımlı değişkenin mekânsal-zaman gecikmesiyle, iv) hata teriminin mekânsal gecikmesiyle ilgili parametrelerin tahminini gerektirmemektedir. Proje çerçevesinde Monte Carlo Simülasyonları yardımıyla test istatistiklerinin sonlu (küçük) örneklem boyut ve güç analizleri yapılmıştır. Ayrıca, yatay kesit ve zaman boyut uzunluğunun, normallik varsayımının ihalalinin, mekânsal ağırlık matrislerinin yapısının, anakitle parametre değerlerindeki değişikliklerin test istaistiklerinin performansları üzerine etkileri de incelenmiştir. Gerçek veriler kullanılarak üç tane ampirik uygulama yapılarak test istatistiklerinin kullanılımı gösterilmiştir. Nihayet MATLAB kodu yazılarak test istatistiklerinin kolay biçimde hesaplanması sağlanmıştır.",
"libraryCatalog": "InvenioRDM",
"url": "https://aperta.ulakbim.gov.tr/record/252039",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Değişen varyans"
},
{
"tag": "LM testleri"
},
{
"tag": "Mekânsal Panel Veri Modelleri"
},
{
"tag": "Mekânsal bağımlılık"
},
{
"tag": "Yerel parametrik model kurma hatası"
},
{
"tag": "İstatistiksel Çıkarım"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://zenodo.org/communities/oat23/records?q=&l=list&p=1&s=10&sort=newest",
"defer": true,
"items": "multiple"
}
]
/** END TEST CASES **/
100Sebastian Karcher^https?://(osf\.io|psyarxiv\.com|arabixiv\.org|biohackrxiv\.org|eartharxiv\.org|ecoevorxiv\.org|ecsarxiv\.org|edarxiv\.org|engrxiv\.org|frenxiv\.org|indiarxiv\.org|mediarxiv\.org|paleorxiv\.org)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2020 Sebastian Karcher
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (text(doc, 'h1[data-test-preprint-title]')) {
return "preprint";
}
else if (url.includes("search?") && getSearchResults(doc, true)) {
return "multiple";
}
Z.monitorDOMChanges(doc.body);
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
// The Preprint search on OSF includes other preprints such as PeerJ and RePec
var supportedSites = /^https?:\/\/(osf\.io|psyarxiv\.com|arabixiv\.org|biohackrxiv\.org|eartharxiv\.org|ecoevorxiv\.org|ecsarxiv\.org|edarxiv\.org|engrxiv\.org|frenxiv\.org|indiarxiv\.org|mediarxiv\.org|paleorxiv\.org)/;
var rows = doc.querySelectorAll('div[class*="primary-metadata-container"] h4>a');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title || !supportedSites.test(href)) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.doGet(constructAPIURL(Object.keys(items)), osfAPIImport);
});
}
else {
scrape(doc, url);
}
}
// takes and array of preprint URLs, extracts the ID and constructs an API call to OSF
function constructAPIURL(urls) {
var ids = [];
for (let url of urls) {
let id;
if (url.match(/\.(io|com|org)\/([a-z0-9]+)/)) {
id = url.match(/\.(?:io|com|org)\/([a-z0-9]+)/)[1];
}
if (id) {
ids.push("https://api.osf.io/v2/preprints/" + id + "/?embed=contributors&embed=provider");
}
}
return ids;
}
function osfAPIImport(text) {
// Z.debug(text);
let json = JSON.parse(text);
let attr = json.data.attributes;
let embeds = json.data.embeds;
var item = new Zotero.Item("preprint");
// currently we're just doing preprints, but putting this here in case we'll want to handle different OSF
// item types in the future
// let type = json.data.type
item.title = attr.title;
item.abstractNote = attr.description;
item.date = attr.date_published;
item.publisher = embeds.provider.data.attributes.name;
item.DOI = json.data.links.preprint_doi && ZU.cleanDOI(json.data.links.preprint_doi);
item.url = json.data.links.html;
for (let tag of attr.tags) {
item.tags.push(tag);
}
for (let contributor of embeds.contributors.data) {
let author = contributor.embeds.users.data.attributes;
if (author.given_name && author.family_name) {
// add middle names
let givenNames = author.given_name + ' ' + author.middle_names;
item.creators.push({ lastName: author.family_name, firstName: givenNames.trim(), creatorType: "author" });
}
else {
item.creators.push({ lastName: author.full_name, creatorType: "author", fieldMode: 1 });
}
}
if (json.data.relationships.primary_file) {
let fileID = json.data.relationships.primary_file.links.related.href.replace("https://api.osf.io/v2/files/", "");
item.attachments.push({ url: "https://osf.io/download/" + fileID, title: "OSF Preprint", mimeType: "application/pdf" });
}
item.complete();
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setHandler('itemDone', function (obj, item) {
// remove Snapshot, which is useless for OSF preprints (plus we should always get a PDF)
for (let i = item.attachments.length - 1; i >= 0; i--) {
if (item.attachments[i].title == "Snapshot") {
item.attachments.splice(i, 1);
}
}
item.libraryCatalog = "OSF Preprints";
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.itemType = "preprint";
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://osf.io/preprints/psyarxiv/nx2b4",
"defer": true,
"items": [
{
"itemType": "preprint",
"title": "The Dutch Auditory & Image Vocabulary Test (DAIVT): A New Dutch Receptive Vocabulary Test for Students",
"creators": [
{
"firstName": "Ibrich",
"lastName": "Bousard",
"creatorType": "author"
},
{
"firstName": "Marc",
"lastName": "Brysbaert",
"creatorType": "author"
}
],
"date": "2020-05-05",
"DOI": "10.31234/osf.io/nx2b4",
"abstractNote": "We introduce a new Dutch receptive vocabulary test, the Dutch auditory & image vocabulary test (DAIVT). The test is multiple choice and assesses vocabulary knowledge for spoken words. The measure has an online format, has free access, and allows easy data collection. The test was developed with the intent to enable testing for research purposes with university students. This paper describes the test construction. We cover three phases: 1) collecting stimulus materials and developing the test’s first version, 2) an exploratory item-analysis on the first draft (n= 93), and 3) validating the test (both the second and the final version) by comparing it to two existing tests (n= 270, n= 157). The results indicate that the test is reliable and correlates well with existing Dutch receptive vocabulary tests (convergent validity). The final version of the DAIVT comprises 90 test items and 1 practice item. It can be used freely for research purposes.",
"language": "en-us",
"libraryCatalog": "OSF Preprints",
"repository": "OSF",
"shortTitle": "The Dutch Auditory & Image Vocabulary Test (DAIVT)",
"url": "https://osf.io/nx2b4",
"attachments": [],
"tags": [
{
"tag": "Dutch vocabulary"
},
{
"tag": "individual differences"
},
{
"tag": "receptive vocabulary"
},
{
"tag": "spoken word comprehension"
},
{
"tag": "vocabulary test"
},
{
"tag": "word knowledge"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://osf.io/preprints/osf/b2xmp",
"defer": true,
"items": [
{
"itemType": "preprint",
"title": "‘All In’: A Pragmatic Framework for COVID-19 Testing and Action on a Global Scale",
"creators": [
{
"firstName": "Syril",
"lastName": "Pettit",
"creatorType": "author"
},
{
"firstName": "Keith",
"lastName": "Jerome",
"creatorType": "author"
},
{
"firstName": "David",
"lastName": "Rouquie",
"creatorType": "author"
},
{
"firstName": "Susan",
"lastName": "Hester",
"creatorType": "author"
},
{
"firstName": "Leah",
"lastName": "Wehmas",
"creatorType": "author"
},
{
"firstName": "Bernard",
"lastName": "Mari",
"creatorType": "author"
},
{
"firstName": "Pascal",
"lastName": "Barbry",
"creatorType": "author"
},
{
"firstName": "Yasunari",
"lastName": "Kanda",
"creatorType": "author"
},
{
"firstName": "Mineo",
"lastName": "Matsumoto",
"creatorType": "author"
},
{
"firstName": "Jason",
"lastName": "Botten",
"creatorType": "author"
},
{
"firstName": "Emily",
"lastName": "Bruce",
"creatorType": "author"
}
],
"date": "2020-04-29",
"DOI": "10.31219/osf.io/b2xmp",
"abstractNote": "Current demand for SARS-CoV-2 testing is straining material resource and labor capacity around the globe. As a result, the public health and clinical community are hindered in their ability to monitor and contain the spread of COVID-19. Despite broad consensus that more testing is needed, pragmatic guidance towards realizing this objective has been limited. This paper addresses this limitation by proposing a novel and geographically agnostic framework (‘the 4Ps Framework) to guide multidisciplinary, scalable, resource-efficient, and achievable efforts towards enhanced testing capacity. The 4Ps (Prioritize, Propagate, Partition, and Provide) are described in terms of specific opportunities to enhance the volume, diversity, characterization, and implementation of SARS-CoV-2 testing to benefit public health. Coordinated deployment of the strategic and tactical recommendations described in this framework have the potential to rapidly expand available testing capacity, improve public health decision-making in response to the COVID-19 pandemic, and/or to be applied in future emergent disease outbreaks.",
"language": "en-us",
"libraryCatalog": "OSF Preprints",
"repository": "OSF",
"shortTitle": "‘All In’",
"url": "https://osf.io/b2xmp",
"attachments": [],
"tags": [
{
"tag": "COVID-19"
},
{
"tag": "Pandemic"
},
{
"tag": "Public Health"
},
{
"tag": "RT-PCR"
},
{
"tag": "SARS-CoV-2"
},
{
"tag": "Virologic Testing"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://osf.io/preprints/socarxiv/j7qta",
"defer": true,
"items": [
{
"itemType": "preprint",
"title": "SocArXiv Papers | The Reliability of Replications: A Study in Computational Reproductions",
"creators": [],
"language": "en-us",
"libraryCatalog": "OSF Preprints",
"shortTitle": "SocArXiv Papers | The Reliability of Replications",
"url": "https://osf.io/preprints/socarxiv/j7qta",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"defer": true,
"url": "https://osf.io/search?activeFilters=%5B%5D&q=metascience&resourceType=Preprint&sort=-relevance&view_only=",
"items": "multiple"
}
]
/** END TEST CASES **/
100Sebastian Karcher, Satoshi Ando^https?://www\.jstage\.jst\.go\.jp//*
***** BEGIN LICENSE BLOCK *****
J-Stage translator - Copyright © 2012 Sebastian Karcher,
Copyright © 2023 Satoshi Ando
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
// don't detect on PDF pages
if (url.includes("/article/") && !url.includes("/_pdf")) {
return "journalArticle";
}
else if ((url.includes("/result/") || url.includes("/browse/"))
&& getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('li>.searchlist-title>a, a.ci-article-name, a.feature-article-title');
for (var i = 0; i < rows.length; i++) {
var href = rows[i].href;
var title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
// help function
function scrape(doc, url) {
// get abstract and tags from article page
var abs = text("#article-overiew-abstract-wrap");
var tagNodes = doc.querySelectorAll("meta[name='citation_keywords']");
var tags = [];
for (let tagNode of tagNodes) {
tags.push(tagNode.content);
}
// get RIS Link
var risurl = ZU.xpathText(doc, '//div[contains(@class, "third-level-sublinks")]//a[contains(text(), "RIS")]/@href');
ZU.doGet(risurl, function (text) {
var ris = text;
var translator = Zotero.loadTranslator("import");
translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7"); // RIS
translator.setString(ris);
translator.setHandler("itemDone", function (obj, item) {
if (abs) item.abstractNote = abs.replace(/^\s*(?:Abstract|抄録)\s*/, '');
if (tags) item.tags = tags;
for (var i = 0; i < item.creators.length; i++) {
if (item.creators[i].lastName && item.creators[i].lastName == item.creators[i].lastName.toUpperCase()) {
item.creators[i].lastName = ZU.capitalizeTitle(item.creators[i].lastName.toLowerCase(), true);
}
if (item.creators[i].firstName && item.creators[i].firstName == item.creators[i].firstName.toUpperCase()) {
item.creators[i].firstName = ZU.capitalizeTitle(item.creators[i].firstName.toLowerCase(), true);
}
}
if (item.title == item.title.toUpperCase()) {
item.title = ZU.capitalizeTitle(item.title.toLowerCase(), true);
}
delete item.journalAbbreviation; // J-Stage doesn't output journal abbreviations.
if (item.publicationTitle == item.publicationTitle.toUpperCase()) {
item.publicationTitle = ZU.capitalizeTitle(item.publicationTitle.toLowerCase(), true);
}
item.attachments.push({
url: url,
title: "J-Stage - Snapshot",
mimeType: "text/html"
});
var pdfurl = attr('a.thirdlevel-pdf-btn', 'href') || attr('meta[name="citation_pdf_url"]', 'content');
if (pdfurl) {
item.attachments.push({
url: pdfurl,
title: "Full Text PDF",
mimeType: "application/pdf"
});
}
item.complete();
});
translator.translate();
});
}/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.jstage.jst.go.jp/article/prohe1990/45/0/45_0_811/_article",
"items": [
{
"itemType": "journalArticle",
"title": "Application of RUSLE Model on Global Soil Erosion Estimate",
"creators": [
{
"firstName": "Thai Nam",
"lastName": "Pham",
"creatorType": "author"
},
{
"firstName": "Dawen",
"lastName": "Yang",
"creatorType": "author"
},
{
"firstName": "Shinjiro",
"lastName": "Kanae",
"creatorType": "author"
},
{
"firstName": "Taikan",
"lastName": "Oki",
"creatorType": "author"
},
{
"firstName": "Katumi",
"lastName": "Musiake",
"creatorType": "author"
}
],
"date": "2001",
"DOI": "10.2208/prohe.45.811",
"abstractNote": "Soil erosion is one of the most serious environmental problems commonly in over the world, which is caused by both natural and human factors. It is possible to investigate the global issue on soil erosion with the development of global data sets. This research estimated global soil erosion by the RUSLE model with use of a comprehensive global data set. The accuracy of the estimate mostly depends on the available information related to the study area. Present available finest data was used in this study. As the desired objective of estimating soil erosion by water at global scale, the application of RUSLE has shown its positive applicability on large-scale estimates. The study has shown a global view of water soil erosion potential with 0.5-degree grid resolution. Regional validations and examinations have been carried out by different ways. The global mean of annual soil erosion by water was estimated as 1100 ton/ km2, which agrees with several results obtained in different regions.",
"libraryCatalog": "J-Stage",
"pages": "811-816",
"publicationTitle": "Proceedings of Hydraulic Engineering",
"volume": "45",
"attachments": [
{
"title": "J-Stage - Snapshot",
"mimeType": "text/html"
},
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "global data sets"
},
{
"tag": "global estimation"
},
{
"tag": "soil erosion by water"
},
{
"tag": "the RUSLE"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.jstage.jst.go.jp/result/global/-char/en?globalSearchKey=organic+agriculture+erosion",
"defer": true,
"items": "multiple"
},
{
"type": "web",
"url": "https://www.jstage.jst.go.jp/browse/bpb",
"defer": true,
"items": "multiple"
},
{
"type": "web",
"url": "https://www.jstage.jst.go.jp/article/jfs/114/0/114_0_280/_article/-char/ja/",
"items": [
{
"itemType": "journalArticle",
"title": "フラックスタワーデータを用いた各種植生指標の季節変化の検討",
"creators": [
{
"firstName": "博春",
"lastName": "田中",
"creatorType": "author"
},
{
"firstName": "宏之",
"lastName": "小熊",
"creatorType": "author"
}
],
"date": "2003",
"DOI": "10.11519/jfs.114.0.280.0",
"abstractNote": "I. はじめに 分光日射計データから得られる各種植生指標の季節変化を、CO2吸収量ならびに葉面積指数の季節変化と比較した。データは、国立環境研究所苫小牧フラックスリサーチサイト(カラマツ人工林)のタワーデータを用いた。・各種植生指標:全天分光日射計 英弘精機MS-131WP使用。地上高40mに設置した上向き・下向きの日積算日射量より各種植生指標値を算出。波長帯は、可視(Ch3:590-695nm≒ 赤)と近赤外(Ch5:850-1200nm)の組み合わせ[図1-a]、ならびに可視(Ch2:395-590nm≒青・緑)と 近赤外(Ch4:695-850nm)の組み合わせ[図1-b]の2通りを用いた。・CO2フラックス日中積算値:クローズドパス法非分散型赤外線分析計Li-Cor LI-6262使用。地上高27m 9:00から16:30までの30分値を加算、日中の積算値とした[図1-c]。・葉面積指数(LAI):光合成有効放射計Li-Cor LI-190SB 地上高1.5mと40mの下向き光合成有効放射量(PAR)の日積算値の比から、Lambert-Beerの式を用いPAI(Plant Area Index)を算出。落葉期の測定値を減じLAIとした [図1-d]。II. 日中CO2フラックスと植生指標GEMIの整合性[図1-c] Ch2とCh4から求めた植生指標GEMI(Global Environmental Monitoring Index)の季節変化と、日中積算CO2フラックスの極小値を結んだ包絡線の季節変化の間によい一致がみられた[図1-c]。特にカラマツの萌芽後のGEMI値の急増時期や、展葉に伴うGEMI値の増加傾向が、CO2フラックスの変化傾向とよく一致している。ただし紅葉期は両者は一致しない。これは、光合成活動が低下した葉が落葉せずに残るためと思われる。III. 各種植生指標の季節変化 [図1-a,b] これに対し、植生指標としてよく用いられる正規化植生指標NDVI(Normalized Vegetation Index)は、CO2フラックスの季節変化傾向と一致しなかった。NDVIは春先の融雪に伴う値のジャンプがあり、また6__から__10月の活葉期に値がだいたい一定となる。この特徴は、Ch3とCh5から求めた図1-aの4つの植生指標も同様であった。しかし、Ch2とCh4を用いた図1-bのGEMIと、近赤外と可視の差であるDVI(Difference Vegetation Index)にはこれらの特徴がみられず、CO2フラックスの季節変化傾向と同様に萌芽後に値が急増し、6月にピークを迎えた後なだらかに減少した。IV. 葉面積指数LAIと植生指標GEMIの整合性 [図1-d] 葉面積指数(LAI)が正常値を示す、積雪期以外のLAIの季節変化を、Ch2とCh4によるGEMI(≒CO2フラックスの季節変化)と比較すると、カラマツ萌芽後の展葉期にはGEMIより1__から__2週間ほど遅れてLAIの値が増加した。タワー設置のモニタリングカメラの日々の画像の変化を見ても、カラマツの葉の色の変化が先に現れ、その後に葉が茂ってゆく様子がわかる。 萌芽後、LAIは直線的に増加するが、GEMIの増加は立ち上がりは急なものの徐々に増加量が減ってくる。これは、萌芽後LAIの増加とともに葉の相互遮蔽が生じ、下層まで届く光量が減少するため、群落全体としての光合成活動が低下することが原因と思われる。 他にも、今回の測定方法ではLAIとしてカウントされていない林床植物のCO2フラックスの影響等が想定される。<CO2フラックス・LAIデータ提供: 産業総合技術研究所 三枝 信子・王 輝民>",
"libraryCatalog": "J-Stage",
"pages": "280-280",
"publicationTitle": "日本林学会大会発表データベース",
"volume": "114",
"attachments": [
{
"title": "J-Stage - Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "CO2フラックス"
},
{
"tag": "分光日射計"
},
{
"tag": "植生指標"
},
{
"tag": "苫小牧フラックスリサーチサイト"
},
{
"tag": "葉面積指数"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Simon Kornblith, Sylvain Machefertmarc/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2020 Simon Kornblith, Sylvain Machefert
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectImport() {
var marcRecordRegexp = /^[0-9]{5}[a-z ]{3}$/;
var read = Zotero.read(8);
if (marcRecordRegexp.test(read)) {
return true;
}
return false;
}
// test
var fieldTerminator = "\x1E";
var recordTerminator = "\x1D";
var subfieldDelimiter = "\x1F";
/*
* CLEANING FUNCTIONS
*/
// general purpose cleaning
function clean(value) {
if (value === undefined) {
return null;
}
value = value.replace(/^[\s.,/:;]+/, '');
value = value.replace(/[\s.,/:;]+$/, '');
value = value.replace(/ +/g, ' ');
var char1 = value.substr(0, 1);
var char2 = value.substr(value.length - 1);
if ((char1 == "[" && char2 == "]") || (char1 == "(" && char2 == ")")) {
// chop of extraneous characters
return value.substr(1, value.length - 2);
}
return value;
}
// number extraction
function pullNumber(text) {
var pullRe = /[0-9]+/;
var m = pullRe.exec(text);
if (m) {
return m[0];
}
return "";
}
// ISBN extraction
function pullISBN(text) {
var pullRe = /[0-9X-]+/;
var m = pullRe.exec(text);
if (m) {
return m[0];
}
return "";
}
// regular author extraction
function author(author, type, useComma) {
return Zotero.Utilities.cleanAuthor(author, type, useComma);
}
function glueTogether(part1, part2, delimiter) {
if (!part1 && !part2) {
return null;
}
if (!part2) {
return part1;
}
if (!part1) {
return part2;
}
if (!delimiter) {
return part1 + ' ' + part2;
}
// we only add the delimiter, if part1 is not ending with a punctation
if (/[?:,.!;]\s*$/.test(part1)) {
return part1 + ' ' + part2;
}
return part1 + delimiter + part2;
}
/*
* END CLEANING FUNCTIONS
*/
var record = function () {
this.directory = {};
this.leader = "";
this.content = "";
// defaults
this.indicatorLength = 2;
this.subfieldCodeLength = 2;
};
// import a binary MARC record into this record
record.prototype.importBinary = function (record) {
// get directory and leader
var directory = record.substr(0, record.indexOf(fieldTerminator));
this.leader = directory.substr(0, 24);
directory = directory.substr(24);
// get various data
this.indicatorLength = parseInt(this.leader.substr(10, 1));
this.subfieldCodeLength = parseInt(this.leader.substr(11, 1));
var baseAddress = parseInt(this.leader.substr(12, 5));
// get record data
var contentTmp = record.substr(baseAddress);
// MARC wants one-byte characters, so when we have multi-byte UTF-8
// sequences, add null characters so that the directory shows up right. we
// can strip the nulls later.
this.content = "";
for (i = 0; i < contentTmp.length; i++) {
this.content += contentTmp.substr(i, 1);
if (contentTmp.charCodeAt(i) > 0x00FFFF) {
this.content += "\x00\x00\x00";
}
else if (contentTmp.charCodeAt(i) > 0x0007FF) {
this.content += "\x00\x00";
}
else if (contentTmp.charCodeAt(i) > 0x00007F) {
this.content += "\x00";
}
}
// read directory
for (var i = 0; i < directory.length; i += 12) {
var tag = parseInt(directory.substr(i, 3));
var fieldLength = parseInt(directory.substr(i + 3, 4));
var fieldPosition = parseInt(directory.substr(i + 7, 5));
if (!this.directory[tag]) {
this.directory[tag] = [];
}
this.directory[tag].push([fieldPosition, fieldLength]);
}
};
// add a field to this record
record.prototype.addField = function (field, indicator, value) {
field = parseInt(field);
// make sure indicator is the right length
if (indicator.length > this.indicatorLength) {
indicator = indicator.substr(0, this.indicatorLength);
}
else if (indicator.length != this.indicatorLength) {
indicator = Zotero.Utilities.lpad(indicator, " ", this.indicatorLength);
}
// add terminator
value = indicator + value + fieldTerminator;
// add field to directory
if (!this.directory[field]) {
this.directory[field] = [];
}
this.directory[field].push([this.content.length, value.length]);
// add field to record
this.content += value;
};
// get all fields with a certain field number
record.prototype.getField = function (field) {
field = parseInt(field);
var fields = [];
// make sure fields exist
if (!this.directory[field]) {
return fields;
}
// get fields
for (var i in this.directory[field]) {
var location = this.directory[field][i];
// add to array, replacing null characters
fields.push([this.content.substr(location[0], this.indicatorLength),
this.content.substr(location[0] + this.indicatorLength,
location[1] - this.indicatorLength - 1).replace(/\x00/g, "")]);
}
return fields;
};
// given a field string, split it into subfields
record.prototype.extractSubfields = function (fieldStr, tag /* for error message only*/) {
if (!tag) tag = '<no tag>';
var returnSubfields = {};
var subfields = fieldStr.split(subfieldDelimiter);
if (subfields.length == 1) {
returnSubfields["?"] = fieldStr;
}
else {
for (var j in subfields) {
if (subfields[j]) {
var subfieldIndex = subfields[j].substr(0, this.subfieldCodeLength - 1);
if (!returnSubfields[subfieldIndex]) {
returnSubfields[subfieldIndex] = subfields[j].substr(this.subfieldCodeLength - 1);
}
else {
// Duplicate subfield
Zotero.debug("Duplicate subfield '" + tag + " " + subfieldIndex + "=" + subfields[j]);
returnSubfields[subfieldIndex] = returnSubfields[subfieldIndex] + " " + subfields[j].substr(this.subfieldCodeLength - 1);
}
}
}
}
return returnSubfields;
};
// get subfields from a field
record.prototype.getFieldSubfields = function (tag) { // returns a two-dimensional array of values
var fields = this.getField(tag);
var returnFields = [];
for (var i = 0, n = fields.length; i < n; i++) {
returnFields[i] = this.extractSubfields(fields[i][1], tag);
}
return returnFields;
};
// add field to DB
record.prototype._associateDBField = function (item, fieldNo, part, fieldName, execMe, arg1, arg2) {
var field = this.getFieldSubfields(fieldNo);
Zotero.debug('MARC: found ' + field.length + ' matches for ' + fieldNo + part);
if (field) {
for (var i in field) {
var value = false;
for (var j = 0; j < part.length; j++) {
var myPart = part.substr(j, 1);
if (field[i][myPart]) {
if (value) {
value += " " + field[i][myPart];
}
else {
value = field[i][myPart];
}
}
}
if (value) {
value = clean(value);
if (execMe) {
value = execMe(value, arg1, arg2);
}
if (fieldName == "creator") {
item.creators.push(value);
}
else if (fieldName == "ISBN") {
if (!item[fieldName]) {
item[fieldName] = value;
}
else {
item[fieldName] += ' ' + value;
}
}
else {
item[fieldName] = value;
return;
}
}
}
}
};
// add field to DB as note
record.prototype._associateNotes = function (item, fieldNo, part) {
var field = this.getFieldSubfields(fieldNo);
var texts = [];
for (var i in field) {
for (var j = 0; j < part.length; j++) {
var myPart = part.substr(j, 1);
if (field[i][myPart]) {
texts.push(clean(field[i][myPart]));
}
}
}
var text = texts.join(' ');
if (text.trim() != "") item.notes.push({ note: text });
};
// add field to DB as tags
record.prototype._associateTags = function (item, fieldNo, part) {
var field = this.getFieldSubfields(fieldNo);
for (var i in field) {
for (var j = 0; j < part.length; j++) {
var myPart = part.substr(j, 1);
if (field[i][myPart]) {
item.tags.push(clean(field[i][myPart]));
}
}
}
};
// this function loads a MARC record into our database
record.prototype.translate = function (item) {
// get item type
if (this.leader) {
var marcType = this.leader.substr(6, 1);
if (marcType == "g") {
item.itemType = "film";
}
else if (marcType == "j" || marcType == "i") {
item.itemType = "audioRecording";
}
else if (marcType == "e" || marcType == "f") {
item.itemType = "map";
}
else if (marcType == "k") {
item.itemType = "artwork";
}
else if (marcType == "t" || marcType == "b") {
// 20091210: in unimarc, the code for manuscript is b, unused in marc21.
item.itemType = "manuscript";
}
else {
item.itemType = "book";
}
}
else {
item.itemType = "book";
}
// Starting from there, we try to distinguish between unimarc and other marc flavours.
// In unimarc, the title is in the 200 field and this field isn't used in marc-21 (at least)
// In marc-21, the title is in the 245 field and this field isn't used in unimarc
// So if we have a 200 and no 245, we can think we are with an unimarc record.
// Otherwise, we use the original association.
if ((this.getFieldSubfields("200")[0]) && (!(this.getFieldSubfields("245")[0]))) {
// If we've got a 328 field, we're on a thesis
if (this.getFieldSubfields("328")[0]) {
item.itemType = "thesis";
}
// Extract ISBNs
this._associateDBField(item, "010", "a", "ISBN", pullISBN);
// Extract ISSNs
this._associateDBField(item, "011", "a", "ISSN", pullISBN);
// Extract creators (700, 701 & 702)
for (let i = 700; i < 703; i++) {
let authorTab = this.getFieldSubfields(i);
for (let j in authorTab) {
var aut = authorTab[j];
var authorText = "";
if ((aut.b) && (aut.a)) {
authorText = aut.a.replace(/,\s*$/, '') + ", " + aut.b;
}
else {
authorText = aut.a;
}
// prevent this from crashing with empty author tags
if (authorText) item.creators.push(Zotero.Utilities.cleanAuthor(authorText, "author", true));
}
}
// Extract corporate creators (710, 711 & 712)
for (let i = 710; i < 713; i++) {
let authorTab = this.getFieldSubfields(i);
for (let j in authorTab) {
if (authorTab[j].a) {
item.creators.push({ lastName: authorTab[j].a, creatorType: "contributor", fieldMode: 1 });
}
}
}
// Extract language. In the 101$a there's a 3 chars code, would be better to
// have a translation somewhere
this._associateDBField(item, "101", "a", "language");
// Extract abstractNote
this._associateDBField(item, "328", "a", "abstractNote");
this._associateDBField(item, "330", "a", "abstractNote");
// Extract tags
// TODO : Ajouter les autres champs en 6xx avec les autorités construites.
// nécessite de reconstruire les autorités
this._associateTags(item, "610", "a");
// Extract scale (for maps)
this._associateDBField(item, "206", "a", "scale");
// Extract title
var title = this.getField("200")[0][1] // non-repeatable
.replace( // chop off any translations, since they may have repeated $e fields
new RegExp('\\' + subfieldDelimiter + 'd.+'), '');
title = this.extractSubfields(title, '200');
item.title = glueTogether(clean(title.a), clean(title.e), ': ');
// Extract edition
this._associateDBField(item, "205", "a", "edition");
// Field 214 replaces 210 in newer version of UNIMARC; the two are exclusive
// 214 uses numbered subfields to describe different types of bibliographic information
// currently not using that
// see https://www.transition-bibliographique.fr/wp-content/uploads/2019/08/B214-2019.pdf
if (this.getField("214").length) {
this._associateDBField(item, "214", "a", "place");
if (item.itemType == "film") {
this._associateDBField(item, "214", "c", "distributor");
}
else {
this._associateDBField(item, "214", "c", "publisher");
}
// Extract year
this._associateDBField(item, "214", "d", "date", pullNumber);
}
else {
// Extract place info
this._associateDBField(item, "210", "a", "place");
// Extract publisher/distributor
if (item.itemType == "film") {
this._associateDBField(item, "210", "c", "distributor");
}
else {
this._associateDBField(item, "210", "c", "publisher");
}
// Extract year
this._associateDBField(item, "210", "d", "date", pullNumber);
}
// Extract pages. Not working well because 215$a often contains pages + volume informations : 1 vol ()
// this._associateDBField(item, "215", "a", "pages", pullNumber);
// Extract series
this._associateDBField(item, "225", "a", "series");
// Extract series number
this._associateDBField(item, "225", "v", "seriesNumber");
// Extract call number
this._associateDBField(item, "686", "ab", "callNumber");
this._associateDBField(item, "676", "a", "callNumber");
this._associateDBField(item, "675", "a", "callNumber");
this._associateDBField(item, "680", "ab", "callNumber");
}
else {
// If we've got a 502 field, we're on a thesis, either published on its own (thesis)
// or by a publisher and therefore with an ISBN number (book).
if (this.getFieldSubfields("502")[0] && !this.getFieldSubfields("020")[0]) {
item.itemType = "thesis";
}
// Extract ISBNs
this._associateDBField(item, "020", "a", "ISBN", pullISBN);
// Extract ISSNs
this._associateDBField(item, "022", "a", "ISSN", pullISBN);
// Extract language
this._associateDBField(item, "041", "a", "language");
// Extract creators
// http://www.loc.gov/marc/relators/relaterm.html
var RELATERM = {
act: "castMember",
asn: "contributor", // Associated name
aut: "author",
cmp: "composer",
ctb: "contributor",
drt: "director",
edt: "editor",
pbl: "SKIP", // publisher
prf: "performer",
pro: "producer",
pub: "SKIP", // publication place
trl: "translator"
};
var creatorFields = ["100", "110", "700", "710"];// "111", "711" are meeting name
for (let i = 0; i < creatorFields.length; i++) {
var authorTab = this.getFieldSubfields(creatorFields[i]);
for (let j in authorTab) {
if (authorTab[j]['4'] && RELATERM[authorTab[j]['4']] && RELATERM[authorTab[j]['4']] == "SKIP") {
continue;
}
var creatorObject = {};
if (authorTab[j].a) {
if (creatorFields[i] == "100" || creatorFields[i] == "700") {
creatorObject = ZU.cleanAuthor(authorTab[j].a, "author", true);
}
else {
// same replacements as in the function ZU.cleanAuthor for institutional authors:
authorTab[j].a = authorTab[j].a.replace(/^[\s\u00A0.,/[\]:]+/, '')
.replace(/[\s\u00A0.,/[\]:]+$/, '')
.replace(/[\s\u00A0]+/, ' ');
creatorObject = { lastName: authorTab[j].a, creatorType: "contributor", fieldMode: 1 };
}
// some heuristic for the default values:
// in a book without any person as a main entry (no 100 field)
// it is likely that all persons (in 700 fields) are editors
if (creatorFields[i] == "700" && !this.getFieldSubfields("100")[0] && item.itemType == "book") {
creatorObject.creatorType = "editor";
}
if (authorTab[j]['4'] && RELATERM[authorTab[j]['4']]) {
creatorObject.creatorType = RELATERM[authorTab[j]['4']];
}
item.creators.push(creatorObject);
}
}
}
this._associateDBField(item, "111", "a", "meetingName");
this._associateDBField(item, "711", "a", "meetingName");
if (item.itemType == "book" && !item.creators.length) {
// some LOC entries have no listed author, but have the author in the person subject field as the first entry
var field = this.getFieldSubfields("600");
if (field[0]) {
item.creators.push(Zotero.Utilities.cleanAuthor(field[0].a, "author", true));
}
}
// Extract tags
// personal
this._associateTags(item, "600", "aqtxyzv");
// corporate
this._associateTags(item, "610", "abxyzv");
// meeting
this._associateTags(item, "611", "abtxyzv");
// uniform title
this._associateTags(item, "630", "acetxyzv");
// chronological
this._associateTags(item, "648", "atxyzv");
// topical
this._associateTags(item, "650", "axyzv");
// geographic
this._associateTags(item, "651", "abcxyzv");
// uncontrolled
this._associateTags(item, "653", "axyzv");
// faceted topical term (whatever that means)
this._associateTags(item, "654", "abcyzv");
// genre/form
this._associateTags(item, "655", "abcxyzv");
// occupation
this._associateTags(item, "656", "axyzv");
// function
this._associateTags(item, "657", "axyzv");
// curriculum objective
this._associateTags(item, "658", "ab");
// hierarchical geographic place name
this._associateTags(item, "662", "abcdfgh");
// Extract note fields
// http://www.loc.gov/marc/bibliographic/bd5xx.html
// general note
this._associateNotes(item, "500", "a");
// dissertation note
this._associateNotes(item, "502", "a");
// formatted contents (table of contents)
this._associateNotes(item, "505", "art");
// summary
// Store as abstract if not already available and only one such note exists
if (!item.abstractNote && this.getField("520").length == 1) {
this._associateDBField(item, "520", "ab", "abstractNote");
}
else {
this._associateNotes(item, "520", "ab");
}
// biographical or historical data
this._associateNotes(item, "545", "ab");
// Extract title
// a = main title
// b = subtitle
// n = Number of part/section of a work
// p = Name of part/section of a work
var titlesubfields = this.getFieldSubfields("245")[0];
item.title = glueTogether(
glueTogether(clean(titlesubfields.a), clean(titlesubfields.b), ": "),
glueTogether(clean(titlesubfields.n), clean(titlesubfields.p), ": "),
". "
);
// Extract edition
this._associateDBField(item, "250", "a", "edition");
// Extract place info
this._associateDBField(item, "260", "a", "place");
// Extract publisher/distributor
if (item.itemType == "film") {
this._associateDBField(item, "260", "b", "distributor");
}
else {
this._associateDBField(item, "260", "b", "publisher");
}
// Extract year
this._associateDBField(item, "260", "c", "date", pullNumber);
// Extract pages
this._associateDBField(item, "300", "a", "numPages", pullNumber);
// Extract series and series number
// The current preference is 490
this._associateDBField(item, "490", "a", "series");
this._associateDBField(item, "490", "v", "seriesNumber");
// 440 was made obsolete as of 2008; see http://www.loc.gov/marc/bibliographic/bd4xx.html
this._associateDBField(item, "440", "a", "series");
this._associateDBField(item, "440", "v", "seriesNumber");
// Extract call number
this._associateDBField(item, "084", "ab", "callNumber");
this._associateDBField(item, "082", "a", "callNumber");
this._associateDBField(item, "080", "ab", "callNumber");
this._associateDBField(item, "070", "ab", "callNumber");
this._associateDBField(item, "060", "ab", "callNumber");
this._associateDBField(item, "050", "ab", "callNumber");
this._associateDBField(item, "090", "ab", "callNumber");
this._associateDBField(item, "099", "a", "callNumber");
this._associateDBField(item, "852", "khim", "callNumber");
// OCLC numbers are useful info to save in extra
var controlNumber = this.getFieldSubfields("035")[0];
if (controlNumber && controlNumber.a && controlNumber.a.indexOf("(OCoLC)") == 0) {
item.extra = "OCLC: " + controlNumber.a.substring(7);
}
// Extract URL for electronic resources
this._associateDBField(item, "245", "h", "medium");
if (item.medium == "electronic resource" || item.medium == "Elektronische Ressource") this._associateDBField(item, "856", "u", "url");
// Field 264 instead of 260
if (!item.place) this._associateDBField(item, "264", "a", "place");
if (!item.publisher) this._associateDBField(item, "264", "b", "publisher");
if (!item.date) this._associateDBField(item, "264", "c", "date", pullNumber);
// German
if (!item.place) this._associateDBField(item, "410", "a", "place");
if (!item.publisher) this._associateDBField(item, "412", "a", "publisher");
if (!item.title) this._associateDBField(item, "331", "a", "title");
if (!item.title) this._associateDBField(item, "1300", "a", "title");
if (!item.date) this._associateDBField(item, "425", "a", "date", pullNumber);
if (!item.date) this._associateDBField(item, "595", "a", "date", pullNumber);
if (this.getFieldSubfields("104")[0]) this._associateDBField(item, "104", "a", "creator", author, "author", true);
if (this.getFieldSubfields("800")[0]) this._associateDBField(item, "800", "a", "creator", author, "author", true);
// Spanish
if (!item.title) this._associateDBField(item, "200", "a", "title");
if (!item.place) this._associateDBField(item, "210", "a", "place");
if (!item.publisher) this._associateDBField(item, "210", "c", "publisher");
if (!item.date) this._associateDBField(item, "210", "d", "date");
if (!item.creators) {
for (let i = 700; i < 703; i++) {
if (this.getFieldSubfields(i)[0]) {
Zotero.debug(i + " is AOK");
Zotero.debug(this.getFieldSubfields(i.toString()));
let aut = this.getFieldSubfields(i)[0];
if (aut.b) {
aut = aut.b.replace(/,\W+/g, "") + " " + aut.a.replace(/,\s/g, "");
}
else {
aut = aut.a.split(", ").join(" ");
}
item.creators.push(Zotero.Utilities.cleanAuthor(aut, "author"));
}
}
}
if (item.title) {
item.title = Zotero.Utilities.capitalizeTitle(item.title);
}
if (this.getFieldSubfields("335")[0]) {
item.title = item.title + ": " + this.getFieldSubfields("335")[0].a;
}
var otherIds = this.getFieldSubfields("024");
for (let id of otherIds) {
if (id['2'] == "doi") {
item.DOI = id.a;
}
}
var container = this.getFieldSubfields("773")[0];
if (container) {
var type = container['7'];
switch (type) {
case "nnam":
item.itemType = "bookSection";
break;
case "nnas":
item.itemType = "journalArticle";
break;
case "m2am":
item.itemType = "conferencePaper";
break;
default: // some catalogs don't have the $7 subfield
if (container.t && container.z) { // if there is an ISBN assume book section
item.itemType = "bookSection";
}
else if (container.t) { // else default to journal article
item.itemType = "journalArticle";
}
}
var publication = container.t;
if (item.itemType == "bookSection" || item.itemType == "conferencePaper") {
var pubinfo = container.d;
if (pubinfo) {
item.place = pubinfo.replace(/:.+/, "");
var publisher = pubinfo.match(/:\s*(.+),\s*\d{4}/);
if (publisher) item.publisher = publisher[1];
var year = pubinfo.match(/,\s*(\d{4})/);
if (year) item.date = year[1];
}
if (publication) {
var publicationTitle = publication.replace(/\..*/, "");
if (item.itemType == "bookSection") {
item.bookTitle = publicationTitle;
}
else {
item.proceedingsTitle = publicationTitle;
}
if (publication.includes("Edited by")) {
var editors = publication.match(/Edited by\s+(.+)\.?/)[1];
editors = editors.split(/\s+and\s+|\s*,\s*|\s*;\s*/);
for (let i = 0; i < editors.length; i++) {
item.creators.push(ZU.cleanAuthor(editors[i], "editor"));
}
}
}
var pages = container.g;
if (pages) {
pagerange = pages.match(/[ps]\.\s*(\d+(-\d+)?)/);
// if we don't have a page marker, we'll guess that a number range is good enough but
if (!pagerange) pagerange = pages.match(/(\d+-\d+)/);
if (pagerange) item.pages = pagerange[1];
}
var event = container.a;
if (event) {
item.conferenceName = event.replace(/[{}]/g, "");
}
item.ISBN = container.z;
}
else {
if (publication) {
item.publicationTitle = publication.replace(/[.,\s]+$/, "");
}
item.journalAbbreviation = container.p;
var locators = container.g;
if (locators) {
// unfortunately there is no standardization whatsoever here
var pagerange = locators.match(/[ps]\.\s*(\d+(-\d+)?)/);
// For Journals, since there are a lot of issue-ranges we require the first number to have >=2 digits
if (!pagerange) pagerange = locators.match(/(\d\d+-\d+)/);
if (pagerange) item.pages = pagerange[1];
var date = locators.match(/((Jan(uary)?|Feb(ruary)?|Mar(ch)?|Apr(il)?|May|Jun(e)?|Jul(y)?|Aug(ust)?|Sep(tember)?|Oct(ober)?|Nov(ember)?|Dec(ember)?)\.?\s*)?\d{4}/);
if (date) {
item.date = date[0];
}
if (locators.match(/(?:vol\.|bd\.)\s*(\d+)/i)) {
item.volume = locators.match(/(?:vol\.|bd\.)\s*(\d+)/i)[1];
}
if (locators.match(/(?:vol\.|bd\.)\s*\d+\s*,\s*(?:no\.|nr\.)\s*(\d[\d/]*)/i)) {
item.issue = locators.match(/(?:vol\.|bd\.)\s*\d+\s*,\s*(?:no\.|nr\.)\s*(\d[\d/]*)/i)[1];
}
if (!item.volume && locators.match(/\d+:\d+/)) {
item.volume = locators.match(/(\d+):\d+/)[1];
item.issue = locators.match(/\d+:(\d+)/)[1];
}
item.ISSN = container.x;
}
}
}
}
// editors get mapped as contributors - but so do many others who should be
// --> for books that don't have an author, turn contributors into editors.
if (item.itemType == "book") {
var hasAuthor = false;
for (let i = 0; i < item.creators.length; i++) {
if (item.creators[i].creatorType == "author") {
hasAuthor = true;
}
}
if (!hasAuthor) {
for (let i = 0; i < item.creators.length; i++) {
if (item.creators[i].creatorType == "contributor") {
item.creators[i].creatorType = "editor";
}
}
}
}
};
function doImport() {
var text;
var holdOver = ""; // part of the text held over from the last loop
// eslint-disable-next-line no-cond-assign
while (text = Zotero.read(4096)) { // read in 4096 byte increments
var records = text.split("\x1D");
if (records.length > 1) {
records[0] = holdOver + records[0];
holdOver = records.pop(); // skip last record, since it's not done
for (var i in records) {
var newItem = new Zotero.Item();
// create new record
var rec = new record();
rec.importBinary(records[i]);
rec.translate(newItem);
newItem.complete();
}
}
else {
holdOver += text;
}
}
}
var exports = {
record: record,
fieldTerminator: fieldTerminator,
recordTerminator: recordTerminator,
subfieldDelimiter: subfieldDelimiter
};
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "import",
"input": "01841cam a2200385Ma 45\u00020001000700000005001700007008004100024010001700065035002300082035001800105040003000123043001200153050001500165049001500180100003900195245028100234260005900515300006100574500019500635500014500830510003000975510002701005510004501032500002601077610004401103600004001147600004801187650004501235610004501280852005801325946003101383910001001414994001201424947001901436\u001e790862\u001e20080120004008.0\u001e880726s1687 sp bf 000 0cspa d\u001e \u001fa 03021876 \u001e \u001fa(OCoLC)ocm29051663\u001e \u001fa(NBYdb)790862\u001e \u001faMNU\u001fcMNU\u001fdOCL\u001fdDIBAM\u001fdIBV\u001e \u001fas-py---\u001e0 \u001faF2681\u001fb.X3\u001e \u001faIBVA\u001flbklr\u001e1 \u001faXarque, Francisco,\u001fdca. 1609-1691.\u001e10\u001faInsignes missioneros de la Compañia de Jesus en la prouincia del Paraguay :\u001fbestado presente de sus missiones en Tucuman, Paraguay, y Rio de la Plata, que comprehende su distrito /\u001fcpor el doct. d. Francisco Xarque, dean de la Catredral [sic] de Santa Maria de Albarrazin ...\u001e \u001faEn Pamplona :\u001fbPor Juan Micòn, Impressor,\u001fcaño 1687.\u001e \u001fa[24], 432 p., [1] folded leaf of plates :\u001fbmap ;\u001fc22 cm.\u001e \u001faBrunet and Graesse both mention a map of Paraguay; this copy has a map of Chile with title: Tabula geocraphica [sic] regni Chile / studio et labore P. Procuratoris Chilensis Societatis Jesu.\u001e \u001faIn 3 books; the first two are biographies of Jesuits, Simon Mazeta and Francisco Diaz Taño, the 3rd deals with Jesuit missions in Paraguay.\u001e4 \u001faNUC pre-1956,\u001fcNX0000604.\u001e4 \u001faSabin,\u001fc105716 (v.29).\u001e4 \u001faPalau y Dulcet (2nd ed.),\u001fc123233 (v.7).\u001e \u001faHead and tail pieces.\u001e20\u001faJesuits\u001fzParaguay\u001fvEarly works to 1800.\u001e10\u001faMasseta, Simon,\u001fdca. 1582-ca. 1656.\u001e10\u001faCuellar y Mosquera, Gabriel de,\u001fd1593-1677.\u001e 0\u001faMissions\u001fzParaguay\u001fvEarly works to 1800.\u001e20\u001faJesuits\u001fvBiography\u001fvEarly works to 1800.\u001e8 \u001fbvau,ayer\u001fkVAULT\u001fhAyer\u001fi1343\u001fi.J515\u001fiP211\u001fiX2\u001fi1687\u001ft1\u001e \u001faOCLC RECON PROJECT\u001farc3758\u001e \u001fa35535\u001e \u001fa02\u001fbIBV\u001e \u001faMARS\u001fa20071227\u001e\u001d",
"items": [
{
"itemType": "book",
"title": "Insignes missioneros de la Compañia de Jesus en la prouincia del Paraguay: estado presente de sus missiones en Tucuman, Paraguay, y Rio de la Plata, que comprehende su distrito",
"creators": [
{
"firstName": "Francisco",
"lastName": "Xarque",
"creatorType": "author"
}
],
"date": "1687",
"callNumber": "VAULT Ayer 1343 .J515 P211 X2 1687",
"extra": "OCLC: ocm29051663",
"numPages": "24",
"place": "En Pamplona",
"publisher": "Por Juan Micòn, Impressor",
"attachments": [],
"tags": [
{
"tag": "Biography Early works to 1800"
},
{
"tag": "Cuellar y Mosquera, Gabriel de"
},
{
"tag": "Early works to 1800"
},
{
"tag": "Early works to 1800"
},
{
"tag": "Jesuits"
},
{
"tag": "Jesuits"
},
{
"tag": "Masseta, Simon"
},
{
"tag": "Missions"
},
{
"tag": "Paraguay"
},
{
"tag": "Paraguay"
}
],
"notes": [
{
"note": "Brunet and Graesse both mention a map of Paraguay; this copy has a map of Chile with title: Tabula geocraphica [sic] regni Chile / studio et labore P. Procuratoris Chilensis Societatis Jesu In 3 books; the first two are biographies of Jesuits, Simon Mazeta and Francisco Diaz Taño, the 3rd deals with Jesuit missions in Paraguay Head and tail pieces"
}
],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "18789nmm a2201429 c 4500001001000000003000700010005001700017007001500034008004100049015001900090016002200109020003700131020003700168024003600205024003500241035002100276035001600297035001800313035002100331035002200352035002500374040002900399041000800428050001100436082001300447245010000460260003900560300003400599337001000633490007600643500014600719520109000865533015001955650005902105650005602164650005502220650006302275650002302338650000802361653002502369653002802394653002302422653000802445689005402453689005102507689005002558689005802608689002002666689002302686689001102709700005902720711006402779830003002843856004802873856003402921856004702955856007303002856005503075856007503130856007103205856007503276856008003351856008503431856014303516900010603659900025003765900024704015900023204262900024104494900024704735900024504982900025005227900024705477900033005724900031306054900024906367900025106616900025106867900028907118900019807407900035207605900028307957900024708240900025008487900030108737900025309038900030309291900030209594900026109896900030810157912001510465912002010480912001510500950003910515951001210554954010910566954024910675954024810924954023611172954024911408954024811657954024811905954025512153954024812408954032812656954032312984954024913307954024913556954024913805954028614054954019814340954035514538954028414893954025015177954025015427954029615677954024915973954029616222954029616518954024916814954029617063\u001e607843365\u001eDE-601\u001e20141226042756.0\u001ecr uuu---uuuuu\u001e090828s2009 gw 000 0 ger d\u001e \u001fa09A450429\u001f2dnb\u001e7 \u001fa99753513X\u001f2DE-101\u001e \u001fa9783642002304\u001f9978-3-642-00230-4\u001e \u001fa9783642002298\u001f9978-3-642-00229-8\u001e7 \u001faurn:nbn:de:1111-2009102027\u001f2urn\u001e7 \u001fa10.1007/978-3-642-00230-4\u001f2doi\u001e \u001fa(OCoLC)699070134\u001e \u001faebr10318806\u001e \u001fa9783642002304\u001e \u001fa(OCoLC)646815275\u001e \u001fa(ZDB-22-CAN)30851\u001e \u001fa(DE-599)GBV607843365\u001e \u001faGBVCP\u001fbger\u001fcGBVCP\u001ferakwb\u001e0 \u001fager\u001e 0\u001faKK7058\u001e09\u001fa330\u001fa340\u001e00\u001faEigentumsverfassung und Finanzkrise\u001fhElektronische Ressource\u001fcherausgegeben von Otto Depenheuer\u001e3 \u001faBerlin ;Heidelberg\u001fbSpringer\u001fc2009\u001e \u001faOnline-Ressource\u001fbv.: digital\u001e \u001faeBook\u001e0 \u001faBibliothek des Eigentums, Im Auftrag der Deutschen Stiftung Eigentum\u001fv7\u001e \u001fa\"Unter dem Thema 'Eigentumsverfassung und Finanzkrise' veranstaltete die Deutsche Stiftung Eigentum am 22. April 2009 in Berlin ein Symposion\u001e \u001faDie weltweite Finanzkrise ist Anlass, an Funktion und Wirkweise des privaten Eigentums in einer freiheitlichen Gesellschafts- und Wirtschaftsordnung zu erinnern. Privates Eigentum muss es geben, damit Verantwortung zugerechnet und Haftung realisiert, Gewinn und Verlust einem konkreten Verantwortungsträger persönlich zugerechnet werden können. Die Verletzung dieser konstitutiven Regeln einer auf privatem Eigentum basierenden Wirtschaftsordnung ist wesentlich ursächlich für das eingetretene Desaster auf den Finanzmärkten. Wie alle kulturellen Errungenschaften muss auch die Idee des privaten Eigentums, insbesondere die ihr immanente Bereitschaft zur Übernahme persönlicher Verantwortung des Eigentümers, jeder Generation erneut wieder in Erinnerung gerufen, überzeugend um sie geworben und vor allem vorbildhaft von den Akteuren in Politik und Wirtschaft vorgelebt werden. Nur so kann strukturelles Vertrauen in das Finanzsystem wieder gewonnen werden. Denn in ihrer vertrauensbildenden Kraft liegt die ordnungspolitische Funktion der Gewährleistung privaten Eigentums.\u001e \u001faOnline-Ausg.\u001fd2009\u001ffSpringer eBook Collection. Humanities, Social Science\u001fnElectronic reproduction; Available via World Wide Web\u001f7|2009||||||||||\u001e 7\u001f0(DE-601)587272910\u001f0(DE-588)7635855-0\u001faFinanzkrise\u001f2gnd\u001e 7\u001f0(DE-601)106341901\u001f0(DE-588)4013793-4\u001faEigentum\u001f2gnd\u001e 7\u001f0(DE-601)106306553\u001f0(DE-588)4022898-8\u001faHaftung\u001f2gnd\u001e 7\u001f0(DE-601)105665223\u001f0(DE-588)4135420-5\u001faOrdnungspolitik\u001f2gnd\u001e 0\u001faConstitutional law\u001e 0\u001faLaw\u001e 7\u001faAufsatzsammlung\u001f2gnd\u001e 7\u001faOnline-Publikation\u001f2gnd\u001e 0\u001faConstitutional law\u001e 0\u001faLaw\u001e00\u001f0(DE-601)587272910\u001f0(DE-588)7635855-0\u001faFinanzkrise\u001e01\u001f0(DE-601)106341901\u001f0(DE-588)4013793-4\u001faEigentum\u001e02\u001f0(DE-601)106306553\u001f0(DE-588)4022898-8\u001faHaftung\u001e03\u001f0(DE-601)105665223\u001f0(DE-588)4135420-5\u001faOrdnungspolitik\u001e04\u001faAufsatzsammlung\u001e05\u001faOnline-Publikation\u001e0 \u001f5DE-101\u001e1 \u001faDepenheuer, Otto\u001f0(DE-601)50677211X\u001f0(DE-588)130850616\u001e2 \u001faSymposion. Deutsche Stiftung Eigentum\u001fd(2009.04.22\u001fcBerlin)\u001e \u001fw(DE-601)601927117\u001fv7\u001f9700\u001e40\u001fuhttp://dx.doi.org/10.1007/978-3-642-00230-4\u001e40\u001fuhttp://d-nb.info/99753513X/34\u001e40\u001fuhttp://www.springerlink.com/content/v441t4\u001e40\u001fuhttp://site.ebrary.com/lib/alltitles/docDetail.action?docID=10318806\u001e40\u001fuhttp://nbn-resolving.de/urn:nbn:de:1111-2009102027\u001e41\u001fuhttp://ebooks.ciando.com/book/index.cfm/bok_id/30851\u001fmCIANDO\u001f3Volltext\u001e42\u001fyC\u001fuhttp://www.ciando.com/img/books/3642002307_k.jpg\u001fmCIANDO\u001f3Cover\u001e42\u001fyC\u001fuhttp://www.ciando.com/img/books/big/3642002307_k.jpg\u001fmCIANDO\u001f3Cover\u001e42\u001fyC\u001fuhttp://www.ciando.com/img/books/width167/3642002307_k.jpg\u001fmCIANDO\u001f3Cover\u001e42\u001fyC\u001fuhttp://www.ciando.com/pictures/bib/3642002307bib_t_1_70483.jpg\u001fmCIANDO\u001f3Cover\u001e42\u001fuhttp://external.dandelon.com/download/attachments/dandelon/ids/DEAGIDC0E3B4C91F575E1C12575DF005CF4D3.pdf\u001fmV:DE-601;AGI\u001f3Inhaltsverzeichnis\u001e \u001faGBV\u001fbSUB Bremen <46>\u001ffFreie Nutzung im Campusnetz der Universität und der Hochschulen im Land Bremen\u001e \u001faGBV\u001fbSUB+Uni Hamburg <18>\u001ffVervielfältigungen (z.B. Kopien, Downloads) sind nur von einzelnen Kapiteln oder Seiten und nur zum eigenen wissenschaftlichen Gebrauch erlaubt. Keine Weitergabe an Dritte. Kein systematisches Downloaden durch Robots.\u001e \u001faGBV\u001fbTUB Hamburg <830>\u001ffVervielfältigungen (z.B. Kopien, Downloads) sind nur von einzelnen Kapiteln oder Seiten und nur zum eigenen wissenschaftlichen Gebrauch erlaubt. Keine Weitergabe an Dritte. Kein systematisches Downloaden durch Robots.\u001e \u001faGBV\u001fbTHULB Jena <27>\u001ffVervielfältigungen (z.B. Kopien, Downloads) sind nur von einzelnen Kapiteln oder Seiten und nur zum eigenen wissenschaftlichen Gebrauch erlaubt. Keine Weitergabe an Dritte. Kein systematisches Downloaden.\u001e \u001faGBV\u001fbHAW Hamburg\u001ffVervielfältigungen (z.B. Kopien, Downloads) sind nur von einzelnen Kapiteln oder Seiten und nur zum eigenen wissenschaftlichen Gebrauch erlaubt. Keine Weitergabe an Dritte. Kein systematisches Downloaden durch Robots.\u001e \u001faGBV\u001fbHSU Hamburg <705>\u001ffVervielfältigungen (z.B. Kopien, Downloads) sind nur von einzelnen Kapiteln oder Seiten und nur zum eigenen wissenschaftlichen Gebrauch erlaubt. Keine Weitergabe an Dritte. Kein systematisches Downloaden durch Robots.\u001e \u001faGBV\u001fbUB Rostock <28>\u001ffVervielfältigungen (z.B. Kopien, Downloads) sind nur von einzelnen Kapiteln oder Seiten und nur zum eigenen wissenschaftlichen Gebrauch erlaubt. Keine Weitergabe an Dritte. Kein systematisches Downloaden durch Robots.\u001e \u001faGBV\u001fbULB Halle <3>\u001fdebook\u001ffVervielfältigungen (z.B. Kopien, Downloads) sind nur von einzelnen Kapiteln oder Seiten und nur zum eigenen wissenschaftlichen Gebrauch erlaubt. Keine Weitergabe an Dritte. Kein systematisches Downloaden durch Robots.\u001e \u001faGBV\u001fbUB Greifswald <9>\u001ffVervielfältigungen (z.B. Kopien, Downloads) sind nur von einzelnen Kapiteln oder Seiten und nur zum eigenen wissenschaftlichen Gebrauch erlaubt. Keine Weitergabe an Dritte. Kein systematisches Downloaden durch Robots.\u001e \u001faGBV\u001fbTIB/UB Hannover <89>\u001ffCampusweiter Zugriff (Universität Hannover). - Vervielfältigungen (z.B. Kopien, Downloads) sind nur von einzelnen Kapiteln oder Seiten und nur zum eigenen wissenschaftlichen Gebrauch erlaubt. Keine Weitergabe an Dritte. Kein systematisches Downloaden durch Robots.\u001ffErworben aus Studienbeiträgen\u001e \u001faGBV\u001fbHAWK HHG\u001ffVervielfältigungen (z.B. Kopien, Downloads) sind nur von einzelnen Kapiteln oder Seiten und nur zum eigenen wissenschaftlichen Gebrauch erlaubt. Keine Weitergabe an Dritte. Kein systematisches Downloaden durch Robots.\u001ffFreie Nutzung im Campusnetz der Hochschule und für registrierte Benutzer\u001e \u001faGBV\u001fbUB Magdeburg <Ma 9>\u001ffVervielfältigungen (z.B. Kopien, Downloads) sind nur von einzelnen Kapiteln oder Seiten und nur zum eigenen wissenschaftlichen Gebrauch erlaubt. Keine Weitergabe an Dritte. Kein systematisches Downloaden durch Robots.\u001e \u001faGBV\u001fbMZB Magdeburg <Ma 14>\u001ffVervielfältigungen (z.B. Kopien, Downloads) sind nur von einzelnen Kapiteln oder Seiten und nur zum eigenen wissenschaftlichen Gebrauch erlaubt. Keine Weitergabe an Dritte. Kein systematisches Downloaden durch Robots.\u001e \u001faGBV\u001fbUB Lüneburg <Luen 4>\u001ffVervielfältigungen (z.B. Kopien, Downloads) sind nur von einzelnen Kapiteln oder Seiten und nur zum eigenen wissenschaftlichen Gebrauch erlaubt. Keine Weitergabe an Dritte. Kein systematisches Downloaden durch Robots.\u001e \u001faGBV\u001fbBIS Uni Oldenburg <715>\u001ffCampusweiter Zugriff (Universität Oldenburg). - Vervielfältigungen (z.B. Kopien, Downloads) sind nur von einzelnen Kapiteln oder Seiten und nur zum eigenen wissenschaftlichen Gebrauch erlaubt. Keine Weitergabe an Dritte. Kein systematisches Downloaden.\u001e \u001faGBV\u001fbUB Osnabrück <700>\u001ffVervielfältigungen (z. B. Kopien, Downloads) nur für den eigenen wissenschaftlichen Gebrauch. Keine Weitergabe an Dritte. Kein systematisches Downloaden durch Robots\u001e \u001faGBV\u001fbUB Vechta <Va 1>\u001ffVervielfältigungen (z.B. Kopien, Downloads) sind nur von einzelnen Kapiteln oder Seiten und nur zum eigenen wissenschaftlichen Gebrauch erlaubt. Keine Weitergabe an Dritte. Kein systematisches Downloaden durch Robots.\u001ffZugriff von allen internetfähigen Rechnern innerhalb des Campusnetzes der Universität Vechta möglich.\u001e \u001faGBV\u001fbHS Osnabrueck <959>\u001ffVervielfältigungen (z.B. Kopien, Downloads) sind nur von einzelnen Kapiteln oder Seiten und nur zum eigenen wissenschaftlichen Gebrauch erlaubt. Keine Weitergabe an Dritte. Kein systematisches Downloaden durch Robots.\u001ffFinanziert aus Studienbeiträgen\u001e \u001faGBV\u001fbHS Wismar <Wis 1>\u001ffVervielfältigungen (z.B. Kopien, Downloads) sind nur von einzelnen Kapiteln oder Seiten und nur zum eigenen wissenschaftlichen Gebrauch erlaubt. Keine Weitergabe an Dritte. Kein systematisches Downloaden durch Robots.\u001e \u001faGBV\u001fbHSB Emden/Leer <755>\u001ffVervielfältigungen (z.B. Kopien, Downloads) sind nur von einzelnen Kapiteln oder Seiten und nur zum eigenen wissenschaftlichen Gebrauch erlaubt. Keine Weitergabe an Dritte. Kein systematisches Downloaden durch Robots.\u001e \u001faGBV\u001fbHochschule Hannover <960>\u001ffCampusweiter Zugriff (Hochschule Hannover). - Vervielfältigungen (z.B. Kopien, Downloads) sind nur von einzelnen Kapiteln oder Seiten und nur zum eigenen wissenschaftlichen Gebrauch erlaubt. Keine Weitergabe an Dritte. Kein systematisches Downloaden durch Robots.\u001e \u001faGBV\u001fbHS Neubrandenburg <519>\u001ffVervielfältigungen (z.B. Kopien, Downloads) sind nur von einzelnen Kapiteln oder Seiten und nur zum eigenen wissenschaftlichen Gebrauch erlaubt. Keine Weitergabe an Dritte. Kein systematisches Downloaden durch Robots.\u001e \u001faGBV\u001fbHS Magdeburg-Stendal <551>\u001ffCampusweiter Zugriff (HS Magdeburg-Stendal). - Vervielfältigungen (z.B. Kopien, Downloads) sind nur von einzelnen Kapiteln oder Seiten und nur zum eigenen wissenschaftlichen Gebrauch erlaubt. Keine Weitergabe an Dritte. Kein systematisches Downloaden durch Robots.\u001e \u001faGBV\u001fbHS MD-SDL (Stendal) <552>\u001ffCampusweiter Zugriff (HS Magdeburg-Stendal). - Vervielfältigungen (z.B. Kopien, Downloads) sind nur von einzelnen Kapiteln oder Seiten und nur zum eigenen wissenschaftlichen Gebrauch erlaubt. Keine Weitergabe an Dritte. Kein systematisches Downloaden durch Robots.\u001e \u001faGBV\u001fbUB Potsdam <517>\u001fd!1960! \u001fxL\u001fzC\u001ffVervielfältigungen (z.B. Kopien, Downloads) sind nur von einzelnen Kapiteln oder Seiten und nur zum eigenen wissenschaftlichen Gebrauch erlaubt. Keine Weitergabe an Dritte. Kein systematisches Downloaden durch Robots.\u001e \u001faGBV\u001fbBibl. Kurt-Schwitters-F. <960/3>\u001ffCampusweiter Zugriff (Hochschule Hannover). - Vervielfältigungen (z.B. Kopien, Downloads) sind nur von einzelnen Kapiteln oder Seiten und nur zum eigenen wissenschaftlichen Gebrauch erlaubt. Keine Weitergabe an Dritte. Kein systematisches Downloaden durch Robots.\u001e \u001faZDB-38-EBR\u001e \u001faZDB-2-SGR\u001fb2009\u001e \u001faZDB-22-CAN\u001e \u001faPolitik Wirtschaftspolitik\u001f2ciando\u001e \u001faww\u001f2120\u001e \u001fa21\u001fb204841267\u001fc01\u001fkFreie Nutzung im Campusnetz der Universität und der Hochschulen im Land Bremen\u001fx0046\u001e \u001fa22\u001fb1157518338\u001fc01\u001fkVervielfältigungen (z.B. Kopien, Downloads) sind nur von einzelnen Kapiteln oder Seiten und nur zum eigenen wissenschaftlichen Gebrauch erlaubt. Keine Weitergabe an Dritte. Kein systematisches Downloaden durch Robots.\u001fx0018\u001e \u001fa23\u001fb204845807\u001fc01\u001fkVervielfältigungen (z.B. Kopien, Downloads) sind nur von einzelnen Kapiteln oder Seiten und nur zum eigenen wissenschaftlichen Gebrauch erlaubt. Keine Weitergabe an Dritte. Kein systematisches Downloaden durch Robots.\u001fx0830\u001e \u001fa31\u001fb1110832494\u001fc01\u001fkVervielfältigungen (z.B. Kopien, Downloads) sind nur von einzelnen Kapiteln oder Seiten und nur zum eigenen wissenschaftlichen Gebrauch erlaubt. Keine Weitergabe an Dritte. Kein systematisches Downloaden.\u001fx0027\u001e \u001fa34\u001fb1112445323\u001fc01\u001fkVervielfältigungen (z.B. Kopien, Downloads) sind nur von einzelnen Kapiteln oder Seiten und nur zum eigenen wissenschaftlichen Gebrauch erlaubt. Keine Weitergabe an Dritte. Kein systematisches Downloaden durch Robots.\u001fx3551\u001e \u001fa60\u001fb204839033\u001fc01\u001fkVervielfältigungen (z.B. Kopien, Downloads) sind nur von einzelnen Kapiteln oder Seiten und nur zum eigenen wissenschaftlichen Gebrauch erlaubt. Keine Weitergabe an Dritte. Kein systematisches Downloaden durch Robots.\u001fx0705\u001e \u001fa62\u001fb204864348\u001fc01\u001fkVervielfältigungen (z.B. Kopien, Downloads) sind nur von einzelnen Kapiteln oder Seiten und nur zum eigenen wissenschaftlichen Gebrauch erlaubt. Keine Weitergabe an Dritte. Kein systematisches Downloaden durch Robots.\u001fx0028\u001e \u001fa65\u001fb204864933\u001fc01\u001fdebook\u001fkVervielfältigungen (z.B. Kopien, Downloads) sind nur von einzelnen Kapiteln oder Seiten und nur zum eigenen wissenschaftlichen Gebrauch erlaubt. Keine Weitergabe an Dritte. Kein systematisches Downloaden durch Robots.\u001fx0003\u001e \u001fa69\u001fb204847389\u001fc01\u001fkVervielfältigungen (z.B. Kopien, Downloads) sind nur von einzelnen Kapiteln oder Seiten und nur zum eigenen wissenschaftlichen Gebrauch erlaubt. Keine Weitergabe an Dritte. Kein systematisches Downloaden durch Robots.\u001fx0009\u001e \u001fa70\u001fb204843235\u001fc01\u001fkCampusweiter Zugriff (Universität Hannover). - Vervielfältigungen (z.B. Kopien, Downloads) sind nur von einzelnen Kapiteln oder Seiten und nur zum eigenen wissenschaftlichen Gebrauch erlaubt. Keine Weitergabe an Dritte. Kein systematisches Downloaden durch Robots.\u001fkErworben aus Studienbeiträgen\u001fx0089\u001e \u001fa91\u001fb204828465\u001fc01\u001fkVervielfältigungen (z.B. Kopien, Downloads) sind nur von einzelnen Kapiteln oder Seiten und nur zum eigenen wissenschaftlichen Gebrauch erlaubt. Keine Weitergabe an Dritte. Kein systematisches Downloaden durch Robots.\u001fkFreie Nutzung im Campusnetz der Hochschule und für registrierte Benutzer\u001fx3091\u001e \u001fa100\u001fb204854784\u001fc01\u001fkVervielfältigungen (z.B. Kopien, Downloads) sind nur von einzelnen Kapiteln oder Seiten und nur zum eigenen wissenschaftlichen Gebrauch erlaubt. Keine Weitergabe an Dritte. Kein systematisches Downloaden durch Robots.\u001fx3100\u001e \u001fa101\u001fb204859581\u001fc01\u001fkVervielfältigungen (z.B. Kopien, Downloads) sind nur von einzelnen Kapiteln oder Seiten und nur zum eigenen wissenschaftlichen Gebrauch erlaubt. Keine Weitergabe an Dritte. Kein systematisches Downloaden durch Robots.\u001fx3101\u001e \u001fa110\u001fb204849047\u001fc01\u001fkVervielfältigungen (z.B. Kopien, Downloads) sind nur von einzelnen Kapiteln oder Seiten und nur zum eigenen wissenschaftlichen Gebrauch erlaubt. Keine Weitergabe an Dritte. Kein systematisches Downloaden durch Robots.\u001fx3110\u001e \u001fa120\u001fb1107373360\u001fc01\u001fkCampusweiter Zugriff (Universität Oldenburg). - Vervielfältigungen (z.B. Kopien, Downloads) sind nur von einzelnen Kapiteln oder Seiten und nur zum eigenen wissenschaftlichen Gebrauch erlaubt. Keine Weitergabe an Dritte. Kein systematisches Downloaden.\u001fx0715\u001e \u001fa130\u001fb204860288\u001fc01\u001fkVervielfältigungen (z. B. Kopien, Downloads) nur für den eigenen wissenschaftlichen Gebrauch. Keine Weitergabe an Dritte. Kein systematisches Downloaden durch Robots\u001fx0700\u001e \u001fa131\u001fb204865581\u001fc01\u001fkVervielfältigungen (z.B. Kopien, Downloads) sind nur von einzelnen Kapiteln oder Seiten und nur zum eigenen wissenschaftlichen Gebrauch erlaubt. Keine Weitergabe an Dritte. Kein systematisches Downloaden durch Robots.\u001fkZugriff von allen internetfähigen Rechnern innerhalb des Campusnetzes der Universität Vechta möglich.\u001fx3131\u001e \u001fa132\u001fb1109827059\u001fc01\u001fkVervielfältigungen (z.B. Kopien, Downloads) sind nur von einzelnen Kapiteln oder Seiten und nur zum eigenen wissenschaftlichen Gebrauch erlaubt. Keine Weitergabe an Dritte. Kein systematisches Downloaden durch Robots.\u001fkFinanziert aus Studienbeiträgen\u001fx0959\u001e \u001fa136\u001fb1177584336\u001fc01\u001fkVervielfältigungen (z.B. Kopien, Downloads) sind nur von einzelnen Kapiteln oder Seiten und nur zum eigenen wissenschaftlichen Gebrauch erlaubt. Keine Weitergabe an Dritte. Kein systematisches Downloaden durch Robots.\u001fx3526\u001e \u001fa160\u001fb1348735406\u001fc01\u001fkVervielfältigungen (z.B. Kopien, Downloads) sind nur von einzelnen Kapiteln oder Seiten und nur zum eigenen wissenschaftlichen Gebrauch erlaubt. Keine Weitergabe an Dritte. Kein systematisches Downloaden durch Robots.\u001fx0755\u001e \u001fa161\u001fb1284974146\u001fc01\u001fkCampusweiter Zugriff (Hochschule Hannover). - Vervielfältigungen (z.B. Kopien, Downloads) sind nur von einzelnen Kapiteln oder Seiten und nur zum eigenen wissenschaftlichen Gebrauch erlaubt. Keine Weitergabe an Dritte. Kein systematisches Downloaden durch Robots.\u001fx0960\u001e \u001fa186\u001fb204837022\u001fc01\u001fkVervielfältigungen (z.B. Kopien, Downloads) sind nur von einzelnen Kapiteln oder Seiten und nur zum eigenen wissenschaftlichen Gebrauch erlaubt. Keine Weitergabe an Dritte. Kein systematisches Downloaden durch Robots.\u001fx0519\u001e \u001fa213\u001fb204835119\u001fc01\u001fkCampusweiter Zugriff (HS Magdeburg-Stendal). - Vervielfältigungen (z.B. Kopien, Downloads) sind nur von einzelnen Kapiteln oder Seiten und nur zum eigenen wissenschaftlichen Gebrauch erlaubt. Keine Weitergabe an Dritte. Kein systematisches Downloaden durch Robots.\u001fx0551\u001e \u001fa230\u001fb204836433\u001fc01\u001fkCampusweiter Zugriff (HS Magdeburg-Stendal). - Vervielfältigungen (z.B. Kopien, Downloads) sind nur von einzelnen Kapiteln oder Seiten und nur zum eigenen wissenschaftlichen Gebrauch erlaubt. Keine Weitergabe an Dritte. Kein systematisches Downloaden durch Robots.\u001fx0552\u001e \u001fa285\u001fb204862256\u001fc01\u001fkVervielfältigungen (z.B. Kopien, Downloads) sind nur von einzelnen Kapiteln oder Seiten und nur zum eigenen wissenschaftlichen Gebrauch erlaubt. Keine Weitergabe an Dritte. Kein systematisches Downloaden durch Robots.\u001fx0517\u001e \u001fa293\u001fb1284989569\u001fc01\u001fkCampusweiter Zugriff (Hochschule Hannover). - Vervielfältigungen (z.B. Kopien, Downloads) sind nur von einzelnen Kapiteln oder Seiten und nur zum eigenen wissenschaftlichen Gebrauch erlaubt. Keine Weitergabe an Dritte. Kein systematisches Downloaden durch Robots.\u001fx3293\u001e\u001d",
"items": [
{
"itemType": "book",
"title": "Eigentumsverfassung und Finanzkrise",
"creators": [
{
"firstName": "Otto",
"lastName": "Depenheuer",
"creatorType": "editor"
}
],
"date": "2009",
"ISBN": "9783642002304 9783642002298",
"abstractNote": "Die weltweite Finanzkrise ist Anlass, an Funktion und Wirkweise des privaten Eigentums in einer freiheitlichen Gesellschafts- und Wirtschaftsordnung zu erinnern. Privates Eigentum muss es geben, damit Verantwortung zugerechnet und Haftung realisiert, Gewinn und Verlust einem konkreten Verantwortungsträger persönlich zugerechnet werden können. Die Verletzung dieser konstitutiven Regeln einer auf privatem Eigentum basierenden Wirtschaftsordnung ist wesentlich ursächlich für das eingetretene Desaster auf den Finanzmärkten. Wie alle kulturellen Errungenschaften muss auch die Idee des privaten Eigentums, insbesondere die ihr immanente Bereitschaft zur Übernahme persönlicher Verantwortung des Eigentümers, jeder Generation erneut wieder in Erinnerung gerufen, überzeugend um sie geworben und vor allem vorbildhaft von den Akteuren in Politik und Wirtschaft vorgelebt werden. Nur so kann strukturelles Vertrauen in das Finanzsystem wieder gewonnen werden. Denn in ihrer vertrauensbildenden Kraft liegt die ordnungspolitische Funktion der Gewährleistung privaten Eigentums",
"callNumber": "KK7058",
"extra": "OCLC: 699070134",
"language": "ger",
"place": "Berlin ;Heidelberg",
"publisher": "Springer",
"series": "Bibliothek des Eigentums, Im Auftrag der Deutschen Stiftung Eigentum",
"seriesNumber": "7",
"url": "http://dx.doi.org/10.1007/978-3-642-00230-4",
"attachments": [],
"tags": [
{
"tag": "Aufsatzsammlung"
},
{
"tag": "Constitutional law"
},
{
"tag": "Constitutional law"
},
{
"tag": "Eigentum"
},
{
"tag": "Finanzkrise"
},
{
"tag": "Haftung"
},
{
"tag": "Law"
},
{
"tag": "Law"
},
{
"tag": "Online-Publikation"
},
{
"tag": "Ordnungspolitik"
}
],
"notes": [
{
"note": "\"Unter dem Thema 'Eigentumsverfassung und Finanzkrise' veranstaltete die Deutsche Stiftung Eigentum am 22. April 2009 in Berlin ein Symposion"
}
],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "01527pam a2200421 cc4500001001000000003000700010005001700017007000300034008004100037015003400078016002200112020008000134024001800214028002300232035002500255035002100280040003500301041000800336044001300344082002900357084002700386090000600413100006900419245011400488250001400602259000700616260004600623300003200669653004200701653003200743653002800775653002600803653004800829773002600877856008100903856011400984925000701098\u001e987805282\u001eDE-101\u001e20080603235442.0\u001etu\u001e080304s2008 gw ||||| |||| 00||||ger \u001e \u001fa08,A24,0901\u001fz08,N12,0064\u001f2dnb\u001e7 \u001f2DE-101\u001fa987805282\u001e \u001fa9783540774310\u001fckart. : EUR 24.95, sfr 41.00 (freier Pr.)\u001f9978-3-540-77431-0\u001e3 \u001fa9783540774310\u001e52\u001faBest.-Nr. 12208951\u001e \u001fa(DE-599)DNB987805282\u001e \u001fa(OCoLC)244010073\u001e \u001fa1145\u001fbger\u001fcDE-101\u001fd9999\u001ferakwb\u001e \u001fager\u001e \u001fcXA-DE-BE\u001e74\u001fa510\u001fa004\u001fqDE-101\u001f222sdnb\u001e \u001fa510\u001fa004\u001fqDE-101\u001f2sdnb\u001e \u001fab\u001e1 \u001f0(DE-588)140501037\u001f0(DE-101)140501037\u001faTeschl, Gerald\u001fd1970-\u001f4aut\u001e10\u001faMathematik für Informatiker\u001fnBd. 1\u001fpDiskrete Mathematik und lineare Algebra\u001fcGerald Teschl ; Susanne Teschl\u001e \u001fa3., Aufl.\u001e \u001fa13\u001e3 \u001faBerlin\u001faHeidelberg\u001fbSpringer Vieweg\u001fc2008\u001e \u001faXIII, 514 S.\u001fbgraph. Darst.\u001e \u001fa(VLB-FS)Mathematik für Informatiker\u001e \u001fa(VLB-FS)Diskrete Mathematik\u001e \u001fa(VLB-FS)Lineare Algebra\u001e \u001fa(VLB-PF)BC: Paperback\u001e \u001fa(VLB-WN)1632: HC/Informatik, EDV/Informatik\u001e08\u001fq11\u001fw(DE-101)976481294\u001e42\u001fmB:DE-101\u001fqapplication/pdf\u001fuhttp://d-nb.info/987805282/04\u001f3Inhaltsverzeichnis\u001e42\u001fmX:MVB\u001fqtext/html\u001fuhttp://deposit.d-nb.de/cgi-bin/dokserv?id=3077737&prov=M&dok_var=1&dok_ext=htm\u001f3Inhaltstext\u001er \u001fara\u001e\u001d",
"items": [
{
"itemType": "book",
"title": "Mathematik für Informatiker. Bd. 1: Diskrete Mathematik und lineare Algebra",
"creators": [
{
"firstName": "Gerald",
"lastName": "Teschl",
"creatorType": "author"
}
],
"date": "2008",
"ISBN": "9783540774310",
"callNumber": "b",
"edition": "3., Aufl",
"language": "ger",
"numPages": "514",
"place": "Berlin Heidelberg",
"publisher": "Springer Vieweg",
"attachments": [],
"tags": [
"(VLB-FS)Diskrete Mathematik",
"(VLB-FS)Lineare Algebra",
"(VLB-FS)Mathematik für Informatiker",
"(VLB-PF)BC: Paperback",
"(VLB-WN)1632: HC/Informatik, EDV/Informatik"
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Philipp Zumstein, Sebastian Karcher^https?://(www\.)?kasif\.mkutup\.gov\.tr//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2017-2024 Philipp Zumstein & Sebastian Karcher
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('?MakId=')) {
return "book";
}
else if (url.includes('/OpacArama') && getSearchResults(doc, url, true)) {
return "multiple";
}
Z.monitorDOMChanges(doc.getElementById('dvKapsam'), { childList: true });
return false;
}
function getSearchResults(doc, url, checkOnly) {
var items = {};
var found = false;
let baseURL = 'SonucDetay.aspx?MakId=';
if (url.includes("OpacAramaEn.aspx?")) { // English catalog
baseURL = 'SonucDetayEn.aspx?MakId=';
}
var rows = doc.querySelectorAll('div.DivSonuc');
for (let row of rows) {
let title = ZU.trimInternal(text(row, '.SonucBaslik'));
let id = attr(row, '.SonucDiv1', 'onclick');
let href;
if (id) {
let param = id.match(/Goster\((\d+),(\d+)\)/);
if (param && param[2] !== "1700") {
//we don't handle articles which don't have MARC data
href = baseURL + param[1];
if (!href || !title) continue;
}
}
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
async function doWeb(doc, url) {
if (detectWeb(doc, url) == 'multiple') {
let items = await Zotero.selectItems(getSearchResults(doc, url, false));
if (!items) return;
for (let url of Object.keys(items)) {
await scrape(await requestDocument(url));
}
}
else {
await scrape(doc);
}
}
async function scrape(doc) {
var lines = doc.querySelectorAll('#cntPlcPortal_grdMrc tr');
let translator = Zotero.loadTranslator('import');
translator.setTranslator('a6ee60df-1ddc-4aae-bb25-45e0537be973'); // MARC
let marc = await translator.getTranslatorObject();
let record = new marc.record();
let newItem = new Zotero.Item();
//ignore the table headings in lines[0]
record.leader = text(lines[1], 'td', 4);
var fieldTag, indicators, fieldContent;
for (var j = 2; j < lines.length; j++) {
//multiple lines with same fieldTag do not repeat it
//i.e. in these cases we will just take same value as before
if (text(lines[j], 'td', 0).trim().length > 0) {
fieldTag = text(lines[j], 'td', 0);
}
indicators = text(lines[j], 'td', 1) + text(lines[j], 'td', 2);
fieldContent = '';
if (text(lines[j], 'td', 3).trim().length > 0) {
fieldContent = marc.subfieldDelimiter + text(lines[j], 'td', 3);
}
fieldContent += text(lines[j], 'td', 4);
record.addField(fieldTag, indicators, fieldContent);
}
record.translate(newItem);
//don't save value "no publisher" = "yayl.y."
if (newItem.publisher == 'yayl.y.') {
delete newItem.publisher;
}
newItem.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://kasif.mkutup.gov.tr/SonucDetay.aspx?MakId=954757",
"items": [
{
"itemType": "book",
"title": "Protestanlıkta sakramentler",
"creators": [
{
"firstName": "Muhammet",
"lastName": "Tarakçı",
"creatorType": "author"
}
],
"date": "2012",
"ISBN": "9786054487059",
"callNumber": "2014 AD 15480",
"language": "TUR",
"libraryCatalog": "Milli Kütüphane",
"numPages": "296",
"place": "Bursa",
"publisher": "Emin Yayınları",
"series": "Emin Yayınları",
"seriesNumber": "122",
"attachments": [],
"tags": [
"Protestanlık (Hıristiyanlık)"
],
"notes": [
{
"note": "Dizin vardır"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://kasif.mkutup.gov.tr/SonucDetay.aspx?MakId=423635",
"items": [
{
"itemType": "book",
"title": "Peygamberlik makamı ve sevgili peygamberimiz",
"creators": [
{
"firstName": "Nihat (F)",
"lastName": "Dalgın",
"creatorType": "editor"
},
{
"firstName": "Yunus (F)",
"lastName": "Macit",
"creatorType": "editor"
}
],
"date": "1992",
"callNumber": "1993 AD 4043",
"language": "TUR",
"libraryCatalog": "Milli Kütüphane",
"numPages": "126",
"place": "Samsun",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://kasif.mkutup.gov.tr/SonucDetayEn.aspx?MakId=1705892",
"items": [
{
"itemType": "book",
"title": "Labor laws ın Turkey",
"creators": [
{
"lastName": "The İstanbul Chamber of Commerce",
"creatorType": "editor",
"fieldMode": 1
},
{
"firstName": "A. Murat",
"lastName": "Demircioğlu",
"creatorType": "editor"
}
],
"date": "1988",
"callNumber": "1989 AD 1093",
"language": "TUR",
"libraryCatalog": "Milli Kütüphane",
"numPages": "43",
"place": "İstanbul",
"publisher": "The Istanbul Chamber of Commerce",
"series": "ICOC Publication",
"seriesNumber": "1988-20",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://kasif.mkutup.gov.tr/OpacAramaEn.aspx?Ara=test&DtSrc=0&fld=-1&NvBar=0",
"defer": true,
"items": "multiple"
}
]
/** END TEST CASES **/
100Geoff Banh^https?:\/\/www\.cbc\.ca//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2024 Geoff Banh
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
let path = new URL(url).pathname;
if (path.includes("/search?") && getSearchResults(doc, true)) {
return 'multiple';
}
else if ((/(news|sports|radio|books|arts|music|life|television|archives)\//.test(path)) && getLD(doc)) {
return "newspaperArticle";
}
else if (path.includes("/player/")) {
return "videoRecording";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
// Adjust the CSS Selectors
var rows = doc.querySelectorAll('.card.cardListing');
for (const row of rows) {
var href = row.href;
var title = text(row, 'h3.headline');
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function getLD(doc) {
let ldScript = text(doc, "script[type='application/ld+json']");
if (ldScript) return JSON.parse(ldScript);
return null;
}
function getMetaContent(doc, attribute, text) {
return attr(doc.head, 'meta[' + attribute + '="' + text + '"]', 'content');
}
async function scrape(doc, url = doc.location.href) {
let translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', (_obj, item) => {
item.language = "en-CA";
let ld = getLD(doc);
// only do processing if page has ld
if (ld) {
item.url = getMetaContent(doc, 'property', "og:url");
item.title = ld.headline ? ld.headline : ld.name;
if (item.itemType == "videoRecording") {
item.date = ZU.strToISO(ld.uploadDate);
}
else {
item.date = ZU.strToISO(ld.datePublished);
}
item.abstractNote = ld.description;
item.creators = []; // clear existing authors
// ignore organization authors
if (ld.hasOwnProperty("author") && ld.author[0]['@type'] != "Organization") {
// either single author or multiple comma separated in one entry
if (ld.author.length == 1) {
let authors = ld.author[0].name;
if (authors.includes(',')) {
let authorsList = authors.split(',');
for (const a of authorsList) {
item.creators.push(ZU.cleanAuthor(a, "author"));
}
}
else {
item.creators.push(ZU.cleanAuthor(authors, "author"));
}
}
else {
for (const a of ld.author) {
item.creators.push(ZU.cleanAuthor(a.name, "author"));
}
}
}
let siteName = "CBC";
if (item.itemType != "videoRecording") {
// get department (e.g. News, Sports, Radio)
// remove .ca/ manually, as regex lookbehind doesn't seem to work
let dept = (/\.ca\/\w+(?=\/)/.exec(item.url))[0].replace(".ca/", "");
// capitalize department
dept = dept[0].toUpperCase() + dept.slice(1);
siteName += " " + dept;
}
item.publicationTitle = siteName;
item.libraryCatalog = "CBC.ca";
}
item.complete();
});
let em = await translator.getTranslatorObject();
em.itemType = detectWeb(doc, url);
await em.doWeb(doc, url);
}
async function doWeb(doc, url) {
if (detectWeb(doc, url) == 'multiple') {
let items = await Zotero.selectItems(getSearchResults(doc, false));
if (!items) return;
for (let url of Object.keys(items)) {
await scrape(await requestDocument(url));
}
}
else {
await scrape(doc, url);
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.cbc.ca/news/canada/online-groups-pressuring-youth-self-harm-1.7107885",
"items": [
{
"itemType": "newspaperArticle",
"title": "Violent online groups are pressuring youth into harming themselves, authorities warn",
"creators": [
{
"firstName": "Ioanna",
"lastName": "Roumeliotis",
"creatorType": "author"
},
{
"firstName": "Laurence",
"lastName": "Mathieu-Leger",
"creatorType": "author"
},
{
"firstName": "Andrew",
"lastName": "Culbert",
"creatorType": "author"
}
],
"date": "2024-02-09",
"abstractNote": "Authorities in Canada and the U.S. are warning the public about violent online groups that deliberately target vulnerable minors and pressure them into recording or livestreaming self-harm and producing child sexual abuse material.",
"language": "en-CA",
"libraryCatalog": "CBC.ca",
"publicationTitle": "CBC News",
"url": "https://www.cbc.ca/news/canada/online-groups-pressuring-youth-self-harm-1.7107885",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.cbc.ca/sports/hockey/nhl/elias-pettersson-contract-extension-canucks-nhl-1.7132138",
"items": [
{
"itemType": "newspaperArticle",
"title": "Canucks star forward Elias Pettersson signs 8-year contract extension",
"creators": [
{
"firstName": "Nick",
"lastName": "Wells",
"creatorType": "author"
}
],
"date": "2024-03-02",
"abstractNote": "The Vancouver Canucks and star centre Elias Pettersson have agreed to an eight-year contract extension, the team announced Saturday. He is second in team scoring this season with 75 points on 29 goals and 46 assists.",
"language": "en-CA",
"libraryCatalog": "CBC.ca",
"publicationTitle": "CBC Sports",
"url": "https://www.cbc.ca/sports/hockey/nhl/elias-pettersson-contract-extension-canucks-nhl-1.7132138",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.cbc.ca/player/play/2313671747656",
"items": [
{
"itemType": "videoRecording",
"title": "If you get pulled over by police this month in Regina, expect to take a breathalyzer test",
"creators": [],
"date": "2024-03-02",
"abstractNote": "Everyone who gets pulled over for any reason will get a test. SGI and police are telling people about the plan because not everyone is aware of a 2018 federal law that allows it. CBC's Darla Ponace has more on what you need to know about mandatory roadside alcohol tests.",
"language": "en-CA",
"libraryCatalog": "CBC.ca",
"runningTime": "82.849",
"url": "https://www.cbc.ca/player/play/2313671747656",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.cbc.ca/radio/thecurrent/airport-facial-recognition-biometrics-1.7130000",
"items": [
{
"itemType": "newspaperArticle",
"title": "Airports want to scan your face to make travelling easier. Privacy experts caution it's not ready for takeoff",
"creators": [
{
"firstName": "Jason",
"lastName": "Vermes",
"creatorType": "author"
}
],
"date": "2024-03-03",
"abstractNote": "While airlines and airports say facial recognition can make air travel — an often tedious experience — more efficient and seamless, privacy advocates argue the use of biometric data is fraught and open to abuse.",
"language": "en-CA",
"libraryCatalog": "CBC.ca",
"publicationTitle": "CBC Radio",
"url": "https://www.cbc.ca/radio/thecurrent/airport-facial-recognition-biometrics-1.7130000",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.cbc.ca/radio/frequency",
"detectedItemType": false,
"items": []
},
{
"type": "web",
"url": "https://www.cbc.ca/news/politics/trudeau-meloni-pro-palestinian-protesters-toronto-1.7132378",
"items": [
{
"itemType": "newspaperArticle",
"title": "Trudeau's Toronto event with Italy PM Meloni cancelled due to pro-Palestinian protest",
"creators": [
{
"firstName": "Justin",
"lastName": "Li",
"creatorType": "author"
},
{
"firstName": "Christian",
"lastName": "Paas-Lang",
"creatorType": "author"
}
],
"date": "2024-03-03",
"abstractNote": "A Toronto event where Canadian Prime Minister Justin Trudeau was scheduled to host his Italian counterpart was cancelled on Saturday due to security concerns as hundreds of pro-Palestinian protesters gathered outside the venue, a spokesperson for the Prime Minister's Office said.",
"language": "en-CA",
"libraryCatalog": "CBC.ca",
"publicationTitle": "CBC News",
"url": "https://www.cbc.ca/news/politics/trudeau-meloni-pro-palestinian-protesters-toronto-1.7132378",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.cbc.ca/music/canadian-reggae-songs-record-labels-1.7116717",
"items": [
{
"itemType": "newspaperArticle",
"title": "Canadian reggae's past, present and future",
"creators": [
{
"firstName": "Kelsey",
"lastName": "Adams",
"creatorType": "author"
}
],
"date": "2024-02-23",
"abstractNote": "From the 1st recording on Canadian soil to the newcomers pushing the genre forward today.",
"language": "en-CA",
"libraryCatalog": "CBC.ca",
"publicationTitle": "CBC Music",
"url": "https://www.cbc.ca/music/canadian-reggae-songs-record-labels-1.7116717",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.cbc.ca/life/culture/the-best-card-games-to-play-with-a-standard-deck-1.5836447",
"items": [
{
"itemType": "newspaperArticle",
"title": "The best card games to play with a standard deck",
"creators": [
{
"firstName": "Sebastian",
"lastName": "Yūe",
"creatorType": "author"
}
],
"date": "2020-12-10",
"abstractNote": "This list will have you suggesting card night every chance you get!",
"language": "en-CA",
"libraryCatalog": "CBC.ca",
"publicationTitle": "CBC Life",
"url": "https://www.cbc.ca/life/culture/the-best-card-games-to-play-with-a-standard-deck-1.5836447",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.cbc.ca/television/he-landed-a-sitcom-role-on-his-first-audition-i-was-really-hyped-says-scarborough-teen-1.7101522",
"items": [
{
"itemType": "newspaperArticle",
"title": "He landed a sitcom role on his first audition. 'I was really hyped,' says Scarborough teen",
"creators": [
{
"firstName": "Russ",
"lastName": "Martin",
"creatorType": "author"
}
],
"date": "2024-02-05",
"abstractNote": "The new CBC workplace comedy One More Time follows the manager of a second-hand sporting goods shop, DJ, played by comedian D.J. Demers, and the hijinks of his beloved gang of oddball employees. Among the motley crew is Keeran Devkar, a very green first-time associate played by 15-year-old Seran Sathiyaseelan.",
"language": "en-CA",
"libraryCatalog": "CBC.ca",
"publicationTitle": "CBC Television",
"url": "https://www.cbc.ca/television/he-landed-a-sitcom-role-on-his-first-audition-i-was-really-hyped-says-scarborough-teen-1.7101522",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.cbc.ca/search?q=Windows%2011§ion=arts&sortOrder=relevance&media=all",
"items": "multiple"
}
]
/** END TEST CASES **/
100Aurimas Vinckevicius^https?://link\.springer\.com/(search(/page/\d+)?\?|(article|chapter|book|referenceworkentry|protocol|journal|referencework)/.+)/*
SpringerLink Translator
Copyright (C) 2020 Aurimas Vinckevicius and Sebastian Karcher
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
function detectWeb(doc, url) {
var action = getAction(url);
// Z.debug(action)
if (!action) return false;
if (!doc.head || !doc.head.getElementsByTagName('meta').length) {
Z.debug("Springer Link: No head or meta tags");
return false;
}
switch (action) {
case "search":
case "journal":
case "book":
case "referencework":
if (getResultList(doc).length > 0) {
return "multiple";
}
return false;
case "article":
return "journalArticle";
case "chapter":
case "referenceworkentry":
case "protocol":
if (ZU.xpathText(doc, '//meta[@name="citation_conference_title"]/@content')) {
return "conferencePaper";
}
else {
return "bookSection";
}
}
return false;
}
function getAction(url) {
return (url.match(/^https?:\/\/[^/]+\/([^/?#]+)/) || [])[1];
}
function getResultList(doc) {
var results = ZU.xpath(doc,
'//ol[@class="content-item-list"]/li/*[self::h3 or self::h2]/a');
if (!results.length) {
results = ZU.xpath(doc,
'//div[@class="toc"]/ol//div[contains(@class,"toc-item")]/h3/a');
}
if (!results.length) {
results = ZU.xpath(doc,
'//div[@class="book-toc-container"]/ol//div[contains(@class,"content-type-list__meta")]/div/a');
}
if (!results.length) {
results = ZU.xpath(doc, '//div[@class="toc"]/ol//li[contains(@class,"toc-item")]/p[@class="title"]/a');
}
// https://link.springer.com/journal/10344/volumes-and-issues/66-5
if (!results.length) {
results = ZU.xpath(doc, '//li[@class="c-list-group__item"]//h3/a');
}
// e.g. https://link.springer.com/book/10.1007/978-3-031-04248-5 -- Springer uses both h3 and h4 and sometimes
// the h3 link actually points to other volumes, so we're making sure we're in the right li element first
if (!results.length) {
results = doc.querySelectorAll('li[data-test="chapter"] h4.c-card__title > a, li[data-test="chapter"] h3.c-card__title > a');
}
// https://link.springer.com/journal/11192/volumes-and-issues/129-1
if (!results.length) {
results = doc.querySelectorAll('section ol article.c-card-open h3 > a');
}
return results;
}
function doWeb(doc, url) {
var type = detectWeb(doc, url);
if (type == "multiple") {
var list = getResultList(doc);
var items = {};
if (getAction(url) == 'book') {
items[url] = '[Full Book] ' + text(doc, 'header h1');
}
for (var i = 0, n = list.length; i < n; i++) {
items[list[i].href] = list[i].textContent;
}
Zotero.selectItems(items, function (selectedItems) {
if (!selectedItems) return;
for (let i in selectedItems) {
ZU.processDocuments(i, scrape);
}
});
}
else {
scrape(doc, url);
}
}
function complementItem(doc, item) {
var itemType = detectWeb(doc, doc.location.href);
// in case we're missing something, we can try supplementing it from page
if (!item.DOI) {
item.DOI = ZU.xpathText(doc, '//meta[@name="citation_doi"]/@content');
}
if (!item.language) {
item.language = ZU.xpathText(doc, '//meta[@name="citation_language"]/@content');
}
if (!item.publisher) {
item.publisher = ZU.xpathText(doc, '//dd[@id="abstract-about-publisher"]');
}
if (item.publisher && item.place) {
// delete places in publisher's name
// e.g. Springer Berlin Heidelberg
var places = item.place.split(/[\s,;]/);
for (let place of places) {
item.publisher = item.publisher.replace(place, '');
}
}
if (!item.date) {
item.date = ZU.xpathText(doc, '//dd[@id="abstract-about-cover-date"]') || ZU.xpathText(
doc, '//dd[@id="abstract-about-book-chapter-copyright-year"]');
}
if (item.date) {
item.date = ZU.strToISO(item.date);
}
// copyright
if (!item.rights) {
item.rights = ZU.xpathText(doc,
'//dd[@id="abstract-about-book-copyright-holder"]');
var year = ZU.xpathText(doc,
'//dd[@id="abstract-about-book-chapter-copyright-year"]');
if (item.rights && year) {
item.rights = '©' + year + ' ' + item.rights;
}
}
if (itemType == "journalArticle") {
if (!item.ISSN) {
item.ISSN = ZU.xpathText(doc, '//dd[@id="abstract-about-issn" or @id="abstract-about-electronic-issn"]');
}
if (!item.journalAbbreviation || item.publicationTitle == item.journalAbbreviation) {
item.journalAbbreviation = ZU.xpathText(doc, '//meta[@name="citation_journal_abbrev"]/@content');
}
}
if (itemType == 'bookSection' || itemType == "conferencePaper") {
// look for editors
var editors = ZU.xpath(doc, '//ul[@class="editors"]/li[@itemprop="editor"]/a[@class="person"]');
var m = item.creators.length;
for (var i = 0, n = editors.length; i < n; i++) {
var editor = ZU.cleanAuthor(editors[i].textContent.replace(/\s+Ph\.?D\.?/,
''), 'editor');
// make sure we don't already have this person in the list
var haveEditor = false;
for (var j = 0; j < m; j++) {
var creator = item.creators[j];
if (creator.creatorType == "editor" && creator.lastName == editor.lastName) {
// we should also check first name, but this could get
// messy if we only have initials in one case but not
// the other.
haveEditor = true;
break;
}
}
if (!haveEditor) {
item.creators.push(editor);
}
}
if (!item.ISBN) {
item.ISBN = ZU.xpathText(doc, '//dd[@id="abstract-about-book-print-isbn" or @id="abstract-about-book-online-isbn"]')
|| ZU.xpathText(doc, '//span[@id="print-isbn" or @id="electronic-isbn"]');
}
// series/seriesNumber
if (!item.series) {
item.series = ZU.xpathText(doc, '//dd[@id="abstract-about-book-series-title"]')
|| ZU.xpathText(doc, '//div[contains(@class, "ArticleHeader")]//a[contains(@href, "/bookseries/")]')
|| text(doc, '.c-chapter-book-series > a');
}
if (!item.seriesNumber) {
item.seriesNumber = ZU.xpathText(doc, '//dd[@id="abstract-about-book-series-volume"]');
}
}
// add the DOI to extra for non journal articles
if (item.itemType != "journalArticle" && item.itemType != "conferencePaper" && item.DOI) {
item.extra = "DOI: " + item.DOI;
item.DOI = "";
}
// series numbers get mapped to volume; fix this
if (item.volume == item.seriesNumber) {
item.volume = "";
}
// add abstract
var abs = ZU.xpathText(doc, '//div[contains(@class,"abstract-content")][1]');
if (!abs) {
abs = ZU.xpathText(doc, '//section[@class="Abstract" and @lang="en"]');
}
if (abs) item.abstractNote = ZU.trimInternal(abs).replace(/^Abstract[:\s]*/, "");
// add tags
var tags = ZU.xpathText(doc, '//span[@class="Keyword"]');
if (tags && (!item.tags || item.tags.length === 0)) {
item.tags = tags.split(',');
}
tags = doc.querySelectorAll('.c-article-subject-list__subject');
if (tags.length && !item.tags.length) {
item.tags = [...tags].map(el => el.innerText);
}
return item;
}
function scrape(doc, url) {
var DOI = url.match(/\/(10\.[^#?]+)/)[1];
var pdfURL = "/content/pdf/" + encodeURIComponent(DOI) + ".pdf";
// Z.debug("pdfURL: " + pdfURL);
if (getAction(url) == 'book') {
let search = Zotero.loadTranslator('search');
search.setSearch({ DOI });
search.setHandler('translators', (obj, translators) => {
search.setTranslator(translators);
search.setHandler('itemDone', (obj, item) => {
item = complementItem(doc, item);
item.attachments.push({
url: pdfURL,
title: "Full Text PDF",
mimeType: "application/pdf"
});
item.complete();
});
search.translate();
});
search.getTranslators();
return;
}
var risURL = "https://citation-needed.springer.com/v2/references/" + DOI + "?format=refman&flavour=citation";
// Z.debug("risURL" + risURL);
ZU.doGet(risURL, function (text) {
// Z.debug(text)
var translator = Zotero.loadTranslator("import");
translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7");
translator.setString(text);
translator.setHandler("itemDone", function (obj, item) {
item = complementItem(doc, item);
item.attachments.push({
url: pdfURL,
title: "Full Text PDF",
mimeType: "application/pdf"
});
item.complete();
});
translator.translate();
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://link.springer.com/chapter/10.1007/978-3-540-88682-2_1",
"items": [
{
"itemType": "conferencePaper",
"title": "Something Old, Something New, Something Borrowed, Something Blue",
"creators": [
{
"lastName": "Koenderink",
"firstName": "Jan J.",
"creatorType": "author"
},
{
"lastName": "Forsyth",
"firstName": "David",
"creatorType": "editor"
},
{
"lastName": "Torr",
"firstName": "Philip",
"creatorType": "editor"
},
{
"lastName": "Zisserman",
"firstName": "Andrew",
"creatorType": "editor"
}
],
"date": "2008",
"DOI": "10.1007/978-3-540-88682-2_1",
"ISBN": "9783540886822",
"abstractNote": "My first paper of a “Computer Vision” signature (on invariants related to optic flow) dates from 1975. I have published in Computer Vision (next to work in cybernetics, psychology, physics, mathematics and philosophy) till my retirement earlier this year (hence the slightly blue feeling), thus my career roughly covers the history of the field. “Vision” has diverse connotations. The fundamental dichotomy is between “optically guided action” and “visual experience”. The former applies to much of biology and computer vision and involves only concepts from science and engineering (e.g., “inverse optics”), the latter involves intention and meaning and thus additionally involves concepts from psychology and philosophy. David Marr’s notion of “vision” is an uneasy blend of the two: On the one hand the goal is to create a “representation of the scene in front of the eye” (involving intention and meaning), on the other hand the means by which this is attempted are essentially “inverse optics”. Although this has nominally become something of the “Standard Model” of CV, it is actually incoherent. It is the latter notion of “vision” that has always interested me most, mainly because one is still grappling with basic concepts. It has been my aspiration to turn it into science, although in this I failed. Yet much has happened (something old) and is happening now (something new). I will discuss some of the issues that seem crucial to me, mostly illustrated through my own work, though I shamelessly borrow from friends in the CV community where I see fit.",
"language": "en",
"libraryCatalog": "Springer Link",
"pages": "1-1",
"place": "Berlin, Heidelberg",
"proceedingsTitle": "Computer Vision – ECCV 2008",
"publisher": "Springer",
"series": "Lecture Notes in Computer Science",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://link.springer.com/referenceworkentry/10.1007/978-0-387-79061-9_5173",
"items": [
{
"itemType": "bookSection",
"title": "Characterized by Commitment to Something Without Personal Exploration",
"creators": [
{
"lastName": "Goldstein",
"firstName": "Sam",
"creatorType": "editor"
},
{
"lastName": "Naglieri",
"firstName": "Jack A.",
"creatorType": "editor"
}
],
"date": "2011",
"ISBN": "9780387790619",
"bookTitle": "Encyclopedia of Child Behavior and Development",
"extra": "DOI: 10.1007/978-0-387-79061-9_5173",
"language": "en",
"libraryCatalog": "Springer Link",
"pages": "329-329",
"place": "Boston, MA",
"publisher": "Springer US",
"url": "https://doi.org/10.1007/978-0-387-79061-9_5173",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://link.springer.com/protocol/10.1007/978-1-60761-839-3_22",
"items": [
{
"itemType": "bookSection",
"title": "What Do We Know?: Simple Statistical Techniques that Help",
"creators": [
{
"lastName": "Nicholls",
"firstName": "Anthony",
"creatorType": "author"
},
{
"lastName": "Bajorath",
"firstName": "Jürgen",
"creatorType": "editor"
}
],
"date": "2011",
"ISBN": "9781607618393",
"abstractNote": "An understanding of simple statistical techniques is invaluable in science and in life. Despite this, and despite the sophistication of many concerning the methods and algorithms of molecular modeling, statistical analysis is usually rare and often uncompelling. I present here some basic approaches that have proved useful in my own work, along with examples drawn from the field. In particular, the statistics of evaluations of virtual screening are carefully considered.",
"bookTitle": "Chemoinformatics and Computational Chemical Biology",
"extra": "DOI: 10.1007/978-1-60761-839-3_22",
"language": "en",
"libraryCatalog": "Springer Link",
"pages": "531-581",
"place": "Totowa, NJ",
"publisher": "Humana Press",
"series": "Methods in Molecular Biology",
"shortTitle": "What Do We Know?",
"url": "https://doi.org/10.1007/978-1-60761-839-3_22",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "ANOVA"
},
{
"tag": "AUC"
},
{
"tag": "Central Limit Theorem"
},
{
"tag": "Confidence limits"
},
{
"tag": "Correlation"
},
{
"tag": "Enrichment"
},
{
"tag": "Error bars"
},
{
"tag": "Propagation of error"
},
{
"tag": "ROC curves"
},
{
"tag": "Standard deviation"
},
{
"tag": "Statistics"
},
{
"tag": "Student’s t-test"
},
{
"tag": "Variance"
},
{
"tag": "Virtual screening"
},
{
"tag": "logit transform"
},
{
"tag": "p-Values"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://link.springer.com/search?query=zotero",
"items": "multiple"
},
{
"type": "web",
"url": "https://link.springer.com/journal/10922/2/1/page/1",
"items": "multiple"
},
{
"type": "web",
"url": "https://link.springer.com/referencework/10.1007/978-1-84996-169-1?page=1#toc",
"items": "multiple"
},
{
"type": "web",
"url": "https://link.springer.com/book/10.1007/978-3-540-88682-2",
"items": "multiple"
},
{
"type": "web",
"url": "https://link.springer.com/article/10.1007/s10040-009-0439-x",
"items": [
{
"itemType": "journalArticle",
"title": "Tide-induced head fluctuations in a coastal aquifer: effects of the elastic storage and leakage of the submarine outlet-capping",
"creators": [
{
"lastName": "Geng",
"firstName": "Xiaolong",
"creatorType": "author"
},
{
"lastName": "Li",
"firstName": "Hailong",
"creatorType": "author"
},
{
"lastName": "Boufadel",
"firstName": "Michel C.",
"creatorType": "author"
},
{
"lastName": "Liu",
"firstName": "Shuang",
"creatorType": "author"
}
],
"date": "2009-07-01",
"DOI": "10.1007/s10040-009-0439-x",
"ISSN": "1435-0157",
"abstractNote": "This paper considers the tidal head fluctuations in a single coastal confined aquifer which extends under the sea for a certain distance. Its submarine outlet is covered by a silt-layer with properties dissimilar to the aquifer. Recently, Li et al. (2007) gave an analytical solution for such a system which neglected the effect of the elastic storage (specific storage) of the outlet-capping. This article presents an analytical solution which generalizes their work by incorporating the elastic storage of the outlet-capping. It is found that if the outlet-capping is thick enough in the horizontal direction, its elastic storage has a significant enhancing effect on the tidal head fluctuation. Ignoring this elastic storage will lead to significant errors in predicting the relationship of the head fluctuation and the aquifer hydrogeological properties. Quantitative analysis shows the effect of the elastic storage of the outlet-capping on the groundwater head fluctuation. Quantitative conditions are given under which the effect of this elastic storage on the aquifer’s tide-induced head fluctuation is negligible. Li, H.L., Li, G.Y., Chen, J.M., Boufadel, M.C. (2007) Tide-induced head fluctuations in a confined aquifer with sediment covering its outlet at the sea floor. [Fluctuations du niveau piézométrique induites par la marée dans un aquifère captif à décharge sous-marine.] Water Resour. Res 43, doi:10.1029/2005WR004724",
"issue": "5",
"journalAbbreviation": "Hydrogeol J",
"language": "en",
"libraryCatalog": "Springer Link",
"pages": "1289-1296",
"publicationTitle": "Hydrogeology Journal",
"shortTitle": "Tide-induced head fluctuations in a coastal aquifer",
"url": "https://doi.org/10.1007/s10040-009-0439-x",
"volume": "17",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Analytical solutions"
},
{
"tag": "Coastal aquifers"
},
{
"tag": "Elastic storage"
},
{
"tag": "Submarine outlet-capping"
},
{
"tag": "Tidal loading efficiency"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://link.springer.com/chapter/10.1007/0-387-24250-3_4",
"items": [
{
"itemType": "bookSection",
"title": "Whole-Class and Peer Interaction in an Activity of Writing and Revision",
"creators": [
{
"lastName": "Allal",
"firstName": "Linda",
"creatorType": "author"
},
{
"lastName": "Lopez",
"firstName": "Lucie Mottier",
"creatorType": "author"
},
{
"lastName": "Lehraus",
"firstName": "Katia",
"creatorType": "author"
},
{
"lastName": "Forget",
"firstName": "Alexia",
"creatorType": "author"
},
{
"lastName": "Kostouli",
"firstName": "Triantafillia",
"creatorType": "editor"
}
],
"date": "2005",
"ISBN": "9780387242507",
"abstractNote": "The perspective of situated cognition provides a conceptual framework for studying social mediation in activities of text production. The investigation presented here concerns two forms of social mediation: (1) whole-class interactions that prepare the students for drafting and revising their texts; (2) peer interactions occurring when dyads engage in joint revision of their drafts. The data collected in three fifth-grade classrooms include observations of whole-class interactions, recordings of dyadic interactions and classifications of text transformations that students carried out during individual and joint phases of revision. The analyses examine the relationships between qualitative indicators of interaction dynamics and quantitative data on text transformations. The findings show that differences in the whole-class interactions are reflected in the students’ revisions particularly with respect to the degree of rewriting that they undertake, as compared to simple error correction. Although analysis of the dyadic interactions reveals important variations in the dynamics of the exchanges, two general findings emerge. In the large majority of cases, the activity of joint revision leads to a substantial increase in the number of text transformations, beyond those made by each author individually. Even in cases where no new transformations occur, the authors engage actively in interaction about revision (e.g., they propose revisions of the other student’s text, explain revisions made individually to their own text, argue against proposals of the other student, etc.). Implications of the results for future research on writing instruction are discussed.",
"bookTitle": "Writing in Context(s): Textual Practices and Learning Processes in Sociocultural Settings",
"extra": "DOI: 10.1007/0-387-24250-3_4",
"language": "en",
"libraryCatalog": "Springer Link",
"pages": "69-91",
"place": "Boston, MA",
"publisher": "Springer US",
"series": "Studies in Writing",
"url": "https://doi.org/10.1007/0-387-24250-3_4",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Social mediation"
},
{
"tag": "peer interaction"
},
{
"tag": "revision"
},
{
"tag": "whole-class interaction"
},
{
"tag": "writing"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://link.springer.com/journal/10344/volumes-and-issues/66-5",
"items": "multiple"
},
{
"type": "web",
"url": "https://link.springer.com/book/10.1007/978-3-031-04248-5",
"items": "multiple"
},
{
"type": "web",
"url": "https://link.springer.com/journal/11192/volumes-and-issues/129-1",
"items": "multiple"
},
{
"type": "web",
"url": "https://link.springer.com/journal/10473/volumes-and-issues/44-3",
"items": "multiple"
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://op\.europa\.eu//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/publication-detail/') && doc.querySelector('.col-doi')) {
return "book";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.search-results-items a.documentDetailLink');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.innerText);
if (!href || !title || !href.includes('/publication-detail/')) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc) {
// we would ideally just grab the "Metadata RDF" file here, but it doesn't
// give us RDF that Zotero can do anything with. the official metadata
// service (opac.publications.europa.eu) doesn't seem especially reliable.
// so we'll instead try ISBN and DOI.
let language = doc.location.pathname.split('/')[1];
let pdfLink = doc.querySelector(`a.download[data-language="${language}"]`)
|| doc.querySelector(`a.download[data-language="en"]`)
|| doc.querySelector(`a.download`);
let search = Zotero.loadTranslator("search");
let DOI = ZU.cleanDOI(text(doc, '.col-doi .detail-value'));
let item;
search.setHandler("translators", function (obj, translators) {
search.setTranslator(translators);
search.setHandler("itemDone", function (obj, lookupItem) {
item = lookupItem;
item.creators = [...doc.querySelectorAll('span[itemprop="author"]')]
.map((span) => {
let isIndividual = span.closest('.list-item-privateAuthors');
if (isIndividual) {
return ZU.cleanAuthor(span.innerText, 'author', true);
}
else {
return {
lastName: span.innerText,
creatorType: 'author',
fieldMode: 1
};
}
});
item.title = item.title.replace(/[.,:;]+$/, '');
item.ISBN = text('.col-isbn .detail-value');
item.libraryCatalog = item.publisher = text(doc,
'.site-main-logo span.screen-readers-only'); // localized
// sometimes there are separate catalogue numbers for the PDF and
// paper versions, but grabbing the first (PDF) is fine; either one
// brings up the same document in the catalog.
item.callNumber = text(doc, '.col-catalogueNumber .detail-value');
item.abstractNote = text('.visible-description')
+ ' ' + text('.show-more-description');
delete item.place;
if (pdfLink) {
item.attachments.push({
url: pdfLink.dataset.uri || pdfLink.href,
title: `Full Text PDF (${pdfLink.dataset.language})`,
mimeType: "application/pdf"
});
}
item.tags = [...doc.querySelectorAll('#document-info .list-item-themes a, #document-info .list-item-subject a')]
.map(link => ({ tag: link.textContent.trim() }));
});
search.translate();
});
search.setHandler("done", function () {
item.complete();
});
search.setSearch({ DOI });
search.getTranslators();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://op.europa.eu/en/publication-detail/-/publication/670d0ea7-5f85-11eb-b487-01aa75ed71a1/language-en/format-PDF/source-210185261",
"items": [
{
"itemType": "book",
"title": "Housing affordability in Ireland",
"creators": [
{
"lastName": "Directorate-General for Economic and Financial Affairs (European Commission)",
"creatorType": "author",
"fieldMode": 1
},
{
"firstName": "Maria Jose",
"lastName": "Doval Tedin",
"creatorType": "author"
},
{
"firstName": "Violaine",
"lastName": "Faubert",
"creatorType": "author"
}
],
"date": "2020",
"ISBN": "9789279773907",
"abstractNote": "This Economic Brief analyses the main drivers of housing prices in recent years and examines policy options to improve housing affordability. A decade of under-investment following a property crash in 2008 led to a decrease in the housing stock per capita in Ireland. Its composition also became inadequate to meet the increased demand for urban apartments. As a result of persistent housing shortages, house prices grew faster than household income and home affordability worsened, especially for low-income tenants and homebuyers living in and around Dublin. Macroprudential measures have helped curb house price inflation in the owner-occupied sector since 2018. By contrast, prices in the rental sector continued growing to levels well above those prior the 2008 crisis. The evolution of house prices after the COVID-19 pandemic will depend on the speed of the economic recovery. Lower house prices and uncertainty may reduce housing construction and worsen affordability. Increasing housing supply by scaling-up the construction of social housing, reducing the restrictiveness of rent legislation and the relatively high delivery cost of housing could improve affordability. The latter might entail curbing land price inflation, increasing the relatively low productivity of the construction sector and addressing skills shortages. In case of a sluggish recovery following the COVID-19 pandemic, this may be combined with a temporary use of housing subsidies so as to help stabilise house prices and avoid risks in the financial markets.",
"callNumber": "KC-BE-18-029-EN-N",
"language": "eng",
"libraryCatalog": "Publications Office of the European Union",
"publisher": "Publications Office of the European Union",
"url": "https://data.europa.eu/doi/10.2765/528723",
"attachments": [
{
"title": "Full Text PDF (en)",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Economy — Finance"
},
{
"tag": "Ireland"
},
{
"tag": "financial risk"
},
{
"tag": "housing"
},
{
"tag": "prices"
},
{
"tag": "property leasing"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://op.europa.eu/en/publication-detail/-/publication/fe6641fd-93fb-11ea-aac4-01aa75ed71a1/language-en",
"items": [
{
"itemType": "book",
"title": "70th Anniversary of the Schuman Declaration: from the declaration of 9 May 1950 to the European Union",
"creators": [
{
"lastName": "Representation in Luxembourg (European Commission)",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "2020",
"ISBN": "9789276181743",
"abstractNote": "The declaration made on 9 May 1950 by Robert Schuman (then French Foreign Minister) truly changed the course of European history. The power of his vision – inspired by his discussions with Jean Monnet – paved the way for a united Europe: an open-ended and constantly evolving process.",
"callNumber": "ID-03-20-273-EN-N",
"language": "eng",
"libraryCatalog": "Publications Office of the European Union",
"publisher": "Publications Office of the European Union",
"shortTitle": "70th Anniversary of the Schuman Declaration",
"url": "https://data.europa.eu/doi/10.2775/777816",
"attachments": [
{
"title": "Full Text PDF (en)",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Construction of Europe"
},
{
"tag": "history of Europe"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://op.europa.eu/sl/publication-detail/-/publication/2c30cce5-3660-11ee-bbbf-01aa75ed71a1",
"items": [
{
"itemType": "book",
"title": "Osnove prava Evropske unije",
"creators": [
{
"lastName": "Generalni direktorat za komuniciranje (Evropska komisija)",
"creatorType": "author",
"fieldMode": 1
},
{
"firstName": "Klaus-Dieter",
"lastName": "Borchardt",
"creatorType": "author"
}
],
"date": "2023",
"ISBN": "9789276101437",
"abstractNote": "Pravni red Evropske unije zaznamuje naše politično življenje in družbo. Posamezniki niso več le državljani svoje države, meščani ali občani; so tudi državljani EU. S priročnikom Osnove prava Evropske unije je prof. dr. Klaus-Dieter Borchardt ustvaril referenčno delo, v katerem so opisani tudi izvori evropskega projekta in njegov nadaljnji razvoj v pravni red. Priročnik je namenjen vsem bralkam in bralcem, ki se želijo seznaniti s strukturo Evropske unije in nosilnimi stebri evropskega pravnega reda.",
"callNumber": "NA-03-19-655-SL-N",
"language": "slv",
"libraryCatalog": "Urad za publikacije Evropske unije",
"publisher": "Urad za publikacije Evropske unije",
"url": "https://data.europa.eu/doi/10.2775/100316",
"attachments": [
{
"title": "Full Text PDF (sl)",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Evropa"
},
{
"tag": "Zakonodaja in pravosodje"
},
{
"tag": "evropsko sodelovanje"
},
{
"tag": "institucija EU"
},
{
"tag": "organ EU"
},
{
"tag": "poglabljanje Evropske unije"
},
{
"tag": "pravni red EU"
},
{
"tag": "pravo EU"
},
{
"tag": "pravo EU – nacionalno pravo"
},
{
"tag": "pristojnost EU"
},
{
"tag": "zgodovina Evrope"
},
{
"tag": "širitev Evropske unije"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://op.europa.eu/en/publication-detail/-/publication/1c4561c7-7c54-11ee-99ba-01aa75ed71a1",
"items": [
{
"itemType": "book",
"title": "Guidelines on biodiversity-friendly afforestation, reforestation and tree planting",
"creators": [
{
"lastName": "Directorate-General for Environment (European Commission)",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "2023",
"ISBN": "9789268001103",
"abstractNote": "Under the European Green Deal, the EU’s Biodiversity Strategy for 2030 tackles the protection and restoration of nature by making a number of specific commitments and setting several targets. Biodiversity-friendly practices for enhancing the quantity and quality of EU forests are also being promoted. The Biodiversity Strategy announced, among other objectives, guidelines on biodiversity-friendly afforestation, reforestation and tree planting. Among other things, these will contribute to the pledge to plant at least 3 billion additional trees in the EU by 2030, in full compliance with ecological principles. A roadmap to implement this pledge is included in the new EU Forest Strategy that was adopted in July 2021. In addition, these guidelines support the general EU agenda on biodiversity by contributing to our global commitments under the UN Convention on Biological Diversity. They would also support other key initiatives under the European Green Deal at implementation level, in particular the Nature Restoration Law, the Certification Framework for Carbon Removals and the Soil Mission.",
"callNumber": "KH-07-23-101-EN-N",
"language": "eng",
"libraryCatalog": "Publications Office of the European Union",
"publisher": "Publications Office of the European Union",
"url": "https://data.europa.eu/doi/10.2779/731",
"attachments": [
{
"title": "Full Text PDF (en)",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "EU strategy"
},
{
"tag": "Environment — Ecology"
},
{
"tag": "European forestry policy"
},
{
"tag": "Forestry"
},
{
"tag": "adaptation to climate change"
},
{
"tag": "afforestation"
},
{
"tag": "agroforestry"
},
{
"tag": "biodiversity"
},
{
"tag": "conservation of resources"
},
{
"tag": "financing"
},
{
"tag": "nature-based solution"
},
{
"tag": "sustainable forest management"
},
{
"tag": "terrestrial ecosystem"
},
{
"tag": "town planning"
},
{
"tag": "tree"
},
{
"tag": "urban area"
},
{
"tag": "user guide"
},
{
"tag": "wooded area"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://op.europa.eu/en/search-results?p_p_id=eu_europa_publications_portlet_search_executor_SearchExecutorPortlet_INSTANCE_q8EzsBteHybf&p_p_lifecycle=1&p_p_state=normal&queryText=test&facet.collection=EUPub&startRow=1&resultsPerPage=10&SEARCH_TYPE=SIMPLE",
"items": "multiple"
},
{
"type": "web",
"url": "https://op.europa.eu/en/publication-detail/-/publication/b5a7c9c6-4e01-11ee-9220-01aa75ed71a1/language-en/format-PDF/source-309009057",
"items": [
{
"itemType": "book",
"title": "The road to Paris: stress testing the transition towards a net zero economy : the energy transition through the lens of the second ECB economy wide climate stress test",
"creators": [
{
"lastName": "European Central Bank",
"creatorType": "author",
"fieldMode": 1
},
{
"firstName": "Tina",
"lastName": "Emambakhsh",
"creatorType": "author"
},
{
"firstName": "Maximilian",
"lastName": "Fuchs",
"creatorType": "author"
},
{
"firstName": "Simon",
"lastName": "Kördel",
"creatorType": "author"
},
{
"firstName": "Charalampos",
"lastName": "Kouratzoglou",
"creatorType": "author"
},
{
"firstName": "Chiara",
"lastName": "Lelli",
"creatorType": "author"
},
{
"firstName": "Riccardo",
"lastName": "Pizzeghello",
"creatorType": "author"
},
{
"firstName": "Carmelo",
"lastName": "Salleo",
"creatorType": "author"
},
{
"firstName": "Martina",
"lastName": "Spaggiari",
"creatorType": "author"
}
],
"date": "2023",
"ISBN": "9789289961578",
"abstractNote": "The transition to a carbon-neutral economy is necessary to limit the negative impact of climate change and has become one of the world’s most urgent priorities. This paper assesses the impact of three potential transition pathways, differing in the timing and level of ambition of emission reductions, and quantifies the associated investment needs, economic costs and financial risks for corporates, households and financial institutions in the euro area. Building on the first ECB top-down, economy-wide climate stress test, this paper contributes to the field of climate stress testing by introducing three key innovations. First, the design of three short-term transition scenarios that combine the transition paths developed by the Network for Greening the Financial System (NGFS) with macroeconomic projections that account for the latest energy-related developments. Second, the introduction of granular sectoral dynamics and energy-specific considerations by country relevant to transition risk. Finally, this paper provides a comprehensive analysis of the impact of transition risk on the euro area private sector and on the financial system, using a granular dataset that combines climate, energy-related and financial information for millions of firms within the euro area credit register and securities database, and country-level data on households. By comparing different transition scenarios, the results of the exercise show that acting immediately and decisively would provide significant benefits for the euro area economy and financial system, not only by maintaining the optimal net-zero emissions path (and therefore limiting the physical impact of climate change), but also by limiting financial risk. An accelerated transition to a carbon-neutral economy would be helpful to contain risks for financial institutions and would not generate financial stability concerns for the euro area, provided that firms and households could finance their green investments in an orderly manner. However, the heterogeneous results across economic sectors and banks suggest that more careful monitoring of certain entities and subsets of credit exposures will be required during the transition process.",
"callNumber": "QB-AQ-23-019-EN-N",
"language": "eng",
"libraryCatalog": "Publications Office of the European Union",
"publisher": "Publications Office of the European Union",
"shortTitle": "The road to Paris",
"url": "https://data.europa.eu/doi/10.2866/49649",
"attachments": [
{
"title": "Full Text PDF (en)",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Economy — Finance"
},
{
"tag": "European Central Bank"
},
{
"tag": "banking"
},
{
"tag": "carbon neutrality"
},
{
"tag": "corporate finance"
},
{
"tag": "credit"
},
{
"tag": "economic transition"
},
{
"tag": "energy transition"
},
{
"tag": "euro area"
},
{
"tag": "financial institution"
},
{
"tag": "financial risk"
},
{
"tag": "financial stress test"
},
{
"tag": "foresight"
},
{
"tag": "household"
},
{
"tag": "reduction of gas emissions"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://(www\.)?taylorfrancis\.com/(books|chapters|search)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
const FIELDS = {
Edition: 'edition',
'First Published': 'date',
'eBook Published': 'date',
Imprint: 'publisher',
Pages: 'numPages',
DOI: 'extra',
'eBook ISBN': 'ISBN',
'Pub. Location': 'place'
};
function detectWeb(doc, url) {
if (url.includes('/chapters/')) {
return "bookSection";
}
if (url.includes('/books/')) {
return "book";
}
if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('search-results-product > a');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(text(row, 'h1'));
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
let itemType = detectWeb(doc, url);
if (itemType == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url, itemType);
}
}
function scrape(doc, url, itemType) {
if (!itemType) {
itemType = detectWeb(doc, url);
}
let item = new Zotero.Item(itemType);
item.title = text(doc, 'h1.product-banner-title');
item.libraryCatalog = '';
item.extra = '';
let subtitle = text(doc, '.product-banner-subtitle');
if (subtitle) {
item.title += ": " + subtitle;
}
if (itemType == 'bookSection') {
item.bookTitle = text(doc, 'a.product-book-link');
}
for (let creator of text(doc, '.product-banner-author-name').split(",")) {
let creatorType = text(doc, '.product-banner-author').includes('Edited')
? 'editor'
: 'author';
item.creators.push(ZU.cleanAuthor(creator, creatorType, false));
}
for (let row of doc.querySelectorAll('product-more-details .display-row, shared-lib-product-more-details .display-row')) {
let label = text(row, 'span:first-child');
let value = text(row, 'span:last-child');
let field = FIELDS[label];
if (field) {
if (field == 'extra') {
if (label == "DOI") {
value = ZU.cleanDOI(value);
}
item.extra += `${label}: ${value}\n`;
}
else if (field == 'edition') {
item[field] = cleanEdition(value);
}
else if (field == 'date') {
item[field] = ZU.strToISO(value);
}
else {
item[field] = value;
}
}
}
item.abstractNote = text(doc, '#collapseContent') || attr(doc, 'meta[name="description"]', 'content');
if (doc.cookie && text(doc, '#product-detail-page-state')) {
let apiId = JSON.parse(
doc.getElementById('product-detail-page-state').textContent
.replace(/&q;/g, '"')
).product._id;
let tokenRow = doc.cookie
.split('; ')
.find(row => row.startsWith('_token='));
if (!tokenRow) {
// in order to pull a PDF, the user has to have visited the site in
// their browser before. it sets a token cookie client-side.
// it's alright if we can't find it - we just bail out early without
// getting the PDF.
item.complete();
return;
}
let token = tokenRow.split('=')[1];
ZU.doGet(`https://api.taylorfrancis.com/v4/content/${apiId}?apiVersion=4.0.1&filenamePrefix=${item.ISBN}&render=false`,
function (respText, xhr) {
// the request might fail if we don't have PDF access
// but that's alright, everything else worked
// so we treat every status as a success (last arg to doGet)
// but only try to fetch the attachment if we got 200 OK
if (xhr.status == 200) {
let resp = JSON.parse(respText);
for (let contentObject of resp) {
if (contentObject.type == 'webpdf'
|| contentObject.type == 'chapterpdf') {
item.attachments.push({
title: "Full Text PDF",
mimeType: "application/pdf",
url: contentObject.location
});
break;
}
}
}
item.complete();
}, null, null, { Authorization: 'idtoken ' + token }, false);
}
else {
item.complete();
}
}
function cleanEdition(text) {
const ordinals = {
first: "1",
second: "2",
third: "3",
fourth: "4",
fifth: "5",
sixth: "6",
seventh: "7",
eighth: "8",
ninth: "9",
tenth: "10"
};
text = ZU.trimInternal(text);
// this somewhat complicated regex tries to isolate the number (spelled out
// or not) and make sure that it isn't followed by any extra info
let matches = text
.match(/^(?:(?:([0-9]+)(?:st|nd|rd|th)?)|(first|second|third|fourth|fifth|sixth|seventh|eighth|ninth|tenth))(?:\s?ed?\.?|\sedition)?$/i);
if (matches) {
let edition = matches[1] || matches[2];
edition = ordinals[edition.toLowerCase()] || edition;
return edition == "1" ? null : edition;
}
else {
return text;
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.taylorfrancis.com/books/edit/10.1201/9781315120621/lubricant-additives-leslie-rudnick",
"items": [
{
"itemType": "book",
"title": "Lubricant Additives: Chemistry and Applications",
"creators": [
{
"firstName": "Leslie R.",
"lastName": "Rudnick",
"creatorType": "editor"
}
],
"date": "2017-06-29",
"ISBN": "9781315120621",
"abstractNote": "This indispensable book describes lubricant additives, their synthesis, chemistry, and mode of action. All important areas of application are covered, detailing which lubricants are needed for a particular application. Laboratory and field performance data for each application is provided and the design of cost-effective, environmentally friendly technologies is fully explored. This edition includes new chapters on chlorohydrocarbons, foaming chemistry and physics, antifoams for nonaqueous lubricants, hydrogenated styrene–diene viscosity modifiers, alkylated aromatics, and the impact of REACh and GHS on the lubricant industry.",
"edition": "3",
"extra": "DOI: 10.1201/9781315120621",
"numPages": "722",
"place": "Boca Raton",
"publisher": "CRC Press",
"shortTitle": "Lubricant Additives",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.taylorfrancis.com/books/mono/10.1201/9781003009085/application-nanomaterials-chemical-sensors-biosensors-jayeeta-chattopadhyay-nimmy-srivastava",
"items": [
{
"itemType": "book",
"title": "Application of Nanomaterials in Chemical Sensors and Biosensors",
"creators": [
{
"firstName": "Jayeeta",
"lastName": "Chattopadhyay",
"creatorType": "author"
},
{
"firstName": "Nimmy",
"lastName": "Srivastava",
"creatorType": "author"
}
],
"date": "2021-07-23",
"ISBN": "9781003009085",
"abstractNote": "Recent advances in nanotechnology has led the nanomaterials into the realm of sensing applications. This descriptive book utilizes a multi-disciplinary approach to provide extensive information about sensors and elucidates the impact of nanotechnology on development of chemical and biosensors for diversified applications. The main focus of this book is not only the inclusion of various research works, which have already been reported in literature, but also to make a potential conclusion about the mechanism behind this. This book will serve as an invaluable tool for both frontline researchers and academicians to work towards the future development of nanotechnology in sensing devices.",
"extra": "DOI: 10.1201/9781003009085",
"numPages": "174",
"place": "Boca Raton",
"publisher": "CRC Press",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.taylorfrancis.com/chapters/mono/10.1201/9781003009085-3/nanomaterials-heavy-metal-sensors-water-jayeeta-chattopadhyay-nimmy-srivastava",
"items": [
{
"itemType": "bookSection",
"title": "Nanomaterials as Heavy Metal Sensors in Water",
"creators": [
{
"firstName": "Jayeeta",
"lastName": "Chattopadhyay",
"creatorType": "author"
},
{
"firstName": "Nimmy",
"lastName": "Srivastava",
"creatorType": "author"
}
],
"date": "2021",
"ISBN": "9781003009085",
"abstractNote": "The major environmental threats to human beings are being introduced through heavy metal ions generation, which can be biodegraded easily. Primarily, heavy metals are released in an anthropogenic way into the natural waters, which further cause a global epidemic through the release of wastewater, river water, tap water, soil, food and many organisms. Chemical sensors have become very popular in on-site detection of multiple heavy metals, especially nanomaterials-based sensors create huge attention due to their large surface area, high catalytic efficiency, greater adsorption capacity and high surface reactivity. This chapter mainly emphasizes the electrochemical sensors, fluorescent sensors, surface-enhanced Raman spectroscopy sensors, plasmonic sensors, etc. Carbon nanomaterials have become extremely popular as electrochemical sensors in the detection of heavy metals in the form of carbon nanotubes, graphene, graphene oxide and carbon nanofibers.",
"bookTitle": "Application of Nanomaterials in Chemical Sensors and Biosensors",
"publisher": "CRC Press",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.taylorfrancis.com/search?key=california",
"items": "multiple"
}
]
/** END TEST CASES **/
100Laurence Stevenshttps?://(www\.)?independent\.co\.uk/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2024 Laurence Stevens
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, _url) {
for (let json of doc.querySelectorAll('script[type="application/ld+json"]')) {
let metadata = JSON.parse(json.textContent);
// this can be order sensitive, all Video Articles are News Articles but not all News Articles are Video Articles
if (metadata.page_type === "Video Article") {
return "videoRecording";
}
if (metadata["@type"] === "NewsArticle") {
return "newspaperArticle";
}
}
return false;
}
async function doWeb(doc, url) {
await scrape(doc, url);
}
async function scrape(doc, url) {
const translator = Zotero.loadTranslator('web');
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48'); // Embedded Metadata (EM)
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) { // corrections to EM
item.publicationTitle = "The Independent";
let linkedData = JSON.parse(ZU.xpathText(doc, '//script[@type="application/ld+json"][3]'));
if (linkedData) {
if (linkedData.headline) item.title = linkedData.headline;
if (linkedData.description) item.abstractNote = linkedData.description;
if (linkedData.datePublished) item.date = linkedData.datePublished;
if (linkedData.author.name) item.creators = [ZU.cleanAuthor(linkedData.author.name, 'author')];
}
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.itemType = detectWeb(doc, url) || "newspaperArticle";
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.independent.co.uk/sport/football/everton-tottenham-result-final-score-richarlison-b2489969.html",
"items": [
{
"itemType": "newspaperArticle",
"title": "Everton v Tottenham result: The Pep Guardiola lesson behind the Toffees’ comeback",
"creators": [
{
"firstName": "Richard",
"lastName": "Jolly",
"creatorType": "author"
}
],
"date": "2024-02-03T16:10:05.000Z",
"abstractNote": "Everton 2-2 Tottenham: Richarlison’s double was erased by two set-pieces to salvage a valuable point for the Toffees",
"language": "en",
"libraryCatalog": "www.independent.co.uk",
"publicationTitle": "The Independent",
"section": "Sport",
"shortTitle": "Everton v Tottenham result",
"url": "https://www.independent.co.uk/sport/football/everton-tottenham-result-final-score-richarlison-b2489969.html",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.independent.co.uk/independentpremium/lifestyle/working-from-home-health-wfh-b2493645.html",
"items": [
{
"itemType": "newspaperArticle",
"title": "What working from home is really doing to your health",
"creators": [
{
"firstName": "Anna",
"lastName": "Magee",
"creatorType": "author"
}
],
"date": "2024-02-12T06:00:00.000Z",
"abstractNote": "From calorie intake to our mental and physical health, new ways of remote and hybrid working are having some profound effects on our wellness. Anna Magee looks at the latest studies and speaks with health specialists to find out how we can make it work best for our bodies and minds",
"language": "en",
"libraryCatalog": "www.independent.co.uk",
"publicationTitle": "The Independent",
"section": "Independent Premium",
"url": "https://www.independent.co.uk/independentpremium/lifestyle/working-from-home-health-wfh-b2493645.html",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.independent.co.uk/tv/news/missing-florida-girl-police-rescue-b2504518.html",
"items": [
{
"itemType": "videoRecording",
"title": "Missing five-year-old girl’s touching words to police as she is rescued from Florida swamp",
"creators": [
{
"firstName": "Lucy",
"lastName": "Leeson",
"creatorType": "author"
}
],
"date": "2024-02-29T13:07:09.000Z",
"abstractNote": "This is the moment a missing five-year-old girl who wandered into woods in Florida is rescued by police. The Hillsborough County Sheriff's Office Aviation Unit used thermal imaging to locate the girl walking through a dense wooded area in Tampa on Monday evening (26 February). She was heading towards a body of water, and aviation guided deputies to find her. The girl throws her hands up in the air when she sees the officers and asks “Are you going to get me out of the water?”. The officer then scoops her up and carries her out of the water to safety.",
"language": "en",
"libraryCatalog": "www.independent.co.uk",
"url": "https://www.independent.co.uk/tv/news/missing-florida-girl-police-rescue-b2504518.html",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://[^./]+\.frontiersin\.org//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
// NOTE: Most of the article URLs are DOI-based; see
// https://helpcenter.frontiersin.org/s/article/Article-URLs-and-File-Formats
// We don't use DOI translator directly, because for new articles the
// resolution may not be ready yet, and because 3rd-party requests to doi.org
// is unnecessary -- the Frontiers site has everything we need.
const ARTICLE_BASEURL = "https://www.frontiersin.org/articles";
const SEARCH_PAGE_RE = /^https:\/\/[^/]+\/search([?#].*)?$/;
function detectWeb(doc, url) {
if (doc.querySelector('meta[name^="citation_"]')) {
return "journalArticle";
}
if (SEARCH_PAGE_RE.test(url)) {
// For live Ajax search filtering. NOTE that Z.monitorDOMChanges() can
// only be called from detectWeb().
let liveSearchElem = doc.querySelector("app-root");
if (liveSearchElem) {
Z.monitorDOMChanges(liveSearchElem);
}
return getArticleSearch(doc, true) && "multiple";
}
else {
return getListing(doc, true) && "multiple";
}
}
function getSearchResults(doc, checkOnly) {
if (SEARCH_PAGE_RE.test(doc.location.href)) {
return getArticleSearch(doc, checkOnly);
}
else {
return getListing(doc, checkOnly);
}
}
function getArticleSearch(doc, checkOnly) {
// search results doesn't contain article links in the typical format
// (DOI-based). Only articleID in some element attribute values. But the
// site redirects '/articles/(articleID)' to the DOI-based article URL.
var items = {};
var found = false;
// "top results" and "articles" panels respectively
var rows = doc.querySelectorAll('a[data-test-id^="article_navigate_"], li[data-test-id^="topresults_article_"]');
for (let row of rows) {
let articleIDMatch = row.dataset.testId.match(/_(\d+)$/);
if (!articleIDMatch) continue;
let articleID = articleIDMatch[1];
let title = text(row, ".title");
if (!title) continue;
if (checkOnly) return true;
found = true;
items[articleID] = title;
}
return found ? items : false;
}
function getListing(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.article-card, .CardArticle > a');
for (let row of rows) {
let doi = row.href && getDOI(row.href);
let title = text(row, "h1, h3"); // issue/topic listing, respectively
if (!title) {
title = ZU.trimInternal(row.textContent);
}
if (!doi || !title) continue;
if (checkOnly) return true;
found = true;
items[doi] = title;
}
return found ? items : false;
}
async function doWeb(doc, url) {
let supplementOpts = { attach: false, asLink: false };
if (Z.getHiddenPref) {
supplementOpts.attach = Z.getHiddenPref("attachSupplementary");
supplementOpts.asLink = Z.getHiddenPref("supplementaryAsLink");
}
if (detectWeb(doc, url) == 'multiple') {
let items = await Zotero.selectItems(getSearchResults(doc, false));
if (!items) return;
for (let id of Object.keys(items)) {
// The URL may be in "/article/nnnn.." rather than DOI-based (from
// search results).
if (/^10\.\d{4,}\/.+/.test(id)) { // id is DOI
await scrape(null, id/* doi */, supplementOpts);
}
else { // id is articleID
// take the redirect
let articleDoc = await requestDocument(`${ARTICLE_BASEURL}/${id}`);
await scrape(articleDoc, getDOI(articleDoc.location.href),
supplementOpts, id/* articleID */);
}
}
}
else {
await scrape(doc, getDOI(url), supplementOpts);
}
}
async function scrape(doc, doi, supplementOpts, articleID) {
let supplements = [];
if (supplementOpts.attach) {
// If we need supplements, we need the articleID (string of numbers) to
// construct the URL for the JSON article-info file containing the
// supplement names and URLs. articleID may already be there, or it may
// have to be scraped from the doc
if (!articleID) {
if (!doc) {
doc = await requestDocument(`${ARTICLE_BASEURL}/${doi}/full`);
}
articleID = getArticleID(doc);
}
// Skip the fetch of supplement info JSON (although lightweight) if doc
// is available but there's no supplement button on the page. Avoid the
// "#supplementary_view" selector because it's a duplicated element id
// (the page is malformed).
if (articleID
&& (!doc || doc.querySelector(".btn-open-supplemental"))) {
supplements = await getSupplements(articleID, supplementOpts.asLink);
}
}
if (doc) {
await translateEM(doc, supplements);
}
else {
await translateBibTeX(doi, supplements);
}
}
async function translateEM(doc, supplements) {
Z.debug("Frontiers: translating using Embedded Metadata");
let translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', (_obj, item) => {
delete item.pages; // from meta citation_firstpage, not a page number
item.libraryCatalog = "Frontiers";
finalizeItem(item, getDOI(doc.location.href), supplements);
});
let em = await translator.getTranslatorObject();
await em.doWeb(doc, doc.location.href);
}
async function translateBibTeX(doi, supplements) {
Z.debug("Frontiers: translating using bibTeX");
let bibText = await requestText(`${ARTICLE_BASEURL}/${doi}/bibTex`);
let translator = Zotero.loadTranslator("import");
translator.setTranslator('9cb70025-a888-4a29-a210-93ec52da40d4'); // bibTeX
translator.setString(bibText);
translator.setHandler('itemDone', (_obj, item) => {
finalizeItem(item, doi, supplements);
});
await translator.translate();
}
function finalizeItem(item, doi, supplements) {
if (item.date) {
item.date = ZU.strToISO(item.date);
}
item.attachments = []; // delete EM snapshot if any; redundant with PDF
if (doi) {
item.attachments.push({
title: 'Full Text PDF',
url: `${ARTICLE_BASEURL}/${doi}/pdf`,
mimeType: "application/pdf"
});
}
item.attachments.push(...supplements);
item.complete();
}
function getDOI(url) {
let m = url.match(/https:\/\/[^/]+\.frontiersin\.org\/articles?\/(10\.\d{4,}\/[^/]+)/);
return m && m[1];
}
function getArticleID(doc) {
return attr(doc, "meta[name='citation_firstpage']", "content");
}
var MIME_TYPES = {
txt: 'text/plain',
csv: 'text/csv',
bz2: 'application/x-bzip2',
gz: 'application/gzip',
zip: 'application/zip',
pdf: 'application/pdf',
doc: 'application/msword',
docx: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
xls: 'application/vnd.ms-excel',
xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
};
async function getSupplements(articleID, asLink) {
let infoObj = await requestJSON(`${ARTICLE_BASEURL}/getsupplementaryfilesbyarticleid?articleid=${encodeURIComponent(articleID)}&ispublishedv2=false`);
let attachments = [];
let fileInfoArray;
if (infoObj && infoObj.SupplimentalFileDetails
&& (fileInfoArray = infoObj.SupplimentalFileDetails.FileDetails)) {
for (let i = 0; i < fileInfoArray.length; i++) {
let fileInfo = fileInfoArray[i];
let url = fileInfo.FileDownloadUrl;
if (!url) continue;
let fileName = fileInfo.FileName;
let fileExt = fileName.split(".").pop();
if (fileExt) {
fileExt = fileExt.toLowerCase();
}
let mimeType = MIME_TYPES[fileExt];
// Save a link as attachment if hidden pref says so, or file
// mimeType unknown
let attachment = {
title: fileName ? `Supplement - ${fileName}` : `Supplement ${i + 1}`,
url,
snapshot: !asLink && Boolean(mimeType),
};
if (mimeType) {
attachment.mimeType = mimeType;
}
attachments.push(attachment);
}
}
return attachments;
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.frontiersin.org/articles/10.3389/fpsyg.2011.00326/full",
"items": [
{
"itemType": "journalArticle",
"title": "What are the Visual Features Underlying Rapid Object Recognition?",
"creators": [
{
"firstName": "Sébastien M.",
"lastName": "Crouzet",
"creatorType": "author"
},
{
"firstName": "Thomas",
"lastName": "Serre",
"creatorType": "author"
}
],
"date": "2011-11-15",
"DOI": "10.3389/fpsyg.2011.00326",
"ISSN": "1664-1078",
"abstractNote": "Research progress in machine vision has been very significant in recent years. Robust face detection and identification algorithms are already readily available to consumers, and modern computer vision algorithms for generic object recognition are now coping with the richness and complexity of natural visual scenes. Unlike early vision models of object recognition that emphasized the role of figure-ground segmentation and spatial information between parts, recent successful approaches are based on the computation of loose collections of image features without prior segmentation or any explicit encoding of spatial relations. While these models remain simplistic models of visual processing, they suggest that, in principle, bottom-up activation of a loose collection of image features could support the rapid recognition of natural object categories and provide an initial coarse visual representation before more complex visual routines and attentional mechanisms take place. Focusing on biologically-plausible computational models of (bottom-up) pre-attentive visual recognition, we review some of the key visual features that have been described in the literature. We discuss the consistency of these feature-based representations with classical theories from visual psychology and test their ability to account for human performance on a rapid object categorization task.",
"journalAbbreviation": "Front. Psychol.",
"language": "English",
"libraryCatalog": "Frontiers",
"publicationTitle": "Frontiers in Psychology",
"url": "https://www.frontiersin.org/articles/10.3389/fpsyg.2011.00326",
"volume": "2",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Computational models"
},
{
"tag": "Computer Vision"
},
{
"tag": "feedforward"
},
{
"tag": "rapid visual object recognition"
},
{
"tag": "visual features"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.frontiersin.org/articles/10.3389/fmicb.2014.00402/full",
"items": [
{
"itemType": "journalArticle",
"title": "Aromatic inhibitors derived from ammonia-pretreated lignocellulose hinder bacterial ethanologenesis by activating regulatory circuits controlling inhibitor efflux and detoxification",
"creators": [
{
"firstName": "David H.",
"lastName": "Keating",
"creatorType": "author"
},
{
"firstName": "Yaoping",
"lastName": "Zhang",
"creatorType": "author"
},
{
"firstName": "Irene M.",
"lastName": "Ong",
"creatorType": "author"
},
{
"firstName": "Sean",
"lastName": "McIlwain",
"creatorType": "author"
},
{
"firstName": "Eduardo H.",
"lastName": "Morales",
"creatorType": "author"
},
{
"firstName": "Jeffrey A.",
"lastName": "Grass",
"creatorType": "author"
},
{
"firstName": "Mary",
"lastName": "Tremaine",
"creatorType": "author"
},
{
"firstName": "William",
"lastName": "Bothfeld",
"creatorType": "author"
},
{
"firstName": "Alan",
"lastName": "Higbee",
"creatorType": "author"
},
{
"firstName": "Arne",
"lastName": "Ulbrich",
"creatorType": "author"
},
{
"firstName": "Allison J.",
"lastName": "Balloon",
"creatorType": "author"
},
{
"firstName": "Michael S.",
"lastName": "Westphall",
"creatorType": "author"
},
{
"firstName": "Josh",
"lastName": "Aldrich",
"creatorType": "author"
},
{
"firstName": "Mary S.",
"lastName": "Lipton",
"creatorType": "author"
},
{
"firstName": "Joonhoon",
"lastName": "Kim",
"creatorType": "author"
},
{
"firstName": "Oleg V.",
"lastName": "Moskvin",
"creatorType": "author"
},
{
"firstName": "Yury V.",
"lastName": "Bukhman",
"creatorType": "author"
},
{
"firstName": "Joshua J.",
"lastName": "Coon",
"creatorType": "author"
},
{
"firstName": "Patricia J.",
"lastName": "Kiley",
"creatorType": "author"
},
{
"firstName": "Donna M.",
"lastName": "Bates",
"creatorType": "author"
},
{
"firstName": "Robert",
"lastName": "Landick",
"creatorType": "author"
}
],
"date": "2014-08-13",
"DOI": "10.3389/fmicb.2014.00402",
"ISSN": "1664-302X",
"abstractNote": "Efficient microbial conversion of lignocellulosic hydrolysates to biofuels is a key barrier to the economically viable deployment of lignocellulosic biofuels. A chief contributor to this barrier is the impact on microbial processes and energy metabolism of lignocellulose-derived inhibitors, including phenolic carboxylates, phenolic amides (for ammonia-pretreated biomass), phenolic aldehydes, and furfurals. To understand the bacterial pathways induced by inhibitors present in ammonia-pretreated biomass hydrolysates, which are less well studied than acid-pretreated biomass hydrolysates, we developed and exploited synthetic mimics of ammonia-pretreated corn stover hydrolysate (ACSH). To determine regulatory responses to the inhibitors normally present in ACSH, we measured transcript and protein levels in an Escherichia coli ethanologen using RNA-seq and quantitative proteomics during fermentation to ethanol of synthetic hydrolysates containing or lacking the inhibitors. Our study identified four major regulators mediating these responses, the MarA/SoxS/Rob network, AaeR, FrmR, and YqhC. Induction of these regulons was correlated with a reduced rate of ethanol production, buildup of pyruvate, depletion of ATP and NAD(P)H, and an inhibition of xylose conversion. The aromatic aldehyde inhibitor 5-hydroxymethylfurfural appeared to be reduced to its alcohol form by the ethanologen during fermentation whereas phenolic acid and amide inhibitors were not metabolized. Together, our findings establish that the major regulatory responses to lignocellulose-derived inhibitors are mediated by transcriptional rather than translational regulators, suggest that energy consumed for inhibitor efflux and detoxification may limit biofuel production, and identify a network of regulators for future synthetic biology efforts.",
"journalAbbreviation": "Front. Microbiol.",
"language": "English",
"libraryCatalog": "Frontiers",
"publicationTitle": "Frontiers in Microbiology",
"url": "https://www.frontiersin.org/articles/10.3389/fmicb.2014.00402",
"volume": "5",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Biofuels"
},
{
"tag": "Escherichia coli"
},
{
"tag": "Ethanol"
},
{
"tag": "Proteomics"
},
{
"tag": "RNAseq"
},
{
"tag": "Transcriptomics"
},
{
"tag": "aromatic inhibitors"
},
{
"tag": "lignocellulosic hydrolysate"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.frontiersin.org/articles/10.3389/fdata.2019.00017/full",
"items": [
{
"itemType": "journalArticle",
"title": "Twitter Response to Munich July 2016 Attack: Network Analysis of Influence",
"creators": [
{
"firstName": "Ivan",
"lastName": "Bermudez",
"creatorType": "author"
},
{
"firstName": "Daniel",
"lastName": "Cleven",
"creatorType": "author"
},
{
"firstName": "Ralucca",
"lastName": "Gera",
"creatorType": "author"
},
{
"firstName": "Erik T.",
"lastName": "Kiser",
"creatorType": "author"
},
{
"firstName": "Timothy",
"lastName": "Newlin",
"creatorType": "author"
},
{
"firstName": "Akrati",
"lastName": "Saxena",
"creatorType": "author"
}
],
"date": "2019-06-25",
"DOI": "10.3389/fdata.2019.00017",
"ISSN": "2624-909X",
"abstractNote": "Social Media platforms in Cyberspace provide communication channels for individuals, businesses, as well as state and non-state actors (i.e., individuals and groups) to conduct messaging campaigns. What are the spheres of influence that arose around the keyword \\textit{\\#Munich} on Twitter following an active shooter event at a Munich shopping mall in July $2016$? To answer that question in this work, we capture tweets utilizing \\textit{\\#Munich} beginning one hour after the shooting was reported, and the data collection ends approximately one month later~\\footnote{The collected dataset will be posted online for public use once the research work is published.}. We construct both daily networks and a cumulative network from this data. We analyze community evolution using the standard Louvain algorithm, and how the communities change over time to study how they both encourage and discourage the effectiveness of an information messaging campaign. We conclude that the large communities observed in the early stage of the data disappear from the \\textit{\\#Munich} conversation within seven days. The politically charged nature of many of these communities suggests their activity is migrated to other Twitter hashtags (i.e., conversation topics). Future analysis of Twitter activity might focus on tracking communities across topics and time.",
"journalAbbreviation": "Front. Big Data",
"language": "English",
"libraryCatalog": "Frontiers",
"publicationTitle": "Frontiers in Big Data",
"shortTitle": "Twitter Response to Munich July 2016 Attack",
"url": "https://www.frontiersin.org/articles/10.3389/fdata.2019.00017",
"volume": "2",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Influence spread"
},
{
"tag": "Munich July 2016 Attack"
},
{
"tag": "Twitter data analysis"
},
{
"tag": "meme propagation"
},
{
"tag": "social network analysis"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.frontiersin.org/research-topics/9706/workshop-proceedings-of-the-13th-international-aaai-conference-on-web-and-social-media",
"defer": true,
"items": "multiple"
},
{
"type": "web",
"url": "https://www.frontiersin.org/journals/digital-humanities/articles?type=24§ion=913",
"defer": true,
"items": "multiple"
},
{
"type": "web",
"url": "https://www.frontiersin.org/search?query=ballot+secrecy+election&tab=top-results",
"defer": true,
"items": "multiple"
},
{
"type": "web",
"url": "https://www.frontiersin.org/search?query=ballot+secrecy+election&tab=articles",
"defer": true,
"items": "multiple"
}
]
/** END TEST CASES **/
100Aurimas Vinckevicius, Sebastian Karcher^https?://(elife\.)?elifesciences\.org/(articles|search|subjects|archive)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2018 Sebastian Karcher
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
// attr()/text() v2
function attr(docOrElem,selector,attr,index){var elem=index?docOrElem.querySelectorAll(selector).item(index):docOrElem.querySelector(selector);return elem?elem.getAttribute(attr):null;}function text(docOrElem,selector,index){var elem=index?docOrElem.querySelectorAll(selector).item(index):docOrElem.querySelector(selector);return elem?elem.textContent:null;}
function detectWeb(doc, url) {
if (url.includes('/articles/')) {
return "journalArticle";
} else if (getSearchResults(doc, true)) {
return "multiple";
}
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('li.listing-list__item h4.teaser__header_text a');
for (let i=0; i<rows.length; i++) {
let href = rows[i].href;
let title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) {
return true;
}
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
} else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var risURL = url.replace(/[#?].+/, "") + ".ris";
var pdfURL = attr(doc, '.article-download-list a', 'href');
// Z.debug("pdfURL: " + pdfURL);
ZU.doGet(risURL, function(text) {
var translator = Zotero.loadTranslator("import");
translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7");
translator.setString(text);
translator.setHandler("itemDone", function(obj, item) {
if (pdfURL) {
item.attachments.push({
url: pdfURL,
title: "Full Text PDF",
mimeType: "application/pdf"
});
}
item.complete();
});
translator.translate();
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://elifesciences.org/archive/2016/02",
"items": "multiple"
},
{
"type": "web",
"url": "https://elifesciences.org/articles/16800",
"items": [
{
"itemType": "journalArticle",
"title": "How open science helps researchers succeed",
"creators": [
{
"lastName": "McKiernan",
"firstName": "Erin C",
"creatorType": "author"
},
{
"lastName": "Bourne",
"firstName": "Philip E",
"creatorType": "author"
},
{
"lastName": "Brown",
"firstName": "C Titus",
"creatorType": "author"
},
{
"lastName": "Buck",
"firstName": "Stuart",
"creatorType": "author"
},
{
"lastName": "Kenall",
"firstName": "Amye",
"creatorType": "author"
},
{
"lastName": "Lin",
"firstName": "Jennifer",
"creatorType": "author"
},
{
"lastName": "McDougall",
"firstName": "Damon",
"creatorType": "author"
},
{
"lastName": "Nosek",
"firstName": "Brian A",
"creatorType": "author"
},
{
"lastName": "Ram",
"firstName": "Karthik",
"creatorType": "author"
},
{
"lastName": "Soderberg",
"firstName": "Courtney K",
"creatorType": "author"
},
{
"lastName": "Spies",
"firstName": "Jeffrey R",
"creatorType": "author"
},
{
"lastName": "Thaney",
"firstName": "Kaitlin",
"creatorType": "author"
},
{
"lastName": "Updegrove",
"firstName": "Andrew",
"creatorType": "author"
},
{
"lastName": "Woo",
"firstName": "Kara H",
"creatorType": "author"
},
{
"lastName": "Yarkoni",
"firstName": "Tal",
"creatorType": "author"
},
{
"lastName": "Rodgers",
"firstName": "Peter",
"creatorType": "editor"
}
],
"date": "2016-07-07",
"DOI": "10.7554/eLife.16800",
"ISSN": "2050-084X",
"abstractNote": "Open access, open data, open source and other open scholarship practices are growing in popularity and necessity. However, widespread adoption of these practices has not yet been achieved. One reason is that researchers are uncertain about how sharing their work will affect their careers. We review literature demonstrating that open research is associated with increases in citations, media attention, potential collaborators, job opportunities and funding opportunities. These findings are evidence that open research practices bring significant benefits to researchers relative to more traditional closed practices.",
"libraryCatalog": "eLife",
"pages": "e16800",
"publicationTitle": "eLife",
"url": "https://doi.org/10.7554/eLife.16800",
"volume": "5",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "open access"
},
{
"tag": "open data"
},
{
"tag": "open science"
},
{
"tag": "open source"
},
{
"tag": "research"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://elifesciences.org/articles/54967?utm_source=content_alert&utm_medium=email&utm_content=fulltext&utm_campaign=24-August-20-elife-alert",
"items": [
{
"itemType": "journalArticle",
"title": "A community-maintained standard library of population genetic models",
"creators": [
{
"lastName": "Adrion",
"firstName": "Jeffrey R",
"creatorType": "author"
},
{
"lastName": "Cole",
"firstName": "Christopher B",
"creatorType": "author"
},
{
"lastName": "Dukler",
"firstName": "Noah",
"creatorType": "author"
},
{
"lastName": "Galloway",
"firstName": "Jared G",
"creatorType": "author"
},
{
"lastName": "Gladstein",
"firstName": "Ariella L",
"creatorType": "author"
},
{
"lastName": "Gower",
"firstName": "Graham",
"creatorType": "author"
},
{
"lastName": "Kyriazis",
"firstName": "Christopher C",
"creatorType": "author"
},
{
"lastName": "Ragsdale",
"firstName": "Aaron P",
"creatorType": "author"
},
{
"lastName": "Tsambos",
"firstName": "Georgia",
"creatorType": "author"
},
{
"lastName": "Baumdicker",
"firstName": "Franz",
"creatorType": "author"
},
{
"lastName": "Carlson",
"firstName": "Jedidiah",
"creatorType": "author"
},
{
"lastName": "Cartwright",
"firstName": "Reed A",
"creatorType": "author"
},
{
"lastName": "Durvasula",
"firstName": "Arun",
"creatorType": "author"
},
{
"lastName": "Gronau",
"firstName": "Ilan",
"creatorType": "author"
},
{
"lastName": "Kim",
"firstName": "Bernard Y",
"creatorType": "author"
},
{
"lastName": "McKenzie",
"firstName": "Patrick",
"creatorType": "author"
},
{
"lastName": "Messer",
"firstName": "Philipp W",
"creatorType": "author"
},
{
"lastName": "Noskova",
"firstName": "Ekaterina",
"creatorType": "author"
},
{
"lastName": "Ortega-Del Vecchyo",
"firstName": "Diego",
"creatorType": "author"
},
{
"lastName": "Racimo",
"firstName": "Fernando",
"creatorType": "author"
},
{
"lastName": "Struck",
"firstName": "Travis J",
"creatorType": "author"
},
{
"lastName": "Gravel",
"firstName": "Simon",
"creatorType": "author"
},
{
"lastName": "Gutenkunst",
"firstName": "Ryan N",
"creatorType": "author"
},
{
"lastName": "Lohmueller",
"firstName": "Kirk E",
"creatorType": "author"
},
{
"lastName": "Ralph",
"firstName": "Peter L",
"creatorType": "author"
},
{
"lastName": "Schrider",
"firstName": "Daniel R",
"creatorType": "author"
},
{
"lastName": "Siepel",
"firstName": "Adam",
"creatorType": "author"
},
{
"lastName": "Kelleher",
"firstName": "Jerome",
"creatorType": "author"
},
{
"lastName": "Kern",
"firstName": "Andrew D",
"creatorType": "author"
},
{
"lastName": "Coop",
"firstName": "Graham",
"creatorType": "editor"
},
{
"lastName": "Wittkopp",
"firstName": "Patricia J",
"creatorType": "editor"
},
{
"lastName": "Novembre",
"firstName": "John",
"creatorType": "editor"
},
{
"lastName": "Sethuraman",
"firstName": "Arun",
"creatorType": "editor"
},
{
"lastName": "Mathieson",
"firstName": "Sara",
"creatorType": "editor"
}
],
"date": "2020-06-23",
"DOI": "10.7554/eLife.54967",
"ISSN": "2050-084X",
"abstractNote": "The explosion in population genomic data demands ever more complex modes of analysis, and increasingly, these analyses depend on sophisticated simulations. Recent advances in population genetic simulation have made it possible to simulate large and complex models, but specifying such models for a particular simulation engine remains a difficult and error-prone task. Computational genetics researchers currently re-implement simulation models independently, leading to inconsistency and duplication of effort. This situation presents a major barrier to empirical researchers seeking to use simulations for power analyses of upcoming studies or sanity checks on existing genomic data. Population genetics, as a field, also lacks standard benchmarks by which new tools for inference might be measured. Here, we describe a new resource, stdpopsim, that attempts to rectify this situation. Stdpopsim is a community-driven open source project, which provides easy access to a growing catalog of published simulation models from a range of organisms and supports multiple simulation engine backends. This resource is available as a well-documented python library with a simple command-line interface. We share some examples demonstrating how stdpopsim can be used to systematically compare demographic inference methods, and we encourage a broader community of developers to contribute to this growing resource.",
"libraryCatalog": "eLife",
"pages": "e54967",
"publicationTitle": "eLife",
"url": "https://doi.org/10.7554/eLife.54967",
"volume": "9",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "open source"
},
{
"tag": "reproducibility"
},
{
"tag": "simulation"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://elifesciences.org/search?for=open",
"items": "multiple"
},
{
"type": "web",
"url": "https://elifesciences.org/subjects/biochemistry-chemical-biology",
"items": "multiple"
}
]
/** END TEST CASES **/
100Philipp Zumstein^https?://docs\.google\.com/presentation/d//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2017 Philipp Zumstein
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (ZU.xpathText(doc, '//script[contains(., "SK_config[\'title\']")]')) {
return "presentation";
}
}
function doWeb(doc, url) {
var textContent = ZU.xpathText(doc, '//body');
var item = new Zotero.Item('presentation');
var titleMatch = textContent.match(/SK_config\['title'\]\s?=\s?'([^;]*)';/);
item.title = titleMatch[1];
//SK_config['lastModified'] = ["Lydia Pintscher", 1495520656216, 2];
var modifiedMatch = textContent.match(/SK_config\['lastModified'\]\s?=\s?([^;]*);/);
if (modifiedMatch && modifiedMatch[1] != 'null') {
var modifiedData = JSON.parse(modifiedMatch[1]);
item.creators.push(ZU.cleanAuthor(modifiedData[0], "author"));
var date = new Date(modifiedData[1]);
item.date = date.toISOString();
}
var urlparts = url.split('/');
var id = urlparts[5];
urlparts.splice(6);
var baseUrl = urlparts.join('/');
item.url = baseUrl;
var pdfUrl = baseUrl + '/export?format=pdf';
//Z.debug(pdfUrl);
item.attachments.push({
url: pdfUrl,
title: "Full Text PDF",
mimeType: "application/pdf"
});
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://docs.google.com/presentation/d/13O08buimOzZWbv6GHxMv5LJS3TUAWF2R7_fwToggA64/edit#slide=id.i0",
"items": [
{
"itemType": "presentation",
"title": "16.1 powerpoint",
"creators": [],
"url": "https://docs.google.com/presentation/d/13O08buimOzZWbv6GHxMv5LJS3TUAWF2R7_fwToggA64",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Aurimas Vinckevicius^https?://(www\.)?nature\.com/([^?/]+/)?(journal|archive|research|topten|search|full|abs|current_issue\.htm|most\.htm|articles/)/**
Copyright (c) 2012 Aurimas Vinckevicius
This program is free software: you can redistribute it and/or
modify it under the terms of the GNU Affero General Public License
as published by the Free Software Foundation, either version 3 of
the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public
License along with this program. If not, see
<http://www.gnu.org/licenses/>.
*/
// mimetype map for supplementary attachments
var suppTypeMap = {
pdf: 'application/pdf',
// 'zip': 'application/zip',
doc: 'application/msword',
xls: 'application/vnd.ms-excel',
excel: 'application/vnd.ms-excel'
};
function attachSupplementary(doc, item, next) {
// nature's new website
var attachAsLink = Z.getHiddenPref("supplementaryAsLink");
var suppDiv = doc.getElementById("supplementary-information");
if (suppDiv) {
var fileClasses = ZU.xpath(suppDiv, './/div[contains(@class, "supp-info")]/h2');
for (var i = 0, n = fileClasses.length; i < n; i++) {
var type = fileClasses[i].classList.item(0);
if (type) type = suppTypeMap[type];
if (!fileClasses[i].nextElementSibling) continue;
var dls = fileClasses[i].nextElementSibling.getElementsByTagName('dl');
for (var j = 0, m = dls.length; j < m; j++) {
var link = ZU.xpath(dls[j], './dt/a')[0];
if (!link) {
continue;
}
var title = dls[j].getElementsByTagName('dd')[0];
if (title) {
title = title.textContent.replace(
/^[\s\r\n]*(?:Th(?:is|e) )?file (?:contains|shows)\s+(\S+)/i,
function (m, firstWord) { // fix capitalization of first word
if (firstWord.toLowerCase() == firstWord) { // lower case word
return firstWord.charAt(0).toUpperCase() + firstWord.substr(1);
}
return firstWord;
}
).trim();
}
// add the heading from link
title = link.textContent.replace(/\s+\([^()]+\)\s*$/g, '').trim() // strip off the file size info
+ ". " + (title || '');
// fallback if we fail miserably
if (!title) title = "Supplementary file";
var attachment = {
title: title,
url: link.href
};
if (type) attachment.mimeType = type;
if (attachAsLink || !type) { // don't download unknown file types
attachment.snapshot = false;
}
item.attachments.push(attachment);
}
}
return;
}
// older websites, e.g. http://www.nature.com/onc/journal/v31/n6/full/onc2011282a.html
var suppLink = doc.getElementById('articlenav') || doc.getElementById('extranav');
if (suppLink) {
suppLink = ZU.xpath(suppLink, './ul/li//a[text()="Supplementary info"]')[0]; // unfortunately, this is the best we can do
if (!suppLink) return;
if (attachAsLink) { // we don't need to find links to individual files
item.attachments.push({
title: "Supplementary info",
url: suppLink.href,
mimeType: 'text/html',
snapshot: false
});
}
else {
ZU.processDocuments(suppLink.href, function (newDoc) {
var content = newDoc.getElementById('content');
if (content) {
var links = ZU.xpath(content, './div[@class="container-supplementary" or @id="general"]//a');
for (var i = 0, n = links.length; i < n; i++) {
var title = ZU.trimInternal(links[i].textContent);
var type = title.match(/\((\w+)\s+\d+[^)]+\)\s*$/);
if (type) type = suppTypeMap[type[1]];
if (!type) {
type = links[i].classList;
type = type.item(type.length - 1);
if (type) type = suppTypeMap[type.replace(/^(?:i|all)-/, '')];
}
// clean up title a bit
title = title.replace(/\s*\([^()]+\)$/, '')
.replace(/\s*-\s*download\b.*/i, '');
item.attachments.push({
title: title,
url: links[i].href,
mimeType: type,
snapshot: !!type // don't download unknown file types
});
}
}
next(doc, item);
});
return;
}
return;
}
// e.g. http://www.nature.com/ng/journal/v38/n11/full/ng1901.html
suppLink = ZU.xpath(doc, '(//a[text()="Supplementary info"])[last()]')[0];
if (suppLink) {
if (attachAsLink) { // we don't need to find links to individual files
item.attachments.push({
title: "Supplementary info",
url: suppLink.href,
mimeType: 'text/html',
snapshot: false
});
}
else {
Z.debug(suppLink.href);
ZU.processDocuments(suppLink.href, function (newDoc) {
var links = ZU.xpath(newDoc, './/p[@class="articletext"]');
Z.debug("Found " + links.length + " links");
for (var i = 0, n = links.length; i < n; i++) {
var link = links[i].getElementsByTagName('a')[0];
if (!link) continue;
var title = ZU.trimInternal(link.textContent);
var type = title.match(/\((\w+)\s+\d+[^)]+\)\s*$/);
if (type) type = suppTypeMap[type[1]];
// clean up title a bit
title = title.replace(/\s*\([^()]+\)$/, '')
.replace(/\s*-\s*download\b.*/i, '');
// maybe we can attach description to title
// can this be too long? I would probably make more sense to attach these as notes on the files
// how do we do that?
var desc = ZU.xpathText(links[i], './node()[last()][not(name())]'); // last text node
if (desc && (desc = ZU.trimInternal(desc))) {
title += '. ' + desc;
}
item.attachments.push({
title: title,
url: links[i].href,
mimeType: type,
snapshot: !!type // don't download unknown file types
});
}
next(doc, item);
});
}
}
}
// unescape Highwire's special html characters
function HWunescape(str) {
if (!str || !str.includes('[')) return str;
return str.replace(/\|?\[([^\]]+)\]\|?/g, function (s, p1) {
if (ISO8879CharMap[p1] !== undefined) {
return ISO8879CharMap[p1];
}
else {
return s;
}
});
}
// fix capitalization if all in upper case
function fixCaps(str) {
if (str && str == str.toUpperCase()) {
return ZU.capitalizeTitle(str.toLowerCase(), true);
}
else {
return str;
}
}
// get abstract
function getAbstract(doc) {
var abstractLocations = [
// e.g. https://www.nature.com/articles/onc2011282
'//*[@id="abstract-content"]',
// e.g. 'lead' http://www.nature.com/emboj/journal/v31/n1/full/emboj2011343a.html
// e.g. 'first_paragraph' http://www.nature.com/emboj/journal/vaop/ncurrent/full/emboj201239a.html
'//p[contains(@class,"lead") or contains(@class,"first_paragraph")]',
// e.g. http://www.nature.com/nprot/journal/v8/n11/full/nprot.2013.143.html
'//div[@id="abstract"]/div[@class="content"]/p',
// e.g.
'//div[@id="abs"]/*[self::div[not(contains(@class, "keyw-abbr"))] or self::p]',
// e.g. 'first-paragraph' http://www.nature.com/nature/journal/v481/n7381/full/nature10669.html
// e.g. 'standfirst' http://www.nature.com/nature/journal/v481/n7381/full/481237a.html
'//div[@id="first-paragraph" or @class="standfirst"]/p',
// e.g. http://www.nature.com/nature/journal/v481/n7381/full/nature10728.html
'//div[contains(@id,"abstract")]/div[contains(@class,"content")]/p',
// e.g. http://www.nature.com/ng/journal/v38/n8/abs/ng1845.html
'//span[@class="articletext" and ./preceding-sibling::*[1][name()="a" or name()="A"][@name="abstract"]]'
];
var paragraphs = [];
for (let i = 0, n = abstractLocations.length; i < n && !paragraphs.length; i++) {
paragraphs = Zotero.Utilities.xpath(doc, abstractLocations[i]);
}
if (!paragraphs.length) return null;
var textArr = [];
var p;
for (let i = 0, n = paragraphs.length; i < n; i++) {
// remove superscript references
p = ZU.xpathText(paragraphs[i], "./node()[not(self::sup and ./a)]", null, '');
if (p) p = ZU.trimInternal(p);
if (p) textArr.push(p);
}
return textArr.join("\n").trim() || null;
}
// some journals display keywords
function getKeywords(doc) {
var keywords = Zotero.Utilities.xpathText(doc, '//p[@class="keywords"]') // e.g. http://www.nature.com/onc/journal/v26/n6/full/1209842a.html
|| Zotero.Utilities.xpathText(doc, '//ul[@class="keywords"]//ul/li', null, '') // e.g. http://www.nature.com/emboj/journal/v31/n3/full/emboj2011459a.html
|| Zotero.Utilities.xpathText(doc, '//div[contains(@class,"article-keywords")]/ul/li/a', null, '; '); // e.g. http://www.nature.com/nature/journal/v481/n7382/full/481433a.html
if (!keywords) return null;
return keywords.split(/[;,]\s+/);
}
// get PDF url
function getPdfUrl(doc, url) {
var m = url.match(/(^[^#?]+\/)(?:full|abs)(\/[^#?]+?\.)[a-zA-Z]+(?=$|\?|#)/);
if (m && m.length) return m[1] + 'pdf' + m[2] + 'pdf';
else {
return attr(doc, 'a[data-track-action="download pdf"]', 'href');
}
}
// add using embedded metadata
function scrapeEM(doc, url, next) {
var translator = Zotero.loadTranslator("web");
// Embedded Metadata translator
translator.setTranslator("951c027d-74ac-47d4-a107-9c3069ab7b48");
translator.setDocument(doc);
translator.setHandler("itemDone", function (obj, item) {
// Replace HTML special characters with proper characters
// also remove all caps in Names and Titles
for (let i = 0; i < item.creators.length; i++) {
item.creators[i].lastName = HWunescape(item.creators[i].lastName);
item.creators[i].firstName = HWunescape(item.creators[i].firstName);
item.creators[i].lastName = fixCaps(item.creators[i].lastName);
item.creators[i].firstName = fixCaps(item.creators[i].firstName);
}
item.title = fixCaps(HWunescape(item.title));
if (item.abstractNote) item.abstractNote = ZU.cleanTags(item.abstractNote);
// the date in EM is usually online publication date
// If we can find a publication year, that's better
var year = ZU.xpathText(doc,
'//dd[preceding-sibling::dt[1][text()="Year published:" or text()="Date published:"]]');
if (year && (year = year.match(/\(\s*(.*?)\s*\)/))) {
item.date = year[1];
}
else if ((year = ZU.xpathText(doc, '//p[@id="cite"]'))
&& (year = year.match(/\((\d{4})\)/))) {
item.date = year[1];
}
else if (
(year = ZU.xpathText(doc, '//a[contains(@href,"publicationDate")]/@href'))
&& (year = year.match(/publicationDate=([^&]+)/))
// check that we at least have a year
&& year[1].match(/\d{4}/)) {
item.date = year[1];
}
// sometimes abstract from EM is description for the website.
// ours should always be better
var abstract = getAbstract(doc);
if (abstract
// maybe the abstract from meta tags is more complete
&& !(item.abstractNote
&& item.abstractNote.substr(0, 10) == abstract.substr(0, 10)
&& item.abstractNote.length > abstract.length)) {
item.abstractNote = abstract;
}
item.tags = getKeywords(doc) || item.tags;
if (item.notes) item.notes = [];
if (item.ISSN && ZU.cleanISSN) { // introduced in 3.0.12
var issn = ZU.cleanISSN(item.ISSN);
if (!issn) delete item.ISSN;
else item.ISSN = issn;
}
else if (item.ISSN === "ERROR! NO ISSN") {
delete item.ISSN;
}
next(item);
});
translator.getTranslatorObject(function (trans) {
// Make sure we always import as journal article (sometimes missing from EM)
// e.g. https://www.nature.com/articles/sdata201618
trans.itemType = "journalArticle";
trans.doWeb(doc, url);
});
}
function scrapeRIS(doc, url, next) {
var navBar = doc.getElementById('articlenav') || doc.getElementById('extranav');
var risURL;
if (navBar) {
risURL = doc.evaluate('//li[@class="export"]/a', navBar, null, XPathResult.ANY_TYPE, null).iterateNext();
if (!risURL) risURL = doc.evaluate('//a[normalize-space(text())="Export citation" and not(@href="#")]', navBar, null, XPathResult.ANY_TYPE, null).iterateNext();
}
if (!risURL) risURL = doc.evaluate('//a[normalize-space(text())="RIS" and not(@href="#")]', doc, null, XPathResult.ANY_TYPE, null).iterateNext();
if (!risURL) risURL = doc.evaluate('//li[@class="download-citation"]/a', doc, null, XPathResult.ANY_TYPE, null).iterateNext();
if (!risURL) risURL = doc.evaluate('//a[normalize-space(text())="Export citation" and not(@href="#")]', doc, null, XPathResult.ANY_TYPE, null).iterateNext();
if (!risURL) risURL = ZU.xpath(doc, '//ul[@data-component="article-info-list"]//a[@data-track-source="citation-download"]')[0];
if (!risURL) risURL = doc.querySelector('a[data-track-action="download article citation"]');
if (risURL) {
risURL = risURL.href;
ZU.doGet(risURL, function (text) {
if (text.search(/^TY /m) != -1) {
var translator = Zotero.loadTranslator('import');
translator.setTranslator('32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7');
translator.setString(text);
translator.setHandler('itemDone', function (obj, newItem) {
newItem.notes = [];
next(newItem);
});
translator.setHandler('error', function () {
next();
});
translator.translate();
}
else {
next();
}
});
}
else {
Z.debug('Could not find RIS export');
next();
}
}
function getMultipleNodes(doc, url) {
var allHNodes = '*[self::h1 or self::h2 or self::h3 or self::h4 or self::h5]';
var nodex, titlex, linkx;
var nodes = [];
if (url.includes('/search/') || url.includes('/most.htm')) {
// search, "top" lists
nodex = '//ol[@class="results-list" or @id="content-list"]/li';
titlex = './' + allHNodes + '/node()[not(self::span)]';
linkx = './' + allHNodes + '/a';
nodes = Zotero.Utilities.xpath(doc, nodex);
}
else {
// Maybe there's a nice way to figure out which journal uses what style, but for now we'll just try one until it matches
// these seem to be listed in order of frequency
var styles = [
// ToC
{
nodex: '//tr[./td/span[@class="articletitle"]]',
titlex: './td/span[@class="articletitle"]',
linkx: './td/a[@class="contentslink" and substring(@href, string-length(@href)-3) != "pdf"][1]' // abstract or full text
},
// oncogene
{
nodex: '//div[child::*[@class="atl"]]',
titlex: './' + allHNodes + '[last()]/node()[not(self::span)]', // ignore "subheading"
linkx: './p[@class="links" or @class="articlelinks"]/a[contains(text(),"Full Text") or contains(text(),"Full text")]'
},
// embo journal
{
nodex: '//ul[@class="articles"]/li',
titlex: './' + allHNodes + '[@class="article-title"]/node()[not(self::span)]',
linkx: './ul[@class="article-links"]/li/a[contains(text(),"Full Text") or contains(text(),"Full text")]'
},
// nature
{
nodex: '//ul[contains(@class,"article-list") or contains(@class,"collapsed-list")]/li',
titlex: './/' + allHNodes + '/a',
linkx: './/' + allHNodes + '/a'
},
// archive (e.g. http://www.nature.com/bonekey/archive/type.html)
{
nodex: '//table[@class="archive"]/tbody/tr',
titlex: './td/' + allHNodes + '[last()]/a',
linkx: './td/' + allHNodes + '[last()]/a',
},
// some more ToC (e.g. http://www.nature.com/nrcardio/journal/v5/n1s/index.html)
{
nodex: '//div[@class="container"]/div[./h4[@class="norm"] and ./p[@class="journal"]/a[@title]]',
titlex: './h4[@class="norm"]',
linkx: './p[@class="journal"]/a[@title][1]'
},
// some new more ToC (e.g. https://www.nature.com/ng/volumes/38/issues/11)
{
nodex: '//article',
titlex: './div/h3',
linkx: './div/h3/a'
},
{
nodex: '//li[@itemtype="http://schema.org/Article"]',
titlex: './/h2',
linkx: './/h2/a'
}
];
for (var i = 0; i < styles.length && !nodes.length; i++) {
nodex = styles[i].nodex;
titlex = styles[i].titlex;
linkx = styles[i].linkx;
nodes = Zotero.Utilities.xpath(doc, nodex);
}
}
if (nodes.length) Z.debug("multiples found using: " + nodex);
return [nodes, titlex, linkx];
}
function isNature(url) {
return url.search(/^https?:\/\/(?:[^/]+\.)?nature.com/) != -1;
}
function detectWeb(doc, url) {
if (url.endsWith('.pdf')) return false;
if (url.search(/\/(full|abs)\/[^/]+($|\?|#)|\/fp\/.+?[?&]lang=ja(?:&|$)|\/articles\//) != -1) {
return 'journalArticle';
}
else if (doc.title.toLowerCase().includes('table of contents') // single issue ToC. e.g. http://www.nature.com/emboj/journal/v30/n1/index.html or http://www.nature.com/nature/journal/v481/n7381/index.html
|| doc.title.toLowerCase().includes('current issue')
|| url.includes('/research/') || url.includes('/topten/')
|| url.includes('/most.htm')
|| (url.includes('/vaop/') && url.includes('index.html')) // advanced online publication
|| url.includes('sp-q=') // search query
|| url.search(/journal\/v\d+\/n\d+\/index\.html/i) != -1 // more ToC
|| url.search(/volumes\/\d+\/issues\/\d+/i) != -1
|| url.includes('/search?')) { // new more ToC
return getMultipleNodes(doc, url)[0].length ? 'multiple' : null;
}
else if (url.includes('/archive/')) {
if (url.includes('index.htm')) return false; // list of issues
if (url.includes('subject.htm')) return false; // list of subjects
if (url.includes('category.htm') && !url.includes('code=')) return false; // list of categories
return getMultipleNodes(doc, url)[0].length ? 'multiple' : null; // all else should be ok
}
else {
return false;
}
}
function supplementItem(item, supp, prefer) {
for (var i in supp) {
if (!supp.hasOwnProperty(i)
|| (item.hasOwnProperty(i) && !prefer.includes(i))) {
continue; // this also skips creators, tags, notes, and related
}
Z.debug('Supplementing item.' + i);
item[i] = supp[i];
}
return item;
}
function runScrapers(scrapers, done) {
var items = [];
var args = Array.prototype.splice.call(arguments, 2); // remove scrapers and done handler
var run = function (item) {
items.push(item);
if (scrapers.length) {
(scrapers.shift())(...args);
}
};
args.push(run);
args.push(items);
scrapers.push(function () {
done(items);
});
(scrapers.shift())(...args);
}
function scrape(doc, url) {
runScrapers([scrapeEM, scrapeRIS], function (items) {
var item = items[0];
if (!item) { // EM failed (unlikely)
item = items[1];
}
else if (items[1]) {
var preferredRisFields = ['date', 'abstractNote'];
// palgrave-macmillan journals
if (!isNature(url)) {
preferredRisFields.push('publisher'); // all others are going to be dropped since we only handle journalArticle
if (item.rights.includes('Nature Publishing Group')) {
delete item.rights;
}
}
// for electronic only journals, EM just has 1-page#; we instead get article number from the extra field
var electronicOnly = ['Scientific Data', 'Nature Communications', 'Scientific Reports', 'npj Science of Food', 'Light: Science & Applications'];
if (electronicOnly.includes(item.publicationTitle)) {
preferredRisFields.push('pages');
}
item = supplementItem(item, items[1], preferredRisFields);
if (items[1].tags.length) item.tags = items[1].tags; // RIS doesn't seem to have tags, but we check just in case
if (!item.creators.length) {
// E.g. http://www.nature.com/nprot/journal/v1/n1/full/nprot.2006.52.html
item.creators = items[1].creators;
}
else {
// RIS can properly split first and last name
// but it does not (sometimes?) include accented letters
// We try to get best of both worlds by trying to re-split EM authors correctly
// hopefully the authors match up
for (var i = 0, j = 0, n = item.creators.length, m = items[1].creators.length; i < n && j < m; i++, j++) {
// check if last names match, then we don't need to worry
var risLName = ZU.removeDiacritics(items[1].creators[j].lastName.toUpperCase());
var emLName = ZU.removeDiacritics(item.creators[i].lastName.toUpperCase());
if (emLName == risLName) {
continue;
}
var fullName = item.creators[i].firstName + ' ' + item.creators[i].lastName;
emLName = fullName.substring(fullName.length - risLName.length);
if (ZU.removeDiacritics(emLName.toUpperCase()) != risLName) {
// corporate authors are sometimes skipped in RIS
if (i + 1 < n) {
var nextEMLName = item.creators[i + 1].firstName + ' '
+ item.creators[i + 1].lastName;
nextEMLName = ZU.removeDiacritics(
nextEMLName.substring(nextEMLName.length - risLName.length)
.toUpperCase()
);
if (nextEMLName == risLName) { // this is corporate author and it was skipped in RIS
item.creators[i].lastName = item.creators[i].firstName
+ ' ' + item.creators[i].lastName;
delete item.creators[i].firstName;
item.creators[i].fieldMode = 1;
j--;
Z.debug('It appears that "' + item.creators[i].lastName
+ '" is a corporate author and was skipped in the RIS output.');
continue;
}
}
// authors with same name are sometimes skipped in EM
if (j + 1 < m) {
var nextRisLName = ZU.removeDiacritics(items[1].creators[j + 1].lastName.toUpperCase());
var resplitEmLName = ZU.removeDiacritics(fullName.substring(fullName.length - nextRisLName.length).toUpperCase());
if (resplitEmLName == nextRisLName) {
item.creators.splice(i, 0, items[1].creators[j]); // insert missing author
Z.debug('It appears that "' + item.creators[i].lastName
+ '" was missing from EM.');
continue;
}
}
Z.debug(emLName + ' and ' + risLName + ' do not match');
continue; // we failed
}
if (items[1].creators[j].fieldMode !== 1) {
item.creators[i].firstName = fullName.substring(0, fullName.length - emLName.length).trim();
}
else {
delete item.creators[i].firstName;
item.creators[i].fieldMode = 1;
}
item.creators[i].lastName = emLName;
Z.debug(fullName + ' was split into '
+ item.creators[i].lastName + ', ' + item.creators[i].firstName);
}
}
}
if (!item) {
Z.debug('Could not retrieve metadata.');
return; // both translators failed
}
// small caps become lowercase in EM/RIS, so if the title contains a
// small-caps span, we'll use innerText.
if (doc.querySelector('h1.c-article-title .u-small-caps')) {
item.title = innerText('h1.c-article-title') || item.title;
}
// We prefer the publication date to some online first date
var pubdate = attr(doc, 'meta[name="citation_publication_date"]', 'content');
if (pubdate) {
item.date = ZU.strToISO(pubdate);
}
if (item.date) item.date = ZU.strToISO(item.date);
if (item.pages && !item.pages.includes('-')) {
var start = text(doc, 'span[itemprop="pageStart"]');
var end = text(doc, 'span[itemprop="pageEnd"]');
if (start && end) {
item.pages = start + '-' + end;
}
}
if (!item.pages) {
// For some online-only publications this should be the "Article number"
// but is not present in either EM or RIS. We grab it from page
var page = doc.querySelector('.citation .page');
if (page) {
item.pages = ZU.trimInternal(page.textContent);
}
}
// write 'en' instead of 'En'
if (item.language && item.language == 'En') item.language = 'en';
// journal abbreviations are now all wrong, i.e. the full title of the journal
if (item.journalAbbreviation && !item.publicationTitle) {
item.publicationTitle = 'Nature';// old articles mess this up
}
if (item.journalAbbreviation == item.publicationTitle) {
delete item.journalAbbreviation;
}
if (item.issue && item.number && item.issue == item.number) {
delete item.number;
}
var hasPDF = false;
for (let attach of item.attachments) {
if (attach.mimeType && attach.mimeType == "application/pdf") {
hasPDF = true;
}
}
if (!hasPDF) {
item.attachments = [{
document: doc,
title: 'Snapshot'
}];
var pdf = getPdfUrl(doc, url);
if (pdf) {
item.attachments.push({
url: pdf,
title: 'Full Text PDF',
mimeType: 'application/pdf'
});
}
}
// attach some useful links, like...
// GEO, GenBank, etc.
try { // this shouldn't really fail, but... just in case
var accessionDiv = doc.getElementById('accessions');
if (accessionDiv) {
var accessions = ZU.xpath(accessionDiv, './/div[@class="content"]//div[./h3]');
var repo, links;
for (let i = 0, n = accessions.length; i < n; i++) {
repo = accessions[i].getElementsByTagName('h3')[0].textContent;
if (repo) repo += ' entry ';
links = ZU.xpath(accessions[i], './ul[1]//a');
if (links.length) {
for (let j = 0, m = links.length; j < m; j++) {
item.attachments.push({
title: repo + '(' + links[j].textContent + ')',
url: links[j].href,
type: 'text/html',
snapshot: false
});
}
}
}
}
}
catch (e) {
Z.debug("Error attaching useful links.");
Z.debug(e);
}
// attach supplementary data
var async;
if (Z.getHiddenPref && Z.getHiddenPref("attachSupplementary")) {
try { // don't fail if we can't attach supplementary data
async = attachSupplementary(doc, item, function (doc, item) {
item.complete();
});
}
catch (e) {
Z.debug("Error attaching supplementary information.");
Z.debug(e);
if (async) item.complete();
}
if (!async) {
item.complete();
}
}
else {
item.complete();
}
}, doc, url);
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == 'multiple') {
var nodes = getMultipleNodes(doc, url);
var titlex = nodes[1];
var linkx = nodes[2];
nodes = nodes[0];
if (nodes.length == 0) {
Z.debug("no multiples");
// return false; //keep going so we can report this to zotero.org instead of "silently" failing
}
var items = {};
for (var i = 0; i < nodes.length; i++) {
let title = Zotero.Utilities.xpathText(nodes[i], titlex, null, '');
let link = Zotero.Utilities.xpath(nodes[i], linkx);
if (title && link.length == 1) {
items[link[0].href] = title.trim();
}
}
var urls = [];
Zotero.selectItems(items, function (selectedItems) {
if (!selectedItems) return true;
for (var item in selectedItems) {
urls.push(item);
}
Zotero.Utilities.processDocuments(urls, scrape);
return true;
});
}
else {
scrape(doc, url);
}
}
// ISO8879 to unicode character map
var ISO8879CharMap = {
excl: "\u0021", quot: "\u0022", num: "\u0023", dollar: "\u0024",
percnt: "\u0025", amp: "\u0026", apos: "\u0027", lpar: "\u0028",
rpar: "\u0029", ast: "\u002A", plus: "\u002B", comma: "\u002C",
period: "\u002E", sol: "\u002F", colon: "\u003A", semi: "\u003B",
lt: "\u003C", equals: "\u003D", gt: "\u003E", quest: "\u003F",
commat: "\u0040", lsqb: "\u005B", lbrack: "\u005B", bsol: "\u005C",
rsqb: "\u005D", rbrack: "\u005D", lowbar: "\u005F", grave: "\u0060",
DiacriticalGrave: "\u0060", jnodot: "\u006A", lcub: "\u007B", lbrace: "\u007B",
verbar: "\u007C", vert: "\u007C", rcub: "\u007D", rbrace: "\u007D",
nbsp: "\u00A0", NonBreakingSpace: "\u00A0", iexcl: "\u00A1", cent: "\u00A2",
pound: "\u00A3", curren: "\u00A4", yen: "\u00A5", brvbar: "\u00A6",
sect: "\u00A7", die: "\u00A8", uml: "\u00A8",
copy: "\u00A9", ordf: "\u00AA", laquo: "\u00AB",
not: "\u00AC", shy: "\u00AD", reg: "\u00AE", circledR: "\u00AE",
macr: "\u00AF", deg: "\u00B0", plusmn: "\u00B1", pm: "\u00B1",
PlusMinus: "\u00B1", sup2: "\u00B2", sup3: "\u00B3", acute: "\u00B4",
DiacriticalAcute: "\u00B4", micro: "\u00B5", para: "\u00B6", middot: "\u00B7",
centerdot: "\u00B7", CenterDot: "\u00B7", cedil: "\u00B8", Cedilla: "\u00B8",
sup1: "\u00B9", ordm: "\u00BA", raquo: "\u00BB", frac14: "\u00BC",
frac12: "\u00BD", half: "\u00BD",
frac34: "\u00BE", iquest: "\u00BF", Agrave: "\u00C0", Aacute: "\u00C1",
Acirc: "\u00C2", Atilde: "\u00C3", Auml: "\u00C4", Aring: "\u00C5",
AElig: "\u00C6", Ccedil: "\u00C7", Egrave: "\u00C8", Eacute: "\u00C9",
Ecirc: "\u00CA", Euml: "\u00CB", Igrave: "\u00CC", Iacute: "\u00CD",
Icirc: "\u00CE", Iuml: "\u00CF", ETH: "\u00D0", Ntilde: "\u00D1",
Ograve: "\u00D2", Oacute: "\u00D3", Ocirc: "\u00D4", Otilde: "\u00D5",
Ouml: "\u00D6", times: "\u00D7", Oslash: "\u00D8", Ugrave: "\u00D9",
Uacute: "\u00DA", Ucirc: "\u00DB", Uuml: "\u00DC", Yacute: "\u00DD",
THORN: "\u00DE", szlig: "\u00DF", agrave: "\u00E0", aacute: "\u00E1",
acirc: "\u00E2", atilde: "\u00E3", auml: "\u00E4", aring: "\u00E5",
aelig: "\u00E6", ccedil: "\u00E7", egrave: "\u00E8", eacute: "\u00E9",
ecirc: "\u00EA", euml: "\u00EB", igrave: "\u00EC", iacute: "\u00ED",
icirc: "\u00EE", iuml: "\u00EF", eth: "\u00F0", ntilde: "\u00F1",
ograve: "\u00F2", oacute: "\u00F3", ocirc: "\u00F4", otilde: "\u00F5",
ouml: "\u00F6", divide: "\u00F7", div: "\u00F7", oslash: "\u00F8",
ugrave: "\u00F9", uacute: "\u00FA", ucirc: "\u00FB", uuml: "\u00FC",
yacute: "\u00FD", thorn: "\u00FE", yuml: "\u00FF", Amacr: "\u0100",
amacr: "\u0101", Abreve: "\u0102", abreve: "\u0103", Aogon: "\u0104",
aogon: "\u0105", Cacute: "\u0106", cacute: "\u0107", Ccirc: "\u0108",
ccirc: "\u0109", Cdot: "\u010A", cdot: "\u010B", Ccaron: "\u010C",
ccaron: "\u010D", Dcaron: "\u010E", dcaron: "\u010F", Dstrok: "\u0110",
dstrok: "\u0111", Emacr: "\u0112", emacr: "\u0113", Edot: "\u0116",
edot: "\u0117", Eogon: "\u0118", eogon: "\u0119", Ecaron: "\u011A",
ecaron: "\u011B", Gcirc: "\u011C", gcirc: "\u011D", Gbreve: "\u011E",
gbreve: "\u011F", Gdot: "\u0120", gdot: "\u0121", Gcedil: "\u0122",
Hcirc: "\u0124", hcirc: "\u0125", Hstrok: "\u0126", hstrok: "\u0127",
Itilde: "\u0128", itilde: "\u0129", Imacr: "\u012A", imacr: "\u012B",
Iogon: "\u012E", iogon: "\u012F", Idot: "\u0130", IJlig: "\u0132",
ijlig: "\u0133", Jcirc: "\u0134", jcirc: "\u0135", Kcedil: "\u0136",
kcedil: "\u0137", kgreen: "\u0138", Lacute: "\u0139", lacute: "\u013A",
Lcedil: "\u013B", lcedil: "\u013C", Lcaron: "\u013D", lcaron: "\u013E",
Lmidot: "\u013F", lmidot: "\u0140", Lstrok: "\u0141", lstrok: "\u0142",
Nacute: "\u0143", nacute: "\u0144", Ncedil: "\u0145", ncedil: "\u0146",
Ncaron: "\u0147", ncaron: "\u0148", napos: "\u0149", ENG: "\u014A",
eng: "\u014B", Omacr: "\u014C", omacr: "\u014D", Odblac: "\u0150",
odblac: "\u0151", OElig: "\u0152", oelig: "\u0153", Racute: "\u0154",
racute: "\u0155", Rcedil: "\u0156", rcedil: "\u0157", Rcaron: "\u0158",
rcaron: "\u0159", Sacute: "\u015A", sacute: "\u015B", Scirc: "\u015C",
scirc: "\u015D", Scedil: "\u015E", scedil: "\u015F", Scaron: "\u0160",
scaron: "\u0161", Tcedil: "\u0162", tcedil: "\u0163", Tcaron: "\u0164",
tcaron: "\u0165", Tstrok: "\u0166", tstrok: "\u0167", Utilde: "\u0168",
utilde: "\u0169", Umacr: "\u016A", umacr: "\u016B", Ubreve: "\u016C",
ubreve: "\u016D", Uring: "\u016E", uring: "\u016F", Udblac: "\u0170",
udblac: "\u0171", Uogon: "\u0172", uogon: "\u0173", Wcirc: "\u0174",
wcirc: "\u0175", Ycirc: "\u0176", ycirc: "\u0177", Yuml: "\u0178",
Zacute: "\u0179", zacute: "\u017A", Zdot: "\u017B", zdot: "\u017C",
Zcaron: "\u017D", zcaron: "\u017E", gacute: "\u01F5", circ: "\u02C6",
caron: "\u02C7", Hacek: "\u02C7", breve: "\u02D8", Breve: "\u02D8",
dot: "\u02D9", DiacriticalDot: "\u02D9", ring: "\u02DA", ogon: "\u02DB",
tilde: "\u02DC", DiacriticalTilde: "\u02DC", dblac: "\u02DD", DiacriticalDoubleAcute: "\u02DD",
Aacgr: "\u0386", Eacgr: "\u0388", EEacgr: "\u0389", Iacgr: "\u038A",
Oacgr: "\u038C", Uacgr: "\u038E", OHacgr: "\u038F", idiagr: "\u0390",
Agr: "\u0391", Bgr: "\u0392", Ggr: "\u0393", Gamma: "\u0393",
Dgr: "\u0394", Delta: "\u0394", Egr: "\u0395", Zgr: "\u0396",
EEgr: "\u0397", THgr: "\u0398", Theta: "\u0398", Igr: "\u0399",
Kgr: "\u039A", Lgr: "\u039B", Lambda: "\u039B", Mgr: "\u039C",
Ngr: "\u039D", Xgr: "\u039E", Xi: "\u039E", Ogr: "\u039F",
Pgr: "\u03A0", Pi: "\u03A0", Rgr: "\u03A1", Sgr: "\u03A3",
Sigma: "\u03A3", Tgr: "\u03A4", Ugr: "\u03A5", PHgr: "\u03A6",
Phi: "\u03A6", KHgr: "\u03A7", PSgr: "\u03A8", Psi: "\u03A8",
OHgr: "\u03A9", Omega: "\u03A9", Idigr: "\u03AA", Udigr: "\u03AB",
aacgr: "\u03AC", eacgr: "\u03AD", eeacgr: "\u03AE", iacgr: "\u03AF",
udiagr: "\u03B0", agr: "\u03B1", alpha: "\u03B1", bgr: "\u03B2",
beta: "\u03B2", ggr: "\u03B3", gamma: "\u03B3", dgr: "\u03B4",
delta: "\u03B4", egr: "\u03B5", epsiv: "\u03B5", zgr: "\u03B6",
zeta: "\u03B6", eegr: "\u03B7", eta: "\u03B7", thgr: "\u03B8",
thetas: "\u03B8", igr: "\u03B9", iota: "\u03B9", kgr: "\u03BA",
kappa: "\u03BA", lgr: "\u03BB", lambda: "\u03BB", mgr: "\u03BC",
mu: "\u03BC", ngr: "\u03BD", nu: "\u03BD", xgr: "\u03BE",
xi: "\u03BE", ogr: "\u03BF", pgr: "\u03C0", pi: "\u03C0",
rgr: "\u03C1", rho: "\u03C1", sfgr: "\u03C2", sigmav: "\u03C2",
sgr: "\u03C3", sigma: "\u03C3", tgr: "\u03C4", tau: "\u03C4",
ugr: "\u03C5", upsi: "\u03C5", phgr: "\u03C6", phiv: "\u03C6",
khgr: "\u03C7", chi: "\u03C7", psgr: "\u03C8", psi: "\u03C8",
ohgr: "\u03C9", omega: "\u03C9", idigr: "\u03CA", udigr: "\u03CB",
oacgr: "\u03CC", uacgr: "\u03CD", ohacgr: "\u03CE", thetav: "\u03D1",
vartheta: "\u03D1", Upsi: "\u03D2", phis: "\u03D5", straightphi: "\u03D5",
piv: "\u03D6", varpi: "\u03D6", "b.Gammad": "\u03DC", gammad: "\u03DD",
"b.gammad": "\u03DD", kappav: "\u03F0", varkappa: "\u03F0", rhov: "\u03F1",
varrho: "\u03F1", epsi: "\u03F5", epsis: "\u03F5",
straightepsilon: "\u03F5", bepsi: "\u03F6",
backepsilon: "\u03F6", IOcy: "\u0401", DJcy: "\u0402", GJcy: "\u0403",
Jukcy: "\u0404", DScy: "\u0405", Iukcy: "\u0406", YIcy: "\u0407",
Jsercy: "\u0408", LJcy: "\u0409", NJcy: "\u040A", TSHcy: "\u040B",
KJcy: "\u040C", Ubrcy: "\u040E", DZcy: "\u040F", Acy: "\u0410",
Bcy: "\u0411", Vcy: "\u0412", Gcy: "\u0413", Dcy: "\u0414",
IEcy: "\u0415", ZHcy: "\u0416", Zcy: "\u0417", Icy: "\u0418",
Jcy: "\u0419", Kcy: "\u041A", Lcy: "\u041B", Mcy: "\u041C",
Ncy: "\u041D", Ocy: "\u041E", Pcy: "\u041F", Rcy: "\u0420",
Scy: "\u0421", Tcy: "\u0422", Ucy: "\u0423", Fcy: "\u0424",
KHcy: "\u0425", TScy: "\u0426", CHcy: "\u0427", SHcy: "\u0428",
SHCHcy: "\u0429", HARDcy: "\u042A", Ycy: "\u042B", SOFTcy: "\u042C",
Ecy: "\u042D", YUcy: "\u042E", YAcy: "\u042F", acy: "\u0430",
bcy: "\u0431", vcy: "\u0432", gcy: "\u0433", dcy: "\u0434",
iecy: "\u0435", zhcy: "\u0436", zcy: "\u0437", icy: "\u0438",
jcy: "\u0439", kcy: "\u043A", lcy: "\u043B", mcy: "\u043C",
ncy: "\u043D", ocy: "\u043E", pcy: "\u043F", rcy: "\u0440",
scy: "\u0441", tcy: "\u0442", ucy: "\u0443", fcy: "\u0444",
khcy: "\u0445", tscy: "\u0446", chcy: "\u0447", shcy: "\u0448",
shchcy: "\u0449", hardcy: "\u044A", ycy: "\u044B", softcy: "\u044C",
ecy: "\u044D", yucy: "\u044E", yacy: "\u044F", iocy: "\u0451",
djcy: "\u0452", gjcy: "\u0453", jukcy: "\u0454", dscy: "\u0455",
iukcy: "\u0456", yicy: "\u0457", jsercy: "\u0458", ljcy: "\u0459",
njcy: "\u045A", tshcy: "\u045B", kjcy: "\u045C", ubrcy: "\u045E",
dzcy: "\u045F", ensp: "\u2002", emsp: "\u2003", emsp13: "\u2004",
emsp14: "\u2005", numsp: "\u2007", puncsp: "\u2008", thinsp: "\u2009",
ThinSpace: "\u2009", hairsp: "\u200A", VeryThinSpace: "\u200A", hyphen: "\u2010",
dash: "\u2010", ndash: "\u2013", mdash: "\u2014", horbar: "\u2015",
lsquo: "\u2018", OpenCurlyQuote: "\u2018", rsquo: "\u2019", rsquor: "\u2019",
lsquor: "\u201A", ldquo: "\u201C", OpenCurlyDoubleQuote: "\u201C", rdquo: "\u201D",
rdquor: "\u201D", ldquor: "\u201E", dagger: "\u2020", Dagger: "\u2021",
ddagger: "\u2021", bull: "\u2022", bullet: "\u2022", nldr: "\u2025",
hellip: "\u2026", mldr: "\u2026",
vprime: "\u2032", bprime: "\u2035", backprime: "\u2035", caret: "\u2041",
hybull: "\u2043", incare: "\u2105", planck: "\u210F", hbar: "\u210F",
hslash: "\u210F", ell: "\u2113", numero: "\u2116", copysr: "\u2117",
weierp: "\u2118", wp: "\u2118", real: "\u211C", Re: "\u211C",
realpart: "\u211C", rx: "\u211E", trade: "\u2122", ohm: "\u2126",
beth: "\u2136", gimel: "\u2137", daleth: "\u2138", frac13: "\u2153",
frac23: "\u2154", frac15: "\u2155", frac25: "\u2156", frac35: "\u2157",
frac45: "\u2158", frac16: "\u2159", frac56: "\u215A", frac18: "\u215B",
frac38: "\u215C", frac58: "\u215D", frac78: "\u215E", larr: "\u2190",
leftarrow: "\u2190", LeftArrow: "\u2190", ShortLeftArrow: "\u2190", uarr: "\u2191",
uparrow: "\u2191", UpArrow: "\u2191", ShortUpArrow: "\u2191", rarr: "\u2192",
rightarrow: "\u2192", RightArrow: "\u2192", ShortRightArrow: "\u2192", darr: "\u2193",
downarrow: "\u2193", DownArrow: "\u2193", ShortDownArrow: "\u2193", harr: "\u2194",
leftrightarrow: "\u2194", LeftRightArrow: "\u2194", varr: "\u2195", updownarrow: "\u2195",
UpDownArrow: "\u2195", nwarr: "\u2196", UpperLeftArrow: "\u2196", nwarrow: "\u2196",
nearr: "\u2197", UpperRightArrow: "\u2197", nearrow: "\u2197", drarr: "\u2198",
searrow: "\u2198", LowerRightArrow: "\u2198", dlarr: "\u2199", swarrow: "\u2199",
LowerLeftArrow: "\u2199", nlarr: "\u219A", nleftarrow: "\u219A", nrarr: "\u219B",
nrightarrow: "\u219B", rarrw: "\u219D", rightsquigarrow: "\u219D", Larr: "\u219E",
twoheadleftarrow: "\u219E", Rarr: "\u21A0", twoheadrightarrow: "\u21A0", larrtl: "\u21A2",
leftarrowtail: "\u21A2", rarrtl: "\u21A3", rightarrowtail: "\u21A3", map: "\u21A6",
RightTeeArrow: "\u21A6", mapsto: "\u21A6", larrhk: "\u21A9", hookleftarrow: "\u21A9",
rarrhk: "\u21AA", hookrightarrow: "\u21AA", larrlp: "\u21AB", looparrowleft: "\u21AB",
rarrlp: "\u21AC", looparrowright: "\u21AC", harrw: "\u21AD", leftrightsquigarrow: "\u21AD",
nharr: "\u21AE", nleftrightarrow: "\u21AE", lsh: "\u21B0", Lsh: "\u21B0",
rsh: "\u21B1", Rsh: "\u21B1", cularr: "\u21B6", curvearrowleft: "\u21B6",
curarr: "\u21B7", curvearrowright: "\u21B7", olarr: "\u21BA", circlearrowleft: "\u21BA",
orarr: "\u21BB", circlearrowright: "\u21BB", lharu: "\u21BC", LeftVector: "\u21BC",
leftharpoonup: "\u21BC", lhard: "\u21BD", leftharpoondown: "\u21BD", DownLeftVector: "\u21BD",
uharr: "\u21BE", upharpoonright: "\u21BE", RightUpVector: "\u21BE", uharl: "\u21BF",
upharpoonleft: "\u21BF", LeftUpVector: "\u21BF", rharu: "\u21C0", RightVector: "\u21C0",
rightharpoonup: "\u21C0", rhard: "\u21C1", rightharpoondown: "\u21C1", DownRightVector: "\u21C1",
dharr: "\u21C2", RightDownVector: "\u21C2", downharpoonright: "\u21C2", dharl: "\u21C3",
LeftDownVector: "\u21C3", downharpoonleft: "\u21C3", rlarr2: "\u21C4", rightleftarrows: "\u21C4",
RightArrowLeftArrow: "\u21C4", lrarr2: "\u21C6", leftrightarrows: "\u21C6", LeftArrowRightArrow: "\u21C6",
larr2: "\u21C7", leftleftarrows: "\u21C7", uarr2: "\u21C8", upuparrows: "\u21C8",
rarr2: "\u21C9", rightrightarrows: "\u21C9", darr2: "\u21CA", downdownarrows: "\u21CA",
lrhar2: "\u21CB", ReverseEquilibrium: "\u21CB", leftrightharpoons: "\u21CB", rlhar2: "\u21CC",
rightleftharpoons: "\u21CC", Equilibrium: "\u21CC", nlArr: "\u21CD", nLeftarrow: "\u21CD",
nhArr: "\u21CE", nLeftrightarrow: "\u21CE", nrArr: "\u21CF", nRightarrow: "\u21CF",
uArr: "\u21D1", Uparrow: "\u21D1", DoubleUpArrow: "\u21D1", dArr: "\u21D3",
Downarrow: "\u21D3", DoubleDownArrow: "\u21D3", hArr: "\u21D4", Leftrightarrow: "\u21D4",
DoubleLeftRightArrow: "\u21D4", vArr: "\u21D5", Updownarrow: "\u21D5", DoubleUpDownArrow: "\u21D5",
lAarr: "\u21DA", Lleftarrow: "\u21DA", rAarr: "\u21DB", Rrightarrow: "\u21DB",
comp: "\u2201", complement: "\u2201", nexist: "\u2204", NotExists: "\u2204",
nexists: "\u2204", empty: "\u2205", emptyset: "\u2205", varnothing: "\u2205",
prod: "\u220F", coprod: "\u2210", samalg: "\u2210", sum: "\u2211",
Sum: "\u2211", plusdo: "\u2214", dotplus: "\u2214", setmn: "\u2216",
ssetmn: "\u2216", setminus: "\u2216", Backslash: "\u2216",
vprop: "\u221D",
propto: "\u221D", Proportional: "\u221D", varpropto: "\u221D", ang: "\u2220",
angle: "\u2220", angmsd: "\u2221", measuredangle: "\u2221", mid: "\u2223",
smid: "\u2223", VerticalBar: "\u2223",
nmid: "\u2224", nsmid: "\u2224",
spar: "\u2225", parallel: "\u2225", DoubleVerticalBar: "\u2225",
shortparallel: "\u2225", npar: "\u2226", nspar: "\u2226",
nparallel: "\u2226", NotDoubleVerticalBar: "\u2226",
thksim: "\u223C", Tilde: "\u223C", thicksim: "\u223C",
bsim: "\u223D", backsim: "\u223D", wreath: "\u2240", VerticalTilde: "\u2240",
wr: "\u2240", nsim: "\u2241", NotTilde: "\u2241", nsime: "\u2244",
nsimeq: "\u2244", NotTildeEqual: "\u2244", ncong: "\u2247", NotTildeFullEqual: "\u2247",
asymp: "\u2248", thkap: "\u2248", TildeTilde: "\u2248",
approx: "\u2248",
nap: "\u2249", NotTildeTilde: "\u2249", napprox: "\u2249", ape: "\u224A",
approxeq: "\u224A", bcong: "\u224C", backcong: "\u224C", bump: "\u224E",
HumpDownHump: "\u224E", Bumpeq: "\u224E", bumpe: "\u224F", HumpEqual: "\u224F",
bumpeq: "\u224F", esdot: "\u2250", DotEqual: "\u2250", doteq: "\u2250",
eDot: "\u2251", doteqdot: "\u2251", efDot: "\u2252", fallingdotseq: "\u2252",
erDot: "\u2253", risingdotseq: "\u2253", colone: "\u2254", coloneq: "\u2254",
Assign: "\u2254", ecolon: "\u2255", eqcolon: "\u2255", ecir: "\u2256",
eqcirc: "\u2256", cire: "\u2257", circeq: "\u2257", trie: "\u225C",
triangleq: "\u225C", nequiv: "\u2262", NotCongruent: "\u2262", lE: "\u2266",
LessFullEqual: "\u2266", leqq: "\u2266", nlE: "\u2266\u0338", NotGreaterFullEqual: "\u2266\u0338",
nleqq: "\u2266\u0338", gE: "\u2267", GreaterFullEqual: "\u2267", geqq: "\u2267",
ngE: "\u2267\u0338", ngeqq: "\u2267\u0338", lnE: "\u2268", lneqq: "\u2268",
lvnE: "\u2268\uFE00", lvertneqq: "\u2268\uFE00", gnE: "\u2269", gneqq: "\u2269",
gvnE: "\u2269\uFE00", gvertneqq: "\u2269\uFE00", Lt: "\u226A", NestedLessLess: "\u226A",
ll: "\u226A", Gt: "\u226B", NestedGreaterGreater: "\u226B", gg: "\u226B",
twixt: "\u226C", between: "\u226C", nlt: "\u226E", NotLess: "\u226E",
nless: "\u226E", ngt: "\u226F", NotGreater: "\u226F", ngtr: "\u226F",
nle: "\u2270", NotLessEqual: "\u2270", nleq: "\u2270", nge: "\u2271",
NotGreaterEqual: "\u2271", ngeq: "\u2271", lsim: "\u2272", LessTilde: "\u2272",
lesssim: "\u2272", gsim: "\u2273", gtrsim: "\u2273", GreaterTilde: "\u2273",
lg: "\u2276", lessgtr: "\u2276", LessGreater: "\u2276", gl: "\u2277",
gtrless: "\u2277", GreaterLess: "\u2277", pr: "\u227A", Precedes: "\u227A",
prec: "\u227A", sc: "\u227B", Succeeds: "\u227B", succ: "\u227B",
cupre: "\u227C", PrecedesSlantEqual: "\u227C", preccurlyeq: "\u227C", sccue: "\u227D",
SucceedsSlantEqual: "\u227D", succcurlyeq: "\u227D", prsim: "\u227E", precsim: "\u227E",
PrecedesTilde: "\u227E", scsim: "\u227F", succsim: "\u227F", SucceedsTilde: "\u227F",
npr: "\u2280", nprec: "\u2280", NotPrecedes: "\u2280", nsc: "\u2281",
nsucc: "\u2281", NotSucceeds: "\u2281", nsub: "\u2284", nsup: "\u2285",
nsube: "\u2288", nsubseteq: "\u2288", NotSubsetEqual: "\u2288", nsupe: "\u2289",
nsupseteq: "\u2289", NotSupersetEqual: "\u2289", subne: "\u228A", subsetneq: "\u228A",
vsubne: "\u228A\uFE00", varsubsetneq: "\u228A\uFE00", supne: "\u228B", supsetneq: "\u228B",
vsupne: "\u228B\uFE00", varsupsetneq: "\u228B\uFE00", uplus: "\u228E", UnionPlus: "\u228E",
sqsub: "\u228F", SquareSubset: "\u228F", sqsubset: "\u228F", sqsup: "\u2290",
SquareSuperset: "\u2290", sqsupset: "\u2290", sqsube: "\u2291", SquareSubsetEqual: "\u2291",
sqsubseteq: "\u2291", sqsupe: "\u2292", SquareSupersetEqual: "\u2292", sqsupseteq: "\u2292",
sqcap: "\u2293", SquareIntersection: "\u2293", sqcup: "\u2294", SquareUnion: "\u2294",
oplus: "\u2295", CirclePlus: "\u2295", ominus: "\u2296", CircleMinus: "\u2296",
otimes: "\u2297", CircleTimes: "\u2297", osol: "\u2298", odot: "\u2299",
CircleDot: "\u2299", ocir: "\u229A", circledcirc: "\u229A", oast: "\u229B",
circledast: "\u229B", odash: "\u229D", circleddash: "\u229D", plusb: "\u229E",
boxplus: "\u229E", minusb: "\u229F", boxminus: "\u229F", timesb: "\u22A0",
boxtimes: "\u22A0", sdotb: "\u22A1", dotsquare: "\u22A1", vdash: "\u22A2",
RightTee: "\u22A2", dashv: "\u22A3", LeftTee: "\u22A3", top: "\u22A4",
DownTee: "\u22A4", models: "\u22A7", vDash: "\u22A8", DoubleRightTee: "\u22A8",
Vdash: "\u22A9", Vvdash: "\u22AA", nvdash: "\u22AC", nvDash: "\u22AD",
nVdash: "\u22AE", nVDash: "\u22AF", vltri: "\u22B2", vartriangleleft: "\u22B2",
LeftTriangle: "\u22B2", vrtri: "\u22B3", vartriangleright: "\u22B3", RightTriangle: "\u22B3",
ltrie: "\u22B4", trianglelefteq: "\u22B4", LeftTriangleEqual: "\u22B4", rtrie: "\u22B5",
trianglerighteq: "\u22B5", RightTriangleEqual: "\u22B5", mumap: "\u22B8", multimap: "\u22B8",
intcal: "\u22BA", intercal: "\u22BA", veebar: "\u22BB", diam: "\u22C4",
diamond: "\u22C4", Diamond: "\u22C4", sdot: "\u22C5", sstarf: "\u22C6",
Star: "\u22C6", divonx: "\u22C7", divideontimes: "\u22C7", bowtie: "\u22C8",
ltimes: "\u22C9", rtimes: "\u22CA", lthree: "\u22CB", leftthreetimes: "\u22CB",
rthree: "\u22CC", rightthreetimes: "\u22CC", bsime: "\u22CD", backsimeq: "\u22CD",
cuvee: "\u22CE", curlyvee: "\u22CE", cuwed: "\u22CF", curlywedge: "\u22CF",
Sub: "\u22D0", Subset: "\u22D0", Sup: "\u22D1", Supset: "\u22D1",
Cap: "\u22D2", Cup: "\u22D3", fork: "\u22D4", pitchfork: "\u22D4",
ldot: "\u22D6", lessdot: "\u22D6", gsdot: "\u22D7", gtrdot: "\u22D7",
Ll: "\u22D8", Gg: "\u22D9", ggg: "\u22D9", leg: "\u22DA",
LessEqualGreater: "\u22DA", lesseqgtr: "\u22DA", gel: "\u22DB", gtreqless: "\u22DB",
GreaterEqualLess: "\u22DB", cuepr: "\u22DE", curlyeqprec: "\u22DE", cuesc: "\u22DF",
curlyeqsucc: "\u22DF", lnsim: "\u22E6", gnsim: "\u22E7", prnsim: "\u22E8",
precnsim: "\u22E8", scnsim: "\u22E9", succnsim: "\u22E9", nltri: "\u22EA",
ntriangleleft: "\u22EA", NotLeftTriangle: "\u22EA", nrtri: "\u22EB", ntriangleright: "\u22EB",
NotRightTriangle: "\u22EB", nltrie: "\u22EC", ntrianglelefteq: "\u22EC", NotLeftTriangleEqual: "\u22EC",
nrtrie: "\u22ED", ntrianglerighteq: "\u22ED", NotRightTriangleEqual: "\u22ED", vellip: "\u22EE",
barwed: "\u2305", barwedge: "\u2305", Barwed: "\u2306", doublebarwedge: "\u2306",
lceil: "\u2308", LeftCeiling: "\u2308", rceil: "\u2309", RightCeiling: "\u2309",
lfloor: "\u230A", LeftFloor: "\u230A", rfloor: "\u230B", RightFloor: "\u230B",
drcrop: "\u230C", dlcrop: "\u230D", urcrop: "\u230E", ulcrop: "\u230F",
telrec: "\u2315", target: "\u2316", ulcorn: "\u231C", ulcorner: "\u231C",
urcorn: "\u231D", urcorner: "\u231D", dlcorn: "\u231E", llcorner: "\u231E",
drcorn: "\u231F", lrcorner: "\u231F", frown: "\u2322", sfrown: "\u2322",
smile: "\u2323", ssmile: "\u2323",
blank: "\u2423", oS: "\u24C8",
circledS: "\u24C8", boxh: "\u2500", boxv: "\u2502", boxdr: "\u250C",
boxdl: "\u2510", boxur: "\u2514", boxul: "\u2518", boxvr: "\u251C",
boxvl: "\u2524", boxhd: "\u252C", boxhu: "\u2534", boxvh: "\u253C",
boxH: "\u2550", boxV: "\u2551", boxdR: "\u2552", boxDr: "\u2553",
boxDR: "\u2554", boxdL: "\u2555", boxDl: "\u2556", boxDL: "\u2557",
boxuR: "\u2558", boxUr: "\u2559", boxUR: "\u255A", boxuL: "\u255B",
boxUl: "\u255C", boxUL: "\u255D", boxvR: "\u255E", boxVr: "\u255F",
boxVR: "\u2560", boxvL: "\u2561", boxVl: "\u2562", boxVL: "\u2563",
boxHd: "\u2564", boxhD: "\u2565", boxHD: "\u2566", boxHu: "\u2567",
boxhU: "\u2568", boxHU: "\u2569", boxvH: "\u256A", boxVh: "\u256B",
boxVH: "\u256C", uhblk: "\u2580", lhblk: "\u2584", block: "\u2588",
blk14: "\u2591", blk12: "\u2592", blk34: "\u2593", squ: "\u25A1",
Square: "\u25A1", squf: "\u25AA", blacksquare: "\u25AA", rect: "\u25AD",
marker: "\u25AE", xutri: "\u25B3", bigtriangleup: "\u25B3", utrif: "\u25B4",
blacktriangle: "\u25B4", utri: "\u25B5", triangle: "\u25B5", rtrif: "\u25B8",
blacktriangleright: "\u25B8", rtri: "\u25B9", triangleright: "\u25B9", xdtri: "\u25BD",
bigtriangledown: "\u25BD", dtrif: "\u25BE", blacktriangledown: "\u25BE", dtri: "\u25BF",
triangledown: "\u25BF", ltrif: "\u25C2", blacktriangleleft: "\u25C2", ltri: "\u25C3",
triangleleft: "\u25C3", loz: "\u25CA", lozenge: "\u25CA", cir: "\u25CB",
xcirc: "\u25EF", bigcirc: "\u25EF", starf: "\u2605", bigstar: "\u2605",
star: "\u2606", phone: "\u260E", female: "\u2640", male: "\u2642",
spades: "\u2660", spadesuit: "\u2660", clubs: "\u2663", clubsuit: "\u2663",
hearts: "\u2665", heartsuit: "\u2665", diams: "\u2666", diamondsuit: "\u2666",
sung: "\u266A", flat: "\u266D", natur: "\u266E", natural: "\u266E",
sharp: "\u266F", check: "\u2713", checkmark: "\u2713", cross: "\u2717",
malt: "\u2720", maltese: "\u2720", sext: "\u2736", xharr: "\u27F7",
longleftrightarrow: "\u27F7", LongLeftRightArrow: "\u27F7", xlArr: "\u27F8", Longleftarrow: "\u27F8",
DoubleLongLeftArrow: "\u27F8", xrArr: "\u27F9", Longrightarrow: "\u27F9", DoubleLongRightArrow: "\u27F9",
xhArr: "\u27FA", Longleftrightarrow: "\u27FA", DoubleLongLeftRightArrow: "\u27FA", rpargt: "\u2994",
lpargt: "\u29A0", lozf: "\u29EB", blacklozenge: "\u29EB", amalg: "\u2A3F",
les: "\u2A7D", LessSlantEqual: "\u2A7D", leqslant: "\u2A7D", nles: "\u2A7D\u0338",
NotLessSlantEqual: "\u2A7D\u0338", nleqslant: "\u2A7D\u0338", ges: "\u2A7E", GreaterSlantEqual: "\u2A7E",
geqslant: "\u2A7E", nges: "\u2A7E\u0338", NotGreaterSlantEqual: "\u2A7E\u0338", ngeqslant: "\u2A7E\u0338",
lap: "\u2A85", lessapprox: "\u2A85", gap: "\u2A86", gtrapprox: "\u2A86",
lne: "\u2A87", lneq: "\u2A87", gne: "\u2A88", gneq: "\u2A88",
lnap: "\u2A89", lnapprox: "\u2A89", gnap: "\u2A8A", gnapprox: "\u2A8A",
lEg: "\u2A8B", lesseqqgtr: "\u2A8B", gEl: "\u2A8C", gtreqqless: "\u2A8C",
els: "\u2A95", eqslantless: "\u2A95", egs: "\u2A96", eqslantgtr: "\u2A96",
pre: "\u2AAF", preceq: "\u2AAF", PrecedesEqual: "\u2AAF", npre: "\u2AAF\u0338",
npreceq: "\u2AAF\u0338", NotPrecedesEqual: "\u2AAF\u0338", sce: "\u2AB0", succeq: "\u2AB0",
SucceedsEqual: "\u2AB0", nsce: "\u2AB0\u0338", nsucceq: "\u2AB0\u0338", NotSucceedsEqual: "\u2AB0\u0338",
prnE: "\u2AB5", precneqq: "\u2AB5", scnE: "\u2AB6", succneqq: "\u2AB6",
prap: "\u2AB7", precapprox: "\u2AB7", scap: "\u2AB8", succapprox: "\u2AB8",
prnap: "\u2AB9", precnapprox: "\u2AB9", scnap: "\u2ABA", succnapprox: "\u2ABA",
subE: "\u2AC5", subseteqq: "\u2AC5", nsubE: "\u2AC5\u0338", nsubseteqq: "\u2AC5\u0338",
supE: "\u2AC6", supseteqq: "\u2AC6", nsupE: "\u2AC6\u0338", nsupseteqq: "\u2AC6\u0338",
subnE: "\u2ACB", subsetneqq: "\u2ACB", vsubnE: "\u2ACB\uFE00", varsubsetneqq: "\u2ACB\uFE00",
supnE: "\u2ACC", supsetneqq: "\u2ACC", vsupnE: "\u2ACC\uFE00", varsupsetneqq: "\u2ACC\uFE00",
"b.Gamma": "\uD835\uDEAA", "b.Delta": "\uD835\uDEAA", "b.Theta": "\uD835\uDEAF", "b.Lambda": "\uD835\uDEB2",
"b.Xi": "\uD835\uDEB5", "b.Pi": "\uD835\uDEB7", "b.Sigma": "\uD835\uDEBA", "b.Upsi": "\uD835\uDEBC",
"b.Phi": "\uD835\uDEBD", "b.Psi": "\uD835\uDEBF", "b.Omega": "\uD835\uDEC0", "b.alpha": "\uD835\uDEC2",
"b.beta": "\uD835\uDEC3", "b.gamma": "\uD835\uDEC4", "b.delta": "\uD835\uDEC5", "b.epsi": "\uD835\uDEC6",
"b.zeta": "\uD835\uDEC7", "b.eta": "\uD835\uDEC8", "b.thetas": "\uD835\uDEC9", "b.iota": "\uD835\uDECA",
"b.kappa": "\uD835\uDECB", "b.lambda": "\uD835\uDECC", "b.mu": "\uD835\uDECD", "b.nu": "\uD835\uDECE",
"b.xi": "\uD835\uDECF", "b.pi": "\uD835\uDED1", "b.rho": "\uD835\uDED2", "b.sigmav": "\uD835\uDED3",
"b.sigma": "\uD835\uDED4", "b.tau": "\uD835\uDED5", "b.upsi": "\uD835\uDED6", "b.phi": "\uD835\uDED7",
"b.chi": "\uD835\uDED8", "b.psi": "\uD835\uDED9", "b.omega": "\uD835\uDEDA", "b.epsiv": "\uD835\uDEDC",
"b.thetav": "\uD835\uDEDD", "b.kappav": "\uD835\uDEDE", "b.phiv": "\uD835\uDEDF", "b.rhov": "\uD835\uDEE0",
"b.piv": "\uD835\uDEE1", fflig: "\uFB00", filig: "\uFB01", fllig: "\uFB02",
ffilig: "\uFB03", ffllig: "\uFB04", sbsol: "\uFE68"
};
// Some unofficial aliases
ISO8879CharMap.prime = "\u2032"; // same as vprime
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.nature.com/onc/volumes/31/issues/6",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.nature.com/articles/onc2011282",
"items": [
{
"itemType": "journalArticle",
"title": "Trastuzumab (herceptin) targets gastric cancer stem cells characterized by CD90 phenotype",
"creators": [
{
"firstName": "J.",
"lastName": "Jiang",
"creatorType": "author"
},
{
"firstName": "Y.",
"lastName": "Zhang",
"creatorType": "author"
},
{
"firstName": "S.",
"lastName": "Chuai",
"creatorType": "author"
},
{
"firstName": "Z.",
"lastName": "Wang",
"creatorType": "author"
},
{
"firstName": "D.",
"lastName": "Zheng",
"creatorType": "author"
},
{
"firstName": "F.",
"lastName": "Xu",
"creatorType": "author"
},
{
"firstName": "Y.",
"lastName": "Zhang",
"creatorType": "author"
},
{
"firstName": "C.",
"lastName": "Li",
"creatorType": "author"
},
{
"firstName": "Y.",
"lastName": "Liang",
"creatorType": "author"
},
{
"firstName": "Z.",
"lastName": "Chen",
"creatorType": "author"
}
],
"date": "2012-02",
"DOI": "10.1038/onc.2011.282",
"ISSN": "1476-5594",
"abstractNote": "Identification and characterization of cancer stem cells (CSCs) in gastric cancer are difficult owing to the lack of specific markers and consensus methods. In this study, we show that cells with the CD90 surface marker in gastric tumors could be enriched under non-adherent, serum-free and sphere-forming conditions. These CD90+ cells possess a higher ability to initiate tumor in vivo and could re-establish the cellular hierarchy of tumors from single-cell implantation, demonstrating their self-renewal properties. Interestingly, higher proportion of CD90+ cells correlates with higher in vivo tumorigenicity of gastric primary tumor models. In addition, it was found that ERBB2 was overexpressed in about 25% of the gastric primary tumor models, which correlates with the higher level of CD90 expression in these tumors. Trastuzumab (humanized anti-ERBB2 antibody) treatment of high-tumorigenic gastric primary tumor models could reduce the CD90+ population in tumor mass and suppress tumor growth when combined with traditional chemotherapy. Moreover, tumorigenicity of tumor cells could also be suppressed when trastuzumab treatment starts at the same time as cell implantation. Therefore, we have identified a CSC population in gastric primary tumors characterized by their CD90 phenotype. The finding that trastuzumab targets the CSC population in gastric tumors suggests that ERBB2 signaling has a role in maintaining CSC populations, thus contributing to carcinogenesis and tumor invasion. In conclusion, the results from this study provide new insights into the gastric tumorigenic process and offer potential implications for the development of anticancer drugs as well as therapeutic treatment of gastric cancers.",
"issue": "6",
"language": "en",
"libraryCatalog": "www.nature.com",
"pages": "671-682",
"publicationTitle": "Oncogene",
"rights": "2012 Macmillan Publishers Limited",
"url": "https://www.nature.com/articles/onc2011282",
"volume": "31",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Apoptosis"
},
{
"tag": "Cell Biology"
},
{
"tag": "Human Genetics"
},
{
"tag": "Internal Medicine"
},
{
"tag": "Medicine/Public Health"
},
{
"tag": "Oncology"
},
{
"tag": "general"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.nature.com/articles/nature10669",
"items": [
{
"itemType": "journalArticle",
"title": "Gravitational detection of a low-mass dark satellite galaxy at cosmological distance",
"creators": [
{
"firstName": "S.",
"lastName": "Vegetti",
"creatorType": "author"
},
{
"firstName": "D. J.",
"lastName": "Lagattuta",
"creatorType": "author"
},
{
"firstName": "J. P.",
"lastName": "McKean",
"creatorType": "author"
},
{
"firstName": "M. W.",
"lastName": "Auger",
"creatorType": "author"
},
{
"firstName": "C. D.",
"lastName": "Fassnacht",
"creatorType": "author"
},
{
"firstName": "L. V. E.",
"lastName": "Koopmans",
"creatorType": "author"
}
],
"date": "2012-01",
"DOI": "10.1038/nature10669",
"ISSN": "1476-4687",
"abstractNote": "The discovery of a distant, low-mass satellite galaxy helps to constrain the mass function for substructure beyond the local Universe to a form that agrees at the 95 per cent confidence level with predictions based on cold dark matter.",
"issue": "7381",
"language": "en",
"libraryCatalog": "www.nature.com",
"pages": "341-343",
"publicationTitle": "Nature",
"rights": "2012 Springer Nature Limited",
"url": "https://www.nature.com/articles/nature10669",
"volume": "481",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Cosmology"
},
{
"tag": "Galaxies and clusters"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.nature.com/articles/481237a",
"items": [
{
"itemType": "journalArticle",
"title": "Antarctic Treaty is cold comfort",
"creators": [],
"date": "2012-01",
"DOI": "10.1038/481237a",
"ISSN": "1476-4687",
"abstractNote": "Researchers need to cement the bond between science and the South Pole if the region is to remain one of peace and collaboration.",
"issue": "7381",
"language": "en",
"libraryCatalog": "www.nature.com",
"pages": "237-237",
"publicationTitle": "Nature",
"rights": "2012 Springer Nature Limited",
"url": "https://www.nature.com/articles/481237a",
"volume": "481",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Policy"
},
{
"tag": "Politics"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.nature.com/articles/nature10728",
"items": [
{
"itemType": "journalArticle",
"title": "Structure of HDAC3 bound to co-repressor and inositol tetraphosphate",
"creators": [
{
"firstName": "Peter J.",
"lastName": "Watson",
"creatorType": "author"
},
{
"firstName": "Louise",
"lastName": "Fairall",
"creatorType": "author"
},
{
"firstName": "Guilherme M.",
"lastName": "Santos",
"creatorType": "author"
},
{
"firstName": "John W. R.",
"lastName": "Schwabe",
"creatorType": "author"
}
],
"date": "2012-01",
"DOI": "10.1038/nature10728",
"ISSN": "1476-4687",
"abstractNote": "Histone deacetylase enzymes (HDACs) are emerging cancer drug targets. They regulate gene expression by removing acetyl groups from lysine residues in histone tails, resulting in chromatin condensation. The enzymatic activity of most class I HDACs requires recruitment into multi-subunit co-repressor complexes, which are in turn recruited to chromatin by repressive transcription factors. Here we report the structure of a complex between an HDAC and a co-repressor, namely, human HDAC3 with the deacetylase activation domain (DAD) from the human SMRT co-repressor (also known as NCOR2). The structure reveals two remarkable features. First, the SMRT-DAD undergoes a large structural rearrangement on forming the complex. Second, there is an essential inositol tetraphosphate molecule—d-myo-inositol-(1,4,5,6)-tetrakisphosphate (Ins(1,4,5,6)P4)—acting as an ‘intermolecular glue’ between the two proteins. Assembly of the complex is clearly dependent on the Ins(1,4,5,6)P4, which may act as a regulator—potentially explaining why inositol phosphates and their kinases have been found to act as transcriptional regulators. This mechanism for the activation of HDAC3 appears to be conserved in class I HDACs from yeast to humans, and opens the way to novel therapeutic opportunities.",
"issue": "7381",
"language": "en",
"libraryCatalog": "www.nature.com",
"pages": "335-340",
"publicationTitle": "Nature",
"rights": "2011 Springer Nature Limited",
"url": "https://www.nature.com/articles/nature10728",
"volume": "481",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Humanities and Social Sciences"
},
{
"tag": "Science"
},
{
"tag": "Science"
},
{
"tag": "multidisciplinary"
},
{
"tag": "multidisciplinary"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.nature.com/articles/ng1901",
"items": [
{
"itemType": "journalArticle",
"title": "Genome-wide analysis of estrogen receptor binding sites",
"creators": [
{
"firstName": "Jason S.",
"lastName": "Carroll",
"creatorType": "author"
},
{
"firstName": "Clifford A.",
"lastName": "Meyer",
"creatorType": "author"
},
{
"firstName": "Jun",
"lastName": "Song",
"creatorType": "author"
},
{
"firstName": "Wei",
"lastName": "Li",
"creatorType": "author"
},
{
"firstName": "Timothy R.",
"lastName": "Geistlinger",
"creatorType": "author"
},
{
"firstName": "Jérôme",
"lastName": "Eeckhoute",
"creatorType": "author"
},
{
"firstName": "Alexander S.",
"lastName": "Brodsky",
"creatorType": "author"
},
{
"firstName": "Erika Krasnickas",
"lastName": "Keeton",
"creatorType": "author"
},
{
"firstName": "Kirsten C.",
"lastName": "Fertuck",
"creatorType": "author"
},
{
"firstName": "Giles F.",
"lastName": "Hall",
"creatorType": "author"
},
{
"firstName": "Qianben",
"lastName": "Wang",
"creatorType": "author"
},
{
"firstName": "Stefan",
"lastName": "Bekiranov",
"creatorType": "author"
},
{
"firstName": "Victor",
"lastName": "Sementchenko",
"creatorType": "author"
},
{
"firstName": "Edward A.",
"lastName": "Fox",
"creatorType": "author"
},
{
"firstName": "Pamela A.",
"lastName": "Silver",
"creatorType": "author"
},
{
"firstName": "Thomas R.",
"lastName": "Gingeras",
"creatorType": "author"
},
{
"firstName": "X. Shirley",
"lastName": "Liu",
"creatorType": "author"
},
{
"firstName": "Myles",
"lastName": "Brown",
"creatorType": "author"
}
],
"date": "2006-11",
"DOI": "10.1038/ng1901",
"ISSN": "1546-1718",
"abstractNote": "The estrogen receptor is the master transcriptional regulator of breast cancer phenotype and the archetype of a molecular therapeutic target. We mapped all estrogen receptor and RNA polymerase II binding sites on a genome-wide scale, identifying the authentic cis binding sites and target genes, in breast cancer cells. Combining this unique resource with gene expression data demonstrates distinct temporal mechanisms of estrogen-mediated gene regulation, particularly in the case of estrogen-suppressed genes. Furthermore, this resource has allowed the identification of cis-regulatory sites in previously unexplored regions of the genome and the cooperating transcription factors underlying estrogen signaling in breast cancer.",
"issue": "11",
"journalAbbreviation": "Nat Genet",
"language": "en",
"libraryCatalog": "www.nature.com",
"pages": "1289-1297",
"publicationTitle": "Nature Genetics",
"rights": "2006 Springer Nature America, Inc.",
"url": "https://www.nature.com/articles/ng1901",
"volume": "38",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Agriculture"
},
{
"tag": "Animal Genetics and Genomics"
},
{
"tag": "Biomedicine"
},
{
"tag": "Cancer Research"
},
{
"tag": "Gene Function"
},
{
"tag": "Human Genetics"
},
{
"tag": "general"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.nature.com/articles/nature08497",
"items": [
{
"itemType": "journalArticle",
"title": "An oestrogen-receptor-α-bound human chromatin interactome",
"creators": [
{
"firstName": "Melissa J.",
"lastName": "Fullwood",
"creatorType": "author"
},
{
"firstName": "Mei Hui",
"lastName": "Liu",
"creatorType": "author"
},
{
"firstName": "You Fu",
"lastName": "Pan",
"creatorType": "author"
},
{
"firstName": "Jun",
"lastName": "Liu",
"creatorType": "author"
},
{
"firstName": "Han",
"lastName": "Xu",
"creatorType": "author"
},
{
"firstName": "Yusoff Bin",
"lastName": "Mohamed",
"creatorType": "author"
},
{
"firstName": "Yuriy L.",
"lastName": "Orlov",
"creatorType": "author"
},
{
"firstName": "Stoyan",
"lastName": "Velkov",
"creatorType": "author"
},
{
"firstName": "Andrea",
"lastName": "Ho",
"creatorType": "author"
},
{
"firstName": "Poh Huay",
"lastName": "Mei",
"creatorType": "author"
},
{
"firstName": "Elaine G. Y.",
"lastName": "Chew",
"creatorType": "author"
},
{
"firstName": "Phillips Yao Hui",
"lastName": "Huang",
"creatorType": "author"
},
{
"firstName": "Willem-Jan",
"lastName": "Welboren",
"creatorType": "author"
},
{
"firstName": "Yuyuan",
"lastName": "Han",
"creatorType": "author"
},
{
"firstName": "Hong Sain",
"lastName": "Ooi",
"creatorType": "author"
},
{
"firstName": "Pramila N.",
"lastName": "Ariyaratne",
"creatorType": "author"
},
{
"firstName": "Vinsensius B.",
"lastName": "Vega",
"creatorType": "author"
},
{
"firstName": "Yanquan",
"lastName": "Luo",
"creatorType": "author"
},
{
"firstName": "Peck Yean",
"lastName": "Tan",
"creatorType": "author"
},
{
"firstName": "Pei Ye",
"lastName": "Choy",
"creatorType": "author"
},
{
"firstName": "K. D. Senali Abayratna",
"lastName": "Wansa",
"creatorType": "author"
},
{
"firstName": "Bing",
"lastName": "Zhao",
"creatorType": "author"
},
{
"firstName": "Kar Sian",
"lastName": "Lim",
"creatorType": "author"
},
{
"firstName": "Shi Chi",
"lastName": "Leow",
"creatorType": "author"
},
{
"firstName": "Jit Sin",
"lastName": "Yow",
"creatorType": "author"
},
{
"firstName": "Roy",
"lastName": "Joseph",
"creatorType": "author"
},
{
"firstName": "Haixia",
"lastName": "Li",
"creatorType": "author"
},
{
"firstName": "Kartiki V.",
"lastName": "Desai",
"creatorType": "author"
},
{
"firstName": "Jane S.",
"lastName": "Thomsen",
"creatorType": "author"
},
{
"firstName": "Yew Kok",
"lastName": "Lee",
"creatorType": "author"
},
{
"firstName": "R. Krishna Murthy",
"lastName": "Karuturi",
"creatorType": "author"
},
{
"firstName": "Thoreau",
"lastName": "Herve",
"creatorType": "author"
},
{
"firstName": "Guillaume",
"lastName": "Bourque",
"creatorType": "author"
},
{
"firstName": "Hendrik G.",
"lastName": "Stunnenberg",
"creatorType": "author"
},
{
"firstName": "Xiaoan",
"lastName": "Ruan",
"creatorType": "author"
},
{
"firstName": "Valere",
"lastName": "Cacheux-Rataboul",
"creatorType": "author"
},
{
"firstName": "Wing-Kin",
"lastName": "Sung",
"creatorType": "author"
},
{
"firstName": "Edison T.",
"lastName": "Liu",
"creatorType": "author"
},
{
"firstName": "Chia-Lin",
"lastName": "Wei",
"creatorType": "author"
},
{
"firstName": "Edwin",
"lastName": "Cheung",
"creatorType": "author"
},
{
"firstName": "Yijun",
"lastName": "Ruan",
"creatorType": "author"
}
],
"date": "2009-11",
"DOI": "10.1038/nature08497",
"ISSN": "1476-4687",
"abstractNote": "Genomes are organized into high-level three-dimensional structures, and DNA elements separated by long genomic distances can in principle interact functionally. Many transcription factors bind to regulatory DNA elements distant from gene promoters. Although distal binding sites have been shown to regulate transcription by long-range chromatin interactions at a few loci, chromatin interactions and their impact on transcription regulation have not been investigated in a genome-wide manner. Here we describe the development of a new strategy, chromatin interaction analysis by paired-end tag sequencing (ChIA-PET) for the de novo detection of global chromatin interactions, with which we have comprehensively mapped the chromatin interaction network bound by oestrogen receptor α (ER-α) in the human genome. We found that most high-confidence remote ER-α-binding sites are anchored at gene promoters through long-range chromatin interactions, suggesting that ER-α functions by extensive chromatin looping to bring genes together for coordinated transcriptional regulation. We propose that chromatin interactions constitute a primary mechanism for regulating transcription in mammalian genomes.",
"issue": "7269",
"language": "en",
"libraryCatalog": "www.nature.com",
"pages": "58-64",
"publicationTitle": "Nature",
"rights": "2009 Macmillan Publishers Limited. All rights reserved",
"url": "https://www.nature.com/articles/nature08497",
"volume": "462",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Humanities and Social Sciences"
},
{
"tag": "Science"
},
{
"tag": "Science"
},
{
"tag": "multidisciplinary"
},
{
"tag": "multidisciplinary"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.nature.com/articles/nsmb.1371",
"items": [
{
"itemType": "journalArticle",
"title": "Structure of the SAM-II riboswitch bound to S-adenosylmethionine",
"creators": [
{
"firstName": "Sunny D.",
"lastName": "Gilbert",
"creatorType": "author"
},
{
"firstName": "Robert P.",
"lastName": "Rambo",
"creatorType": "author"
},
{
"firstName": "Daria",
"lastName": "Van Tyne",
"creatorType": "author"
},
{
"firstName": "Robert T.",
"lastName": "Batey",
"creatorType": "author"
}
],
"date": "2008-02",
"DOI": "10.1038/nsmb.1371",
"ISSN": "1545-9985",
"abstractNote": "In bacteria, numerous genes harbor regulatory elements in the 5′ untranslated regions of their mRNA, termed riboswitches, which control gene expression by binding small-molecule metabolites. These sequences influence the secondary and tertiary structure of the RNA in a ligand-dependent manner, thereby directing its transcription or translation. The crystal structure of an S-adenosylmethionine–responsive riboswitch found predominantly in proteobacteria, SAM-II, has been solved to reveal a second means by which RNA interacts with this important cellular metabolite. Notably, this is the first structure of a complete riboswitch containing all sequences associated with both the ligand binding aptamer domain and the regulatory expression platform. Chemical probing of this RNA in the absence and presence of ligand shows how the structure changes in response to S-adenosylmethionine to sequester the ribosomal binding site and affect translational gene regulation.",
"issue": "2",
"journalAbbreviation": "Nat Struct Mol Biol",
"language": "en",
"libraryCatalog": "www.nature.com",
"pages": "177-182",
"publicationTitle": "Nature Structural & Molecular Biology",
"rights": "2008 Springer Nature America, Inc.",
"url": "https://www.nature.com/articles/nsmb.1371",
"volume": "15",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Biochemistry"
},
{
"tag": "Biological Microscopy"
},
{
"tag": "Life Sciences"
},
{
"tag": "Membrane Biology"
},
{
"tag": "Protein Structure"
},
{
"tag": "general"
},
{
"tag": "general"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.nature.com/ng/volumes/38/issues/11",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.nature.com/nbt/volumes/30/issues/3",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.nature.com/articles/nature10669",
"items": [
{
"itemType": "journalArticle",
"title": "Gravitational detection of a low-mass dark satellite galaxy at cosmological distance",
"creators": [
{
"firstName": "S.",
"lastName": "Vegetti",
"creatorType": "author"
},
{
"firstName": "D. J.",
"lastName": "Lagattuta",
"creatorType": "author"
},
{
"firstName": "J. P.",
"lastName": "McKean",
"creatorType": "author"
},
{
"firstName": "M. W.",
"lastName": "Auger",
"creatorType": "author"
},
{
"firstName": "C. D.",
"lastName": "Fassnacht",
"creatorType": "author"
},
{
"firstName": "L. V. E.",
"lastName": "Koopmans",
"creatorType": "author"
}
],
"date": "2012-01",
"DOI": "10.1038/nature10669",
"ISSN": "1476-4687",
"abstractNote": "The discovery of a distant, low-mass satellite galaxy helps to constrain the mass function for substructure beyond the local Universe to a form that agrees at the 95 per cent confidence level with predictions based on cold dark matter.",
"issue": "7381",
"language": "en",
"libraryCatalog": "www.nature.com",
"pages": "341-343",
"publicationTitle": "Nature",
"rights": "2012 Springer Nature Limited",
"url": "https://www.nature.com/articles/nature10669",
"volume": "481",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Cosmology"
},
{
"tag": "Galaxies and clusters"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.nature.com/articles/nature11968",
"items": [
{
"itemType": "journalArticle",
"title": "Patterns of population epigenomic diversity",
"creators": [
{
"firstName": "Robert J.",
"lastName": "Schmitz",
"creatorType": "author"
},
{
"firstName": "Matthew D.",
"lastName": "Schultz",
"creatorType": "author"
},
{
"firstName": "Mark A.",
"lastName": "Urich",
"creatorType": "author"
},
{
"firstName": "Joseph R.",
"lastName": "Nery",
"creatorType": "author"
},
{
"firstName": "Mattia",
"lastName": "Pelizzola",
"creatorType": "author"
},
{
"firstName": "Ondrej",
"lastName": "Libiger",
"creatorType": "author"
},
{
"firstName": "Andrew",
"lastName": "Alix",
"creatorType": "author"
},
{
"firstName": "Richard B.",
"lastName": "McCosh",
"creatorType": "author"
},
{
"firstName": "Huaming",
"lastName": "Chen",
"creatorType": "author"
},
{
"firstName": "Nicholas J.",
"lastName": "Schork",
"creatorType": "author"
},
{
"firstName": "Joseph R.",
"lastName": "Ecker",
"creatorType": "author"
}
],
"date": "2013-03",
"DOI": "10.1038/nature11968",
"ISSN": "1476-4687",
"abstractNote": "Natural epigenetic variation provides a source for the generation of phenotypic diversity, but to understand its contribution to such diversity, its interaction with genetic variation requires further investigation. Here we report population-wide DNA sequencing of genomes, transcriptomes and methylomes of wild Arabidopsis thaliana accessions. Single cytosine methylation polymorphisms are not linked to genotype. However, the rate of linkage disequilibrium decay amongst differentially methylated regions targeted by RNA-directed DNA methylation is similar to the rate for single nucleotide polymorphisms. Association analyses of these RNA-directed DNA methylation regions with genetic variants identified thousands of methylation quantitative trait loci, which revealed the population estimate of genetically dependent methylation variation. Analysis of invariably methylated transposons and genes across this population indicates that loci targeted by RNA-directed DNA methylation are epigenetically activated in pollen and seeds, which facilitates proper development of these structures.",
"issue": "7440",
"language": "en",
"libraryCatalog": "www.nature.com",
"pages": "193-198",
"publicationTitle": "Nature",
"rights": "2013 The Author(s)",
"url": "https://www.nature.com/articles/nature11968",
"volume": "495",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Epigenomics"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.nature.com/articles/nature11899",
"items": [
{
"itemType": "journalArticle",
"title": "Crystal structures of the calcium pump and sarcolipin in the Mg2+-bound E1 state",
"creators": [
{
"firstName": "Chikashi",
"lastName": "Toyoshima",
"creatorType": "author"
},
{
"firstName": "Shiho",
"lastName": "Iwasawa",
"creatorType": "author"
},
{
"firstName": "Haruo",
"lastName": "Ogawa",
"creatorType": "author"
},
{
"firstName": "Ayami",
"lastName": "Hirata",
"creatorType": "author"
},
{
"firstName": "Junko",
"lastName": "Tsueda",
"creatorType": "author"
},
{
"firstName": "Giuseppe",
"lastName": "Inesi",
"creatorType": "author"
}
],
"date": "2013-03",
"DOI": "10.1038/nature11899",
"ISSN": "1476-4687",
"abstractNote": "The X-ray crystal structures of SERCA1a, a Ca2+-ATPase from the sarcoplasmic reticulum, in the presence and absence of sarcolipin are reported; the structures indicate that sarcolipin stabilizes SERCA1a in an ‘open’ state that has not been well characterised previously, in which SERCA1a has not yet accepted calcium into its two high-affinity binding sites.",
"issue": "7440",
"language": "en",
"libraryCatalog": "www.nature.com",
"pages": "260-264",
"publicationTitle": "Nature",
"rights": "2013 Springer Nature Limited",
"url": "https://www.nature.com/articles/nature11899",
"volume": "495",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "X-ray crystallography"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.nature.com/articles/nature09944",
"items": [
{
"itemType": "journalArticle",
"title": "Enterotypes of the human gut microbiome",
"creators": [
{
"firstName": "Manimozhiyan",
"lastName": "Arumugam",
"creatorType": "author"
},
{
"firstName": "Jeroen",
"lastName": "Raes",
"creatorType": "author"
},
{
"firstName": "Eric",
"lastName": "Pelletier",
"creatorType": "author"
},
{
"firstName": "Denis",
"lastName": "Le Paslier",
"creatorType": "author"
},
{
"firstName": "Takuji",
"lastName": "Yamada",
"creatorType": "author"
},
{
"firstName": "Daniel R.",
"lastName": "Mende",
"creatorType": "author"
},
{
"firstName": "Gabriel R.",
"lastName": "Fernandes",
"creatorType": "author"
},
{
"firstName": "Julien",
"lastName": "Tap",
"creatorType": "author"
},
{
"firstName": "Thomas",
"lastName": "Bruls",
"creatorType": "author"
},
{
"firstName": "Jean-Michel",
"lastName": "Batto",
"creatorType": "author"
},
{
"firstName": "Marcelo",
"lastName": "Bertalan",
"creatorType": "author"
},
{
"firstName": "Natalia",
"lastName": "Borruel",
"creatorType": "author"
},
{
"firstName": "Francesc",
"lastName": "Casellas",
"creatorType": "author"
},
{
"firstName": "Leyden",
"lastName": "Fernandez",
"creatorType": "author"
},
{
"firstName": "Laurent",
"lastName": "Gautier",
"creatorType": "author"
},
{
"firstName": "Torben",
"lastName": "Hansen",
"creatorType": "author"
},
{
"firstName": "Masahira",
"lastName": "Hattori",
"creatorType": "author"
},
{
"firstName": "Tetsuya",
"lastName": "Hayashi",
"creatorType": "author"
},
{
"firstName": "Michiel",
"lastName": "Kleerebezem",
"creatorType": "author"
},
{
"firstName": "Ken",
"lastName": "Kurokawa",
"creatorType": "author"
},
{
"firstName": "Marion",
"lastName": "Leclerc",
"creatorType": "author"
},
{
"firstName": "Florence",
"lastName": "Levenez",
"creatorType": "author"
},
{
"firstName": "Chaysavanh",
"lastName": "Manichanh",
"creatorType": "author"
},
{
"firstName": "H. Bjørn",
"lastName": "Nielsen",
"creatorType": "author"
},
{
"firstName": "Trine",
"lastName": "Nielsen",
"creatorType": "author"
},
{
"firstName": "Nicolas",
"lastName": "Pons",
"creatorType": "author"
},
{
"firstName": "Julie",
"lastName": "Poulain",
"creatorType": "author"
},
{
"firstName": "Junjie",
"lastName": "Qin",
"creatorType": "author"
},
{
"firstName": "Thomas",
"lastName": "Sicheritz-Ponten",
"creatorType": "author"
},
{
"firstName": "Sebastian",
"lastName": "Tims",
"creatorType": "author"
},
{
"firstName": "David",
"lastName": "Torrents",
"creatorType": "author"
},
{
"firstName": "Edgardo",
"lastName": "Ugarte",
"creatorType": "author"
},
{
"firstName": "Erwin G.",
"lastName": "Zoetendal",
"creatorType": "author"
},
{
"firstName": "Jun",
"lastName": "Wang",
"creatorType": "author"
},
{
"firstName": "Francisco",
"lastName": "Guarner",
"creatorType": "author"
},
{
"firstName": "Oluf",
"lastName": "Pedersen",
"creatorType": "author"
},
{
"firstName": "Willem M.",
"lastName": "de Vos",
"creatorType": "author"
},
{
"firstName": "Søren",
"lastName": "Brunak",
"creatorType": "author"
},
{
"firstName": "Joel",
"lastName": "Doré",
"creatorType": "author"
},
{
"firstName": "Jean",
"lastName": "Weissenbach",
"creatorType": "author"
},
{
"firstName": "S. Dusko",
"lastName": "Ehrlich",
"creatorType": "author"
},
{
"firstName": "Peer",
"lastName": "Bork",
"creatorType": "author"
}
],
"date": "2011-05",
"DOI": "10.1038/nature09944",
"ISSN": "1476-4687",
"abstractNote": "Our knowledge of species and functional composition of the human gut microbiome is rapidly increasing, but it is still based on very few cohorts and little is known about variation across the world. By combining 22 newly sequenced faecal metagenomes of individuals from four countries with previously published data sets, here we identify three robust clusters (referred to as enterotypes hereafter) that are not nation or continent specific. We also confirmed the enterotypes in two published, larger cohorts, indicating that intestinal microbiota variation is generally stratified, not continuous. This indicates further the existence of a limited number of well-balanced host–microbial symbiotic states that might respond differently to diet and drug intake. The enterotypes are mostly driven by species composition, but abundant molecular functions are not necessarily provided by abundant species, highlighting the importance of a functional analysis to understand microbial communities. Although individual host properties such as body mass index, age, or gender cannot explain the observed enterotypes, data-driven marker genes or functional modules can be identified for each of these host properties. For example, twelve genes significantly correlate with age and three functional modules with the body mass index, hinting at a diagnostic potential of microbial markers.",
"issue": "7346",
"language": "en",
"libraryCatalog": "www.nature.com",
"pages": "174-180",
"publicationTitle": "Nature",
"rights": "2011 Springer Nature Limited",
"url": "https://www.nature.com/articles/nature09944",
"volume": "473",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Metagenomics"
},
{
"tag": "Microbiota"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.nature.com/articles/nprot.2006.52",
"items": [
{
"itemType": "journalArticle",
"title": "Bioluminescence resonance energy transfer (BRET) for the real-time detection of protein-protein interactions",
"creators": [
{
"firstName": "Kevin D. G.",
"lastName": "Pfleger",
"creatorType": "author"
},
{
"firstName": "Ruth M.",
"lastName": "Seeber",
"creatorType": "author"
},
{
"firstName": "Karin A.",
"lastName": "Eidne",
"creatorType": "author"
}
],
"date": "2006-06",
"DOI": "10.1038/nprot.2006.52",
"ISSN": "1750-2799",
"abstractNote": "A substantial range of protein-protein interactions can be readily monitored in real time using bioluminescence resonance energy transfer (BRET). The procedure involves heterologous coexpression of fusion proteins, which link proteins of interest to a bioluminescent donor enzyme or acceptor fluorophore. Energy transfer between these proteins is then detected. This protocol encompasses BRET1, BRET2 and the recently described eBRET, including selection of the donor, acceptor and substrate combination, fusion construct generation and validation, cell culture, fluorescence and luminescence detection, BRET detection and data analysis. The protocol is particularly suited to studying protein-protein interactions in live cells (adherent or in suspension), but cell extracts and purified proteins can also be used. Furthermore, although the procedure is illustrated with references to mammalian cell culture conditions, this protocol can be readily used for bacterial or plant studies. Once fusion proteins are generated and validated, the procedure typically takes 48–72 h depending on cell culture requirements.",
"issue": "1",
"journalAbbreviation": "Nat Protoc",
"language": "en",
"libraryCatalog": "www.nature.com",
"pages": "337-345",
"publicationTitle": "Nature Protocols",
"rights": "2006 Springer Nature Limited",
"url": "https://www.nature.com/articles/nprot.2006.52",
"volume": "1",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Analytical Chemistry"
},
{
"tag": "Biological Techniques"
},
{
"tag": "Computational Biology/Bioinformatics"
},
{
"tag": "Life Sciences"
},
{
"tag": "Microarrays"
},
{
"tag": "Organic Chemistry"
},
{
"tag": "general"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.nature.com/articles/ncomms7186",
"items": [
{
"itemType": "journalArticle",
"title": "ZNF143 provides sequence specificity to secure chromatin interactions at gene promoters",
"creators": [
{
"firstName": "Swneke D.",
"lastName": "Bailey",
"creatorType": "author"
},
{
"firstName": "Xiaoyang",
"lastName": "Zhang",
"creatorType": "author"
},
{
"firstName": "Kinjal",
"lastName": "Desai",
"creatorType": "author"
},
{
"firstName": "Malika",
"lastName": "Aid",
"creatorType": "author"
},
{
"firstName": "Olivia",
"lastName": "Corradin",
"creatorType": "author"
},
{
"firstName": "Richard",
"lastName": "Cowper-Sal·lari",
"creatorType": "author"
},
{
"firstName": "Batool",
"lastName": "Akhtar-Zaidi",
"creatorType": "author"
},
{
"firstName": "Peter C.",
"lastName": "Scacheri",
"creatorType": "author"
},
{
"firstName": "Benjamin",
"lastName": "Haibe-Kains",
"creatorType": "author"
},
{
"firstName": "Mathieu",
"lastName": "Lupien",
"creatorType": "author"
}
],
"date": "2015-02-03",
"DOI": "10.1038/ncomms7186",
"ISSN": "2041-1723",
"abstractNote": "Chromatin interactions connect distal regulatory elements to target gene promoters guiding stimulus- and lineage-specific transcription. Few factors securing chromatin interactions have so far been identified. Here, by integrating chromatin interaction maps with the large collection of transcription factor-binding profiles provided by the ENCODE project, we demonstrate that the zinc-finger protein ZNF143 preferentially occupies anchors of chromatin interactions connecting promoters with distal regulatory elements. It binds directly to promoters and associates with lineage-specific chromatin interactions and gene expression. Silencing ZNF143 or modulating its DNA-binding affinity using single-nucleotide polymorphisms (SNPs) as a surrogate of site-directed mutagenesis reveals the sequence dependency of chromatin interactions at gene promoters. We also find that chromatin interactions alone do not regulate gene expression. Together, our results identify ZNF143 as a novel chromatin-looping factor that contributes to the architectural foundation of the genome by providing sequence specificity at promoters connected with distal regulatory elements.",
"issue": "1",
"journalAbbreviation": "Nat Commun",
"language": "en",
"libraryCatalog": "www.nature.com",
"pages": "6186",
"publicationTitle": "Nature Communications",
"rights": "2015 Springer Nature Limited",
"url": "https://www.nature.com/articles/ncomms7186",
"volume": "6",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Chromatin"
},
{
"tag": "Transcription factors"
},
{
"tag": "Transcriptional regulatory elements"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.nature.com/search?q=zotero",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.nature.com/articles/sdata201618",
"items": [
{
"itemType": "journalArticle",
"title": "The FAIR Guiding Principles for scientific data management and stewardship",
"creators": [
{
"firstName": "Mark D.",
"lastName": "Wilkinson",
"creatorType": "author"
},
{
"firstName": "Michel",
"lastName": "Dumontier",
"creatorType": "author"
},
{
"firstName": "IJsbrand Jan",
"lastName": "Aalbersberg",
"creatorType": "author"
},
{
"firstName": "Gabrielle",
"lastName": "Appleton",
"creatorType": "author"
},
{
"firstName": "Myles",
"lastName": "Axton",
"creatorType": "author"
},
{
"firstName": "Arie",
"lastName": "Baak",
"creatorType": "author"
},
{
"firstName": "Niklas",
"lastName": "Blomberg",
"creatorType": "author"
},
{
"firstName": "Jan-Willem",
"lastName": "Boiten",
"creatorType": "author"
},
{
"firstName": "Luiz Bonino",
"lastName": "da Silva Santos",
"creatorType": "author"
},
{
"firstName": "Philip E.",
"lastName": "Bourne",
"creatorType": "author"
},
{
"firstName": "Jildau",
"lastName": "Bouwman",
"creatorType": "author"
},
{
"firstName": "Anthony J.",
"lastName": "Brookes",
"creatorType": "author"
},
{
"firstName": "Tim",
"lastName": "Clark",
"creatorType": "author"
},
{
"firstName": "Mercè",
"lastName": "Crosas",
"creatorType": "author"
},
{
"firstName": "Ingrid",
"lastName": "Dillo",
"creatorType": "author"
},
{
"firstName": "Olivier",
"lastName": "Dumon",
"creatorType": "author"
},
{
"firstName": "Scott",
"lastName": "Edmunds",
"creatorType": "author"
},
{
"firstName": "Chris T.",
"lastName": "Evelo",
"creatorType": "author"
},
{
"firstName": "Richard",
"lastName": "Finkers",
"creatorType": "author"
},
{
"firstName": "Alejandra",
"lastName": "Gonzalez-Beltran",
"creatorType": "author"
},
{
"firstName": "Alasdair J. G.",
"lastName": "Gray",
"creatorType": "author"
},
{
"firstName": "Paul",
"lastName": "Groth",
"creatorType": "author"
},
{
"firstName": "Carole",
"lastName": "Goble",
"creatorType": "author"
},
{
"firstName": "Jeffrey S.",
"lastName": "Grethe",
"creatorType": "author"
},
{
"firstName": "Jaap",
"lastName": "Heringa",
"creatorType": "author"
},
{
"firstName": "Peter A. C.",
"lastName": "’t Hoen",
"creatorType": "author"
},
{
"firstName": "Rob",
"lastName": "Hooft",
"creatorType": "author"
},
{
"firstName": "Tobias",
"lastName": "Kuhn",
"creatorType": "author"
},
{
"firstName": "Ruben",
"lastName": "Kok",
"creatorType": "author"
},
{
"firstName": "Joost",
"lastName": "Kok",
"creatorType": "author"
},
{
"firstName": "Scott J.",
"lastName": "Lusher",
"creatorType": "author"
},
{
"firstName": "Maryann E.",
"lastName": "Martone",
"creatorType": "author"
},
{
"firstName": "Albert",
"lastName": "Mons",
"creatorType": "author"
},
{
"firstName": "Abel L.",
"lastName": "Packer",
"creatorType": "author"
},
{
"firstName": "Bengt",
"lastName": "Persson",
"creatorType": "author"
},
{
"firstName": "Philippe",
"lastName": "Rocca-Serra",
"creatorType": "author"
},
{
"firstName": "Marco",
"lastName": "Roos",
"creatorType": "author"
},
{
"firstName": "Rene",
"lastName": "van Schaik",
"creatorType": "author"
},
{
"firstName": "Susanna-Assunta",
"lastName": "Sansone",
"creatorType": "author"
},
{
"firstName": "Erik",
"lastName": "Schultes",
"creatorType": "author"
},
{
"firstName": "Thierry",
"lastName": "Sengstag",
"creatorType": "author"
},
{
"firstName": "Ted",
"lastName": "Slater",
"creatorType": "author"
},
{
"firstName": "George",
"lastName": "Strawn",
"creatorType": "author"
},
{
"firstName": "Morris A.",
"lastName": "Swertz",
"creatorType": "author"
},
{
"firstName": "Mark",
"lastName": "Thompson",
"creatorType": "author"
},
{
"firstName": "Johan",
"lastName": "van der Lei",
"creatorType": "author"
},
{
"firstName": "Erik",
"lastName": "van Mulligen",
"creatorType": "author"
},
{
"firstName": "Jan",
"lastName": "Velterop",
"creatorType": "author"
},
{
"firstName": "Andra",
"lastName": "Waagmeester",
"creatorType": "author"
},
{
"firstName": "Peter",
"lastName": "Wittenburg",
"creatorType": "author"
},
{
"firstName": "Katherine",
"lastName": "Wolstencroft",
"creatorType": "author"
},
{
"firstName": "Jun",
"lastName": "Zhao",
"creatorType": "author"
},
{
"firstName": "Barend",
"lastName": "Mons",
"creatorType": "author"
}
],
"date": "2016-03-15",
"DOI": "10.1038/sdata.2016.18",
"ISSN": "2052-4463",
"abstractNote": "There is an urgent need to improve the infrastructure supporting the reuse of scholarly data. A diverse set of stakeholders—representing academia, industry, funding agencies, and scholarly publishers—have come together to design and jointly endorse a concise and measureable set of principles that we refer to as the FAIR Data Principles. The intent is that these may act as a guideline for those wishing to enhance the reusability of their data holdings. Distinct from peer initiatives that focus on the human scholar, the FAIR Principles put specific emphasis on enhancing the ability of machines to automatically find and use the data, in addition to supporting its reuse by individuals. This Comment is the first formal publication of the FAIR Principles, and includes the rationale behind them, and some exemplar implementations in the community.",
"issue": "1",
"journalAbbreviation": "Sci Data",
"language": "en",
"libraryCatalog": "www.nature.com",
"pages": "160018",
"publicationTitle": "Scientific Data",
"rights": "2016 The Author(s)",
"url": "https://www.nature.com/articles/sdata201618",
"volume": "3",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Publication characteristics"
},
{
"tag": "Research data"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.nature.com/articles/s41563-020-00871-7",
"items": [
{
"itemType": "journalArticle",
"title": "Evidence for a higher-order topological insulator in a three-dimensional material built from van der Waals stacking of bismuth-halide chains",
"creators": [
{
"firstName": "Ryo",
"lastName": "Noguchi",
"creatorType": "author"
},
{
"firstName": "Masaru",
"lastName": "Kobayashi",
"creatorType": "author"
},
{
"firstName": "Zhanzhi",
"lastName": "Jiang",
"creatorType": "author"
},
{
"firstName": "Kenta",
"lastName": "Kuroda",
"creatorType": "author"
},
{
"firstName": "Takanari",
"lastName": "Takahashi",
"creatorType": "author"
},
{
"firstName": "Zifan",
"lastName": "Xu",
"creatorType": "author"
},
{
"firstName": "Daehun",
"lastName": "Lee",
"creatorType": "author"
},
{
"firstName": "Motoaki",
"lastName": "Hirayama",
"creatorType": "author"
},
{
"firstName": "Masayuki",
"lastName": "Ochi",
"creatorType": "author"
},
{
"firstName": "Tetsuroh",
"lastName": "Shirasawa",
"creatorType": "author"
},
{
"firstName": "Peng",
"lastName": "Zhang",
"creatorType": "author"
},
{
"firstName": "Chun",
"lastName": "Lin",
"creatorType": "author"
},
{
"firstName": "Cédric",
"lastName": "Bareille",
"creatorType": "author"
},
{
"firstName": "Shunsuke",
"lastName": "Sakuragi",
"creatorType": "author"
},
{
"firstName": "Hiroaki",
"lastName": "Tanaka",
"creatorType": "author"
},
{
"firstName": "So",
"lastName": "Kunisada",
"creatorType": "author"
},
{
"firstName": "Kifu",
"lastName": "Kurokawa",
"creatorType": "author"
},
{
"firstName": "Koichiro",
"lastName": "Yaji",
"creatorType": "author"
},
{
"firstName": "Ayumi",
"lastName": "Harasawa",
"creatorType": "author"
},
{
"firstName": "Viktor",
"lastName": "Kandyba",
"creatorType": "author"
},
{
"firstName": "Alessio",
"lastName": "Giampietri",
"creatorType": "author"
},
{
"firstName": "Alexei",
"lastName": "Barinov",
"creatorType": "author"
},
{
"firstName": "Timur K.",
"lastName": "Kim",
"creatorType": "author"
},
{
"firstName": "Cephise",
"lastName": "Cacho",
"creatorType": "author"
},
{
"firstName": "Makoto",
"lastName": "Hashimoto",
"creatorType": "author"
},
{
"firstName": "Donghui",
"lastName": "Lu",
"creatorType": "author"
},
{
"firstName": "Shik",
"lastName": "Shin",
"creatorType": "author"
},
{
"firstName": "Ryotaro",
"lastName": "Arita",
"creatorType": "author"
},
{
"firstName": "Keji",
"lastName": "Lai",
"creatorType": "author"
},
{
"firstName": "Takao",
"lastName": "Sasagawa",
"creatorType": "author"
},
{
"firstName": "Takeshi",
"lastName": "Kondo",
"creatorType": "author"
}
],
"date": "2021-04",
"DOI": "10.1038/s41563-020-00871-7",
"ISSN": "1476-4660",
"abstractNote": "Low-dimensional van der Waals materials have been extensively studied as a platform with which to generate quantum effects. Advancing this research, topological quantum materials with van der Waals structures are currently receiving a great deal of attention. Here, we use the concept of designing topological materials by the van der Waals stacking of quantum spin Hall insulators. Most interestingly, we find that a slight shift of inversion centre in the unit cell caused by a modification of stacking induces a transition from a trivial insulator to a higher-order topological insulator. Based on this, we present angle-resolved photoemission spectroscopy results showing that the real three-dimensional material Bi4Br4 is a higher-order topological insulator. Our demonstration that various topological states can be selected by stacking chains differently, combined with the advantages of van der Waals materials, offers a playground for engineering topologically non-trivial edge states towards future spintronics applications.",
"issue": "4",
"journalAbbreviation": "Nat. Mater.",
"language": "en",
"libraryCatalog": "www.nature.com",
"pages": "473-479",
"publicationTitle": "Nature Materials",
"rights": "2021 The Author(s), under exclusive licence to Springer Nature Limited",
"url": "https://www.nature.com/articles/s41563-020-00871-7",
"volume": "20",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Electronic properties and materials"
},
{
"tag": "Topological insulators"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.nature.com/articles/s41586-021-03972-8",
"items": [
{
"itemType": "journalArticle",
"title": "Evidence for European presence in the Americas in AD 1021",
"creators": [
{
"firstName": "Margot",
"lastName": "Kuitems",
"creatorType": "author"
},
{
"firstName": "Birgitta L.",
"lastName": "Wallace",
"creatorType": "author"
},
{
"firstName": "Charles",
"lastName": "Lindsay",
"creatorType": "author"
},
{
"firstName": "Andrea",
"lastName": "Scifo",
"creatorType": "author"
},
{
"firstName": "Petra",
"lastName": "Doeve",
"creatorType": "author"
},
{
"firstName": "Kevin",
"lastName": "Jenkins",
"creatorType": "author"
},
{
"firstName": "Susanne",
"lastName": "Lindauer",
"creatorType": "author"
},
{
"firstName": "Pınar",
"lastName": "Erdil",
"creatorType": "author"
},
{
"firstName": "Paul M.",
"lastName": "Ledger",
"creatorType": "author"
},
{
"firstName": "Véronique",
"lastName": "Forbes",
"creatorType": "author"
},
{
"firstName": "Caroline",
"lastName": "Vermeeren",
"creatorType": "author"
},
{
"firstName": "Ronny",
"lastName": "Friedrich",
"creatorType": "author"
},
{
"firstName": "Michael W.",
"lastName": "Dee",
"creatorType": "author"
}
],
"date": "2022-01",
"DOI": "10.1038/s41586-021-03972-8",
"ISSN": "1476-4687",
"abstractNote": "Transatlantic exploration took place centuries before the crossing of Columbus. Physical evidence for early European presence in the Americas can be found in Newfoundland, Canada1,2. However, it has thus far not been possible to determine when this activity took place3–5. Here we provide evidence that the Vikings were present in Newfoundland in ad 1021. We overcome the imprecision of previous age estimates by making use of the cosmic-ray-induced upsurge in atmospheric radiocarbon concentrations in ad 993 (ref. 6). Our new date lays down a marker for European cognisance of the Americas, and represents the first known point at which humans encircled the globe. It also provides a definitive tie point for future research into the initial consequences of transatlantic activity, such as the transference of knowledge, and the potential exchange of genetic information, biota and pathologies7,8.",
"issue": "7893",
"language": "en",
"libraryCatalog": "www.nature.com",
"pages": "388-391",
"publicationTitle": "Nature",
"rights": "2021 The Author(s)",
"url": "https://www.nature.com/articles/s41586-021-03972-8",
"volume": "601",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Archaeology"
},
{
"tag": "Mass spectrometry"
},
{
"tag": "Plant physiology"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.nature.com/articles/s41586-023-05742-0",
"items": [
{
"itemType": "journalArticle",
"title": "RETRACTED ARTICLE: Evidence of near-ambient superconductivity in a N-doped lutetium hydride",
"creators": [
{
"firstName": "Nathan",
"lastName": "Dasenbrock-Gammon",
"creatorType": "author"
},
{
"firstName": "Elliot",
"lastName": "Snider",
"creatorType": "author"
},
{
"firstName": "Raymond",
"lastName": "McBride",
"creatorType": "author"
},
{
"firstName": "Hiranya",
"lastName": "Pasan",
"creatorType": "author"
},
{
"firstName": "Dylan",
"lastName": "Durkee",
"creatorType": "author"
},
{
"firstName": "Nugzari",
"lastName": "Khalvashi-Sutter",
"creatorType": "author"
},
{
"firstName": "Sasanka",
"lastName": "Munasinghe",
"creatorType": "author"
},
{
"firstName": "Sachith E.",
"lastName": "Dissanayake",
"creatorType": "author"
},
{
"firstName": "Keith V.",
"lastName": "Lawler",
"creatorType": "author"
},
{
"firstName": "Ashkan",
"lastName": "Salamat",
"creatorType": "author"
},
{
"firstName": "Ranga P.",
"lastName": "Dias",
"creatorType": "author"
}
],
"date": "2023-03",
"DOI": "10.1038/s41586-023-05742-0",
"ISSN": "1476-4687",
"abstractNote": "The absence of electrical resistance exhibited by superconducting materials would have enormous potential for applications if it existed at ambient temperature and pressure conditions. Despite decades of intense research efforts, such a state has yet to be realized1,2. At ambient pressures, cuprates are the material class exhibiting superconductivity to the highest critical superconducting transition temperatures (Tc), up to about 133 K (refs. 3–5). Over the past decade, high-pressure ‘chemical precompression’6,7 of hydrogen-dominant alloys has led the search for high-temperature superconductivity, with demonstrated Tc approaching the freezing point of water in binary hydrides at megabar pressures8–13. Ternary hydrogen-rich compounds, such as carbonaceous sulfur hydride, offer an even larger chemical space to potentially improve the properties of superconducting hydrides14–21. Here we report evidence of superconductivity on a nitrogen-doped lutetium hydride with a maximum Tc of 294 K at 10 kbar, that is, superconductivity at room temperature and near-ambient pressures. The compound was synthesized under high-pressure high-temperature conditions and then—after full recoverability—its material and superconducting properties were examined along compression pathways. These include temperature-dependent resistance with and without an applied magnetic field, the magnetization (M) versus magnetic field (H) curve, a.c. and d.c. magnetic susceptibility, as well as heat-capacity measurements. X-ray diffraction (XRD), energy-dispersive X-ray (EDX) and theoretical simulations provide some insight into the stoichiometry of the synthesized material. Nevertheless, further experiments and simulations are needed to determine the exact stoichiometry of hydrogen and nitrogen, and their respective atomistic positions, in a greater effort to further understand the superconducting state of the material.",
"issue": "7951",
"language": "en",
"libraryCatalog": "www.nature.com",
"pages": "244-250",
"publicationTitle": "Nature",
"rights": "2023 The Author(s), under exclusive licence to Springer Nature Limited",
"shortTitle": "RETRACTED ARTICLE",
"url": "https://www.nature.com/articles/s41586-023-05742-0",
"volume": "615",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Superconducting properties and materials"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Sebastian Karcher^https?://(www\.)?(tandfonline\.com|nejm\.org)//*
***** BEGIN LICENSE BLOCK *****
Taylor and Francis Translator
Copyright © 2011 Sebastian Karcher
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.match(/\/doi(\/(abs|full|figure))?\/10\./)) {
return "journalArticle";
}
else if ((url.includes('/action/doSearch?') || url.includes('/toc/')) && getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
// multiples in search results:
var rows = ZU.xpath(doc, '//article[contains(@class, "searchResultItem")]//a[contains(@href, "/doi/") and contains(@class, "ref")]');
if (rows.length == 0) {
// multiples in toc view:
rows = ZU.xpath(doc, '//div[contains(@class, "articleLink") or contains(@class, "art_title")]/a[contains(@href, "/doi/") and contains(@class, "ref")]');
if (!rows.length) {
rows = doc.querySelectorAll('.o-results li > a[href*="/doi/"]');
}
}
for (var i = 0; i < rows.length; i++) {
var href = rows[i].href;
var title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) {
return;
}
ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var match = url.match(/\/doi(?:\/(?:abs|full|figure))?\/(10\.[^?#]+)/);
var doi = match[1];
var baseUrl = url.match(/https?:\/\/[^/]+/)[0];
var postUrl = baseUrl + '/action/downloadCitation';
var postBody = 'downloadFileName=citation&'
+ 'direct=true&'
+ 'include=abs&'
+ 'doi=';
var risFormat = '&format=ris';
var bibtexFormat = '&format=bibtex';
ZU.doPost(postUrl, postBody + doi + bibtexFormat, function (text) {
var translator = Zotero.loadTranslator("import");
// Use BibTeX translator
translator.setTranslator("9cb70025-a888-4a29-a210-93ec52da40d4");
translator.setString(text);
translator.setHandler("itemDone", function (obj, item) {
// BibTeX content can have HTML entities (e.g. &) in various fields
// We'll just try to unescape the most likely fields to contain these entities
// Note that RIS data is not always correct, so we avoid using it
var unescapeFields = ['title', 'publicationTitle', 'abstractNote'];
for (var i = 0; i < unescapeFields.length; i++) {
if (item[unescapeFields[i]]) {
item[unescapeFields[i]] = ZU.unescapeHTML(item[unescapeFields[i]]);
}
}
item.bookTitle = item.publicationTitle;
// unfortunately, bibtex is missing some data
// publisher, ISSN/ISBN
ZU.doPost(postUrl, postBody + doi + risFormat, function (text) {
// Y1 is online publication date
if (/^DA\s+-\s+/m.test(text)) {
text = text.replace(/^Y1(\s+-.*)/gm, '');
}
var risTrans = Zotero.loadTranslator("import");
risTrans.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7");
risTrans.setString(text);
risTrans.setHandler("itemDone", function (obj, risItem) {
if (!item.title) item.title = "<no title>"; // RIS title can be even worse, it actually says "null"
if (risItem.date) item.date = risItem.date; // More complete
item.publisher = risItem.publisher;
item.ISSN = risItem.ISSN;
item.ISBN = risItem.ISBN;
// clean up abstract removing Abstract:, Summary: or Abstract Summary:
if (item.abstractNote) item.abstractNote = item.abstractNote.replace(/^(Abstract)?\s*(Summary)?:?\s*/i, "");
if (item.title.toUpperCase() == item.title) {
item.title = ZU.capitalizeTitle(item.title, true);
}
if (risItem.creators) item.creators = risItem.creators;
finalizeItem(item, doc, doi, baseUrl);
});
risTrans.translate();
});
});
translator.translate();
});
}
function finalizeItem(item, doc, doi, baseUrl) {
var subtitle = text(doc, 'h1 + .sub-title > h2');
if (subtitle && !item.title.toLowerCase().includes(subtitle.toLowerCase())) {
item.title = item.title.replace(/:$/, '') + ': ' + subtitle;
}
var pdfurl = baseUrl + '/doi/pdf/';
// add keywords
var keywords = ZU.xpath(doc, '//div[contains(@class, "abstractKeywords")]//a');
for (var i = 0; i < keywords.length; i++) {
item.tags.push(keywords[i].textContent);
}
// add attachments
item.attachments = [{
title: 'Full Text PDF',
url: pdfurl + doi,
mimeType: 'application/pdf'
}];
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.tandfonline.com/doi/full/10.1080/17487870802543480",
"items": [
{
"itemType": "journalArticle",
"title": "Informality and productivity in the labor market in Peru",
"creators": [
{
"lastName": "Chong",
"firstName": "Alberto",
"creatorType": "author"
},
{
"lastName": "Galdo",
"firstName": "Jose",
"creatorType": "author"
},
{
"lastName": "Saavedra",
"firstName": "Jaime",
"creatorType": "author"
}
],
"date": "December 1, 2008",
"DOI": "10.1080/17487870802543480",
"ISSN": "1748-7870",
"abstractNote": "This article analyzes the evolution of informal employment in Peru from 1986 to 2001. Contrary to what one would expect, the informality rates increased steadily during the 1990s despite the introduction of flexible contracting mechanisms, a healthy macroeconomic recovery, and tighter tax codes and regulation. We explore different factors that may explain this upward trend including the role of labor legislation and labor allocation between/within sectors of economic activity. Finally, we illustrate the negative correlation between productivity and informality by evaluating the impacts of the Youth Training PROJOVEN Program that offers vocational training to disadvantaged young individuals. We find significant training impacts on the probability of formal employment for both males and females.",
"issue": "4",
"itemID": "doi:10.1080/17487870802543480",
"libraryCatalog": "Taylor and Francis+NEJM",
"pages": "229-245",
"publicationTitle": "Journal of Economic Policy Reform",
"url": "https://doi.org/10.1080/17487870802543480",
"volume": "11",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Peru"
},
{
"tag": "employment"
},
{
"tag": "informality"
},
{
"tag": "labor costs"
},
{
"tag": "training"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.tandfonline.com/toc/clah20/22/4",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.tandfonline.com/doi/full/10.1080/17487870802543480",
"items": [
{
"itemType": "journalArticle",
"title": "Informality and productivity in the labor market in Peru",
"creators": [
{
"lastName": "Chong",
"firstName": "Alberto",
"creatorType": "author"
},
{
"lastName": "Galdo",
"firstName": "Jose",
"creatorType": "author"
},
{
"lastName": "Saavedra",
"firstName": "Jaime",
"creatorType": "author"
}
],
"date": "December 1, 2008",
"DOI": "10.1080/17487870802543480",
"ISSN": "1748-7870",
"abstractNote": "This article analyzes the evolution of informal employment in Peru from 1986 to 2001. Contrary to what one would expect, the informality rates increased steadily during the 1990s despite the introduction of flexible contracting mechanisms, a healthy macroeconomic recovery, and tighter tax codes and regulation. We explore different factors that may explain this upward trend including the role of labor legislation and labor allocation between/within sectors of economic activity. Finally, we illustrate the negative correlation between productivity and informality by evaluating the impacts of the Youth Training PROJOVEN Program that offers vocational training to disadvantaged young individuals. We find significant training impacts on the probability of formal employment for both males and females.",
"issue": "4",
"itemID": "doi:10.1080/17487870802543480",
"libraryCatalog": "Taylor and Francis+NEJM",
"pages": "229-245",
"publicationTitle": "Journal of Economic Policy Reform",
"url": "https://doi.org/10.1080/17487870802543480",
"volume": "11",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Peru"
},
{
"tag": "employment"
},
{
"tag": "informality"
},
{
"tag": "labor costs"
},
{
"tag": "training"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.tandfonline.com/doi/full/10.1080/00036846.2011.568404",
"items": [
{
"itemType": "journalArticle",
"title": "Estimating willingness to pay by risk adjustment mechanism",
"creators": [
{
"lastName": "Park",
"firstName": "Joo Heon",
"creatorType": "author"
},
{
"lastName": "MacLachlan",
"firstName": "Douglas L.",
"creatorType": "author"
}
],
"date": "January 1, 2013",
"DOI": "10.1080/00036846.2011.568404",
"ISSN": "0003-6846",
"abstractNote": "Measuring consumers’ Willingness To Pay (WTP) without considering the level of uncertainty in valuation and the consequent risk premiums will result in estimates that are biased toward lower values. This research proposes a model and method for correctly assessing WTP in cases involving valuation uncertainty. The new method, called Risk Adjustment Mechanism (RAM), is presented theoretically and demonstrated empirically. It is shown that the RAM outperforms the traditional method for assessing WTP, especially in a context of a nonmarket good such as a totally new product.",
"issue": "1",
"itemID": "doi:10.1080/00036846.2011.568404",
"libraryCatalog": "Taylor and Francis+NEJM",
"pages": "37-46",
"publicationTitle": "Applied Economics",
"url": "https://doi.org/10.1080/00036846.2011.568404",
"volume": "45",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "D12"
},
{
"tag": "D81"
},
{
"tag": "M31"
},
{
"tag": "adjustment mechanism"
},
{
"tag": "contigent valuation method"
},
{
"tag": "purchase decisions"
},
{
"tag": "willingness to pay"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.nejm.org/toc/nejm/medical-journal",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.nejm.org/doi/full/10.1056/NEJMp1207920",
"items": [
{
"itemType": "journalArticle",
"title": "Cutting Family Planning in Texas",
"creators": [
{
"lastName": "White",
"firstName": "Kari",
"creatorType": "author"
},
{
"lastName": "Grossman",
"firstName": "Daniel",
"creatorType": "author"
},
{
"lastName": "Hopkins",
"firstName": "Kristine",
"creatorType": "author"
},
{
"lastName": "Potter",
"firstName": "Joseph E.",
"creatorType": "author"
}
],
"date": "September 27, 2012",
"DOI": "10.1056/NEJMp1207920",
"ISSN": "0028-4793",
"abstractNote": "Four fundamental principles drive public funding for family planning. First, unintended pregnancy is associated with negative health consequences, including reduced use of prenatal care, lower breast-feeding rates, and poor maternal and neonatal outcomes.1,2 Second, governments realize substantial cost savings by investing in family planning, which reduces the rate of unintended pregnancies and the costs of prenatal, delivery, postpartum, and infant care.3 Third, all Americans have the right to choose the timing and number of their children. And fourth, family planning enables women to attain their educational and career goals and families to provide for their children. These principles led . . .",
"extra": "PMID: 23013071",
"issue": "13",
"itemID": "doi:10.1056/NEJMp1207920",
"libraryCatalog": "Taylor and Francis+NEJM",
"pages": "1179-1181",
"publicationTitle": "New England Journal of Medicine",
"url": "https://doi.org/10.1056/NEJMp1207920",
"volume": "367",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.tandfonline.com/doi/abs/10.1080/0308106032000167373",
"items": [
{
"itemType": "journalArticle",
"title": "Multicriteria Evaluation of High-speed Rail, Transrapid Maglev and Air Passenger Transport in Europe",
"creators": [
{
"lastName": "Janic",
"firstName": "Milan",
"creatorType": "author"
}
],
"date": "December 1, 2003",
"DOI": "10.1080/0308106032000167373",
"ISSN": "0308-1060",
"abstractNote": "This article deals with a multicriteria evaluation of High-Speed Rail, Transrapid Maglev and Air Passenger Transport in Europe. Operational, socio-economic and environmental performance indicators of the specific high-speed transport systems are adopted as the evaluation criteria. By using the entropy method, weights are assigned to particular criteria in order to indicate their relative importance in decision-making. The TOPSIS method is applied to carry out the multicriteria evaluation and selection of the preferable alternative (high-speed system) under given circumstances.",
"issue": "6",
"itemID": "doi:10.1080/0308106032000167373",
"libraryCatalog": "Taylor and Francis+NEJM",
"pages": "491-512",
"publicationTitle": "Transportation Planning and Technology",
"url": "https://doi.org/10.1080/0308106032000167373",
"volume": "26",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Entropy method; "
},
{
"tag": "Europe; "
},
{
"tag": "High-speed transport systems; "
},
{
"tag": "Interest groups "
},
{
"tag": "Multicriteria analysis; "
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.tandfonline.com/action/doSearch?AllField=labor+market",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.tandfonline.com/doi/abs/10.1080/00380768.1991.10415050#.U_vX3WPATVE",
"items": [
{
"itemType": "journalArticle",
"title": "Concentration dependence of CO2 evolution from soil in chamber with low CO2 concentration (< 2,000 ppm), and CO2 diffusion/sorption model in soil",
"creators": [
{
"lastName": "Naganawa",
"firstName": "Takahiko",
"creatorType": "author"
},
{
"lastName": "Kyuma",
"firstName": "Kazutake",
"creatorType": "author"
}
],
"date": "September 1, 1991",
"DOI": "10.1080/00380768.1991.10415050",
"ISSN": "0038-0768",
"abstractNote": "Concentration dependence of CO2 evolution from soil was studied under field and laboratory conditions. Under field conditions, when the CO2 concentration was measured with an infrared gas analyzer (IRGA) in a small and column-shaped chamber placed on the ground, the relationship among the CO2 concentration c (m3 m-3), time t (h), height of the chamber h, a constant rate of CO2 evolution from the soil v (m3 m-2 h-1), and an appropriate constant k, was expressed by the following equation, d c/d t = v/ h—k(c— a) (c=a at t = 0). Although most of the data of measured CO2 evolution fitted to this equation, the applicability of the equation was limited to the data to which a linear equation could not be fitted, because the estimated value of v had a larger error than that estimated by linear regression analysis, as observed by computer simulation. The concentration dependence shown above and some other variations were analyzed based on a sorption/diffusion model, i.e. they were associated with CO2-sorption by the soil and modified by the conditions of CO2 diffusion in the soil.",
"issue": "3",
"itemID": "doi:10.1080/00380768.1991.10415050",
"libraryCatalog": "Taylor and Francis+NEJM",
"pages": "381-386",
"publicationTitle": "Soil Science and Plant Nutrition",
"url": "https://doi.org/10.1080/00380768.1991.10415050",
"volume": "37",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "CO2 diffusion"
},
{
"tag": "CO2 evolution"
},
{
"tag": "CO2 sorption"
},
{
"tag": "concentration dependence"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.tandfonline.com/doi/figure/10.1080/00014788.2016.1157680?scroll=top&needAccess=true&",
"items": [
{
"itemType": "journalArticle",
"title": "Stakeholder perceptions of performance audit credibility",
"creators": [
{
"lastName": "Funnell",
"firstName": "Warwick",
"creatorType": "author"
},
{
"lastName": "Wade",
"firstName": "Margaret",
"creatorType": "author"
},
{
"lastName": "Jupe",
"firstName": "Robert",
"creatorType": "author"
}
],
"date": "September 18, 2016",
"DOI": "10.1080/00014788.2016.1157680",
"ISSN": "0001-4788",
"abstractNote": "This paper examines the credibility of performance audit at the micro-level of practice using the general framework of Birnbaum and Stegner's theory of source credibility in which credibility is dependent upon perceptions of the independence of the auditors, their technical competence and the usefulness of audit findings. It reports the results of a field study of a performance audit by the Australian National Audit Office conducted in a major government department. The paper establishes that problems of auditor independence, technical competence and perceived audit usefulness continue to limit the credibility of performance auditing.",
"issue": "6",
"itemID": "doi:10.1080/00014788.2016.1157680",
"libraryCatalog": "Taylor and Francis+NEJM",
"pages": "601-619",
"publicationTitle": "Accounting and Business Research",
"url": "https://doi.org/10.1080/00014788.2016.1157680",
"volume": "46",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.nejm.org/doi/10.1056/NEJMcibr2307735",
"items": [
{
"itemType": "journalArticle",
"title": "A Holy Grail — The Prediction of Protein Structure",
"creators": [
{
"lastName": "Altman",
"firstName": "Russ B.",
"creatorType": "author"
}
],
"date": "2023-10-12",
"DOI": "10.1056/NEJMcibr2307735",
"ISSN": "0028-4793",
"extra": "PMID: 37732608",
"issue": "15",
"itemID": "doi:10.1056/NEJMcibr2307735",
"libraryCatalog": "Taylor and Francis+NEJM",
"pages": "1431-1434",
"publicationTitle": "New England Journal of Medicine",
"url": "https://doi.org/10.1056/NEJMcibr2307735",
"volume": "389",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.tandfonline.com/doi/abs/10.1300/J150v03n04_02",
"items": [
{
"itemType": "journalArticle",
"title": "Service Value Determination: An Integrative Perspective",
"creators": [
{
"lastName": "Jayanti",
"firstName": "Rama K.",
"creatorType": "author"
},
{
"lastName": "Ghosh",
"firstName": "Amit K.",
"creatorType": "author"
}
],
"date": "1996-05-10",
"DOI": "10.1300/J150v03n04_02",
"ISSN": "1050-7051",
"abstractNote": "The authors investigate the efficacy of an integrated perspective on perceived service value, derived out of bringing together two consumer behavior research streams, those of utilitarian and behavioral theories. Theoretical, arguments and empirical evidence are used to show that the integrative perspective provides a better representation of perceived value than either the utilitarian or the behavioral perspective alone. Additionally, acquisition utility is shown to be similar to perceived quality, suggesting that a more parsimonious representation of perceived value entails the use of transaction utility and perceived quality as predictor variables. Finally, the authors argue that within a service encounter context, perceived quality of the service assumes more importance than price perceptions in explaining perceived value. Managerial implications and future research directions are discussed.",
"issue": "4",
"itemID": "doi:10.1300/J150v03n04\\_02",
"libraryCatalog": "Taylor and Francis+NEJM",
"pages": "5-25",
"publicationTitle": "Journal of Hospitality & Leisure Marketing",
"shortTitle": "Service Value Determination",
"url": "https://doi.org/10.1300/J150v03n04_02",
"volume": "3",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
{"dataMode":"xml\/dom"}100Philipp Zumsteinxml/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2018 Philipp Zumstein
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectImport() {
var text = Zotero.read(1000);
return text.includes("http://www.exlibrisgroup.com/xsd/primo/primo_nm_bib");
}
function doImport() {
var doc = Zotero.getXML();
var ns = {
p: 'http://www.exlibrisgroup.com/xsd/primo/primo_nm_bib',
sear: 'http://www.exlibrisgroup.com/xsd/jaguar/search'
};
var item = new Zotero.Item();
var itemType = ZU.xpathText(doc, '//p:display/p:type', ns) || ZU.xpathText(doc, '//p:facets/p:rsrctype', ns) || ZU.xpathText(doc, '//p:search/p:rsrctype', ns);
if (!itemType) {
throw new Error('Could not locate item type');
}
switch (itemType.toLowerCase()) {
case 'book':
case 'buch':
case 'ebook':
case 'pbook':
case 'pbooks':
case 'print_book':
case 'books':
case 'score':
case 'journal': // as long as we don't have a periodical item type;
item.itemType = "book";
break;
case 'book_chapter':
item.itemType = "bookSection";
break;
case 'audio':
case 'sound_recording':
item.itemType = "audioRecording";
break;
case 'video':
case 'dvd':
item.itemType = "videoRecording";
break;
case 'computer_file':
item.itemType = "computerProgram";
break;
case 'report':
item.itemType = "report";
break;
case 'webpage':
item.itemType = "webpage";
break;
case 'article':
case 'review':
item.itemType = "journalArticle";
break;
case 'thesis':
case 'dissertation':
item.itemType = "thesis";
break;
case 'archive_manuscript':
case 'object':
item.itemType = "manuscript";
break;
case 'map':
item.itemType = "map";
break;
case 'reference_entry':
item.itemType = "encyclopediaArticle";
break;
case 'image':
item.itemType = "artwork";
break;
case 'newspaper_article':
item.itemType = "newspaperArticle";
break;
case 'conference_proceeding':
item.itemType = "conferencePaper";
break;
default:
item.itemType = "document";
var risType = ZU.xpathText(doc, '//p:addata/p:ristype', ns);
if (risType) {
switch (risType.toUpperCase()) {
case 'THES':
item.itemType = "thesis";
break;
}
}
}
item.title = ZU.xpathText(doc, '//p:display/p:title', ns);
if (item.title) {
item.title = ZU.unescapeHTML(item.title);
item.title = item.title.replace(/\s*:/, ":");
}
var creators = ZU.xpath(doc, '//p:display/p:creator', ns);
var contributors = ZU.xpath(doc, '//p:display/p:contributor', ns);
if (!creators.length && contributors.length) {
// <creator> not available using <contributor> as author instead
creators = contributors;
contributors = [];
}
// //addata/au is great because it lists authors in last, first format,
// but it can also have a bunch of junk. We'll use it to help split authors
var splitGuidance = {};
var addau = ZU.xpath(doc, '//p:addata/p:addau|//p:addata/p:au', ns);
for (let i = 0; i < addau.length; i++) {
var author = stripAuthor(addau[i].textContent);
if (author.includes(',')) {
var splitAu = author.split(',');
if (splitAu.length > 2) continue;
var name = splitAu[1].trim().toLowerCase() + ' '
+ splitAu[0].trim().toLowerCase();
splitGuidance[name.replace(/\./g, "")] = author;
}
}
fetchCreators(item, creators, 'author', splitGuidance);
fetchCreators(item, contributors, 'contributor', splitGuidance);
item.place = ZU.xpathText(doc, '//p:addata/p:cop', ns);
var publisher = ZU.xpathText(doc, '//p:addata/p:pub', ns);
if (!publisher) publisher = ZU.xpathText(doc, '//p:display/p:publisher', ns);
if (publisher) {
publisher = publisher.replace(/,\s*c?\d+|[()[\]]/g, "");
item.publisher = publisher.replace(/^\s*"|,?"\s*$/g, '');
var pubplace = ZU.unescapeHTML(publisher).split(" : ");
if (pubplace && pubplace[1]) {
var possibleplace = pubplace[0];
if (!item.place) {
item.publisher = pubplace[1].replace(/^\s*"|,?"\s*$/g, '');
item.place = possibleplace;
}
if (item.place && item.place == possibleplace) {
item.publisher = pubplace[1].replace(/^\s*"|,?"\s*$/g, '');
}
}
// sometimes the place is also part of the publisher string
// e.g. "Tübingen Mohr Siebeck"
if (item.place) {
var contained = item.publisher.indexOf(item.place);
if (contained === 0) {
item.publisher = item.publisher.substring(item.place.length);
}
}
}
var date = ZU.xpathText(doc, '//p:addata/p:date', ns)
|| ZU.xpathText(doc, '//p:addata/p:risdate', ns);
if (date && /\d\d\d\d\d\d\d\d/.test(date)) {
item.date = date.substring(0, 4) + '-' + date.substring(4, 6) + '-' + date.substring(6, 8);
}
else {
date = ZU.xpathText(doc, '//p:display/p:creationdate|//p:search/p:creationdate', ns);
var m;
if (date && (m = date.match(/\d+/))) {
item.date = m[0];
}
}
// the three letter ISO codes that should be in the language field work well:
item.language = ZU.xpathText(doc, '(//p:display/p:language|//p:facets/p:language)[1]', ns);
var pages = ZU.xpathText(doc, '//p:display/p:format', ns);
if (item.itemType == 'book' && pages && pages.search(/\d/) != -1) {
item.numPages = extractNumPages(pages);
}
item.series = ZU.xpathText(doc, '(//p:addata/p:seriestitle)[1]', ns);
if (item.series) {
let m = item.series.match(/^(.*);\s*(\d+)/);
if (m) {
item.series = m[1].trim();
item.seriesNumber = m[2];
}
}
var isbn = ZU.xpathText(doc, '//p:addata/p:isbn', ns);
var issn = ZU.xpathText(doc, '//p:addata/p:issn', ns);
if (isbn) {
item.ISBN = ZU.cleanISBN(isbn);
}
if (issn) {
item.ISSN = ZU.cleanISSN(issn);
}
// Try this if we can't find an isbn/issn in addata
// The identifier field is supposed to have standardized format, but
// the super-tolerant idCheck should be better than a regex.
// (although note that it will reject invalid ISBNs)
var locators = ZU.xpathText(doc, '//p:display/p:identifier', ns);
if (!(item.ISBN || item.ISSN) && locators) {
item.ISBN = ZU.cleanISBN(locators);
item.ISSN = ZU.cleanISSN(locators);
}
item.edition = ZU.xpathText(doc, '//p:display/p:edition', ns);
var subjects = ZU.xpath(doc, '//p:display/p:subject', ns);
if (!subjects.length) {
subjects = ZU.xpath(doc, '//p:search/p:subject', ns);
}
for (let i = 0, n = subjects.length; i < n; i++) {
let tagChain = ZU.trimInternal(subjects[i].textContent);
// Split chain of tags, e.g. "Deutschland / Gerichtsverhandlung / Schallaufzeichnung / Bildaufzeichnung"
for (let tag of tagChain.split(/ (?:\/|--|;) /)) {
item.tags.push(tag);
}
}
item.abstractNote = ZU.xpathText(doc, '//p:display/p:description', ns)
|| ZU.xpathText(doc, '//p:addata/p:abstract', ns);
if (item.abstractNote) item.abstractNote = ZU.unescapeHTML(item.abstractNote);
item.DOI = ZU.xpathText(doc, '//p:addata/p:doi', ns);
item.issue = ZU.xpathText(doc, '//p:addata/p:issue', ns);
item.volume = ZU.xpathText(doc, '//p:addata/p:volume', ns);
item.publicationTitle = ZU.xpathText(doc, '//p:addata/p:jtitle', ns);
if (item.itemType != 'book') {
item.bookTitle = ZU.xpathText(doc, '//p:addata/p:btitle', ns);
}
var startPage = ZU.xpathText(doc, '//p:addata/p:spage', ns);
var endPage = ZU.xpathText(doc, '//p:addata/p:epage', ns);
var overallPages = ZU.xpathText(doc, '//p:addata/p:pages', ns);
var pageRangeTypes = ["journalArticle", "magazineArticle", "newspaperArticle", "dictionaryEntry", "encyclopediaArticle", "conferencePaper"];
if (startPage && endPage) {
item.pages = startPage + '–' + endPage;
}
else if (overallPages) {
if (pageRangeTypes.includes(item.itemType)) {
item.pages = overallPages;
}
else {
item.numPages = overallPages;
}
}
else if (startPage) {
item.pages = startPage;
}
else if (endPage) {
item.pages = endPage;
}
// these are actual local full text links (e.g. to google-scanned books)
// e.g http://solo.bodleian.ox.ac.uk/OXVU1:LSCOP_OX:oxfaleph013370702
var URL = ZU.xpathText(doc, '//p:links/p:linktorsrc', ns);
if (URL && URL.search(/\$\$U.+\$\$/) != -1) {
item.url = URL.match(/\$\$U(.+?)\$\$/)[1];
}
// add finding aids as links
var findingAid = ZU.xpathText(doc, '//p:links/p:linktofa', ns);
if (findingAid && findingAid.search(/\$\$U.+\$\$/) != -1) {
item.attachments.push({ url: findingAid.match(/\$\$U(.+?)\$\$/)[1], title: "Finding Aid", snapshot: false });
}
// get the best call Number; sequence recommended by Harvard University Library
var callNumber = ZU.xpath(doc, '//p:browse/p:callnumber', ns);
var callArray = [];
for (let i = 0; i < callNumber.length; i++) {
if (callNumber[i].textContent.search(/\$\$D.+\$/) != -1) {
callArray.push(callNumber[i].textContent.match(/\$\$D(.+?)\$/)[1]);
}
}
if (!callArray.length) {
callNumber = ZU.xpath(doc, '//p:display/p:availlibrary', ns);
for (let i = 0; i < callNumber.length; i++) {
if (callNumber[i].textContent.search(/\$\$2.+\$/) != -1) {
callArray.push(callNumber[i].textContent.match(/\$\$2\(?(.+?)(?:\s*\))?\$/)[1]);
}
}
}
if (callArray.length) {
// remove duplicate call numbers
callArray = dedupeArray(callArray);
item.callNumber = callArray.join(", ");
}
else {
ZU.xpathText(doc, '//p:enrichment/p:classificationlcc', ns);
}
// Harvard specific code, requested by Harvard Library:
// Getting the library abbreviation properly,
// so it's easy to implement custom code for other libraries, either locally or globally should we want to.
var library;
var source = ZU.xpathText(doc, '//p:control/p:sourceid', ns);
if (source) {
// The HVD library code is now preceded by $$V01 -- not seeing this in other catalogs like Princeton or UQAM
// so making it optional
library = source.match(/^(?:\$\$V)?(?:\d+)?(.+?)_/);
if (library) library = library[1];
}
// Z.debug(library)
if (library && library == "HVD") {
if (ZU.xpathText(doc, '//p:display/p:lds01', ns)) {
item.extra = "HOLLIS number: " + ZU.xpathText(doc, '//p:display/p:lds01', ns);
}
for (let lds03 of ZU.xpath(doc, '//p:display/p:lds03', ns)) {
if (lds03.textContent.match(/href="(.+?)"/)) {
item.attachments.push({
url: lds03.textContent.match(/href="(.+?)"/)[1],
title: "HOLLIS Permalink",
snapshot: false
});
}
}
}
// End Harvard-specific code
item.complete();
}
function stripAuthor(str) {
// e.g. Wheaton, Barbara Ketcham [former owner]$$QWheaton, Barbara Ketcham
str = str.replace(/^(.*)\$\$Q(.*)$/, "$2");
return str
// Remove year
.replace(/\s*,?\s*\(?\d{4}-?(\d{4}|\.{3})?\)?/g, '')
// Remove creator type like (illustrator)
.replace(/(\s*,?\s*[[(][^()]*[\])])+$/, '')
// The full "continuous" name uses no separators, which need be removed
// cf. "Luc, Jean André : de (1727-1817)"
.replace(/\s*:\s+/, " ")
// National Library of Russia adds metadata at the end of the author name,
// prefixed by 'NLR10::'. Remove it.
.replace(/\bNLR10::.*/, '');
}
function fetchCreators(item, creators, type, splitGuidance) {
for (let i = 0; i < creators.length; i++) {
var creator = ZU.unescapeHTML(creators[i].textContent).split(/\s*;\s*/);
for (var j = 0; j < creator.length; j++) {
var c = stripAuthor(creator[j]).replace(/\./g, "");
c = ZU.cleanAuthor(
splitGuidance[c.toLowerCase()] || c,
type,
true
);
if (!c.firstName) {
delete c.firstName;
c.fieldMode = 1;
}
item.creators.push(c);
}
}
}
function extractNumPages(str) {
// Borrowed from Library Catalog (PICA). See #756
// make sure things like 2 partition don't match, but 2 p at the end of the field do
// f., p., and S. are "pages" in various languages
// For multi-volume works, we expect formats like:
// x-109 p., 510 p. and X, 106 S.; 123 S.
var numPagesRE = /\[?\b((?:[ivxlcdm\d]+[ \-,]*)+)\]?\s+[fps]\b/ig;
var numPages = [];
let m = numPagesRE.exec(str);
if (m) {
numPages.push(m[1].trim()
.replace(/[ \-,]+/g, '+')
.toLowerCase() // for Roman numerals
);
}
return numPages.join('; ');
}
function dedupeArray(names) {
// via http://stackoverflow.com/a/15868720/1483360
return names.reduce(function (a, b) {
if (!a.includes(b)) {
a.push(b);
}
return a;
}, []);
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "import",
"input": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <record xmlns=\"http://www.exlibrisgroup.com/xsd/primo/primo_nm_bib\" xmlns:sear=\"http://www.exlibrisgroup.com/xsd/jaguar/search\">\n <control>\n <sourcerecordid>22248448</sourcerecordid>\n <sourceid>medline</sourceid>\n <recordid>TN_medline22248448</recordid>\n <sourceformat>XML</sourceformat>\n <sourcesystem>Other</sourcesystem>\n </control>\n <display>\n <type>article</type>\n <title>Water</title>\n <creator>Bryant, Robert G ; Johnson, Mark A ; Rossky, Peter J</creator>\n <ispartof>Accounts of chemical research, 17 January 2012, Vol.45(1), pp.1-2</ispartof>\n <identifier><![CDATA[<b>E-ISSN:</b> 1520-4898 ; <b>PMID:</b> 22248448 Version:1 ; <b>DOI:</b> 10.1021/ar2003286]]></identifier>\n <subject>Water -- Chemistry</subject>\n <language>eng</language>\n <source/>\n <version>2</version>\n <lds50>peer_reviewed</lds50>\n </display>\n <links>\n <openurl>$$Topenurl_article</openurl>\n <backlink>$$Uhttp://pubmed.gov/22248448$$EView_this_record_in_MEDLINE/PubMed</backlink>\n <openurlfulltext>$$Topenurlfull_article</openurlfulltext>\n <addlink>$$Uhttp://exlibris-pub.s3.amazonaws.com/aboutMedline.html$$EView_the_MEDLINE/PubMed_Copyright_Statement</addlink>\n </links>\n <search>\n <creatorcontrib>Bryant, Robert G</creatorcontrib>\n <creatorcontrib>Johnson, Mark A</creatorcontrib>\n <creatorcontrib>Rossky, Peter J</creatorcontrib>\n <title>Water.</title>\n <subject>Water -- chemistry</subject>\n <general>22248448</general>\n <general>English</general>\n <general>MEDLINE/PubMed (U.S. National Library of Medicine)</general>\n <general>10.1021/ar2003286</general>\n <general>MEDLINE/PubMed (NLM)</general>\n <sourceid>medline</sourceid>\n <recordid>medline22248448</recordid>\n <issn>15204898</issn>\n <issn>1520-4898</issn>\n <rsrctype>text_resource</rsrctype>\n <creationdate>2012</creationdate>\n <addtitle>Accounts of chemical research</addtitle>\n <searchscope>medline</searchscope>\n <searchscope>nlm_medline</searchscope>\n <searchscope>MEDLINE</searchscope>\n <scope>medline</scope>\n <scope>nlm_medline</scope>\n <scope>MEDLINE</scope>\n <lsr41>20120117</lsr41>\n <citation>pf 1 vol 45 issue 1</citation>\n <startdate>20120117</startdate>\n <enddate>20120117</enddate>\n </search>\n <sort>\n <title>Water</title>\n <author>Bryant, Robert G ; Johnson, Mark A ; Rossky, Peter J</author>\n <creationdate>20120117</creationdate>\n <lso01>20120117</lso01>\n </sort>\n <facets>\n <frbrgroupid>-1388435396316500619</frbrgroupid>\n <frbrtype>5</frbrtype>\n <newrecords>20180102</newrecords>\n <language>eng</language>\n <creationdate>2012</creationdate>\n <topic>Water–Chemistry</topic>\n <collection>MEDLINE/PubMed (NLM)</collection>\n <rsrctype>text_resources</rsrctype>\n <creatorcontrib>Bryant, Robert G</creatorcontrib>\n <creatorcontrib>Johnson, Mark A</creatorcontrib>\n <creatorcontrib>Rossky, Peter J</creatorcontrib>\n <jtitle>Accounts Of Chemical Research</jtitle>\n <toplevel>peer_reviewed</toplevel>\n </facets>\n <delivery>\n <delcategory>Remote Search Resource</delcategory>\n <fulltext>fulltext</fulltext>\n </delivery>\n <addata>\n <aulast>Bryant</aulast>\n <aulast>Johnson</aulast>\n <aulast>Rossky</aulast>\n <aufirst>Robert G</aufirst>\n <aufirst>Mark A</aufirst>\n <aufirst>Peter J</aufirst>\n <au>Bryant, Robert G</au>\n <au>Johnson, Mark A</au>\n <au>Rossky, Peter J</au>\n <btitle>Water</btitle>\n <atitle>Water.</atitle>\n <jtitle>Accounts of chemical research</jtitle>\n <date>20120117</date>\n <risdate>20120117</risdate>\n <volume>45</volume>\n <issue>1</issue>\n <spage>1</spage>\n <pages>1-2</pages>\n <eissn>1520-4898</eissn>\n <format>book</format>\n <genre>document</genre>\n <ristype>GEN</ristype>\n <doi>10.1021/ar2003286</doi>\n <pmid>22248448</pmid>\n </addata>\n </record>",
"items": [
{
"itemType": "journalArticle",
"title": "Water",
"creators": [
{
"firstName": "Robert G.",
"lastName": "Bryant",
"creatorType": "author"
},
{
"firstName": "Mark A.",
"lastName": "Johnson",
"creatorType": "author"
},
{
"firstName": "Peter J.",
"lastName": "Rossky",
"creatorType": "author"
}
],
"date": "2012-01-17",
"DOI": "10.1021/ar2003286",
"ISSN": "1520-4898",
"issue": "1",
"language": "eng",
"pages": "1-2",
"publicationTitle": "Accounts of chemical research",
"volume": "45",
"attachments": [],
"tags": [
{
"tag": "Water"
},
{
"tag": "Chemistry"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><record xmlns=\"http://www.exlibrisgroup.com/xsd/primo/primo_nm_bib\" xmlns:sear=\"http://www.exlibrisgroup.com/xsd/jaguar/search\">\n <control>\n <sourcerecordid>002208563</sourcerecordid>\n <sourceid>HVD_ALEPH</sourceid>\n <recordid>HVD_ALEPH002208563</recordid>\n <originalsourceid>HVD01</originalsourceid>\n <ilsapiid>HVD01002208563</ilsapiid>\n <sourceformat>MARC21</sourceformat>\n <sourcesystem>Aleph</sourcesystem>\n </control>\n <display>\n <type>book</type>\n <title>Mastering the art of French cooking</title>\n <creator>Beck, Simone, 1904-1991. $$QBeck, Simone, 1904-1991.</creator>\n <contributor>Bertholle, Louisette.$$QBertholle, Louisette.</contributor>\n <contributor>Child, Julia.$$QChild, Julia.</contributor>\n <contributor>Wheaton, Barbara Ketcham [former owner]$$QWheaton, Barbara Ketcham</contributor>\n <contributor>DeVoto, Avis [former owner]$$QDeVoto, Avis</contributor>\n <edition>[1st ed.]</edition>\n <publisher>New York : Knopf, 1961-70.</publisher>\n <creationdate>1961-70</creationdate>\n <format>2 v. : ill. ; 26 cm.</format>\n <subject>Cooking, French.</subject>\n <description>Illustrates the ways in which classic French dishes may be created with American foodstuffs and appliances.</description>\n <language>eng</language>\n <source>HVD_ALEPH</source>\n <availlibrary>$$IHVD$$LHVD_SCH$$1Offsite Storage -- In-library use only$$2641.64 C53m, c.1$$Savailable$$32$$40$$5Y$$60$$XHVD50$$YSCH$$ZHD$$P78$$HHVD60003115849</availlibrary>\n <availlibrary>$$IHVD$$LHVD_SCH$$1Offsite Storage -- In-library use only$$2641.64 C53m, c. 3$$Savailable$$32$$40$$5Y$$61$$XHVD50$$YSCH$$ZHD$$P78$$HHVD60018187101</availlibrary>\n <availlibrary>$$IHVD$$LHVD_SCH$$1Offsite Storage -- In-library use only$$2641.64 C53m, c.5$$Savailable$$32$$40$$5Y$$60$$XHVD50$$YSCH$$ZHD$$P78$$HHVD60018770891</availlibrary>\n <availlibrary>$$IHVD$$LHVD_SCH$$1Offsite Storage -- In-library use only$$2641.64 C53m, c.6$$Savailable$$31$$40$$5Y$$60$$XHVD50$$YSCH$$ZHD$$P78$$HHVD60019421606</availlibrary>\n <availlibrary>$$IHVD$$LHVD_SCH$$1Offsite Storage -- In-library use only$$2641.64 C53m, c. 7$$Savailable$$32$$40$$5N$$60$$XHVD50$$YSCH$$ZHD$$P78$$HHVD60019730367</availlibrary>\n <availlibrary>$$IHVD$$LHVD_SCH$$1Offsite Storage -- In-library use only$$2641.64 C53m, c. 8$$Savailable$$31$$40$$5Y$$60$$XHVD50$$YSCH$$ZHD$$P78$$HHVD60019730395</availlibrary>\n <availlibrary>$$IHVD$$LHVD_SCH$$1Offsite Storage -- In-library use only$$2641.64 C53m, c.2$$Savailable$$31$$40$$5Y$$60$$XHVD50$$YSCH$$ZHD$$P78$$HHVD60016438903</availlibrary>\n <availlibrary>$$IHVD$$LHVD_SCH$$1Vault$$2641.64 C53m, c.4$$Savailable$$31$$40$$5N$$60$$XHVD50$$YSCH$$ZVAULT$$P78$$HHVD60018653989</availlibrary>\n <lds01>002208563</lds01>\n <lds02>567511</lds02>\n <lds03><a href=\"http://id.lib.harvard.edu/aleph/002208563/catalog\">http://id.lib.harvard.edu/aleph/002208563/catalog</a></lds03>\n <lds05>Knopf</lds05>\n <lds06>Vol. 1. Kitchen equipment -- Definitions -- Ingredients -- Measures -- Temperatures -- Cutting : chopping, slicing, dicing, and mincing -- Wines -- Soups -- Sauces -- Eggs -- Entrees and luncheon dishes -- Fish -- Poultry -- Meat -- Vegetables -- Cold buffet -- Desserts and cakes -- Vol. 2. Soups from the garden -- bisques and chowders from the sea -- Baking : breads, brioches, croissants, and pastries -- Meats : from country kitchen to haute cuisine -- Chickens, poached and sauced -- and a coq en pâte -- Charcuterie : sausages, salted pork and goose, pâtés and terrines -- A choice of vegetables -- Desserts :extending the repertoire -- Appendices : Stuffings -- Kitchen equipment -- Cuculative index for volumes one and two.</lds06>\n <lds13>Vol. 2 by Julia Child and Simone Beck.</lds13>\n <lds14>by Simone Beck, Louisette Bertholle [and] Julia Child.</lds14>\n <lds30>c. 3, 4, 5, 7, 8: -- Authors' inscriptions (Provenance)$$Qc. 3, 4, 5, 7, 8: Authors' inscriptions (Provenance)</lds30>\n <lds30>Cookbooks.$$QCookbooks.</lds30>\n <availinstitution>$$IHVD$$Savailable</availinstitution>\n <availpnx>available</availpnx>\n </display>\n <links>\n <openurl>$$Topenurl_journal</openurl>\n <backlink>$$Taleph_backlink$$Ebacklink</backlink>\n <thumbnail>$$Tgoogle_thumb</thumbnail>\n <openurlfulltext>$$Topenurlfull_journal</openurlfulltext>\n <linktoholdings>$$Taleph_holdings</linktoholdings>\n <linktouc>$$Tworldcat_oclc$$Eworldcat</linktouc>\n </links>\n <search>\n <creatorcontrib>Simone, Beck 1904-1991.</creatorcontrib>\n <creatorcontrib>Simca, 1904-1991</creatorcontrib>\n <creatorcontrib>Beck, Simone, 1904-1991.</creatorcontrib>\n <creatorcontrib>Simca, 1904-1991</creatorcontrib>\n <creatorcontrib>Beck, S</creatorcontrib>\n <creatorcontrib>Simca</creatorcontrib>\n <creatorcontrib>by Simone Beck, Louisette Bertholle [and] Julia Child.</creatorcontrib>\n <creatorcontrib>Louisette. Bertholle</creatorcontrib>\n <creatorcontrib>Julia. Child</creatorcontrib>\n <creatorcontrib>Barbara Ketcham, Wheaton former owner.</creatorcontrib>\n <creatorcontrib>Avis, DeVoto former owner.</creatorcontrib>\n <creatorcontrib>Julia Carolyn McWilliams</creatorcontrib>\n <creatorcontrib>Avis De Voto</creatorcontrib>\n <creatorcontrib>Avis de Voto</creatorcontrib>\n <creatorcontrib>Avis MacVicar DeVoto</creatorcontrib>\n <creatorcontrib>Bertholle, Louisette.</creatorcontrib>\n <creatorcontrib>Child, Julia.</creatorcontrib>\n <creatorcontrib>Wheaton, Barbara Ketcham, former owner.</creatorcontrib>\n <creatorcontrib>DeVoto, Avis, former owner.</creatorcontrib>\n <creatorcontrib>McWilliams, Julia Carolyn</creatorcontrib>\n <creatorcontrib>De Voto, Avis</creatorcontrib>\n <creatorcontrib>Voto, Avis de</creatorcontrib>\n <creatorcontrib>DeVoto, Avis MacVicar</creatorcontrib>\n <creatorcontrib>Bertholle, L</creatorcontrib>\n <creatorcontrib>Child, J</creatorcontrib>\n <creatorcontrib>Wheaton, B</creatorcontrib>\n <creatorcontrib>DeVoto, A</creatorcontrib>\n <creatorcontrib>McWilliams, J</creatorcontrib>\n <creatorcontrib>De Voto, A</creatorcontrib>\n <creatorcontrib>Voto, A</creatorcontrib>\n <title>Mastering the art of French cooking /</title>\n <description>Illustrates the ways in which classic French dishes may be created with American foodstuffs and appliances.</description>\n <subject>Cooking, French.</subject>\n <subject>Cookery, French</subject>\n <subject>French cooking</subject>\n <subject>Authors' inscriptions (Provenance)</subject>\n <subject>Cookbooks.</subject>\n <general>61012313</general>\n <general>Vol. 2 by Julia Child and Simone Beck.</general>\n <general>Bookplate of Denise K. Schorr.</general>\n <general>From the collection of Barbara Ketcham Wheaton; with armorial Wheaton bookplate.</general>\n <general>Authors' inscriptions on half title: Pour Barbara Wheaton avec amité et très grands compliments pour le resultat, L. Bertholle-Rémiôn; Si heureuse d'avoir pu instruire la charmante Barbara; Avec tous mes souvenirs et mon affection, Simone Beck; Twenty five years!-with love to our own Cul. Historian Supreme-Barbara Wheaton. Julia Child.</general>\n <general>From the collection of Ruth Lockwood.</general>\n <general>Author's inscription on half title: For Ruth Lockwood, We have always had such fun together, and our meeting of minds is not only gastronomical. With love, Julia Child, Cambridge, November 16, 1962.</general>\n <general>Author's inscription on front free endpaper: To Ruth J. Lockwood, P.F.C. Mirror, mirror on the wall/Who's most Ruthless of them all?/'Tis we are Ruthless, we who miss/The wisdom, heart--and even bliss--/Of having Ruthie (Chrysalis/From out of which the butterfly/Of genius grows) beside us. Aye!/'Tis we who miss belovéd Ruth/ Who Ruthless are, and so, forsooth,/We send this token of ourselves/To sit on tables, chairs, or shelves,/Reminder in the weeks ahead/To think of us, not just of bread,/Not just of fish, or meat, or spice,/Nor watercress, or lemon ice,/Not just chicken fricasee--/But think of J. and think of P. Cambridge, April 5, 1971. Paul Julia [Child].</general>\n <general>Authors' inscription on half title: To Avis [DeVoto], Pen Pal and Co-Author--Julia. First inscribed copy, Cambridge, Massachusetts, September 26, 1961; To my so dearest chérie Avis, avec toute ma profonde affection. Simone Beck.</general>\n <general>Authors' inscription on half title: Comme c'est merveilleux de retrouver ma soeur femelle Avis, pour le baptême de notre second enfant--si bienvenu au monde et avec l'espoir qu'il grandira dans les années à venir. Avec infiniment d'affection. Simone Beck. The second child! happily with the same Auntie Avis, still sheltering, advising, hand holding, scolding...thank god...this is our inscription of thanks from her niece and nephew, Julia and Paul.</general>\n <general>Printed label pasted onto front free endpaper: The French Chef, WGBH-TV, Channel 2, Boston; inscription on label: Best wishes and Bon Appétit! Julia Child.</general>\n <general>Author's inscription on half title: To Avis--with love. Final version with every known fixable thing fixed--Julia.</general>\n <general>Eighth printing, December 1964.</general>\n <general>Third printing, December 1970.</general>\n <general>1st printing.</general>\n <general>Author's inscription: A ma soeur en cuisine-vive l'art culinaire francaises aux USA! Julia Child, Cambridge, 31/7-62.</general>\n <general>Author's inscription: À notre très chère colleague et amie, Denise Schorr. Julia Child.</general>\n <general>2nd printing, Nov. 1962.</general>\n <general>Occasionl manuscript corrections in Julia Child's hand throughout.</general>\n <general>Corrections in DeVoto's hand throughout, partial index to corrections on back free endpaper; clippings laid in at pages 190/191 and 240/241 and manuscript recipes for herbed butters laid in at pages 102/103, removed and housed with volume.</general>\n <general>Occasional marks and corrections in DeVoto's throughout.</general>\n <general>Auctioneer's bookmark removed to Inserted material collection, call number MC 782.</general>\n <general>Twelfth printing, August 1966.</general>\n <general>24th printing, November 1973 ; new plates first used October, 1971 ; Child and Beck's positions have been reversed in these printings.</general>\n <general>Bound in original white cloth; in dust jacket as issued.</general>\n <general>Dust jacket preserved.</general>\n <general>Publisher's decorative oil cloth.</general>\n <general>Bound in original decorated boards; text block upside down.</general>\n <general>Bound in original decorated cloth; v.2 in dust jacket, as issued.</general>\n <general>Bound in original decorated cloth.</general>\n <general>Illustrates the ways in which classic French dishes may be created with American foodstuffs and appliances.</general>\n <sourceid>HVD_ALEPH</sourceid>\n <recordid>HVD_ALEPH002208563</recordid>\n <toc>Vol. 1. Kitchen equipment -- Definitions -- Ingredients -- Measures -- Temperatures -- Cutting : chopping, slicing, dicing, and mincing -- Wines -- Soups -- Sauces -- Eggs -- Entrees and luncheon dishes -- Fish -- Poultry -- Meat -- Vegetables -- Cold buffet -- Desserts and cakes -- Vol. 2. Soups from the garden -- bisques and chowders from the sea -- Baking : breads, brioches, croissants, and pastries -- Meats : from country kitchen to haute cuisine -- Chickens, poached and sauced -- and a coq en pâte -- Charcuterie : sausages, salted pork and goose, pâtés and terrines -- A choice of vegetables -- Desserts :extending the repertoire -- Appendices : Stuffings -- Kitchen equipment -- Cuculative index for volumes one and two.</toc>\n <rsrctype>book</rsrctype>\n <creationdate>1961</creationdate>\n <creationdate>1970</creationdate>\n <startdate>19610101</startdate>\n <enddate>19701231</enddate>\n <addtitle>Mastering the art of French cooking.</addtitle>\n <addtitle>Vol. 1. Kitchen equipment -- Definitions -- Ingredients -- Measures -- Temperatures -- Cutting : chopping, slicing, dicing, and mincing -- Wines -- Soups -- Sauces -- Eggs -- Entrees and luncheon dishes -- Fish -- Poultry -- Meat -- Vegetables -- Cold buffet -- Desserts and cakes -- Vol. 2. Soups from the garden -- bisques and chowders from the sea -- Baking : breads, brioches, croissants, and pastries -- Meats : from country kitchen to haute cuisine -- Chickens, poached and sauced -- and a coq en pâte -- Charcuterie : sausages, salted pork and goose, pâtés and terrines -- A choice of vegetables -- Desserts :extending the repertoire -- Appendices : Stuffings -- Kitchen equipment -- Cuculative index for volumes one and two.</addtitle>\n <searchscope>HVD_ALEPH</searchscope>\n <searchscope>HVD_SCH</searchscope>\n <searchscope>HVD</searchscope>\n <scope>HVD_ALEPH</scope>\n <scope>HVD_SCH</scope>\n <scope>HVD</scope>\n <lsr01>002208563</lsr01>\n <lsr01>2208563</lsr01>\n <lsr02>567511</lsr02>\n <lsr04>Knopf,</lsr04>\n <lsr05>New York :</lsr05>\n <lsr30>Authors' inscriptions (Provenance)</lsr30>\n <lsr30>Cookbooks.</lsr30>\n <lsr40>eng</lsr40>\n <lsr41>SCHHD</lsr41>\n <lsr41>SCHVAULT</lsr41>\n <lsr42>nyu</lsr42>\n </search>\n <sort>\n <title>Mastering the art of French cooking /</title>\n <creationdate>1961</creationdate>\n <author>Beck, Simone, 1904-1991.</author>\n <lso01>1961</lso01>\n </sort>\n <facets>\n <language>eng</language>\n <creationdate>1961</creationdate>\n <topic>Cooking, French</topic>\n <collection>Harvard ILS</collection>\n <toplevel>available</toplevel>\n <toplevel>available_onsite</toplevel>\n <prefilter>books</prefilter>\n <rsrctype>books</rsrctype>\n <creatorcontrib>Beck, Simone, 1904-1991</creatorcontrib>\n <creatorcontrib>Bertholle, Louisette</creatorcontrib>\n <creatorcontrib>Child, Julia</creatorcontrib>\n <creatorcontrib>Wheaton, Barbara Ketcham</creatorcontrib>\n <creatorcontrib>DeVoto, Avis</creatorcontrib>\n <genre>Authors' inscriptions (Provenance)</genre>\n <genre>Cookbooks</genre>\n <library>HVD_SCH</library>\n <classificationlcc>T - Technology .–Home economics–Cookery</classificationlcc>\n <newrecords>20140704_558</newrecords>\n <frbrgroupid>154092483</frbrgroupid>\n <frbrtype>6</frbrtype>\n </facets>\n <dedup>\n <t>1</t>\n <c5>002208563</c5>\n <f20>002208563</f20>\n </dedup>\n <frbr>\n <t>1</t>\n <k1>$$Kbeck simone 1904 1991$$AA</k1>\n <k3>$$Kmastering the art of french cooking$$AT</k3>\n </frbr>\n <delivery>\n <institution>HVD</institution>\n <delcategory>Physical Item</delcategory>\n </delivery>\n <enrichment>\n <classificationlcc>TX719</classificationlcc>\n </enrichment>\n <ranking>\n <booster1>1</booster1>\n <booster2>1</booster2>\n </ranking>\n <addata>\n <aulast>Beck</aulast>\n <aufirst>Simone,</aufirst>\n <au>Beck, Simone</au>\n <addau>Bertholle, Louisette</addau>\n <addau>Child, Julia</addau>\n <addau>Wheaton, Barbara Ketcham</addau>\n <addau>DeVoto, Avis</addau>\n <btitle>Mastering the art of French cooking</btitle>\n <date>1961</date>\n <risdate>1961</risdate>\n <format>book</format>\n <genre>book</genre>\n <ristype>BOOK</ristype>\n <abstract>Illustrates the ways in which classic French dishes may be created with American foodstuffs and appliances.</abstract>\n <cop>New York</cop>\n <pub>Knopf</pub>\n <oclcid>567511</oclcid>\n </addata>\n <browse>\n <author>$$DBeck, Simone, 1904-1991$$EBeck, Simone, 1904-1991$$IHVD10000331329$$PY</author>\n <author>$$DSimca, 1904-1991$$ESimca, 1904-1991$$IHVD10000331329$$PN</author>\n <author>$$DBertholle, Louisette$$EBertholle, Louisette$$IHVD10002219894$$PY</author>\n <author>$$DChild, Julia$$EChild, Julia$$IHVD10000337040$$PY</author>\n <author>$$DWheaton, Barbara Ketcham$$EWheaton, Barbara Ketcham$$IHVD10002222513$$PY</author>\n <author>$$DDeVoto, Avis$$EDeVoto, Avis$$IHVD10002387803$$PY</author>\n <author>$$DMcWilliams, Julia Carolyn$$EMcWilliams, Julia Carolyn$$IHVD10000337040$$PN</author>\n <author>$$DDe Voto, Avis$$EDe Voto, Avis$$IHVD10002387803$$PN</author>\n <author>$$DVoto, Avis de$$EVoto, Avis de$$IHVD10002387803$$PN</author>\n <author>$$DDeVoto, Avis MacVicar$$EDeVoto, Avis MacVicar$$IHVD10002387803$$PN</author>\n <title>$$DMastering the art of French cooking$$EMastering the art of French cooking</title>\n <subject>$$DCooking, French$$ECooking, French$$IHVD10000082473$$PY</subject>\n <subject>$$DCookery, French$$ECookery, French$$IHVD10000082473$$PN</subject>\n <subject>$$DFrench cooking$$EFrench cooking$$IHVD10000082473$$PN</subject>\n <callnumber>$$IHVD$$D641.64 C53m, c.1$$E000000000641.064000000000 c000000000053m, c.000000000001$$T1</callnumber>\n <callnumber>$$IHVD$$D641.64 C53m, c. 3$$E000000000641.064000000000 c000000000053m, c. 000000000003$$T1</callnumber>\n <callnumber>$$IHVD$$D641.64 C53m, c.4$$E000000000641.064000000000 c000000000053m, c.000000000004$$T1</callnumber>\n <callnumber>$$IHVD$$D641.64 C53m, c.5$$E000000000641.064000000000 c000000000053m, c.000000000005$$T1</callnumber>\n <callnumber>$$IHVD$$D641.64 C53m, c.6$$E000000000641.064000000000 c000000000053m, c.000000000006$$T1</callnumber>\n <callnumber>$$IHVD$$D641.64 C53m, c. 7$$E000000000641.064000000000 c000000000053m, c. 000000000007$$T1</callnumber>\n <callnumber>$$IHVD$$D641.64 C53m, c. 8$$E000000000641.064000000000 c000000000053m, c. 000000000008$$T1</callnumber>\n <callnumber>$$IHVD$$D641.64 C53m, c.2$$E000000000641.064000000000 c000000000053m, c.000000000002$$T1</callnumber>\n <institution>HVD</institution>\n </browse>\n </record>",
"items": [
{
"itemType": "book",
"title": "Mastering the art of French cooking",
"creators": [
{
"firstName": "Simone",
"lastName": "Beck",
"creatorType": "author"
},
{
"firstName": "Louisette",
"lastName": "Bertholle",
"creatorType": "contributor"
},
{
"firstName": "Julia",
"lastName": "Child",
"creatorType": "contributor"
},
{
"firstName": "Barbara Ketcham",
"lastName": "Wheaton",
"creatorType": "contributor"
},
{
"firstName": "Avis",
"lastName": "DeVoto",
"creatorType": "contributor"
}
],
"date": "1961",
"abstractNote": "Illustrates the ways in which classic French dishes may be created with American foodstuffs and appliances.",
"callNumber": "641.64 C53m, c.1, 641.64 C53m, c. 3, 641.64 C53m, c.4, 641.64 C53m, c.5, 641.64 C53m, c.6, 641.64 C53m, c. 7, 641.64 C53m, c. 8, 641.64 C53m, c.2",
"edition": "[1st ed.]",
"extra": "HOLLIS number: 002208563",
"language": "eng",
"place": "New York",
"publisher": "Knopf",
"attachments": [
{
"title": "HOLLIS Permalink",
"snapshot": false
}
],
"tags": [
{
"tag": "Cooking, French."
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<record xmlns=\"http://www.exlibrisgroup.com/xsd/primo/primo_nm_bib\" xmlns:sear=\"http://www.exlibrisgroup.com/xsd/jaguar/search\">\n <control>\n <sourcerecordid>21126560510002561</sourcerecordid>\n <sourceid>MAN_ALMA</sourceid>\n <recordid>MAN_ALMA21126560510002561</recordid>\n <originalsourceid>MAN_INST</originalsourceid>\n <addsrcrecordid>KPLUS492418942</addsrcrecordid>\n <addsrcrecordid>BSZ118463411</addsrcrecordid>\n <addsrcrecordid>OCLC238724886</addsrcrecordid>\n <addsrcrecordid>OCLC62185846</addsrcrecordid>\n <sourceformat>MARC21</sourceformat>\n <sourcesystem>Alma</sourcesystem>\n <almaid>49MAN_INST:21126560510002561</almaid>\n </control>\n <display>\n <type>book</type>\n <title>Zur Medienöffentlichkeit der Dritten Gewalt rechtliche Aspekte des Zugangs der Medien zur Rechtsprechung im Verfassungsstaat des Grundgesetzes</title>\n <creator>Coelln, Christian von</creator>\n <contributor>Bethge, Herbert</contributor>\n <contributor>Söhn, Hartmut [Gutachter]</contributor>\n <publisher>Tübingen Mohr Siebeck</publisher>\n <creationdate>2005</creationdate>\n <format>XXX, 575 S. 24 cm</format>\n <identifier>$$CISBN$$V 3161486617</identifier>\n <subject>Conduct of court proceedings -- Germany; Constitutional law -- Germany; Freedom of information -- Germany; Hochschulschrift</subject>\n <subject>Deutschland / Rechtsprechende Gewalt / Öffentlichkeitsgrundsatz / Informationsfreiheit</subject>\n <subject>Deutschland / Gerichtsberichterstattung / Elektronische Medien / Verbot / Verfassungsmäßigkeit</subject>\n <subject>Deutschland / Gerichtsverhandlung / Schallaufzeichnung / Bildaufzeichnung</subject>\n <description>Zugl.: Passau, Univ., Habil.-Schr., 2004</description>\n <description>Christian von Coelln behandelt die rechtlichen, insbesondere die verfassungsrechtlichen Fragen des Zugangs der Medien zur Rechtsprechung. Neben generellen Erwägungen zur Bedeutung der Medienöffentlichkeit der Dritten Gewalt für Demokratie und Rechtsstaat befaßt er sich u.a. mit der Teilnahme von Journalisten an mündlichen Verhandlungen und mit der Problematik von Bild- und Tonaufnahmen in Gerichtsgebäuden.(Quelle: Verlag).</description>\n <language>ger</language>\n <relation>$$Cseries $$VIus publicum ; 138 ; 13800</relation>\n <source>MAN_ALMA</source>\n <availlibrary>$$IMAN$$LMANLS300$$1Lehrstuhl Müller-Terpitz$$2(341 PH 4520 C672 )$$Savailable$$X49MAN_INST$$YLS300$$Z341$$P1</availlibrary>\n <lds01>Mohr Siebeck</lds01>\n <lds27>121557006 Bethge, Herbert</lds27>\n <lds30>PG 430</lds30>\n <availinstitution>$$IMAN$$Savailable</availinstitution>\n <availpnx>available</availpnx>\n </display>\n <links>\n <openurl>$$Topenurl</openurl>\n <thumbnail>$$Tamazon_thumb</thumbnail>\n <thumbnail>$$Tgoogle_thumb</thumbnail>\n <addlink>$$Uhttp://www.gbv.de/dms/bsz/toc/bsz118463411inh.pdf$$DInhaltsverzeichnis 04</addlink>\n <addlink>$$Uhttp://d-nb.info/975503499/04$$D04</addlink>\n <addlink>$$Uhttp://swbplus.bsz-bw.de/bsz118463411inh.htm$$DInhaltsverzeichnis</addlink>\n <lln05>$$TSerial_Link$$ESerialLink$$1UP(DE-627)231976704</lln05>\n </links>\n <search>\n <creatorcontrib>Christian von Coelln</creatorcontrib>\n <creatorcontrib>Christian, Von Coelln</creatorcontrib>\n <creatorcontrib>Coelln, C</creatorcontrib>\n <creatorcontrib>Von Coelln, C</creatorcontrib>\n <creatorcontrib>Christian von Coelln</creatorcontrib>\n <creatorcontrib>Herbert Bethge</creatorcontrib>\n <creatorcontrib>Hartmut Söhn Gutachter</creatorcontrib>\n <creatorcontrib>Bethge, H</creatorcontrib>\n <creatorcontrib>Söhn, H</creatorcontrib>\n <creatorcontrib>Coelln, Christian von</creatorcontrib>\n <creatorcontrib>Coelln C</creatorcontrib>\n <creatorcontrib>Bethge, Herbert</creatorcontrib>\n <creatorcontrib>Söhn, Hartmut [Gutachter]</creatorcontrib>\n <title>Zur Medienöffentlichkeit der Dritten Gewalt rechtliche Aspekte des Zugangs der Medien zur Rechtsprechung im Verfassungsstaat des Grundgesetzes</title>\n <description>Christian von Coelln behandelt die rechtlichen, insbesondere die verfassungsrechtlichen Fragen des Zugangs der Medien zur Rechtsprechung. Neben generellen Erwägungen zur Bedeutung der Medienöffentlichkeit der Dritten Gewalt für Demokratie und Rechtsstaat befaßt er sich u.a. mit der Teilnahme von Journalisten an mündlichen Verhandlungen und mit der Problematik von Bild- und Tonaufnahmen in Gerichtsgebäuden.(Quelle: Verlag).</description>\n <subject>Conduct of court proceedings Germany</subject>\n <subject>Constitutional law Germany</subject>\n <subject>Freedom of information Germany</subject>\n <subject>Hochschulschrift</subject>\n <subject>Deutschland</subject>\n <subject>Rechtsprechende Gewalt</subject>\n <subject>Öffentlichkeitsgrundsatz</subject>\n <subject>Informationsfreiheit</subject>\n <subject>Gerichtsberichterstattung</subject>\n <subject>Elektronische Medien</subject>\n <subject>Verbot</subject>\n <subject>Verfassungsmäßigkeit</subject>\n <subject>Gerichtsverhandlung</subject>\n <subject>Schallaufzeichnung</subject>\n <subject>Bildaufzeichnung</subject>\n <subject>Tonaufzeichnung</subject>\n <subject>Phonogramm</subject>\n <subject>Schallaufnahme</subject>\n <subject>Tonaufnahme</subject>\n <subject>Audioaufzeichnung</subject>\n <subject>Fonogramm</subject>\n <subject>Tondokument</subject>\n <subject>Schalldokument</subject>\n <subject>E-Medien</subject>\n <subject>Justizberichterstattung</subject>\n <subject>Prozessberichterstattung</subject>\n <subject>Prozess</subject>\n <subject>Deutsche Länder</subject>\n <subject>Germany</subject>\n <subject>Heiliges Römisches Reich</subject>\n <subject>Rheinbund</subject>\n <subject>Deutscher Bund</subject>\n <subject>Norddeutscher Bund</subject>\n <subject>Deutsches Reich</subject>\n <subject>BRD</subject>\n <subject>Federal Republic of Germany</subject>\n <subject>Republic of Germany</subject>\n <subject>Allemagne</subject>\n <subject>Ǧumhūrīyat Almāniyā al-Ittiḥādīya</subject>\n <subject>Bundesrepublik Deutschland</subject>\n <subject>Niemcy</subject>\n <subject>République Fédérale d'Allemagne</subject>\n <subject>Repubblica Federale di Germania</subject>\n <subject>Germanija</subject>\n <subject>Federativnaja Respublika Germanija</subject>\n <subject>FRG</subject>\n <subject>Deyizhi-Lianbang-Gongheguo</subject>\n <subject>Informationsanspruch</subject>\n <subject>Recht auf Information</subject>\n <subject>Grundrecht</subject>\n <subject>Gerichtsöffentlichkeit</subject>\n <subject>Öffentlichkeit</subject>\n <subject>Judikative</subject>\n <subject>Dritte Gewalt</subject>\n <subject>Bundesverfassungsgericht</subject>\n <subject>Federal Constitutional Court</subject>\n <subject>Constitutional Court</subject>\n <subject>Pressestelle</subject>\n <subject>Cour Constitutionnelle Fédérale</subject>\n <subject>Savezni Ustavni Sud</subject>\n <subject>Savezni Ustavni Sud Nemačke</subject>\n <subject>De guo lian bang xian fa fa yuan</subject>\n <subject>BVerfG</subject>\n <subject>BVerfGK</subject>\n <subject>Conduct of court proceedings -- Germany; Constitutional law -- Germany; Freedom of information -- Germany; Hochschulschrift</subject>\n <subject>Deutschland / Rechtsprechende Gewalt / Öffentlichkeitsgrundsatz / Informationsfreiheit</subject>\n <subject>Deutschland / Gerichtsberichterstattung / Elektronische Medien / Verbot / Verfassungsmäßigkeit</subject>\n <subject>Deutschland / Gerichtsverhandlung / Schallaufzeichnung / Bildaufzeichnung</subject>\n <general>Mohr Siebeck</general>\n <general>Zugl.: Passau, Univ., Habil.-Schr., 2004</general>\n <sourceid>MAN_ALMA</sourceid>\n <recordid>MAN_ALMA21126560510002561</recordid>\n <isbn>3161486617</isbn>\n <isbn>9783161486616</isbn>\n <rsrctype>book</rsrctype>\n <creationdate>2005</creationdate>\n <startdate>20050101</startdate>\n <enddate>20051231</enddate>\n <addtitle>Jus publicum 138</addtitle>\n <addtitle>Ius publicum 138</addtitle>\n <addsrcrecordid>990016187190402561</addsrcrecordid>\n <addsrcrecordid>KPLUS492418942</addsrcrecordid>\n <addsrcrecordid>BSZ118463411</addsrcrecordid>\n <addsrcrecordid>OCLC238724886</addsrcrecordid>\n <addsrcrecordid>OCLC62185846</addsrcrecordid>\n <searchscope>MAN_ALMA</searchscope>\n <searchscope>MAN</searchscope>\n <scope>MAN_ALMA</scope>\n <scope>MAN</scope>\n <lsr01>UP(DE-627)492418942</lsr01>\n <lsr02>DN990000639400402561</lsr02>\n <lsr02>DN990016187190402561</lsr02>\n <lsr07>SPE990016187190402561</lsr07>\n <lsr24>LS300</lsr24>\n <lsr25>341 PH 4520 C672</lsr25>\n <lsr25>341PH4520C672</lsr25>\n <lsr30>PG 430</lsr30>\n </search>\n <sort>\n <title>Zur Medienöffentlichkeit der Dritten Gewalt rechtliche Aspekte des Zugangs der Medien zur Rechtsprechung im Verfassungsstaat des Grundgesetzes</title>\n <creationdate>2005</creationdate>\n <author>Coelln, Christian von 1967-</author>\n </sort>\n <facets>\n <language>ger</language>\n <creationdate>2005</creationdate>\n <topic>Conduct of court proceedings–Germany</topic>\n <topic>Constitutional law–Germany</topic>\n <topic>Freedom of information–Germany</topic>\n <collection>MANLS300</collection>\n <toplevel>printmedia</toplevel>\n <prefilter>books</prefilter>\n <rsrctype>books</rsrctype>\n <creatorcontrib>Coelln, Christian von</creatorcontrib>\n <creatorcontrib>Bethge, Herbert</creatorcontrib>\n <creatorcontrib>Söhn, Hartmut</creatorcontrib>\n <genre>Hochschulschrift</genre>\n <atoz>Z</atoz>\n <lfc04>MAN09</lfc04>\n <lfc14>DOM11</lfc14>\n <newrecords>20160104_120</newrecords>\n <frbrgroupid>140711198</frbrgroupid>\n <frbrtype>6</frbrtype>\n </facets>\n <dedup>\n <t>1</t>\n <c2>3161486617</c2>\n <c3>zurmedienoeffentlichndgesetzes</c3>\n <c4>2005</c4>\n <c5>990016187190402561</c5>\n <f3>3161486617</f3>\n <f5>zurmedienoeffentlichndgesetzes</f5>\n <f6>2005</f6>\n <f7>zur medienoeffentlichkeit der dritten gewalt rechtliche aspekte des zugangs der medien zur rechtsprechung im verfassungsstaat des grundgesetzes</f7>\n <f8>xx</f8>\n <f9>XXX, 575 S.</f9>\n <f10>mohr siebeck</f10>\n <f11>coelln christian von 1967</f11>\n <f20>990016187190402561</f20>\n </dedup>\n <frbr>\n <t>1</t>\n <k1>$$Kcoelln christian von 1967$$AA</k1>\n <k3>$$Kzur medienoeffentlichkeit der dritten gewalt rechtliche aspekte des zugangs der medien zur rechtsprechung im verfassungsstaat des grundgesetzes$$AT</k3>\n </frbr>\n <delivery>\n <institution>MAN</institution>\n <delcategory>Alma-P</delcategory>\n </delivery>\n <enrichment>\n <classificationlcc>KK5162</classificationlcc>\n </enrichment>\n <ranking>\n <booster1>1</booster1>\n <booster2>1</booster2>\n </ranking>\n <addata>\n <aulast>Coelln</aulast>\n <aulast>Bethge</aulast>\n <aulast>Söhn</aulast>\n <aufirst>Christian von</aufirst>\n <aufirst>Herbert</aufirst>\n <aufirst>Hartmut</aufirst>\n <au>Coelln, Christian von</au>\n <addau>Bethge, Herbert</addau>\n <addau>Söhn, Hartmut</addau>\n <btitle>Zur Medienöffentlichkeit der Dritten Gewalt rechtliche Aspekte des Zugangs der Medien zur Rechtsprechung im Verfassungsstaat des Grundgesetzes</btitle>\n <seriestitle>Jus publicum; 138</seriestitle>\n <date>2005</date>\n <risdate>2005</risdate>\n <isbn>3161486617</isbn>\n <format>dissertation</format>\n <ristype>THES</ristype>\n <notes>Zugl.: Passau, Univ., Habil.-Schr., 2004</notes>\n <abstract>Christian von Coelln behandelt die rechtlichen, insbesondere die verfassungsrechtlichen Fragen des Zugangs der Medien zur Rechtsprechung. Neben generellen Erwägungen zur Bedeutung der Medienöffentlichkeit der Dritten Gewalt für Demokratie und Rechtsstaat befaßt er sich u.a. mit der Teilnahme von Journalisten an mündlichen Verhandlungen und mit der Problematik von Bild- und Tonaufnahmen in Gerichtsgebäuden.(Quelle: Verlag).</abstract>\n <cop>Tübingen</cop>\n <mis1>21126560510002561</mis1>\n <oclcid>238724886</oclcid>\n <oclcid>62185846</oclcid>\n </addata>\n <browse>\n <author>$$DCoelln, Christian von 1967-$$ECoelln, Christian von 1967-$$PY</author>\n <author>$$DBethge, Herbert 1939-$$EBethge, Herbert 1939-$$I121557006</author>\n <author>$$DSöhn, Hartmut$$ESöhn, Hartmut$$PY</author>\n <title>$$DZur Medienöffentlichkeit der Dritten Gewalt rechtliche Aspekte des Zugangs der Medien zur Rechtsprechung im Verfassungsstaat des Grundgesetzes$$EZur Medienöffentlichkeit der Dritten Gewalt rechtliche Aspekte des Zugangs der Medien zur Rechtsprechung im Verfassungsstaat des Grundgesetzes</title>\n <title>$$DJus publicum$$EJus publicum</title>\n <title>$$DIus publicum 13800$$EIus publicum 13800</title>\n <subject>$$DConduct of court proceedings -- Germany$$EConduct of court proceedings Germany</subject>\n <subject>$$DConstitutional law -- Germany$$EConstitutional law Germany</subject>\n <subject>$$DFreedom of information -- Germany$$EFreedom of information Germany</subject>\n <subject>$$DHochschulschrift$$EHochschulschrift$$Tgnd-content$$I(DE-588)4113937-9 (DE-627)105825778 (DE-576)209480580</subject>\n <institution>MAN</institution>\n </browse>\n</record>\n",
"items": [
{
"itemType": "book",
"title": "Zur Medienöffentlichkeit der Dritten Gewalt rechtliche Aspekte des Zugangs der Medien zur Rechtsprechung im Verfassungsstaat des Grundgesetzes",
"creators": [
{
"firstName": "Christian von",
"lastName": "Coelln",
"creatorType": "author"
},
{
"firstName": "Herbert",
"lastName": "Bethge",
"creatorType": "contributor"
},
{
"firstName": "Hartmut",
"lastName": "Söhn",
"creatorType": "contributor"
}
],
"date": "2005",
"ISBN": "3161486617",
"abstractNote": "Zugl.: Passau, Univ., Habil.-Schr., 2004, Christian von Coelln behandelt die rechtlichen, insbesondere die verfassungsrechtlichen Fragen des Zugangs der Medien zur Rechtsprechung. Neben generellen Erwägungen zur Bedeutung der Medienöffentlichkeit der Dritten Gewalt für Demokratie und Rechtsstaat befaßt er sich u.a. mit der Teilnahme von Journalisten an mündlichen Verhandlungen und mit der Problematik von Bild- und Tonaufnahmen in Gerichtsgebäuden.(Quelle: Verlag).",
"callNumber": "341 PH 4520 C672",
"language": "ger",
"numPages": "xxx+575",
"place": "Tübingen",
"publisher": "Mohr Siebeck",
"series": "Jus publicum",
"seriesNumber": "138",
"attachments": [],
"tags": [
{
"tag": "Bildaufzeichnung"
},
{
"tag": "Conduct of court proceedings"
},
{
"tag": "Deutschland"
},
{
"tag": "Deutschland"
},
{
"tag": "Deutschland"
},
{
"tag": "Elektronische Medien"
},
{
"tag": "Gerichtsberichterstattung"
},
{
"tag": "Gerichtsverhandlung"
},
{
"tag": "Germany; Constitutional law"
},
{
"tag": "Germany; Freedom of information"
},
{
"tag": "Germany; Hochschulschrift"
},
{
"tag": "Informationsfreiheit"
},
{
"tag": "Rechtsprechende Gewalt"
},
{
"tag": "Schallaufzeichnung"
},
{
"tag": "Verbot"
},
{
"tag": "Verfassungsmäßigkeit"
},
{
"tag": "Öffentlichkeitsgrundsatz"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<record xmlns=\"http://www.exlibrisgroup.com/xsd/primo/primo_nm_bib\" xmlns:sear=\"http://www.exlibrisgroup.com/xsd/jaguar/search\">\n <control>\n <sourcerecordid>21150834900003766</sourcerecordid>\n <sourceid>01CTW_CC_ALMA</sourceid>\n <recordid>01CTW_CC_ALMA21150834900003766</recordid>\n <originalsourceid>01CTW_CC</originalsourceid>\n <sourceformat>MARC21</sourceformat>\n <sourcesystem>Alma</sourcesystem>\n <almaid>01CTW_CC/21150834900003766</almaid>\n <almaid>01CTW_CC:21150834900003766</almaid>\n </control>\n <display>\n <type>print_book</type>\n <title>The sea</title>\n <creator>John Crompton 1893-1972</creator>\n <publisher>New York, NY : Nick Lyons Books</publisher>\n <creationdate>1988</creationdate>\n <format>x, 233, [1] p. ; 21 cm..</format>\n <identifier>$$CISBN$$V0941130835 (pbk.) :</identifier>\n <subject>Marine biology</subject>\n <language>eng</language>\n <source>01CTW_CC_ALMA</source>\n <availlibrary>$$I01CTW_CC$$L01CTW_CC_CCSHAIN$$1CC - Main Book Collection (call numbers A-G level 2; H-Z level 3)$$2(QH91 C76 1988)$$Savailable$$X01CTW_CC$$YCCSHAIN$$ZCSTACKS$$P1</availlibrary>\n <notes>Bibliography: p. [234].</notes>\n <lds01>992232803503766</lds01>\n <lds02>01CTW_CC_ALMA21150834900003766</lds02>\n <lds03>Reprint. Originally published: New York : Doubleday, 1957. With new introd.</lds03>\n <lds03>Includes index.</lds03>\n <lds03>Armington Social Values Collection.</lds03>\n <lds07>Committed to retain for Eastern Academic Scholars' Trust</lds07>\n <availinstitution>$$I01CTW_CC$$Savailable</availinstitution>\n <availpnx>available</availpnx>\n </display>\n <links>\n <thumbnail>$$Tamazon_thumb</thumbnail>\n <thumbnail>$$Tgoogle_thumb</thumbnail>\n <linktouc>$$Tworldcat_isbn$$Eworldcat</linktouc>\n <uri>$$Aisbn$$V0941130835$$U(uri) http://www.isbnsearch.org/isbn/0941130835</uri>\n <uri>$$Aoclc_nr$$V(OCoLC)ocm17412356$$U(uri) http://www.worldcat.org/oclc/17412356</uri>\n <uri>$$Acreatorcontrib$$VCrompton, John$$U(uri) http://id.loc.gov/authorities/names/n85809864$$U(uri) http://viaf.org/viaf/sourceID/LC|n85809864</uri>\n <uri>$$Asubject$$VMarine biology$$U(uri) http://id.loc.gov/authorities/subjects/sh85081138</uri>\n </links>\n <search>\n <creatorcontrib>John, Crompton 1893-1972.</creatorcontrib>\n <creatorcontrib>John Battersby Crompton, Lamburn 1893-</creatorcontrib>\n <creatorcontrib>Crompton, J</creatorcontrib>\n <creatorcontrib>Lamburn, J</creatorcontrib>\n <creatorcontrib>John Crompton ; with 24 drawings by Denys Ovenden ; [introduction by Robert F. Jones].</creatorcontrib>\n <title>The sea /</title>\n <subject>Marine biology.</subject>\n <subject>Biological oceanography</subject>\n <subject>Ocean biology</subject>\n <subject>Oceanic biology</subject>\n <subject>Sea biology</subject>\n <general>Nick Lyons Books,</general>\n <general>Reprint. Originally published: New York : Doubleday, 1957. With new introd.</general>\n <general>Includes index.</general>\n <general>Armington Social Values Collection.</general>\n <sourceid>01CTW_CC_ALMA</sourceid>\n <recordid>01CTW_CC_ALMA21150834900003766</recordid>\n <isbn>0941130835</isbn>\n <rsrctype>print_book</rsrctype>\n <creationdate>1988</creationdate>\n <creationdate>1957</creationdate>\n <startdate>19880101</startdate>\n <enddate>19881231</enddate>\n <addsrcrecordid>992232803503766</addsrcrecordid>\n <searchscope>01CTW_CC_ALMA</searchscope>\n <searchscope>01CTW_CC</searchscope>\n <searchscope>CC_CC_P</searchscope>\n <searchscope>CC_WU_P</searchscope>\n <searchscope>CC_TC_P</searchscope>\n <scope>01CTW_CC_ALMA</scope>\n <scope>01CTW_CC</scope>\n <scope>CC_CC_P</scope>\n <scope>CC_WU_P</scope>\n <scope>CC_TC_P</scope>\n <lsr02>(OCoLC)ocm17412356</lsr02>\n <lsr02>(CtNlC)223280-conndb-Voyager</lsr02>\n </search>\n <sort>\n <title>sea /</title>\n <creationdate>1988</creationdate>\n <author>Crompton, John, 1893-1972.</author>\n </sort>\n <facets>\n <language>eng</language>\n <creationdate>1988</creationdate>\n <topic>Marine biology</topic>\n <toplevel>available</toplevel>\n <prefilter>print_books</prefilter>\n <rsrctype>print_books</rsrctype>\n <creatorcontrib>Crompton, John</creatorcontrib>\n <library>01CTW_CC_CCSHAIN</library>\n <atoz>S</atoz>\n <lfc01>CC - Main Book Collection (call numbers A-G level 2; H-Z level 3)</lfc01>\n <lfc03>CC - Main Book Collection (call numbers A-G level 2; H-Z level 3)</lfc03>\n <lfc02>01CTW_CC</lfc02>\n <classificationlcc>Q - Science.–Natural history (General)–General Including nature conservation, geographical distribution</classificationlcc>\n <newrecords>20170628_481</newrecords>\n <frbrgroupid>1168449273</frbrgroupid>\n <frbrtype>6</frbrtype>\n </facets>\n <dedup>\n <t>99</t>\n <c1>88000538</c1>\n <c2>0941130835</c2>\n <c3>sea</c3>\n <c4>1988</c4>\n <c5>992232803503766</c5>\n <f1>88000538</f1>\n <f3>0941130835</f3>\n <f5>sea</f5>\n <f6>1988</f6>\n <f7>sea</f7>\n <f8>nyu</f8>\n <f9>x, 233, [1] p. ;</f9>\n <f10>nick lyons books</f10>\n <f11>crompton john 1893 1972</f11>\n <f20>992232803503766</f20>\n </dedup>\n <frbr>\n <t>99</t>\n <k1>$$K01CTW_CC_ALMA21150834900003766$$AA</k1>\n <k3>$$Ksea$$AT</k3>\n </frbr>\n <delivery>\n <institution>01CTW_CC</institution>\n <delcategory>Alma-P</delcategory>\n </delivery>\n <enrichment>\n <classificationlcc>QH91</classificationlcc>\n </enrichment>\n <ranking>\n <booster1>1</booster1>\n <booster2>1</booster2>\n </ranking>\n <addata>\n <aulast>Crompton</aulast>\n <aufirst>John,</aufirst>\n <au>Crompton, John</au>\n <btitle>The sea</btitle>\n <date>1988</date>\n <risdate>1988</risdate>\n <isbn>0941130835</isbn>\n <format>book</format>\n <genre>unknown</genre>\n <ristype>BOOK</ristype>\n <notes>Bibliography: p. [234].</notes>\n <cop>New York, NY</cop>\n <pub>Nick Lyons Books</pub>\n <mis1>21150834900003766</mis1>\n <oclcid>17412356</oclcid>\n <lccn>88000538</lccn>\n </addata>\n <browse>\n <author>$$DCrompton, John, 1893-1972$$ECrompton, John, 1893-1972$$I41-LIBRARY_OF_CONGRESS-n 85809864$$PY</author>\n <author>$$Dnna Lamburn, John Battersby Crompton, 1893-$$Enna Lamburn, John Battersby Crompton, 1893-$$I41-LIBRARY_OF_CONGRESS-n 85809864$$PN</author>\n <title>$$DThe sea$$Esea</title>\n <subject>$$DMarine biology$$EMarine biology$$TLCSH$$I41-LIBRARY_OF_CONGRESS-sh 85081138$$PY</subject>\n <subject>$$DBiological oceanography$$EBiological oceanography$$TLCSH$$I41-LIBRARY_OF_CONGRESS-sh 85081138$$PN</subject>\n <subject>$$DOcean biology$$EOcean biology$$TLCSH$$I41-LIBRARY_OF_CONGRESS-sh 85081138$$PN</subject>\n <subject>$$DOceanic biology$$EOceanic biology$$TLCSH$$I41-LIBRARY_OF_CONGRESS-sh 85081138$$PN</subject>\n <subject>$$DSea biology$$ESea biology$$TLCSH$$I41-LIBRARY_OF_CONGRESS-sh 85081138$$PN</subject>\n <callnumber>$$I01CTW_CC$$DQH91 C76 1988$$E0qh 0009176000. 19880 $$T0</callnumber>\n <institution>01CTW_CC</institution>\n </browse>\n</record>",
"items": [
{
"itemType": "book",
"title": "The sea",
"creators": [
{
"firstName": "John",
"lastName": "Crompton",
"creatorType": "author"
}
],
"date": "1988",
"ISBN": "0941130835",
"callNumber": "QH91 C76 1988",
"language": "eng",
"numPages": "1",
"place": "New York, NY",
"publisher": "Nick Lyons Books",
"attachments": [],
"tags": [
{
"tag": "Marine biology"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<record xmlns=\"http://www.exlibrisgroup.com/xsd/primo/primo_nm_bib\">\n <control>\n <sourceid>springer</sourceid>\n <recordid>cdi_springer_books_10_1007_978_3_030_63396_7_25</recordid>\n <sourceformat>XML</sourceformat>\n <sourcesystem>Other</sourcesystem>\n <sourcerecordid>springer_books_10_1007_978_3_030_63396_7_25</sourcerecordid>\n <originalsourceid>FETCH-LOGICAL-s1418-315a6625e206432bee12b281c3f312135a36281cc7330c5908f38a100fa2a693</originalsourceid>\n <addsrcrecordid>eNpFkM1OwzAQhM2fRCl9Aw5-AcPaGzsJtyripygIJHq3Nq6DAk1c2by_cAuC02hnpNHOx9iVhGsJUN7UZSVQAIIwiLURpVX6iF1gdg5GfcxmsjJaSNTm5D_QcPoXFNU5W6T0AQCqUKgLOWNPb8ENtOXPfjMQX407cl88THzpaOPHwfFXH_sQR5qcv-WtTylMKSvFyW94H8PIGxp9DGG6ZGc9bZNf_Oqcre_v1s2jaF8eVs2yFUkWMq-QmoxR2iswBarOe6k6VUmHPUqV3yc0-9OViOB0DVWPFWUIPSkyNc6Z-qlNuzhM7z7aLoTPZCXYPSmbSVm0eb49gLF7UvgNXsVVHQ</addsrcrecordid>\n <sourcetype>Publisher</sourcetype>\n <isCDI>true</isCDI>\n <recordtype>book_chapter</recordtype>\n </control>\n <display>\n <type>book_chapter</type>\n <title>Social Media Impact on Academic Performance: Lessons Learned from Cameroon</title>\n <source>Springer Books</source>\n <source>Springer Computer Science eBooks 2020 English/International</source>\n <creator>Kuika Watat, Josue ; Jonathan, Gideon Mekonnen ; Ntsafack Dongmo, Frank Wilson ; Zine El Abidine, Nour El Houda</creator>\n <creatorcontrib>Kuika Watat, Josue ; Jonathan, Gideon Mekonnen ; Ntsafack Dongmo, Frank Wilson ; Zine El Abidine, Nour El Houda</creatorcontrib>\n <description>The continuously improving Internet penetration in the continent, coupled with the increasing number of smartphone users in Africa has been considered as the reasons for the adoption of social media among students and other adolescents. Even though this development has been recognizing in the literature, only a few studies have investigated the acceptance, use, and retention of social media for academic purposes. However, findings of prior studies suggest that the use of social media has an influence on academic performance. To address the lack of knowledge on the adoption of social media among students, this study aims to explore the factors that are related to students’ acceptance and use of social media. We attempt to extend the Technology Acceptance Model by integrating relational engagement, Perceived Satisfaction, as well as the Perspective of the Use of Social Media in Education. The proposed theoretical model was evaluated using quantitative data collected from 460 students in Cameroon. We applied PLS-SEM technique to test the hypotheses and the theoretical model. Implications of the findings, as well as future research directions, are presented.</description>\n <identifier>ISSN: 1865-1348</identifier>\n <identifier>ISBN: 3030633950</identifier>\n <identifier>ISBN: 9783030633950</identifier>\n <identifier>EISSN: 1865-1356</identifier>\n <identifier>EISBN: 3030633969</identifier>\n <identifier>EISBN: 9783030633967</identifier>\n <identifier>DOI: 10.1007/978-3-030-63396-7_25</identifier>\n <language>eng</language>\n <publisher>Cham: Springer International Publishing</publisher>\n <subject>Academic performance ; Africa ; Relational commitment ; Social media ; TAM</subject>\n <ispartof>Information Systems, 2020-11-21, p.370-379</ispartof>\n <rights>Springer Nature Switzerland AG 2020</rights>\n <orcidid>0000-0003-4673-3800 ; 0000-0001-6360-7641</orcidid>\n <relation>Lecture Notes in Business Information Processing</relation>\n </display>\n <links>\n <openurl>$$Topenurl_article</openurl>\n <openurlfulltext>$$Topenurlfull_article</openurlfulltext>\n <thumbnail>$$Usyndetics_thumb_exl</thumbnail>\n <linktopdf>$$Uhttps://link.springer.com/content/pdf/10.1007/978-3-030-63396-7_25$$EPDF$$P50$$Gspringer$$H</linktopdf>\n <linktohtml>$$Uhttps://link.springer.com/10.1007/978-3-030-63396-7_25$$EHTML$$P50$$Gspringer$$H</linktohtml>\n </links>\n <search>\n <creatorcontrib>Kuika Watat, Josue</creatorcontrib>\n <creatorcontrib>Jonathan, Gideon Mekonnen</creatorcontrib>\n <creatorcontrib>Ntsafack Dongmo, Frank Wilson</creatorcontrib>\n <creatorcontrib>Zine El Abidine, Nour El Houda</creatorcontrib>\n <title>Social Media Impact on Academic Performance: Lessons Learned from Cameroon</title>\n <title>Information Systems</title>\n <description>The continuously improving Internet penetration in the continent, coupled with the increasing number of smartphone users in Africa has been considered as the reasons for the adoption of social media among students and other adolescents. Even though this development has been recognizing in the literature, only a few studies have investigated the acceptance, use, and retention of social media for academic purposes. However, findings of prior studies suggest that the use of social media has an influence on academic performance. To address the lack of knowledge on the adoption of social media among students, this study aims to explore the factors that are related to students’ acceptance and use of social media. We attempt to extend the Technology Acceptance Model by integrating relational engagement, Perceived Satisfaction, as well as the Perspective of the Use of Social Media in Education. The proposed theoretical model was evaluated using quantitative data collected from 460 students in Cameroon. We applied PLS-SEM technique to test the hypotheses and the theoretical model. Implications of the findings, as well as future research directions, are presented.</description>\n <subject>Academic performance</subject>\n <subject>Africa</subject>\n <subject>Relational commitment</subject>\n <subject>Social media</subject>\n <subject>TAM</subject>\n <issn>1865-1348</issn>\n <issn>1865-1356</issn>\n <isbn>3030633950</isbn>\n <isbn>9783030633950</isbn>\n <isbn>3030633969</isbn>\n <isbn>9783030633967</isbn>\n <fulltext>true</fulltext>\n <rsrctype>book_chapter</rsrctype>\n <creationdate>2020</creationdate>\n <recordtype>book_chapter</recordtype>\n <sourceid/>\n <recordid>eNpFkM1OwzAQhM2fRCl9Aw5-AcPaGzsJtyripygIJHq3Nq6DAk1c2by_cAuC02hnpNHOx9iVhGsJUN7UZSVQAIIwiLURpVX6iF1gdg5GfcxmsjJaSNTm5D_QcPoXFNU5W6T0AQCqUKgLOWNPb8ENtOXPfjMQX407cl88THzpaOPHwfFXH_sQR5qcv-WtTylMKSvFyW94H8PIGxp9DGG6ZGc9bZNf_Oqcre_v1s2jaF8eVs2yFUkWMq-QmoxR2iswBarOe6k6VUmHPUqV3yc0-9OViOB0DVWPFWUIPSkyNc6Z-qlNuzhM7z7aLoTPZCXYPSmbSVm0eb49gLF7UvgNXsVVHQ</recordid>\n <startdate>20201121</startdate>\n <enddate>20201121</enddate>\n <creator>Kuika Watat, Josue</creator>\n <creator>Jonathan, Gideon Mekonnen</creator>\n <creator>Ntsafack Dongmo, Frank Wilson</creator>\n <creator>Zine El Abidine, Nour El Houda</creator>\n <general>Springer International Publishing</general>\n <scope/>\n <orcidid>https://orcid.org/0000-0003-4673-3800</orcidid>\n <orcidid>https://orcid.org/0000-0001-6360-7641</orcidid>\n </search>\n <sort>\n <creationdate>20201121</creationdate>\n <title>Social Media Impact on Academic Performance: Lessons Learned from Cameroon</title>\n <author>Kuika Watat, Josue ; Jonathan, Gideon Mekonnen ; Ntsafack Dongmo, Frank Wilson ; Zine El Abidine, Nour El Houda</author>\n </sort>\n <facets>\n <frbrtype>5</frbrtype>\n <frbrgroupid>cdi_FETCH-LOGICAL-s1418-315a6625e206432bee12b281c3f312135a36281cc7330c5908f38a100fa2a693</frbrgroupid>\n <rsrctype>book_chapters</rsrctype>\n <prefilter>book_chapters</prefilter>\n <language>eng</language>\n <creationdate>2020</creationdate>\n <topic>Academic performance</topic>\n <topic>Africa</topic>\n <topic>Relational commitment</topic>\n <topic>Social media</topic>\n <topic>TAM</topic>\n <toplevel>online_resources</toplevel>\n <creatorcontrib>Kuika Watat, Josue</creatorcontrib>\n <creatorcontrib>Jonathan, Gideon Mekonnen</creatorcontrib>\n <creatorcontrib>Ntsafack Dongmo, Frank Wilson</creatorcontrib>\n <creatorcontrib>Zine El Abidine, Nour El Houda</creatorcontrib>\n <jtitle>Information Systems</jtitle>\n </facets>\n <delivery>\n <delcategory>Remote Search Resource</delcategory>\n <fulltext>fulltext</fulltext>\n </delivery>\n <addata>\n <au>Kuika Watat, Josue</au>\n <au>Jonathan, Gideon Mekonnen</au>\n <au>Ntsafack Dongmo, Frank Wilson</au>\n <au>Zine El Abidine, Nour El Houda</au>\n <format>book</format>\n <genre>bookitem</genre>\n <ristype>GEN</ristype>\n <atitle>Social Media Impact on Academic Performance: Lessons Learned from Cameroon</atitle>\n <btitle>Information Systems</btitle>\n <seriestitle>Lecture Notes in Business Information Processing</seriestitle>\n <date>2020-11-21</date>\n <risdate>2020</risdate>\n <spage>370</spage>\n <epage>379</epage>\n <pages>370-379</pages>\n <issn>1865-1348</issn>\n <eissn>1865-1356</eissn>\n <isbn>3030633950</isbn>\n <isbn>9783030633950</isbn>\n <eisbn>3030633969</eisbn>\n <eisbn>9783030633967</eisbn>\n <abstract>The continuously improving Internet penetration in the continent, coupled with the increasing number of smartphone users in Africa has been considered as the reasons for the adoption of social media among students and other adolescents. Even though this development has been recognizing in the literature, only a few studies have investigated the acceptance, use, and retention of social media for academic purposes. However, findings of prior studies suggest that the use of social media has an influence on academic performance. To address the lack of knowledge on the adoption of social media among students, this study aims to explore the factors that are related to students’ acceptance and use of social media. We attempt to extend the Technology Acceptance Model by integrating relational engagement, Perceived Satisfaction, as well as the Perspective of the Use of Social Media in Education. The proposed theoretical model was evaluated using quantitative data collected from 460 students in Cameroon. We applied PLS-SEM technique to test the hypotheses and the theoretical model. Implications of the findings, as well as future research directions, are presented.</abstract>\n <cop>Cham</cop>\n <pub>Springer International Publishing</pub>\n <doi>10.1007/978-3-030-63396-7_25</doi>\n <orcidid>https://orcid.org/0000-0003-4673-3800</orcidid>\n <orcidid>https://orcid.org/0000-0001-6360-7641</orcidid>\n </addata>\n</record>",
"items": [
{
"itemType": "bookSection",
"title": "Social Media Impact on Academic Performance: Lessons Learned from Cameroon",
"creators": [
{
"firstName": "Josue",
"lastName": "Kuika Watat",
"creatorType": "author"
},
{
"firstName": "Gideon Mekonnen",
"lastName": "Jonathan",
"creatorType": "author"
},
{
"firstName": "Frank Wilson",
"lastName": "Ntsafack Dongmo",
"creatorType": "author"
},
{
"firstName": "Nour El Houda",
"lastName": "Zine El Abidine",
"creatorType": "author"
}
],
"date": "2020",
"ISBN": "3030633950",
"abstractNote": "The continuously improving Internet penetration in the continent, coupled with the increasing number of smartphone users in Africa has been considered as the reasons for the adoption of social media among students and other adolescents. Even though this development has been recognizing in the literature, only a few studies have investigated the acceptance, use, and retention of social media for academic purposes. However, findings of prior studies suggest that the use of social media has an influence on academic performance. To address the lack of knowledge on the adoption of social media among students, this study aims to explore the factors that are related to students’ acceptance and use of social media. We attempt to extend the Technology Acceptance Model by integrating relational engagement, Perceived Satisfaction, as well as the Perspective of the Use of Social Media in Education. The proposed theoretical model was evaluated using quantitative data collected from 460 students in Cameroon. We applied PLS-SEM technique to test the hypotheses and the theoretical model. Implications of the findings, as well as future research directions, are presented.",
"bookTitle": "Information Systems",
"language": "eng",
"pages": "370–379",
"place": "Cham",
"publisher": "Springer International Publishing",
"series": "Lecture Notes in Business Information Processing",
"attachments": [],
"tags": [
{
"tag": "Academic performance"
},
{
"tag": "Africa"
},
{
"tag": "Relational commitment"
},
{
"tag": "Social media"
},
{
"tag": "TAM"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><record xmlns=\"http://www.exlibrisgroup.com/xsd/primo/primo_nm_bib\" xmlns:sear=\"http://www.exlibrisgroup.com/xsd/jaguar/search\"><delivery><availabilityLinks>detailsgetit1</availabilityLinks><displayLocation>true</displayLocation><recordOwner>49KOBV_FUB</recordOwner><physicalServiceId>null</physicalServiceId><sharedDigitalCandidates>null</sharedDigitalCandidates><link><displayLabel>thumbnail</displayLabel><linkURL>https://proxy-eu.hosted.exlibrisgroup.com/exl_rewrite/books.google.com/books?bibkeys=ISBN:9781784744069,OCLC:,LCCN:&jscmd=viewapi&callback=updateGBSCover</linkURL><linkType>thumbnail</linkType><id>:_0</id></link><availability>unavailable</availability><additionalLocations>false</additionalLocations><digitalAuxiliaryMode>false</digitalAuxiliaryMode><holding><matchForHoldings><holdingRecord>852##b</holdingRecord><matchOn>MainLocation</matchOn></matchForHoldings><subLocationCode>EB/1</subLocationCode><volumeFilter>null</volumeFilter><ilsApiId>9959861162102883</ilsApiId><callNumberType>8</callNumberType><libraryCode>920</libraryCode><yearFilter>null</yearFilter><boundWith>false</boundWith><stackMapUrl>http://infosystem.philbib.de?sig={call_number}</stackMapUrl><isValidUser>true</isValidUser><mainLocation>Philologische Bibliothek</mainLocation><callNumber/><adaptorid>ALMA_01</adaptorid><organization>49KOBV_FUB</organization><holdingURL>OVP</holdingURL><availabilityStatus>unavailable</availabilityStatus><id>_:0</id><subLocation>Ebene 1</subLocation><holdId>221106260200002883</holdId><holKey>HoldingResultKey [mid=221106260200002883, libraryId=398792270002883, locationCode=EB/1, callNumber=null]</holKey><singleUnavailableItemProcessType>null</singleUnavailableItemProcessType><relatedTitle>null</relatedTitle></holding><bestlocation><matchForHoldings><holdingRecord>852##b</holdingRecord><matchOn>MainLocation</matchOn></matchForHoldings><subLocationCode>EB/1</subLocationCode><volumeFilter>null</volumeFilter><ilsApiId>9959861162102883</ilsApiId><callNumberType>8</callNumberType><libraryCode>920</libraryCode><yearFilter>null</yearFilter><boundWith>false</boundWith><stackMapUrl>http://infosystem.philbib.de?sig={call_number}</stackMapUrl><isValidUser>true</isValidUser><mainLocation>Philologische Bibliothek</mainLocation><callNumber/><adaptorid>ALMA_01</adaptorid><organization>49KOBV_FUB</organization><holdingURL>OVP</holdingURL><availabilityStatus>unavailable</availabilityStatus><id>_:0</id><subLocation>Ebene 1</subLocation><holdId>221106260200002883</holdId><holKey>HoldingResultKey [mid=221106260200002883, libraryId=398792270002883, locationCode=EB/1, callNumber=null]</holKey><singleUnavailableItemProcessType>null</singleUnavailableItemProcessType><relatedTitle>null</relatedTitle></bestlocation><electronicServices>null</electronicServices><feDisplayOtherLocations>false</feDisplayOtherLocations><hasD>null</hasD><hideResourceSharing>false</hideResourceSharing><hasFilteredServices>null</hasFilteredServices><physicalItemTextCodes>null</physicalItemTextCodes><quickAccessService>null</quickAccessService><recordInstitutionCode>null</recordInstitutionCode><displayedAvailability>null</displayedAvailability><deliveryCategory>Alma-P</deliveryCategory><serviceMode>ovp</serviceMode><filteredByGroupServices>null</filteredByGroupServices><GetIt1><links><isLinktoOnline>false</isLinktoOnline><displayText>null</displayText><inst4opac>49KOBV_FUB</inst4opac><getItTabText>service_getit</getItTabText><adaptorid>ALMA_01</adaptorid><ilsApiId>9959861162102883</ilsApiId><link>OVP</link><id>_:0</id></links><category>Alma-P</category></GetIt1></delivery><search><creationdate>2021</creationdate><creator>Galgut, Damon 1963-</creator><sort_journal_title><<The>> promise /</sort_journal_title><sort_title><<The>> promise / Damon Galgut.</sort_title><sort_creationdate_full>2021</sort_creationdate_full><subject>Fiktionale Darstellung</subject><subject>South Africa / Fiction</subject><isbn>9781473584464</isbn><isbn>1473584469</isbn><isbn>1784744077</isbn><isbn>9781784744076</isbn><isbn>1784744069</isbn><isbn>9781784744069</isbn><local_fields>969 BV047362611</local_fields><local_fields>942 05</local_fields><local_fields>940 RDA-Aufnahme</local_fields><description>"The Promise charts the crash and burn of a white South African family, living on a farm outside Pretoria. The Swarts are gathering for Ma's funeral. The younger generation, Anton and Amor, detest everything the family stand for - not least the failed promise to the Black woman who has worked for them her whole life. After years of service, Salome was promised her own house, her own land ... yet somehow, as each decade passes, that promise remains unfulfilled." Klappentext</description><language>eng</language><title><<The>> promise /</title><startdate>2021</startdate><general>Chatto & Windus,</general><rtype>books</rtype><contributor>Damon Galgut.</contributor><genre>Fiktionale Darstellung</genre><journal_title><<The>> promise /</journal_title><facet_creatorcontrib>Galgut, Damon</facet_creatorcontrib><sort_author>Galgut, Damon 1963-</sort_author><sort_creationdate>2021</sort_creationdate></search><display><identifier>$$C<b>ISBN</b>$$V978-1-784-74406-9;$$C<b>ISBN</b>$$V978-1-784-74407-6</identifier><lds05><b>DDC: </b><a href="search?query=lds05,exact,823.92%2CAND&tab=FUB&search_scope=FUB&vid=49KOBV_FUB%3AFUB&mode=advanced" class="arrow-link ddc_arrow-link">823.92</a></lds05><lds05><b>RVK: </b><a href="search?query=lds05,exact,HP 9999%2CAND&tab=FUB&search_scope=FUB&vid=49KOBV_FUB%3AFUB&mode=advanced" class="arrow-link rvk_arrow-link">HP 9999</a></lds05><creationdate>2021.</creationdate><creator>Galgut, Damon [Verf.]$$QGalgut, Damon</creator><subject>South Africa / Fiction</subject><format>293 Seiten.</format><description>"The Promise charts the crash and burn of a white South African family, living on a farm outside Pretoria. The Swarts are gathering for Ma's funeral. The younger generation, Anton and Amor, detest everything the family stand for - not least the failed promise to the Black woman who has worked for them her whole life. After years of service, Salome was promised her own house, her own land ... yet somehow, as each decade passes, that promise remains unfulfilled." Klappentext</description><description>Cover: "Shortlisted The 2021 Booker Prize"</description><language>eng</language><source>Alma</source><type>Buch</type><title>The promise / Damon Galgut.</title><version>0</version><mms>9959861162102883</mms><publisher>London : Chatto & Windus</publisher><place>London :</place><lds01>BV047362611</lds01><lds12><b>DDC: </b><a href="search?query=lds05,exact,823.92%2CAND&tab=CHA&search_scope=CHA&vid=49KOBV_FUB%3ACHA&mode=advanced" class="arrow-link">823.92</a></lds12><lds12><b>RVK: </b><a href="search?query=lds05,exact,HP 9999%2CAND&tab=CHA&search_scope=CHA&vid=49KOBV_FUB%3ACHA&mode=advanced" class="arrow-link">HP 9999</a></lds12><lds04>Fiktionale Darstellung</lds04></display><control><recordid>alma9959861162102883</recordid><sourceid>alma</sourceid><score>3.0</score><originalsourceid>BV047362611</originalsourceid><sourceformat>MARC21</sourceformat><sourcerecordid>9959861162102883</sourcerecordid><sourcesystem>BVB</sourcesystem><isDedup>false</isDedup></control><addata><date>2021</date><date>2021.</date><aulast>Galgut</aulast><cop>London</cop><isbn>978-1-784-74406-9</isbn><isbn>978-1-784-74407-6</isbn><isbn>9781473584464</isbn><format>book</format><ristype>BOOK</ristype><oclcid>bv47362611</oclcid><oclcid>(xx-xxund)kxp1762351226</oclcid><oclcid>(de-604)bv047362611</oclcid><abstract>"The Promise charts the crash and burn of a white South African family, living on a farm outside Pretoria. The Swarts are gathering for Ma's funeral. The younger generation, Anton and Amor, detest everything the family stand for - not least the failed promise to the Black woman who has worked for them her whole life. After years of service, Salome was promised her own house, her own land ... yet somehow, as each decade passes, that promise remains unfulfilled." Klappentext</abstract><auinit>D</auinit><aufirst>Damon</aufirst><au>Galgut, Damon</au><genre>book</genre><btitle>The promise</btitle><pub>Chatto & Windus</pub></addata><sort><creationdate>2021</creationdate><author>Galgut, Damon 1963-</author><title><<The>> promise / Damon Galgut.</title></sort></record>",
"items": [
{
"itemType": "book",
"title": "The promise / Damon Galgut.",
"creators": [
{
"firstName": "Damon",
"lastName": "Galgut",
"creatorType": "author"
}
],
"date": "2021",
"ISBN": "9781784744069",
"abstractNote": "\"The Promise charts the crash and burn of a white South African family, living on a farm outside Pretoria. The Swarts are gathering for Ma's funeral. The younger generation, Anton and Amor, detest everything the family stand for - not least the failed promise to the Black woman who has worked for them her whole life. After years of service, Salome was promised her own house, her own land ... yet somehow, as each decade passes, that promise remains unfulfilled.\" Klappentext, Cover: \"Shortlisted The 2021 Booker Prize\"",
"language": "eng",
"place": "London",
"publisher": "Chatto & Windus",
"attachments": [],
"tags": [
{
"tag": "Fiction"
},
{
"tag": "South Africa"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<record xmlns=\"http://www.exlibrisgroup.com/xsd/primo/primo_nm_bib\" xmlns:sear=\"http://www.exlibrisgroup.com/xsd/jaguar/search\">\n <control>\n <sourcerecordid>005204170</sourcerecordid>\n <sourceid>07NLR_LMS</sourceid>\n <recordid>07NLR_LMS005204170</recordid>\n <originalsourceid>NLR01</originalsourceid>\n <ilsapiid>NLR01005204170</ilsapiid>\n <sourceformat>UNIMARC</sourceformat>\n <sourcesystem>Aleph</sourcesystem>\n </control>\n <display>\n <type>book</type>\n <title>Плавающий город : С рис.</title>\n <creator>Верн, Жюль (1828-1905) NLR10::RU\\NLR\\AUTH\\773453</creator>\n <publisher>Санкт-Петербург : С.В. Звонарев, 1872</publisher>\n <creationdate>1872</creationdate>\n <format>[2], 212, [2], 42 с., [14] л. ил. : ил. ; 22 см.</format>\n <language>rus</language>\n <source>07NLR_LMS</source>\n <availlibrary>$$I07NLR$$L07NLR_RFS$$2(18.104.6.29 )$$Savailable$$31$$40$$5N$$60$$XNLR50$$YRFS</availlibrary>\n <unititle>Восхождение на Монблан</unititle>\n <lds02>18.104.6.29</lds02>\n <lds05>Санкт-Петербург</lds05>\n <lds06>[2], 212, [2], 42 с., [14] л. ил.</lds06>\n <lds07>Верн Ж. Плавающий город : С рис / [Соч.] Жюля Верна ; Пер. под ред. Марка Вовчка [псевд.] С прил. Восхождение на Монблан Поля Верна Пер. Марка Вовчка [псевд.]. - Санкт-Петербург : С.В. Звонарев, 1872. - [2], 212, [2], 42 с., [14] л. ил. : ил. ; 22 см.</lds07>\n <lds08>[Соч.] Жюля Верна ; Пер. под ред. Марка Вовчка [псевд.] С прил. Восхождение на Монблан Поля Верна Пер. Марка Вовчка [псевд.]</lds08>\n <lds15>NLR01 005204170</lds15>\n <lds30>Вовчок, Марко (1834-1907) -- Редактор NLR10::RU\\NLR\\AUTH\\7716710</lds30>\n <availinstitution>$$I07NLR$$Savailable</availinstitution>\n <availpnx>available</availpnx>\n </display>\n <links>\n <openurl>$$Topenurl_journal</openurl>\n <backlink>$$Taleph_backlink$$DOPAC</backlink>\n <linktoholdings>$$Taleph_holdings</linktoholdings>\n <lln03>$$Tcatalogue_error$$Ecatalogueerror</lln03>\n <lln05>$$Trecord_view_format$$Erecordviewformat</lln05>\n <lln06>$$Tdownload_iso2709$$Edownloadiso2709</lln06>\n <lln04>$$Tscan_request$$Escanrequest</lln04>\n </links>\n <search>\n <creatorcontrib>Верн, Жюль (1828-1905) NLR10::RU\\NLR\\AUTH\\773453</creatorcontrib>\n <creatorcontrib>Верн Ж. Г. 1828-1905 Жюль Габриэль</creatorcontrib>\n <creatorcontrib>Вовчок М. 1834-1907 Марк</creatorcontrib>\n <creatorcontrib>Вовчек М. 1834-1907 Марко</creatorcontrib>\n <creatorcontrib>Маркович М. А. 1834-1907 Мария Александровна</creatorcontrib>\n <creatorcontrib>Вилинская М. А. 1834-1907 Мария Александровна</creatorcontrib>\n <creatorcontrib>Марко Вовчок 1834-1907</creatorcontrib>\n <creatorcontrib>Вилинская-Маркович М. А. 1834-1907 Мария Александровна</creatorcontrib>\n <creatorcontrib>Верн Ж. 1828-1905 Жюль</creatorcontrib>\n <title>Плавающий город С рис.</title>\n <general>rus</general>\n <general>С.В. Звонарев</general>\n <sourceid>07NLR_LMS</sourceid>\n <recordid>07NLR_LMS005204170</recordid>\n <rsrctype>book</rsrctype>\n <creationdate>1872</creationdate>\n <startdate>18720101</startdate>\n <enddate>18721231</enddate>\n <addtitle>Плавающий город С рис.</addtitle>\n <addtitle>Восхождение на Монблан</addtitle>\n <searchscope>07NLR_LMS</searchscope>\n <searchscope>MAIN_07NLR</searchscope>\n <searchscope>07NLR</searchscope>\n <scope>07NLR_LMS</scope>\n <scope>MAIN_07NLR</scope>\n <scope>07NLR</scope>\n <lsr01>Санкт-Петербург</lsr01>\n <lsr02>С.В. Звонарев</lsr02>\n <lsr06>18.104.6.29</lsr06>\n <lsr07>1872</lsr07>\n <lsr13>[Соч.] Жюля Верна; Пер. под ред. Марка Вовчка [псевд.] С прил. Восхождение на Монблан Поля Верна Пер. Марка Вовчка [псевд.]</lsr13>\n <lsr19>Вовчок М. 1834-1907 Марко</lsr19>\n <lsr19>Верн П. Поль</lsr19>\n <lsr20>rus</lsr20>\n <lsr20>русский</lsr20>\n <lsr23>Верн, Жюль (1828-1905) NLR10::RU\\NLR\\AUTH\\773453</lsr23>\n <lsr23>Верн Ж. Г. 1828-1905 Жюль Габриэль</lsr23>\n <lsr23>Вовчок М. 1834-1907 Марк</lsr23>\n <lsr23>Вовчек М. 1834-1907 Марко</lsr23>\n <lsr23>Маркович М. А. 1834-1907 Мария Александровна</lsr23>\n <lsr23>Вилинская М. А. 1834-1907 Мария Александровна</lsr23>\n <lsr23>Марко Вовчок 1834-1907</lsr23>\n <lsr23>Вилинская-Маркович М. А. 1834-1907 Мария Александровна</lsr23>\n <lsr23>Верн Ж. 1828-1905 Жюль</lsr23>\n <lsr23>Вовчок М. 1834-1907 Марко</lsr23>\n <lsr23>Верн П. Поль</lsr23>\n <lsr24>Верн, Жюль (1828-1905) NLR10::RU\\NLR\\AUTH\\773453</lsr24>\n <lsr24>Верн Ж. Г. 1828-1905 Жюль Габриэль</lsr24>\n <lsr24>Вовчок М. 1834-1907 Марк</lsr24>\n <lsr24>Вовчек М. 1834-1907 Марко</lsr24>\n <lsr24>Маркович М. А. 1834-1907 Мария Александровна</lsr24>\n <lsr24>Вилинская М. А. 1834-1907 Мария Александровна</lsr24>\n <lsr24>Марко Вовчок 1834-1907</lsr24>\n <lsr24>Вилинская-Маркович М. А. 1834-1907 Мария Александровна</lsr24>\n <lsr24>Верн Ж. 1828-1905 Жюль</lsr24>\n <lsr24>Вовчок М. 1834-1907 Марко</lsr24>\n <lsr24>Верн П. Поль</lsr24>\n <lsr24>Плавающий город С рис.</lsr24>\n <lsr24>Восхождение на Монблан</lsr24>\n <lsr24>book</lsr24>\n <lsr24>1872</lsr24>\n <lsr24>07NLR_LMS005204170</lsr24>\n <lsr24>Санкт-Петербург</lsr24>\n <lsr24>С.В. Звонарев</lsr24>\n <lsr24>18.104.6.29</lsr24>\n <lsr24>[Соч.] Жюля Верна; Пер. под ред. Марка Вовчка [псевд.] С прил. Восхождение на Монблан Поля Верна Пер. Марка Вовчка [псевд.]</lsr24>\n <lsr24>07NLR_LMS</lsr24>\n <lsr24>MAIN_07NLR</lsr24>\n <lsr24>07NLR</lsr24>\n <lsr24>rus</lsr24>\n <lsr24>русский</lsr24>\n <lsr24>французский</lsr24>\n <lsr24>Вовчок, Марко (1834-1907) -- Редактор NLR10::RU\\NLR\\AUTH\\7716710</lsr24>\n <lsr26>французский</lsr26>\n <lsr30>Вовчок, Марко (1834-1907) -- Редактор NLR10::RU\\NLR\\AUTH\\7716710</lsr30>\n <lsr30>Вовчок М. 1834-1907 Марко</lsr30>\n <lsr30>Верн П. Поль</lsr30>\n </search>\n <sort>\n <title>Плавающий город : С рис.</title>\n <creationdate>1872</creationdate>\n <author>Верн Ж. 1828-1905 Жюль</author>\n <lso02>aafcaebha</lso02>\n <lso04>18720000</lso04>\n <lso06>18720000</lso06>\n </sort>\n <facets>\n <language>rus</language>\n <creationdate>1872</creationdate>\n <collection>07NLR_RFS</collection>\n <toplevel>available</toplevel>\n <toplevel>physical_item</toplevel>\n <prefilter>books</prefilter>\n <rsrctype>books</rsrctype>\n <creatorcontrib>Верн, Ж (1828-1905)</creatorcontrib>\n <lfc03>С.В. Звонарев</lfc03>\n <newrecords>20150408_190</newrecords>\n <frbrgroupid>7542839</frbrgroupid>\n <frbrtype>6</frbrtype>\n </facets>\n <frbr>\n <t>99</t>\n <k1>$$Kверн ж 1828 1905$$AA</k1>\n <k3>$$Kплавающий город с рис$$AT</k3>\n </frbr>\n <delivery>\n <institution>07NLR</institution>\n <delcategory>Physical Item</delcategory>\n </delivery>\n <ranking>\n <booster1>1</booster1>\n <booster2>1</booster2>\n </ranking>\n <addata>\n <aulast>Верн</aulast>\n <aulast>Вовчок</aulast>\n <aufirst>Ж.</aufirst>\n <au>Верн Ж. 1828-1905</au>\n <addau>Вовчок М. 1834-1907</addau>\n <addau>Верн П</addau>\n <btitle>Плавающий город С рис.</btitle>\n <addtitle>Восхождение на Монблан</addtitle>\n <date>1872</date>\n <risdate>1872</risdate>\n <format>book</format>\n <genre>book</genre>\n <ristype>BOOK</ristype>\n <cop>Санкт-Петербург</cop>\n <pub>С.В. Звонарев</pub>\n </addata>\n <browse>\n <author>$$DВерн, Ж. (Жюль ) (1828-1905 )$$EВерн Ж. 1828-1905 Жюль</author>\n <author>$$DВовчок, М. (Марко ) (1834-1907 )$$EВовчок М. 1834-1907 Марко</author>\n <author>$$DВерн, П. (Поль )$$EВерн П. Поль</author>\n <title>$$DПлавающий город : С рис.$$EПлавающий город С рис.</title>\n <title>$$DВосхождение на Монблан$$EВосхождение на Монблан</title>\n <callnumber>$$I07NLR$$D18.104.6.29$$E18.104.6.29</callnumber>\n <institution>07NLR</institution>\n </browse>\n</record>",
"items": [
{
"itemType": "book",
"title": "Плавающий город: С рис.",
"creators": [
{
"firstName": "Жюль",
"lastName": "Верн",
"creatorType": "author"
}
],
"date": "1872",
"callNumber": "18.104.6.29",
"language": "rus",
"place": "Санкт-Петербург",
"publisher": "С.В. Звонарев",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><record xmlns=\"http://www.exlibrisgroup.com/xsd/primo/primo_nm_bib\" xmlns:sear=\"http://www.exlibrisgroup.com/xsd/jaguar/search\"><delivery><availabilityLinks>detailsgetit1</availabilityLinks><displayLocation>true</displayLocation><recordOwner>01ALLIANCE_NETWORK</recordOwner><physicalServiceId>null</physicalServiceId><sharedDigitalCandidates>null</sharedDigitalCandidates><link><displayLabel>thumbnail</displayLabel><linkURL>https://proxy-na.hosted.exlibrisgroup.com/exl_rewrite/books.google.com/books?bibkeys=ISBN:,OCLC:,LCCN:71093813&jscmd=viewapi&callback=updateGBSCover</linkURL><linkType>thumbnail</linkType><id>:_0</id></link><availability>available_in_library</availability><additionalLocations>false</additionalLocations><digitalAuxiliaryMode>false</digitalAuxiliaryMode><holding><matchForHoldings><holdingRecord>852##b</holdingRecord><matchOn>MainLocation</matchOn></matchForHoldings><subLocationCode>pgst1</subLocationCode><volumeFilter>null</volumeFilter><ilsApiId>9933348101867</ilsApiId><callNumberType>0</callNumberType><libraryCode>WHITMAN</libraryCode><yearFilter>null</yearFilter><boundWith>false</boundWith><stackMapUrl> https://penroselib-php.herokuapp.com/apps/map/locate.php?loc=pgst1&callno=TD174+.D95&title=Pollution+%2F+Leonard+B.+Dworsky+%3B+with+an+introduction+by+Stewart+L.+Udall.</stackMapUrl><isValidUser>true</isValidUser><translateRelatedTitle>null</translateRelatedTitle><mainLocation>Whitman College Library</mainLocation><callNumber>TD174 .D95</callNumber><adaptorid>ALMA_01</adaptorid><organization>01ALLIANCE_WHITC</organization><holdingURL>OVP</holdingURL><availabilityStatus>available</availabilityStatus><id>_:0</id><subLocation>1st Floor Books</subLocation><holdId>2288279530001867</holdId><holKey>HoldingResultKey [mid=2288279530001867, libraryId=170730510001867, locationCode=pgst1, callNumber=TD174 .D95]</holKey><singleUnavailableItemProcessType>null</singleUnavailableItemProcessType><relatedTitle>null</relatedTitle></holding><bestlocation><matchForHoldings><holdingRecord>852##b</holdingRecord><matchOn>MainLocation</matchOn></matchForHoldings><subLocationCode>pgst1</subLocationCode><volumeFilter>null</volumeFilter><ilsApiId>9933348101867</ilsApiId><callNumberType>0</callNumberType><libraryCode>WHITMAN</libraryCode><yearFilter>null</yearFilter><boundWith>false</boundWith><stackMapUrl> https://penroselib-php.herokuapp.com/apps/map/locate.php?loc=pgst1&callno=TD174+.D95&title=Pollution+%2F+Leonard+B.+Dworsky+%3B+with+an+introduction+by+Stewart+L.+Udall.</stackMapUrl><isValidUser>true</isValidUser><translateRelatedTitle>null</translateRelatedTitle><mainLocation>Whitman College Library</mainLocation><callNumber>TD174 .D95</callNumber><adaptorid>ALMA_01</adaptorid><organization>01ALLIANCE_WHITC</organization><holdingURL>OVP</holdingURL><availabilityStatus>available</availabilityStatus><id>_:0</id><subLocation>1st Floor Books</subLocation><holdId>2288279530001867</holdId><holKey>HoldingResultKey [mid=2288279530001867, libraryId=170730510001867, locationCode=pgst1, callNumber=TD174 .D95]</holKey><singleUnavailableItemProcessType>null</singleUnavailableItemProcessType><relatedTitle>null</relatedTitle></bestlocation><electronicServices>null</electronicServices><feDisplayOtherLocations>false</feDisplayOtherLocations><hasD>null</hasD><hideResourceSharing>false</hideResourceSharing><hasFilteredServices>null</hasFilteredServices><physicalItemTextCodes>null</physicalItemTextCodes><almaInstitutionsList><instId>1857</instId><instCode>01ALLIANCE_UPORT</instCode><availabilityStatus>available_in_institution</availabilityStatus><instName>University of Portland</instName><envURL/><getitLink><displayText>Alma-P</displayText><linkRecordId>99177171740001451</linkRecordId></getitLink></almaInstitutionsList><almaInstitutionsList><instId>1856</instId><instCode>01ALLIANCE_WOU</instCode><availabilityStatus>available_in_institution</availabilityStatus><instName>Western Oregon University</instName><envURL/><getitLink><displayText>Alma-P</displayText><linkRecordId>99177171740001451</linkRecordId></getitLink></almaInstitutionsList><almaInstitutionsList><instId>1844</instId><instCode>01ALLIANCE_LCC</instCode><availabilityStatus>available_in_institution</availabilityStatus><instName>Lewis & Clark</instName><envURL/><getitLink><displayText>Alma-P</displayText><linkRecordId>99177171740001451</linkRecordId></getitLink></almaInstitutionsList><almaInstitutionsList><instId>1855</instId><instCode>01ALLIANCE_SOU</instCode><availabilityStatus>available_in_institution</availabilityStatus><instName>Southern Oregon University</instName><envURL/><getitLink><displayText>Alma-P</displayText><linkRecordId>99177171740001451</linkRecordId></getitLink></almaInstitutionsList><almaInstitutionsList><instId>1865</instId><instCode>01ALLIANCE_OSU</instCode><availabilityStatus>available_in_institution</availabilityStatus><instName>Oregon State University Libraries and Press</instName><envURL/><getitLink><displayText>Alma-P</displayText><linkRecordId>99177171740001451</linkRecordId></getitLink></almaInstitutionsList><almaInstitutionsList><instId>1453</instId><instCode>01ALLIANCE_WWU</instCode><availabilityStatus>available_in_institution</availabilityStatus><instName>Western Washington University</instName><envURL/><getitLink><displayText>Alma-P</displayText><linkRecordId>99177171740001451</linkRecordId></getitLink></almaInstitutionsList><almaInstitutionsList><instId>1871</instId><instCode>01ALLIANCE_CHEMEK</instCode><availabilityStatus>available_in_institution</availabilityStatus><instName>Chemeketa Community College</instName><envURL/><getitLink><displayText>Alma-P</displayText><linkRecordId>99177171740001451</linkRecordId></getitLink></almaInstitutionsList><almaInstitutionsList><instId>1842</instId><instCode>01ALLIANCE_WSU</instCode><availabilityStatus>available_in_institution</availabilityStatus><instName>Washington State University</instName><envURL/><getitLink><displayText>Alma-P</displayText><linkRecordId>99177171740001451</linkRecordId></getitLink></almaInstitutionsList><almaInstitutionsList><instId>1875</instId><instCode>01ALLIANCE_WW</instCode><availabilityStatus>available_in_institution</availabilityStatus><instName>Whitworth University</instName><envURL/><getitLink><displayText>Alma-P</displayText><linkRecordId>99177171740001451</linkRecordId></getitLink></almaInstitutionsList><almaInstitutionsList><instId>1852</instId><instCode>01ALLIANCE_UO</instCode><availabilityStatus>available_in_institution</availabilityStatus><instName>University of Oregon</instName><envURL/><getitLink><displayText>Alma-P</displayText><linkRecordId>99177171740001451</linkRecordId></getitLink></almaInstitutionsList><almaInstitutionsList><instId>1851</instId><instCode>01ALLIANCE_UID</instCode><availabilityStatus>available_in_institution</availabilityStatus><instName>University of Idaho</instName><envURL/><getitLink><displayText>Alma-P</displayText><linkRecordId>99177171740001451</linkRecordId></getitLink></almaInstitutionsList><almaInstitutionsList><instId>1454</instId><instCode>01ALLIANCE_WU</instCode><availabilityStatus>available_in_institution</availabilityStatus><instName>Willamette University</instName><envURL/><getitLink><displayText>Alma-P</displayText><linkRecordId>99177171740001451</linkRecordId></getitLink></almaInstitutionsList><quickAccessService>null</quickAccessService><recordInstitutionCode>null</recordInstitutionCode><displayedAvailability>null</displayedAvailability><consolidatedCoverage>null</consolidatedCoverage><additionalElectronicServices>null</additionalElectronicServices><deliveryCategory>Alma-P</deliveryCategory><serviceMode>ovp</serviceMode><filteredByGroupServices>null</filteredByGroupServices><electronicContextObjectId>null</electronicContextObjectId><GetIt1><links><isLinktoOnline>false</isLinktoOnline><displayText>null</displayText><inst4opac>01ALLIANCE_WHITC</inst4opac><getItTabText>service_getit</getItTabText><adaptorid>ALMA_01</adaptorid><ilsApiId>9933348101867</ilsApiId><link>OVP</link><id>_:0</id></links><category>Alma-P</category></GetIt1></delivery><search><creationdate>1971</creationdate><creator>Dworsky, Leonard B., compiler.</creator><sort_journal_title>Pollution /</sort_journal_title><sort_title>Pollution /</sort_title><sort_creationdate_full>1971</sort_creationdate_full><subject>United States</subject><subject>Water Pollution</subject><subject>Environmental policy</subject><subject>Environmental law</subject><subject>Air Pollution</subject><subject>Environnement Politique gouvernementale États-Unis.</subject><subject>Environmental law United States.</subject><subject>Environmental policy United States.</subject><subject>Air Pollution.</subject><subject>Water Pollution.</subject><local_fields>973 pbooks</local_fields><local_fields>994 92 OCACL</local_fields><toc>Introduction -- Toward a Collective Conscience for Conservation -- Water Pollution -- Historical Prologue -- Water pollution: A Major Social Problem -- water and health: American Experience until 1900 -- Initial Efforts in Science and Public Policy: 1900-1919 -- Broadening the Base of Concern: 191-1948 -- Initiating a national water pollution Control Program: 1948-1966 -- Water Pollution Control: An element of multipurpose water resources development -- Interstate Compacts and water Pollution Control -- Water Pollution Control: The International Scene -- water pollution Problems and developments until 1948 -- Early Laws and conditions -- Science, water supply, and Epidemic Disease -- The Pollution of Interstate Waters: initial Investigations -- A Broadening base of concern -- President Franklin Delano Roosevelt and Water Pollution Control -- Developing a national Water pollution Control Program: 1948-1968 -- The water pollution Control Act of 1948 -- A Maturing Program: 1955-1968 -- Interstate agencies -- Sate Pollution Control: A case Study of Pennsylvania -- Air Pollution -- Introduction -- The Atmosphere: An Urgent Challenge -- Some historical Notes -- Tragic Signals: disasters in Europe and America -- Developing a National Air pollution Control program: 1948-1955 -- The First comprehensive Air Pollution Control law -- Developing Sate and Local Programs -- Summary -- Environment and Health -- Efforts to achieve effective legislation: 1954-1955 -- Expanding the sphere of control: 1955-1967 -- The Air Quality Act of 1967 -- New York City: A case Study in Air pollution -- Environmental Quality: A New National priority.</toc><language>eng</language><title>Pollution /</title><startdate>1971</startdate><addtitle>Conservation in the United States.</addtitle><addtitle>Pollution.</addtitle><addtitle>Conservation in the United States</addtitle><general>Chelsea House Publishers,</general><general>1971.</general><general>New York :</general><rtype>pbooks</rtype><contributor>Leonard B. Dworsky ; with an introduction by Stewart L. Udall.</contributor><series>Conservation in the United States.</series><series>Conservation in the United States</series><ocolc>(OCoLC)ocm00145772</ocolc><ocolc>(OCoLC)00145772</ocolc><ocolc>00145772</ocolc><place>United States</place><place>États-Unis.</place><place>United States.</place><journal_title>Pollution /</journal_title><facet_creatorcontrib>Dworsky, Leonard B.,</facet_creatorcontrib><sort_author>Dworsky, Leonard B., compiler.</sort_author><sort_creationdate>1971</sort_creationdate></search><display><creationdate>1971</creationdate><creator>Dworsky, Leonard B., compiler.$$QDworsky, Leonard B.</creator><subject>Water -- Pollution</subject><subject>Air -- Pollution</subject><subject>Environmental policy -- United States</subject><subject>Environmental law -- United States</subject><format>xl, 911 pages ; 24 cm.</format><description>Includes bibliographical references.</description><language>eng</language><source>Alma</source><type>pbooks</type><title>Pollution </title><version>1</version><relation>$$Cform$$VOnline version: Dworsky, Leonard B. Pollution. New York, Chelsea House Publishers, 1971$$QPollution.</relation><mms>9933348101867</mms><contents>Introduction -- Toward a Collective Conscience for Conservation -- Water Pollution -- Historical Prologue -- Water pollution: A Major Social Problem -- water and health: American Experience until 1900 -- Initial Efforts in Science and Public Policy: 1900-1919 -- Broadening the Base of Concern: 191-1948 -- Initiating a national water pollution Control Program: 1948-1966 -- Water Pollution Control: An element of multipurpose water resources development -- Interstate Compacts and water Pollution Control -- Water Pollution Control: The International Scene -- water pollution Problems and developments until 1948 -- Early Laws and conditions -- Science, water supply, and Epidemic Disease -- The Pollution of Interstate Waters: initial Investigations -- A Broadening base of concern -- President Franklin Delano Roosevelt and Water Pollution Control -- Developing a national Water pollution Control Program: 1948-1968 -- The water pollution Control Act of 1948 -- A Maturing Program: 1955-1968 -- Interstate agencies -- Sate Pollution Control: A case Study of Pennsylvania -- Air Pollution -- Introduction -- The Atmosphere: An Urgent Challenge -- Some historical Notes -- Tragic Signals: disasters in Europe and America -- Developing a National Air pollution Control program: 1948-1955 -- The First comprehensive Air Pollution Control law -- Developing Sate and Local Programs -- Summary -- Environment and Health -- Efforts to achieve effective legislation: 1954-1955 -- Expanding the sphere of control: 1955-1967 -- The Air Quality Act of 1967 -- New York City: A case Study in Air pollution -- Environmental Quality: A New National priority.</contents><series>Conservation in the United States$$QConservation in the United States</series><series>Conservation in the United States.$$QConservation in the United States.</series><lds100>00145772</lds100><publisher>New York : Chelsea House Publishers</publisher><lds88>Leonard B. Dworsky ; with an introduction by Stewart L. Udall</lds88><place>New York :</place></display><control><recordid>alma9933348101867</recordid><sourceid>alma</sourceid><score>5.1</score><originalsourceid>ocm00145772-01alliance_network</originalsourceid><sourceformat>MARC21</sourceformat><sourcerecordid>9933348101867</sourcerecordid><sourcesystem>OCLC</sourcesystem><isDedup>false</isDedup></control><addata><date>1971</date><aulast>Dworsky</aulast><notes>Includes bibliographical references.</notes><cop>New York</cop><ristype>GEN</ristype><oclcid>(ocolc)145772</oclcid><auinit>L</auinit><aufirst>Leonard B.</aufirst><lccn>71093813</lccn><seriestitle>Conservation in the United States</seriestitle><creatorfull>$$NDworsky, Leonard B.$$LDworsky$$FLeonard B.$$Rauthor</creatorfull><au>Dworsky, Leonard B.</au><originatingSystemIDAuthor>n82013408</originatingSystemIDAuthor><btitle>Pollution</btitle><pub>Chelsea House Publishers</pub></addata><sort><creationdate>1971</creationdate><author>Dworsky, Leonard B., compiler.</author><title>Pollution /</title></sort></record>",
"items": [
{
"itemType": "book",
"title": "Pollution",
"creators": [
{
"firstName": "Leonard B.",
"lastName": "Dworsky",
"creatorType": "author"
}
],
"date": "1971",
"abstractNote": "Includes bibliographical references.",
"language": "eng",
"place": "New York",
"publisher": "Chelsea House Publishers",
"series": "Conservation in the United States",
"attachments": [],
"tags": [
{
"tag": "Air"
},
{
"tag": "Environmental law"
},
{
"tag": "Environmental policy"
},
{
"tag": "Pollution"
},
{
"tag": "Pollution"
},
{
"tag": "United States"
},
{
"tag": "United States"
},
{
"tag": "Water"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Sebastian Karcher^https?://www\.cambridge\.org/core/(search\?|journals/|books/|.+/listing?)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2016-2024 Sebastian Karcher
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
// if one of these strings is in the URL, we're almost definitely on a listing
// page and should immediately return "multiple" if the page contains any
// results. the checks below (particularly url.includes('/books/')) might
// falsely return true and lead to an incorrect detection if we continue.
let multiples = /\/search\?|\/listing\?|\/issue\//;
if (multiples.test(url) && getSearchResults(doc, true)) {
return "multiple";
}
if (url.includes('/article/')) {
return "journalArticle";
}
if (url.includes('/books/')) {
if (doc.getElementsByClassName('chapter-wrapper').length > 0) {
return "bookSection";
}
else return "book";
}
// now let's check for multiples again, just to be sure. this handles some
// rare listing page URLs that might not be included in the multiples
// regex above.
if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll(
'li.title a[href*="/article/"], li.title a[href*="/product/"], li.title a[href*="/books/"], div.results .product-listing-with-inputs-content a[href*="/books/"]'
);
for (let row of rows) {
var href = row.href;
var title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
async function doWeb(doc, url) {
if (detectWeb(doc, url) == 'multiple') {
let items = await Zotero.selectItems(getSearchResults(doc, false));
if (!items) return;
for (let url of Object.keys(items)) {
await scrape(await requestDocument(url));
}
}
else {
await scrape(doc, url);
}
}
async function scrape(doc, url = doc.location.href) {
// Book metadata is much better using RIS
if (detectWeb(doc, url) == "book" || detectWeb(doc, url) == "bookSection") {
let productID = url.replace(/[#?].*/, "").match(/\/([^/]+)$/)[1];
let risURL
= "/core/services/aop-easybib/export?exportType=ris&productIds="
+ productID + "&citationStyle=apa";
// Z.debug(risURL);
// the attribute sometimes has a space in it, so testing for contains
var pdfURL = ZU.xpathText(doc,
'//meta[contains(@name, "citation_pdf_url")]/@content'
);
// Z.debug("pdfURL: " + pdfURL);
var text = await requestText(risURL);
var translator = Zotero.loadTranslator(
"import");
translator.setTranslator(
"32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7");
translator.setString(text);
translator.setHandler("itemDone", function (obj,
item) {
if (pdfURL) {
item.attachments.push({
url: pdfURL,
title: "Full Text PDF",
mimeType: "application/pdf"
});
}
item.attachments.push({
title: "Snapshot",
document: doc
});
// don't save Cambridge Core to archive
item.archive = "";
item.complete();
});
await translator.translate();
}
// Some elements of journal citations look better with EM
else {
let translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', (_obj, item) => {
item.url = url;
var abstract = ZU.xpathText(doc,
'//div[@class="abstract"]');
if (abstract) {
item.abstractNote = abstract;
}
item.title = ZU.unescapeHTML(item.title);
item.publisher = ""; // don't grab the publisher
item.libraryCatalog = "Cambridge University Press";
if (item.date.includes("undefined")) {
item.date = attr('meta[name="citation_online_date"]', "content");
}
// remove asterisk or 1 at end of title, e.g. https://www.cambridge.org/core/journals/american-political-science-review/article/abs/violence-in-premodern-societies-rural-colombia/A14B0BB4130A2BA6BE79E2853597526E
const titleElem = doc.querySelector("#maincontent h1");
if (titleElem.querySelector('a:last-child')) {
item.title = titleElem.firstChild.textContent;
}
item.complete();
});
let em = await translator.getTranslatorObject();
// TODO map additional meta tags here, or delete completely
if (url.includes("/books")) {
em.itemType = "book";
}
else {
em.itemType = "journalArticle";
}
await em.doWeb(doc, url);
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.cambridge.org/core/journals/journal-of-american-studies/article/abs/samo-as-an-escape-clause-jean-michel-basquiats-engagement-with-a-commodified-american-africanism/1E4368D610A957B84F6DA3A58B8BF164",
"items": [
{
"itemType": "journalArticle",
"title": "“SAMO© as an Escape Clause”: Jean-Michel Basquiat's Engagement with a Commodified American Africanism",
"creators": [
{
"firstName": "Laurie A.",
"lastName": "Rodrigues",
"creatorType": "author"
}
],
"date": "2011/05",
"DOI": "10.1017/S0021875810001738",
"ISSN": "1469-5154, 0021-8758",
"abstractNote": "Heir to the racist configuration of the American art exchange and the delimiting appraisals of blackness in the American mainstream media, Jean-Michel Basquiat appeared on the late 1970s New York City street art scene – then he called himself “SAMO.” Not long thereafter, Basquiat grew into one of the most influential artists of an international movement that began around 1980, marked by a return to figurative painting. Given its rough, seemingly untrained and extreme, conceptual nature, Basquiat's high-art oeuvre might not look so sophisticated to the uninformed viewer. However, Basquiat's work reveals a powerful poetic and visual gift, “heady enough to confound academics and hip enough to capture the attention span of the hip hop nation,” as Greg Tate has remarked. As noted by Richard Marshall, Basquiat's aesthetic strength actually comes from his striving “to achieve a balance between the visual and intellectual attributes” of his artwork. Like Marshall, Tate, and others, I will connect with Basquiat's unique, self-reflexively experimental visual practices of signifying and examine anew Basquiat's active contribution to his self-alienation, as Hebdige has called it. Basquiat's aesthetic makes of his paintings economies of accumulation, building a productive play of contingency from the mainstream's constructions of race. This aesthetic move speaks to a need for escape from the perceived epistemic necessities of blackness. Through these economies of accumulation we see, as Tate has pointed out, Basquiat's “intellectual obsession” with issues such as ancestry/modernity, personhood/property and originality/origins of knowledge, driven by his tireless need to problematize mainstream media's discourses surrounding race – in other words, a commodified American Africanism.",
"issue": "2",
"language": "en",
"libraryCatalog": "Cambridge University Press",
"pages": "227-243",
"publicationTitle": "Journal of American Studies",
"shortTitle": "“SAMO© as an Escape Clause”",
"url": "https://www.cambridge.org/core/journals/journal-of-american-studies/article/abs/samo-as-an-escape-clause-jean-michel-basquiats-engagement-with-a-commodified-american-africanism/1E4368D610A957B84F6DA3A58B8BF164",
"volume": "45",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.cambridge.org/core/journals/journal-of-fluid-mechanics/article/abs/high-resolution-simulations-of-cylindrical-density-currents/30D62864BDED84A6CC81F5823950767B",
"items": [
{
"itemType": "journalArticle",
"title": "High-resolution simulations of cylindrical density currents",
"creators": [
{
"firstName": "Mariano I.",
"lastName": "Cantero",
"creatorType": "author"
},
{
"firstName": "S.",
"lastName": "Balachandar",
"creatorType": "author"
},
{
"firstName": "Marcelo H.",
"lastName": "Garcia",
"creatorType": "author"
}
],
"date": "2007/11",
"DOI": "10.1017/S0022112007008166",
"ISSN": "1469-7645, 0022-1120",
"abstractNote": "Three-dimensional highly resolved simulations are presented for cylindrical density currents using the Boussinesq approximation for small density difference. Three Reynolds numbers (Re) are investigated (895, 3450 and 8950, which correspond to values of the Grashof number of 105, 1.5 × 106 and 107, respectively) in order to identify differences in the flow structure and dynamics. The simulations are performed using a fully de-aliased pseudospectral code that captures the complete range of time and length scales of the flow. The simulated flows present the main features observed in experiments at large Re. As the current develops, it transitions through different phases of spreading, namely acceleration, slumping, inertial and viscous Soon after release the interface between light and heavy fluids rolls up forming Kelvin–Helmholtz vortices. The formation of the first vortex sets the transition between acceleration and slumping phases. Vortex formation continues only during the slumping phase and the formation of the last Kelvin–Helmholtz vortex signals the departure from the slumping phase. The coherent Kelvin–Helmholtz vortices undergo azimuthal instabilities and eventually break up into small-scale turbulence. In the case of planar currents this turbulent region extends over the entire body of the current, while in the cylindrical case it only extends to the regions of Kelvin–Helmholtz vortex breakup. The flow develops three-dimensionality right from the beginning with incipient lobes and clefts forming at the lower frontal region. These instabilities grow in size and extend to the upper part of the front. Lobes and clefts continuously merge and split and result in a complex pattern that evolves very dynamically. The wavelength of the lobes grows as the flow spreads, while the local Re of the flow decreases. However, the number of lobes is maintained over time. Owing to the high resolution of the simulations, we have been able to link the lobe and cleft structure to local flow patterns and vortical structures. In the near-front region and body of the current several hairpin vortices populate the flow. Laboratory experiments have been performed at the higher Re and compared to the simulation results showing good agreement. Movies are available with the online version of the paper.",
"language": "en",
"libraryCatalog": "Cambridge University Press",
"pages": "437-469",
"publicationTitle": "Journal of Fluid Mechanics",
"url": "https://www.cambridge.org/core/journals/journal-of-fluid-mechanics/article/abs/high-resolution-simulations-of-cylindrical-density-currents/30D62864BDED84A6CC81F5823950767B",
"volume": "590",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Gravity currents"
},
{
"tag": "Vortex breakdown"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.cambridge.org/core/journals/american-political-science-review/issue/F6F2E8238A6D139A91D343A62AB2CECC",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.cambridge.org/core/search?q=labor&sort=&aggs%5BonlyShowAvailable%5D%5Bfilters%5D=&aggs%5BopenAccess%5D%5Bfilters%5D=&aggs%5BproductTypes%5D%5Bfilters%5D=JOURNAL_ARTICLE&aggs%5BproductDate%5D%5Bfilters%5D=&aggs%5BproductSubject%5D%5Bfilters%5D=&aggs%5BproductJournal%5D%5Bfilters%5D=&aggs%5BproductPublisher%5D%5Bfilters%5D=&aggs%5BproductSociety%5D%5Bfilters%5D=&aggs%5BproductPublisherSeries%5D%5Bfilters%5D=&aggs%5BproductCollection%5D%5Bfilters%5D=&showJackets=&filters%5BauthorTerms%5D=&filters%5BdateYearRange%5D%5Bfrom%5D=&filters%5BdateYearRange%5D%5Bto%5D=&hideArticleGraphicalAbstracts=true",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.cambridge.org/core/books/conservation-research-policy-and-practice/making-a-difference-in-conservation-linking-science-and-policy/C8B7353BFDD77E0C1A16A61C07E44977",
"items": [
{
"itemType": "bookSection",
"title": "Making a difference in conservation: linking science and policy",
"creators": [
{
"lastName": "Vickery",
"firstName": "Juliet A.",
"creatorType": "editor"
},
{
"lastName": "Ockendon",
"firstName": "Nancy",
"creatorType": "editor"
},
{
"lastName": "Pettorelli",
"firstName": "Nathalie",
"creatorType": "editor"
},
{
"lastName": "Brotherton",
"firstName": "Peter N. M.",
"creatorType": "editor"
},
{
"lastName": "Sutherland",
"firstName": "William J.",
"creatorType": "editor"
},
{
"lastName": "Davies",
"firstName": "Zoe G.",
"creatorType": "editor"
},
{
"lastName": "Sutherland",
"firstName": "William J.",
"creatorType": "author"
},
{
"lastName": "Brotherton",
"firstName": "Peter N. M.",
"creatorType": "author"
},
{
"lastName": "Ockendon",
"firstName": "Nancy",
"creatorType": "author"
},
{
"lastName": "Pettorelli",
"firstName": "Nathalie",
"creatorType": "author"
},
{
"lastName": "Vickery",
"firstName": "Juliet A.",
"creatorType": "author"
},
{
"lastName": "Davies",
"firstName": "Zoe G.",
"creatorType": "author"
}
],
"date": "2020",
"ISBN": "9781108714587",
"abstractNote": "Jamie Gundry’s dramatic image of a white-tailed eagle (Haliaeetus albicilla) on the cover of this book reflects the twisting changes in fortune experienced by this species, with a revival that can be attributed to a successful interplay of science, policy and practice. White-tailed eagles were historically much more widely distributed than they are today (Yalden, 2007), once breeding across much of Europe, but by the early twentieth century the species was extinct across much of western and southern Europe. The main cause of its decline was persecution by farmers and shepherds, who considered the eagles a threat to their livestock, but, along with other raptors, white-tailed eagles were also seriously affected by DDT in the 1960s and 1970s, which had disastrous effects on the breeding success of remaining populations.",
"bookTitle": "Conservation Research, Policy and Practice",
"extra": "DOI: 10.1017/9781108638210.001",
"libraryCatalog": "Cambridge University Press",
"pages": "3-8",
"place": "Cambridge",
"publisher": "Cambridge University Press",
"series": "Ecological Reviews",
"shortTitle": "Making a difference in conservation",
"url": "https://www.cambridge.org/core/books/conservation-research-policy-and-practice/making-a-difference-in-conservation-linking-science-and-policy/C8B7353BFDD77E0C1A16A61C07E44977",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.cambridge.org/core/books/conservation-research-policy-and-practice/22AB241C45F182E40FC7F13637485D7E",
"items": [
{
"itemType": "book",
"title": "Conservation Research, Policy and Practice",
"creators": [
{
"lastName": "Sutherland",
"firstName": "William J.",
"creatorType": "editor"
},
{
"lastName": "Brotherton",
"firstName": "Peter N. M.",
"creatorType": "editor"
},
{
"lastName": "Davies",
"firstName": "Zoe G.",
"creatorType": "editor"
},
{
"lastName": "Ockendon",
"firstName": "Nancy",
"creatorType": "editor"
},
{
"lastName": "Pettorelli",
"firstName": "Nathalie",
"creatorType": "editor"
},
{
"lastName": "Vickery",
"firstName": "Juliet A.",
"creatorType": "editor"
}
],
"date": "2020",
"ISBN": "9781108714587",
"abstractNote": "Conservation research is essential for advancing knowledge but to make an impact scientific evidence must influence conservation policies, decision making and practice. This raises a multitude of challenges. How should evidence be collated and presented to policymakers to maximise its impact? How can effective collaboration between conservation scientists and decision-makers be established? How can the resulting messages be communicated to bring about change? Emerging from a successful international symposium organised by the British Ecological Society and the Cambridge Conservation Initiative, this is the first book to practically address these questions across a wide range of conservation topics. Well-renowned experts guide readers through global case studies and their own experiences. A must-read for practitioners, researchers, graduate students and policymakers wishing to enhance the prospect of their work 'making a difference'. This title is also available as Open Access on Cambridge Core.",
"extra": "DOI: 10.1017/9781108638210",
"libraryCatalog": "Cambridge University Press",
"place": "Cambridge",
"publisher": "Cambridge University Press",
"series": "Ecological Reviews",
"url": "https://www.cambridge.org/core/books/conservation-research-policy-and-practice/22AB241C45F182E40FC7F13637485D7E",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.cambridge.org/core/what-we-publish/books/listing?sort=canonical.date%3Adesc&aggs%5BonlyShowAvailable%5D%5Bfilters%5D=true&aggs%5BproductTypes%5D%5Bfilters%5D=BOOK%2CELEMENT&searchWithinIds=0C5182F27A492FDC81EDF8D3C53266B5",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.cambridge.org/core/journals/ajs-review/latest-issue",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.cambridge.org/core/journals/american-political-science-review/article/abs/violence-in-premodern-societies-rural-colombia/A14B0BB4130A2BA6BE79E2853597526E",
"items": [
{
"itemType": "journalArticle",
"title": "Violence in Pre-Modern Societies: Rural Colombia",
"creators": [
{
"firstName": "Richard S.",
"lastName": "Weinert",
"creatorType": "author"
}
],
"date": "1966/06",
"DOI": "10.2307/1953360",
"ISSN": "0003-0554, 1537-5943",
"abstractNote": "Violence is a common phenomenon in developing polities which has received little attention. Clearly a Peronist riot in Buenos Aires, a land invasion in Lima, and a massacre in rural Colombia are all different. Yet we have no typology which relates types of violence to stages or patterns of economic or social development. We know little of the causes, incidence or functions of different forms of violence. This article is an effort to understand one type of violence which can occur in societies in transition.Violence in Colombia has traditionally accompanied transfers of power at the national level. This can account for its outbreak in 1946, when the Conservative Party replaced the Liberals. It cannot account for the intensity or duration of rural violence for two decades. This article focuses primarily on the violence from 1946 to 1953, and explains its intensification and duration as the defense of a traditional sacred order against secular modernizing tendencies undermining that order. We shall discuss violence since 1953 in the concluding section.",
"issue": "2",
"language": "en",
"libraryCatalog": "Cambridge University Press",
"pages": "340-347",
"publicationTitle": "American Political Science Review",
"shortTitle": "Violence in Pre-Modern Societies",
"url": "https://www.cambridge.org/core/journals/american-political-science-review/article/abs/violence-in-premodern-societies-rural-colombia/A14B0BB4130A2BA6BE79E2853597526E",
"volume": "60",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.cambridge.org/core/journals/journal-of-public-policy/article/abs/when-consumers-oppose-consumer-protection-the-politics-of-regulatory-backlash/2C8E6B9BB6881A233B8936D9AD2C6305",
"items": [
{
"itemType": "journalArticle",
"title": "When Consumers Oppose Consumer Protection: The Politics of Regulatory Backlash",
"creators": [
{
"firstName": "David",
"lastName": "Vogel",
"creatorType": "author"
}
],
"date": "1990/10",
"DOI": "10.1017/S0143814X00006085",
"ISSN": "1469-7815, 0143-814X",
"abstractNote": "This article examines a neglected phenomenon in the existing literature on social regulation, namely political opposition to regulation that comes not from business but from consumers. It examines four cases of successful grass-roots consumer opposition to government health and safety regulations in the United States. Two involve rules issued by the National Highway Traffic Safety Administration, a 1974 requirement that all new automobiles be equipped with an engine-interlock system, and a 1967 rule that denied federal highway funds to states that did not require motorcyclists to wear a helmet. In 1977, Congress overturned the Food and Drug Administration's ban on the artificial sweetener, saccharin. Beginning in 1987, the FDA began to yield to pressures from the gay community by agreeing to streamline its procedures for the testing and approval of new drugs designed to fight AIDS and other fatal diseases. The article identifies what these regulations have in common and examines their significance for our understanding the politics of social regulation in the United States and other industrial nations.",
"issue": "4",
"language": "en",
"libraryCatalog": "Cambridge University Press",
"pages": "449-470",
"publicationTitle": "Journal of Public Policy",
"shortTitle": "When Consumers Oppose Consumer Protection",
"url": "https://www.cambridge.org/core/journals/journal-of-public-policy/article/abs/when-consumers-oppose-consumer-protection-the-politics-of-regulatory-backlash/2C8E6B9BB6881A233B8936D9AD2C6305",
"volume": "10",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.cambridge.org/core/journals/american-political-science-review/firstview",
"items": "multiple"
}
]
/** END TEST CASES **/
100Franklin Pezzuti Dyer^https://(cite\.)?case\.law/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2024 Franklin Pezzuti Dyer
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, _url) {
if (doc.querySelectorAll('.case-container').length > 0) {
return 'case';
}
else if (getSearchResults(doc, true)) {
return 'multiple';
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('div.result-title > div > a');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
async function doWeb(doc, url) {
if (detectWeb(doc, url) == 'multiple') {
let items = await Zotero.selectItems(getSearchResults(doc, false));
if (!items) return;
for (let url of Object.keys(items)) {
await scrape(await requestDocument(url));
}
}
else {
await scrape(doc, url);
}
}
async function scrape(doc, url = doc.location.href) {
let apiUrl = attr(doc, "a[href*='api.case.law/v1/cases/']", 'href');
let caseJson = await requestJSON(apiUrl);
let pdfUrl = caseJson.frontend_pdf_url;
let caseItem = new Zotero.Item("case");
caseItem.language = "en-US";
caseItem.url = url;
let caseName = caseJson.name;
let abbrvCaseName = caseJson.name_abbreviation;
let caseNameParts = caseName.split(' ');
let caseBody = text(doc, 'casebody');
for (let i = 0; i < caseNameParts.length; i++) { // Use context to fix capitalization in the title
let word = caseNameParts[i];
let uppercaseWord = word.toUpperCase();
let searchWord = uppercaseWord.replace(/[.,?]$/g, "");
let titleWord = word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
if (word != uppercaseWord) continue; // We only need to fix words that are all-caps
if (abbrvCaseName.includes(searchWord)) continue; // If abbreviated title contains all-caps version, probably an acronym
if (caseBody.includes(searchWord)) continue; // If case body contains all-caps version, probably an acronym
caseNameParts[i] = titleWord; // Otherwise, use title-case
}
caseName = caseNameParts.join(' ');
caseItem.caseName = caseName;
caseItem.shortTitle = abbrvCaseName;
caseItem.court = caseJson.court.name;
caseItem.dateDecided = caseJson.decision_date;
caseItem.docketNumber = caseJson.docket_number.replace(/[Nn]o\.?\s*/g, "");
caseItem.reporter = caseJson.reporter.full_name;
caseItem.reporterVolume = caseJson.volume.volume_number;
caseItem.attachments = [{
title: "Full Text PDF",
url: pdfUrl,
mimeType: "application/pdf"
}];
let parallelCitations = caseJson.citations.filter(c => c.type == "parallel").map(c => c.cite);
if (parallelCitations.length == 0) {
caseItem.history = "";
}
else {
caseItem.history = parallelCitations.join(",");
}
caseItem.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://case.law/search/#/cases?search=abc&page=1&ordering=relevance",
"items": "multiple"
},
{
"type": "web",
"url": "https://cite.case.law/am-samoa/2/3/",
"items": [
{
"itemType": "case",
"caseName": "Pasa of Fagatogo, Plaintiff v. Faiisiota of Faganeanea, Defendant",
"creators": [],
"dateDecided": "1947-02-07",
"court": "High Court of American Samoa",
"docketNumber": "2-1944",
"language": "en-US",
"reporter": "American Samoa Reports",
"reporterVolume": "2",
"shortTitle": "Pasa v. Faiisiota",
"url": "https://cite.case.law/am-samoa/2/3/",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://cite.case.law/pa-d-c2d/51/424/",
"items": [
{
"itemType": "case",
"caseName": "ABC Juvenile",
"creators": [],
"dateDecided": "1971-02-19",
"court": "Adams County Court of Common Pleas",
"docketNumber": "47",
"language": "en-US",
"reporter": "Pennsylvania District and County Reports",
"reporterVolume": "51",
"url": "https://cite.case.law/pa-d-c2d/51/424/",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://cite.case.law/doug/1/450/",
"items": [
{
"itemType": "case",
"caseName": "Dousman v. O'Malley",
"creators": [],
"dateDecided": "1844-01",
"court": "Michigan Supreme Court",
"language": "en-US",
"reporter": "Reports of cases argued and determined in the Supreme Court of the state of Michigan",
"reporterVolume": "1",
"url": "https://cite.case.law/doug/1/450/",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://cite.case.law/so-2d/57/40/9903854/",
"items": [
{
"itemType": "case",
"caseName": "Tucker v. Central Motors, Inc.",
"creators": [],
"dateDecided": "1952-01-14",
"court": "Louisiana Supreme Court",
"docketNumber": "40041",
"history": "220 La. 510",
"language": "en-US",
"reporter": "Southern Reporter, Second Series",
"reporterVolume": "57",
"url": "https://cite.case.law/so-2d/57/40/9903854/",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Avram Lyon^https?://(www|search)\.proquest\.com/(.*/)?(docview|pagepdf|results|publicationissue|browseterms|browsetitles|browseresults|myresearch/(figtables|documents))/*
***** BEGIN LICENSE BLOCK *****
ProQuest Translator
Copyright (C) 2011-2020 Avram Lyon, ajlyon@gmail.com and Sebastian Karcher
TThis file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK ******/
var language = "English";
var L = {};
var isEbrary = false;
// returns an array of values for a given field or array of fields
// the values are in the same order as the field names
function getTextValue(doc, fields) {
if (typeof (fields) != 'object') fields = [fields];
// localize fields
fields = fields.map(
function (field) {
if (fieldNames[language]) {
return fieldNames[language][field] || field;
}
else {
return field;
}
});
var allValues = [], values;
for (let i = 0, n = fields.length; i < n; i++) {
values = ZU.xpath(doc,
'//div[@class="display_record_indexing_fieldname" and normalize-space(text())="' + fields[i]
+ '"]/following-sibling::div[@class="display_record_indexing_data"][1]');
if (values.length) values = [values[0].textContent];
allValues = allValues.concat(values);
}
return allValues;
}
// initializes field map translations
function initLang(doc) {
let lang = text(doc, '.gaMRLanguage');
if (!lang) lang = ZU.xpathText(doc, '//a[span[contains(@class,"uxf-globe")]]');
lang = lang.replace(/\u200e/g, ''); // Remove stray left-to-right markers
Z.debug('Full language label: ' + JSON.stringify(lang));
if (lang && lang != "English") {
lang = lang.split(',')[0].trim();
Z.debug('Trimmed language label: ' + JSON.stringify(lang));
// if already initialized, don't need to do anything else
if (lang == language) return;
language = lang;
// build reverse field map
L = {};
for (let i in fieldNames[language]) {
L[fieldNames[language][i]] = i;
}
return;
}
language = 'English';
L = {};
}
function getSearchResults(doc, checkOnly, extras) {
var root;
var elements = doc.getElementsByClassName('resultListContainer');
for (let i = 0; i < elements.length; i++) {
if (elements[i] && elements[i].offsetHeight > 0) {
root = elements[i];
break;
}
}
if (!root) {
Z.debug("No root found");
return false;
}
var results = root.getElementsByClassName('resultItem');
// root.querySelectorAll('.resultTitle, .previewTitle');
var items = {}, found = false;
isEbrary = (results && results[0] && results[0].getElementsByClassName('ebraryitem').length > 0);
// if the first result is Ebrary, they all are - we're looking at the Ebrary results tab
for (let i = 0, n = results.length; i < n; i++) {
var title = results[i].querySelectorAll('h3 a')[0];
// Z.debug(title)
if (!title || !title.href) continue;
if (checkOnly) return true;
found = true;
var item = ZU.trimInternal(title.textContent);
var preselect = results[i].getElementsByClassName('marked_list_checkbox')[0];
if (preselect) {
item = {
title: item,
checked: preselect.checked
};
}
items[title.href] = item;
if (isEbrary && Zotero.isBookmarklet) {
extras[title.href] = {
html: results[i],
title: item,
url: title.href
};
}
}
return found ? items : false;
}
function detectWeb(doc, url) {
initLang(doc);
// Check for multiple first
if (!url.includes('docview') && !url.includes('pagepdf')) {
return getSearchResults(doc, true) ? 'multiple' : false;
}
// if we are on Abstract/Details page,
// then we can read the type from the corresponding field
var types = getTextValue(doc, ["Source type", "Document type", "Record type"]);
var zoteroType = getItemType(types);
if (zoteroType) return zoteroType;
// hack for NYTs, which misses crucial data.
var db = getTextValue(doc, "Database")[0];
if (db && db.includes("The New York Times")) {
return "newspaperArticle";
}
// there is not much information about the item type in the pdf/fulltext page
let titleRow = text(doc, '.open-access');
if (titleRow && doc.getElementById('docview-nav-stick')) { // do not continue if there is no nav to the Abstract, as the translation will fail
if (getItemType([titleRow])) {
return getItemType([titleRow]);
}
// Fall back on journalArticle - even if we couldn't guess the type
return "journalArticle";
}
return false;
}
function doWeb(doc, url, noFollow) {
let type = detectWeb(doc, url);
if (type == "multiple") {
// detect web returned multiple
var resultData = {};
Zotero.selectItems(getSearchResults(doc, false, resultData), function (items) {
if (!items) return;
var articles = [];
for (let item in items) {
articles.push(item);
}
if (isEbrary) {
if (Zotero.isBookmarklet) {
// The bookmarklet can't use the ebrary translator
var refs = [];
for (let i in items) {
refs.push(resultData[i]);
}
scrapeEbraryResults(refs);
}
else {
ZU.processDocuments(articles, function (doc) {
var translator = Zotero.loadTranslator("web");
translator.setTranslator("2abe2519-2f0a-48c0-ad3a-b87b9c059459");
translator.setDocument(doc);
translator.translate();
});
}
}
else {
ZU.processDocuments(articles, doWeb);
}
});
}
else {
// Third option is for EEBO
const abstractTab = doc.getElementById('addFlashPageParameterformat_abstract') || doc.getElementById('addFlashPageParameterformat_citation') || doc.getElementById("link_prefix_addFlashPageParameterformat_citation");
// E.g. on ERIC
const abstractView = doc.getElementsByClassName('abstractContainer');
if (abstractTab && abstractTab.classList.contains('active')) {
Zotero.debug("On Abstract tab and scraping");
scrape(doc, url, type);
}
else if (abstractTab && abstractTab.href) {
var link = abstractTab.href;
Zotero.debug("Going to the Abstract tab");
ZU.processDocuments(link, function (doc, url) {
doWeb(doc, url, true);
});
}
else if (abstractView.length) {
Zotero.debug("new Abstract view");
scrape(doc, url, type);
}
else if (noFollow) {
Z.debug('Not following link again. Attempting to scrape');
scrape(doc, url, type);
}
else {
throw new Error("Could not find the abstract/metadata link");
}
}
}
function scrape(doc, url, type) {
var item = new Zotero.Item(type);
// get all rows
var rows = doc.getElementsByClassName('display_record_indexing_row');
let label, value, enLabel;
var dates = [], place = {}, altKeywords = [];
for (let i = 0, n = rows.length; i < n; i++) {
label = rows[i].childNodes[0];
value = rows[i].childNodes[1];
if (!label || !value) continue;
label = label.textContent.trim();
value = value.textContent.trim(); // trimInternal?
// translate label
enLabel = L[label] || label;
let creatorType;
switch (enLabel) {
case 'Title':
if (value == value.toUpperCase()) value = ZU.capitalizeTitle(value, true);
item.title = value;
break;
case 'Author':
case 'Editor': // test case?
creatorType = (enLabel == 'Author') ? 'author' : 'editor';
// Use titles of a tags if they exist, since these don't include
// affiliations; don't include links to ORCID profiles
value = ZU.xpathText(rows[i].childNodes[1], "a[not(@id='orcidLink')]/@title", null, "; ") || value;
value = value.replace(/^by\s+/i, '') // sometimes the authors begin with "By"
.split(/\s*;\s*|\s+and\s+/i);
for (let j = 0, m = value.length; j < m; j++) {
// TODO: might have to detect proper creator type from item type*/
item.creators.push(
ZU.cleanAuthor(value[j], creatorType, value[j].includes(',')));
}
break;
case 'Signator':
if (item.itemType == 'letter') {
for (let signator of rows[i].childNodes[1].querySelectorAll('a')) {
let name = signator.textContent;
item.creators.push(
ZU.cleanAuthor(name, 'author', name.includes(',')));
}
}
break;
case 'Recipient':
if (item.itemType == 'letter') {
for (let recipient of rows[i].childNodes[1].querySelectorAll('a')) {
let name = recipient.textContent;
if (/\b(department|bureau|office|director)\b/i.test(name)) {
// a general edge case that we handle specifically,
// but institutional recipients are common and we'd
// like not to split the name when we can
item.creators.push({
lastName: name,
creatorType: 'recipient',
fieldMode: 1
});
}
else {
item.creators.push(
ZU.cleanAuthor(name, 'recipient', name.includes(',')));
}
}
}
break;
case 'Publication title':
item.publicationTitle = value.replace(/;.+/, "");
break;
case 'Volume':
item.volume = value;
break;
case 'Issue':
item.issue = value;
break;
case 'Number of pages':
item.numPages = value;
break;
case 'ISSN':
item.ISSN = value;
break;
case 'ISBN':
item.ISBN = value;
break;
case 'DOI': // test case?
item.DOI = ZU.cleanDOI(value);
break;
case 'Copyright':
item.rights = value;
break;
case 'Language of publication':
case 'Language':
item.language = value;
break;
case 'Section':
item.section = value;
break;
case 'Pages':
item.pages = value;
break;
case 'First page':
item.firstPage = value;
break;
case 'University/institution':
case 'School':
item.university = value;
break;
case 'Degree':
item.thesisType = value;
break;
case 'Publisher':
case 'Printer/Publisher':
item.publisher = value;
break;
case 'Identifier / keyword':
item.tags = value.split(/\s*(?:,|;)\s*/);
break;
// alternative tags
case 'Subject':
case 'Journal subject':
case 'Publication subject':
altKeywords.push(value);
break;
// we'll figure out proper location later
case 'University location':
case 'School location':
place.schoolLocation = value;
break;
case 'Place of publication':
place.publicationPlace = value;
break;
case 'Country of publication':
place.publicationCountry = value;
break;
// multiple dates are provided
// more complete dates are preferred
case 'Date':
case 'Publication date':
dates[2] = value;
break;
case 'Publication year':
dates[1] = value;
break;
case 'Year':
dates[0] = value;
break;
// we already know about these; we can skip them unless we want to
// disambiguate a general item type
case 'Source type':
break;
case 'Document type':
if (item.itemType == 'letter') {
if (value.trim().toLowerCase() != 'letter') {
item.letterType = value;
}
}
break;
case 'Record type':
case 'Database':
break;
default:
Z.debug('Unhandled field: "' + label + '": ' + value);
}
}
item.url = url.replace(/\baccountid=[^&#]*&?/, '').replace(/\?(?:#|$)/, '');
if (item.itemType == "thesis" && place.schoolLocation) {
item.place = place.schoolLocation;
}
else if (place.publicationPlace) {
item.place = place.publicationPlace;
if (place.publicationCountry) {
item.place = item.place + ', ' + place.publicationCountry.replace(/,.+/, "");
}
}
item.date = dates.pop();
// Sometimes we can get first page and num pages for a journal article
if (item.firstPage && !item.pages) {
var firstPage = parseInt(item.firstPage);
var numPages = parseInt(item.numPages);
if (!numPages || numPages < 2) {
item.pages = item.firstPage;
}
else {
item.pages = firstPage + '–' + (firstPage + numPages - 1);
}
}
// sometimes number of pages ends up in pages
if (!item.numPages) item.numPages = item.pages;
// don't override the university with a publisher information for a thesis
if (item.itemType == "thesis" && item.university && item.publisher) {
delete item.publisher;
}
// lanuguage is sometimes given as full word and abbreviation
if (item.language) item.language = item.language.split(/\s*;\s*/)[0];
// parse some data from the byline in case we're missing publication title
// or the date is not complete
var byline = ZU.xpath(doc, '//span[contains(@class, "titleAuthorETC")][last()]');
// add publication title if we don't already have it
if (!item.publicationTitle
&& ZU.fieldIsValidForType('publicationTitle', item.itemType)) {
var pubTitle = ZU.xpathText(byline, './/a[@id="lateralSearch"]');
// remove date range
if (pubTitle) item.publicationTitle = pubTitle.replace(/\s*\(.+/, '');
}
var date = ZU.xpathText(byline, './text()');
if (date) date = date.match(/]\s+(.+?):/);
// Convert date to ISO to make sure we don't save random strings
if (date) date = ZU.strToISO(date[1]);
// add date if we only have a year and date is longer in the byline
if (date
&& (!item.date
|| (item.date.length <= 4 && date.length > item.date.length))) {
item.date = date;
}
item.abstractNote = ZU.xpath(doc, '//div[contains(@id, "abstractSummary_")]/p')
.map(function (p) {
return ZU.trimInternal(p.textContent);
}).join('\n');
if (!item.tags.length && altKeywords.length) {
item.tags = altKeywords.join(',').split(/\s*(?:,|;)\s*/);
}
let pdfLink = doc.querySelector('[id^="downloadPDFLink"]');
if (pdfLink) {
item.attachments.push({
title: 'Full Text PDF',
url: pdfLink.href,
mimeType: 'application/pdf',
proxy: false
});
}
else {
var fullText = ZU.xpath(doc, '//li[@id="tab-Fulltext-null"]/a')[0];
if (fullText) {
item.attachments.push({
title: 'Full Text Snapshot',
url: fullText.href,
mimeType: 'text/html'
});
}
}
item.complete();
}
function getItemType(types) {
var guessType;
for (var i = 0, n = types.length; i < n; i++) {
// put the testString to lowercase and test for singular only for maxmial compatibility
// in most cases we just can return the type, but sometimes only save it as a guess and will use it only if we don't have anything better
var testString = types[i].toLowerCase();
if (testString.includes("journal") || testString.includes("periodical")) {
// "Scholarly Journals", "Trade Journals", "Historical Periodicals"
return "journalArticle";
}
else if (testString.includes("newspaper") || testString.includes("wire feed")) {
// "Newspapers", "Wire Feeds", "WIRE FEED", "Historical Newspapers"
return "newspaperArticle";
}
else if (testString.includes("dissertation")) {
// "Dissertations & Theses", "Dissertation/Thesis", "Dissertation"
return "thesis";
}
else if (testString.includes("chapter")) {
// "Chapter"
return "bookSection";
}
else if (testString.includes("book")) {
// "Book, Authored Book", "Book, Edited Book", "Books"
guessType = "book";
}
else if (testString.includes("conference paper")) {
// "Conference Papers and Proceedings", "Conference Papers & Proceedings"
return "conferencePaper";
}
else if (testString.includes("magazine")) {
// "Magazines"
return "magazineArticle";
}
else if (testString.includes("report")) {
// "Reports", "REPORT"
return "report";
}
else if (testString.includes("website")) {
// "Blogs, Podcats, & Websites"
guessType = "webpage";
}
else if (testString == "blog" || testString == "article in an electronic resource or web site") {
// "Blog", "Article In An Electronic Resource Or Web Site"
return "blogPost";
}
else if (testString.includes("patent")) {
// "Patent"
return "patent";
}
else if (testString.includes("pamphlet")) {
// Pamphlets & Ephemeral Works
guessType = "manuscript";
}
else if (testString.includes("encyclopedia")) {
// "Encyclopedias & Reference Works"
guessType = "encyclopediaArticle";
}
else if (testString.includes("statute")) {
return "statute";
}
else if (testString.includes("letter") || testString.includes("cable")) {
guessType = "letter";
}
}
// We don't have localized strings for item types, so just guess that it's a journal article
if (!guessType && language != 'English') {
return 'journalArticle';
}
return guessType;
}
function scrapeEbraryResults(refs) {
// Since we can't chase URLs, let's get what we can from the page
for (let i = 0; i < refs.length; i++) {
var ref = refs[i];
var hiddenData = ZU.xpathText(ref.html, './span');
var visibleData = Array.prototype.map.call(ref.html.getElementsByClassName('results_list_copy'), function (node) {
// The text returned by textContent is of the following format:
// book title \n author, first; [author, second; ...;] publisher name; publisher location (date) \n
return /\n(.*)\n?/.exec(node.textContent)[1].split(';').reverse();
})[0];
var item = new Zotero.Item("book");
var date = /\(([\w\s]+)\)/.exec(visibleData[0]);
var place = /([\w,\s]+)\(/.exec(visibleData[0]);
var isbn = /isbn,\svalue\s=\s'([\dX]+)'/i.exec(hiddenData);
var language = /language_code,\svalue\s=\s'([A-Za-z]+)'\n/i.exec(hiddenData);
var numPages = /page_count,\svalue\s=\s'(\d+)'\n/i.exec(hiddenData);
var locNum = /lccn,\svalue\s=\s'([-.\s\w]+)'\n/i.exec(hiddenData);
item.title = ref.title;
item.url = ref.url;
if (date) {
item.date = date[1];
}
if (place) {
item.place = place[1].trim();
}
item.publisher = visibleData[1].trim();
// Push the authors in reverse to restore the original order
for (var j = visibleData.length - 1; j >= 2; j--) {
item.creators.push(ZU.cleanAuthor(visibleData[j], "author", true));
}
if (isbn) {
item.ISBN = isbn[1];
}
if (language) {
item.language = language[1];
}
if (numPages) {
item.numPages = numPages[1];
}
if (locNum) {
item.callNumber = locNum[1];
}
item.complete();
}
}
// localized field names
var fieldNames = {
العربية: {
"Source type": 'نوع المصدر',
"Document type": 'نوع المستند',
// "Record type"
Database: 'قاعدة البيانات',
Title: 'العنوان',
Author: 'المؤلف',
// "Editor":
"Publication title": 'عنوان المطبوعة',
Volume: 'المجلد',
Issue: 'الإصدار',
"Number of pages": 'عدد الصفحات',
ISSN: 'رقم المسلسل الدولي',
ISBN: 'الترقيم الدولي للكتاب',
// "DOI":
Copyright: 'حقوق النشر',
Language: 'اللغة',
"Language of publication": 'لغة النشر',
Section: 'القسم',
"Publication date": 'تاريخ النشر',
"Publication year": 'عام النشر',
Year: 'العام',
Pages: 'الصفحات',
School: 'المدرسة',
Degree: 'الدرجة',
Publisher: 'الناشر',
"Printer/Publisher": 'جهة الطباعة/الناشر',
"Place of publication": 'مكان النشر',
"School location": 'موقع المدرسة',
"Country of publication": 'بلد النشر',
"Identifier / keyword": 'معرف / كلمة أساسية',
Subject: 'الموضوع',
"Journal subject": 'موضوع الدورية'
},
'Bahasa Indonesia': {
"Source type": 'Jenis sumber',
"Document type": 'Jenis dokumen',
// "Record type"
Database: 'Basis data',
Title: 'Judul',
Author: 'Pengarang',
// "Editor":
"Publication title": 'Judul publikasi',
Volume: 'Volume',
Issue: 'Edisi',
"Number of pages": 'Jumlah halaman',
ISSN: 'ISSN',
ISBN: 'ISBN',
// "DOI":
Copyright: 'Hak cipta',
Language: 'Bahasa',
"Language of publication": 'Bahasa publikasi',
Section: 'Bagian',
"Publication date": 'Tanggal publikasi',
"Publication year": 'Tahun publikasi',
Year: 'Tahun',
Pages: 'Halaman',
School: 'Sekolah',
Degree: 'Gelar',
Publisher: 'Penerbit',
"Printer/Publisher": 'Pencetak/Penerbit',
"Place of publication": 'Tempat publikasi',
"School location": 'Lokasi sekolah',
"Country of publication": 'Negara publikasi',
"Identifier / keyword": 'Pengidentifikasi/kata kunci',
Subject: 'Subjek',
"Journal subject": 'Subjek jurnal'
},
Čeština: {
"Source type": 'Typ zdroje',
"Document type": 'Typ dokumentu',
// "Record type"
Database: 'Databáze',
Title: 'Název',
Author: 'Autor',
// "Editor":
"Publication title": 'Název publikace',
Volume: 'Svazek',
Issue: 'Číslo',
"Number of pages": 'Počet stránek',
ISSN: 'ISSN',
ISBN: 'ISBN',
// "DOI":
Copyright: 'Copyright',
Language: 'Jazyk',
"Language of publication": 'Jazyk publikace',
Section: 'Sekce',
"Publication date": 'Datum vydání',
"Publication year": 'Rok vydání',
Year: 'Rok',
Pages: 'Strany',
School: 'Instituce',
Degree: 'Stupeň',
Publisher: 'Vydavatel',
"Printer/Publisher": 'Tiskař/vydavatel',
"Place of publication": 'Místo vydání',
"School location": 'Místo instituce',
"Country of publication": 'Země vydání',
"Identifier / keyword": 'Identifikátor/klíčové slovo',
Subject: 'Předmět',
"Journal subject": 'Předmět časopisu'
},
Deutsch: {
"Source type": 'Quellentyp',
"Document type": 'Dokumententyp',
// "Record type"
Database: 'Datenbank',
Title: 'Titel',
Author: 'Autor',
// "Editor":
"Publication title": 'Titel der Publikation',
Volume: 'Band',
Issue: 'Ausgabe',
"Number of pages": 'Seitenanzahl',
ISSN: 'ISSN',
ISBN: 'ISBN',
// "DOI":
Copyright: 'Copyright',
Language: 'Sprache',
"Language of publication": 'Publikationssprache',
Section: 'Bereich',
"Publication date": 'Publikationsdatum',
"Publication year": 'Erscheinungsjahr',
Year: 'Jahr',
Pages: 'Seiten',
School: 'Bildungseinrichtung',
Degree: 'Studienabschluss',
Publisher: 'Herausgeber',
"Printer/Publisher": 'Drucker/Verleger',
"Place of publication": 'Verlagsort',
"School location": 'Standort der Bildungseinrichtung',
"Country of publication": 'Publikationsland',
"Identifier / keyword": 'Identifikator/Schlüsselwort',
Subject: 'Thema',
"Journal subject": 'Zeitschriftenthema'
},
Español: {
"Source type": 'Tipo de fuente',
"Document type": 'Tipo de documento',
// "Record type"
Database: 'Base de datos',
Title: 'Título',
Author: 'Autor',
// "Editor":
"Publication title": 'Título de publicación',
Volume: 'Tomo',
Issue: 'Número',
"Number of pages": 'Número de páginas',
ISSN: 'ISSN',
ISBN: 'ISBN',
// "DOI":
Copyright: 'Copyright',
Language: 'Idioma',
"Language of publication": 'Idioma de la publicación',
Section: 'Sección',
"Publication date": 'Fecha de titulación',
"Publication year": 'Año de publicación',
Year: 'Año',
Pages: 'Páginas',
School: 'Institución',
Degree: 'Título universitario',
Publisher: 'Editorial',
"Printer/Publisher": 'Imprenta/publicista',
"Place of publication": 'Lugar de publicación',
"School location": 'Lugar de la institución',
"Country of publication": 'País de publicación',
"Identifier / keyword": 'Identificador / palabra clave',
Subject: 'Materia',
"Journal subject": 'Materia de la revista'
},
Français: {
"Source type": 'Type de source',
"Document type": 'Type de document',
// "Record type"
Database: 'Base de données',
Title: 'Titre',
Author: 'Auteur',
// "Editor":
"Publication title": 'Titre de la publication',
Volume: 'Volume',
Issue: 'Numéro',
"Number of pages": 'Nombre de pages',
ISSN: 'ISSN',
ISBN: 'ISBN',
// "DOI":
Copyright: 'Copyright',
Language: 'Langue',
"Language of publication": 'Langue de publication',
Section: 'Section',
"Publication date": 'Date du diplôme',
"Publication year": 'Année de publication',
Year: 'Année',
Pages: 'Pages',
"First page": 'Première page',
School: 'École',
Degree: 'Diplôme',
Publisher: 'Éditeur',
"Printer/Publisher": 'Imprimeur/Éditeur',
"Place of publication": 'Lieu de publication',
"School location": "Localisation de l'école",
"Country of publication": 'Pays de publication',
"Identifier / keyword": 'Identificateur / mot-clé',
Subject: 'Sujet',
"Journal subject": 'Sujet de la publication'
},
한국어: {
"Source type": '원본 유형',
"Document type": '문서 형식',
// "Record type"
Database: '데이터베이스',
Title: '제목',
Author: '저자',
// "Editor":
"Publication title": '출판물 제목',
Volume: '권',
Issue: '호',
"Number of pages": '페이지 수',
ISSN: 'ISSN',
ISBN: 'ISBN',
// "DOI":
Copyright: 'Copyright',
Language: '언어',
"Language of publication": '출판 언어',
Section: '섹션',
"Publication date": '출판 날짜',
"Publication year": '출판 연도',
Year: '연도',
Pages: '페이지',
School: '학교',
Degree: '학위',
Publisher: '출판사',
"Printer/Publisher": '인쇄소/출판사',
"Place of publication": '출판 지역',
"School location": '학교 지역',
"Country of publication": '출판 국가',
"Identifier / keyword": '식별자/키워드',
Subject: '주제',
"Journal subject": '저널 주제'
},
Italiano: {
"Source type": 'Tipo di fonte',
"Document type": 'Tipo di documento',
// "Record type"
Database: 'Database',
Title: 'Titolo',
Author: 'Autore',
// "Editor":
"Publication title": 'Titolo pubblicazione',
Volume: 'Volume',
Issue: 'Fascicolo',
"Number of pages": 'Numero di pagine',
ISSN: 'ISSN',
ISBN: 'ISBN',
// "DOI":
Copyright: 'Copyright',
Language: 'Lingua',
"Language of publication": 'Lingua di pubblicazione',
Section: 'Sezione',
"Publication date": 'Data di pubblicazione',
"Publication year": 'Anno di pubblicazione',
Year: 'Anno',
Pages: 'Pagine',
School: 'Istituzione accademica',
Degree: 'Titolo accademico',
Publisher: 'Casa editrice',
"Printer/Publisher": 'Tipografo/Editore',
"Place of publication": 'Luogo di pubblicazione:',
"School location": 'Località istituzione accademica',
"Country of publication": 'Paese di pubblicazione',
"Identifier / keyword": 'Identificativo/parola chiave',
Subject: 'Soggetto',
"Journal subject": 'Soggetto rivista'
},
Magyar: {
"Source type": 'Forrástípus',
"Document type": 'Dokumentum típusa',
// "Record type"
Database: 'Adatbázis',
Title: 'Cím',
Author: 'Szerző',
// "Editor":
"Publication title": 'Publikáció címe',
Volume: 'Kötet',
Issue: 'Szám',
"Number of pages": 'Oldalszám',
ISSN: 'ISSN',
ISBN: 'ISBN',
// "DOI":
Copyright: 'Copyright',
Language: 'Nyelv',
"Language of publication": 'Publikáció nyelve',
Section: 'Rész',
"Publication date": 'Publikáció dátuma',
"Publication year": 'Publikáció éve',
Year: 'Év',
Pages: 'Oldalak',
School: 'Iskola',
Degree: 'Diploma',
Publisher: 'Kiadó',
"Printer/Publisher": 'Nyomda/kiadó',
"Place of publication": 'Publikáció helye',
"School location": 'Iskola helyszíne:',
"Country of publication": 'Publikáció országa',
"Identifier / keyword": 'Azonosító / kulcsszó',
Subject: 'Tárgy',
"Journal subject": 'Folyóirat tárgya'
},
日本語: {
"Source type": 'リソースタイプ',
"Document type": 'ドキュメントのタイプ',
// "Record type"
Database: 'データベース',
Title: 'タイトル',
Author: '著者',
// "Editor":
"Publication title": '出版物のタイトル',
Volume: '巻',
Issue: '号',
"Number of pages": 'ページ数',
ISSN: 'ISSN',
ISBN: 'ISBN',
// "DOI":
Copyright: '著作権',
Language: '言語',
"Language of publication": '出版物の言語',
Section: 'セクション',
"Publication date": '出版日',
"Publication year": '出版年',
Year: '年',
Pages: 'ページ',
School: '学校',
Degree: '学位称号',
Publisher: '出版社',
"Printer/Publisher": '印刷業者/出版社',
"Place of publication": '出版地',
"School location": '学校所在地',
"Country of publication": '出版国',
"Identifier / keyword": '識別子 / キーワード',
Subject: '主題',
"Journal subject": '学術誌の主題'
},
Norsk: {
"Source type": 'Kildetype',
"Document type": 'Dokumenttypeند',
// "Record type"
Database: 'Database',
Title: 'Tittel',
Author: 'Forfatter',
// "Editor":
"Publication title": 'Utgivelsestittel',
Volume: 'Volum',
Issue: 'Utgave',
"Number of pages": 'Antall sider',
ISSN: 'ISSN',
ISBN: 'ISBN',
// "DOI":
Copyright: 'Opphavsrett',
Language: 'Språk',
"Language of publication": 'Utgivelsesspråk',
Section: 'Del',
"Publication date": 'Utgivelsesdato',
"Publication year": 'Utgivelsesår',
Year: 'År',
Pages: 'Sider',
School: 'Skole',
Degree: 'Grad',
Publisher: 'Utgiver',
"Printer/Publisher": 'Trykkeri/utgiver',
"Place of publication": 'Utgivelsessted',
"School location": 'Skolested',
"Country of publication": 'Utgivelsesland',
"Identifier / keyword": 'Identifikator/nøkkelord',
Subject: 'Emne',
"Journal subject": 'Journalemne'
},
Polski: {
"Source type": 'Typ źródła',
"Document type": 'Rodzaj dokumentu',
// "Record type"
Database: 'Baza danych',
Title: 'Tytuł',
Author: 'Autor',
// "Editor":
"Publication title": 'Tytuł publikacji',
Volume: 'Tom',
Issue: 'Wydanie',
"Number of pages": 'Liczba stron',
ISSN: 'ISSN',
ISBN: 'ISBN',
// "DOI":
Copyright: 'Prawa autorskie',
Language: 'Język',
"Language of publication": 'Język publikacji',
Section: 'Rozdział',
"Publication date": 'Data publikacji',
"Publication year": 'Rok publikacji',
Year: 'Rok',
Pages: 'Strony',
School: 'Uczelnia',
Degree: 'Stopień',
Publisher: 'Wydawca',
"Printer/Publisher": 'Drukarnia/wydawnictwo',
"Place of publication": 'Miejsce publikacji',
"School location": 'Lokalizacja uczelni',
"Country of publication": 'Kraj publikacji',
"Identifier / keyword": 'Identyfikator/słowo kluczowe',
Subject: 'Temat',
"Journal subject": 'Tematyka czasopisma'
},
'Português (Brasil)': {
"Source type": 'Tipo de fonte',
"Document type": 'Tipo de documento',
// "Record type"
Database: 'Base de dados',
Title: 'Título',
Author: 'Autor',
// "Editor":
"Publication title": 'Título da publicação',
Volume: 'Volume',
Issue: 'Edição',
"Number of pages": 'Número de páginas',
ISSN: 'ISSN',
ISBN: 'ISBN',
// "DOI":
Copyright: 'Copyright',
Language: 'Idioma',
"Language of publication": 'Idioma de publicação',
Section: 'Seção',
"Publication date": 'Data de publicação',
"Publication year": 'Ano de publicação',
Year: 'Ano',
Pages: 'Páginas',
School: 'Escola',
Degree: 'Graduação',
Publisher: 'Editora',
"Printer/Publisher": 'Editora/selo',
"Place of publication": 'Local de publicação',
"School location": 'Localização da escola',
"Country of publication": 'País de publicação',
"Identifier / keyword": 'Identificador / palavra-chave',
Subject: 'Assunto',
"Journal subject": 'Assunto do periódico'
},
'Português (Portugal)': {
"Source type": 'Tipo de fonte',
"Document type": 'Tipo de documento',
// "Record type"
Database: 'Base de dados',
Title: 'Título',
Author: 'Autor',
// "Editor":
"Publication title": 'Título da publicação',
Volume: 'Volume',
Issue: 'Edição',
"Number of pages": 'Número de páginas',
ISSN: 'ISSN',
ISBN: 'ISBN',
// "DOI":
Copyright: 'Copyright',
Language: 'Idioma',
"Language of publication": 'Idioma de publicação',
Section: 'Secção',
"Publication date": 'Data da publicação',
"Publication year": 'Ano da publicação',
Year: 'Ano',
Pages: 'Páginas',
School: 'Escola',
Degree: 'Licenciatura',
Publisher: 'Editora',
"Printer/Publisher": 'Editora/selo',
"Place of publication": 'Local de publicação',
"School location": 'Localização da escola',
"Country of publication": 'País de publicação',
"Identifier / keyword": 'Identificador / palavra-chave',
Subject: 'Assunto',
"Journal subject": 'Assunto da publicação periódica'
},
Русский: {
"Source type": 'Тип источника',
"Document type": 'Тип документа',
// "Record type"
Database: 'База',
Title: 'Название',
Author: 'Автор',
// "Editor":
"Publication title": 'Название публикации',
Volume: 'Том',
Issue: 'Выпуск',
"Number of pages": 'Число страниц',
ISSN: 'ISSN',
ISBN: 'ISBN',
// "DOI":
Copyright: 'Copyright',
Language: 'Язык',
"Language of publication": 'Язык публикации',
Section: 'Раздел',
"Publication date": 'Дата публикации',
"Publication year": 'Год публикации',
Year: 'Год',
Pages: 'Страницы',
School: 'Учебное заведение',
Degree: 'Степень',
Publisher: 'Издательство',
"Printer/Publisher": 'Типография/издатель',
"Place of publication": 'Место публикации',
"School location": 'Местонахождение учебного заведения',
"Country of publication": 'Страна публикации',
"Identifier / keyword": 'Идентификатор / ключевое слово',
Subject: 'Тема',
"Journal subject": 'Тематика журнала'
},
ไทย: {
"Source type": 'ประเภทของแหล่งข้อมูล',
"Document type": 'ประเภทเอกสาร',
// "Record type"
Database: 'ฐานข้อมูล',
Title: 'ชื่อเรื่อง',
Author: 'ผู้แต่ง',
// "Editor":
"Publication title": 'ชื่อเอกสารสิ่งพิมพ์',
Volume: 'เล่ม',
Issue: 'ฉบับที่',
"Number of pages": 'จำนวนหน้า',
ISSN: 'ISSN',
ISBN: 'ISBN',
// "DOI":
Copyright: 'ลิขสิทธิ์',
Language: 'ภาษา',
"Language of publication": 'ภาษาของเอกสารสิ่งพิมพ์',
Section: 'ส่วน',
"Publication date": 'วันที่เอกสารสิ่งพิมพ์',
"Publication year": 'ปีที่พิมพ์',
Year: 'ปี',
Pages: 'หน้า',
School: 'สถาบันการศึกษา',
Degree: 'ปริญญาบัตร',
Publisher: 'สำนักพิมพ์',
"Printer/Publisher": 'ผู้ตีพิมพ์/ผู้เผยแพร่',
"Place of publication": 'สถานที่พิมพ์',
"School location": 'สถานที่ตั้งของสถาบันการศึกษา',
"Country of publication": 'ประเทศที่พิมพ์',
"Identifier / keyword": 'ตัวบ่งชี้/คำสำคัญ',
Subject: 'หัวเรื่อง',
"Journal subject": 'หัวเรื่องของวารสาร'
},
Türkçe: {
"Source type": 'Yayın türü',
"Document type": 'Belge türü',
// "Record type"
Database: 'Veritabanı',
Title: 'Başlık',
Author: 'Yazar adı',
// "Editor":
"Publication title": 'Yayın adı',
Volume: 'Cilt',
Issue: 'Sayı',
"Number of pages": 'Sayfa sayısı',
ISSN: 'ISSN',
ISBN: 'ISBN',
// "DOI":
Copyright: 'Telif Hakkı',
Language: 'Dil',
"Language of publication": 'Yayın Dili',
Section: 'Bölüm',
"Publication date": 'Yayınlanma tarihi',
"Publication year": 'Yayın Yılı',
Year: 'Yıl',
Pages: 'Sayfalar',
School: 'Okul',
Degree: 'Derece',
Publisher: 'Yayıncı',
"Printer/Publisher": 'Basımevi/Yayınc',
"Place of publication": 'Basım yeri',
"School location": 'Okul konumu',
"Country of publication": 'Yayınlanma ülkesi',
"Identifier / keyword": 'Tanımlayıcı / anahtar kelime',
Subject: 'Konu',
"Journal subject": 'Dergi konusu'
},
'中文(简体)': {
"Source type": '来源类型',
"Document type": '文档类型',
// "Record type"
Database: '数据库',
Title: '标题',
Author: '作者',
// "Editor":
"Publication title": '出版物名称',
Volume: '卷',
Issue: '期',
"Number of pages": '页数',
ISSN: 'ISSN',
ISBN: 'ISBN',
// "DOI":
Copyright: '版权',
Language: '语言',
"Language of publication": '出版物语言',
Section: '章节',
"Publication date": '出版日期',
"Publication year": '出版年份',
Year: '出版年',
Pages: '页',
School: '学校',
Degree: '学位',
Publisher: '出版商',
"Printer/Publisher": '印刷商/出版商',
"Place of publication": '出版物地点',
"School location": '学校地点',
"Country of publication": '出版物国家/地区',
"Identifier / keyword": '标识符/关键字',
Subject: '主题',
"Journal subject": '期刊主题'
},
'中文(繁體)': {
"Source type": '來源類型',
"Document type": '文件類型',
// "Record type"
Database: '資料庫',
Title: '標題',
Author: '作者',
// "Editor":
"Publication title": '出版物名稱',
Volume: '卷期',
Issue: '期',
"Number of pages": '頁數',
ISSN: 'ISSN',
ISBN: 'ISBN',
// "DOI":
Copyright: '著作權',
Language: '語言',
"Language of publication": '出版物語言',
Section: '區段',
"Publication date": '出版日期',
"Publication year": '出版年份',
Year: '年',
Pages: '頁面',
School: '學校',
Degree: '學位',
Publisher: '出版者',
"Printer/Publisher": '印刷者/出版者',
"Place of publication": '出版地',
"School location": '學校地點',
"Country of publication": '出版國家/地區',
"Identifier / keyword": '識別碼/關鍵字',
Subject: '主題',
"Journal subject": '期刊主題'
}
};
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://search.proquest.com/dissertations/docview/251755786/abstract/132B8A749B71E82DBA1/1",
"items": [
{
"itemType": "thesis",
"title": "Beyond Stanislavsky: The influence of Russian modernism on the American theatre",
"creators": [
{
"firstName": "Valleri Jane",
"lastName": "Robinson",
"creatorType": "author"
}
],
"date": "2001",
"abstractNote": "Russian modernist theatre greatly influenced the development of American theatre during the first three decades of the twentieth century. Several developments encouraged the relationships between Russian artists and their American counterparts, including key tours by Russian artists in America, the advent of modernism in the American theatre, the immigration of Eastern Europeans to the United States, American advertising and consumer culture, and the Bolshevik Revolution and all of its domestic and international ramifications. Within each of these major and overlapping developments, Russian culture became increasingly acknowledged and revered by American artists and thinkers, who were seeking new art forms to express new ideas. This study examines some of the most significant contributions of Russian theatre and its artists in the early decades of the twentieth century. Looking beyond the important visit of the Moscow Art Theatre in 1923, this study charts the contributions of various Russian artists and their American supporters.\nCertainly, the influence of Stanislavsky and the Moscow Art Theatre on the modern American theatre has been significant, but theatre historians' attention to his influence has overshadowed the contributions of other Russian artists, especially those who provided non-realistic approaches to theatre. In order to understand the extent to which Russian theatre influenced the American stage, this study focuses on the critics, intellectuals, producers, and touring artists who encouraged interaction between Russians and Americans, and in the process provided the catalyst for American theatrical experimentation. The key figures in this study include some leaders in the Yiddish intellectual and theatrical communities in New York City, Morris Gest and Otto H. Kahn, who imported many important Russian performers for American audiences, and a number of Russian émigré artists, including Jacob Gordin, Jacob Ben-Ami, Benno Schneider, Boris Aronson, and Michel Fokine, who worked in the American theatre during the first three decades of the twentieth century.",
"language": "English",
"libraryCatalog": "ProQuest",
"numPages": "233",
"place": "United States -- Ohio",
"rights": "Database copyright ProQuest LLC; ProQuest does not claim copyright in the individual underlying works.",
"shortTitle": "Beyond Stanislavsky",
"thesisType": "Ph.D.",
"university": "The Ohio State University",
"url": "https://search.proquest.com/dissertations/docview/251755786/abstract/132B8A749B71E82DBA1/1",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf",
"proxy": false
}
],
"tags": [
{
"tag": "Communication and the arts"
},
{
"tag": "Konstantin"
},
{
"tag": "Konstantin Stanislavsky"
},
{
"tag": "Modernism"
},
{
"tag": "Russian"
},
{
"tag": "Stanislavsky"
},
{
"tag": "Theater"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://search.proquest.com/docview/213445241",
"items": [
{
"itemType": "journalArticle",
"title": "Peacemaking: moral & policy challenges for a new world // Review",
"creators": [
{
"firstName": "Gerald F.",
"lastName": "Powers",
"creatorType": "author"
},
{
"firstName": "Drew",
"lastName": "Christiansen",
"creatorType": "author"
},
{
"firstName": "Robert T.",
"lastName": "Hennemeyer",
"creatorType": "author"
}
],
"date": "May 1995",
"ISSN": "00084697",
"abstractNote": "In his \"Introduction\" to the book entitled Peacemaking: Moral and Policy Challenges for a New World, Rev. Drew Christiansen points out that the Roman Catholic bishops of the United States have made a clear distinction between the social teachings of the Church--comprising universally binding moral and ethical principles--and the particular positions they have taken on public policy issues--such as those relating to war, peace, justice, human rights and other socio-political matters. While the former are not to be mitigated under any circumstances, the latter, being particular applications, observations and recommendations, can allow for plurality of opinion and diversity of focus in the case of specific social, political and opinion and diversity of focus in the case of specific social, political and moral issues.(f.1) Peacemaking aligns itself with this second category. The objectives of this review essay are the following: to summarize the main topics and themes, of some of the recently-published documents on Catholic political thought, relating to peacemaking and peacekeeping; and to provide a brief critique of their main contents, recommendations and suggestions.\nThe Directions of Peacemaking: As in the earlier documents, so too are the virtues of faith, hope, courage, compassion, humility, kindness, patience, perseverance, civility and charity emphasized, in The Harvest of Justice, as definite aids in peacemaking and peacekeeping. The visions of global common good, social and economic development consistent with securing and nurturing conditions for justice and peace, solidarity among people, as well as cooperation among the industrial rich and the poor developing nations are also emphasized as positive enforcements in the peacemaking and peacekeeping processes. All of these are laudable commitments, so long as they are pursued through completely pacifist perspectives. The Harvest of Justice also emphasizes that, \"as far as possible, justice should be sought through nonviolent means;\" however, \"when sustained attempt at nonviolent action fails, then legitimate political authorities are permitted as a last resort to employ limited force to rescue the innocent and establish justice.\"(f.13) The document also frankly admits that \"the vision of Christian nonviolence is not passive.\"(f.14) Such a position may disturb many pacifists. Even though some restrictive conditions--such as a \"just cause,\" \"comparative justice,\" legitimate authority\" to pursue justice issues, \"right intentions,\" probability of success, proportionality of gains and losses in pursuing justice, and the use of force as last resort--are indicated and specified in the document, the use of violence and devastation are sanctioned, nevertheless, by its reaffirmation of the use of force in setting issues and by its support of the validity of the \"just war\" tradition.\nThe first section, entitled \"Theology, Morality, and Foreign Policy in A New World,\" contains four essays. These deal with the new challenges of peace, the illusion of control, creating peace conditions through a theological framework, as well as moral reasoning and foreign policy after the containment. The second, comprising six essays, is entitled \"Human Rights, Self-Determination, and Sustainable Development.\" These essays deal with effective human rights agenda, religious nationalism and human rights, identity, sovereignty, and self-determination, peace and the moral imperatives of democracy, and political economy of peace. The two essays which comprise the third section, entitled \"Global Institutions,\" relate the strengthening of the global institutions and action for the future. The fourth, entitled \"The Use of Force After the Cold War,\" is both interesting and controversial. Its six essays discuss ethical dilemmas in the use of force, development of the just-war tradition, in a multicultural world, casuistry, pacifism, and the just-war tradition, possibilities and limits of humanitarian intervention, and the challenge of peace and stability in a new international order. The last section, devoted to \"Education and Action for Peace,\" contains three essays, which examine the education for peacemaking, the challenge of conscience and the pastoral response to ongoing challenge of peace.",
"issue": "2",
"language": "English",
"libraryCatalog": "ProQuest",
"pages": "90-100",
"publicationTitle": "Peace Research",
"rights": "Copyright Peace Research May 1995",
"shortTitle": "Peacemaking",
"url": "https://search.proquest.com/docview/213445241/abstract/6A8F72AFAA5E4C45PQ/1",
"volume": "27",
"attachments": [
{
"title": "Full Text Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Book reviews"
},
{
"tag": "Peace"
},
{
"tag": "Political Science--International Relations"
},
{
"tag": "Sciences: Comprehensive Works"
},
{
"tag": "Sociology"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://search.proquest.com/hnpnewyorktimes/docview/122485317/abstract/1357D8A4FC136DF28E3/11",
"items": [
{
"itemType": "newspaperArticle",
"title": "Rethinking Policy on East Germany",
"creators": [
{
"firstName": "F. Stephen",
"lastName": "Larrabee",
"creatorType": "author"
},
{
"firstName": "R. G.",
"lastName": "Livingston",
"creatorType": "author"
}
],
"date": "1984",
"ISSN": "03624331",
"abstractNote": "For some months now, a gradual thaw has been in the making between East Germany and West Germany. So far, the United States has paid scant attention -- an attitude very much in keeping with our neglect of East Germany throughout the postwar period. We should reconsider this policy before things much further -- and should in particular begin to look more closely at what is going on in East Germany.",
"libraryCatalog": "ProQuest",
"pages": "A23",
"place": "New York, N.Y., United States",
"publicationTitle": "New York Times",
"rights": "Copyright New York Times Company Aug 22, 1984",
"url": "https://search.proquest.com/hnpnewyorktimes/docview/122485317/abstract/1357D8A4FC136DF28E3/11",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf",
"proxy": false
}
],
"tags": [
{
"tag": "General Interest Periodicals--United States"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://search.proquest.com/docview/129023293/abstract",
"items": [
{
"itemType": "newspaperArticle",
"title": "THE PRESIDENT AND ALDRICH.: Railway Age Relates Happenings Behind the Scenes Regarding Rate Regulation.",
"creators": [],
"date": "Dec 5, 1905",
"abstractNote": "The Railway Age says: \"The history of the affair (railroad rate question) as it has gone on behind the scenes, is about as follows.",
"language": "English",
"libraryCatalog": "ProQuest",
"pages": "7",
"place": "New York, N.Y., United States",
"publicationTitle": "Wall Street Journal (1889-1922)",
"rights": "Copyright Dow Jones & Company Inc Dec 5, 1905",
"shortTitle": "THE PRESIDENT AND ALDRICH.",
"url": "https://search.proquest.com/docview/129023293/abstract",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf",
"proxy": false
}
],
"tags": [
{
"tag": "Business And Economics--Banking And Finance"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://search.proquest.com/dissertations/pagepdf/251755786/fulltextPDF",
"items": [
{
"itemType": "thesis",
"title": "Beyond Stanislavsky: The influence of Russian modernism on the American theatre",
"creators": [
{
"firstName": "Valleri Jane",
"lastName": "Robinson",
"creatorType": "author"
}
],
"date": "2001",
"abstractNote": "Russian modernist theatre greatly influenced the development of American theatre during the first three decades of the twentieth century. Several developments encouraged the relationships between Russian artists and their American counterparts, including key tours by Russian artists in America, the advent of modernism in the American theatre, the immigration of Eastern Europeans to the United States, American advertising and consumer culture, and the Bolshevik Revolution and all of its domestic and international ramifications. Within each of these major and overlapping developments, Russian culture became increasingly acknowledged and revered by American artists and thinkers, who were seeking new art forms to express new ideas. This study examines some of the most significant contributions of Russian theatre and its artists in the early decades of the twentieth century. Looking beyond the important visit of the Moscow Art Theatre in 1923, this study charts the contributions of various Russian artists and their American supporters.\nCertainly, the influence of Stanislavsky and the Moscow Art Theatre on the modern American theatre has been significant, but theatre historians' attention to his influence has overshadowed the contributions of other Russian artists, especially those who provided non-realistic approaches to theatre. In order to understand the extent to which Russian theatre influenced the American stage, this study focuses on the critics, intellectuals, producers, and touring artists who encouraged interaction between Russians and Americans, and in the process provided the catalyst for American theatrical experimentation. The key figures in this study include some leaders in the Yiddish intellectual and theatrical communities in New York City, Morris Gest and Otto H. Kahn, who imported many important Russian performers for American audiences, and a number of Russian émigré artists, including Jacob Gordin, Jacob Ben-Ami, Benno Schneider, Boris Aronson, and Michel Fokine, who worked in the American theatre during the first three decades of the twentieth century.",
"language": "English",
"libraryCatalog": "ProQuest",
"numPages": "233",
"place": "United States -- Ohio",
"rights": "Database copyright ProQuest LLC; ProQuest does not claim copyright in the individual underlying works.",
"shortTitle": "Beyond Stanislavsky",
"thesisType": "Ph.D.",
"university": "The Ohio State University",
"url": "https://search.proquest.com/dissertations/docview/251755786/abstract/90033A720D9A4A68PQ/1",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf",
"proxy": false
}
],
"tags": [
{
"tag": "Communication and the arts"
},
{
"tag": "Konstantin"
},
{
"tag": "Konstantin Stanislavsky"
},
{
"tag": "Modernism"
},
{
"tag": "Russian"
},
{
"tag": "Stanislavsky"
},
{
"tag": "Theater"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://search.proquest.com/dissertations/docview/251755786/previewPDF",
"items": [
{
"itemType": "thesis",
"title": "Beyond Stanislavsky: The influence of Russian modernism on the American theatre",
"creators": [
{
"firstName": "Valleri Jane",
"lastName": "Robinson",
"creatorType": "author"
}
],
"date": "2001",
"abstractNote": "Russian modernist theatre greatly influenced the development of American theatre during the first three decades of the twentieth century. Several developments encouraged the relationships between Russian artists and their American counterparts, including key tours by Russian artists in America, the advent of modernism in the American theatre, the immigration of Eastern Europeans to the United States, American advertising and consumer culture, and the Bolshevik Revolution and all of its domestic and international ramifications. Within each of these major and overlapping developments, Russian culture became increasingly acknowledged and revered by American artists and thinkers, who were seeking new art forms to express new ideas. This study examines some of the most significant contributions of Russian theatre and its artists in the early decades of the twentieth century. Looking beyond the important visit of the Moscow Art Theatre in 1923, this study charts the contributions of various Russian artists and their American supporters.\nCertainly, the influence of Stanislavsky and the Moscow Art Theatre on the modern American theatre has been significant, but theatre historians' attention to his influence has overshadowed the contributions of other Russian artists, especially those who provided non-realistic approaches to theatre. In order to understand the extent to which Russian theatre influenced the American stage, this study focuses on the critics, intellectuals, producers, and touring artists who encouraged interaction between Russians and Americans, and in the process provided the catalyst for American theatrical experimentation. The key figures in this study include some leaders in the Yiddish intellectual and theatrical communities in New York City, Morris Gest and Otto H. Kahn, who imported many important Russian performers for American audiences, and a number of Russian émigré artists, including Jacob Gordin, Jacob Ben-Ami, Benno Schneider, Boris Aronson, and Michel Fokine, who worked in the American theatre during the first three decades of the twentieth century.",
"language": "English",
"libraryCatalog": "ProQuest",
"numPages": "233",
"place": "United States -- Ohio",
"rights": "Database copyright ProQuest LLC; ProQuest does not claim copyright in the individual underlying works.",
"shortTitle": "Beyond Stanislavsky",
"thesisType": "Ph.D.",
"university": "The Ohio State University",
"url": "https://search.proquest.com/dissertations/docview/251755786/abstract/F77D491D84F4909PQ/1",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf",
"proxy": false
}
],
"tags": [
{
"tag": "Communication and the arts"
},
{
"tag": "Konstantin"
},
{
"tag": "Konstantin Stanislavsky"
},
{
"tag": "Modernism"
},
{
"tag": "Russian"
},
{
"tag": "Stanislavsky"
},
{
"tag": "Theater"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://search.proquest.com/docview/925553601/137CCF69B9E7916BDCF/1",
"items": [
{
"itemType": "journalArticle",
"title": "Microsatellite variation and significant population genetic structure of endangered finless porpoises (Neophocaena phocaenoides) in Chinese coastal waters and the Yangtze River",
"creators": [
{
"firstName": "Lian",
"lastName": "Chen",
"creatorType": "author"
},
{
"firstName": "Shixia",
"lastName": "Xu",
"creatorType": "author"
},
{
"firstName": "Kaiya",
"lastName": "Zhou",
"creatorType": "author"
},
{
"firstName": "Guang",
"lastName": "Yang",
"creatorType": "author"
},
{
"firstName": "Michael W.",
"lastName": "Bruford",
"creatorType": "author"
}
],
"date": "2020",
"DOI": "http://dx.doi.org/10.1007/s00227-010-1420-x",
"ISSN": "0025-3162",
"abstractNote": "The finless porpoise (Neophocaena phocaenoides) inhabits a wide range of tropical and temperate waters of the Indo-Pacific region. Genetic structure of finless porpoises in Chinese waters in three regions (Yangtze River, Yellow Sea, and South China Sea) was analyzed, including the Yangtze finless porpoise which is widely known because of its highly endangered status and unusual adaptation to freshwater. To assist in conservation and management of this species, ten microsatellite loci were used to genotype 125 individuals from the three regions. Contrary to the low genetic diversity revealed in previous mtDNA control region sequence analyses, relatively high levels of genetic variation in microsatellite profiles (HE= 0.732-0.795) were found. Bayesian clustering analysis suggested that finless porpoises in Chinese waters could be described as three distinct genetic groups, which corresponded well to population \"units\" (populations, subspecies, or species) delimited in earlier studies, based on morphological variation, distribution, and genetic analyses. Genetic differentiation between regions was significant, with FST values ranging from 0.07 to 0.137. Immigration rates estimated using a Bayesian method and population ancestry analyses suggested no or very limited gene flow among regional types, even in the area of overlap between types. These results strongly support the classification of porpoises in these regions into distinct evolutionarily significant units, including at least two separate species, and therefore they should be treated as different management units in the design and implementation of conservation programmes. © 2010 Springer-Verlag.",
"issue": "7",
"language": "English",
"libraryCatalog": "ProQuest",
"pages": "1453-1462",
"publicationTitle": "Marine Biology",
"url": "https://search.proquest.com/docview/925553601/137CCF69B9E7916BDCF/1",
"volume": "157",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf",
"proxy": false
}
],
"tags": [
{
"tag": "84.5.22"
},
{
"tag": "84.5.34"
},
{
"tag": "92.7.2"
},
{
"tag": "CABSCLASS"
},
{
"tag": "CABSCLASS"
},
{
"tag": "CABSCLASS"
},
{
"tag": "DEVELOPMENT"
},
{
"tag": "EUKARYOTIC GENETICS"
},
{
"tag": "EUKARYOTIC GENETICS"
},
{
"tag": "Ecological and Population Genetics"
},
{
"tag": "GENETICS AND MOLECULAR BIOLOGY"
},
{
"tag": "GENETICS AND MOLECULAR BIOLOGY"
},
{
"tag": "Growth Regulators"
},
{
"tag": "Mammalian Genetics"
},
{
"tag": "PLANT SCIENCE"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://search.proquest.com/docview/1297954386/citation",
"items": [
{
"itemType": "journalArticle",
"title": "Women's Rights as Human Rights: Toward a Re-Vision of Human Rights",
"creators": [
{
"firstName": "Charlotte",
"lastName": "Bunch",
"creatorType": "author"
}
],
"date": "Nov 1, 1990",
"ISSN": "0275-0392",
"issue": "4",
"language": "English",
"libraryCatalog": "ProQuest",
"pages": "486–498",
"publicationTitle": "Human Rights Quarterly",
"shortTitle": "Women's Rights as Human Rights",
"url": "https://search.proquest.com/docview/1297954386/citation",
"volume": "12",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf",
"proxy": false
}
],
"tags": [
{
"tag": "Law"
},
{
"tag": "Law--Civil Law"
},
{
"tag": "Political Science"
},
{
"tag": "Political Science--Civil Rights"
},
{
"tag": "Social Sciences (General)"
},
{
"tag": "Social Sciences: Comprehensive Works"
},
{
"tag": "Sociology"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.proquest.com/dnsa/docview/1679056926/fulltextPDF/8C1FDDD8E506429BPQ/1",
"items": [
{
"itemType": "letter",
"title": "Kidnapping of Ambassador Dubs: Sitrep No. 3",
"creators": [
{
"lastName": "United States. Department of State",
"creatorType": "recipient",
"fieldMode": 1
},
{
"firstName": "J. Bruce",
"lastName": "Amstutz",
"creatorType": "author"
}
],
"date": "February 14, 1979",
"language": "English",
"letterType": "Cable",
"libraryCatalog": "ProQuest",
"shortTitle": "Kidnapping of Ambassador Dubs",
"url": "https://www.proquest.com/dnsa/docview/1679056926/abstract/F71353DE52F74E3BPQ/1",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf",
"proxy": false
}
],
"tags": [
{
"tag": "Adolph Kidnapping (14 February 1979)"
},
{
"tag": "Afghanistan. National Police"
},
{
"tag": "Dubs"
},
{
"tag": "Police officers"
},
{
"tag": "Soviet advisors"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.proquest.com/dnsa/docview/1679145498/abstract/BA3C959768F54C93PQ/16",
"items": [
{
"itemType": "letter",
"title": "[Dear Colleague Letter regarding Prosecution of Yasir Arafat; Includes Letter to Edwin Meese, List of Senators Signing Letter, and Washington Times Article Dated February 7, 1986]",
"creators": [
{
"firstName": "Joseph R.",
"lastName": "Biden",
"creatorType": "recipient"
},
{
"firstName": "Charles E.",
"lastName": "Grassley",
"creatorType": "author"
},
{
"firstName": "Frank R.",
"lastName": "Lautenberg",
"creatorType": "author"
}
],
"date": "January 24, 1986",
"language": "English",
"libraryCatalog": "ProQuest",
"url": "https://www.proquest.com/dnsa/docview/1679145498/abstract/BA3C959768F54C93PQ/16",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf",
"proxy": false
}
],
"tags": [
{
"tag": "Indictments"
},
{
"tag": "Khartoum Embassy Takeover and Assassinations (1973)"
},
{
"tag": "Washington Post"
},
{
"tag": "Washington Times"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.proquest.com/docview/2240944639/citation/DC389F101A924D14PQ/1",
"items": [
{
"itemType": "book",
"title": "Stereometrie: or the art of practical gauging shewing in two parts, first, divers facil and compendious ways for gauging of tunns and brewers vessels, of all forms and figures, either in whole, or gradualy, form inch to inch: whether the tunn, or vessels bases above and below be homogeneal, or heterogeneal. Parallel and alike-situate, or not. Secondly, the gauging of any wine, brandy, or oyl cask; be the same assum'd as sphæroidal, parabolical, conical, or cylindrical; either full, or partly empty, and at any position of the cask, or altitude of contained liquor: performed either by brief calculation, or instrumental operation. Together with a large table of area's of a circles segments, and other necessary tables, & their excellent utilities and emprovements; with a copious and methodical index of the whole; rendring the work perspicuous and intelligible to mean capacities. / By John Smith, philo-accomptant.",
"creators": [
{
"firstName": "John",
"lastName": "Smith",
"creatorType": "author"
}
],
"date": "1673",
"language": "English",
"libraryCatalog": "ProQuest",
"numPages": "[30], 304 p., [3] leaves of plates :",
"place": "London, England",
"publisher": "printed by William Godbid, for William Shrowsbury, at the Bible in Duck-Lane",
"shortTitle": "Stereometrie",
"url": "https://www.proquest.com/docview/2240944639/citation/DC389F101A924D14PQ/1",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf",
"proxy": false
}
],
"tags": [
{
"tag": "Gaging - Early works to 1800."
},
{
"tag": "Liquors - Gaging and testing - Early works to 1800."
},
{
"tag": "Wine and wine making - Gaging and testing - Early works to 1800."
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.proquest.com/docview/2661071397",
"items": [
{
"itemType": "book",
"title": "A Pragmatic Future for NAEP: Containing Costs and Updating Technologies. Consensus Study Report",
"creators": [],
"date": "2022",
"ISBN": "9780309275323",
"abstractNote": "The National Assessment of Educational Progress (NAEP) -- often called \"The Nation's Report Card\" -- is the largest nationally representative and continuing assessment of what students in public and private schools in the United States know and can do in various subjects and has provided policy makers and the public with invaluable information on U.S. students for more than 50 years. Unique in the information it provides, NAEP is the nation's only mechanism for tracking student achievement over time and comparing trends across states and districts for all students and important student groups (e.g., by race, sex, English learner status, disability status, family poverty status). While the program helps educators, policymakers, and the public understand these educational outcomes, the program has incurred substantially increased costs in recent years and now costs about $175.2 million per year. \"A Pragmatic Future for NAEP: Containing Costs and Updating Technologies\" recommends changes to bolster the future success of the program by identifying areas where federal administrators could take advantage of savings, such as new technological tools and platforms as well as efforts to use local administration and deployment for the tests. Additionally, the report recommends areas where the program should clearly communicate about spending and undertake efforts to streamline management. The report also provides recommendations to increase the visibility and coherence of NAEP's research activities. [Contributors include the Division of Behavioral and Social Sciences and Education; Committee on National Statistics; and Panel on Opportunities for the National Assessment of Educational Progress in an Age of AI and Pervasive Computation: A Pragmatic Vision.]",
"language": "English",
"libraryCatalog": "ProQuest",
"publisher": "National Academies Press500 Fifth Street NW, Washington, DC 20001http://www.nap.eduTel.: 888-624-8373, Fax: 202-334-2793",
"shortTitle": "A Pragmatic Future for NAEP",
"url": "https://www.proquest.com/docview/2661071397",
"attachments": [],
"tags": [
{
"tag": "Elementary Secondary Education"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Michael Berkowitz and Aurimas Vinckevicius^https?://[^/]*science-?direct\.com[^/]*/((science/)?(article/|(journal|bookseries|book|handbook)/\d)|search[?/]|journal/[^/]+/vol)function detectWeb(doc, url) {
if (!doc.body.textContent.trim()) return false;
if ((url.includes("_ob=DownloadURL"))
|| doc.title == "ScienceDirect Login"
|| doc.title == "ScienceDirect - Dummy"
|| (url.includes("/science/advertisement/"))) {
return false;
}
if ((url.includes("pdf")
&& !url.includes("_ob=ArticleURL")
&& !url.includes("/article/"))
|| url.search(/\/(?:journal|bookseries|book|handbook)\//) !== -1) {
if (getArticleList(doc).length > 0) {
return "multiple";
}
else {
return false;
}
}
if (url.search(/\/search[?/]/) != -1) {
if (getArticleList(doc).length > 0) {
return "multiple";
}
else if (doc.querySelector('.LoadingOverlay.show')) {
// monitor and update the toolbar icon when results have loaded
Z.monitorDOMChanges(doc.querySelector('.results-container'));
return false;
}
}
if (!new URL(url).pathname.includes("pdf")) {
// Book sections have the ISBN in the URL
if (url.includes("/B978")) {
return "bookSection";
}
else if (getISBN(doc)) {
if (getArticleList(doc).length) {
return "multiple";
}
else {
return "book";
}
}
else {
return "journalArticle";
}
}
return false;
}
function getPDFLink(doc, onDone) {
// No PDF access ("Get Full Text Elsewhere" or "Check for this article elsewhere")
if (doc.querySelector('.accessContent') || doc.querySelector('.access-options-link-text') || doc.querySelector('#check-access-popover')) {
Zotero.debug("PDF is not available");
onDone();
return;
}
// Some pages still have the PDF link available
var pdfURL = attr(doc, '#pdfLink', 'href');
if (!pdfURL) pdfURL = attr(doc, '[name="citation_pdf_url"]', 'content');
if (pdfURL && pdfURL != '#') {
Z.debug('Found intermediate URL in head: ' + pdfURL);
parseIntermediatePDFPage(pdfURL, onDone);
return;
}
// If intermediate page URL is available, use that directly
var intermediateURL = attr(doc, '.PdfEmbed > object', 'data');
if (intermediateURL) {
Zotero.debug("Found embedded PDF URL: " + intermediateURL);
if (/[?&]isDTMRedir=(Y|true)/i.test(intermediateURL)) {
onDone(intermediateURL);
}
else {
parseIntermediatePDFPage(intermediateURL, onDone);
}
return;
}
// Simulate a click on the "Download PDF" button to open the menu containing the link with the URL
// for the intermediate page, which doesn't seem to be available in the DOM after the page load.
// This is an awful hack, and we should look out for a better way to get the URL, but it beats
// refetching the original source. Works and should be imperceptible to users
// when run from the browser, does not work from non-browser translation
// environments (e.g. Find Available PDFs in the client). In those cases we
// fall back to approach #3: embedded JSON metadata.
var pdfLink = doc.querySelector('#pdfLink');
if (pdfLink) {
// Just in case
try {
pdfLink.click();
intermediateURL = attr(doc, '.PdfDropDownMenu a', 'href');
doc.body.click();
}
catch (e) {
Zotero.debug(e, 2);
}
if (intermediateURL) {
// Zotero.debug("Intermediate PDF URL from drop-down: " + intermediateURL);
parseIntermediatePDFPage(intermediateURL, onDone);
return;
}
}
// On some institutional networks with access to ScienceDirect, the site
// serves JSON metadata probably used to preload dynamic content without a
// separate network request. If we find it, we can take advantage of it to
// grab the PDF url's parts directly, constructing it in the same way that
// the site's frontend JavaScript would.
var json = text(doc, 'script[type="application/json"]');
if (json) {
try {
json = JSON.parse(json);
Zotero.debug("Trying to construct PDF URL from JSON data");
let urlMetadata = json.article.pdfDownload.urlMetadata;
let path = urlMetadata.path;
let pdfExtension = urlMetadata.pdfExtension;
let pii = urlMetadata.pii;
let md5 = urlMetadata.queryParams.md5;
let pid = urlMetadata.queryParams.pid;
if (path && pdfExtension && pii && md5 && pid){
pdfURL = `/${path}/${pii}${pdfExtension}?md5=${md5}&pid=${pid}&isDTMRedir=Y`;
Zotero.debug("Created PDF URL from JSON data: " + pdfURL);
onDone(pdfURL);
return;
}
else {
Zotero.debug("Missing elements in JSON data required for URL creation");
}
}
catch (e) {
Zotero.debug(e, 2);
}
}
// In most cases, appending the suffix seen below to the page's canonical URL
// should get us directly to the PDF; it'll yield a URL similar to the one
// created by the JSON but without the md5 and pid parameters. It should be
// enough to get us through even without those parameters.
pdfURL = attr(doc, 'link[rel="canonical"]', 'href');
if (pdfURL) {
pdfURL = pdfURL + '/pdfft?isDTMRedir=true&download=true';
Zotero.debug("Trying to construct PDF URL from canonical link: " + pdfURL);
onDone(pdfURL);
return;
}
// If none of that worked for some reason, get the URL from the initial HTML,
// where it is present, by fetching the page source again. Hopefully this is
// never actually used.
var url = doc.location.href;
Zotero.debug("Refetching HTML for PDF link");
ZU.processDocuments(url, function (reloadedDoc) {
var intermediateURL = attr(reloadedDoc, '.pdf-download-btn-link', 'href');
// Zotero.debug("Intermediate PDF URL: " + intermediateURL);
if (intermediateURL) {
parseIntermediatePDFPage(intermediateURL, onDone);
return;
}
onDone();
});
}
function parseIntermediatePDFPage(url, onDone) {
// Get the PDF URL from the meta refresh on the intermediate page
Z.debug('Parsing intermediate page to find redirect: ' + url);
ZU.doGet(url, function (html) {
var dp = new DOMParser();
var doc = dp.parseFromString(html, 'text/html');
var pdfURL = attr(doc, 'meta[HTTP-EQUIV="Refresh"]', 'CONTENT');
var otherRedirect = attr(doc, '#redirect-message a', 'href');
// Zotero.debug("Meta refresh URL: " + pdfURL);
if (pdfURL) {
// Strip '0;URL='
var matches = pdfURL.match(/\d+;URL=(.+)/);
pdfURL = matches ? matches[1] : null;
}
else if (otherRedirect) {
pdfURL = otherRedirect;
}
else if (url.includes('.pdf')) {
// Sometimes we are already on the PDF page here and therefore
// can simply use the original url as pdfURL.
pdfURL = url;
}
onDone(pdfURL);
});
}
function getISBN(doc) {
var isbn = ZU.xpathText(doc, '//td[@class="tablePubHead-Info"]//span[@class="txtSmall"]');
if (!isbn) return false;
isbn = isbn.match(/ISBN:\s*([-\d]+)/);
if (!isbn) return false;
return isbn[1].replace(/[-\s]/g, '');
}
function getAbstract(doc) {
var p = ZU.xpath(doc, '//div[contains(@class, "abstract") and not(contains(@class, "abstractHighlights"))]/p');
var paragraphs = [];
for (var i = 0; i < p.length; i++) {
paragraphs.push(ZU.trimInternal(p[i].textContent));
}
return paragraphs.join('\n');
}
// mimetype map for supplementary attachments
// intentionally excluding potentially large files like videos and zip files
var suppTypeMap = {
pdf: 'application/pdf',
// 'zip': 'application/zip',
doc: 'application/msword',
docx: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
xls: 'application/vnd.ms-excel',
xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
};
// attach supplementary information
function attachSupplementary(doc, item) {
var links = ZU.xpath(doc, './/span[starts-with(@class, "MMCvLABEL_SRC")]');
var link, title, url, type, snapshot;
var attachAsLink = Z.getHiddenPref("supplementaryAsLink");
for (var i = 0, n = links.length; i < n; i++) {
link = links[i].firstElementChild;
if (!link || link.nodeName.toUpperCase() !== 'A') continue;
url = link.href;
if (!url) continue;
title = ZU.trimInternal(link.textContent);
if (!title) title = 'Supplementary Data';
type = suppTypeMap[url.substr(url.lastIndexOf('.') + 1).toLowerCase()];
snapshot = !attachAsLink && type;
var attachment = {
title: title,
url: url,
mimeType: type,
snapshot: !!snapshot
};
var replaced = false;
if (snapshot && title.search(/Article plus Supplemental Information/i) != -1) {
// replace full text PDF
for (var j = 0, m = item.attachments.length; j < m; j++) {
if (item.attachments[j].title == "ScienceDirect Full Text PDF") {
attachment.title = "Article plus Supplemental Information";
item.attachments[j] = attachment;
replaced = true;
break;
}
}
}
if (!replaced) {
item.attachments.push(attachment);
}
}
}
function processRIS(doc, text) {
// T2 doesn't appear to hold the short title anymore.
// Sometimes has series title, so I'm mapping this to T3,
// although we currently don't recognize that in RIS
text = text.replace(/^T2\s/mg, 'T3 ');
// Sometimes PY has some nonsensical value. Y2 contains the correct
// date in that case.
if (text.search(/^Y2\s+-\s+\d{4}\b/m) !== -1) {
text = text.replace(/TY\s+-[\S\s]+?ER/g, function (m) {
if (m.search(/^PY\s+-\s+\d{4}\b/m) === -1
&& m.search(/^Y2\s+-\s+\d{4}\b/m) !== -1
) {
return m.replace(/^PY\s+-.*\r?\n/mg, '')
.replace(/^Y2\s+-/mg, 'PY -');
}
return m;
});
}
// Certain authors sometimes have "role" prefixes or are in the wrong order
// e.g. http://www.sciencedirect.com/science/article/pii/S0065260108602506
text = text.replace(/^((?:A[U\d]|ED)\s+-\s+)(?:Editor-in-Chief:\s+)?(.+)/mg,
function (m, pre, name) {
if (!name.includes(',')) {
name = name.trim().replace(/^(.+?)\s+(\S+)$/, '$2, $1');
}
return pre + name;
}
);
// The RIS sometimes has spaces at the beginning of lines, which break things
// as of 20170121 e.g. on http://www.sciencedirect.com/science/article/pii/B9780123706263000508 for A2
// remove them
text = text.replace(/\n\s+/g, "\n");
// Z.debug(text)
var translator = Zotero.loadTranslator("import");
translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7");
translator.setString(text);
translator.setHandler("itemDone", function (obj, item) {
// If the title on the page contains formatting tags, use it instead of the title from the RIS
let titleElem = doc.querySelector('h1 > .title-text');
if (titleElem && titleElem.childNodes.length > 1) {
item.title = titleToString(titleElem);
}
// issue sometimes is set to 0 for single issue volumes (?)
if (item.issue === 0) delete item.issue;
if (item.volume) item.volume = item.volume.replace(/^\s*volume\s*/i, '');
for (var i = 0, n = item.creators.length; i < n; i++) {
// add spaces after initials
if (item.creators[i].firstName) {
item.creators[i].firstName = item.creators[i].firstName
.replace(/\.\s*(?=\S)/g, '. ')
.replace(/\s/g, ' '); // NBSP, etc -> space
}
if (item.creators[i].lastName) {
item.creators[i].lastName = item.creators[i].lastName
.replace(/\s/g, ' ');
}
// fix all uppercase lastnames
if (item.creators[i].lastName.toUpperCase() == item.creators[i].lastName) {
item.creators[i].lastName = item.creators[i].lastName.charAt(0) + item.creators[i].lastName.slice(1).toLowerCase();
}
}
// abstract is not included with the new export form. Scrape from page
if (!item.abstractNote) {
item.abstractNote = getAbstract(doc);
}
if (item.abstractNote) {
item.abstractNote = item.abstractNote.replace(/^(Abstract|Summary)[\s:\n]*/, "");
}
item.attachments.push({
title: "ScienceDirect Snapshot",
document: doc
});
// attach supplementary data
if (Z.getHiddenPref && Z.getHiddenPref("attachSupplementary")) {
try { // don't fail if we can't attach supplementary data
attachSupplementary(doc, item);
}
catch (e) {
Z.debug("Error attaching supplementary information.");
Z.debug(e);
}
}
if (item.notes[0]) {
item.abstractNote = item.notes[0].note;
item.notes = [];
}
if (item.abstractNote) {
item.abstractNote = item.abstractNote.replace(/^\s*(?:abstract|(publisher\s+)?summary)\s+/i, '');
}
if (item.DOI) {
item.DOI = item.DOI.replace(/^doi:\s+/i, '');
}
if (item.ISBN && !ZU.cleanISBN(item.ISBN)) delete item.ISBN;
if (item.ISSN && !ZU.cleanISSN(item.ISSN)) delete item.ISSN;
item.language = item.language || attr(doc, 'article[role="main"]', 'lang');
if (item.url && item.url.substr(0, 2) == "//") {
item.url = "https:" + item.url;
}
getPDFLink(doc, function (pdfURL) {
if (pdfURL) {
item.attachments.push({
title: 'ScienceDirect Full Text PDF',
url: pdfURL,
mimeType: 'application/pdf',
proxy: false
});
}
item.complete();
});
});
translator.translate();
}
function titleToString(titleElem) {
let title = '';
for (let node of titleElem.childNodes) {
// Wrap italics within the title in <i> for CiteProc
if (node.nodeName === 'EM') {
title += '<i>' + node.textContent + '</i>';
}
else {
title += node.textContent;
}
}
return title;
}
function getArticleList(doc) {
let articlePaths = [
'//table[@class="resultRow"]/tbody/tr/td[2]/a',
'//table[@class="resultRow"]/tbody/tr/td[2]/h3/a',
'//td[@class="nonSerialResultsList"]/h3/a',
'//div[@id="bodyMainResults"]//li[contains(@class,"title")]//a',
'//h2//a[contains(@class, "result-list-title-link")]',
'//ol[contains(@class, "article-list") or contains(@class, "article-list-items")]//a[contains(@class, "article-content-title")]',
'//li[contains(@class, "list-chapter")]//h2//a',
'//h4[contains(@class, "chapter-title")]/a'
];
return ZU.xpath(doc, '('
+ articlePaths.join('|')
+ ')[not(contains(text(),"PDF (") or contains(text(), "Related Articles"))]'
);
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
// search page
var itemList = getArticleList(doc);
var items = {};
for (var i = 0, n = itemList.length; i < n; i++) {
items[itemList[i].href] = itemList[i].textContent;
}
Zotero.selectItems(items, function (selectedItems) {
if (!selectedItems) return;
ZU.processDocuments(Object.keys(selectedItems), scrape);
});
}
else {
scrape(doc, url);
}
}
function getFormInput(form) {
var inputs = form.elements;
var values = {};
for (var i = 0; i < inputs.length; i++) {
if (!inputs[i].name) continue;
values[inputs[i].name] = inputs[i].value;
}
return values;
}
function formValuesToPostData(values) {
var s = '';
for (var v in values) {
s += '&' + encodeURIComponent(v) + '=' + encodeURIComponent(values[v]);
}
if (!s) {
Zotero.debug("No values provided for POST string");
return false;
}
return s.substr(1);
}
function scrape(doc, url) {
// On most page the export form uses the POST method
var form = ZU.xpath(doc, '//form[@name="exportCite"]')[0];
if (form) {
Z.debug("Fetching RIS via POST form");
var values = getFormInput(form);
values['citation-type'] = 'RIS';
values.format = 'cite-abs';
ZU.doPost(form.action, formValuesToPostData(values), function (text) {
processRIS(doc, text);
});
return;
}
// On newer pages, there is an GET formular which is only there if
// the user click on the export button, but we know how the url
// in the end will be built.
form = ZU.xpath(doc, '//div[@id="export-citation"]//button')[0];
if (form) {
Z.debug("Fetching RIS via GET form (new)");
var pii = ZU.xpathText(doc, '//meta[@name="citation_pii"]/@content');
if (!pii) {
Z.debug("not finding pii in metatag; attempting to parse URL");
pii = url.match(/\/pii\/([^#?]+)/);
if (pii) {
pii = pii[1];
}
else {
Z.debug("cannot find pii");
}
}
if (pii) {
let risUrl = '/sdfe/arp/cite?pii=' + pii + '&format=application%2Fx-research-info-systems&withabstract=true';
Z.debug('Fetching RIS using PII: ' + risUrl);
ZU.doGet(risUrl, function (text) {
processRIS(doc, text);
});
return;
}
}
// On some older article pages, there seems to be a different form
// that uses GET
form = doc.getElementById('export-form');
if (form) {
Z.debug("Fetching RIS via GET form (old)");
let risUrl = form.action
+ '?export-format=RIS&export-content=cite-abs';
ZU.doGet(risUrl, function (text) {
processRIS(doc, text);
});
return;
}
throw new Error("Could not scrape metadata via known methods");
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.sciencedirect.com/science/article/pii/S0896627311004430#bib5",
"defer": true,
"items": [
{
"itemType": "journalArticle",
"title": "Solving the Autism Puzzle a Few Pieces at a Time",
"creators": [
{
"lastName": "Schaaf",
"firstName": "Christian P.",
"creatorType": "author"
},
{
"lastName": "Zoghbi",
"firstName": "Huda Y.",
"creatorType": "author"
}
],
"date": "2011-06-09",
"DOI": "10.1016/j.neuron.2011.05.025",
"ISSN": "0896-6273",
"abstractNote": "In this issue, a pair of studies (Levy et al. and Sanders et al.) identify several de novo copy-number variants that together account for 5%–8% of cases of simplex autism spectrum disorders. These studies suggest that several hundreds of loci are likely to contribute to the complex genetic heterogeneity of this group of disorders. An accompanying study in this issue (Gilman et al.), presents network analysis implicating these CNVs in neural processes related to synapse development, axon targeting, and neuron motility.",
"issue": "5",
"journalAbbreviation": "Neuron",
"libraryCatalog": "ScienceDirect",
"pages": "806-808",
"publicationTitle": "Neuron",
"url": "https://www.sciencedirect.com/science/article/pii/S0896627311004430",
"volume": "70",
"attachments": [
{
"title": "ScienceDirect Snapshot",
"mimeType": "text/html"
},
{
"title": "ScienceDirect Full Text PDF",
"mimeType": "application/pdf",
"proxy": false
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.sciencedirect.com/science/article/pii/S016748890800116X",
"items": [
{
"itemType": "journalArticle",
"title": "Mitochondria-dependent apoptosis in yeast",
"creators": [
{
"lastName": "Pereira",
"firstName": "C.",
"creatorType": "author"
},
{
"lastName": "Silva",
"firstName": "R. D.",
"creatorType": "author"
},
{
"lastName": "Saraiva",
"firstName": "L.",
"creatorType": "author"
},
{
"lastName": "Johansson",
"firstName": "B.",
"creatorType": "author"
},
{
"lastName": "Sousa",
"firstName": "M. J.",
"creatorType": "author"
},
{
"lastName": "Côrte-Real",
"firstName": "M.",
"creatorType": "author"
}
],
"date": "2008-07-01",
"DOI": "10.1016/j.bbamcr.2008.03.010",
"ISSN": "0167-4889",
"abstractNote": "Mitochondrial involvement in yeast apoptosis is probably the most unifying feature in the field. Reports proposing a role for mitochondria in yeast apoptosis present evidence ranging from the simple observation of ROS accumulation in the cell to the identification of mitochondrial proteins mediating cell death. Although yeast is unarguably a simple model it reveals an elaborate regulation of the death process involving distinct proteins and most likely different pathways, depending on the insult, growth conditions and cell metabolism. This complexity may be due to the interplay between the death pathways and the major signalling routes in the cell, contributing to a whole integrated response. The elucidation of these pathways in yeast has been a valuable help in understanding the intricate mechanisms of cell death in higher eukaryotes, and of severe human diseases associated with mitochondria-dependent apoptosis. In addition, the absence of obvious orthologues of mammalian apoptotic regulators, namely of the Bcl-2 family, favours the use of yeast to assess the function of such proteins. In conclusion, yeast with its distinctive ability to survive without respiration-competent mitochondria is a powerful model to study the involvement of mitochondria and mitochondria interacting proteins in cell death.",
"issue": "7",
"journalAbbreviation": "Biochimica et Biophysica Acta (BBA) - Molecular Cell Research",
"libraryCatalog": "ScienceDirect",
"pages": "1286-1302",
"publicationTitle": "Biochimica et Biophysica Acta (BBA) - Molecular Cell Research",
"series": "Apoptosis in yeast",
"url": "https://www.sciencedirect.com/science/article/pii/S016748890800116X",
"volume": "1783",
"attachments": [
{
"title": "ScienceDirect Snapshot",
"mimeType": "text/html"
},
{
"title": "ScienceDirect Full Text PDF",
"mimeType": "application/pdf",
"proxy": false
}
],
"tags": [
{
"tag": "Apoptotic regulators"
},
{
"tag": "Bcl-2 family"
},
{
"tag": "Mitochondrial fragmentation"
},
{
"tag": "Mitochondrial outer membrane permeabilization"
},
{
"tag": "Permeability transition pore"
},
{
"tag": "Yeast apoptosis"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.sciencedirect.com/book/9780123694683/computational-materials-engineering",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.sciencedirect.com/science/article/abs/pii/B9780123694683500083",
"items": [
{
"itemType": "bookSection",
"title": "8 - Introduction to Discrete Dislocation Statics and Dynamics",
"creators": [
{
"lastName": "Dierk",
"firstName": "Raabe",
"creatorType": "author"
},
{
"lastName": "Janssens",
"firstName": "KOENRAAD G. F.",
"creatorType": "editor"
},
{
"lastName": "Raabe",
"firstName": "DIERK",
"creatorType": "editor"
},
{
"lastName": "Kozeschnik",
"firstName": "ERNST",
"creatorType": "editor"
},
{
"lastName": "Miodownik",
"firstName": "MARK A.",
"creatorType": "editor"
},
{
"lastName": "Nestler",
"firstName": "BRITTA",
"creatorType": "editor"
}
],
"date": "2007-01-01",
"ISBN": "9780123694683",
"bookTitle": "Computational Materials Engineering",
"extra": "DOI: 10.1016/B978-012369468-3/50008-3",
"libraryCatalog": "ScienceDirect",
"pages": "267-316",
"place": "Burlington",
"publisher": "Academic Press",
"url": "https://www.sciencedirect.com/science/article/pii/B9780123694683500083",
"attachments": [
{
"title": "ScienceDirect Snapshot",
"mimeType": "text/html"
},
{
"title": "ScienceDirect Full Text PDF",
"mimeType": "application/pdf",
"proxy": false
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.sciencedirect.com/science/article/abs/pii/B9780123706263000508",
"items": [
{
"itemType": "bookSection",
"title": "Africa",
"creators": [
{
"lastName": "Meybeck",
"firstName": "M.",
"creatorType": "author"
},
{
"lastName": "Likens",
"firstName": "Gene E.",
"creatorType": "editor"
}
],
"date": "2009-01-01",
"ISBN": "9780123706263",
"abstractNote": "The African continent (30.1million km2) extends from 37°17′N to 34°52S and covers a great variety of climates except the polar climate. Although Africa is often associated to extended arid areas as the Sahara (7million km2) and Kalahari (0.9million km2), it is also characterized by a humid belt in its equatorial part and by few very wet regions as in Cameroon and in Sierra Leone. Some of the largest river basins are found in this continent such as the Congo, also termed Zaire, Nile, Zambezi, Orange, and Niger basins. Common features of Africa river basins are (i) warm temperatures, (ii) general smooth relief due to the absence of recent mountain ranges, except in North Africa and in the Rift Valley, (iii) predominance of old shields and metamorphic rocks with very developed soil cover, and (iv) moderate human impacts on river systems except for the recent spread of river damming. African rivers are characterized by very similar hydrochemical and physical features (ionic contents, suspended particulate matter, or SPM) but differ greatly by their hydrological regimes, which are more developed in this article.",
"bookTitle": "Encyclopedia of Inland Waters",
"extra": "DOI: 10.1016/B978-012370626-3.00050-8",
"libraryCatalog": "ScienceDirect",
"pages": "295-305",
"place": "Oxford",
"publisher": "Academic Press",
"url": "https://www.sciencedirect.com/science/article/pii/B9780123706263000508",
"attachments": [
{
"title": "ScienceDirect Snapshot",
"mimeType": "text/html"
},
{
"title": "ScienceDirect Full Text PDF",
"mimeType": "application/pdf",
"proxy": false
}
],
"tags": [
{
"tag": "Africa"
},
{
"tag": "Damming"
},
{
"tag": "Endorheism"
},
{
"tag": "Human impacts"
},
{
"tag": "River quality"
},
{
"tag": "River regimes"
},
{
"tag": "Sediment fluxes"
},
{
"tag": "Tropical rivers"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.sciencedirect.com/science/article/pii/S0006349512000835",
"defer": true,
"items": [
{
"itemType": "journalArticle",
"title": "Unwrapping of Nucleosomal DNA Ends: A Multiscale Molecular Dynamics Study",
"creators": [
{
"lastName": "Voltz",
"firstName": "Karine",
"creatorType": "author"
},
{
"lastName": "Trylska",
"firstName": "Joanna",
"creatorType": "author"
},
{
"lastName": "Calimet",
"firstName": "Nicolas",
"creatorType": "author"
},
{
"lastName": "Smith",
"firstName": "Jeremy C.",
"creatorType": "author"
},
{
"lastName": "Langowski",
"firstName": "Jörg",
"creatorType": "author"
}
],
"date": "2012-02-22",
"DOI": "10.1016/j.bpj.2011.11.4028",
"ISSN": "0006-3495",
"abstractNote": "To permit access to DNA-binding proteins involved in the control and expression of the genome, the nucleosome undergoes structural remodeling including unwrapping of nucleosomal DNA segments from the nucleosome core. Here we examine the mechanism of DNA dissociation from the nucleosome using microsecond timescale coarse-grained molecular dynamics simulations. The simulations exhibit short-lived, reversible DNA detachments from the nucleosome and long-lived DNA detachments not reversible on the timescale of the simulation. During the short-lived DNA detachments, 9 bp dissociate at one extremity of the nucleosome core and the H3 tail occupies the space freed by the detached DNA. The long-lived DNA detachments are characterized by structural rearrangements of the H3 tail including the formation of a turn-like structure at the base of the tail that sterically impedes the rewrapping of DNA on the nucleosome surface. Removal of the H3 tails causes the long-lived detachments to disappear. The physical consistency of the CG long-lived open state was verified by mapping a CG structure representative of this state back to atomic resolution and performing molecular dynamics as well as by comparing conformation-dependent free energies. Our results suggest that the H3 tail may stabilize the nucleosome in the open state during the initial stages of the nucleosome remodeling process.",
"issue": "4",
"journalAbbreviation": "Biophysical Journal",
"libraryCatalog": "ScienceDirect",
"pages": "849-858",
"publicationTitle": "Biophysical Journal",
"shortTitle": "Unwrapping of Nucleosomal DNA Ends",
"url": "https://www.sciencedirect.com/science/article/pii/S0006349512000835",
"volume": "102",
"attachments": [
{
"title": "ScienceDirect Snapshot",
"mimeType": "text/html"
},
{
"title": "ScienceDirect Full Text PDF",
"mimeType": "application/pdf",
"proxy": false
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.sciencedirect.com/science/article/abs/pii/S014067361362228X",
"items": [
{
"itemType": "journalArticle",
"title": "Reducing waste from incomplete or unusable reports of biomedical research",
"creators": [
{
"lastName": "Glasziou",
"firstName": "Paul",
"creatorType": "author"
},
{
"lastName": "Altman",
"firstName": "Douglas G",
"creatorType": "author"
},
{
"lastName": "Bossuyt",
"firstName": "Patrick",
"creatorType": "author"
},
{
"lastName": "Boutron",
"firstName": "Isabelle",
"creatorType": "author"
},
{
"lastName": "Clarke",
"firstName": "Mike",
"creatorType": "author"
},
{
"lastName": "Julious",
"firstName": "Steven",
"creatorType": "author"
},
{
"lastName": "Michie",
"firstName": "Susan",
"creatorType": "author"
},
{
"lastName": "Moher",
"firstName": "David",
"creatorType": "author"
},
{
"lastName": "Wager",
"firstName": "Elizabeth",
"creatorType": "author"
}
],
"date": "2014-01-18",
"DOI": "10.1016/S0140-6736(13)62228-X",
"ISSN": "0140-6736",
"abstractNote": "Research publication can both communicate and miscommunicate. Unless research is adequately reported, the time and resources invested in the conduct of research is wasted. Reporting guidelines such as CONSORT, STARD, PRISMA, and ARRIVE aim to improve the quality of research reports, but all are much less adopted and adhered to than they should be. Adequate reports of research should clearly describe which questions were addressed and why, what was done, what was shown, and what the findings mean. However, substantial failures occur in each of these elements. For example, studies of published trial reports showed that the poor description of interventions meant that 40–89% were non-replicable; comparisons of protocols with publications showed that most studies had at least one primary outcome changed, introduced, or omitted; and investigators of new trials rarely set their findings in the context of a systematic review, and cited a very small and biased selection of previous relevant trials. Although best documented in reports of controlled trials, inadequate reporting occurs in all types of studies—animal and other preclinical studies, diagnostic studies, epidemiological studies, clinical prediction research, surveys, and qualitative studies. In this report, and in the Series more generally, we point to a waste at all stages in medical research. Although a more nuanced understanding of the complex systems involved in the conduct, writing, and publication of research is desirable, some immediate action can be taken to improve the reporting of research. Evidence for some recommendations is clear: change the current system of research rewards and regulations to encourage better and more complete reporting, and fund the development and maintenance of infrastructure to support better reporting, linkage, and archiving of all elements of research. However, the high amount of waste also warrants future investment in the monitoring of and research into reporting of research, and active implementation of the findings to ensure that research reports better address the needs of the range of research users.",
"issue": "9913",
"journalAbbreviation": "The Lancet",
"libraryCatalog": "ScienceDirect",
"pages": "267-276",
"publicationTitle": "The Lancet",
"url": "https://www.sciencedirect.com/science/article/pii/S014067361362228X",
"volume": "383",
"attachments": [
{
"title": "ScienceDirect Snapshot",
"mimeType": "text/html"
},
{
"title": "ScienceDirect Full Text PDF",
"mimeType": "application/pdf",
"proxy": false
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.sciencedirect.com/science/article/abs/pii/0584853976801316",
"items": [
{
"itemType": "journalArticle",
"title": "The low frequency absorption spectra and assignments of fluoro benzenes",
"creators": [
{
"lastName": "Eaton",
"firstName": "Valerie J.",
"creatorType": "author"
},
{
"lastName": "Pearce",
"firstName": "R. A. R.",
"creatorType": "author"
},
{
"lastName": "Steele",
"firstName": "D.",
"creatorType": "author"
},
{
"lastName": "Tindle",
"firstName": "J. W.",
"creatorType": "author"
}
],
"date": "1976-01-01",
"DOI": "10.1016/0584-8539(76)80131-6",
"ISSN": "0584-8539",
"abstractNote": "The absorption spectra between 400 and 50 cm−1 have been measured for the following compounds; 1,2-C6H4F2; 1,4-C6H4F2; 1,2,4-C6H3F3; 1,3,5-C6H3F3; 1,2,4,5-C6H2F4; 1,2,3,4-C6H2F4 (to 200 cm−1 only), 1,2,3,5,-C6H2F4; C6F5H and C6F6. Some new Raman data is also presented. Vibrational assignments have been criticallly examine by seeking consistency between assignments for different molecules and by comparison with predicted frequencies. There is clear evidence for a steady reduction in the force constant for the out-of-plane CH deformation with increasing fluorine substitution.",
"issue": "4",
"journalAbbreviation": "Spectrochimica Acta Part A: Molecular Spectroscopy",
"libraryCatalog": "ScienceDirect",
"pages": "663-672",
"publicationTitle": "Spectrochimica Acta Part A: Molecular Spectroscopy",
"url": "https://www.sciencedirect.com/science/article/pii/0584853976801316",
"volume": "32",
"attachments": [
{
"title": "ScienceDirect Snapshot",
"mimeType": "text/html"
},
{
"title": "ScienceDirect Full Text PDF",
"mimeType": "application/pdf",
"proxy": false
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.sciencedirect.com/science/article/abs/pii/0022460X72904348",
"items": [
{
"itemType": "journalArticle",
"title": "The modal density for flexural vibration of thick plates and bars",
"creators": [
{
"lastName": "Nelson",
"firstName": "H. M.",
"creatorType": "author"
}
],
"date": "1972-11-22",
"DOI": "10.1016/0022-460X(72)90434-8",
"ISSN": "0022-460X",
"abstractNote": "The problem of estimating the modal density for flexurally vibrating plates and bars is approached by way of a travelling wave, rather than normal mode, decomposition. This viewpoint leads to simple expressions for modal densities in terms of the system geometry, surface wave velocity and a factor which is a function of the frequency-thickness product. Values of the multiplying factor are presented together with correction factors for existing thin-plate and thin-bar estimates. These factors are shown to involve only Poisson's ratio as a parameter, and to vary only slightly for a Poisson's ratio range of 0·25 to 0·35. The correction curve for plates is shown to be in general agreement with one proposed by Bolotin.",
"issue": "2",
"journalAbbreviation": "Journal of Sound and Vibration",
"libraryCatalog": "ScienceDirect",
"pages": "255-261",
"publicationTitle": "Journal of Sound and Vibration",
"url": "https://www.sciencedirect.com/science/article/pii/0022460X72904348",
"volume": "25",
"attachments": [
{
"title": "ScienceDirect Snapshot",
"mimeType": "text/html"
},
{
"title": "ScienceDirect Full Text PDF",
"mimeType": "application/pdf",
"proxy": false
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.sciencedirect.com/science/article/pii/S2095311916614284",
"items": [
{
"itemType": "journalArticle",
"title": "Increased sink capacity enhances C and N assimilation under drought and elevated CO2 conditions in maize",
"creators": [
{
"lastName": "Zong",
"firstName": "Yu-zheng",
"creatorType": "author"
},
{
"lastName": "Shangguan",
"firstName": "Zhou-ping",
"creatorType": "author"
}
],
"date": "2016-12-01",
"DOI": "10.1016/S2095-3119(16)61428-4",
"ISSN": "2095-3119",
"abstractNote": "The maintenance of rapid growth under conditions of CO2 enrichment is directly related to the capacity of new leaves to use or store the additional assimilated carbon (C) and nitrogen (N). Under drought conditions, however, less is known about C and N transport in C4 plants and the contributions of these processes to new foliar growth. We measured the patterns of C and N accumulation in maize (Zea mays L.) seedlings using 13C and 15N as tracers in CO2 climate chambers (380 or 750 μmol mol−1) under a mild drought stress induced with 10% PEG-6000. The drought stress under ambient conditions decreased the biomass production of the maize plants; however, this effect was reduced under elevated CO2. Compared with the water-stressed maize plants under atmospheric CO2, the treatment that combined elevated CO2 with water stress increased the accumulation of biomass, partitioned more C and N to new leaves as well as enhanced the carbon resource in ageing leaves and the carbon pool in new leaves. However, the C counterflow capability of the roots decreased. The elevated CO2 increased the time needed for newly acquired N to be present in the roots and increased the proportion of new N in the leaves. The maize plants supported the development of new leaves at elevated CO2 by altering the transport and remobilization of C and N. Under drought conditions, the increased activity of new leaves in relation to the storage of C and N sustained the enhanced growth of these plants under elevated CO2.",
"issue": "12",
"journalAbbreviation": "Journal of Integrative Agriculture",
"libraryCatalog": "ScienceDirect",
"pages": "2775-2785",
"publicationTitle": "Journal of Integrative Agriculture",
"url": "https://www.sciencedirect.com/science/article/pii/S2095311916614284",
"volume": "15",
"attachments": [
{
"title": "ScienceDirect Snapshot",
"mimeType": "text/html"
},
{
"title": "ScienceDirect Full Text PDF",
"mimeType": "application/pdf",
"proxy": false
}
],
"tags": [
{
"tag": "allocation"
},
{
"tag": "carbon"
},
{
"tag": "drought"
},
{
"tag": "elevated CO"
},
{
"tag": "nitrogen"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.sciencedirect.com/search?qs=zotero&show=25&sortBy=relevance",
"defer": true,
"items": "multiple"
},
{
"type": "web",
"url": "https://www.sciencedirect.com/journal/le-pharmacien-hospitalier-et-clinicien/vol/52/issue/4",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.sciencedirect.com/handbook/handbook-of-complex-analysis/vol/1/suppl/C",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.sciencedirect.com/bookseries/advances-in-computers/vol/111/suppl/C",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.sciencedirect.com/science/article/pii/S2007471917300571",
"items": [
{
"itemType": "journalArticle",
"title": "Cálculo mental en niños y su relación con habilidades cognitivas",
"creators": [
{
"lastName": "Formoso",
"firstName": "Jesica",
"creatorType": "author"
},
{
"lastName": "Injoque-Ricle",
"firstName": "Irene",
"creatorType": "author"
},
{
"lastName": "Jacubovich",
"firstName": "Silvia",
"creatorType": "author"
},
{
"lastName": "Barreyro",
"firstName": "Juan Pablo",
"creatorType": "author"
}
],
"date": "2017-12-01",
"DOI": "10.1016/j.aipprr.2017.11.004",
"ISSN": "2007-4719",
"abstractNote": "Resumen\nEste trabajo buscó analizar si las variables memoria de trabajo (MT) verbal, MT visoespacial, velocidad de procesamiento y habilidad verbal pueden predecir la habilidad de los niños para el cálculo mental durante la realización de problemas aritméticos simples. Se administraron los subtests Vocabulario y Span de Dígitos del WISC-III; el subtest Casita de Animales del WPPSI-R y una prueba de problemas aritméticos (ad hoc) a 70 niños de 6 años. Un análisis de regresión lineal con el método stepwise mostró que solo la MT visoespacial predijo la variabilidad en las puntuaciones de cálculo mental (t=4.72; p<0.001; β=0.50). Los resultados son contrarios a estudios realizados en adultos y niños mayores en los cuales el mayor peso recae sobre la MT verbal. Es posible que a medida que los niños crecen la automatización de ciertos procesos de conteo y el almacenamiento de hechos aritméticos en la memoria de largo plazo produzca que dependan en mayor medida de la MT verbal para la resolución de este tipo de cálculos.\nThis study aimed to analyze whether verbal working memory (WM), visual-spatial WM, processing speed, and verbal ability predicted children's ability to perform mental arithmetic. Five tests were administered to 70 6-years-old children: the Vocabulary and Digits Span subtests from the WISC-III Intelligence Scale, the Animal Pegs subtest from WPPSI-R, and an arithmetic test (ad hoc). A linear regression analysis showed that only visual-spatial WM predicted the variability in children's scores in the arithmetic test (t=4.72; P<.001; β=.50). These findings contradict studies carried out in adults and older children where verbal WM seemed to play a greater role in the subject's ability to conduct calculations without external aids. It is possible that as they grow older, the automation of certain counting processes, as well as the storage and recovery of arithmetic knowledge from long-term memory will cause them to rely primarily on verbal WM resources.",
"issue": "3",
"journalAbbreviation": "Acta de Investigación Psicológica",
"libraryCatalog": "ScienceDirect",
"pages": "2766-2774",
"publicationTitle": "Acta de Investigación Psicológica",
"url": "https://www.sciencedirect.com/science/article/pii/S2007471917300571",
"volume": "7",
"attachments": [
{
"title": "ScienceDirect Snapshot",
"mimeType": "text/html"
},
{
"title": "ScienceDirect Full Text PDF",
"mimeType": "application/pdf",
"proxy": false
}
],
"tags": [
{
"tag": "Children"
},
{
"tag": "Cálculo mental"
},
{
"tag": "Habilidad verbal"
},
{
"tag": "Memoria de trabajo"
},
{
"tag": "Mental arithmetic"
},
{
"tag": "Niños"
},
{
"tag": "Processing speed"
},
{
"tag": "Velocidad de procesamiento"
},
{
"tag": "Verbal ability"
},
{
"tag": "Working memory"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.sciencedirect.com/search?qs=testing",
"defer": true,
"items": "multiple"
},
{
"type": "web",
"url": "https://www.sciencedirect.com/science/article/pii/S0044848616303660",
"items": [
{
"itemType": "journalArticle",
"title": "Environmental and physiological factors shape the gut microbiota of Atlantic salmon parr (<i>Salmo salar</i> L.)",
"creators": [
{
"lastName": "Dehler",
"firstName": "Carola E.",
"creatorType": "author"
},
{
"lastName": "Secombes",
"firstName": "Christopher J.",
"creatorType": "author"
},
{
"lastName": "Martin",
"firstName": "Samuel A. M.",
"creatorType": "author"
}
],
"date": "2017-01-20",
"DOI": "10.1016/j.aquaculture.2016.07.017",
"ISSN": "0044-8486",
"abstractNote": "Gut microbes are key players in host immune system priming, protection and development, as well as providing nutrients to the host that would be otherwise unavailable. Due to this importance, studies investigating the link between host and microbe are being initiated in farmed fish. The establishment, maintenance and subsequent changes of the intestinal microbiota are central to define fish physiology and nutrition in the future. In fish, unlike mammals, acquiring intestinal microbes is believed to occur around the time of first feeding mainly from the water surrounding them and their microbial composition over time is shaped therefore by their habitat. Here we compare the distal intestine microbiota of Atlantic salmon parr reared in a recirculating laboratory aquarium with that of age matched parr maintained in cage culture in an open freshwater loch environment of a commercial fish farm to establish the microbial profiles in the gut at the freshwater stage and investigate if there is a stable subset of bacteria present regardless of habitat type. We used deep sequencing across two variable regions of the 16S rRNA gene, with a mean read depth of 180,144±12,096 raw sequences per sample. All individual fish used in this study had a minimum of 30,000 quality controlled reads, corresponding to an average of 342±19 Operational Taxonomic Units (OTUs) per sample, which predominantly mapped to the phyla Firmicutes, Proteobacteria, and Tenericutes. The results indicate that species richness is comparable between both treatment groups, however, significant differences were found in the compositions of the gut microbiota between the rearing groups. Furthermore, a core microbiota of 19OTUs was identified, shared by all samples regardless of treatment group, mainly consisting of members of the phyla Proteobacteria, Bacteroidetes and Firmicutes. Core microbiotas of the individual rearing groups were determined (aquarium fish: 19+4 (total 23) OTUs, loch fish: 19+13 (total 32) OTUs), indicating that microbe acquisition or loss is occurring differently in the two habitats, but also that selective forces are acting within the host, offering niches to specific bacterial taxa. The new information gathered in this study by the Illumina MiSeq approach will be useful to understand and define the gut microbiota of healthy Atlantic salmon in freshwater and expand on previous studies using DGGE, TGGE and T-RFPL. Monitoring deviations from these profiles, especially the core microbes which are present regardless of habitat type, might be used in the future as early indicator for intestinal health issues caused by sub optimal feed or infectious diseases in the farm setting.\nStatement of relevance\nThe Microbiome is central to gut health, local immune function and nutrient up take. We have used deep sequencing approach to show differences in rearing conditions of Atlantic salmon. This work is of interest to aquaculture nutritionists.",
"journalAbbreviation": "Aquaculture",
"libraryCatalog": "ScienceDirect",
"pages": "149-157",
"publicationTitle": "Aquaculture",
"series": "Cutting Edge Science in Aquaculture 2015",
"url": "https://www.sciencedirect.com/science/article/pii/S0044848616303660",
"volume": "467",
"attachments": [
{
"title": "ScienceDirect Snapshot",
"mimeType": "text/html"
},
{
"title": "ScienceDirect Full Text PDF",
"mimeType": "application/pdf",
"proxy": false
}
],
"tags": [
{
"tag": "Atlantic salmon"
},
{
"tag": "Gut microbiota"
},
{
"tag": "Next-generation sequencing"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Sean Takats, Michael Berkowitz, Matt Burton and Rintze Zelle^https?://([^/]+\.)?youtube\.com//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2015-2019 Sean Takats, Michael Berkowitz, Matt Burton and Rintze Zelle
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.search(/\/watch\?(?:.*)\bv=[0-9a-zA-Z_-]+/) != -1) {
return "videoRecording";
}
// Search results
/* Testurls:
http://www.youtube.com/user/Zoteron
http://www.youtube.com/playlist?list=PL793CABDF042A9514
http://www.youtube.com/results?search_query=zotero&oq=zotero&aq=f&aqi=g4&aql=&gs_sm=3&gs_upl=60204l61268l0l61445l6l5l0l0l0l0l247l617l1.2.1l4l0
*/
/* currently not working 2020-11-11
if ((url.includes("/results?") || url.includes("/playlist?") || url.includes("/user/"))
&& getSearchResults(doc, true)) {
return "multiple";
} */
return false;
}
function getSearchResults(doc, checkOnly) {
var links = doc.querySelectorAll('a.ytd-video-renderer, a.ytd-playlist-video-renderer');
var items = {},
found = false;
for (var i = 0, n = links.length; i < n; i++) {
var title = ZU.trimInternal(links[i].textContent);
var link = links[i].href;
if (!title || !link) continue;
if (checkOnly) return true;
found = true;
items[link] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) != 'multiple') {
scrape(doc, url);
}
else {
Zotero.selectItems(getSearchResults(doc), function (items) {
if (!items) return;
var ids = [];
for (var i in items) {
ids.push(i);
}
ZU.processDocuments(ids, scrape);
});
}
}
function scrape(doc, url) {
var item = new Zotero.Item("videoRecording");
let jsonLD;
try {
jsonLD = JSON.parse(text(doc, 'script[type="application/ld+json"]'));
}
catch (e) {
jsonLD = {};
}
/* YouTube won't update the meta tags for the user,
* if they open e.g. a suggested video in the same tab.
* Thus we scrape them from screen instead.
*/
item.title = text(doc, '#info-contents h1.title') // Desktop
|| text(doc, '#title')
|| text(doc, '.slim-video-information-title'); // Mobile
// try to scrape only the canonical url, excluding additional query parameters
item.url = url.replace(/^(.+\/watch\?v=[0-9a-zA-Z_-]+).*/, "$1").replace('m.youtube.com', 'www.youtube.com');
item.runningTime = text(doc, '#movie_player .ytp-time-duration') // Desktop
|| text(doc, '.ytm-time-display .time-second'); // Mobile after unmute
if (!item.runningTime && jsonLD.duration) { // Mobile before unmute
let duration = parseInt(jsonLD.duration.substring(2));
let hours = String(Math.floor(duration / 3600)).padStart(2, '0');
let minutes = String(Math.floor(duration % 3600 / 60)).padStart(2, '0');
let seconds = String(duration % 60).padStart(2, '0');
if (duration >= 3600) { // Include hours
item.runningTime = `${hours}:${minutes}:${seconds}`;
}
else { // Just include minutes and seconds
item.runningTime = `${minutes}:${seconds}`;
}
}
item.date = ZU.strToISO(
text(doc, '#info-strings yt-formatted-string') // Desktop
|| attr(doc, 'ytm-factoid-renderer:last-child > div', 'aria-label') // Mobile if description has been opened
) || jsonLD.uploadDate; // Mobile on initial page load
var author = text(doc, '#meta-contents #text-container .ytd-channel-name') // Desktop
|| text(doc, '#upload-info #text-container .ytd-channel-name')
|| text(doc, '.slim-owner-channel-name'); // Mobile
if (author) {
item.creators.push({
lastName: author,
creatorType: "author",
fieldMode: 1
});
}
var description = text(doc, '#description .content')
|| text(doc, '#description')
|| text(doc, 'ytm-expandable-video-description-body-renderer .collapsed-string-container');
if (description) {
item.abstractNote = description;
}
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.youtube.com/watch?v=pq94aBrc0pY",
"defer": true,
"items": [
{
"itemType": "videoRecording",
"title": "Zotero Intro",
"creators": [
{
"lastName": "Zoteron",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "2007-01-01",
"abstractNote": "Zotero is a free, easy-to-use research tool that helps you gather and organize resources (whether bibliography or the full text of articles), and then lets you to annotate, organize, and share the results of your research. It includes the best parts of older reference manager software (like EndNote)—the ability to store full reference information in author, title, and publication fields and to export that as formatted references—and the best parts of modern software such as del.icio.us or iTunes, like the ability to sort, tag, and search in advanced ways. Using its unique ability to sense when you are viewing a book, article, or other resource on the web, Zotero will—on many major research sites—find and automatically save the full reference information for you in the correct fields.",
"libraryCatalog": "YouTube",
"runningTime": "2:51",
"url": "https://www.youtube.com/watch?v=pq94aBrc0pY",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Sebastian Karcher^https?://www\.courtlistener\.com/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2024 Sebastian Karcher
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/opinion/')) {
return 'case';
}
else if (getSearchResults(doc, true)) {
return 'multiple';
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('article > h3 > a');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
async function doWeb(doc, url) {
if (detectWeb(doc, url) == 'multiple') {
let items = await Zotero.selectItems(getSearchResults(doc, false));
if (!items) return;
for (let url of Object.keys(items)) {
await scrape(await requestDocument(url));
}
}
else {
await scrape(doc);
}
}
async function scrape(doc, url = doc.location.href) {
var item = new Zotero.Item('case');
let citeString = text(doc, 'h2');
let title = citeString.match(/^(.+?),\s\d+/);
item.caseName = title ? title[1] : citation;
item.court = text(doc, 'article h3');
item.reporter = text(doc, '.citation .reporter');
item.reporterVolume = text(doc, '.citation .volume');
item.firstPage = text(doc, '.citation .page');
let citation = text(doc, 'center b .citation');
if (!item.reporter && !item.reporterVolume) {
// the reporter elements aren't always tagged. We might have to parse them
// the best version is in the top of the opinion (we always want that for history matching,
// so getting that outside the conditional
// if that's not there, we're parsing from the title of the case
if (!citation) {
citation = citeString.match(/^.+?,\s(\d+.+)/)[1].replace(/\(.+?\)$/, "");
}
let citeExpr = citation.trim().match(/^(\d+)\s((?:[A-Z][a-z]?\.\s?)+(?:[2-3]d)?(?:Supp\.)?)\s(\d{1,4})(,|$)/);
if (citeExpr) {
item.reporterVolume = citeExpr[1];
item.reporter = citeExpr[2];
item.firstPage = citeExpr[3];
}
else {
// if we can't match the reporter elements properly, just write the whole thing to citation.
item.history = citation;
}
}
if (!item.history) {
// if we haven't already written case history, write the part that's not already included in the citation
// there are often stray spaces in either citation, so we need to check for the version without it.
let caseHistory = ZU.xpathText(doc, '//span[@class="meta-data-header" and contains(text(), "Citations:")]/following-sibling::span');
// Z.debug(caseHistory);
if (caseHistory.replace(/\s/g, "").startsWith(citation.replace(/\s/g, ""))
&& !(caseHistory.replace(/\s/g, "") == citation.replace(/\s/g, ""))) {
item.history = caseHistory.trim().replace(/^.+?,/, "");
}
}
// no good selctor for date, author, and docket number, so
let date = ZU.xpathText(doc, '//span[@class="meta-data-header" and contains(text(), "Filed:")]/following-sibling::span');
item.dateDecided = date ? date.trim() : "";
let docket = ZU.xpathText(doc, '//span[@class="meta-data-header" and contains(text(), "Docket Number:")]/following-sibling::span');
item.docketNumber = docket ? docket.trim() : "";
let authors = ZU.xpath(doc, '//span[@class="meta-data-header" and contains(text(), "Author:")]/following-sibling::span');
for (let author of authors) {
item.creators.push(ZU.cleanAuthor(author.textContent.trim(), "author", false));
}
item.url = url.replace(/\/\?.*/, "");
item.attachments.push({ document: doc, title: "Full Text" });
item.extra = "";
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.courtlistener.com/opinion/1872757/gibson-v-bossier-city-general-hosp/?type=o&q=testing&type=o&order_by=score%20desc&stat_Precedential=on",
"items": [
{
"itemType": "case",
"caseName": "Gibson v. Bossier City General Hosp.",
"creators": [],
"dateDecided": "November 26th, 1991",
"court": "Louisiana Court of Appeal",
"docketNumber": "22693-CA, 23002-CA",
"firstPage": "1332",
"reporter": "So.2d",
"reporterVolume": "594",
"url": "https://www.courtlistener.com/opinion/1872757/gibson-v-bossier-city-general-hosp",
"attachments": [
{
"title": "Full Text",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.courtlistener.com/opinion/1611405/blackwell-v-power-test-corp/?type=o&type=o&q=testing&order_by=score+desc&stat_Precedential=on&page=3",
"items": [
{
"itemType": "case",
"caseName": "Blackwell v. Power Test Corp.",
"creators": [
{
"firstName": "Henry Curtis",
"lastName": "Meanor",
"creatorType": "author"
}
],
"dateDecided": "August 19th, 1981",
"court": "District Court, D. New Jersey",
"docketNumber": "Civ. A. 80-2227",
"firstPage": "802",
"reporter": "F.Supp.",
"reporterVolume": "540",
"url": "https://www.courtlistener.com/opinion/1611405/blackwell-v-power-test-corp",
"attachments": [
{
"title": "Full Text",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.courtlistener.com/opinion/108284/griggs-v-duke-power-co/?q=testing",
"items": [
{
"itemType": "case",
"caseName": "Griggs v. Duke Power Co.",
"creators": [
{
"firstName": "Warren Earl",
"lastName": "Burger",
"creatorType": "author"
}
],
"dateDecided": "March 8th, 1971",
"court": "Supreme Court of the United States",
"docketNumber": "124",
"firstPage": "424",
"history": "91 S. Ct. 849, 28 L. Ed. 2d 158, 1971 U.S. LEXIS 134",
"reporter": "U.S.",
"reporterVolume": "401",
"url": "https://www.courtlistener.com/opinion/108284/griggs-v-duke-power-co",
"attachments": [
{
"title": "Full Text",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.courtlistener.com/?q=testing",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.courtlistener.com/opinion/3959231/state-v-martin/?q=State%20v.%20Martin&type=o&order_by=score%20desc&stat_Precedential=on",
"items": [
{
"itemType": "case",
"caseName": "State v. Martin",
"creators": [
{
"firstName": "Robert L.",
"lastName": "Black",
"creatorType": "author"
}
],
"dateDecided": "February 9th, 1983",
"court": "Ohio Court of Appeals",
"docketNumber": "C-820238",
"firstPage": "717",
"history": "20 Ohio App. 3d 172",
"reporter": "N.E.2d",
"reporterVolume": "485",
"url": "https://www.courtlistener.com/opinion/3959231/state-v-martin",
"attachments": [
{
"title": "Full Text",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Sebastian Karcher^https?://(discovery|research)\.ebsco\.com//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2023 Sebastian Karcher
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
const itemRegex = /\/c\/([^/]+)(?:\/search)?\/(?:details|viewer\/pdf)\/([^?]+)/;
function detectWeb(doc, url) {
if (itemRegex.test(url)) {
if (url.includes("/viewer/pdf")) {
return "journalArticle";
}
Z.monitorDOMChanges(doc.querySelector('#page-container'));
let type = text(doc, 'div[class*="article-type"]');
if (type) {
return getType(type);
}
return "book";
}
else if (url.includes("results")) {
Z.monitorDOMChanges(doc.querySelector('#page-container'));
if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
return false;
}
function getType(type) {
// This can probably be fine-tuned, but it'll work for 90% of results
type = type.toLowerCase();
// Z.debug(type)
if (type.includes("article") || type.includes("artikel")) {
return "journalArticle";
}
else {
return "book";
}
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('h2.result-item-title > a');
if (!rows.length) {
rows = doc.querySelectorAll('div[class*="result-item-title"]>a');
}
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
async function doWeb(doc, url) {
if (detectWeb(doc, url) == 'multiple') {
let items = await Zotero.selectItems(getSearchResults(doc, false));
if (items) {
await Promise.all(
Object.keys(items)
.map(url => requestDocument(url).then(scrape))
);
}
}
else {
await scrape(doc, url);
}
}
async function scrape(doc, url = doc.location.href) {
// Z.debug(url);
let itemMatch = url.match(itemRegex);
// Z.debug(itemMatch)
if (itemMatch) {
var recordId = itemMatch[2];
var opid = itemMatch[1];
}
let risURL = `/linkprocessor/v2-ris?recordId=${recordId}&opid=${opid}&lang=en`;
// Z.debug(risURL)
// this won't work always
let pdfURL = `/linkprocessor/v2-pdf?recordId=${recordId}&sourceRecordId=${recordId}&profileIdentifier=${opid}&intent=download&lang=en`;
let risText = await requestText(risURL);
// Z.debug(risText)
let translator = Zotero.loadTranslator('import');
translator.setTranslator('32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7'); // RIS
translator.setString(risText);
translator.setHandler('itemDone', (_obj, item) => {
// the DB gets written to the Archive field
delete item.archive;
//fix single-field person authors
for (let i = 0; i < item.creators.length; i++) {
if (item.creators[i].fieldMode == 1 && item.creators[i].lastName && item.creators[i].lastName.includes(" ")) {
item.creators[i] = ZU.cleanAuthor(item.creators[i].lastName, item.creators[i].creatorType, false);
}
}
item.attachments.push({ url: pdfURL, title: "Full text PDF", mimeType: "application/pdf" });
item.complete();
});
await translator.translate();
}
/** BEGIN TEST CASES **/
/** END TEST CASES **/
100Abe Jellinek^https://www\.nypl\.org/research/research-catalog//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/bib/')) {
return "book";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.nypl-results-item a.title');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, _url) {
let jsonText = Array.from(doc.querySelectorAll('script:not([src])'))
.map(el => el.textContent.trim().replace(/^[^{]*(\{.+\});$/, '$1'))
.find(text => text.startsWith('{'));
let bib = JSON.parse(jsonText).bib;
// it's easiest we get MARC, but some items don't have it
if (bib.annotatedMarc && bib.annotatedMarc.bib.fields.length) {
scrapeMARC(bib.annotatedMarc.bib.fields);
}
else {
scrapeNYPLMetadata(bib);
}
}
function scrapeMARC(fields) {
Z.debug('Using annotated MARC');
// call MARC translator
var translator = Zotero.loadTranslator("import");
translator.setTranslator("a6ee60df-1ddc-4aae-bb25-45e0537be973");
translator.getTranslatorObject(function (marc) {
var record = new marc.record();
var item = new Zotero.Item();
// no leader
var fieldTag, indicators, fieldContent;
for (let field of fields) {
for (let value of field.values) {
let source = value.source;
fieldTag = source.marcTag;
indicators = source.ind1 + source.ind2;
fieldContent = '';
for (let subfield of source.subfields || []) {
fieldContent += marc.subfieldDelimiter + subfield.tag
+ subfield.content;
}
if (!fieldContent) {
fieldContent = source.content || '';
}
record.addField(fieldTag, indicators, fieldContent);
}
}
record.translate(item);
if (item.seriesNumber) {
item.seriesNumber = item.seriesNumber.replace(/^[^0-9]+/, '');
}
item.complete();
});
}
// get the ith element of the array. if the array is null or there is no ith
// element, return the empty string.
function maybe(propertyArray, i = 0) {
return (propertyArray || [])[i] || '';
}
function scrapeNYPLMetadata(bib) {
Z.debug('Using NYPL metadata');
let item = new Zotero.Item('book');
item.title = bib.title[0].split('/')[0]
.replace(' : ', ': ')
.replace(/\.$/, '');
item.abstractNote = maybe(bib.extent);
[item.series, item.seriesNumber] = maybe(bib.seriesStatement).split(';');
item.numberOfVolumes = maybe(item.abstractNote.match(/(\d+) v\./), 1);
item.place = maybe(bib.placeOfPublication).replace(/:\s*$/, '');
item.publisher = maybe(bib.publisherLiteral).replace(/,\s*$/, '');
item.date = ZU.strToISO(maybe(bib.dateString));
item.numPages = maybe(item.abstractNote.match(/(\d+) p/), 1);
item.language = (bib.language[0] || {})['@id'].replace('lang:', '');
item.ISBN = maybe(bib.idIsbn);
item.callNumber = (bib.items || []).map(result => result.shelfMark).join('; ');
for (let creatorLit of bib.creatorLiteral || []) {
creatorLit = creatorLit.replace(/\([^)]+\)/, '');
item.creators.push(ZU.cleanAuthor(creatorLit, 'author', true));
}
for (let creatorLit of bib.contributorLiteral || []) {
creatorLit = creatorLit.replace(/\([^)]+\)/, '');
let contributor = ZU.cleanAuthor(creatorLit, 'contributor', true);
// search for any mention of the contributor's last name right after
// a word that looks like "translation"
let translated = bib.title[0].match(/trans(?:\.|lat(?:ion|ed by))[,:]?\s*([^.,/:]+)/i);
if (translated
&& translated[1].toLowerCase().includes(
contributor.lastName.toLowerCase())) {
contributor.creatorType = 'translator';
}
item.creators.push(contributor);
}
for (let creator of item.creators) {
if (!creator.firstName) {
delete creator.firstName;
creator.fieldMode = 1;
}
}
let uniformTitle = maybe(bib.uniformTitle).trim().replace(/[.,/:]$/, '');
if (uniformTitle && uniformTitle.endsWith('. English')) {
item.extra = 'original-title: '
+ uniformTitle.substring(0, uniformTitle.length - '. English'.length);
}
item.tags = (bib.subjectLiteral || []).map(tag => ({ tag }));
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.nypl.org/research/research-catalog/bib/b10100226",
"items": [
{
"itemType": "book",
"title": "The prison and the prisoner",
"creators": [
{
"firstName": "Dorothy Louise Campbell Culver",
"lastName": "Tompkins",
"creatorType": "author"
}
],
"date": "1972",
"ISBN": "9780877721406",
"callNumber": "JLE 73-1562",
"libraryCatalog": "NYPL Research Catalog",
"numPages": "156",
"place": "Berkeley",
"publisher": "Institute of Governmental Studies, University of California",
"series": "Public policy bibliographies",
"seriesNumber": "1",
"attachments": [],
"tags": [
{
"tag": "Bibliography"
},
{
"tag": "Bibliography"
},
{
"tag": "Prisoners"
},
{
"tag": "Prisons"
},
{
"tag": "United States"
},
{
"tag": "United States"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.nypl.org/research/research-catalog/bib/cb13214660",
"items": [
{
"itemType": "book",
"title": "The fifth line: thoughts of a painter",
"creators": [
{
"firstName": "Steven",
"lastName": "Aalders",
"creatorType": "author"
},
{
"firstName": "Robert van",
"lastName": "Altena",
"creatorType": "contributor"
},
{
"firstName": "Michael",
"lastName": "Ritchie",
"creatorType": "translator"
}
],
"date": "2017",
"ISBN": "9783960981916",
"abstractNote": "271 pages : illustrations (some color) ;",
"callNumber": "ND653.A218 A35 2017g",
"extra": "original-title: Vijfde lijn",
"language": "eng",
"libraryCatalog": "NYPL Research Catalog",
"numPages": "271",
"place": "London",
"publisher": "Koenig Books",
"shortTitle": "The fifth line",
"attachments": [],
"tags": [
{
"tag": "Aalders, Steven, 1959- -- Interviews."
},
{
"tag": "Painters -- Netherlands -- Interviews."
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.nypl.org/research/research-catalog/bib/b12500994",
"items": [
{
"itemType": "book",
"title": "The annals of Tacitus. Book 3",
"creators": [
{
"firstName": "Cornelius",
"lastName": "Tacitus",
"creatorType": "author"
},
{
"firstName": "A. J.",
"lastName": "Woodman",
"creatorType": "author"
},
{
"firstName": "Ronald H.",
"lastName": "Martin",
"creatorType": "author"
}
],
"date": "1996",
"ISBN": "9780521552172",
"callNumber": "JFD 99-2938",
"libraryCatalog": "NYPL Research Catalog",
"numPages": "514",
"place": "New York",
"publisher": "Cambridge University Press",
"series": "Cambridge classical texts and commentaries",
"seriesNumber": "32",
"attachments": [],
"tags": [
{
"tag": "Germanicus"
},
{
"tag": "Germanicus Caesar"
},
{
"tag": "History"
},
{
"tag": "Roman Empire"
},
{
"tag": "Rome"
},
{
"tag": "Tiberius, 14-37"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.nypl.org/research/research-catalog/bib/pb7046437",
"items": [
{
"itemType": "book",
"title": "Rumi and Christ: and sublimity of Rumi's love",
"creators": [
{
"firstName": "Erkan",
"lastName": "Turkmen",
"creatorType": "author"
}
],
"date": "2011",
"ISBN": "9786054336692",
"abstractNote": "83 p. ;",
"callNumber": "PK6482 .T874 2011",
"language": "eng",
"libraryCatalog": "NYPL Research Catalog",
"numPages": "83",
"place": "Konya",
"publisher": "NKM",
"shortTitle": "Rumi and Christ",
"attachments": [],
"tags": [
{
"tag": "Jalāl al-Dīn Rūmī, Maulana, 1207-1273 -- Political and social views."
},
{
"tag": "Jesus Christ."
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.nypl.org/research/research-catalog/bib/pb7648250",
"items": [
{
"itemType": "book",
"title": "ICSL godišnjak međunarodnog susreta bibliotekara slavista u Sarajevu = ICSL yearbook of International Convention of Slavicist Librarians' in Sarajevo",
"creators": [
{
"lastName": "International Convention of Slavicist Librarians",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "2005",
"abstractNote": "v. ;",
"callNumber": "Z672.5 .I5628 2011 (vol-. 6/7)",
"language": "bos",
"libraryCatalog": "NYPL Research Catalog",
"place": "Sarajevo",
"publisher": "IK \"MAGISTRAT\"",
"attachments": [],
"tags": [
{
"tag": "Library science -- Congresses."
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.nypl.org/research/research-catalog/bib/pb4847643",
"items": [
{
"itemType": "book",
"title": "Thomas' calculus: early transcendentals",
"creators": [],
"date": "2006",
"ISBN": "9780536273901",
"abstractNote": "2 v. : ill. ;",
"callNumber": "QA303.2 .T48 2006 vol.2; QA303.2 .T48 2006 vol.1",
"language": "eng",
"libraryCatalog": "NYPL Research Catalog",
"numberOfVolumes": "2",
"place": "Boston, MA",
"publisher": "Pearson Custom Publishing",
"shortTitle": "Thomas' calculus",
"attachments": [],
"tags": [
{
"tag": "Calculus."
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.nypl.org/research/research-catalog/search?q=sierra%20nevada",
"items": "multiple"
}
]
/** END TEST CASES **/
100Roald Frøsig and Abe Jellinek^https?://(www\.)?retsinformation\.dk//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Roald Frøsig and Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
// Retsinformation exposes two types of data: ELI metadata in the HTML and
// custom XML/JSON schema via a separate GET request. ELI is standard, so it
// would be great to use it... but unfortunately, it's inserted client-side
// by React. in order to make this translator work without a hidden browser,
// we'll use the JSON.
function detectWeb(doc, url) {
if (getSearchResults(doc, url, true)) {
return "multiple";
}
else if (url.includes("/eli/")) {
return getType(text(doc, '.m-0'));
}
return false;
}
async function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Z.selectItems(getSearchResults(doc, url), function (selectedItems) {
if (!selectedItems) return;
var urls = [];
for (var i in selectedItems) {
urls.push(i);
}
ZU.processDocuments(urls, scrape);
});
}
else {
await scrape(doc, url);
}
}
function getSearchResults(doc, url, checkOnly) {
var titles = doc.querySelectorAll("a.document-title");
if (checkOnly || !titles.length) return !!titles.length;
var items = {};
for (var i = 0; i < titles.length; i++) {
items[titles[i].href] = ZU.trimInternal(titles[i].textContent);
}
return items;
}
async function scrape(doc, url) {
let jsonURL = url.replace(/\/dan.*/, '').replace('/eli', '/api/document/eli');
// Z.debug(jsonURL)
let post = '{"isRawHtml":false}';
let headers = {
'Content-Type': 'application/json',
Referer: url
};
let apiJSON = await requestJSON(jsonURL, { method: 'POST', headers: headers, body: post });
//Z.debug(apiJSON)
let json = apiJSON[0];
let item = new Zotero.Item(getType(json.shortName));
let signingDate;
let admissionDate;
let firstAdmissionDate;
for (let { displayName: name, displayValue: value } of json.metadata) {
if (name == 'Dato for underskrift') {
signingDate = value;
}
else if (name == 'Dato for indlæggelse') {
admissionDate = value;
}
else if (name == 'Dato for førstegangsindlæggelse') {
firstAdmissionDate = value;
}
}
item.title = json.title;
item.shortTitle = json.popularTitle;
let number = json.shortName;
let date = ZU.strToISO(signingDate || admissionDate || firstAdmissionDate);
if (item.itemType == 'statute') {
item.codeNumber = number;
item.dateEnacted = date;
}
else if (item.itemType == 'case') {
item.docketNumber = number;
item.dateDecided = date;
}
else if (item.itemType == 'bill') {
item.billNumber = number;
item.date = date;
}
if (json.ressort) {
item.creators.push({
creatorType: 'author',
lastName: json.ressort,
fieldMode: 1
});
}
item.url = url;
item.complete();
}
function getType(documentType) {
if (/ADI|AND|BEK|BKI|BST|CIR|CIS|DSK|FIN|KON|LBK|LOV|LTB|PJE|SKR|VEJ|ÅBR/
.test(documentType)) {
return "statute";
}
if (/DOM|AFG|KEN|UDT/.test(documentType)) {
return "case";
}
if (/\d{3}|BSF|Beslutningsforslag/.test(documentType)) {
return "bill";
}
return "webpage";
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.retsinformation.dk/eli/lta/2015/167",
"defer": true,
"items": [
{
"itemType": "statute",
"nameOfAct": "Bekendtgørelse af lov om dag-, fritids- og klubtilbud m.v. til børn og unge (dagtilbudsloven)",
"creators": [
{
"creatorType": "author",
"lastName": "Børne- og Undervisningsministeriet",
"fieldMode": 1
}
],
"dateEnacted": "2015-02-20",
"codeNumber": "LBK nr 167 af 20/02/2015",
"shortTitle": "Dagtilbudsloven",
"url": "https://www.retsinformation.dk/eli/lta/2015/167",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.retsinformation.dk/eli/lta/2013/1490",
"defer": true,
"items": [
{
"itemType": "statute",
"nameOfAct": "Bekendtgørelse om regnskab for folkehøjskoler, efterskoler, husholdningsskoler og håndarbejdsskoler (frie kostskoler), frie grundskoler, private skoler for gymnasiale uddannelser m.v. og produktionsskoler",
"creators": [
{
"creatorType": "author",
"lastName": "Børne- og Undervisningsministeriet",
"fieldMode": 1
}
],
"dateEnacted": "2013-12-16",
"codeNumber": "BEK nr 1490 af 16/12/2013",
"shortTitle": "Regnskabsbekendtgørelse",
"url": "https://www.retsinformation.dk/eli/lta/2013/1490",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.retsinformation.dk/eli/lta/2015/599",
"defer": true,
"items": [
{
"itemType": "statute",
"nameOfAct": "Bekendtgørelse om dagtilbud",
"creators": [
{
"creatorType": "author",
"lastName": "Børne- og Undervisningsministeriet",
"fieldMode": 1
}
],
"dateEnacted": "2015-04-30",
"codeNumber": "BEK nr 599 af 30/04/2015",
"url": "https://www.retsinformation.dk/eli/lta/2015/599",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.retsinformation.dk/eli/ft/20012BB00055",
"defer": true,
"items": [
{
"itemType": "bill",
"title": "Forslag til folketingsbeslutning om bedre økonomiske forhold for skolefritidsordninger på friskoler og private grundskoler",
"creators": [
{
"creatorType": "author",
"lastName": "Folketinget",
"fieldMode": 1
}
],
"date": "2002-01-17",
"billNumber": "2001/2 BSF 55",
"url": "https://www.retsinformation.dk/eli/ft/20012BB00055",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.retsinformation.dk/eli/ft/20091BB00193",
"defer": true,
"items": [
{
"itemType": "bill",
"title": "Forslag til folketingsbeslutning om harmonisering af regler om skolefritidsordninger og fritidshjem efter dagtilbudsloven",
"creators": [
{
"creatorType": "author",
"lastName": "Folketinget",
"fieldMode": 1
}
],
"date": "2010-03-27",
"billNumber": "2009/1 BSF 193",
"url": "https://www.retsinformation.dk/eli/ft/20091BB00193",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.retsinformation.dk/eli/lta/2012/956",
"defer": true,
"items": [
{
"itemType": "statute",
"nameOfAct": "Bekendtgørelse om mindre fartøjer der medtager op til 12 passagerer",
"creators": [
{
"creatorType": "author",
"lastName": "Erhvervsministeriet",
"fieldMode": 1
}
],
"dateEnacted": "2012-09-26",
"codeNumber": "BEK nr 956 af 26/09/2012",
"url": "https://www.retsinformation.dk/eli/lta/2012/956",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.retsinformation.dk/eli/retsinfo/2016/9874",
"defer": true,
"items": [
{
"itemType": "case",
"caseName": "Afslag på aktindsigt i form af dataudtræk efter offentlighedslovens § 11. Dataudtræk kunne ikke foretages ved få og enkle kommandoer",
"creators": [
{
"creatorType": "author",
"lastName": "Folketinget",
"fieldMode": 1
}
],
"dateDecided": "2016-05-08",
"docketNumber": "UDT nr 9874 af 05/08/2016",
"url": "https://www.retsinformation.dk/eli/retsinfo/2016/9874",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.retsinformation.dk/documents?t=huse",
"defer": true,
"items": "multiple"
}
]
/** END TEST CASES **/
100Philipp Zumstein^https?://portal\.dnb\.de/opac(\.htm|/(enhancedSearch|simpleSearch|showFullRecord)\?)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2015 Philipp Zumstein
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
var typeMapping = {
//"Blindendrucke"
Bücher: "book",
//"Elektronische Datenträger"
"Filme/Hörbücher": "videoRecording",
Karten: "map",
//"Medienkombinationen"
//"Mikroformen"
Musiktonträger: "audioRecording",
//"Musiknoten"
Artikel: "journalArticle",
//"Online Ressourcen"
//"Zeitschriften/Serien"
//"Ausgaben/Hefte"
"archivierte Webseiten": "webpage",
//"Gesamttitel Sammlung/Nachlass"
Manuskripte: "manuscript",
Briefe: "letter",
//"Lebensdokumente"
//"Sammlungen"
//"Trägermaterialien (Papiere und Einbände)"
"Bilder/Grafiken": "artwork"
//"Flugblätter"
};
function detectWeb(doc, url) {
if (
(url.includes('method=showFullRecord') || url.includes('/showFullRecord?'))
|| ((url.includes('method=simpleSearch') || url.includes('/simpleSearch?') || url.includes('/enhancedSearch?') || url.includes('method=enhancedSearch'))
&& doc.getElementById('fullRecordTable'))
) {
var type = ZU.xpathText(doc, '//table[@id="fullRecordTable"]/tbody/tr/td/img/@alt');
if (typeMapping[type]) {
return typeMapping[type];
}
else {
return "book";
}
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = ZU.xpath(doc, '//table[@id="searchresult"]//a[contains(@id, "recordLink")]');
for (var i = 0; i < rows.length; i++) {
var href = rows[i].href;
var title = ZU.trimInternal(rows[i].firstChild.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
async function doWeb(doc, url) {
if (detectWeb(doc, url) == 'multiple') {
let items = await Zotero.selectItems(getSearchResults(doc, false));
if (!items) return;
for (let url of Object.keys(items)) {
await scrape(await requestDocument(url));
}
}
else {
await scrape(doc);
}
}
async function scrape(doc) {
var marc = ZU.xpath(doc, '//div[@class="link"]//a[contains(@href, "/about/marcxml")]');
if (marc.length) {
var marcUrl = marc[0].href;
let result = await requestText(marcUrl);
//call MARCXML translator
let translator = Zotero.loadTranslator("import");
translator.setTranslator("edd87d07-9194-42f8-b2ad-997c4c7deefd");
translator.setString(result);
translator.setHandler("itemDone", (_obj, item) => {
finalize(doc, item);
item.complete();
});
await translator.translate();
}
else {
Z.debug("No MARC link found --> Use COinS translator");
// call COinS translator
// eslint-disable-next-line no-redeclare
let translator = Zotero.loadTranslator("web");
translator.setTranslator("05d07af9-105a-4572-99f6-a8e231c0daef");
translator.setDocument(doc);
translator.setHandler("itemDone", (_obj, item) => {
finalize(doc, item);
item.complete();
});
await translator.translate();
}
}
function finalize(doc, item) {
var toc = ZU.xpath(doc, '//a[contains(@title, "Inhaltsverzeichnis")]');
if (toc.length) {
item.attachments.push({
url: toc[0].href,
title: "Table of Contents PDF",
mimeType: "application/pdf"
});
}
var abstract = ZU.xpath(doc, '//a[contains(@title, "Inhaltstext")]');
if (abstract.length) {
item.attachments.push({
url: abstract[0].href,
title: "Abstract",
mimeType: "text/html"
});
}
item.callNumber = "";
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://portal.dnb.de/opac.htm?method=simpleSearch&cqlMode=true&query=idn%3D1029203784",
"items": [
{
"itemType": "book",
"title": "Ausgeplündert, zurückerstattet und entschädigt: Arisierung und Wiedergutmachung in Mannheim",
"creators": [
{
"firstName": "Christiane",
"lastName": "Fritsche",
"creatorType": "author"
},
{
"firstName": "Ulrich",
"lastName": "Nieß",
"creatorType": "author"
},
{
"firstName": "Stadt",
"lastName": "Stadt Mannheim",
"creatorType": "editor"
},
{
"firstName": "Johannes",
"lastName": "Paulmann",
"creatorType": "author"
},
{
"firstName": "Susanne",
"lastName": "Schlösser",
"creatorType": "editor"
}
],
"date": "2013",
"ISBN": "9783897357723",
"edition": "2. Aufl",
"language": "ger",
"libraryCatalog": "Deutsche Nationalbibliothek",
"numPages": "960",
"place": "Ubstadt-Weiher Heidelberg Neustadt a.d.W. Basel",
"publisher": "Verl. Regionalkultur",
"series": "Sonderveröffentlichung des Stadtarchivs Mannheim - Institut für Stadtgeschichte",
"seriesNumber": "Bd. 39",
"shortTitle": "Ausgeplündert, zurückerstattet und entschädigt",
"attachments": [
{
"title": "Table of Contents PDF",
"mimeType": "application/pdf"
},
{
"title": "Abstract",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "(Produktform)Hardback"
},
{
"tag": "(VLB-WN)1558: Hardcover, Softcover / Geschichte/Regionalgeschichte, Ländergeschichte"
},
{
"tag": "Arisierung"
},
{
"tag": "Baden"
},
{
"tag": "Geschichte 1933-1969"
},
{
"tag": "Heimatgeschichte"
},
{
"tag": "Mannheim"
},
{
"tag": "Nachkriegszeit"
},
{
"tag": "Wiedergutmachung"
},
{
"tag": "Zweiter Weltkrieg"
}
],
"notes": [
{
"note": "Literaturangaben"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://portal.dnb.de/opac.htm?method=simpleSearch&cqlMode=true&query=idn%3D1048581292",
"items": [
{
"itemType": "book",
"title": "Effiziente Entwurfsverfahren zur hardwarebasierten Signalverarbeitung elementarer Funktionen für die drahtlose Kommunikation",
"creators": [
{
"firstName": "Jochen",
"lastName": "Rust",
"creatorType": "author"
}
],
"date": "2014",
"ISBN": "9783844027068",
"language": "ger",
"libraryCatalog": "Deutsche Nationalbibliothek",
"numPages": "151",
"place": "Aachen",
"publisher": "Shaker",
"series": "Forschungsberichte aus dem Institut für Theoretische Elektrotechnik und Mikroelektronik, Arbeitsbereich Kommunikationselektronik, Universität Bremen",
"seriesNumber": "Bd. 2",
"attachments": [
{
"title": "Table of Contents PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "(Produktform (spezifisch))Unsewn / adhesive bound"
},
{
"tag": "(Produktform)Paperback / softback"
},
{
"tag": "(VLB-WN)1684: Hardcover, Softcover / Technik/Elektronik, Elektrotechnik, Nachrichtentechnik"
},
{
"tag": "(Zielgruppe)Fachpublikum/ Wissenschaft"
},
{
"tag": "Approximationsalgorithmus"
},
{
"tag": "Digitale Signalverarbeitung"
},
{
"tag": "Digitale Signalverarbeitung"
},
{
"tag": "Drahtloses Sensorsystem"
},
{
"tag": "Elementare Funktion"
},
{
"tag": "Hardwareentwurf"
},
{
"tag": "Hochschulschrift"
},
{
"tag": "Kundenspezifische Schaltung"
},
{
"tag": "Mikroelektronik"
},
{
"tag": "Mobilfunk"
}
],
"notes": [
{
"note": "Zugl.: Bremen, Univ., Diss., 2014"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://portal.dnb.de/opac.htm?query=smith&method=simpleSearch&cqlMode=true",
"items": "multiple"
},
{
"type": "web",
"url": "https://portal.dnb.de/opac.htm?method=simpleSearch&cqlMode=true&query=idn%3D1064805604",
"items": [
{
"itemType": "book",
"title": "Das Adam-Smith-Projekt: Zur Genealogie der liberalen Gouvernementalität",
"creators": [
{
"firstName": "Bastian",
"lastName": "Ronge",
"creatorType": "author"
}
],
"date": "2015",
"ISBN": "9783658060275",
"edition": "Aufl. 2015",
"language": "ger",
"libraryCatalog": "Deutsche Nationalbibliothek",
"place": "Wiesbaden",
"publisher": "Springer Fachmedien Wiesbaden",
"shortTitle": "Das Adam-Smith-Projekt",
"attachments": [],
"tags": [
{
"tag": "(BIC Subject Heading)JPA"
},
{
"tag": "(Produktform)Electronic book text"
},
{
"tag": "(Zielgruppe)Fachpublikum/ Wissenschaft"
},
{
"tag": "(Zielgruppe)Professional/practitioner"
},
{
"tag": "Adam Smith"
},
{
"tag": "Foucault, Michel"
},
{
"tag": "Gouvernementalität"
},
{
"tag": "Liberalismus"
},
{
"tag": "Liberalismus"
},
{
"tag": "Macht"
},
{
"tag": "Michel Foucault"
},
{
"tag": "Politische Philosophie"
},
{
"tag": "Rechtsordnung"
},
{
"tag": "Smith, Adam"
},
{
"tag": "Theorie der Moralität"
},
{
"tag": "Wirtschaftsethik"
}
],
"notes": [
{
"note": "Lizenzpflichtig"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://portal.dnb.de/opac.htm?method=simpleSearch&cqlMode=true&query=idn%3D950884529",
"items": [
{
"itemType": "book",
"title": "Der stimmrechtslose GmbH-Geschäftsanteil",
"creators": [
{
"firstName": "Carsten",
"lastName": "Schäfer",
"creatorType": "author"
}
],
"date": "1997",
"ISBN": "9783504646431",
"language": "ger",
"libraryCatalog": "Deutsche Nationalbibliothek",
"numPages": "402",
"place": "Köln",
"publisher": "O. Schmidt",
"series": "Rechtsfragen der Handelsgesellschaften",
"seriesNumber": "Bd. 91",
"attachments": [
{
"title": "Table of Contents PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Ausschluss"
},
{
"tag": "Geschäftsanteil"
},
{
"tag": "Gesellschafter"
},
{
"tag": "GmbH"
},
{
"tag": "Hochschulschrift"
},
{
"tag": "Stimmrecht"
}
],
"notes": [
{
"note": "Zugl.: Heidelberg, Univ., Diss., 1997"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://portal.dnb.de/opac/simpleSearch?query=test",
"items": "multiple"
},
{
"type": "web",
"url": "https://portal.dnb.de/opac/simpleSearch?query=idn%3D1272086992&cqlMode=true",
"items": [
{
"itemType": "book",
"title": "Den Netten beißen die Hunde: Wie Sie sich Respekt verschaffen, Grenzen setzen und den verdienten Erfolg erlangen - Mit großem \"Bin ich zu nett?\"-Test",
"creators": [
{
"firstName": "Martin",
"lastName": "Wehrle",
"creatorType": "author"
}
],
"date": "2024",
"ISBN": "9783442179046",
"language": "ger",
"libraryCatalog": "Deutsche Nationalbibliothek",
"numPages": "320",
"place": "München",
"publisher": "Goldmann",
"shortTitle": "Den Netten beißen die Hunde",
"attachments": [
{
"title": "Abstract",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "(Produktform)Paperback / softback"
},
{
"tag": "(VLB-WN)2933: Taschenbuch / Sachbücher/Angewandte Psychologie"
},
{
"tag": "Business"
},
{
"tag": "Büro"
},
{
"tag": "Den Letzten beißen die Hunde"
},
{
"tag": "Durchsetzungsvermögen"
},
{
"tag": "Mental Load"
},
{
"tag": "Nein sagen ohne Schuldgefühle"
},
{
"tag": "Partnerschaft Kommunikation"
},
{
"tag": "Sei einzig nicht artig"
},
{
"tag": "Selbstbewusstsein"
},
{
"tag": "Selbstbewustsein stärken"
},
{
"tag": "Selbstrespekt"
},
{
"tag": "Wenn jeder dich mag nimmt keiner dich ernst"
},
{
"tag": "Wertschätzung"
},
{
"tag": "ausgenutzt werden"
},
{
"tag": "ernst genommen werden"
},
{
"tag": "fehlende Anerkennung"
},
{
"tag": "sich durchsetzen"
},
{
"tag": "spiegel bestseller"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Florian Ziche, Sylvain Machefert^https?://[^/]*catalogue\.bnf\.fr/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2010-2024 Florian Ziche, Sylvain Machefert
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
/* Bnf namespace. */
var BnfClass = function () {
// Private members
/* Map MARC responsibility roles to Zotero creator types.
See http://archive.ifla.org/VI/3/p1996-1/appx-c.htm.
*/
function getCreatorType(aut) {
// To avoid an error on certain pages where the item is not well catalogued
if (aut['4'] === undefined) return undefined;
var typeAut = aut['4'].trim();
switch (typeAut) {
case "005":
case "250":
case "275":
case "590": // performer
case "755": // vocalist
return "performer";
case "040":
case "130": // book designer
case "740": // type designer
case "750": // typographer
case "350": // engraver
case "360": // etcher
case "430": // illuminator
case "440": // illustrator
case "510": // lithographer
case "530": // metal engraver
case "600": // photographer
case "705": // sculptor
case "760": // wood engraver
return "artist";
case "070":
case "305":
case "330":
case undefined:
return "author";
case "020":
case "210":
case "212":
return "commenter";
case "180":
return "cartographer";
case "220":
case "340":
return "editor";
case "230":
return "composer";
case "245":
return "inventor";
case "255":
case "695": // scientific advisor
case "727": // thesis advisor
return "counsel";
case "300":
return "director";
case "400": // funder
case "723": // sponsor
return "sponsor";
case "460":
return "interviewee";
case "470":
return "interviewer";
case "480": // librettist
case "520": // lyricist
return "wordsBy";
case "605":
return "presenter";
case "630":
return "producer";
case "635":
return "programmer";
case "660":
return "recipient";
case "090": // author of dialog
case "690": // scenarist
return "scriptwriter";
case "730":
return "translator";
// Ignore (no matching Zotero creatorType):
case "320": // donor
case "610": // printer
case "650": // publisher
return undefined;
// Default
case "205":
default:
return "contributor";
}
}
/* Fix creators (MARC translator is not perfect). */
function getCreators(record, item) {
// Clear creators
item.creators = [];
// Extract creators (700, 701 & 702)
for (let i = 700; i < 703; i++) {
let authorTag = record.getFieldSubfields(i);
for (let j in authorTag) {
let aut = authorTag[j];
let authorText = "";
if (aut.b) {
authorText = aut.a + ", " + aut.b;
}
else {
authorText = aut.a;
}
let type = getCreatorType(aut);
if (type) {
item.creators.push(Zotero.Utilities.cleanAuthor(authorText, type, true));
}
}
}
// Extract corporate creators (710, 711 & 712)
for (let i = 710; i < 713; i++) {
let authorTag = record.getFieldSubfields(i);
for (let j in authorTag) {
if (authorTag[j].a) {
let type = getCreatorType(authorTag[j]);
if (type) {
item.creators.push({
lastName: authorTag[j].a,
creatorType: type,
fieldMode: true
});
}
}
}
}
}
// Add tag, if not present yet
function addTag(item, tag) {
for (var t in item.tags) {
if (item.tags[t] == tag) {
return;
}
}
item.tags.push(tag);
}
// Tagging
function getTags(record, item) {
var pTag = record.getFieldSubfields("600");
if (pTag) {
for (let j in pTag) {
let tagText = false;
let person = pTag[j];
tagText = person.a;
if (person.b) {
tagText += ", " + person.b;
}
if (person.c) {
tagText += ", " + person.c;
}
if (person.f) {
tagText += " (" + person.f + ")";
}
addTag(item, tagText);
}
}
pTag = record.getFieldSubfields("601");
if (pTag) {
for (let j in pTag) {
let tagText = false;
let person = pTag[j];
tagText = person.a;
addTag(item, tagText);
}
}
pTag = record.getFieldSubfields("605");
if (pTag) {
for (let j in pTag) {
let tagText = false;
let person = pTag[j];
tagText = person.a;
addTag(item, tagText);
}
}
pTag = record.getFieldSubfields("606");
if (pTag) {
for (let j in pTag) {
let tagText = false;
let person = pTag[j];
tagText = person.a;
addTag(item, tagText);
}
}
pTag = record.getFieldSubfields("607");
if (pTag) {
for (let j in pTag) {
let tagText = false;
let person = pTag[j];
tagText = person.a;
addTag(item, tagText);
}
}
pTag = record.getFieldSubfields("602");
if (pTag) {
for (let j in pTag) {
let tagText = false;
let person = pTag[j];
tagText = person.a;
if (person.f) {
tagText += " (" + person.f + ")";
}
addTag(item, tagText);
}
}
pTag = record.getFieldSubfields("604");
if (pTag) {
for (let j in pTag) {
let tagText = false;
let person = pTag[j];
tagText = person.a;
if (person.b) {
tagText += ", " + person.b;
}
if (person.f) {
tagText += " (" + person.f + ")";
}
if (person.t) {
tagText += ", " + person.t;
}
addTag(item, tagText);
}
}
}
// Get series (repeatable)
function getSeries(record, item) {
var seriesText = false;
var seriesTag = record.getFieldSubfields("225");
if (seriesTag && seriesTag.length > 1) {
for (let j in seriesTag) {
let series = seriesTag[j];
if (seriesText) {
seriesText += "; ";
}
else {
seriesText = "";
}
seriesText += series.a;
if (series.v) {
seriesText += ", " + series.v;
}
}
if (seriesText) {
delete item.seriesNumber;
item.series = seriesText;
}
}
// Try 461
if (!item.series) {
seriesTag = record.getFieldSubfields("461");
if (seriesTag) {
for (let j in seriesTag) {
let series = seriesTag[j];
if (seriesText) {
seriesText += "; ";
}
else {
seriesText = "";
}
seriesText += series.t;
}
}
if (seriesText) {
delete item.seriesNumber;
item.series = seriesText;
}
}
}
// Add extra text
function addExtra(noteText, extra) {
if (extra) {
if (noteText) {
if (!/\.$/.exec(noteText)) {
noteText += ". ";
}
else {
noteText += " ";
}
}
else {
noteText = "";
}
noteText += Zotero.Utilities.trim(extra);
}
return noteText;
}
// Assemble extra information
function getExtra(record, item) {
var noteText = false;
// Material description
var noteTag = record.getFieldSubfields("215");
if (noteTag) {
for (let j in noteTag) {
let note = noteTag[j];
noteText = addExtra(noteText, note.c);
noteText = addExtra(noteText, note.d);
noteText = addExtra(noteText, note.e);
}
}
// Note
noteTag = record.getFieldSubfields("300");
if (noteTag) {
for (let j in noteTag) {
let note = noteTag[j];
noteText = addExtra(noteText, note.a);
}
}
// Edition history notes
noteTag = record.getFieldSubfields("305");
if (noteTag) {
for (let j in noteTag) {
let note = noteTag[j];
noteText = addExtra(noteText, note.a);
}
}
if (noteText) {
if (!/\.$/.exec(noteText)) {
noteText += ".";
}
item.extra = noteText;
}
}
// Get title from 200
function getTitle(record, item) {
var titleTag = record.getFieldSubfields("200");
if (titleTag) {
titleTag = titleTag[0];
var titleText = titleTag.a;
if (titleTag.e) {
if (!/^[,.:;-]/.exec(titleTag.e)) {
titleText += ": ";
}
titleText += titleTag.e;
}
if (titleTag.h) {
titleText += ", " + titleTag.h;
if (titleTag.i) {
titleText += ": " + titleTag.i;
}
}
else if (titleTag.i) {
titleText += ", " + titleTag.i;
}
item.title = titleText;
}
}
function getCote(record, item) {
item.callNumber = "";
var coteTag = record.getFieldSubfields("930");
if (coteTag.length) {
item.callNumber += coteTag[0].c + "-" + coteTag[0].a;
}
}
// Do BnF specific Unimarc postprocessing
function postprocessMarc(record, newItem) {
// Title
getTitle(record, newItem);
// Fix creators
getCreators(record, newItem);
// Fix callNumber
getCote(record, newItem);
// Store perennial url from 003 as attachment and accession number
var url = record.getField("003");
if (url && url.length > 0 && url[0][1]) {
newItem.attachments.push({
title: 'Lien vers la notice du catalogue',
url: url[0][1],
mimeType: 'text/html',
snapshot: false
});
}
// Country (102a)
record._associateDBField(newItem, "102", "a", "country");
// Try to retrieve volumes/pages from 215d
if (!newItem.pages) {
var dimTag = record.getFieldSubfields("215");
for (let j in dimTag) {
var dim = dimTag[j];
if (dim.a) {
var pages = /[^\d]*(\d+)\s+p\..*/.exec(dim.a);
if (pages) {
newItem.numPages = pages[1];
}
var vols = /[^\d]*(\d+)\s+vol\..*/.exec(dim.a);
if (vols) {
newItem.numberOfVolumes = vols[1];
}
}
}
}
// Series
getSeries(record, newItem);
// Extra
getExtra(record, newItem);
// Tagging
getTags(record, newItem);
// Repository
newItem.libraryCatalog = "BnF Catalogue général (http:// catalogue.bnf.fr)";
}
// Public members
// Get the UNIMARC URL for a given single result page.
this.reformURL = function (url) {
url = url.replace(/(^.*\/ark:\/12148\/cb[0-9]+[a-z]*)(.*$)/, "$1.unimarc");
// Zotero.debug("URL1 "+ url);
return url;
};
// Get the results table from a list page, if any. Looks for // table[@class="ListeNotice"].
this.getResultsTable = function (doc) {
try {
var xPathObject = ZU.xpath(doc, '// div[@class="liste-notices"]');
return xPathObject;
}
catch (x) {
Zotero.debug(x.lineNumber + " " + x.message);
}
return undefined;
};
// Get selectable search items from a list page.
// Loops through //td[@class="mn_partienoticesynthetique"], extracting the single items URLs from
// their onclick attribute, thier titles by assembling the spans for each cell.
this.getSelectedItems = function (doc) {
var items = {};
var found = false;
var rows = ZU.xpath(doc, '//div[@class="liste-notices"]/div[@class="notice-item"]/div[@class="notice-contenu"]');
for (var i = 0; i < rows.length; i++) {
var title = "";
var href = attr(rows[i], 'div[class="notice-synthese"] a', "href");
title = ZU.trim(text(rows[i], 'div[class="notice-synthese"] a'));
var documentYear = text(rows[i], 'span[class="notice-ordre"]');
if (documentYear.length == 6) {
title += " / " + documentYear;
}
if (!href || !title) continue;
found = true;
items[href] = title;
}
return found ? items : false;
};
// Check for Gallica URL (digital version available), if found, set item.url
function checkGallica(record, item) {
var url = record.getFieldSubfields("856");
if (url && url.length > 0 && url[0].u) {
item.url = url[0].u;
}
}
// Process UNIMARC URL.
this.processMarcUrl = function (newDoc, _url) {
// Init MARC record.
// Load MARC
var translator = Zotero.loadTranslator("import");
translator.setTranslator("a6ee60df-1ddc-4aae-bb25-45e0537be973");
translator.getTranslatorObject(function (obj) {
var record = new obj.record();
// Get table cell containing MARC code.
var elmts = ZU.xpath(newDoc, '//div[@class="notice-detail"]/div/div[@class="zone"]');
// Line loop.
var elmt, tag, content;
var ind = "";
for (var i = 0; i < elmts.length; i++) {
elmt = elmts[i];
var line = Zotero.Utilities.superCleanString(elmt.textContent);
if (line.length == 0) {
continue;
}
if (line.substring(0, 6) == " ") {
content += " " + line.substring(6);
continue;
}
else if (tag) {
record.addField(tag, ind, content);
}
line = line.replace(/[_\t\xA0]/g, " "); // nbsp
tag = line.substr(0, 3);
if (tag[0] != "0" || tag[1] != "0") {
ind = line.substr(3, 2);
content = line.substr(5).replace(/\$([a-z]|[0-9])/g, obj.subfieldDelimiter + "$1");
content = content.replace(/ˆ([^‰]+)‰/g, "$1");
}
else if (tag == "000") {
tag = undefined;
record.leader = "0000" + line.substr(8);
}
else {
content = line.substr(3);
}
}
// case last zone
if (tag) {
record.addField(tag, ind, content);
}
// Create item
var newItem = new Zotero.Item();
record.translate(newItem);
// Do specific Unimarc postprocessing
postprocessMarc(record, newItem);
// Check for Gallica URL
checkGallica(record, newItem);
newItem.complete();
});
};
};
/* Global BnfClass object. */
var Bnf = new BnfClass();
/* Translator API implementation. */
var typeMapping = {
"moving image": "film",
text: "book",
"printed text": "book",
"electronic resource": "book",
score: "book",
sound: "audioRecording",
"sound recording": "audioRecording",
"cartographic resource": "map",
"still image": "artwork",
kit: "document",
"modern manuscript or archive": "manuscript",
"coin or medal": "document",
"physical object": "document",
"three dimensional object": "document"
};
function detectWeb(doc, url) {
var resultRegexp = /ark:\/12148\/cb[0-9]+/i;
// Single result ?
if (resultRegexp.test(url)) {
var itemType = attr(doc, 'meta[name="DC.type"][lang="eng"]', "content");
if (typeMapping[itemType]) {
return typeMapping[itemType];
}
else {
return "document";
}
}
// Muliple result ?
else if (Bnf.getResultsTable(doc)) {
return "multiple";
}
// No items
return undefined;
}
function doWeb(doc, url) {
// Check type.
var type = detectWeb(doc, url);
Zotero.debug("type " + type);
if (!type) {
return;
}
// Build array of MARC URLs.
var urls = [];
switch (type) {
case "multiple":
var items = Bnf.getSelectedItems(doc);
if (items) {
// Let user select items
Zotero.selectItems(items, function (items) {
for (var i in items) {
urls.push(Bnf.reformURL(i));
}
if (urls.length > 0) {
// Z.debug(urls)
Zotero.Utilities.processDocuments(urls, function (doc) {
Bnf.processMarcUrl(doc, urls[0]);
});
}
});
}
break;
default:
urls = [Bnf.reformURL(url)];
Zotero.Utilities.processDocuments(urls, function (doc) {
Bnf.processMarcUrl(doc, url);
});
break;
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://catalogue.bnf.fr/ark:/12148/cb40636779s",
"items": [
{
"itemType": "map",
"title": "Scotia Regnum divisum in Partem Septentrionalem et Meridionalem Subdivisas in Comitatus, Vicecomitatus, Provincias, Praefecturas, Dominia et Insulas",
"creators": [
{
"firstName": "Frederick",
"lastName": "De Wit ",
"creatorType": "author"
}
],
"date": "1680",
"extra": "510 x 570. Le titre est en bas et à gauche dans un cartouche monumental décoré d'un Amour. En haut de la carte, deux Amours portent un écu aux armes de l'Ecosse. Vers 1680.",
"language": "lat",
"libraryCatalog": "BnF Catalogue général (http:// catalogue.bnf.fr)",
"place": "S.l.",
"publisher": "s.n.",
"attachments": [
{
"title": "Lien vers la notice du catalogue",
"mimeType": "text/html",
"snapshot": false
}
],
"tags": [
{
"tag": " Écosse, Royaume d' (843-1707) "
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://catalogue.bnf.fr/ark:/12148/cb43664161m",
"items": [
{
"itemType": "book",
"title": "La déesse des petites victoires",
"creators": [
{
"firstName": "Yannick",
"lastName": "Grannec ",
"creatorType": "author"
}
],
"date": "2012",
"ISBN": "9782286093051",
"callNumber": "Tolbiac - Rez de Jardin - Littérature et art - Magasin - 2013-334011",
"extra": "couv. ill. 21 cm. Bibliogr., 3 p.",
"language": "fre",
"libraryCatalog": "BnF Catalogue général (http:// catalogue.bnf.fr)",
"numPages": "468",
"numberOfVolumes": "1",
"place": "Paris",
"publisher": "le Grand livre du mois",
"attachments": [
{
"title": "Lien vers la notice du catalogue",
"mimeType": "text/html",
"snapshot": false
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://catalogue.bnf.fr/ark:/12148/cb39209609w",
"items": [
{
"itemType": "film",
"title": "Problèmes et pratiques : sciences de la vie et de la terre",
"creators": [],
"date": "199",
"distributor": "Centre national de documentation pédagogique",
"extra": "coul. (SECAM), son. Titre de dos : \"Sciences de la vie et de la terre, problèmes et pratiques. Notice réd. d'après un document produit en 1996.",
"language": "fre",
"libraryCatalog": "BnF Catalogue général (http:// catalogue.bnf.fr)",
"shortTitle": "Problèmes et pratiques",
"attachments": [
{
"title": "Lien vers la notice du catalogue",
"mimeType": "text/html",
"snapshot": false
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://catalogue.bnf.fr/ark:/12148/cb40494299f",
"items": [
{
"itemType": "artwork",
"title": "[Recueil. Vues stéréoscopiques de Louis] : [photographie",
"creators": [
{
"lastName": "Louis",
"creatorType": "artist"
}
],
"extra": "formats divers. Comprend deux séries : \"Le Petit Chaperon rouge\" et \"La Belle au Bois Dormant.",
"language": "fre",
"libraryCatalog": "BnF Catalogue général (http:// catalogue.bnf.fr)",
"shortTitle": "[Recueil. Vues stéréoscopiques de Louis]",
"attachments": [
{
"title": "Lien vers la notice du catalogue",
"mimeType": "text/html",
"snapshot": false
}
],
"tags": [
{
"tag": " Figurines "
},
{
"tag": " Perrault , Charles ( 1628-1703 ), La Belle au bois dormant "
},
{
"tag": " Perrault , Charles ( 1628-1703 ), Le Petit Chaperon rouge "
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://catalogue.bnf.fr/ark:/12148/cb39755519v",
"items": [
{
"itemType": "manuscript",
"title": "[3 lettres et 1 carte de visite d'Adolphe Aderer à Adolphe Jullien]",
"creators": [
{
"firstName": "Adolphe",
"lastName": "Aderer ",
"creatorType": "author"
},
{
"firstName": "Adolphe",
"lastName": "Jullien ",
"creatorType": "recipient"
}
],
"language": "fre",
"libraryCatalog": "BnF Catalogue général (http:// catalogue.bnf.fr)",
"place": "1895-1922",
"attachments": [
{
"title": "Lien vers la notice du catalogue",
"mimeType": "text/html",
"snapshot": false
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://catalogue.bnf.fr/ark:/12148/cb40025449j",
"items": [
{
"itemType": "audioRecording",
"title": "The complete D singles collection : the sounds of Houston, Texas",
"creators": [],
"extra": "6 brochures.",
"label": "Bear family records",
"language": "eng",
"libraryCatalog": "BnF Catalogue général (http:// catalogue.bnf.fr)",
"place": "Hambergen (Allemagne)",
"shortTitle": "The complete D singles collection",
"attachments": [
{
"title": "Lien vers la notice du catalogue",
"mimeType": "text/html",
"snapshot": false
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://catalogue.bnf.fr/rechercher.do?motRecherche=test&critereRecherche=0&depart=0&facetteModifiee=ok",
"items": "multiple"
},
{
"type": "web",
"url": "https://catalogue.bnf.fr/ark:/12148/cb410374690.public",
"items": [
{
"itemType": "artwork",
"title": "Les sorcières envahissent la forêt Lespinasse : [affiche",
"creators": [],
"date": "2007",
"extra": "60 x 40 cm.",
"language": "fre",
"libraryCatalog": "BnF Catalogue général (http:// catalogue.bnf.fr)",
"shortTitle": "Les sorcières envahissent la forêt Lespinasse",
"attachments": [
{
"title": "Lien vers la notice du catalogue",
"mimeType": "text/html",
"snapshot": false
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Pieter van der Wees^https?://(uitspraken\.rechtspraak|linkeddata\.overheid)\.nl//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Pieter van der Wees
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
var courtAbbrevs = {
"hoge raad": "HR",
"raad van state": "ABRvS",
"centrale raad van beroep": "CRvB",
"college van beroep voor het bedrijfsleven": "CBb",
gerechtshof: "Hof",
rechtbank: "Rb.",
"raad van beroep": "RvB",
"gerecht in eerste aanleg van": "GiEA",
"gemeenschappelijk hof van justitie": "Gem. Hof",
"van ": ""
};
// ReplaceAll solution from https://stackoverflow.com/questions/15604140/replace-multiple-strings-with-multiple-other-strings
// All keys should be lowercase.
function replaceAll(str, mapObj) {
var re = new RegExp(Object.keys(mapObj).join("|"), "gi");
return str.replace(re, function (matched) {
return mapObj[matched.toLowerCase()];
});
}
var esc = ZU.unescapeHTML;
// Custom cleaning function for scraping, adapted from utilities.js
function cleanTags(x) {
if (x === null) { // account for cases without abstractNote
return undefined;
}
else if (typeof (x) != "string") {
throw new Error("cleanTags: argument must be a string");
}
x = x.replace(/<(\/para|br)[^>]*>/gi, "\n"); // account for abstract newlines
x = x.replace(/<[^>]+>/g, "");
return esc(x);
}
function detectWeb(doc, url) {
if (url.includes('.nl/details') || url.includes('/front/portal/document-viewer')) {
return "case";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
else if (url.includes('/resultaat') && doc.querySelector('app-results')) {
Z.monitorDOMChanges(doc.querySelector('app-results'), { childList: true, subtree: true });
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.rnl-listresults-item-title > a[href*="/details"]');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
async function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
let items = await Zotero.selectItems(getSearchResults(doc, false));
if (items) {
await Promise.all(
Object.keys(items).map(scrape)
);
}
}
else {
await scrape(url);
}
}
async function scrape(url) {
let apiURL = url.includes('/details')
? url.replace('/details', '/api/document/')
: `https://uitspraken.rechtspraak.nl/api/document/?id=${url.match(/ext-id=([^&#]+)/)[1]}`;
let json = await requestJSON(apiURL);
let item = new Zotero.Item("case");
// First, scrape easy properties
item.title = esc(json.Titel); // no party names, unfortunately
item.docketNumber = esc(json.Identifier);
item.dateDecided = ZU.strToISO(json.DatumUitspraak);
item.extra = "Soort: " + json.Type;
item.abstractNote = cleanTags(json.InhoudsindicatieTekst);
item.url = json.DeepLink;
item.shortTitle = '';
// Pursuant to most citation styles (including Leidraad voor juridische auteurs), we abbreviate the court names
var fullCourtName = cleanTags(json.InstantieNaam);
item.court = replaceAll(fullCourtName, courtAbbrevs);
// Because we do not know which reporter the user wants to cite, add them all to abstractNote
item.abstractNote = item.abstractNote.concat("\nVindplaatsen: ", cleanTags(json.Vindplaatsen.join('\n')));
// References go in the History field
item.history = json.FormeleRelatie.map(fr => fr.Tekst).join('; ');
// Add fields of law as tags
for (let { Naam } of json.Rechtsgebieden) {
for (let tag of Naam.split('; ')) {
item.tags.push({ tag });
}
}
// Attachments
item.attachments = [{
url: 'https://uitspraken.rechtspraak.nl/api/pdfdownload/' + item.docketNumber.replace(/:/g, '_'),
title: "Full Text PDF",
mimeType: "application/pdf",
}];
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://uitspraken.rechtspraak.nl/details?id=ECLI:NL:GHDHA:2018:2591",
"items": [
{
"itemType": "case",
"caseName": "ECLI:NL:GHDHA:2018:2591, Gerechtshof Den Haag, 200.178.245/01",
"creators": [],
"dateDecided": "2018-10-09",
"abstractNote": "Klimaatzaak Urgenda. Onrechtmatige daad. Schending zorgplicht ex artikelen 2 en 8 EVRM. Staat moet broeikasgassen nu verder terugdringen. Vonnis bekrachtigd\nVindplaatsen: Rechtspraak.nl\nJM 2018/128 met annotatie van W.Th. Douma\nAB 2018/417 met annotatie van G.A. van der Veen, Ch.W. Backes\nO&A 2018/66\nO&A 2018/51 met annotatie van G.A. van der Veen, T.G. Oztürk\nSEW 2019, afl. 1, p. 35\nJB 2019/10 met annotatie van Sanderink, D.G.J.\nOGR-Updates.nl 2018-0234\nPS-Updates.nl 2018-0814\nJOM 2018/1182\nJOM 2018/1154\nJA 2019/37\nJIN 2019/78 met annotatie van Sanderink, D.G.J.",
"court": "Hof Den Haag",
"docketNumber": "ECLI:NL:GHDHA:2018:2591",
"extra": "Soort: Uitspraak",
"history": "Eerste aanleg: ECLI:NL:RBDHA:2015:7145, Bekrachtiging/bevestiging; Cassatie: ECLI:NL:HR:2019:2006, Bekrachtiging/bevestiging",
"url": "https://deeplink.rechtspraak.nl/uitspraak?id=ECLI:NL:GHDHA:2018:2591",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Civiel recht"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://uitspraken.rechtspraak.nl/details?id=ECLI:NL:PHR:2019:1016",
"items": [
{
"itemType": "case",
"caseName": "ECLI:NL:PHR:2019:1016, Parket bij de Hoge Raad, 18/01333",
"creators": [],
"dateDecided": "2019-10-08",
"abstractNote": "Conclusie P-G: Bedreiging. Voldoende bepaald vreesobject. Conclusie strekt tot verwerping.\nVindplaatsen: Rechtspraak.nl",
"court": "Parket bij de HR",
"docketNumber": "ECLI:NL:PHR:2019:1016",
"extra": "Soort: Conclusie",
"history": "Arrest Hoge Raad: ECLI:NL:HR:2020:44",
"url": "https://deeplink.rechtspraak.nl/uitspraak?id=ECLI:NL:PHR:2019:1016",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Strafrecht"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://uitspraken.rechtspraak.nl/details?id=ECLI:NL:ORBAACM:2020:30&showbutton=true",
"items": [
{
"itemType": "case",
"caseName": "ECLI:NL:ORBAACM:2020:30, Raad van Beroep in Ambtenarenzaken van Aruba, Curaçao, Sint Maarten en van Bonaire, Sint Eustatius en Saba, CUR2019H00160",
"creators": [],
"dateDecided": "2020-12-16",
"abstractNote": "Ontslag wegens strafrechtelijke veroordeling. Geen procesbelang bij het opschuiven van de datum van ontslag. Bevestiging aangevallen uitspraak.\nVindplaatsen: Rechtspraak.nl",
"court": "RvB in Ambtenarenzaken Aruba, Curaçao, Sint Maarten en Bonaire, Sint Eustatius en Saba",
"docketNumber": "ECLI:NL:ORBAACM:2020:30",
"extra": "Soort: Uitspraak",
"url": "https://deeplink.rechtspraak.nl/uitspraak?id=ECLI:NL:ORBAACM:2020:30",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Ambtenarenrecht"
},
{
"tag": "Bestuursrecht"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://uitspraken.rechtspraak.nl/resultaat?zoekterm=test&inhoudsindicatie=zt0&publicatiestatus=ps1&sort=Relevance",
"items": "multiple"
},
{
"type": "web",
"url": "https://linkeddata.overheid.nl/front/portal/document-viewer?ext-id=ECLI:NL:OGEAA:2015:150",
"items": [
{
"itemType": "case",
"caseName": "ECLI:NL:OGEAA:2015:150, Gerecht in Eerste Aanleg van Aruba, A.R. no. 3385 van 2012",
"creators": [],
"dateDecided": "2015-07-01",
"abstractNote": "civiel recht\nVindplaatsen: Rechtspraak.nl",
"court": "GiEA Aruba",
"docketNumber": "ECLI:NL:OGEAA:2015:150",
"extra": "Soort: Uitspraak",
"url": "https://deeplink.rechtspraak.nl/uitspraak?id=ECLI:NL:OGEAA:2015:150",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Civiel recht"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Sean Takats and Michael Berkowitz^https?://([^\.]+\.)?(arxiv\.org|xxx\.lanl\.gov)/(find|catchup|list/\w|abs/|pdf/)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2019 Sean Takats and Michael Berkowitz
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectSearch(item) {
return !!item.arXiv;
}
function doSearch(item) {
var url = 'https://export.arxiv.org/oai2?verb=GetRecord&metadataPrefix=oai_dc'
+ '&identifier=oai%3AarXiv.org%3A' + encodeURIComponent(item.arXiv);
ZU.doGet(url, parseXML);
}
var version;
var arxivDOI;
// these variables will be set in doWeb and
// can be used then afterwards in the parseXML
function detectWeb(doc, url) {
var searchRe = /^https?:\/\/(?:([^.]+\.))?(?:arxiv\.org|xxx\.lanl\.gov)\/(?:find|list|catchup)/;
var relatedDOI = text(doc, '.doi>a');
if (searchRe.test(url)) {
return "multiple";
}
else if (relatedDOI) {
return "journalArticle";
}
else if (ZU.fieldIsValidForType('title', 'preprint')) {
return "preprint";
}
else {
return "report";
}
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == 'multiple') {
var rows = ZU.xpath(doc, '//div[@id="dlpage"]/dl/dt');
var getTitleId;
if (rows.length) {
// arXiv.org format
getTitleId = function (row) {
var id = ZU.xpathText(row, './/a[@title="Abstract"]').trim().substr(6); // Trim off arXiv:
var title = ZU.trimInternal(
ZU.xpathText(row, './following-sibling::dd[1]//div[contains(@class, "list-title")]/text()[last()]'));
return {
title: title,
id: id
};
};
}
else if ((rows = ZU.xpath(doc, '//table/tbody/tr[./td[@class="lti"]]')).length) {
// eprintweb.org format
getTitleId = function (row) {
var title = ZU.trimInternal(ZU.xpathText(row, './td'));
var id = ZU.xpathText(row, './following-sibling::tr[.//a][1]/td/b').trim().substr(6);
return {
title: title,
id: id
};
};
}
else {
throw new Error("Unrecognized multiples format");
}
var items = {};
for (let i = 0; i < rows.length; i++) {
var row = getTitleId(rows[i]);
items[row.id] = row.title;
}
Z.selectItems(items, function (items) {
if (!items) return;
var urls = [];
for (var id in items) {
urls.push('https://export.arxiv.org/oai2'
+ '?verb=GetRecord&metadataPrefix=oai_dc'
+ '&identifier=oai%3AarXiv.org%3A' + encodeURIComponent(id)
);
}
ZU.doGet(urls, parseXML);
});
}
else {
var id;
var versionMatch = url.match(/v(\d+)(\.pdf)?([?#].+)?$/);
if (versionMatch) {
version = versionMatch[1];
}
arxivDOI = text(doc, '.arxivdoi>a');
var p = url.indexOf("/pdf/");
if (p > -1) {
id = url.substring(p + 5, url.length - 4);
}
else {
id = ZU.xpathText(doc, '(//span[@class="arxivid"]/a)[1]')
|| ZU.xpathText(doc, '//b[starts-with(normalize-space(text()),"arXiv:")]');
}
if (!id) throw new Error('Could not find arXiv ID on page.');
id = id.trim().replace(/^arxiv:\s*|v\d+|\s+.*$/ig, '');
var apiurl = 'https://export.arxiv.org/oai2?verb=GetRecord&metadataPrefix=oai_dc'
+ '&identifier=oai%3AarXiv.org%3A' + encodeURIComponent(id);
ZU.doGet(apiurl, parseXML);
}
}
function parseXML(text) {
// Z.debug(text);
/* eslint camelcase: ["error", { allow: ["oai_dc"] }] */
var ns = {
oai_dc: 'http://www.openarchives.org/OAI/2.0/oai_dc/',
dc: 'http://purl.org/dc/elements/1.1/',
xsi: 'http://www.w3.org/2001/XMLSchema-instance',
n: 'http://www.openarchives.org/OAI/2.0/' // Default
};
var hasPreprint;
if (ZU.fieldIsValidForType('title', 'preprint')) {
hasPreprint = true;
}
var newItem;
if (hasPreprint) {
newItem = new Zotero.Item("preprint");
}
else {
newItem = new Zotero.Item("report");
}
var xml = (new DOMParser()).parseFromString(text, "text/xml");
var dcMeta = ZU.xpath(xml, '//n:GetRecord/n:record/n:metadata/oai_dc:dc', ns)[0];
newItem.title = getXPathNodeTrimmed(dcMeta, "dc:title", ns);
getCreatorNodes(dcMeta, "dc:creator", newItem, "author", ns);
var dates = ZU.xpath(dcMeta, './dc:date', ns)
.map(element => element.textContent)
.sort();
if (dates.length > 0) {
if (version && version < dates.length) {
newItem.date = dates[version - 1];
}
else {
// take the latest date
newItem.date = dates[dates.length - 1];
}
}
var descriptions = ZU.xpath(dcMeta, "./dc:description", ns);
// Put the first description into abstract, all other into notes.
if (descriptions.length > 0) {
newItem.abstractNote = ZU.trimInternal(descriptions[0].textContent);
for (let j = 1; j < descriptions.length; j++) {
var noteStr = ZU.trimInternal(descriptions[j].textContent);
newItem.notes.push({ note: noteStr });
}
}
var subjects = ZU.xpath(dcMeta, "./dc:subject", ns);
for (let j = 0; j < subjects.length; j++) {
var subject = ZU.trimInternal(subjects[j].textContent);
newItem.tags.push(subject);
}
var identifiers = ZU.xpath(dcMeta, "./dc:identifier", ns);
for (let j = 0; j < identifiers.length; j++) {
var identifier = ZU.trimInternal(identifiers[j].textContent);
if (identifier.substr(0, 4) == "doi:") {
newItem.DOI = identifier.substr(4);
}
else if (identifier.substr(0, 7) == "http://") {
newItem.url = identifier;
}
}
var articleID = ZU.xpath(xml, "//n:GetRecord/n:record/n:header/n:identifier", ns)[0];
if (articleID) articleID = ZU.trimInternal(articleID.textContent).substr(14); // Trim off oai:arXiv.org:
var articleField = ZU.xpathText(xml, '//n:GetRecord/n:record/n:header/n:setSpec', ns);
if (articleField) articleField = "[" + articleField.replace(/^.+?:/, "") + "]";
if (articleID && articleID.includes("/")) {
newItem.extra = "arXiv:" + articleID;
}
else {
newItem.extra = "arXiv:" + articleID + " " + articleField;
}
var pdfUrl = "https://arxiv.org/pdf/" + articleID + (version ? "v" + version : "") + ".pdf";
newItem.attachments.push({
title: "arXiv Fulltext PDF",
url: pdfUrl,
mimeType: "application/pdf"
});
newItem.attachments.push({
title: "arXiv.org Snapshot",
url: newItem.url,
mimeType: "text/html"
});
// retrieve and supplement publication data for published articles via DOI
if (newItem.DOI) {
var translate = Zotero.loadTranslator("search");
// CrossRef
translate.setTranslator("b28d0d42-8549-4c6d-83fc-8382874a5cb9");
var item = { itemType: "journalArticle", DOI: newItem.DOI };
translate.setSearch(item);
translate.setHandler("itemDone", function (obj, item) {
// Z.debug(item)
newItem.itemType = item.itemType;
newItem.volume = item.volume;
newItem.issue = item.issue;
newItem.pages = item.pages;
newItem.date = item.date;
newItem.ISSN = item.ISSN;
if (item.publicationTitle) {
newItem.publicationTitle = item.publicationTitle;
newItem.journalAbbreviation = item.journalAbbreviation;
}
newItem.date = item.date;
});
translate.setHandler("done", function () {
newItem.complete();
});
translate.setHandler("error", function () {});
translate.translate();
}
else {
newItem.publisher = "arXiv";
newItem.number = "arXiv:" + articleID;
if (version) {
newItem.extra += '\nversion: ' + version;
}
if (arxivDOI) newItem.DOI = ZU.cleanDOI(arxivDOI);
// only for Zotero versions without preprint
if (!hasPreprint) {
newItem.extra += '\ntype: article';
}
else newItem.archiveID = "arXiv:" + articleID;
newItem.complete();
}
}
function getXPathNodeTrimmed(dcMeta, name, ns) {
var node = ZU.xpath(dcMeta, './' + name, ns);
if (node.length) {
return ZU.trimInternal(node[0].textContent);
}
return '';
}
function getCreatorNodes(dcMeta, name, newItem, creatorType, ns) {
var nodes = ZU.xpath(dcMeta, './' + name, ns);
for (var i = 0; i < nodes.length; i++) {
newItem.creators.push(
ZU.cleanAuthor(nodes[i].textContent, creatorType, true)
);
}
}/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://arxiv.org/list/astro-ph/new",
"items": "multiple"
},
{
"type": "web",
"url": "https://arxiv.org/abs/1107.4612",
"items": [
{
"itemType": "journalArticle",
"title": "A Model For Polarised Microwave Foreground Emission From Interstellar Dust",
"creators": [
{
"firstName": "D. T.",
"lastName": "O'Dea",
"creatorType": "author"
},
{
"firstName": "C. N.",
"lastName": "Clark",
"creatorType": "author"
},
{
"firstName": "C. R.",
"lastName": "Contaldi",
"creatorType": "author"
},
{
"firstName": "C. J.",
"lastName": "MacTavish",
"creatorType": "author"
}
],
"date": "2012-01-11",
"DOI": "10.1111/j.1365-2966.2011.19851.x",
"ISSN": "00358711",
"abstractNote": "The upcoming generation of cosmic microwave background (CMB) experiments face a major challenge in detecting the weak cosmic B-mode signature predicted as a product of primordial gravitational waves. To achieve the required sensitivity these experiments must have impressive control of systematic effects and detailed understanding of the foreground emission that will influence the signal. In this paper, we present templates of the intensity and polarisation of emission from one of the main Galactic foregrounds, interstellar dust. These are produced using a model which includes a 3D description of the Galactic magnetic field, examining both large and small scales. We also include in the model the details of the dust density, grain alignment and the intrinsic polarisation of the emission from an individual grain. We present here Stokes parameter template maps at 150GHz and provide an on-line repository (http://www.imperial.ac.uk/people/c.contaldi/fgpol) for these and additional maps at frequencies that will be targeted by upcoming experiments such as EBEX, Spider and SPTpol.",
"extra": "arXiv:1107.4612 [astro-ph]",
"issue": "2",
"libraryCatalog": "arXiv.org",
"pages": "1795-1803",
"publicationTitle": "Monthly Notices of the Royal Astronomical Society",
"url": "http://arxiv.org/abs/1107.4612",
"volume": "419",
"attachments": [
{
"title": "arXiv Fulltext PDF",
"mimeType": "application/pdf"
},
{
"title": "arXiv.org Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Astrophysics - Astrophysics of Galaxies"
},
{
"tag": "Astrophysics - Cosmology and Nongalactic Astrophysics"
}
],
"notes": [
{
"note": "Comment: 7 pages, 4 figures"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://arxiv.org/abs/astro-ph/0603274",
"items": [
{
"itemType": "journalArticle",
"title": "Properties of the $\\delta$ Scorpii Circumstellar Disk from Continuum Modeling",
"creators": [
{
"firstName": "A. C.",
"lastName": "Carciofi",
"creatorType": "author"
},
{
"firstName": "A. S.",
"lastName": "Miroshnichenko",
"creatorType": "author"
},
{
"firstName": "A. V.",
"lastName": "Kusakin",
"creatorType": "author"
},
{
"firstName": "J. E.",
"lastName": "Bjorkman",
"creatorType": "author"
},
{
"firstName": "K. S.",
"lastName": "Bjorkman",
"creatorType": "author"
},
{
"firstName": "F.",
"lastName": "Marang",
"creatorType": "author"
},
{
"firstName": "K. S.",
"lastName": "Kuratov",
"creatorType": "author"
},
{
"firstName": "P. Garcí",
"lastName": "a-Lario",
"creatorType": "author"
},
{
"firstName": "J. V. Perea",
"lastName": "Calderón",
"creatorType": "author"
},
{
"firstName": "J.",
"lastName": "Fabregat",
"creatorType": "author"
},
{
"firstName": "A. M.",
"lastName": "Magalhães",
"creatorType": "author"
}
],
"date": "12/2006",
"DOI": "10.1086/507935",
"ISSN": "0004-637X, 1538-4357",
"abstractNote": "We present optical $WBVR$ and infrared $JHKL$ photometric observations of the Be binary system $\\delta$ Sco, obtained in 2000--2005, mid-infrared (10 and $18 \\mu$m) photometry and optical ($\\lambda\\lambda$ 3200--10500 \\AA) spectropolarimetry obtained in 2001. Our optical photometry confirms the results of much more frequent visual monitoring of $\\delta$ Sco. In 2005, we detected a significant decrease in the object's brightness, both in optical and near-infrared brightness, which is associated with a continuous rise in the hydrogen line strenghts. We discuss possible causes for this phenomenon, which is difficult to explain in view of current models of Be star disks. The 2001 spectral energy distribution and polarization are succesfully modeled with a three-dimensional non-LTE Monte Carlo code which produces a self-consistent determination of the hydrogen level populations, electron temperature, and gas density for hot star disks. Our disk model is hydrostatically supported in the vertical direction and radially controlled by viscosity. Such a disk model has, essentially, only two free parameters, viz., the equatorial mass loss rate and the disk outer radius. We find that the primary companion is surrounded by a small (7 $R_\\star$), geometrically-thin disk, which is highly non-isothermal and fully ionized. Our model requires an average equatorial mass loss rate of $1.5\\times 10^{-9} M_{\\sun}$ yr$^{-1}$.",
"extra": "arXiv:astro-ph/0603274",
"issue": "2",
"journalAbbreviation": "ApJ",
"libraryCatalog": "arXiv.org",
"pages": "1617-1625",
"publicationTitle": "The Astrophysical Journal",
"url": "http://arxiv.org/abs/astro-ph/0603274",
"volume": "652",
"attachments": [
{
"title": "arXiv Fulltext PDF",
"mimeType": "application/pdf"
},
{
"title": "arXiv.org Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Astrophysics"
}
],
"notes": [
{
"note": "Comment: 27 pages, 9 figures, submitted to ApJ"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://arxiv.org/abs/1307.1469",
"items": [
{
"itemType": "journalArticle",
"title": "Precision of a Low-Cost InGaAs Detector for Near Infrared Photometry",
"creators": [
{
"firstName": "Peter W.",
"lastName": "Sullivan",
"creatorType": "author"
},
{
"firstName": "Bryce",
"lastName": "Croll",
"creatorType": "author"
},
{
"firstName": "Robert A.",
"lastName": "Simcoe",
"creatorType": "author"
}
],
"date": "09/2013",
"DOI": "10.1086/672573",
"ISSN": "00046280, 15383873",
"abstractNote": "We have designed, constructed, and tested an InGaAs near-infrared camera to explore whether low-cost detectors can make small (<1 m) telescopes capable of precise (<1 mmag) infrared photometry of relatively bright targets. The camera is constructed around the 640x512 pixel APS640C sensor built by FLIR Electro-Optical Components. We designed custom analog-to-digital electronics for maximum stability and minimum noise. The InGaAs dark current halves with every 7 deg C of cooling, and we reduce it to 840 e-/s/pixel (with a pixel-to-pixel variation of +/-200 e-/s/pixel) by cooling the array to -20 deg C. Beyond this point, glow from the readout dominates. The single-sample read noise of 149 e- is reduced to 54 e- through up-the-ramp sampling. Laboratory testing with a star field generated by a lenslet array shows that 2-star differential photometry is possible to a precision of 631 +/-205 ppm (0.68 mmag) hr^-0.5 at a flux of 2.4E4 e-/s. Employing three comparison stars and de-correlating reference signals further improves the precision to 483 +/-161 ppm (0.52 mmag) hr^-0.5. Photometric observations of HD80606 and HD80607 (J=7.7 and 7.8) in the Y band shows that differential photometry to a precision of 415 ppm (0.45 mmag) hr^-0.5 is achieved with an effective telescope aperture of 0.25 m. Next-generation InGaAs detectors should indeed enable Poisson-limited photometry of brighter dwarfs with particular advantage for late-M and L types. In addition, one might acquire near-infrared photometry simultaneously with optical photometry or radial velocity measurements to maximize the return of exoplanet searches with small telescopes.",
"extra": "arXiv:1307.1469 [astro-ph]",
"issue": "931",
"journalAbbreviation": "Publications of the Astronomical Society of the Pacific",
"libraryCatalog": "arXiv.org",
"pages": "1021-1030",
"publicationTitle": "Publications of the Astronomical Society of the Pacific",
"url": "http://arxiv.org/abs/1307.1469",
"volume": "125",
"attachments": [
{
"title": "arXiv Fulltext PDF",
"mimeType": "application/pdf"
},
{
"title": "arXiv.org Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Astrophysics - Earth and Planetary Astrophysics"
},
{
"tag": "Astrophysics - Instrumentation and Methods for Astrophysics"
}
],
"notes": [
{
"note": "Comment: Accepted to PASP"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://arxiv.org/find/cs/1/au:+Hoffmann_M/0/1/0/all/0/1",
"items": "multiple"
},
{
"type": "web",
"url": "https://arxiv.org/pdf/1402.1516.pdf",
"items": [
{
"itemType": "journalArticle",
"title": "A dual pair for free boundary fluids",
"creators": [
{
"firstName": "Francois",
"lastName": "Gay-Balmaz",
"creatorType": "author"
},
{
"firstName": "Cornelia",
"lastName": "Vizman",
"creatorType": "author"
}
],
"date": "2014-02-06",
"abstractNote": "We construct a dual pair associated to the Hamiltonian geometric formulation of perfect fluids with free boundaries. This dual pair is defined on the cotangent bundle of the space of volume preserving embeddings of a manifold with boundary into a boundaryless manifold of the same dimension. The dual pair properties are rigorously verified in the infinite dimensional Fr\\'echet manifold setting. It provides an example of a dual pair associated to actions that are not completely mutually orthogonal.",
"extra": "arXiv: 1402.1516",
"libraryCatalog": "arXiv.org",
"publicationTitle": "arXiv:1402.1516 [math-ph]",
"url": "http://arxiv.org/abs/1402.1516",
"attachments": [
{
"title": "arXiv:1402.1516 PDF",
"mimeType": "application/pdf"
},
{
"title": "arXiv.org Snapshot",
"mimeType": "text/html"
}
],
"tags": [
"Mathematical Physics",
"Mathematics - Symplectic Geometry"
],
"notes": [
{
"note": "Comment: 17 pages"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://arxiv.org/abs/1810.04805v1",
"items": [
{
"itemType": "preprint",
"title": "BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding",
"creators": [
{
"firstName": "Jacob",
"lastName": "Devlin",
"creatorType": "author"
},
{
"firstName": "Ming-Wei",
"lastName": "Chang",
"creatorType": "author"
},
{
"firstName": "Kenton",
"lastName": "Lee",
"creatorType": "author"
},
{
"firstName": "Kristina",
"lastName": "Toutanova",
"creatorType": "author"
}
],
"date": "2018-10-10",
"abstractNote": "We introduce a new language representation model called BERT, which stands for Bidirectional Encoder Representations from Transformers. Unlike recent language representation models, BERT is designed to pre-train deep bidirectional representations from unlabeled text by jointly conditioning on both left and right context in all layers. As a result, the pre-trained BERT model can be fine-tuned with just one additional output layer to create state-of-the-art models for a wide range of tasks, such as question answering and language inference, without substantial task-specific architecture modifications. BERT is conceptually simple and empirically powerful. It obtains new state-of-the-art results on eleven natural language processing tasks, including pushing the GLUE score to 80.5% (7.7% point absolute improvement), MultiNLI accuracy to 86.7% (4.6% absolute improvement), SQuAD v1.1 question answering Test F1 to 93.2 (1.5 point absolute improvement) and SQuAD v2.0 Test F1 to 83.1 (5.1 point absolute improvement).",
"archiveID": "arXiv:1810.04805",
"extra": "arXiv:1810.04805 [cs]\nversion: 1",
"libraryCatalog": "arXiv.org",
"repository": "arXiv",
"shortTitle": "BERT",
"url": "http://arxiv.org/abs/1810.04805",
"attachments": [
{
"title": "arXiv Fulltext PDF",
"mimeType": "application/pdf"
},
{
"title": "arXiv.org Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Computer Science - Computation and Language"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://arxiv.org/abs/1810.04805v2",
"items": [
{
"itemType": "preprint",
"title": "BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding",
"creators": [
{
"firstName": "Jacob",
"lastName": "Devlin",
"creatorType": "author"
},
{
"firstName": "Ming-Wei",
"lastName": "Chang",
"creatorType": "author"
},
{
"firstName": "Kenton",
"lastName": "Lee",
"creatorType": "author"
},
{
"firstName": "Kristina",
"lastName": "Toutanova",
"creatorType": "author"
}
],
"date": "2019-05-24",
"abstractNote": "We introduce a new language representation model called BERT, which stands for Bidirectional Encoder Representations from Transformers. Unlike recent language representation models, BERT is designed to pre-train deep bidirectional representations from unlabeled text by jointly conditioning on both left and right context in all layers. As a result, the pre-trained BERT model can be fine-tuned with just one additional output layer to create state-of-the-art models for a wide range of tasks, such as question answering and language inference, without substantial task-specific architecture modifications. BERT is conceptually simple and empirically powerful. It obtains new state-of-the-art results on eleven natural language processing tasks, including pushing the GLUE score to 80.5% (7.7% point absolute improvement), MultiNLI accuracy to 86.7% (4.6% absolute improvement), SQuAD v1.1 question answering Test F1 to 93.2 (1.5 point absolute improvement) and SQuAD v2.0 Test F1 to 83.1 (5.1 point absolute improvement).",
"archiveID": "arXiv:1810.04805",
"extra": "arXiv:1810.04805 [cs]\nversion: 2",
"libraryCatalog": "arXiv.org",
"repository": "arXiv",
"shortTitle": "BERT",
"url": "http://arxiv.org/abs/1810.04805",
"attachments": [
{
"title": "arXiv Fulltext PDF",
"mimeType": "application/pdf"
},
{
"title": "arXiv.org Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Computer Science - Computation and Language"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://arxiv.org/abs/2201.00738",
"items": [
{
"itemType": "preprint",
"title": "Single Phonon Detection for Dark Matter via Quantum Evaporation and Sensing of $^3$Helium",
"creators": [
{
"firstName": "S. A.",
"lastName": "Lyon",
"creatorType": "author"
},
{
"firstName": "Kyle",
"lastName": "Castoria",
"creatorType": "author"
},
{
"firstName": "Ethan",
"lastName": "Kleinbaum",
"creatorType": "author"
},
{
"firstName": "Zhihao",
"lastName": "Qin",
"creatorType": "author"
},
{
"firstName": "Arun",
"lastName": "Persaud",
"creatorType": "author"
},
{
"firstName": "Thomas",
"lastName": "Schenkel",
"creatorType": "author"
},
{
"firstName": "Kathryn",
"lastName": "Zurek",
"creatorType": "author"
}
],
"date": "2022-01-07",
"DOI": "10.48550/arXiv.2201.00738",
"abstractNote": "Dark matter is five times more abundant than ordinary visible matter in our Universe. While laboratory searches hunting for dark matter have traditionally focused on the electroweak scale, theories of low mass hidden sectors motivate new detection techniques. Extending these searches to lower mass ranges, well below 1 GeV/c$^2$, poses new challenges as rare interactions with standard model matter transfer progressively less energy to electrons and nuclei in detectors. Here, we propose an approach based on phonon-assisted quantum evaporation combined with quantum sensors for detection of desorption events via tracking of spin coherence. The intent of our proposed dark matter sensors is to extend the parameter space to energy transfers in rare interactions to as low as a few meV for detection of dark matter particles in the keV/c$^2$ mass range.",
"archiveID": "arXiv:2201.00738",
"extra": "arXiv:2201.00738 [cond-mat, physics:hep-ex, physics:quant-ph]",
"libraryCatalog": "arXiv.org",
"repository": "arXiv",
"url": "http://arxiv.org/abs/2201.00738",
"attachments": [
{
"title": "arXiv Fulltext PDF",
"mimeType": "application/pdf"
},
{
"title": "arXiv.org Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Condensed Matter - Mesoscale and Nanoscale Physics"
},
{
"tag": "High Energy Physics - Experiment"
},
{
"tag": "Quantum Physics"
}
],
"notes": [
{
"note": "Comment: 7 pages, 4 figures. Fixed typos in address"
}
],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Aurimas Vinckevicius, Xingzhong Lin, Zoë C. Ma^https?://([^/]+\.)?cnki\.net/*
***** BEGIN LICENSE BLOCK *****
CNKI(China National Knowledge Infrastructure) Translator
Copyright © 2013 Aurimas Vinckevicius
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
// Fetches RefWorks records for provided IDs and calls onDataAvailable with resulting text
// ids should be in the form [{dbname: "CDFDLAST2013", filename: "1013102302.nh"}]
function toStdRef(reftext) {
return reftext
.body
.replace("<ul class='literature-list'><li>", "")
.replace("<br></li></ul>", "")
.replace("</li><li>", "") // divide results
.replace(/<br>|\r/g, "\n")
.replace(/vo (\d+)\n/, "VO $1\n") // Divide VO and IS to different line
.replace(/IS (\d+)\nvo/, "IS $1\nVO")// Uppercase VO
.replace(/IS 0(\d+)\n/g, "IS $1\n")// Remove leading 0
.replace(/VO 0(\d+)\n/g, "VO $1\n")
.replace(/\n+/g, "\n")
.replace(/\n([A-Z][A-Z1-9]\s)/g, "<br>$1")
.replace(/\n/g, "")
.replace(/<br>/g, "\n")
.replace(/(K1 .*[\u4e00-\u9fa5]) ([a-zA-Z])/g, "$1;$2")// cn keywwords and en keywords
.replace(/\t/g, "") // \t in abstract
.replace(
/^RT\s+Conference Proceeding/gim,
"RT Conference Proceedings"
)
.replace(/^RT\s+Dissertation\/Thesis/gim, "RT Dissertation")
.replace(/^(A[1-4]|U2)\s*([^\r\n]+)/gm, function (m, tag, authors) {
authors = authors.split(/\s*[;,,]\s*/); // that's a special comma
if (!authors[authors.length - 1].trim()) authors.pop();
return tag + " " + authors.join("\n" + tag + " ");
})
.replace(/LA 中文;?/g, "LA zh-CN")
.trim();
}
function getIDFromURL(url) {
if (!url) return false;
var dbname = url.match(/[?&]dbname=([^&#]*)/i);
var filename = url.match(/[?&]filename=([^&#]*)/i);
if (!dbname || !dbname[1] || !filename || !filename[1]) return false;
return { dbname: dbname[1], filename: filename[1], url: url };
}
// 网络首发期刊信息并不能从URL获取dbname和filename信息
// Get dbname and filename from pre-released article web page.
function getIDFromRef(doc, url) {
let database = attr(doc, '#paramdbname', 'value');
let filename = attr(doc, '#paramfilename', 'value');
if (database && filename) {
return { dbname: database, filename: filename, url: url };
}
else {
return false;
}
}
// Get dbname and filename from the link target on the "take note" button in
// the doc as a fallback.
// NOTE: As of now (8 Mar 2023) the document sent by CNKI may contain duplicate
// element ids in the buttons row. In addition, for different article sources,
// the buttons may follow different patterns, sometimes lacking all the
// required info. The note-taking button appears more stable across the CNKI
// domains.
function getIDFromNoteTakerLink(doc, url) {
const noteURLString = attr(doc, "li.btn-note a", "href");
if (!noteURLString) return false;
const urlParams = new URLSearchParams(new URL(noteURLString).search);
const dbnameValue = urlParams.get("tablename");
const filenameValue = urlParams.get("filename");
if (!dbnameValue || !filenameValue) return false;
return { dbname: dbnameValue, filename: filenameValue, url: url };
}
function getIDFromSearchRow(row) {
var dbcode = attr(row, "a.icon-collect", "data-dbname");
var filename = attr(row, "a.icon-collect", "data-filename");
if (dbcode && filename) {
return { dbcode: dbcode, dbname: dbcode, filename: filename };
}
else {
return false;
}
}
function getIDFromPage(doc, url) {
return getIDFromURL(url)
|| getIDFromRef(doc, url)
|| getIDFromNoteTakerLink(doc, url);
}
function getTypeFromDBName(dbname) {
var dbType = {
CJFQ: "journalArticle",
CJFD: "journalArticle",
CAPJ: "journalArticle",
SJES: "journalArticle",
SJPD: "journalArticle",
SSJD: "journalArticle",
CCJD: "journalArticle",
CDMD: "journalArticle",
CYFD: "journalArticle",
CDFD: "thesis",
CMFD: "thesis",
CLKM: "thesis",
CCND: "newspaperArticle",
CPFD: "conferencePaper",
IPFD: "conferencePaper",
SCPD: "patent"
};
var db = dbname.substring(0, 4).toUpperCase();
if (dbType[db]) {
return dbType[db];
}
else {
return false;
}
}
function getItemsFromSearchResults(doc, url, itemInfo) {
var iframe = doc.getElementById('iframeResult');
if (iframe) {
var innerDoc = iframe.contentDocument || iframe.contentWindow.document;
if (innerDoc) {
doc = innerDoc;
}
}
var links = ZU.xpath(doc, '//tr[not(.//tr) and .//a[@class="fz14"]]');
var aXpath = './/a[@class="fz14"]';
if (!links.length) {
links = ZU.xpath(doc, '//table[@class="GridTableContent"]/tbody/tr[./td[2]/a]');
aXpath = './td[2]/a';
}
if (!links.length) {
return false;
}
var items = {};
for (var i = 0, n = links.length; i < n; i++) {
// Z.debug(links[i].innerHTML)
var a = ZU.xpath(links[i], aXpath)[0];
var title = ZU.xpathText(a, './node()[not(name()="SCRIPT")]', null, '');
if (title) title = ZU.trimInternal(title);
var id = getIDFromURL(a.href) || getIDFromSearchRow(links[i]);
// pre-released item can not get ID from URL, try to get ID from element.value
if (!id) {
var td1 = ZU.xpath(links[i], './td')[0];
var tmp = td1.value.split('!');
id = { dbname: tmp[0], filename: tmp[1], url: a.href };
}
if (!title || !id) continue;
if (itemInfo) {
itemInfo[a.href] = { id: id };
}
items[a.href] = title;
}
return items;
}
function detectWeb(doc, url) {
// Z.debug(doc);
var id = getIDFromPage(doc, url);
var items = getItemsFromSearchResults(doc, url);
var searchResult = doc.querySelector("#ModuleSearchResult");
if (searchResult) {
Z.monitorDOMChanges(searchResult, { childList: true, subtree: true });
}
if (id) {
return getTypeFromDBName(id.dbname);
}
else if (items) {
return "multiple";
}
else {
return false;
}
}
async function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
var itemInfo = {};
var items = getItemsFromSearchResults(doc, url, itemInfo);
let selectItems = await Z.selectItems(items);
if (selectItems) {
for (let url in selectItems) {
await scrape(itemInfo[url].id, doc, { url: url });
}
}
}
else {
await scrape(getIDFromPage(doc, url), doc);
}
}
async function scrape(id, doc, extraData) {
var { dbname, filename } = id;
var postData = `FileName=${dbname}!${filename}!1!0&DisplayMode=Refworks&OrderParam=0&OrderType=desc&SelectField=&PageIndex=1&PageSize=20&language=&uniplatform=NZKPT&random=0.30585230060685187`;
var refer = `https://kns.cnki.net/dm/manage/export.html?filename=${dbname}!${filename}!1!0&displaymode=NEW&uniplatform=NZKPT`;
var reftext = await request(
'https://kns.cnki.net/dm/api/ShowExport',
{
method: "POST",
body: postData,
headers: {
Referer: refer
}
}
);
var translator = Z.loadTranslator('import');
translator.setTranslator('1a3506da-a303-4b0a-a1cd-f216e6138d86'); // RefWorks Tagged
translator.setString(toStdRef(reftext));
translator.setHandler('itemDone', function (obj, newItem) {
// split names
for (var i = 0, n = newItem.creators.length; i < n; i++) {
var creator = newItem.creators[i];
if (creator.firstName) continue;
var lastSpace = creator.lastName.lastIndexOf(' ');
var lastMiddleDot = creator.lastName.lastIndexOf('·');
if (/[A-Za-z]/.test(creator.lastName) && lastSpace !== -1) {
// western name. split on last space
creator.firstName = creator.lastName.substring(0, lastSpace);
creator.lastName = creator.lastName.substring(lastSpace + 1);
}
else if (lastMiddleDot !== -1) {
// translated western name with · as separator
creator.firstName = creator.lastName.substring(0, lastMiddleDot);
creator.lastName = creator.lastName.substring(lastMiddleDot + 1);
}
else {
// Chinese name. first character is last name, the rest are first name
creator.firstName = creator.lastName.substring(1);
creator.lastName = creator.lastName.charAt(0);
}
}
if (newItem.abstractNote) {
newItem.abstractNote = newItem.abstractNote.replace(/\s*[\r\n]\s*/g, '\n');
}
// clean up tags. Remove numbers from end
for (var j = 0, l = newItem.tags.length; j < l; j++) {
newItem.tags[j] = newItem.tags[j].replace(/:\d+$/, '');
}
newItem.title = ZU.trimInternal(newItem.title);
if (extraData) {
newItem.url = extraData.url;
}
else {
newItem.url = id.url;
}
// CN 中国刊物编号,非refworks中的callNumber
// CN in CNKI refworks format explains Chinese version of ISSN
if (newItem.callNumber) {
// newItem.extra = 'CN ' + newItem.callNumber;
newItem.callNumber = "";
}
// don't download PDF/CAJ on searchResult(multiple)
var webType = detectWeb(doc, id.url);
if (webType && webType != 'multiple') {
newItem.attachments = getAttachments(doc, newItem);
}
newItem.complete();
});
translator.translate();
}
// get pdf download link
function getPDF(doc, itemType) {
// retrieve PDF links from CNKI oversea
var pdf = itemType == 'thesis'
? ZU.xpath(doc, "//div[@id='DownLoadParts']/a[contains(text(), 'PDF')]")
: ZU.xpath(doc, "//a[@name='pdfDown']");
return pdf.length ? pdf[0].href : false;
}
// caj download link, default is the whole article for thesis.
function getCAJ(doc, itemType) {
// //div[@id='DownLoadParts']
var caj = itemType == 'thesis'
? ZU.xpath(doc, "//div[@id='DownLoadParts']/a")
: ZU.xpath(doc, "//a[@name='cajDown']");
return caj.length ? caj[0].href : false;
}
// add pdf or caj to attachments, default is pdf
function getAttachments(doc, item) {
var attachments = [];
var pdfurl = getPDF(doc, item.itemType);
var cajurl = getCAJ(doc, item.itemType);
// Z.debug('pdf' + pdfurl);
// Z.debug('caj' + cajurl);
var loginUser = ZU.xpath(doc, "//input[@id='loginuserid']");
// Z.debug(doc.body.innerHTML);
// Z.debug(loginUser[0].value);
// Z.debug(loginUser.length);
if (loginUser.length && loginUser[0].value) {
if (pdfurl) {
attachments.push({
title: "Full Text PDF",
mimeType: "application/pdf",
url: pdfurl
});
}
else if (cajurl) {
attachments.push({
title: "Full Text CAJ",
mimeType: "application/caj",
url: cajurl
});
}
}
return attachments;
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://kns.cnki.net/KCMS/detail/detail.aspx?dbcode=CJFQ&dbname=CJFDLAST2015&filename=SPZZ201412003&v=MTU2MzMzcVRyV00xRnJDVVJMS2ZidVptRmkva1ZiL09OajNSZExHNEg5WE5yWTlGWjRSOGVYMUx1eFlTN0RoMVQ=",
"defer": true,
"items": [
{
"itemType": "journalArticle",
"title": "基于部分酸水解-亲水作用色谱-质谱的黄芪多糖结构表征",
"creators": [
{
"lastName": "梁",
"firstName": "图",
"creatorType": "author"
},
{
"lastName": "傅",
"firstName": "青",
"creatorType": "author"
},
{
"lastName": "辛",
"firstName": "华夏",
"creatorType": "author"
},
{
"lastName": "李",
"firstName": "芳冰",
"creatorType": "author"
},
{
"lastName": "金",
"firstName": "郁",
"creatorType": "author"
},
{
"lastName": "梁",
"firstName": "鑫淼",
"creatorType": "author"
}
],
"date": "2014",
"ISSN": "1000-8713",
"abstractNote": "来自中药的水溶性多糖具有广谱治疗和低毒性特点,是天然药物及保健品研发中的重要组成部分。针对中药多糖结构复杂、难以表征的问题,本文以中药黄芪中的多糖为研究对象,采用\"自下而上\"法完成对黄芪多糖的表征。首先使用部分酸水解方法水解黄芪多糖,分别考察了水解时间、酸浓度和温度的影响。在适宜条件(4 h、1.5mol/L三氟乙酸、80℃)下,黄芪多糖被水解为特征性的寡糖片段。接下来,采用亲水作用色谱与质谱联用对黄芪多糖部分酸水解产物进行分离和结构表征。结果表明,提取得到的黄芪多糖主要为1→4连接线性葡聚糖,水解得到聚合度4~11的葡寡糖。本研究对其他中药多糖的表征具有一定的示范作用。",
"issue": "12",
"language": "zh-CN",
"libraryCatalog": "CNKI",
"pages": "1306-1312",
"publicationTitle": "色谱",
"url": "https://kns.cnki.net/KCMS/detail/detail.aspx?dbcode=CJFQ&dbname=CJFDLAST2015&filename=SPZZ201412003&v=MTU2MzMzcVRyV00xRnJDVVJMS2ZidVptRmkva1ZiL09OajNSZExHNEg5WE5yWTlGWjRSOGVYMUx1eFlTN0RoMVQ=",
"volume": "32",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "亲水作用色谱"
},
{
"tag": "多糖"
},
{
"tag": "表征"
},
{
"tag": "质谱"
},
{
"tag": "部分酸水解"
},
{
"tag": "黄芪"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://kns.cnki.net/KCMS/detail/detail.aspx?dbcode=CMFD&dbname=CMFD201701&filename=1017045605.nh&v=MDc3ODZPZVorVnZGQ3ZrV3JyT1ZGMjZHYk84RzlmTXFwRWJQSVI4ZVgxTHV4WVM3RGgxVDNxVHJXTTFGckNVUkw=",
"defer": true,
"items": [
{
"itemType": "thesis",
"title": "黄瓜共表达基因模块的识别及其特点分析",
"creators": [
{
"lastName": "林",
"firstName": "行众",
"creatorType": "author"
}
],
"date": "2017",
"abstractNote": "黄瓜(Cucumis sativus L.)是我国最大的保护地栽培蔬菜作物,也是植物性别发育和维管束运输研究的重要模式植物。黄瓜基因组序列图谱已经构建完成,并且在此基础上又完成了全基因组SSR标记开发和涵盖330万个变异位点变异组图谱,成为黄瓜功能基因研究的重要平台和工具,相关转录组研究也有很多报道,不过共表达网络研究还是空白。本实验以温室型黄瓜9930为研究对象,选取10个不同组织,进行转录组测序,获得10份转录组原始数据。在对原始数据去除接头与低质量读段后,将高质量读段用Tophat2回贴到已经发表的栽培黄瓜基因组序列上。用Cufflinks对回贴后的数据计算FPKM值,获得10份组织的24274基因的表达量数据。计算结果中的回贴率比较理想,不过有些基因的表达量过低。为了防止表达量低的基因对结果的影响,将10份组织中表达量最大小于5的基因去除,得到16924个基因,进行下一步分析。共表达网络的构建过程是将上步获得的表达量数据,利用R语言中WGCNA(weighted gene co-expression network analysis)包构建共表达网络。结果得到的共表达网络包括1134个模块。这些模块中的基因表达模式类似,可以认为是共表达关系。不过结果中一些模块内基因间相关性同其他模块相比比较低,在分析过程中,将模块中基因相关性平均值低于0.9的模块都去除,最终得到839个模块,一共11,844个基因。共表达的基因因其表达模式类似而聚在一起,这些基因可能与10份组织存在特异性关联。为了计算模块与组织间的相关性,首先要对每个模块进行主成分分析(principle component analysis,PCA),获得特征基因(module eigengene,ME),特征基因可以表示这个模块所有基因共有的表达趋势。通过计算特征基因与组织间的相关性,从而挑选出组织特异性模块,这些模块一共有323个。利用topGO功能富集分析的结果表明这些特异性模块所富集的功能与组织相关。共表达基因在染色体上的物理位置经常是成簇分布的。按照基因间隔小于25kb为标准。分别对839个模块进行分析,结果发现在71个模块中共有220个cluster,这些cluster 一般有2~5个基因,cluster中的基因在功能上也表现出一定的联系。共表达基因可能受到相同的转录调控,这些基因在启动子前2kb可能会存在有相同的motif以供反式作用元...",
"language": "zh-CN",
"libraryCatalog": "CNKI",
"thesisType": "硕士",
"university": "南京农业大学",
"url": "https://kns.cnki.net/KCMS/detail/detail.aspx?dbcode=CMFD&dbname=CMFD201701&filename=1017045605.nh&v=MDc3ODZPZVorVnZGQ3ZrV3JyT1ZGMjZHYk84RzlmTXFwRWJQSVI4ZVgxTHV4WVM3RGgxVDNxVHJXTTFGckNVUkw=",
"attachments": [],
"tags": [
{
"tag": "共表达"
},
{
"tag": "网络"
},
{
"tag": "转录组"
},
{
"tag": "黄瓜"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://kns.cnki.net/kcms/detail/detail.aspx?dbcode=CCJD&dbname=CCJDLAST2&filename=ZKSF202002010&uniplatform=NZKPT&v=RM9dl7WiC7a9v7FVB6ov3OwJSXCWzsWIng_BWXok2rj4YFWz9tZ20FRZxDaeDPCm",
"defer": true,
"items": [
{
"itemType": "journalArticle",
"title": "欧洲陪审团制度新发展:西班牙与俄罗斯的陪审团",
"creators": [
{
"lastName": "萨曼",
"firstName": "史蒂芬",
"creatorType": "author"
},
{
"lastName": "高",
"firstName": "一飞",
"creatorType": "author"
}
],
"date": "2020",
"abstractNote": "<正>一、简介近来再次对俄罗斯(1993)和西班牙(1995)陪审团审判模式进行介绍的原因有两个方面。第一,在废除传统陪审团审判的情况下,要么采取仅由职业法官组成的法院审理案件,要么由职业法官和审讯顾问合议来判断所有的事实问题、法律问题并作出相应判决,这是一种令人惊闻的倒退。",
"issue": "2",
"language": "zh-CN",
"libraryCatalog": "CNKI",
"pages": "193-212",
"publicationTitle": "司法智库",
"shortTitle": "欧洲陪审团制度新发展",
"url": "https://kns.cnki.net/kcms/detail/detail.aspx?dbcode=CCJD&dbname=CCJDLAST2&filename=ZKSF202002010&uniplatform=NZKPT&v=RM9dl7WiC7a9v7FVB6ov3OwJSXCWzsWIng_BWXok2rj4YFWz9tZ20FRZxDaeDPCm",
"volume": "3",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "俄罗斯"
},
{
"tag": "刑事诉讼程序"
},
{
"tag": "判决书"
},
{
"tag": "巴斯克"
},
{
"tag": "陪审团"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://kns.cnki.net/kcms2/article/abstract?v=aGn3Ey0ZxcAi0XeGEjt5HeH9QvBBKaMwsES4SuFJjIdiexE2qhU8bX2aGBIHriUe6WrMOFyCz6TIuYJGlA_YQUO9h2FJwGt_gZfkHkLHnqVgNK8uMWo5lKYMqxvBPfO6_0Zy21140lIwEFrUw-cJtw==&uniplatform=NZKPT",
"defer": true,
"items": [
{
"itemType": "journalArticle",
"title": "我国绿色产品认证标识法律制度的路径探析",
"creators": [
{
"lastName": "曹",
"firstName": "明德",
"creatorType": "author"
}
],
"date": "2022",
"ISSN": "1001-2397",
"abstractNote": "我国绿色产品认证标识制度框架已初步形成。作为一项法律制度,绿色产品标识及认证中形成了两组法律关系:一是就产品认可认证,在行政主体、认证机构与申请人之间构成公私混合的规制关系;二是就绿色产品标识授权使用,在上述法律关系主体间构成的商业许可关系。两组法律关系的搭建,形成了我国绿色产品认证标识制度的基本格局。制度的具体完善路径是将现行同类环保产品认证标识纳入绿色产品标识与绿色属性产品标识的二元框架内,或吸收,或拆解,或由市场逐步淘汰,最终形成统一的绿色产品认证标识体系。在制度构建过程中,对第三方认证机构的规制成为制度有效运行的关键。参考域外经验,我国应当通过强化认证机构的独立性,平衡认证机构与申请人之间的制约关系,以及通过加强行政监管与社会监督,防止认证权力寻租,充分发挥绿色产品认证标识制度的实践效果。",
"issue": "6",
"language": "zh-CN",
"libraryCatalog": "CNKI",
"pages": "133-145",
"publicationTitle": "现代法学",
"url": "https://kns.cnki.net/kcms2/article/abstract?v=aGn3Ey0ZxcAi0XeGEjt5HeH9QvBBKaMwsES4SuFJjIdiexE2qhU8bX2aGBIHriUe6WrMOFyCz6TIuYJGlA_YQUO9h2FJwGt_gZfkHkLHnqVgNK8uMWo5lKYMqxvBPfO6_0Zy21140lIwEFrUw-cJtw==&uniplatform=NZKPT",
"volume": "44",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "第三方认证"
},
{
"tag": "绿色产品"
},
{
"tag": "绿色产品标识"
},
{
"tag": "绿色产品认证"
},
{
"tag": "证明商标"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://kns.cnki.net/kcms2/article/abstract?v=aGn3Ey0ZxcCQMiRSLWzbqHFLmF0YiAvOI33I1RqvSIDdZeLKl7q3QL7ioYjCbxuMHo1CSBSG2LYUjI9r30yPonoox-iGbCfgn-YF7W2h79KqPswOTOxrzPV94p2evWa1-zchF2wLCag2WcjSEGNUdSNYdPlVmcGt&uniplatform=NZKPT",
"defer": true,
"items": [
{
"itemType": "journalArticle",
"title": "环境法典中新污染物环境风险管控的立法思路",
"creators": [
{
"lastName": "严",
"firstName": "厚福",
"creatorType": "author"
}
],
"date": "2022",
"ISSN": "1671-7287",
"abstractNote": "我国对常规污染物的治理取得了显著成效,但以有毒有害化学物质的生产和使用为主要来源的新污染物的环境风险仍然较为严峻。当前我国相关环境法律法规和标准中缺乏对新污染物环境风险管控的要求,对于现有化学物质的环境风险管控还存在较为严重的不足。未来环境法典中新污染物环境风险管控立法应当坚持风险预防原则,但风险预防原则并不以追求“零风险”为目标。新污染物环境风险管控立法总体上应当遵循“风险筛查→风险评估→风险管控”的思路。环境风险评估应当聚焦于从科学角度评估新污染物对公众健康和生态环境带来的“风险”本身,不考虑与环境风险无关的经济、社会等因素。确定什么是“不合理的风险”,除了科学判断之外,也需要“正当程序”的加持。风险无法确定时,比照“存在不合理风险”进行管控。在选择风险管控措施时,应当考虑新污染物对公众健康和生态环境的影响程度以及经济、社会等因素。对于新化学物质,应当秉承“除非能证明无害,否则都应当进行适当风险管控”的理念。",
"issue": "5",
"language": "zh-CN",
"libraryCatalog": "CNKI",
"pages": "18-30+115",
"publicationTitle": "南京工业大学学报(社会科学版)",
"url": "https://kns.cnki.net/kcms2/article/abstract?v=aGn3Ey0ZxcCQMiRSLWzbqHFLmF0YiAvOI33I1RqvSIDdZeLKl7q3QL7ioYjCbxuMHo1CSBSG2LYUjI9r30yPonoox-iGbCfgn-YF7W2h79KqPswOTOxrzPV94p2evWa1-zchF2wLCag2WcjSEGNUdSNYdPlVmcGt&uniplatform=NZKPT",
"volume": "21",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "新污染物风险管控"
},
{
"tag": "环境治理"
},
{
"tag": "环境法典"
},
{
"tag": "环境风险评估"
},
{
"tag": "风险预防原则"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://kns.cnki.net/kcms2/article/abstract?v=aGn3Ey0ZxcBuyOSvEQLm_QauzuszuNvOETrZkPfTUVjXy6wyG6-n2nHmyA70y6TC3IN6i68HMAN2clvthsV7F1ypcjao4RepuYmOZSEVhLK8lN1UAkOxmQkqtJdHoHI1N1gKQDPjuaEbdR6APIJ1sA==&uniplatform=NZKPT&language=CHS",
"defer": true,
"items": [
{
"itemType": "journalArticle",
"title": "Box-Behnken Design-响应面法优化碱水解人参茎叶三醇皂苷制备人参皂苷Rg2工艺研究",
"creators": [
{
"lastName": "史",
"firstName": "大臻",
"creatorType": "author"
},
{
"lastName": "吴",
"firstName": "福林",
"creatorType": "author"
},
{
"lastName": "谭",
"firstName": "璐",
"creatorType": "author"
},
{
"lastName": "周",
"firstName": "柏松",
"creatorType": "author"
},
{
"lastName": "刘",
"firstName": "金平",
"creatorType": "author"
},
{
"lastName": "李",
"firstName": "平亚",
"creatorType": "author"
},
{
"lastName": "赖",
"firstName": "思含",
"creatorType": "author"
}
],
"date": "2022",
"DOI": "10.13863/j.issn1001-4454.2022.01.030",
"ISSN": "1001-4454",
"abstractNote": "目的:利用Box-Behnken Design-响应面法优选制备人参皂苷Rg<sub>2</sub>的最佳工艺参数。方法:以碱解反应的碱度、温度、时间作为考察因素,人参茎叶三醇皂苷中人参皂苷Rg<sub>2</sub>含量作为评价指标,运用Design-Expert 8.0.5b软件对工艺参数进行优化并获得最佳工艺参数。结果:经优化得到碱水解人参茎叶三醇皂苷制备人参皂苷Rg<sub>2</sub>的最佳工艺参数:反应碱度7.4%、反应温度187℃、反应时间5 h。验证试验表明,在此工艺参数下可将人参皂苷Rg<sub>2</sub>含量提高至9.84%,且工艺稳定。结论:经过优化的工艺可有效提高人参茎叶三醇皂苷中人参皂苷Rg<sub>2</sub>含量。",
"issue": "1",
"language": "zh-CN",
"libraryCatalog": "CNKI",
"pages": "173-176",
"publicationTitle": "中药材",
"url": "https://kns.cnki.net/kcms2/article/abstract?v=aGn3Ey0ZxcBuyOSvEQLm_QauzuszuNvOETrZkPfTUVjXy6wyG6-n2nHmyA70y6TC3IN6i68HMAN2clvthsV7F1ypcjao4RepuYmOZSEVhLK8lN1UAkOxmQkqtJdHoHI1N1gKQDPjuaEbdR6APIJ1sA==&uniplatform=NZKPT&language=CHS",
"volume": "45",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Box-Behnken Design-响应面法"
},
{
"tag": "人参皂苷Rg2"
},
{
"tag": "人参茎叶三醇皂苷"
},
{
"tag": "工艺优化"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Eran Rosenthal^https?://www\.haaretz\.(co\.il|com)//**
Copyright (c) 2015 Eran Rosenthal and contributors
This program is free software: you can redistribute it and/or
modify it under the terms of the GNU Affero General Public License
as published by the Free Software Foundation, either version 3 of
the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public
License along with this program. If not, see
<http://www.gnu.org/licenses/>.
*/
function detectWeb(doc, url) {
let path = new URL(url).pathname;
if (/article-podcast\//.test(path)) {
return "podcast";
}
if (/\/opinions?\/letters\//.test(path)) {
return "letter";
}
if (/-cartoon\/|\/opinions\/caricatures\//.test(path)) {
return "artwork";
}
// Selectors for multiple results will also match on the home page but not
// all of them point to single items. Special-case the home page to prevent
// this. This could have been dealt with better if the class names weren't
// obfuscated.
if (path === "/") return false;
let ld = getLD(doc);
if (ld && ["NewsArticle", "LiveBlogPosting"].includes(ld["@type"])) {
return "newspaperArticle";
}
return getSearchResults(doc, true) && "multiple";
}
function getSearchResults(doc, checkOnly) {
let url = doc.location.href;
if (/^https:\/\/[^/]+\/search-results($|\?)/.test(url)) {
if (checkOnly) { // only observe in detection stage; otherwise an error
let root = doc.getElementById("__next");
if (root) Z.monitorDOMChanges(root);
}
return getSiteSearchContent(doc, checkOnly);
}
else {
return getSectionContent(doc, checkOnly);
}
}
function getSiteSearchContent(doc, checkOnly) {
let items = {};
let found = false;
let rows = doc.querySelectorAll('article header a');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function getSectionContent(doc, checkOnly) {
let items = {};
let found = false;
let rows = doc.querySelectorAll('main section a[href^="/"]');
for (let row of rows) {
if (!row.querySelector("h1, h2, h3") && !(row.parentElement && row.parentElement.tagName === "LI")) continue;
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
async function doWeb(doc, url) {
if (detectWeb(doc, url) == 'multiple') {
let items = await Zotero.selectItems(getSearchResults(doc, false));
if (!items) return;
for (let url of Object.keys(items)) {
await scrape(await requestDocument(url));
}
}
else {
await scrape(doc, url);
}
}
async function scrape(doc, url = doc.location.href) {
let translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', (_obj, item) => {
item.libraryCatalog = "Haaretz";
let ld = getLD(doc);
// replace creators; EM fails for multiple authors
if (ld.author) {
item.creators = ld.author
.filter(obj => obj["@type"] === "Person")
.map(obj => ZU.cleanAuthor(obj.name, "author"));
}
// find section by breadcrumb but only if breadcrumb does not stop at
// top level
if (ld.breadcrumb && ld.breadcrumb.itemListElement.length > 1) {
let breadCrumb = ld.breadcrumb.itemListElement.slice(-1)[0].name;
if (breadCrumb) {
item.section = breadCrumb;
}
}
else {
item.section = "";
}
// title (headline); EM sometimes gives headline that contains more
// noise
if (ld.headline) {
item.title = ld.headline.replace(/ [-|] .+$/, "");
}
// abstract (abstract content in the <meta> elements are inconveniently
// capitalized)
if (ld.description) {
item.abstractNote = ld.description;
}
else {
let lede = text(doc, "main header h1 + p");
if (lede) {
item.abstractNote = lede;
}
}
// Fix language field for Arabic content
let sample = item.title || item.abstractNote || "";
if (/[\u0600-\u06ff]/.test(sample)) {
item.language = "ar";
}
// Note that the Arabic-language content also falls under the Hebrew
// publicationTitle for some reason
let langIsEn = /^en/i.test(item.language || "en");
item.publicationTitle = langIsEn ? "Haaretz" : "הארץ";
// Fix authorship for editorial articles
if (/\/opinions?\/editorial/.test(item.url || doc.location.href)) {
item.creators = [];
}
// Fix authorship, container title, and length for podcasts
if (item.itemType === "podcast") {
let firstCreator = item.creators[0];
if (firstCreator) {
let podcastTitle = (firstCreator.firstName || "") + (firstCreator.lastName ? ` ${firstCreator.lastName}` : "");
if (podcastTitle) {
item.seriesTitle = podcastTitle;
}
}
item.creators = [];
let runningTime = attr(doc, 'main header div[role="slider"]', "aria-valuemax");
if (runningTime) {
item.runningTime = runningTime;
}
}
if (item.itemType === "letter") {
item.letterType = langIsEn ? "Letter to the editor" : "מכתב לעורך";
delete item.section;
// there's no easy way of detecting the author reliably for
// English-language letters
if (langIsEn) item.creators = [];
}
item.complete();
});
let em = await translator.getTranslatorObject();
em.itemType = detectWeb(doc, url) || "newspaperArticle";
await em.doWeb(doc, url);
}
function getLD(doc) {
let ldScript = text(doc, "script[type='application/ld+json']");
if (ldScript) return JSON.parse(ldScript);
return null;
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.haaretz.com/2015-08-14/ty-article/islamic-jihad-if-hunger-striker-dies-well-respond-with-force/0000017f-f0b6-d223-a97f-fdff11760000",
"items": [
{
"itemType": "newspaperArticle",
"title": "Islamic Jihad: If hunger striker dies, we'll respond with force against Israel",
"creators": [
{
"firstName": "Jack",
"lastName": "Khoury",
"creatorType": "author"
},
{
"firstName": "Shirly",
"lastName": "Seidler",
"creatorType": "author"
},
{
"firstName": "Ido",
"lastName": "Efrati",
"creatorType": "author"
}
],
"date": "2015-08-14",
"abstractNote": "Islamic Jihad says it will no longer be committed to maintaining calm if Mohammed Allaan, who lost consciousness after 60-day hunger strike, dies.",
"language": "en",
"libraryCatalog": "Haaretz",
"publicationTitle": "Haaretz",
"shortTitle": "Islamic Jihad",
"url": "https://www.haaretz.com/2015-08-14/ty-article/islamic-jihad-if-hunger-striker-dies-well-respond-with-force/0000017f-f0b6-d223-a97f-fdff11760000",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Palestinian hunger strike"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.haaretz.co.il/news/politics/2015-08-15/ty-article/0000017f-e675-da9b-a1ff-ee7f93440000",
"items": [
{
"itemType": "newspaperArticle",
"title": "פלסטיני דקר חייל ופצע אותו באורח קל בכביש 443 סמוך לבית חורון",
"creators": [
{
"firstName": "גילי",
"lastName": "כהן",
"creatorType": "author"
},
{
"firstName": "עמירה",
"lastName": "הס",
"creatorType": "author"
}
],
"date": "2015-08-15",
"abstractNote": "כוח צה\"ל שהיה במקום פתח באש לעבר הפלסטיני ופצע אותו באורח קל, והוא נעצר. החייל והדוקר פונו לבית החולים שערי צדק. בתחילת השבוע נדקר באזור צעיר ישראלי נוסף שנפצע בינוני",
"language": "he",
"libraryCatalog": "Haaretz",
"publicationTitle": "הארץ",
"section": "מדיני ביטחוני",
"url": "https://www.haaretz.co.il/news/politics/2015-08-15/ty-article/0000017f-e675-da9b-a1ff-ee7f93440000",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "טרור"
},
{
"tag": "פיגוע"
},
{
"tag": "פלסטינים"
},
{
"tag": "צה\"ל"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.haaretz.com/search-results?q=cuisine",
"defer": true,
"items": "multiple"
},
{
"type": "web",
"url": "https://www.haaretz.com/science-and-health/climate-change",
"defer": true,
"items": "multiple"
},
{
"type": "web",
"url": "https://www.haaretz.com/ty-tag/lgbt-0000017f-da2a-d42c-afff-dffad1ae0000",
"defer": true,
"items": "multiple"
},
{
"type": "web",
"url": "https://www.haaretz.co.il/debate/2023-10-26/ty-article/0000018b-6b3b-de3d-abdb-7f7b1ba00000",
"items": [
{
"itemType": "newspaperArticle",
"title": "أمام مشاهد الدمار، في غزة بدأوا يشككون بالقرار الذي اتخذته حماس",
"creators": [
{
"firstName": "جاكي",
"lastName": "خوري",
"creatorType": "author"
}
],
"date": "2023-10-26",
"abstractNote": "سكان القطاع بدأوا يقولون بصوت مرتفع إن حماس أخطأت في تقدير المخاطر المترتبة عن الهجوم على إسرائيل ـ وربما تكون ارتكبت خطأ مصيرياً أول مَن يعاني مِن جرّائه هم السكان الذين يتلقّون، بأجسادهم انتقام الجيش الإسرائيلي",
"language": "ar",
"libraryCatalog": "Haaretz",
"publicationTitle": "הארץ",
"section": "הארץ בערבית",
"url": "https://www.haaretz.co.il/debate/2023-10-26/ty-article/0000018b-6b3b-de3d-abdb-7f7b1ba00000",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.haaretz.co.il/opinions/editorial-articles/2023-11-01/ty-article-opinion/0000018b-8658-d055-afbf-b6fb84690000",
"items": [
{
"itemType": "newspaperArticle",
"title": "ארדן, פרובוקציה עלובה",
"creators": [],
"date": "2023-11-01",
"language": "he",
"libraryCatalog": "Haaretz",
"publicationTitle": "הארץ",
"section": "מאמר מערכת",
"url": "https://www.haaretz.co.il/opinions/editorial-articles/2023-11-01/ty-article-opinion/0000018b-8658-d055-afbf-b6fb84690000",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "גלעד ארדן"
},
{
"tag": "האומות המאוחדות - האו\"ם"
},
{
"tag": "מלחמת חרבות ברזל"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.haaretz.co.il/digital/podcast/2023-10-22/ty-article-podcast/0000018b-5742-db77-afdb-dfc2efea0000",
"items": [
{
"itemType": "podcast",
"title": "28 דקות של אסקפיזם שמתחילות בשירה האס ונגמרות בסמבוסק חשאי",
"creators": [],
"abstractNote": "תרבות יום א', פודקאסט התרבות של \"הארץ\" עם גילי איזיקוביץ וניב הדס: 28 דקות של אסקפיזם שהתחילו בסדרה החדשה של שירה האס ובמחמאות לא צפויות לנטפליקס.",
"language": "he",
"runningTime": "28:00",
"seriesTitle": "תרבות יום א'",
"url": "https://www.haaretz.co.il/digital/podcast/2023-10-22/ty-article-podcast/0000018b-5742-db77-afdb-dfc2efea0000",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.haaretz.com/israel-news/podcasts/2022-10-06/ty-article-podcast/.premium/will-religious-voters-decide-who-is-israels-next-leader-listen-to-election-overdose/00000183-ae7e-d0e7-a7a3-fefee5440000",
"items": [
{
"itemType": "podcast",
"title": "Will religious voters decide who Israel's next leader is? LISTEN to Election Overdose",
"creators": [],
"abstractNote": "Israel's national religious sector could play a key role in Israel's November 1 election, and parties all across the political spectrum are seeking the religious vote. Haaretz's Election Overdose podcast tries to make sense of the religious voter's dilemma",
"language": "en",
"seriesTitle": "Election Overdose",
"shortTitle": "Will religious voters decide who Israel's next leader is?",
"url": "https://www.haaretz.com/israel-news/podcasts/2022-10-06/ty-article-podcast/.premium/will-religious-voters-decide-who-is-israels-next-leader-listen-to-election-overdose/00000183-ae7e-d0e7-a7a3-fefee5440000",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Israeli elections"
},
{
"tag": "Israeli politics"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.haaretz.com/opinion/letters/2019-09-03/ty-article-opinion/letters-to-the-editor-were-hiding-a-girl-to-protect-her-from-deportation/0000017f-ecf5-d0f7-a9ff-eef59efa0000",
"items": [
{
"itemType": "letter",
"title": "We are hiding a Filipino girl to protect her from deportation",
"creators": [],
"date": "2019-09-03",
"abstractNote": "The child we are hiding My partner and I live in the Tel Aviv area. We are sheltering a foreign worker from the Philippines and her 12-year-old daughter. All our friends",
"language": "en",
"letterType": "Letter to the editor",
"libraryCatalog": "Haaretz",
"url": "https://www.haaretz.com/opinion/letters/2019-09-03/ty-article-opinion/letters-to-the-editor-were-hiding-a-girl-to-protect-her-from-deportation/0000017f-ecf5-d0f7-a9ff-eef59efa0000",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "LGBTQ"
},
{
"tag": "Migrant workers"
},
{
"tag": "Russia"
},
{
"tag": "Vladimir Putin"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.haaretz.co.il/opinions/letters/2023-10-31/ty-article-opinion/.premium/0000018b-85eb-d805-a98f-b5fb8d4e0000",
"items": [
{
"itemType": "letter",
"title": "הופקרנו",
"creators": [
{
"firstName": "נועה",
"lastName": "אצילי",
"creatorType": "author"
}
],
"date": "2023-10-31",
"language": "he",
"letterType": "מכתב לעורך",
"libraryCatalog": "Haaretz",
"url": "https://www.haaretz.co.il/opinions/letters/2023-10-31/ty-article-opinion/.premium/0000018b-85eb-d805-a98f-b5fb8d4e0000",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.haaretz.co.il/opinions/caricatures/2023-10-18/ty-article-opinion/.premium/0000018b-3d97-dd29-a3df-fdf735970000",
"items": [
{
"itemType": "artwork",
"title": "קריקטורה יומית",
"creators": [
{
"firstName": "ערן",
"lastName": "וולקובסקי",
"creatorType": "author"
}
],
"date": "2023-10-18",
"abstractNote": "הארץ",
"language": "he",
"libraryCatalog": "Haaretz",
"url": "https://www.haaretz.co.il/opinions/caricatures/2023-10-18/ty-article-opinion/.premium/0000018b-3d97-dd29-a3df-fdf735970000",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
{"exportCharset":"UTF-8"}100Simon Kornblithtxt/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2017-2019 Simon Kornblith
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
var fieldMap = {
edition: "edition",
publisher: "publisher",
doi: "DOI",
isbn: "ISBN",
issn: "ISSN",
conference: "conferenceName",
volume: "volume",
issue: "issue",
pages: "pages",
number: "episodeNumber"
};
var typeMap = {
book: "Cite book",
bookSection: "Cite book",
journalArticle: "Cite journal",
magazineArticle: "Cite news",
newspaperArticle: "Cite news",
thesis: "Cite paper",
letter: "Cite",
manuscript: "Cite book",
interview: "Cite interview",
film: "Cite AV media",
artwork: "Cite",
webpage: "Cite web",
report: "Cite conference",
bill: "Cite",
hearing: "Cite",
patent: "Cite",
statute: "Cite",
email: "Cite email",
map: "Cite",
blogPost: "Cite web",
instantMessage: "Cite",
forumPost: "Cite web",
audioRecording: "Cite",
presentation: "Cite paper",
videoRecording: "Cite AV media",
tvBroadcast: "Cite episode",
radioBroadcast: "Cite episode",
podcast: "Cite podcast",
computerProgram: "Cite",
conferencePaper: "Cite conference",
document: "Cite",
encyclopediaArticle: "Cite encyclopedia",
dictionaryEntry: "Cite encyclopedia"
};
function formatAuthors(authors, useTypes) {
var text = "";
for (var i = 0; i < authors.length; i++) {
var author = authors[i];
text += ", ";
if (author.firstName) text += author.firstName;
if (author.firstName && author.lastName) text += " ";
if (author.lastName) text += author.lastName;
if (useTypes) text += " (" + Zotero.Utilities.getLocalizedCreatorType(author.creatorType) + ")";
}
return text.substr(2);
}
function formatFirstAuthor(authors, useTypes) {
var firstCreator = authors.shift();
var field = firstCreator.lastName;
if (firstCreator.lastName && firstCreator.firstName) field += ", ";
field += firstCreator.firstName;
if (useTypes) field += " (" + Zotero.Utilities.getLocalizedCreatorType(firstCreator.creatorType) + ")";
return field;
}
function formatDate(date) {
date = date.substr(0, date.indexOf(" "));
if (date.substr(4, 3) == "-00") {
date = date.substr(0, 4);
}
else if (date.substr(7, 3) == "-00") {
date = date.substr(0, 7);
}
return date;
}
function doExport() {
var first = true;
let item;
// eslint-disable-next-line no-cond-assign
while (item = Zotero.nextItem()) {
// determine type
var type = typeMap[item.itemType];
if (!type) type = "Cite";
var properties = {};
var editors = [];
var translators = [];
var interviewers = [];
for (var wikiField in fieldMap) {
var zoteroField = fieldMap[wikiField];
if (item[zoteroField]) properties[wikiField] = item[zoteroField];
}
if (item.creators && item.creators.length) {
if (type == "Cite episode") {
// now add additional creators
properties.credits = formatAuthors(item.creators, true);
}
else if (type == "Cite AV media") {
properties.people = "";
// make first creator first, last
properties.people = formatFirstAuthor(item.creators, true);
// now add additional creators
if (item.creators.length) properties.people += ", " + formatAuthors(item.creators, true);
// use type
if (item.type) {
properties.medium = item.type;
}
}
else if (type == "Cite email") {
// get rid of non-authors
for (var i = 0; i < item.creators.length; i++) {
if (item.creators[i].creatorType != "author") {
// drop contributors
item.creators.splice(i--, 1);
}
}
// make first authors first, last
properties.author = formatFirstAuthor(item.creators);
// add supplemental authors
if (item.creators.length) {
properties.author += ", " + formatAuthors(item.creators);
}
}
else if (type == "Cite interview") {
// check for an interviewer or translator
for (let i = 0; i < item.creators.length; i++) {
if (item.creators[i].creatorType == "translator") {
translators.push(item.creators.splice(i--, 1)[0]);
}
else if (item.creators[i].creatorType == "interviewer") {
interviewers.push(item.creators.splice(i--, 1)[0]);
}
else if (item.creators[i].creatorType == "contributor") {
// drop contributors
item.creators.splice(i--, 1);
}
}
// interviewers
if (interviewers.length) {
properties.interviewer = formatAuthors([interviewers.shift()]);
if (interviewers.length) properties.cointerviewers = formatAuthors(interviewers);
}
// translators
if (translators.length) {
properties.cointerviewers = (properties.cointerviewers ? properties.cointerviewers + ", " : "");
properties.cointerviewers += formatAuthors(translators);
}
// interviewees
if (item.creators.length) {
// take up to 4 interviewees
let i = 1;
let interviewee;
while ((interviewee = item.creators.shift()) && i <= 4) {
var lastKey = "last";
var firstKey = "first";
if (i != 1) {
lastKey += i;
firstKey += i;
}
properties[lastKey] = interviewee.lastName;
properties[firstKey] = interviewee.firstName;
i += 1;
}
}
// medium
if (item.medium) {
properties.type = item.medium;
}
}
else {
// check for an editor or translator
editors = [];
translators = [];
for (let i = 0; i < item.creators.length; i++) {
var creator = item.creators[i];
if (creator.creatorType == "translator") {
translators.push(item.creators.splice(i--, 1)[0]);
}
else if (creator.creatorType == "editor") {
editors.push(item.creators.splice(i--, 1)[0]);
}
else if (creator.creatorType == "contributor") {
// drop contributors
item.creators.splice(i--, 1);
}
}
// editors
var others = "";
if (editors.length) {
var editorText = formatAuthors(editors) + (editors.length == 1 ? " (ed.)" : " (eds.)");
if (item.itemType == "bookSection" || type == "Cite conference" || type == "Cite encyclopedia") {
// as per docs, use editor only for chapters
properties.editors = editorText;
}
else {
others = editorText;
}
}
// translators
if (translators.length) {
if (others) others += ", ";
others += formatAuthors(translators) + " (trans.)";
}
// We need to be certain that these come out in the right order, so
// deal with it when actually writing output
if (item.creators.length) {
properties.authors = item.creators.map(function (c) {
return {
last: c.lastName,
first: c.firstName
};
});
}
// attach others
if (others) {
properties.others = others;
}
}
}
if (item.itemType == "bookSection") {
properties.title = item.publicationTitle;
properties.chapter = item.title;
}
else {
properties.title = item.title;
if (type == "Cite journal") {
properties.journal = item.publicationTitle;
}
else if (type == "Cite conference") {
properties.booktitle = item.publicationTitle;
}
else if (type == "Cite encyclopedia") {
properties.encyclopedia = item.publicationTitle;
}
else {
properties.work = item.publicationTitle;
}
}
if (type == "Cite web" && item.type) {
properties.format = item.type;
}
if (item.place) {
if (type == "Cite episode") {
properties.city = item.place;
}
else {
properties.location = item.place;
}
}
if (item.series) {
properties.series = item.series;
}
else if (item.seriesTitle) {
properties.series = item.seriesTitle;
}
else if (item.seriesText) {
properties.series = item.seriesText;
}
// Don't include access date for journals with no URL
if (item.accessDate && !(item.itemType == 'journalArticle' && !item.url)) {
properties["access-date"] = formatDate(item.accessDate);
}
if (item.date) {
if (type == "Cite email") {
properties.senddate = formatDate(item.date);
}
else {
var date = Zotero.Utilities.strToDate(item.date);
if (date.year != undefined) {
var mm = "00";
if (date.month !== undefined) {
mm = date.month;
mm = ZU.lpad(mm + 1, '0', 2);
}
var dd = "00";
if (date.day !== undefined) {
dd = ZU.lpad(date.day, '0', 2);
}
var yyyy = ZU.lpad(date.year.toString(), '0', 4);
date = formatDate(yyyy + '-' + mm + '-' + dd + ' ');
if (type == "Cite email") {
properties.senddate = date;
}
else {
properties.date = date;
}
}
}
}
if (item.runningTime) {
if (type == "Cite episode") {
properties.minutes = item.runningTime;
}
else {
properties.time = item.runningTime;
}
}
if (item.url && item.accessDate) {
if (item.itemType == "bookSection") {
properties.chapterurl = item.url;
}
else {
properties.url = item.url;
}
}
if (properties.pages) {
properties.pages = properties.pages.replace(/[^0-9]+/, "–"); // separate page numbers with en dash
}
if (item.extra) {
// automatically fill in PMCID, PMID, and JSTOR fields
var extraFields = {
pmid: /^PMID\s*:\s*([0-9]+)/m,
pmc: /^PMCID\s*:\s*((?:PMC)?[0-9]+)/m
};
for (let f in extraFields) {
let match = item.extra.match(extraFields[f]);
if (match) properties[f] = match[1];
}
}
if (item.url) {
//try to extract missing fields from URL
var libraryURLs = {
pmid: /www\.ncbi\.nlm\.nih\.gov\/pubmed\/([0-9]+)/i,
pmc: /www\.ncbi\.nlm\.nih\.gov\/pmc\/articles\/((?:PMC)?[0-9]+)/i,
jstor: /www\.jstor\.org\/stable\/([^?#]+)/i
};
for (let f in libraryURLs) {
if (properties[f]) continue; //don't overwrite from extra field
let match = item.url.match(libraryURLs[f]);
if (match) properties[f] = match[1];
}
}
// write out properties
Zotero.write((first ? "" : "\r\n") + "{{" + type);
for (var key in properties) {
if (!properties[key]) continue;
if (key == 'authors') {
var index = properties.authors.length > 1;
for (let i = 0; i < properties.authors.length; i++) {
Zotero.write('| last' + (i || index ? i + 1 : '') + ' = ' + properties.authors[i].last);
if (properties.authors[i].first) {
Zotero.write('| first' + (i || index ? i + 1 : '') + ' = ' + properties.authors[i].first);
}
}
}
else {
Zotero.write("| " + key + " = " + escapeWiki(properties[key]));
}
}
Zotero.write("}}");
first = false;
}
}
function escapeWiki(markup) {
return markup.replace('|', '{{!}}');
}
100Sean Takats, Michael Berkowitz, Santawort, and Aurimas Vinckevicius^https?://pubs\.acs\.org/(toc/|journal/|topic/|isbn/\d|doi/(full/|abs/|epdf/|book/)?10\.|action/(doSearch\?|showCitFormats\?.*doi))/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2008 Sean Takats, Michael Berkowitz, Santawort, Aurimas
Vinckevicius, Philipp Zumstein, and other contributors.
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function getSearchResults(doc, checkOnly) {
var items = {}, found = false;
var rows = doc.querySelectorAll('.issue-item_title a, .teaser_title a');
for (let i = 0; i < rows.length; i++) {
var href = rows[i].href;
var title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
var doi = getDoi(href);
if (!doi) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
// Return the DOI indicated by the URL, or null when no DOI is found
// The input should be a properly encoded URL
function getDoi(url) {
let urlObj = new URL(url);
let doi = decodeURIComponent(urlObj.pathname).match(/^\/doi\/(?:.+\/)?(10\.\d{4,}\/.+)$/);
if (doi) {
doi = doi[1];
}
else {
doi = urlObj.searchParams.get("doi");
}
return doi;
}
/** ***************************
* BEGIN: Supplementary data *
*****************************/
var suppTypeMap = {
txt: 'text/plain',
csv: 'text/csv',
bz2: 'application/x-bzip2',
gz: 'application/gzip',
zip: 'application/zip',
pdf: 'application/pdf',
doc: 'application/msword',
docx: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
xls: 'application/vnd.ms-excel',
xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
};
function getSupplements(doc, supplementAsLink = false) {
let supplements = [];
// Note that the lists of supplements are duplicated in the main
// content side and right-side panel (if any). We want to confine it to
// one (or the only) side in order to avoid having to deduplicate.
let supplementLinks = doc.querySelectorAll(".article_content-left .suppl-anchor");
for (let i = 0; i < supplementLinks.length; i++) {
let elem = supplementLinks[i];
let url = elem.href;
if (!url) continue;
let pathComponents = url.replace(/[?#].+$/, "").split(".");
// possible location of file extension (following the last dot)
let ext = pathComponents[pathComponents.length - 1].toLowerCase();
let mimeType = suppTypeMap[ext];
// Only save file when MIME type is known *and* when we aren't
// specifically told otherwise
let snapshot = Boolean(!supplementAsLink && mimeType);
// The "title" (text describing what the supplement file is for) can be
// substantially long, while the filename is redundant (and it doesn't
// inform the user that the file is meant to be a supplement). We
// simply number them in the order they appear.
let title = `Supplement ${i + 1}`;
let attachment = { title, url, snapshot };
if (mimeType) attachment.mimeType = mimeType;
supplements.push(attachment);
}
return supplements;
}
/** *************************
* END: Supplementary data *
***************************/
function detectWeb(doc, url) {
if (getSearchResults(doc, true)) {
return "multiple";
}
let urlObj = new URL(url);
// standalone "download citation" page
if (urlObj.pathname === "/action/showCitFormats"
&& urlObj.searchParams.get("doi")) {
// May be inaccurate, but better than not detecting
return "journalArticle";
}
// epdf viewer web app
if (urlObj.pathname.startsWith("/doi/epdf/")) {
// TODO: check if "epdf" viewer is always for journal articles
return "journalArticle";
}
// books such as https://pubs.acs.org/doi/book/10.1021/acsguide
if (urlObj.pathname.startsWith("/doi/book/")) {
return "book";
}
if (doc.querySelector("#returnToBook")) {
// Some of them may be conference articles, but the RIS doesn't say so
return "bookSection";
}
else if (getDoi(url)) {
// TODO: check if this block still works
var type = doc.getElementsByClassName("content-navigation__contentType");
if (type.length && type[0].textContent.includes("Chapter")) {
return "bookSection";
}
else {
return "journalArticle";
}
}
return false;
}
function cleanNumberField(item, field) {
if (Object.hasOwn(item, field)) {
let n = parseInt(item[field]);
if (n <= 0 || isNaN(n)) {
delete item[field];
}
}
}
// In most cases the URL contains the DOI which is sufficient for obtaining the
// RIS, so there's no need to download the document if it's not already there.
// But when supplements as attachments are desired, we need the actual document
// for the supplement links. Our convention here is to pass falsy as the "doc"
// argument when supplements are not requested, and the actual doc (maybe
// fetched by us) when we want the supplements.
async function doWeb(doc, url) {
let attachSupplement = false;
let supplementAsLink = false;
// reduce some overhead by fetching these only once
if (Z.getHiddenPref) {
attachSupplement = Z.getHiddenPref("attachSupplementary");
supplementAsLink = Z.getHiddenPref("supplementaryAsLink");
}
if (detectWeb(doc, url) == "multiple") { // search
let items = await Z.selectItems(getSearchResults(doc));
if (!items) return;
for (let url of Object.keys(items)) {
await scrape(
attachSupplement && await requestDocument(url),
url,
supplementAsLink
);
await delay(500);
}
}
else {
// single article
await scrape(attachSupplement && doc, url, supplementAsLink);
}
}
function delay(milliseconds) {
return new Promise(resolve => setTimeout(resolve, milliseconds));
}
async function scrape(doc, url, supplementAsLink) {
let doi = getDoi(url);
if (doc && /\/action\/showCitFormats\?|\/doi\/epdf\//.test(url)) {
// standalone "export citation" page or "epdf viewer", *and*
// supplements are desired; we need to fetch the actual article page
// and scrape that
url = `https://pubs.acs.org/doi/${doi}`;
doc = await requestDocument(url);
}
let risURL = new URL("/action/downloadCitation?include=abs&format=ris&direct=true", url);
risURL.searchParams.set("doi", doi);
risURL.searchParams.set("downloadFileName", doi.replace(/^10\.\d{4,}\//, ""));
let risText = await requestText(risURL.href, { headers: { Referer: url } });
// Delete redundant DOI info
risText = risText.replace(/\nN1 {2}- doi:[^\n]+/, "");
// Fix noise in DO field
risText = risText.replace("\nDO - doi:", "\nDO - ");
// Fix the wrong mapping for journal abbreviations
risText = risText.replace("\nJO -", "\nJ2 -");
// Use publication date when available
if (risText.includes("\nDA -")) {
risText = risText.replace(/\nY1 {2}- [^\n]*/, "")
.replace("\nDA -", "\nY1 -");
}
let translator = Zotero.loadTranslator("import");
// RIS
translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7");
translator.setString(risText);
translator.setHandler("itemDone", function (obj, item) {
if (item.date) {
item.date = ZU.strToISO(item.date);
}
item.attachments = [];
if (/\/doi\/book\//.test(url)) {
// books as standalone items don't have full pdfs (TODO: verify)
if (doc) {
item.attachments.push({
title: "Snapshot",
url: url,
mimeType: "text/html"
});
}
}
else {
// standard pdf
item.attachments.push({
title: "Full Text PDF",
url: `/doi/pdf/${doi}`,
mimeType: "application/pdf"
});
}
// supplements
if (doc) {
item.attachments.push(...getSupplements(doc, supplementAsLink));
}
// Cleanup fields that may contain invalid numeric values
cleanNumberField(item, "numberOfVolumes");
cleanNumberField(item, "numPages");
item.complete();
});
await translator.translate();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://pubs.acs.org/doi/10.1021/es103607c",
"items": [
{
"itemType": "journalArticle",
"title": "Life Cycle Environmental Assessment of Lithium-Ion and Nickel Metal Hydride Batteries for Plug-In Hybrid and Battery Electric Vehicles",
"creators": [
{
"lastName": "Majeau-Bettez",
"firstName": "Guillaume",
"creatorType": "author"
},
{
"lastName": "Hawkins",
"firstName": "Troy R.",
"creatorType": "author"
},
{
"lastName": "Strømman",
"firstName": "Anders Hammer",
"creatorType": "author"
}
],
"date": "2011-05-15",
"DOI": "10.1021/es103607c",
"ISSN": "0013-936X",
"abstractNote": "This study presents the life cycle assessment (LCA) of three batteries for plug-in hybrid and full performance battery electric vehicles. A transparent life cycle inventory (LCI) was compiled in a component-wise manner for nickel metal hydride (NiMH), nickel cobalt manganese lithium-ion (NCM), and iron phosphate lithium-ion (LFP) batteries. The battery systems were investigated with a functional unit based on energy storage, and environmental impacts were analyzed using midpoint indicators. On a per-storage basis, the NiMH technology was found to have the highest environmental impact, followed by NCM and then LFP, for all categories considered except ozone depletion potential. We found higher life cycle global warming emissions than have been previously reported. Detailed contribution and structural path analyses allowed for the identification of the different processes and value-chains most directly responsible for these emissions. This article contributes a public and detailed inventory, which can be easily be adapted to any powertrain, along with readily usable environmental performance assessments.",
"issue": "10",
"journalAbbreviation": "Environ. Sci. Technol.",
"libraryCatalog": "ACS Publications",
"pages": "4548-4554",
"publicationTitle": "Environmental Science & Technology",
"url": "https://doi.org/10.1021/es103607c",
"volume": "45",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://pubs.acs.org/toc/nalefd/12/6",
"items": "multiple"
},
{
"type": "web",
"url": "https://pubs.acs.org/doi/abs/10.1021/bk-2011-1071.ch005",
"items": [
{
"itemType": "bookSection",
"title": "Redox Chemistry and Natural Organic Matter (NOM): Geochemists’ Dream, Analytical Chemists’ Nightmare",
"creators": [
{
"lastName": "Macalady",
"firstName": "Donald L.",
"creatorType": "author"
},
{
"lastName": "Walton-Day",
"firstName": "Katherine",
"creatorType": "author"
}
],
"date": "2011-01-01",
"ISBN": "9780841226524",
"abstractNote": "Natural organic matter (NOM) is an inherently complex mixture of polyfunctional organic molecules. Because of their universality and chemical reversibility, oxidation/reductions (redox) reactions of NOM have an especially interesting and important role in geochemistry. Variabilities in NOM composition and chemistry make studies of its redox chemistry particularly challenging, and details of NOM-mediated redox reactions are only partially understood. This is in large part due to the analytical difficulties associated with NOM characterization and the wide range of reagents and experimental systems used to study NOM redox reactions. This chapter provides a summary of the ongoing efforts to provide a coherent comprehension of aqueous redox chemistry involving NOM and of techniques for chemical characterization of NOM. It also describes some attempts to confirm the roles of different structural moieties in redox reactions. In addition, we discuss some of the operational parameters used to describe NOM redox capacities and redox states, and describe nomenclature of NOM redox chemistry. Several relatively facile experimental methods applicable to predictions of the NOM redox activity and redox states of NOM samples are discussed, with special attention to the proposed use of fluorescence spectroscopy to predict relevant redox characteristics of NOM samples.",
"bookTitle": "Aquatic Redox Chemistry",
"extra": "DOI: 10.1021/bk-2011-1071.ch005",
"libraryCatalog": "ACS Publications",
"pages": "85-111",
"publisher": "American Chemical Society",
"series": "ACS Symposium Series",
"seriesNumber": "1071",
"shortTitle": "Redox Chemistry and Natural Organic Matter (NOM)",
"url": "https://doi.org/10.1021/bk-2011-1071.ch005",
"volume": "1071",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://pubs.acs.org/doi/abs/10.1021/jp000606%2B",
"items": [
{
"itemType": "journalArticle",
"title": "Theory of Charge Transport in Polypeptides",
"creators": [
{
"lastName": "Schlag",
"firstName": "E. W.",
"creatorType": "author"
},
{
"lastName": "Sheu",
"firstName": "Sheh-Yi",
"creatorType": "author"
},
{
"lastName": "Yang",
"firstName": "Dah-Yen",
"creatorType": "author"
},
{
"lastName": "Selzle",
"firstName": "H. L.",
"creatorType": "author"
},
{
"lastName": "Lin",
"firstName": "S. H.",
"creatorType": "author"
}
],
"date": "2000-08-01",
"DOI": "10.1021/jp000606+",
"ISSN": "1520-6106",
"abstractNote": "We have derived phase space and diffusion theories for a new hopping model of charge transport in polypeptides and thence for distal chemical kinetics. The charge is transferred between two carbamide groups on each side of the Cα atom hinging two amino acid groups. When the torsional angles on the hinge approach a certain region of the Ramachandran plot, the charge transfer has zero barrier height and makes charge transfer the result of strong electronic correlation. The mean first passage time calculated from this analytic model of some 164 fs is in reasonable agreement with prior molecular dynamics calculation of some 140 fs and supports this new bifunctional model for charge transport and chemical reactions in polypeptides.",
"issue": "32",
"journalAbbreviation": "J. Phys. Chem. B",
"libraryCatalog": "ACS Publications",
"pages": "7790-7794",
"publicationTitle": "The Journal of Physical Chemistry B",
"url": "https://doi.org/10.1021/jp000606+",
"volume": "104",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://pubs.acs.org/journal/acbcct",
"items": "multiple"
},
{
"type": "web",
"url": "https://pubs.acs.org/action/doSearch?text1=zotero&field1=AllField",
"items": "multiple"
},
{
"type": "web",
"url": "https://pubs.acs.org/doi/book/10.1021/acsguide",
"items": [
{
"itemType": "book",
"title": "The ACS Guide to Scholarly Communication",
"creators": [
{
"lastName": "Banik",
"firstName": "Gregory M.",
"creatorType": "author"
},
{
"lastName": "Baysinger",
"firstName": "Grace",
"creatorType": "author"
},
{
"lastName": "Kamat",
"firstName": "Prashant V.",
"creatorType": "author"
},
{
"lastName": "Pienta",
"firstName": "Norbert",
"creatorType": "author"
}
],
"date": "2019-10-02",
"ISBN": "9780841235861",
"extra": "DOI: 10.1021/acsguide",
"libraryCatalog": "ACS Publications",
"publisher": "American Chemical Society",
"series": "ACS Guide to Scholarly Communication",
"url": "https://doi.org/10.1021/acsguide",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://pubs.acs.org/action/showCitFormats?doi=10.1021%2Facscentsci.3c00243",
"items": [
{
"itemType": "journalArticle",
"title": "Generic Platform for the Multiplexed Targeted Electrochemical Detection of Osteoporosis-Associated Single Nucleotide Polymorphisms Using Recombinase Polymerase Solid-Phase Primer Elongation and Ferrocene-Modified Nucleoside Triphosphates",
"creators": [
{
"lastName": "Ortiz",
"firstName": "Mayreli",
"creatorType": "author"
},
{
"lastName": "Jauset-Rubio",
"firstName": "Miriam",
"creatorType": "author"
},
{
"lastName": "Trummer",
"firstName": "Olivia",
"creatorType": "author"
},
{
"lastName": "Foessl",
"firstName": "Ines",
"creatorType": "author"
},
{
"lastName": "Kodr",
"firstName": "David",
"creatorType": "author"
},
{
"lastName": "Acero",
"firstName": "Josep Lluís",
"creatorType": "author"
},
{
"lastName": "Botero",
"firstName": "Mary Luz",
"creatorType": "author"
},
{
"lastName": "Biggs",
"firstName": "Phil",
"creatorType": "author"
},
{
"lastName": "Lenartowicz",
"firstName": "Daniel",
"creatorType": "author"
},
{
"lastName": "Trajanoska",
"firstName": "Katerina",
"creatorType": "author"
},
{
"lastName": "Rivadeneira",
"firstName": "Fernando",
"creatorType": "author"
},
{
"lastName": "Hocek",
"firstName": "Michal",
"creatorType": "author"
},
{
"lastName": "Obermayer-Pietsch",
"firstName": "Barbara",
"creatorType": "author"
},
{
"lastName": "O’Sullivan",
"firstName": "Ciara K.",
"creatorType": "author"
}
],
"date": "2023-08-23",
"DOI": "10.1021/acscentsci.3c00243",
"ISSN": "2374-7943",
"abstractNote": "Osteoporosis is a multifactorial disease influenced by genetic and environmental factors, which contributes to an increased risk of bone fracture, but early diagnosis of this disease cannot be achieved using current techniques. We describe a generic platform for the targeted electrochemical genotyping of SNPs identified by genome-wide association studies to be associated with a genetic predisposition to osteoporosis. The platform exploits isothermal solid-phase primer elongation with ferrocene-labeled nucleoside triphosphates. Thiolated reverse primers designed for each SNP were immobilized on individual gold electrodes of an array. These primers are designed to hybridize to the SNP site at their 3′OH terminal, and primer elongation occurs only where there is 100% complementarity, facilitating the identification and heterozygosity of each SNP under interrogation. The platform was applied to real blood samples, which were thermally lysed and directly used without the need for DNA extraction or purification. The results were validated using Taqman SNP genotyping assays and Sanger sequencing. The assay is complete in just 15 min with a total cost of 0.3€ per electrode. The platform is completely generic and has immense potential for deployment at the point of need in an automated device for targeted SNP genotyping with the only required end-user intervention being sample addition.",
"issue": "8",
"journalAbbreviation": "ACS Cent. Sci.",
"libraryCatalog": "ACS Publications",
"pages": "1591-1602",
"publicationTitle": "ACS Central Science",
"url": "https://doi.org/10.1021/acscentsci.3c00243",
"volume": "9",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://pubs.acs.org/doi/epdf/10.1021/acscentsci.3c00323",
"items": [
{
"itemType": "journalArticle",
"title": "Dynamics of Rayleigh Fission Processes in ∼100 nm Charged Aqueous Nanodrops",
"creators": [
{
"lastName": "Hanozin",
"firstName": "Emeline",
"creatorType": "author"
},
{
"lastName": "Harper",
"firstName": "Conner C.",
"creatorType": "author"
},
{
"lastName": "McPartlan",
"firstName": "Matthew S.",
"creatorType": "author"
},
{
"lastName": "Williams",
"firstName": "Evan R.",
"creatorType": "author"
}
],
"date": "2023-08-23",
"DOI": "10.1021/acscentsci.3c00323",
"ISSN": "2374-7943",
"abstractNote": "Fission of micron-size charged droplets has been observed using optical methods, but little is known about fission dynamics and breakup of smaller nanosize droplets that are important in a variety of natural and industrial processes. Here, spontaneous fission of individual aqueous nanodrops formed by electrospray is investigated using charge detection mass spectrometry. Fission processes ranging from formation of just two progeny droplets in 2 ms to production of dozens of progeny droplets over 100+ ms are observed for nanodrops that are charged above the Rayleigh limit. These results indicate that Rayleigh fission is a continuum of processes that produce progeny droplets that vary widely in charge, mass, and number.",
"issue": "8",
"journalAbbreviation": "ACS Cent. Sci.",
"libraryCatalog": "ACS Publications",
"pages": "1611-1622",
"publicationTitle": "ACS Central Science",
"url": "https://doi.org/10.1021/acscentsci.3c00323",
"volume": "9",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
{"exportCharset":"UTF-8"}100Simon Kornblithtxtfunction detectImport() {
var lineRe = /%[A-Z0-9*$] .+/;
var line;
var matched = 0;
while ((line = Zotero.read()) !== false) {
line = line.replace(/^\s+/, "");
if (line != "") {
if (lineRe.test(line)) {
matched++;
if (matched == 2) {
// threshold is two lines
return true;
}
}
else {
return false;
}
}
}
return false;
}
var fieldMap = {
T: "title",
S: "series",
V: "volume",
N: "issue",
C: "place",
I: "publisher",
R: "type",
P: "pages",
W: "archiveLocation",
"*": "rights",
"@": "ISBN",
L: "callNumber",
M: "accessionNumber",
U: "url",
7: "edition",
X: "abstractNote",
G: "language"
};
var inputFieldMap = {
J: "publicationTitle",
B: "publicationTitle",
9: "type"
};
// TODO: figure out if these are the best types for personal communication
var typeMap = {
book: "Book",
bookSection: "Book Section",
journalArticle: "Journal Article",
magazineArticle: "Magazine Article",
newspaperArticle: "Newspaper Article",
thesis: "Thesis",
letter: "Personal Communication",
manuscript: "Unpublished Work",
interview: "Personal Communication",
film: "Film or Broadcast",
artwork: "Artwork",
webpage: "Web Page",
report: "Report",
bill: "Bill",
case: "Case",
hearing: "Hearing",
patent: "Patent",
statute: "Statute",
email: "Personal Communication",
map: "Map",
blogPost: "Web Page",
instantMessage: "Personal Communication",
forumPost: "Web Page",
audioRecording: "Audiovisual Material",
presentation: "Report",
videoRecording: "Audiovisual Material",
tvBroadcast: "Film or Broadcast",
radioBroadcast: "Film or Broadcast",
podcast: "Audiovisual Material",
computerProgram: "Computer Program",
conferencePaper: "Conference Paper",
document: "Generic",
encyclopediaArticle: "Encyclopedia",
dictionaryEntry: "Dictionary"
};
// supplements outputTypeMap for importing
// TODO: BILL, CASE, COMP, CONF, DATA, HEAR, MUSIC, PAT, SOUND, STAT
var inputTypeMap = {
"Ancient Text": "book",
Audio: "audioRecording",
"Audiovisual Material": "videoRecording",
Generic: "book",
"Chart or Table": "artwork",
"Classical Work": "book",
"Conference Proceedings": "conferencePaper",
"Conference Paper": "conferencePaper",
"Edited Book": "book",
"Electronic Article": "journalArticle",
"Electronic Book": "book",
Equation: "artwork",
Figure: "artwork",
"Government Document": "document",
Grant: "document",
"Legal Rule or Regulation": "statute",
"Online Database": "webpage",
"Online Multimedia": "webpage",
"Electronic Source": "webpage"
};
function processTag(item, tag, value) {
value = Zotero.Utilities.trim(value);
if (fieldMap[tag]) {
if (item[fieldMap[tag]]) {
item[fieldMap[tag]] += ", " + value;
}
else {
item[fieldMap[tag]] = value;
}
}
else if (inputFieldMap[tag]) {
item[inputFieldMap[tag]] = value;
}
else if (tag == "0") {
if (inputTypeMap[value]) { // first check inputTypeMap
item.itemType = inputTypeMap[value];
}
else { // then check typeMap
for (var i in typeMap) {
if (value == typeMap[i]) {
item.itemType = i;
break;
}
}
}
}
else if (tag == "A" || tag == "E" || tag == "Y") {
var type;
if (tag == "A") {
type = "author";
}
else if (tag == "E") {
type = "editor";
}
else if (tag == "Y") {
type = "translator";
}
item.creators.push(Zotero.Utilities.cleanAuthor(value, type, value.includes(",")));
}
else if (tag == "Q") {
item.creators.push({ creatorType: "author", lastName: value, fieldMode: true });
}
else if (tag == "H" || tag == "O") {
if (!item.extra) item.extra = '';
else item.extra += "\n";
item.extra += value;
}
else if (tag == "Z") {
item.notes.push({ note: value });
}
else if (tag == "D") {
if (item.date) {
if (!item.date.includes(value)) {
item.date += " " + value;
}
}
else {
item.date = value;
}
}
else if (tag == "8") {
if (item.date) {
if (!value.includes(item.date)) {
item.date += " " + value;
}
}
else {
item.date = value;
}
}
else if (tag == "K") {
if (!item.tags || item.tags.length == 0) {
item.tags = [];
}
item.tags.push(...value.split("\n"));
}
}
function doImport() {
var line = true;
var tag = data = false;
do { // first valid line is type
if (line !== true) Zotero.debug("ignoring " + line);
line = Zotero.read();
line = line.replace(/^\s+/, "");
} while (line !== false && line[0] != "%");
// default to creating a book if no %0 tag is eventually found
var item = new Zotero.Item(inputTypeMap.Generic);
tag = line[1];
var data = line.substr(3);
while ((line = Zotero.read()) !== false) { // until EOF
line = line.replace(/^\s+/, "");
if (!line) {
if (tag) {
processTag(item, tag, data);
// unset info
tag = data = false;
// new item
item.complete();
item = new Zotero.Item(inputTypeMap.Generic);
}
}
else if (line[0] == "%" && line[2] == " ") {
// if this line is a tag, take a look at the previous line to map
// its tag
if (tag) {
processTag(item, tag, data);
}
// then fetch the tag and data from this line
tag = line[1];
data = line.substr(3);
}
else if (tag) {
// otherwise, assume this is data from the previous line continued
data += "\n" + line;
}
}
if (tag) { // save any unprocessed tags
processTag(item, tag, data);
item.complete();
}
}
function addTag(tag, value) {
if (value) {
Zotero.write("%" + tag + " " + value + "\r\n");
}
}
function doExport() {
var item;
while (item = Zotero.nextItem()) { // eslint-disable-line no-cond-assign
// can't store independent notes in RIS
if (item.itemType == "note" || item.itemType == "attachment") {
continue;
}
// type
addTag("0", typeMap[item.itemType] ? typeMap[item.itemType] : "Generic");
// use field map
for (let j in fieldMap) {
if (item[fieldMap[j]]) addTag(j, item[fieldMap[j]]);
}
// handle J & B tags correctly
if (item.publicationTitle) {
if (item.itemType == "journalArticle") {
addTag("J", item.publicationTitle);
}
else {
addTag("B", item.publicationTitle);
}
}
// creators
for (let j in item.creators) {
var referTag = "A";
if (item.creators[j].creatorType == "editor") {
referTag = "E";
}
else if (item.creators[j].creatorType == "translator") {
referTag = "?";
}
addTag(referTag, item.creators[j].lastName + (item.creators[j].firstName ? ", " + item.creators[j].firstName : ""));
}
// date
addTag("D", item.date);
// tags
if (item.tags) {
var keywordTag = "";
for (var i = 0; i < item.tags.length; i++) {
keywordTag += "\r\n" + item.tags[i].tag;
}
addTag("K", keywordTag.substr(2));
}
Zotero.write("\r\n");
}
}/** BEGIN TEST CASES **/
var testCases = [
{
"type": "import",
"input": "%0 Journal Article\n%A 余敏\n%A 朱江\n%A 丁照蕾\n%H Yu Min\n%H Zhu Jiang\n%H Ding Zhaolei\n%+ 中科院国家科学图书馆成都分馆,四川,成都,610041;中国科学院研究生院,北京,100049\n%+ 中科院国家科学图书馆成都分馆,四川,成都,610041\n%+ 四川大学公共管理学院,四川,成都,610064\n%T 参考文献管理工具研究\n%J 现代情报\n%J JOURNAL OF MODERN INFORMATION\n%@ 1008-0821\n%G chi\n%D 2009\n%N 2\n%V 29\n%P 94-98,93\n%K 参考文献管理 文献管理软件 学术书签网站 Zotero\n%X 介绍了参考文献管理的基本方法,对参考文献管理工具的主要功能进行了对比,最后分析了参考文献管理的趋势.\n%U http://d.wanfangdata.com.cn/Periodical_xdqb200902027.aspx\n%R 10.3969/j.issn.1008-0821.2009.02.027\n%W 北京万方数据股份有限公司",
"items": [
{
"itemType": "journalArticle",
"title": "参考文献管理工具研究",
"creators": [
{
"firstName": "",
"lastName": "余敏",
"creatorType": "author"
},
{
"firstName": "",
"lastName": "朱江",
"creatorType": "author"
},
{
"firstName": "",
"lastName": "丁照蕾",
"creatorType": "author"
}
],
"date": "2009",
"abstractNote": "介绍了参考文献管理的基本方法,对参考文献管理工具的主要功能进行了对比,最后分析了参考文献管理的趋势.",
"archiveLocation": "北京万方数据股份有限公司",
"extra": "Yu Min\nZhu Jiang\nDing Zhaolei",
"issue": "2",
"language": "chi",
"pages": "94-98,93",
"publicationTitle": "JOURNAL OF MODERN INFORMATION",
"url": "http://d.wanfangdata.com.cn/Periodical_xdqb200902027.aspx",
"volume": "29",
"attachments": [],
"tags": [
"参考文献管理 文献管理软件 学术书签网站 Zotero"
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "%0 Book\n%R oai:nb.bibsys.no:998320569524702202\n%R URN:NBN:no-nb_digibok_2016062048105\n%U https://urn.nb.no/URN:NBN:no-nb_digibok_2016062048105\n%T Usynlige byer\n%A Calvino, Italo\n%Y Aardal, Jorunn\n%E Stender Clausen, Jørgen\n%D 1982\n%G Flerspråklig\n%G Norsk (Bokmål)\n%G Italiensk\n%G Dansk\n%Z Elektronisk reproduksjon [Norge] Nasjonalbiblioteket Digital 2016-11-03\n%I Aschehoug\n%C Oslo\n%@ 8203107354\n%K Italiensk litteratur\n%K Idealbyer\n%K kjernelitteratur\n%P 173 s.",
"items": [
{
"itemType": "book",
"title": "Usynlige byer",
"creators": [
{
"firstName": "Italo",
"lastName": "Calvino",
"creatorType": "author"
},
{
"firstName": "Jorunn",
"lastName": "Aardal",
"creatorType": "translator"
},
{
"firstName": "Jørgen",
"lastName": "Stender Clausen",
"creatorType": "editor"
}
],
"date": "1982",
"ISBN": "8203107354",
"language": "Flerspråklig, Norsk (Bokmål), Italiensk, Dansk",
"place": "Oslo",
"publisher": "Aschehoug",
"url": "https://urn.nb.no/URN:NBN:no-nb_digibok_2016062048105",
"attachments": [],
"tags": [
{
"tag": "Idealbyer"
},
{
"tag": "Italiensk litteratur"
},
{
"tag": "kjernelitteratur"
}
],
"notes": [
{
"note": "Elektronisk reproduksjon [Norge] Nasjonalbiblioteket Digital 2016-11-03"
}
],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "%T Corn\n%A Newman, W. H.\n%I Uniontown, Ala. : Canebrake Agricultural Experiment Station\n%D 1891\n%K Corn -- Yields\n%K Corn -- Varieties\n%K Corn -- Field experiments\n\n",
"items": [
{
"itemType": "book",
"title": "Corn",
"creators": [
{
"firstName": "W. H.",
"lastName": "Newman",
"creatorType": "author"
}
],
"date": "1891",
"publisher": "Uniontown, Ala. : Canebrake Agricultural Experiment Station",
"attachments": [],
"tags": [
{
"tag": "Corn -- Field experiments"
},
{
"tag": "Corn -- Varieties"
},
{
"tag": "Corn -- Yields"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "%0 Serial\n%0 Audio\n%I Studio Omega, Verein für Christliche Radioarbeit\n%D 2021\n%C Wien\n%G German\n%T Diesseits von Eden: der Podcast der katholischen Fakultäten Österreichs & Südtirols\n%U https://diesseits.theopodcast.at/home",
"items": [
{
"itemType": "audioRecording",
"title": "Diesseits von Eden: der Podcast der katholischen Fakultäten Österreichs & Südtirols",
"creators": [],
"date": "2021",
"label": "Studio Omega, Verein für Christliche Radioarbeit",
"language": "German",
"place": "Wien",
"url": "https://diesseits.theopodcast.at/home",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Sebastian Karcher, Sylvain Machefert and Nicolas Chachereau^https?://www\.cairn\.info//*
CAIRN.info Translator
Copyright (C) 2013-2022 Sebastian Karcher
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
function detectWeb(doc, _url) {
let breadcrumbPage = text(doc, '#tab-article, #tab-resume');
// Z.debug(breadcrumbPage)
if (breadcrumbPage == "Ouvrage collectif") {
return "book";
}
else if (breadcrumbPage == "Article") {
return "journalArticle";
}
else if (breadcrumbPage == "Chapitre") {
return "bookSection";
}
else if (breadcrumbPage == "Résumé") {
let typeDocument = ZU.xpathText(doc, '//ol[@class="breadcrumb"]/li[2]/a');
// Z.debug(typeDocument)
if (typeDocument == "Revues") {
return "journalArticle";
}
else if (typeDocument == "Ouvrages") {
return "bookSection";
}
}
if (doc.querySelectorAll('.article-list-item .titre-article')) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.article-list-item .titre-article');
for (let row of rows) {
let href = attr(row, 'a', 'href');
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
async function doWeb(doc, url) {
if (await detectWeb(doc, url) == 'multiple') {
let items = await Zotero.selectItems(getSearchResults(doc, false));
if (!items) return;
for (let url of Object.keys(items)) {
await scrape(await requestDocument(url));
}
}
else {
await scrape(doc);
}
}
async function scrape(doc) {
let risURL = attr(doc, '#export-citation [data-webtrends-action="clickOnExportZotero"]', 'href');
// Z.debug(risURL)
let pdfLink = attr('[name="citation_pdf_url"]', 'content');
let keywords = attr('[name="article-mot_cle"]', 'content');
let issn = attr('[name="citation_issn"]', 'content');
let risText = await requestText(risURL);
// Z.debug(risText);
let translator = Zotero.loadTranslator('import');
translator.setTranslator('32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7'); // RIS
translator.setString(risText);
translator.setHandler('itemDone', (_obj, item) => {
if (item.ISSN) {
item.ISSN = ZU.cleanISSN(item.ISSN);
}
if (!item.ISSN && issn) {
item.ISSN = issn;
}
if (keywords) {
let keywordArray = keywords.split(/\s*;\s*/);
item.tags = keywordArray;
}
if (item.language) {
item.language = item.language.toLowerCase();
}
item.archive = "";
// There's some attachement information in the RIS that we discard
item.attachments = [];
if (pdfLink) {
item.attachments.push({
url: pdfLink,
title: 'Full Text PDF',
mimeType: 'application/pdf'
});
}
item.attachments.push({
title: 'Snapshot',
document: doc
});
item.complete();
});
await translator.translate();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.cairn.info/revue-d-economie-du-developpement-2012-4.htm",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.cairn.info/resultats_recherche.php?searchTerm=artiste",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.cairn.info/publications-de-Topalov-Christian--1020.htm",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.cairn.info/resume.php?ID_ARTICLE=RESS_521_0065",
"items": [
{
"itemType": "journalArticle",
"title": "Les enjeux normatifs et politiques de la diffusion de la recherche. Bénéfices sociaux et libre accès",
"creators": [
{
"lastName": "Landes",
"firstName": "Xavier",
"creatorType": "author"
}
],
"date": "2014",
"DOI": "10.4000/ress.2663",
"ISSN": "0048-8046",
"abstractNote": "Le savoir est une activité coopérative essentielle pour les sociétés industrielles. Base de leur modèle économique, il produit par ailleurs de nombreux bénéfices matériels, socio-politiques et distants, en particulier au travers de sa diffusion. Dans ce contexte, il devient important de déterminer les principes qui devraient orienter la répartition des coûts qu’une telle diffusion implique. La Recommandation de la Commission européenne du 17 juillet 2012 va dans ce sens en proposant de rendre gratuit l’accès aux résultats des recherches financées par des fonds publics. Elle offre ainsi un cadre idéal pour discuter de la juste répartition des coûts de diffusion du savoir.",
"issue": "1",
"journalAbbreviation": "Revue européenne des sciences sociales",
"language": "fr",
"libraryCatalog": "Cairn.info",
"pages": "65-92",
"publicationTitle": "Revue européenne des sciences sociales",
"shortTitle": "Les enjeux normatifs et politiques de la diffusion de la recherche",
"url": "https://www.cairn.info/revue-europeenne-des-sciences-sociales-2014-1-page-65.htm",
"volume": "52-1",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "bénéfices sociaux"
},
{
"tag": "libre accès"
},
{
"tag": "publications académiques"
},
{
"tag": "recherche"
},
{
"tag": "État"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.cairn.info/resume.php?ID_ARTICLE=RHIS_121_0049",
"items": [
{
"itemType": "journalArticle",
"title": "Le mouvement pétitionnaire pour la restauration d'Henri V (automne 1873-hiver 1874). Tactique politique et expression d'un légitimisme populaire",
"creators": [
{
"lastName": "Derennes",
"firstName": "Éric",
"creatorType": "author"
}
],
"date": "2012",
"DOI": "10.3917/rhis.121.0049",
"ISSN": "0035-3264",
"abstractNote": "Résumé1873 marque le dernier temps du possible pour une éventuelle restauration monarchique dans la personne du comte de Chambord. Le mouvement pétitionnaire populaire qui naît à l’automne 1873 permet à un peuple royaliste de faire irruption sur la scène politique, en s’appropriant un des outils codifiés sous la Révolution : le droit de pétition. Au-delà du refus du prince exprimé dans sa lettre de Salzbourg (27 octobre 1873) d’abandonner son drapeau blanc et qui empêche la restauration monarchique, les milliers de pétitions royalistes tentèrent de faire entendre les voix habituellement muettes d’artisans et d’agriculteurs, de citadins et de ruraux, d’intellectuels et d’illettrés, d’hommes et de femmes du peuple de la diversité française. L’Ouest bocager et le Midi, le Nord et les pays riverains de la Garonne affirment leur foi « inséparatiste » suivant en cela celle du prince en exil : à la fois royaliste en politique et catholique en religion. Malgré son importance, ce mouvement pétitionnaire apparaît comme le dernier sursaut d’une époque révolue ; quelques pétitions seulement ont un écho à la Chambre des députés. Cela explique en partie son échec à faire pression sur des parlementaires qui sont davantage attentifs à tracer une voie médiane entre monarchie et république dans le dessein de préserver l’avenir du pays.",
"issue": "1",
"journalAbbreviation": "Revue historique",
"language": "fr",
"libraryCatalog": "Cairn.info",
"pages": "49-99",
"publicationTitle": "Revue historique",
"url": "https://www.cairn.info/revue-historique-2012-1-page-49.htm",
"volume": "661",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "assemblée nationale"
},
{
"tag": "député"
},
{
"tag": "légitimisme"
},
{
"tag": "pétition"
},
{
"tag": "restauration"
},
{
"tag": "royaliste"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.cairn.info/resume.php?ID_ARTICLE=RFS_523_0537",
"items": [
{
"itemType": "journalArticle",
"title": "Transformation de l'État ou changement de régime ? De quelques confusions en théorie et sociologie de l'État",
"creators": [
{
"lastName": "Du Gay",
"firstName": "Paul",
"creatorType": "author"
},
{
"lastName": "Scott",
"firstName": "Alan",
"creatorType": "author"
}
],
"date": "2011",
"DOI": "10.3917/rfs.523.0537",
"ISSN": "0035-2969",
"abstractNote": "Cet article a pour objet la question de la définition de l’État afin de rendre compte de ses transformations contemporaines. Fermement inscrits dans la tradition wébérienne, les auteurs développent une critique des travaux, qu’ils soient néomarxistes ou néowébériens, mesurant le changement de l’État contemporain par rapport à l’État tel qu’il a été défini pendant les Trente Glorieuses. La critique porte à la fois sur la périodisation et sur la conceptualisation. Partant d’une conception minimaliste de l’État défini en termes de fonctions (sécurité) et de ses moyens, de ses institutions, ils mettent en évidence la confusion d’une partie de la littérature et suggèrent de bien différencier la question de l’État de celle du gouvernement. Soucieux de réhabiliter la longue durée de l’État, ils s’appuient tout d’abord sur les travaux de l’École de Cambridge d’histoire de la pensée politique et leur méthode dite « Ideas in context », afin de montrer la lente émergence de l’État et de l’idée de l’État, invalidant ainsi toute perspective de transformation radicale de période courte. Prenant des points de comparaison plus espacés dans le passé, ils suggèrent au contraire la remarquable permanence de l’État. Ils s’appuient ensuite sur la théorie de l’État constitutionnel de Gianfranco Poggi pour affiner leur conception minimaliste de l’État. Enfin, ils mobilisent la notion de régime développée par Raymond Aron pour caractériser une partie des transformations observées, labellisées transformations de l’État de manière erronée puisqu’elles concernent le gouvernement et la politique. Cette proposition est testée à partir des travaux de Colin Crouch sur le keynésianisme privé.",
"issue": "3",
"journalAbbreviation": "Revue française de sociologie",
"language": "fr",
"libraryCatalog": "Cairn.info",
"pages": "537-557",
"publicationTitle": "Revue française de sociologie",
"shortTitle": "Transformation de l'État ou changement de régime ?",
"url": "https://www.cairn.info/revue-francaise-de-sociologie-1-2011-3-page-537.htm",
"volume": "52",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.cairn.info/jeu-d-echecs-comme-representation--9782728835904-page-111.htm?contenu=resume",
"items": [
{
"itemType": "bookSection",
"title": "Des figurines de chair et de sang (sur l'échiquier de la passion), d'après une mise en scène de Daniel Mesguich : La Seconde Surprise de l'amour de Marivaux",
"creators": [
{
"lastName": "Lenglet",
"firstName": "Sébastien",
"creatorType": "author"
}
],
"date": "2009",
"ISBN": "9782728835904",
"abstractNote": "Sous le titre Le Jeu d’échecs comme représentation : univers clos ou reflet du monde ?, une publication en ligne dans la collection « Actes de la recherche à l’ENS » vient saluer le travail accompli par une équipe de jeunes chercheurs sous la direction d’Amandine Mussou (2002) et Sarah Troche.\nCapables d’absorber le joueur au point de l’abstraire du monde dans lequel il évolue, les échecs reposent d’une part sur le spectacle captivant de figurines en mouvement, d’autre part sur une structure géométrique renvoyant à un nombre infini de combinaisons. Entre incarnation et abstraction, les échecs fascinent : la richesse de leurs représentations dans la littérature et les arts en est le témoin. La dimension spéculaire des échecs est souvent admise comme une évidence. Bien plus qu’un pur divertissement de la pensée, les échecs sont là pour désigner autre chose, un ailleurs, un au-delà qui reflèterait, fidèlement ou en le déformant, le monde réel. Cette puissance allégorique des échecs a été perçue dès leur implantation en Occident. Le Moyen Âge exploite en effet les possibilités du jeu en proposant plusieurs types d’interprétations symboliques, que l’on trouve notamment décrites au début du Livre des eschez amoureux moralisés, dans les premières années du XVe siècle : les pièces de l’échiquier peuvent reproduire la société civile, être à l’image de la stratégie militaire, représenter les combinaisons infinies du ciel et des planètes, ou servir d’allégorie aux batailles amoureuses. La lecture allégorique du jeu a perduré, il suffit de se rappeler la partie que le Chevalier Block joue contre la Mort dans Le Septième Sceau d’Ingmar Bergman pour s’en convaincre. L’origine des échecs remonte au début de notre ère, en Inde, où le jeu s’appelait Tchaturanga, « le jeu des quatre rois ». Il passe ensuite en Perse et se transforme au cours de ses pérégrinations, s’adaptant aux nouvelles sociétés dans lesquelles il s’implante. Les échecs n’ont plus grand-chose à voir avec le jeu indien lorsqu’ils arrivent en Occident autour du Xe siècle.",
"bookTitle": "Le jeu d'échecs comme représentation",
"extra": "DOI: 10.3917/ulm.musso.2009.01.0111",
"language": "fr",
"libraryCatalog": "Cairn.info",
"pages": "111-119",
"place": "Paris",
"publisher": "Éditions Rue d'Ulm",
"series": "Actes de la recherche à l’Ens",
"shortTitle": "Des figurines de chair et de sang (sur l'échiquier de la passion), d'après une mise en scène de Daniel Mesguich",
"url": "https://www.cairn.info/jeu-d-echecs-comme-representation--9782728835904-p-111.htm",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
200Sebastian Karcher/engage/[^/]+/(article-details/|search-dashboard\?)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2022 Sebastian Karcher
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
const preprintType = ZU.fieldIsValidForType('title', 'preprint')
? 'preprint'
: 'report';
function detectWeb(doc, url) {
if (url.includes('/article-details/')) {
return preprintType;
}
else if (getSearchResults(doc, true)) {
return 'multiple';
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.MatchResult article a');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(text(row, 'h3'));
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
async function doWeb(doc, url) {
if (detectWeb(doc, url) == 'multiple') {
let items = await Zotero.selectItems(getSearchResults(doc, false));
if (!items) return;
for (let url of Object.keys(items)) {
await scrape(await requestDocument(url));
}
}
else {
await scrape(doc, url);
}
}
async function scrape(doc, url = doc.location.href) {
let translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', (_obj, item) => {
item.publisher = attr(doc, 'meta[property="og:site_name"]', 'content');
item.libraryCatalog = "Cambridge Engage Preprints";
if (item.date) {
item.date = ZU.strToISO(item.date);
}
item.complete();
});
let em = await translator.getTranslatorObject();
em.itemType = preprintType;
await em.doWeb(doc, url);
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://chemrxiv.org/engage/chemrxiv/search-dashboard?text=acid",
"defer": true,
"items": "multiple"
},
{
"type": "web",
"url": "https://chemrxiv.org/engage/chemrxiv/article-details/615ee2142aca5367575b8e49",
"items": [
{
"itemType": "preprint",
"title": "Manganese Catalyzed Reformation of Ethylene Glycol to Glycolic acid and Lactic Acid",
"creators": [
{
"firstName": "Satyadeep",
"lastName": "Waiba",
"creatorType": "author"
},
{
"firstName": "BIplab",
"lastName": "Maji",
"creatorType": "author"
}
],
"date": "2021-10-08",
"DOI": "10.26434/chemrxiv-2021-mjpkz",
"abstractNote": "Conversion of readily available feedstocks to valuable platform chemicals via a sustainable catalytic pathway has always been one of the key focuses of synthetic chemists. Cheaper, less toxic, and more abundant base metals as a catalyst for performing such transformations provide an additional boost. In this context, herein, we report a reformation of readily available feedstock, ethylene glycol, to value-added platform molecules, glycolic acid, and lactic acid. A bench stable base metal complex {[HN(C2H4PPh2)2]Mn(CO)2Br}, Mn-I, known as Mn-PhMACHO, catalyzed the reformation of ethylene glycol to glycolic acid at 140 oC in high selectivity with a turnover number TON = 2400, surpassing previously used homogeneous catalysts for such a reaction. Pure hydrogen gas is evolved without the need for an acceptor. On the other hand, a bench stable Mn(I)-complex, {(iPrPN5P)Mn(CO)2Br}, Mn-III, with a triazine backbone, efficiently catalyzed the acceptorless dehydrogenative coupling of ethylene glycol and methanol for the synthesis of lactic acid, even at a ppm level of catalyst loading, reaching the TON of 11,500. Detailed mechanistic studies were performed to elucidate the involvements of different manganese(I)-species during the catalysis.",
"language": "en",
"libraryCatalog": "Cambridge Engage Preprints",
"repository": "ChemRxiv",
"url": "https://chemrxiv.org/engage/chemrxiv/article-details/615ee2142aca5367575b8e49",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Dehydrogenative coupling"
},
{
"tag": "Glycolic acid"
},
{
"tag": "Hydrogen"
},
{
"tag": "Lactic Acid"
},
{
"tag": "Manganese catalysis"
},
{
"tag": "Sustainable synthesis"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://preprints.apsanet.org/engage/apsa/article-details/5d94c7762f41c7001256af6d",
"items": [
{
"itemType": "preprint",
"title": "Transparency in Practice in Qualitative Research",
"creators": [
{
"firstName": "Diana",
"lastName": "Kapiszewski",
"creatorType": "author"
},
{
"firstName": "Sebastian",
"lastName": "Karcher",
"creatorType": "author"
}
],
"date": "2019-10-03",
"DOI": "10.33774/apsa-2019-if2he-v2",
"abstractNote": "The discipline of political science has been engaged in discussion about when, why, and how to make scholarship more transparent for at least three decades. This piece argues that qualitative researchers can achieve transparency in diverse ways, using techniques and strategies that allow them to balance and optimize among competing considerations that affect the pursuit of transparency.. We begin by considering the “state of the debate,” briefly outlining the contours of the scholarship on transparency in political and other social sciences, which so far has focussed mostly on questions of “whether” and “what” to share. We investigate competing considerations that researchers have to consider when working towards transparent research. The heart of the piece considers various strategies, illustrated by exemplary applications, for making qualitative research more transparent.",
"language": "en",
"libraryCatalog": "Cambridge Engage Preprints",
"repository": "APSA Preprints",
"url": "https://preprints.apsanet.org/engage/apsa/article-details/5d94c7762f41c7001256af6d",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "open science"
},
{
"tag": "qualitative data"
},
{
"tag": "research transparency"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.cambridge.org/engage/miir/article-details/60d6688fafe54f7050a526e4",
"items": [
{
"itemType": "preprint",
"title": "New Techiques for Composite Wing Manufacture",
"creators": [
{
"firstName": "David",
"lastName": "Barton",
"creatorType": "author"
},
{
"firstName": "Hilary",
"lastName": "Ockendon",
"creatorType": "author"
},
{
"firstName": "Bernard",
"lastName": "Piette",
"creatorType": "author"
},
{
"firstName": "Robert",
"lastName": "Whittaker",
"creatorType": "author"
}
],
"date": "2021-07-20",
"DOI": "10.33774/miir-2021-7cdx1",
"abstractNote": "This report addresses the construction of carbon fibre wing boxes and the problems associated with using carbon fibre sheets rather than individual carbon fibre tapes. In the case that the wing boxes are developable surfaces the lay up of carbon fibre sheets is straightforward, since the fibres can follow the contours of the surface without any need for shearing or extension of the fibres. To further expand the potential design space for the wing boxes, this report investigates the lay up of sheets over non-developable surfaces where some shearing of the sheet is required to achieve the desired results. In this report, three analytical approaches are considered, driven by the results from numerical studies on different surface geometries. Each of the approaches offers insights as to the type of geometric perturbations achievable when constrained by a maximum shear angle.",
"language": "en",
"libraryCatalog": "Cambridge Engage Preprints",
"repository": "Mathematics in Industry Reports",
"url": "https://www.cambridge.org/engage/miir/article-details/60d6688fafe54f7050a526e4",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Chebychev nets"
},
{
"tag": "carbon fibre"
},
{
"tag": "deformation of woven materials"
},
{
"tag": "differential geometry"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Sebastian Karcher^https?://www\.dukeupress\.edu//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2022 Sebastian Karcher
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, _url) {
if (doc.querySelectorAll('div[itemtype="http://schema.org/Book"]').length) {
return 'book';
}
else if (getSearchResults(doc, true)) {
return 'multiple';
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.book-info > a');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
async function doWeb(doc, url) {
if (detectWeb(doc, url) == 'multiple') {
let items = await Zotero.selectItems(getSearchResults(doc, false));
if (!items) return;
for (let url of Object.keys(items)) {
await scrape(await requestDocument(url));
}
}
else {
await scrape(doc);
}
}
function getContributorRole(text) {
if (text.includes("Editor")) {
return "editor";
}
else if (text.includes("Contributor")) {
return "contributor";
}
else return "author";
}
async function scrape(doc) {
var item = new Zotero.Item("book");
item.title = attr(doc, '#subject-title meta[itemprop="name"]', 'content');
// don't break if DUP messes up the title metadata in schema
// as they do here: https://www.dukeupress.edu/beyond-this-narrow-now
if (!item.title) {
let maintitle = text(doc, 'h1');
let subtitle = text(doc, 'h2');
let title = [maintitle, subtitle];
item.title = title.filter(Boolean).join(": ");
}
var creators = doc.getElementsByClassName('author');
for (let i = 0; i < creators.length; i++) {
let creator = creators[i].textContent;
let role = getContributorRole(creators[i].title);
item.creators.push(ZU.cleanAuthor(creator, role));
}
item.date = attr(doc, '.container meta[itemprop="copyrightYear"]', 'content');
item.numPages = attr(doc, '.container meta[itemprop="numberOfPages"]', 'content');
item.ISBN = attr(doc, '.container meta[itemprop="isbn"]', 'content');
item.abstractNote = text(doc, 'div[itemprop="description"]');
item.series = text(doc, '#b-series-info>h3');
item.publisher = "Duke University Press";
item.place = "Durham, NC";
item.attachments.push({
title: "Snapshot",
document: doc
});
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.dukeupress.edu/the-fixer",
"items": [
{
"itemType": "book",
"title": "The Fixer: Visa Lottery Chronicles",
"creators": [
{
"firstName": "Charles",
"lastName": "Piot",
"creatorType": "author"
},
{
"firstName": "Kodjo Nicolas",
"lastName": "Batema",
"creatorType": "contributor"
}
],
"date": "2019",
"ISBN": "9781478003045",
"abstractNote": "In the West African nation of Togo, applying for the U.S. Diversity Visa Lottery is a national obsession, with hundreds of thousands of Togolese entering each year. From the street frenzy of the lottery sign-up period and the scramble to raise money for the embassy interview to the gamesmanship of those adding spouses and dependents to their dossiers, the application process is complicated, expensive, and unpredictable. In The Fixer Charles Piot follows Kodjo Nicolas Batema, a Togolese visa broker—known as a “fixer”—as he shepherds his clients through the application and interview process. Relaying the experiences of the fixer, his clients, and embassy officials, Piot captures the ever-evolving cat-and-mouse game between the embassy and the hopeful Togolese as well as the disappointments and successes of lottery winners in the United States. These detailed and compelling stories uniquely illustrate the desire and savviness of migrants as they work to find what they hope will be a better life.",
"libraryCatalog": "Duke University Press Books",
"numPages": "224",
"place": "Durham, NC",
"publisher": "Duke University Press",
"series": "Theory in Forms",
"shortTitle": "The Fixer",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.dukeupress.edu/all-about-your-eyes-second-edition",
"items": [
{
"itemType": "book",
"title": "All about Your Eyes, Second Edition, revised and updated",
"creators": [
{
"firstName": "Sharon",
"lastName": "Fekrat",
"creatorType": "editor"
},
{
"firstName": "Tanya S.",
"lastName": "Glaser",
"creatorType": "editor"
},
{
"firstName": "Henry L.",
"lastName": "Feng",
"creatorType": "editor"
}
],
"date": "2021",
"ISBN": "9781478011606",
"abstractNote": "A concise, easy-to-understand reference book, the revised and updated second edition of All about Your Eyes tells you what you need to know to care for your eyes and what to expect from your eye doctor. In this reliable guide, leading eye care experts: * explain eye anatomy and how healthy eyes work * describe various eye diseases, including pink eye, cataract, glaucoma, age-related macular degeneration, and diabetic retinopathy * provide up-to-date information on surgery For each eye problem, the authors describe in simple, straightforward language: * what it is * the symptoms * what, if anything, you can do to prevent it * when to call the doctor * diagnostic tests and treatment * the likelihood of recoveryAll about Your Eyes includes a glossary of technical terms and, following each entry, links to websites where further information may be found. Contributors. Natalie A. Afshari, MD, Rosanna P. Bahadur, MD, Paramjit K. Bhullar, MD, Faith A. Birnbaum, MD, Cassandra C. Brooks, MD, Pratap Challa, MD, Melissa Mei-Hsia Chan, MBBS, Ravi Chandrashekhar, MD, MSEE, Nathan Cheung, OD, FAAO Claudia S. Cohen, MD, Vincent A. Deramo, MD, Cathy DiBernardo, RN, Laura B. Enyedi, MD, Sharon Fekrat, MD, Henry L. Feng, MD, Brenton D. Finklea, MD, Anna Ginter, MD, Tanya S. Glaser, MD, Michelle Sy Go, MD, MS, Mark Goerlitz-Jessen, MD, Herb Greenman, MD, Abhilash Guduru, MD, Preeya Gupta, MD, Renee Halberg, MSW, LCSW, S. Tammy Hsu, MD, Alessandro Iannaccone, MD, MS, FARVO, Charlene L. James, OD, Kim Jiramongkolchai, MD, Michael P. Kelly, FOPS, Muge R. Kesen, MD, Kirin Khan, MD, Wajiha Jurdi Kheir, MD, Jane S. Kim, MD, Jennifer Lira, MD, Katy C. Liu, MD, PhD, Ramiro S. Maldonado, MD, Ankur Mehra, MD, Priyatham S. Mettu, MD, Prithvi Mruthyunjaya, MD, MHS, Nisha Mukherjee, MD, Kenneth Neufeld, MD, Kristen Peterson, MD, James H. Powers, MD, S. Grace Prakalapakorn, MD, MPH, Michael Quist, MD, Leon Rafailov, MD, Roshni Ranjit-Reeves, MD, Nikolas Raufi, MD, William Raynor, BS, Cason Robbins, BS, Ananth Sastry, MD, Dianna L. Seldomridge, MD, MBA, Terry Semchyshyn, MD, Ann Shue, MD, Julia Song, MD, Brian Stagg, MD, Christopher Sun, MBBS, Anthony Therattil, BS, Daniel S.W. Ting, MBBS, Fay Jobe Tripp, MS, OTR/L, CLVT, CDRS, Obinna Umunakwe, MD, PhD, Lejla Vajzovic, MD, Susan M. Wakil, MD, C. Ellis Wisely, MD, MBA, Julie A. Woodward, MD",
"libraryCatalog": "Duke University Press Books",
"numPages": "256",
"place": "Durham, NC",
"publisher": "Duke University Press",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.dukeupress.edu/books/browse?sortid=7",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.dukeupress.edu/beyond-this-narrow-now",
"items": [
{
"itemType": "book",
"title": "\"Beyond This Narrow Now\": Or, Delimitations, of W. E. B. Du Bois",
"creators": [
{
"firstName": "Nahum Dimitri",
"lastName": "Chandler",
"creatorType": "author"
}
],
"date": "2022",
"ISBN": "9781478014805",
"abstractNote": "In “Beyond This Narrow Now” Nahum Dimitri Chandler shows that the premises of W. E. B. Du Bois's thinking at the turn of the twentieth century stand as fundamental references for the whole itinerary of his thought. Opening with a distinct approach to the legacy of Du Bois, Chandler proceeds through a series of close readings of Du Bois's early essays, previously unpublished or seldom studied, with discrete annotations of The Souls of Black Folk: Essays and Sketches of 1903, elucidating and elaborating basic epistemological terms of his thought. With theoretical attention to how the African American stands as an example of possibility for Du Bois and renders problematic traditional ontological thought, Chandler also proposes that Du Bois's most well-known phrase—“the problem of the color line”—sustains more conceptual depth than has yet been understood, with pertinence for our accounts of modern systems of enslavement and imperial colonialism and the incipient moments of modern capitalization. Chandler's work exemplifies a more profound engagement with Du Bois, demonstrating that he must be re-read, appreciated, and studied anew as a philosophical writer and thinker contemporary to our time.",
"libraryCatalog": "Duke University Press Books",
"numPages": "328",
"place": "Durham, NC",
"publisher": "Duke University Press",
"shortTitle": "\"Beyond This Narrow Now\"",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Vinoth K - highwirepress.com^https?://www\.accessscience\.com//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2023 Vinoth K - highwirepress.com
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
let title = attr(doc, 'meta[name="citation_title"]', 'content');
if (title) {
if (doc.querySelector('meta[name="citation_isbn"]')) {
let bookTitle = attr(doc, 'meta[name="citation_book_title"]', 'content');
if (!bookTitle || title == bookTitle) {
return "book";
}
else {
return "bookSection";
}
}
else if (url.includes('content/video/') || url.includes('content/video-biography')) {
return 'videoRecording';
}
else if (url.includes('content/article/')) {
return "journalArticle";
}
else if (url.includes('news') || url.includes('briefing')) {
return "magazineArticle";
}
else {
return "webpage";
}
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.search-middle-right a[href]');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
// Author
// Some of video pages having old content which does not contain the
// firstname and lastname. which is binding in a single string in
// metadata tags, So those cases we were split and mapped accordingly
if (item.itemType == 'videoRecording') {
let authorName = attr(doc, 'meta[name="citation_author"]', 'content');
if (authorName) {
item.creators = [];
if (authorName.includes(',') && authorName.split(',').length > 2) {
authorName = authorName.split(',')[0];
item.creators.push(ZU.cleanAuthor(authorName, "author", false));
}
}
}
let abstractNote = attr(doc, 'meta[name="citation_abstract"]', 'content');
item.abstractNote = abstractNote && ZU.cleanTags(abstractNote);
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.itemType = detectWeb(doc, url);
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.accessscience.com/content/book/9781260452297",
"items": [
{
"itemType": "book",
"title": "Casarett & Doull's Essentials of Toxicology",
"creators": [
{
"firstName": "Curtis D.",
"lastName": "Klaassen",
"creatorType": "editor"
},
{
"firstName": "John B. Watkins",
"lastName": "Iii",
"creatorType": "editor"
}
],
"date": "2022",
"ISBN": "9781260452297",
"abstractNote": "Doody9s Core Titles for 2021!\n\nFor more than 25 years, Casarett & Doull9s Toxicology: The Basic Science of Poisons has set the standard for providing thorough, academic, and authoritative information in clear and engaging ways. Distilling the major principles and concepts from that renowned text, Casarett & Doull9s Essentials of Toxicology delivers an accessible and highly readable introduction to the science and clinical field of medical toxicology. The book reflects the expertise of more than 60 renowned contributors.\n\nPresented in full-color, this new edition builds on the wide success of previous editions, with extensive updates that make the book more clinically relevant to students and beginners in toxicology, pharmacology, pharmacy, and environmental sciences. Chapter-ending self-assessment Q&As and other features make the learning process more effective and efficient.\n\nCasarett and Doull9s Essentials of Toxicology is organized into seven units:\n\n• General Principles of Toxicology\n\n• Disposition of Toxicants\n\n• Nonorgan-directed Toxicity\n\n• Target Organ Toxicity\n\n• Toxic Agents\n\n• Environmental Toxicology\n\n• Applications of Toxicology\n\nSuccinct, yet comprehensive, the text covers essential principles, toxicokinetics, how toxic effects are passed on to succeeding generations, how each body system responds to poisons, and the specific effects of a wide range of toxic agents—from pesticides to radiation.",
"language": "en",
"libraryCatalog": "www.accessscience.com",
"publisher": "McGraw Hill",
"url": "https://www.accessscience.com/content/book/9781260452297",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.accessscience.com/content/book/9781260452297/chapter/chapter2",
"items": [
{
"itemType": "bookSection",
"title": "Principles of Toxicology",
"creators": [
{
"firstName": "Lauren M.",
"lastName": "Aleksunes",
"creatorType": "author"
},
{
"firstName": "David L.",
"lastName": "Eaton",
"creatorType": "author"
},
{
"firstName": "Curtis D.",
"lastName": "Klaassen",
"creatorType": "editor"
},
{
"firstName": "John B. Watkins",
"lastName": "Iii",
"creatorType": "editor"
}
],
"date": "2022",
"ISBN": "9781260452297",
"bookTitle": "Casarett & Doull's Essentials of Toxicology",
"language": "en",
"libraryCatalog": "www.accessscience.com",
"publisher": "McGraw Hill",
"url": "https://www.accessscience.com/content/book/9781260452297/chapter/chapter2",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.accessscience.com/content/video/V2537194263001",
"items": [
{
"itemType": "videoRecording",
"title": "Supplementary Problem 10.12",
"creators": [
{
"firstName": "Rebecca B.",
"lastName": "DeVasher",
"creatorType": "author"
}
],
"date": "2013",
"abstractNote": "This video details a problem involving unit cells and the calculation of the mass of a cell, length of a cell and radius of an atom in the unit cell based on the density of a solid.",
"language": "en",
"libraryCatalog": "www.accessscience.com",
"studio": "McGraw Hill",
"url": "https://www.accessscience.com/content/video/V2537194263001",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.accessscience.com/content/video-biography/VB0014",
"items": [
{
"itemType": "videoRecording",
"title": "Anderson, John R.",
"creators": [],
"date": "2011",
"language": "en",
"libraryCatalog": "www.accessscience.com",
"studio": "McGraw Hill",
"url": "https://www.accessscience.com/content/video-biography/VB0014",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.accessscience.com/content/article/a694300?implicit-login=true",
"items": [
{
"itemType": "journalArticle",
"title": "3D printing",
"creators": [
{
"firstName": "Wenchao",
"lastName": "Zhou",
"creatorType": "author"
}
],
"date": "2023",
"DOI": "10.1036/1097-8542.694300",
"language": "en",
"libraryCatalog": "www.accessscience.com",
"url": "https://www.accessscience.com/content/article/a694300",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.accessscience.com/content/news/aSN2301171?implicit-login=true",
"items": [
{
"itemType": "magazineArticle",
"title": "These chemists cracked the code to long-lasting Roman concrete",
"creators": [
{
"firstName": "Carolyn",
"lastName": "Gramling",
"creatorType": "author"
}
],
"date": "2023",
"extra": "DOI: 10.1036/1097-8542.SN0000000",
"language": "en",
"libraryCatalog": "www.accessscience.com",
"url": "https://www.accessscience.com/content/news/aSN2301171",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.accessscience.com/content/video/an600010",
"items": [
{
"itemType": "videoRecording",
"title": "Henrietta Leavitt: The Woman Who Measured the Universe",
"creators": [],
"abstractNote": "Born in 1868, Henrietta Leavitt was an astronomer ahead of her time, whose work helped to revolutionize our understanding of the universe. While working at Harvard Observatory, Leavitt began to study stars of fluctuating brightness. This video describes her crucial observation about variable stars, which gave astronomers a new way to measure distances, ultimately leading to such impactful discoveries as the expansion of the universe.\n\nCredit: ESA Hubble Videos; Hubblecast 116: Henrietta Leavitt — ahead of her time; Directed by: Mathias Jäger; Visual design and editing: Martin Kornmesser; Written by: Sara Rigby; Narration: Sara Mendes da Costa; Images: ESA/Hubble and NASA, ESO, Hubble Heritage Team (STScI/AURA), Library of Congress Prints and Photographs Division Washington, Harvard College Observatory, Huntington Library, California Institute of Technology, Digitized Sky Survey 2, M. Kornmesser, R. Gendler, Arnold Reinhold, Davide De Martin; Videos: NASA, ESA, M. Kornmesser, Luis Calcada; Music: Johan B. Monell; Web and technical support: Mathias André and Raquel Yumi Shida; Executive producer: Lars Lindberg Christensen",
"language": "en",
"libraryCatalog": "www.accessscience.com",
"shortTitle": "Henrietta Leavitt",
"studio": "McGraw Hill",
"url": "https://www.accessscience.com/content/video/an600010",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.accessscience.com/content/biography/m0073908",
"items": [
{
"itemType": "webpage",
"title": "Abbe, Cleveland (1838–1916)",
"creators": [],
"language": "en",
"url": "https://www.accessscience.com/content/biography/m0073908",
"websiteTitle": "McGraw Hill's AccessScience",
"websiteType": "text",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.accessscience.com/search?query=&items_per_page=10",
"items": "multiple"
}
]
/** END TEST CASES **/
100Lars Willighagen^https?://(www\.)?zobodat\.at//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2023 Lars Willighagen
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/publikation_articles.php')) {
return 'journalArticle';
}
else if ((url.includes('/publikation_series.php') || url.includes('/publikation_volumes.php')) && getSearchResults(doc)) {
return 'multiple';
}
return false;
}
function getSearchResults(doc) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.result');
for (var i = 0; i < rows.length; i++) {
var href = rows[i].querySelector(['a[href^="publikation_articles.php"]']);
var title = ZU.trimInternal(text(rows[i], '.title'));
if (!href || !title) {
continue;
}
else {
found = true;
items[href.href] = title;
}
}
return found ? items : false;
}
async function doWeb(doc, url) {
if (detectWeb(doc, url) === 'multiple') {
let items = await Zotero.selectItems(getSearchResults(doc));
if (!items) return;
for (let url of Object.keys(items)) {
await scrape(await requestDocument(url));
}
}
else {
await scrape(doc, url);
}
}
async function scrape(doc, url = doc.location.href) {
var item = new Zotero.Item('journalArticle');
item.url = url;
var reference = doc.querySelector('#publikation_articles h1 + div');
var referenceParts = ZU.trimInternal(reference.textContent).split(' – ');
var authorshipParts = referenceParts[0].match(/^(.+) \((\d+)\): (.+)$/);
var locatorParts = referenceParts[referenceParts.length - 1].match(/(.+): (.+ - .+)\.$/);
// Authors
var authors = authorshipParts[1].split(', ');
for (var i = 0; i < authors.length; i++) {
item.creators.push(ZU.cleanAuthor(authors[i], 'author'));
}
// Publication date
item.date = authorshipParts[2];
// Title (+ PDF)
var pdfLink = reference.querySelector('a[href^="pdf"]');
if (pdfLink) {
item.title = pdfLink.textContent;
item.attachments.push({ title: 'Full Text PDF', mimeType: 'application/pdf', url: pdfLink.href });
}
else {
item.title = authorshipParts[3];
}
// Journal
item.publicationTitle = text(reference, 'a[href^="publikation_series"]') || referenceParts[1];
// Locator
var volume = text(reference, 'a[href^="publikation_volumes"]') || locatorParts[1];
var volumeParts = volume.match(/^(\d+)_(\d+)$/);
if (volumeParts) {
item.volume = cleanNumber(volumeParts[1]);
item.issue = cleanNumber(volumeParts[2]);
}
else {
item.volume = cleanNumber(volume);
}
item.pages = locatorParts[2].split(' - ').map(cleanNumber).join('-');
item.complete();
}
function cleanNumber(number) {
return number.replace(/^0+([1-9]\d*)/g, '$1');
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.zobodat.at/publikation_articles.php?id=275236",
"items": [
{
"itemType": "journalArticle",
"title": "Käferlarven und Käferpuppen aus Maulwurfsnestern",
"creators": [
{
"lastName": "Beier",
"firstName": "Max Walter Peter",
"creatorType": "author"
},
{
"lastName": "Strouhal",
"firstName": "Hans",
"creatorType": "author"
}
],
"date": "1928",
"libraryCatalog": "ZOBODAT",
"pages": "1-34",
"publicationTitle": "Zeitschrift für wissenschaftliche Insektenbiologie",
"url": "https://www.zobodat.at/publikation_articles.php?id=275236",
"volume": "23",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.zobodat.at/publikation_articles.php?id=10021894",
"items": [
{
"itemType": "journalArticle",
"title": "A provisional multispecies toxicity test using indigenous organisms",
"creators": [
{
"firstName": "John",
"lastName": "Cairns",
"creatorType": "author"
},
{
"firstName": "James R.",
"lastName": "Pratt",
"creatorType": "author"
},
{
"firstName": "B. R.",
"lastName": "Niederlehner",
"creatorType": "author"
}
],
"date": "1985",
"libraryCatalog": "ZOBODAT",
"pages": "316-319",
"publicationTitle": "J. Test. Eval.",
"url": "https://www.zobodat.at/publikation_articles.php?id=10021894",
"volume": "13",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.zobodat.at/publikation_volumes.php?id=48239",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.zobodat.at/publikation_series.php?id=20840",
"detectedItemType": false,
"items": []
},
{
"type": "web",
"url": "https://www.zobodat.at/publikation_series.php?q=&as_l%5B0%5D%5Bi%5D=surname&as_l%5B0%5D%5Bqt%5D=contains&as_l%5B0%5D%5Bv%5D=Achterberg&as_l%5B1%5D%5Bi%5D=",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.zobodat.at/personen.php?id=5312",
"detectedItemType": false,
"items": []
},
{
"type": "web",
"url": "https://www.zobodat.at/publikation_articles.php?id=256029",
"items": [
{
"itemType": "journalArticle",
"title": "A faunistic study of Braconidae (Hymenoptera: Ichneumonoidea)\nfrom southern Iran",
"creators": [
{
"lastName": "Samin",
"firstName": "Najmeh",
"creatorType": "author"
},
{
"lastName": "Achterberg",
"firstName": "Cees van (auch Cornelis)",
"creatorType": "author"
},
{
"lastName": "Ghahari",
"firstName": "Hassan",
"creatorType": "author"
}
],
"date": "2015",
"issue": "2",
"libraryCatalog": "ZOBODAT",
"pages": "1801-1809",
"publicationTitle": "Linzer biologische Beiträge",
"shortTitle": "A faunistic study of Braconidae (Hymenoptera",
"url": "https://www.zobodat.at/publikation_articles.php?id=256029",
"volume": "47",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.zobodat.at/publikation_articles.php?id=10027526",
"items": [
{
"itemType": "journalArticle",
"title": "The valid name for the genus *Loxocephalus* #Foerster#, 1862 (Insecta, Hymenoptera: Braconidae), preoccupied by *Loxocephalus* #Eberhard#, 1862 (Protozoa: Ciliophora)",
"creators": [
{
"firstName": "Wilhelm",
"lastName": "Foissner",
"creatorType": "author"
},
{
"firstName": "Cees van (auch Cornelis)",
"lastName": "Achterberg",
"creatorType": "author"
}
],
"date": "1997",
"libraryCatalog": "ZOBODAT",
"pages": "31-32",
"publicationTitle": "Zooel.Meded.Leiden",
"shortTitle": "The valid name for the genus *Loxocephalus* #Foerster#, 1862 (Insecta, Hymenoptera",
"url": "https://www.zobodat.at/publikation_articles.php?id=10027526",
"volume": "71",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.zobodat.at/publikation_articles.php?id=521285",
"items": [
{
"itemType": "journalArticle",
"title": "Kleintierhabitate",
"creators": [
{
"firstName": "Daniela",
"lastName": "Hofinger",
"creatorType": "author"
},
{
"firstName": "Harald",
"lastName": "Kutzenberger",
"creatorType": "author"
}
],
"date": "2023",
"issue": "1",
"libraryCatalog": "ZOBODAT",
"pages": "11-14",
"publicationTitle": "ÖKO.L Zeitschrift für Ökologie, Natur- und Umweltschutz",
"url": "https://www.zobodat.at/publikation_articles.php?id=521285",
"volume": "2023",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
400Simon Kornblith/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2019 Simon Kornblith
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
// TODO Detect DOIs more correctly.
// The actual rules for DOIs are very lax-- but we're more strict.
// Specifically, we should allow space characters, and all Unicode
// characters except for control characters. Here, we're cheating
// by not allowing ampersands, to fix an issue with getting DOIs
// out of URLs.
// Additionally, all content inside <noscript> is picked up as text()
// by the xpath, which we don't necessarily want to exclude, but
// that means that we can get DOIs inside node attributes and we should
// exclude quotes in this case.
// DOI should never end with a period or a comma (we hope)
// Description at: http://www.doi.org/handbook_2000/appendix_1.html#A1-4
const DOIre = /\b10\.[0-9]{4,}\/[^\s&"']*[^\s&"'.,]/g;
/**
* @return {string | string[]} A single string if the URL contains a DOI
* and the document contains no others, or an array of DOIs otherwise
*/
function getDOIs(doc, url) {
let fromURL = getDOIFromURL(url);
let fromDocument = getDOIsFromDocument(doc);
if (
// We got a DOI from the URL
fromURL && (
// And none from the document
fromDocument.length == 0
// Or one from the document, but the same one that was in the URL
|| fromDocument.length == 1 && fromDocument[0] == fromURL
)
) {
return fromURL;
}
// De-duplicate before returning
return Array.from(new Set(fromURL ? [fromURL, ...fromDocument] : fromDocument));
}
function getDOIFromURL(url) {
// Split on # and ?, so that we don't allow DOIs to contain those characters
// but do allow finding DOIs on either side of them (e.g. a DOI in the URL hash)
let urlParts = url.split(/[#?]/);
for (let urlPart of urlParts) {
let match = DOIre.exec(urlPart);
if (match) {
// Only return a single DOI from the URL
return match[0];
}
}
return null;
}
function getDOIsFromDocument(doc) {
var dois = new Set();
var m, DOI;
var treeWalker = doc.createTreeWalker(doc.documentElement, 4, null, false);
var ignore = ['script', 'style'];
while (treeWalker.nextNode()) {
if (ignore.includes(treeWalker.currentNode.parentNode.tagName.toLowerCase())) continue;
// Z.debug(node.nodeValue)
DOIre.lastIndex = 0;
while ((m = DOIre.exec(treeWalker.currentNode.nodeValue))) {
DOI = m[0];
if (DOI.endsWith(")") && !DOI.includes("(")) {
DOI = DOI.substr(0, DOI.length - 1);
}
if (DOI.endsWith("}") && !DOI.includes("{")) {
DOI = DOI.substr(0, DOI.length - 1);
}
// only add new DOIs
if (!dois.has(DOI)) {
dois.add(DOI);
}
}
}
// FIXME: The test for this (developmentbookshelf.com) fails in Scaffold due
// to a cookie error, though running the code in Scaffold still works
var links = doc.querySelectorAll('a[href]');
for (let link of links) {
DOIre.lastIndex = 0;
let m = DOIre.exec(link.href);
if (m) {
let doi = m[0];
if (doi.endsWith(")") && !doi.includes("(")) {
doi = doi.substr(0, doi.length - 1);
}
if (doi.endsWith("}") && !doi.includes("{")) {
doi = doi.substr(0, doi.length - 1);
}
// only add new DOIs
if (!dois.has(doi) && !dois.has(doi.replace(/#.*/, ''))) {
dois.add(doi);
}
}
}
return Array.from(dois);
}
function detectWeb(doc, url) {
// Blacklist the advertising iframe in ScienceDirect guest mode:
// http://www.sciencedirect.com/science/advertisement/options/num/264322/mainCat/general/cat/general/acct/...
// This can be removed from blacklist when 5c324134c636a3a3e0432f1d2f277a6bc2717c2a hits all clients (Z 3.0+)
const blacklistRe = /^https?:\/\/[^/]*(?:google\.com|sciencedirect\.com\/science\/advertisement\/)/i;
if (blacklistRe.test(url)) {
return false;
}
let doiOrDOIs = getDOIs(doc, url);
if (Array.isArray(doiOrDOIs)) {
return doiOrDOIs.length ? "multiple" : false;
}
return "journalArticle"; // A decent guess
}
async function retrieveDOIs(doiOrDOIs) {
let showSelect = Array.isArray(doiOrDOIs);
let dois = showSelect ? doiOrDOIs : [doiOrDOIs];
let items = {};
let numDOIs = dois.length;
for (const doi of dois) {
items[doi] = null;
const translate = Zotero.loadTranslator("search");
translate.setTranslator("b28d0d42-8549-4c6d-83fc-8382874a5cb9");
translate.setSearch({ itemType: "journalArticle", DOI: doi });
// don't save when item is done
translate.setHandler("itemDone", function (_translate, item) {
if (!item.title) {
Zotero.debug("No title available for " + item.DOI);
item.title = "[No Title]";
}
items[item.DOI] = item;
});
/* eslint-disable no-loop-func */
translate.setHandler("done", function () {
numDOIs--;
// All DOIs retrieved
if (numDOIs <= 0) {
// Check to see if there's at least one DOI
if (!Object.keys(items).length) {
throw new Error("DOI Translator: could not find DOI");
}
// If showSelect is false, don't show a Select Items dialog,
// just complete if we can
if (!showSelect) {
let firstItem = items[Object.keys(items)[0]];
if (firstItem) {
firstItem.complete();
}
return;
}
// Otherwise, allow the user to select among items that resolved successfully
let select = {};
for (let doi in items) {
let item = items[doi];
if (item) {
select[doi] = item.title || "[" + item.DOI + "]";
}
}
Zotero.selectItems(select, function (selectedDOIs) {
if (!selectedDOIs) return;
for (let selectedDOI in selectedDOIs) {
items[selectedDOI].complete();
}
});
}
});
// Don't throw on error
translate.setHandler("error", function () {});
await translate.translate();
}
}
async function doWeb(doc, url) {
let doiOrDOIs = getDOIs(doc, url);
Z.debug(doiOrDOIs);
await retrieveDOIs(doiOrDOIs);
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://blog.apastyle.org/apastyle/digital-object-identifier-doi/",
"items": "multiple"
},
{
"type": "web",
"url": "http://libguides.csuchico.edu/citingbusiness",
"items": "multiple"
},
{
"type": "web",
"url": "http://www.egms.de/static/de/journals/mbi/2015-15/mbi000336.shtml",
"items": "multiple"
},
{
"type": "web",
"url": "http://www.roboticsproceedings.org/rss09/p23.html",
"items": "multiple"
},
{
"type": "web",
"url": "https://en.wikipedia.org/wiki/Template_talk:Doi",
"items": "multiple"
},
{
"type": "web",
"url": "https://onlinelibrary.wiley.com/doi/full/10.7448/IAS.15.5.18440",
"items": [
{
"itemType": "journalArticle",
"title": "Track C Epidemiology and Prevention Science",
"creators": [],
"date": "2012-10-22",
"DOI": "10.7448/IAS.15.5.18440",
"ISSN": "1758-2652",
"issue": "Suppl 3",
"journalAbbreviation": "Journal of the International AIDS Society",
"libraryCatalog": "DOI.org (Crossref)",
"publicationTitle": "Journal of the International AIDS Society",
"url": "http://doi.wiley.com/10.7448/IAS.15.5.18440",
"volume": "15",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://dataverse.harvard.edu/dataset.xhtml?persistentId=doi:10.7910/DVN/BEJTMI",
"items": [
{
"itemType": "document",
"title": "Transfer of 50 thousand improved genetically improved farmed tilapia (GIFT) fry to Nigeria",
"creators": [
{
"lastName": "Trinh",
"firstName": "Trong",
"creatorType": "author"
},
{
"lastName": "Trinh",
"firstName": "Trong",
"creatorType": "contributor"
},
{
"lastName": "WorldFish",
"creatorType": "contributor",
"fieldMode": true
}
],
"date": "2023",
"abstractNote": "The data contains the list of female broodstock that produced improved GIFT fry sent to Nigeria in three batches in 2022",
"extra": "Type: dataset\nDOI: 10.7910/DVN/BEJTMI",
"libraryCatalog": "DOI.org (Datacite)",
"publisher": "Harvard Dataverse",
"url": "https://dataverse.harvard.edu/citation?persistentId=doi:10.7910/DVN/BEJTMI",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Vinoth K - highwirepress.com^https?://www\.accessengineeringlibrary\.com//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2020-2021 Vinoth K - highwirepress.com
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
let title = attr(doc, 'meta[name="citation_title"]', 'content');
if (title) {
if (doc.querySelector('meta[name="citation_isbn"]')) {
let bookTitle = attr(doc, 'meta[name="citation_book_title"]', 'content');
if (!bookTitle || title == bookTitle) {
return "book";
}
else {
return "bookSection";
}
}
else if (url.includes('content/video/')) {
return 'videoRecording';
}
else {
return "journalArticle";
}
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.results-item a[href]');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
// Missing editions for books and books chapter page
// Removed html element in abstract for video and tutorial page
// Author not updating in metatag correctly from data and read
// client advised to split and handled through custom data attr/obj
// - so we'll fill those in manually.
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
// Edition
let edition = ZU.xpathText(doc, '//meta[@name="citation_edition"]/@content');
if (edition) item.edition = edition;
// Author
// Some of old pages not having firstname, lastname seperation in markup and ignore if not
let author = doc.querySelectorAll("ul.contributor-list > [data-firstnames]");
item.creators = [];
for (let i = 0; i < author.length; i++) {
let creatorData = author[i].dataset;
item.creators.push({
firstName: creatorData.firstnames,
lastName: creatorData.surname,
creatorType: creatorData.authortype
});
}
// Abstract
let abstractNote = ZU.xpathText(doc, '//meta[@name="citation_abstract"]/@content');
if (abstractNote) item.abstractNote = ZU.cleanTags(abstractNote);
item.complete();
});
translator.getTranslatorObject(function (trans) {
// Detect web not get trigger for scape EM translator
// - so wll fill those in manually.
trans.itemType = detectWeb(doc, url);
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.accessengineeringlibrary.com/content/book/9781259860225",
"items": [
{
"itemType": "book",
"title": "Handbook of Environmental Engineering",
"creators": [
{
"firstName": "Rao Y.",
"lastName": "Surampalli",
"creatorType": "editor"
},
{
"firstName": "Tian C.",
"lastName": "Zhang",
"creatorType": "editor"
},
{
"firstName": "Satinder Kaur",
"lastName": "Brar",
"creatorType": "editor"
},
{
"firstName": "Krishnamoorthy",
"lastName": "Hegde",
"creatorType": "editor"
},
{
"firstName": "Rama",
"lastName": "Pulicharla",
"creatorType": "editor"
},
{
"firstName": "Mausam",
"lastName": "Verma",
"creatorType": "editor"
}
],
"date": "2018",
"ISBN": "9781259860225",
"abstractNote": "A complete guide to environmental regulations and remediation.This practical resource offers thorough coverage of current environmental issues and policies along with step-by-step remediation procedures. With contributions from dozens of industry-recognized experts, Handbook of Environmental Engineering features information on all segments of the market—including water and air quality and hazardous waste—and enables you to ensure compliance with all applicable regulations. You will get details about sensors, monitoring, and toxicity treatment and controls as well as waste management and safe disposal. Real-world examples demonstrate how to apply techniques and achieve compliance, while environmental impact assessments and measurement data enhance the book9s utility.Coverage includes:• Environmental legislation• Environmental impact assessments• Air pollution control and management• Potable water treatment• Wastewater treatment and reuse• Solid waste management• Hazardous waste management• Emerging wastes in the environment• Environmental monitoring and measurements",
"edition": "1st Edition",
"language": "en",
"libraryCatalog": "www.accessengineeringlibrary.com",
"publisher": "McGraw-Hill Education",
"url": "https://www.accessengineeringlibrary.com/content/book/9781259860225",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.accessengineeringlibrary.com/content/book/9781259860225/toc-chapter/chapter3/section/section1",
"items": [
{
"itemType": "bookSection",
"title": "CHAPTER PRELIMINARIES",
"creators": [
{
"firstName": "Ashok",
"lastName": "Kumar",
"creatorType": "author"
},
{
"firstName": "Hamid",
"lastName": "Omidvarborna",
"creatorType": "author"
},
{
"firstName": "Rao Y.",
"lastName": "Surampalli",
"creatorType": "editor"
},
{
"firstName": "Tian C.",
"lastName": "Zhang",
"creatorType": "editor"
},
{
"firstName": "Satinder Kaur",
"lastName": "Brar",
"creatorType": "editor"
},
{
"firstName": "Krishnamoorthy",
"lastName": "Hegde",
"creatorType": "editor"
},
{
"firstName": "Rama",
"lastName": "Pulicharla",
"creatorType": "editor"
},
{
"firstName": "Mausam",
"lastName": "Verma",
"creatorType": "editor"
}
],
"date": "2018",
"ISBN": "9781259860225",
"abstractNote": "A complete guide to environmental regulations and remediation.This practical resource offers thorough coverage of current environmental issues and policies along with step-by-step remediation procedures. With contributions from dozens of industry-recognized experts, Handbook of Environmental Engineering features information on all segments of the market—including water and air quality and hazardous waste—and enables you to ensure compliance with all applicable regulations. You will get details about sensors, monitoring, and toxicity treatment and controls as well as waste management and safe disposal. Real-world examples demonstrate how to apply techniques and achieve compliance, while environmental impact assessments and measurement data enhance the book's utility.Coverage includes:• Environmental legislation• Environmental impact assessments• Air pollution control and management• Potable water treatment• Wastewater treatment and reuse• Solid waste management• Hazardous waste management• Emerging wastes in the environment• Environmental monitoring and measurements",
"bookTitle": "Handbook of Environmental Engineering",
"language": "en",
"libraryCatalog": "www.accessengineeringlibrary.com",
"publisher": "McGraw-Hill Education",
"url": "https://www.accessengineeringlibrary.com/content/book/9781259860225/toc-chapter/chapter3/section/section1",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.accessengineeringlibrary.com/content/video/V4005352521001",
"items": [
{
"itemType": "videoRecording",
"title": "123D Design: Cut Text Through a Plane",
"creators": [],
"date": "2014",
"abstractNote": "This video shows how to cut text through a plane with Combine/Subtract.",
"language": "en",
"libraryCatalog": "www.accessengineeringlibrary.com",
"shortTitle": "123D Design",
"studio": "McGraw-Hill Education",
"url": "https://www.accessengineeringlibrary.com/content/video/V4005352521001",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.accessengineeringlibrary.com/content/calculator/S0071_Basic_Transformer_Calculations",
"items": [
{
"itemType": "journalArticle",
"title": "Basic Transformer Calculations",
"creators": [
{
"firstName": "Bhagyalakshmi",
"lastName": "Kerekare",
"creatorType": "author"
}
],
"date": "2022/06/25/",
"abstractNote": "This Excel workbook contains four worksheets. The first worksheet covers the basic concepts of single phase transformer such as turns ratio, primary current, secondary current, primary voltage, secondary voltage, and transformer ratio calculations. The second worksheet covers the basic concepts of power, efficiency, primary/secondary EMF and transformer rating calculations. The third worksheet covers the basic concepts of three phase transformers, highlighting the star and delta connections. Calculations are done for phase voltage, phase current, line voltage, and line current for star and delta connections. The fourth worksheet covers the basic concepts kVA Ratings, 3-phase primary, and secondary full load current 3-phase voltage calculations.",
"language": "en",
"libraryCatalog": "www.accessengineeringlibrary.com",
"url": "https://www.accessengineeringlibrary.com/content/calculator/S0071_Basic_Transformer_Calculations",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.accessengineeringlibrary.com/content/case-study/CS0004_Atrial_Fibrillation",
"items": [
{
"itemType": "journalArticle",
"title": "Atrial Fibrillation: Improving Therapy via Engineering Advancements",
"creators": [
{
"firstName": "Michael J.",
"lastName": "Rust",
"creatorType": "author"
}
],
"date": "2020-04-23",
"abstractNote": "This case will explore atrial fibrillation from several perspectives, including the underlying physiology, clinical relevance, and instrumentation used for diagnosis and therapy. Students will identify and investigate unmet clinical needs that led to recent developments in technologies to treat atrial fibrillation.",
"language": "en",
"libraryCatalog": "www.accessengineeringlibrary.com",
"shortTitle": "Atrial Fibrillation",
"url": "https://www.accessengineeringlibrary.com/content/case-study/CS0004_Atrial_Fibrillation",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.accessengineeringlibrary.com/content/tutorial/T0004_Partially_Full_Pipe_Flow_Calculations_Using_Excel_Spreadsheets",
"items": [
{
"itemType": "journalArticle",
"title": "Partially Full Pipe Flow Calculations Using Excel Spreadsheets",
"creators": [
{
"firstName": "Harlan H.",
"lastName": "Bengtson",
"creatorType": "author"
}
],
"date": "2014/02/01/",
"abstractNote": "This tutorial provides discussion of, and illustration by, examples for use of an Excel spreadsheet for making a variety of calculations for the flow of water in a partially full circular pipe using the Manning Equation. Equations for calculating area, wetted perimeter, and hydraulic radius for partially full pipe flow are included in this tutorial along with a brief review of the Manning Equation and discussion of its use to calculate a) the flow rate in a given pipe (given diameter, slope, & Manning roughness) at a specified depth of flow, b) the required diameter for a specified flow rate at a target percent full in a given pipe, and c) the normal depth (depth of flow) for a specified flow rate in a given pipe. This includes presentation and discussion of the equations for the calculations, example calculations, and screenshots of spreadsheets to facilitate the calculations.",
"language": "en",
"libraryCatalog": "www.accessengineeringlibrary.com",
"url": "https://www.accessengineeringlibrary.com/content/tutorial/T0004_Partially_Full_Pipe_Flow_Calculations_Using_Excel_Spreadsheets",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.accessengineeringlibrary.com/search?query=&f%5B0%5D=content_type%3ABooks&f%5B1%5D=book_component%3ATitles",
"items": "multiple"
}
]
/** END TEST CASES **/
100Sebastian Karcher^https://www\.theatlantic\.com/.+/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2011 Sebastian Karcher and contributors
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
// path at /[type]/archive/yyyy/mm/...
const SINGLE_ITEM_URL_RE = /^https:\/\/[^/]+\/(.+)\/archive\/\d{4}\/\d{2}\/.+/;
function detectWeb(doc, url) {
let singleItemMatch = url.match(SINGLE_ITEM_URL_RE);
if (!singleItemMatch) {
return getSearchResults(doc, true) && "multiple";
}
switch (singleItemMatch[1]) {
// articles from print issues
case "magazine":
return "magazineArticle";
case "podcasts":
return "podcast";
default:
// see, e.g. https://www.theatlantic.com/category/fiction/
// and look at the class list of the li elements; the
// non-magazineArticle items have "blog-article" as one of its
// classes
return "blogPost"; // TODO: consider this
}
}
function getSearchResults(doc, checkOnly) {
let items = {};
let found = false;
// "li.article" selector: see https://www.theatlantic.com/category/fiction/
let rows = doc.querySelectorAll("li.article > a, a[data-action~='title']");
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!title || !SINGLE_ITEM_URL_RE.test(href)) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
async function doWeb(doc, url) {
if (detectWeb(doc, url) == 'multiple') {
let items = await Zotero.selectItems(getSearchResults(doc, false));
if (!items) return;
for (let url of Object.keys(items)) {
await scrape(await requestDocument(url));
}
}
else {
await scrape(doc, url);
}
}
async function scrape(doc, url = doc.location.href) {
let type = detectWeb(doc, url);
let translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', (_obj, item) => {
item.publicationTitle = "The Atlantic";
item.libraryCatalog = "The Atlantic";
// get rid of trailing "- The Atlantic" in some titles
item.title = item.title.replace(/\s+-\s+The Atlantic$/i, "");
// tags from EM is rarely helpful for The Atlantic; they're from the
// meta[name='keywords'] tags, and are either redundant with "Section"
// (in the extra) or spam.
item.tags = [];
// fix multiple authors; metadata give us one comma-separated string
item.creators = [];
// latter selector for legacy layout
for (let element of doc.querySelectorAll('#byline a[href*="/author/"], .byline span[itemprop="author"]')) {
item.creators.push(
ZU.cleanAuthor(
ZU.trimInternal(element.textContent),
"author"
)
);
}
// keep only the date part of the datetime
if (item.date) {
item.date = ZU.strToISO(item.date);
}
if (type === "magazineArticle") {
let issueTitle = text(doc, 'div[class*="ArticleMagazineIssueNav_title"]')
.replace(/\s+Issue$/i, "");
if (issueTitle) {
if (!item.extra) {
item.extra = "";
}
else {
item.extra += "\n";
}
item.extra += `Volume Title: ${issueTitle}`;
}
item.ISSN = "2151-9463";
}
else if (type === "podcast") {
item.seriesTitle = text(doc, "#rubric");
let podcasters = []; // plain name strings, "First Last"
for (let creator of item.creators) {
creator.creatorType = "podcaster";
podcasters.push([creator.firstName, creator.lastName].join(" "));
}
for (let creator of getPodcastCreators(doc)) {
if (!podcasters.includes(creator)) {
item.creators.push(ZU.cleanAuthor(creator, "guest"));
}
}
}
item.complete();
});
let em = await translator.getTranslatorObject();
em.itemType = type || "webpage";
await em.doWeb(doc, url);
}
// Get podcast participants from the transcript (paragraph-leading text in
// <strong>). The assumption is that the first mention of anyone is the
// person's full name, and that the further mentions of any particular person
// is a substring of the full name, and they're used consistently in the
// transcripts.
function getPodcastCreators(doc) {
// transcript paragraphs
let containers = doc.querySelectorAll('p[class*="ArticleParagraph_root"], div[class*="ArticleLegacyHtml_root"]');
let namesInQuotes = new Set();
let creatorNames = [];
let skip = new Set();
Z.debug(`total paragraphs: ${containers.length}`);
let i = 0; // NOTE: debug only
for (let containerElement of containers) {
// Contributor name in bold (<strong> tag), leading a paragraph in the
// transcript
let element = containerElement.querySelector("strong");
// if no <strong> tag, or if the first <strong> tag contains all the
// text of the paragraph or div, it's not a name string.
if (!element) continue;
let elementText = element.textContent;
let nameString = ZU.trimInternal(elementText).replace(/\s*:$/, "");
if (skip.has(nameString) || !nameString) continue;
if (elementText === containerElement.textContent) continue;
// Quotes may contain participant's first mentions but also irrelevant
// names (e.g. from newsreels) for context. Stash these names for
// further processing.
if (element.querySelector("em")) {
namesInQuotes.add(nameString);
continue;
}
i++; // NOTE: debug only
// only if a name string is a not a substring of any other name we've
// kept, add it to the array of name we keep (creatorNames)
// NOTE: nested substring test
if (!creatorNames.filter(keptName => keptName.includes(nameString)).length) {
creatorNames.push(nameString); // keep this string
}
skip.add(nameString); // skip further appearances
}
Z.debug(`names contributing to substring test cost ${i}`);
// Process names in quoted content (text lines in <em> tags). Take a string
// X from quotes, and check 1) if no kept creator name is a substring of X,
// X is discarded because it's irrelevant; 2) if a string Y from the kept
// names is a substring of X, Y is discarded, X is kept.
Z.debug(`kept names from main paragraphs ${creatorNames.length}`);
creatorNames = new Set(creatorNames);
i = 0; // NOTE: debug only
Z.debug(`names from quotation paragraphs ${namesInQuotes.size}`);
for (let str of namesInQuotes) {
if (skip.has(str)) continue;
i++; // NOTE: debug only
let keepStr = false;
for (let keptName of creatorNames) { // NOTE: nested substring test
if (str.includes(keptName)) {
creatorNames.delete(keptName);
skip.add(keptName);
keepStr = true;
}
}
if (keepStr) {
creatorNames.add(str);
}
skip.add(str);
}
Z.debug(`names from quotation contributing to substring test cost ${i}`);
return creatorNames;
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.theatlantic.com/author/ta-nehisi-coates/",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.theatlantic.com/politics/archive/2011/06/jon-stewart-challenges-fox-news-to-correct-its-errors/240900/",
"items": [
{
"itemType": "blogPost",
"title": "Jon Stewart Challenges Fox News to Correct Its Errors",
"creators": [
{
"firstName": "Conor",
"lastName": "Friedersdorf",
"creatorType": "author"
}
],
"date": "2011-06-23",
"abstractNote": "In the same segment, the comedian apologized for saying its viewers are always found to be the most misinformed",
"blogTitle": "The Atlantic",
"language": "en",
"url": "https://www.theatlantic.com/politics/archive/2011/06/jon-stewart-challenges-fox-news-to-correct-its-errors/240900/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.theatlantic.com/magazine/archive/2011/07/the-worlds-schoolmaster/308532/",
"items": [
{
"itemType": "magazineArticle",
"title": "The World’s Schoolmaster",
"creators": [
{
"firstName": "Amanda",
"lastName": "Ripley",
"creatorType": "author"
}
],
"date": "2011-06-07",
"ISSN": "2151-9463",
"abstractNote": "How a German scientist is using test data to revolutionize global learning",
"extra": "Volume Title: July/August 2011",
"language": "en",
"libraryCatalog": "The Atlantic",
"publicationTitle": "The Atlantic",
"url": "https://www.theatlantic.com/magazine/archive/2011/07/the-worlds-schoolmaster/308532/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.theatlantic.com/search/?q=europe",
"defer": true,
"items": "multiple"
},
{
"type": "web",
"url": "https://www.theatlantic.com/health/archive/2014/03/the-toxins-that-threaten-our-brains/284466/",
"items": [
{
"itemType": "blogPost",
"title": "The Toxins That Threaten Our Brains",
"creators": [
{
"firstName": "James",
"lastName": "Hamblin",
"creatorType": "author"
}
],
"date": "2014-03-18",
"abstractNote": "Leading scientists recently identified a dozen chemicals as being responsible for widespread behavioral and cognitive problems. But the scope of the chemical dangers in our environment is likely even greater. Why children and the poor are most susceptible to neurotoxic exposure that may be costing the U.S. billions of dollars and immeasurable peace of mind.",
"blogTitle": "The Atlantic",
"language": "en",
"url": "https://www.theatlantic.com/health/archive/2014/03/the-toxins-that-threaten-our-brains/284466/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.theatlantic.com/podcasts/archive/2023/09/ba-286-covid-variant-future/675248/",
"items": [
{
"itemType": "podcast",
"title": "Our First ‘Nonemergency’ COVID Season",
"creators": [
{
"firstName": "Hanna",
"lastName": "Rosin",
"creatorType": "podcaster"
},
{
"firstName": "Katie",
"lastName": "Wu",
"creatorType": "guest"
},
{
"firstName": "Sarah",
"lastName": "Zhang",
"creatorType": "guest"
}
],
"abstractNote": "A new wave. A new variant. A new vaccine. Do we know COVID’s annual pattern yet?",
"language": "en",
"seriesTitle": "Radio Atlantic",
"url": "https://www.theatlantic.com/podcasts/archive/2023/09/ba-286-covid-variant-future/675248/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.theatlantic.com/podcasts/archive/2023/08/trans-texas/675188/",
"items": [
{
"itemType": "podcast",
"title": "When the State Has a Problem With Your Identity",
"creators": [
{
"firstName": "Hanna",
"lastName": "Rosin",
"creatorType": "podcaster"
},
{
"firstName": "Ethan",
"lastName": "Brooks",
"creatorType": "podcaster"
},
{
"firstName": "",
"lastName": "Teenager",
"creatorType": "guest"
},
{
"firstName": "",
"lastName": "Mom",
"creatorType": "guest"
},
{
"firstName": "",
"lastName": "Dad",
"creatorType": "guest"
}
],
"abstractNote": "Inside one family’s decision to move from Texas to California to protect their transgender teenager",
"language": "en",
"seriesTitle": "Radio Atlantic",
"url": "https://www.theatlantic.com/podcasts/archive/2023/08/trans-texas/675188/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.theatlantic.com/podcasts/archive/2023/06/buying-house-with-friends-family/674343/",
"items": [
{
"itemType": "podcast",
"title": "How to Talk to People: What Makes a House a Home",
"creators": [
{
"firstName": "Julie",
"lastName": "Beck",
"creatorType": "podcaster"
},
{
"firstName": "Rebecca",
"lastName": "Rashid",
"creatorType": "podcaster"
},
{
"firstName": "Deborah",
"lastName": "Tepley",
"creatorType": "guest"
},
{
"firstName": "Bethany",
"lastName": "Fleming",
"creatorType": "guest"
},
{
"firstName": "Luke",
"lastName": "Jackson",
"creatorType": "guest"
},
{
"firstName": "T. J.",
"lastName": "Fleming",
"creatorType": "guest"
}
],
"abstractNote": "Two married couples who bought a home together have found that expanding their household led to a deeper sense of community.",
"language": "en",
"seriesTitle": "Podcasts",
"shortTitle": "How to Talk to People",
"url": "https://www.theatlantic.com/podcasts/archive/2023/06/buying-house-with-friends-family/674343/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.theatlantic.com/projects/new-rules/",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.theatlantic.com/projects/ideas-2010/archive/2010/06/reading-writing-and-thinking-online-an-interview-with-alan-jacobs/57807/",
"items": [
{
"itemType": "blogPost",
"title": "Reading, Writing, and Thinking Online: An Interview With Alan Jacobs",
"creators": [
{
"firstName": "Conor",
"lastName": "Friedersdorf",
"creatorType": "author"
}
],
"date": "2010-06-08",
"abstractNote": "An accomplished author, essayist and academic on how he successfully navigates the Web, why English students should be forced to recite poems from memory, and why it's a bad idea to read your child Goodnight Moon on a Kindle.",
"blogTitle": "The Atlantic",
"language": "en",
"shortTitle": "Reading, Writing, and Thinking Online",
"url": "https://www.theatlantic.com/projects/ideas-2010/archive/2010/06/reading-writing-and-thinking-online-an-interview-with-alan-jacobs/57807/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
98Abe Jellinek/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2023 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectSearch(items) {
items = cleanData(items);
return !!items.length;
}
async function doSearch(items) {
items = cleanData(items);
for (let { ISBN } of items) {
let search = ISBN;
if (ISBN.length == 10) {
search += ' OR ' + ZU.toISBN13(ISBN);
}
let body = {
count: true,
facets: [],
filter: '',
orderby: null,
queryType: 'full',
search,
searchFields: 'FormattedKey,RowKey',
searchMode: 'any',
select: '*',
skip: 0,
top: 1
};
let response = await requestJSON('https://isbn-search-br.search.windows.net/indexes/isbn-index/docs/search?api-version=2016-09-01', {
method: 'POST',
headers: {
'Content-Type': 'application/json; charset=UTF-8',
'api-key': '100216A23C5AEE390338BBD19EA86D29',
Origin: 'https://www.cblservicos.org.br',
Referer: 'https://www.cblservicos.org.br/'
},
body: JSON.stringify(body)
});
let results = response.value;
for (let result of results) {
translateResult(result);
}
}
}
function translateResult(result) {
Z.debug(result)
let item = new Zotero.Item('book');
item.title = result.Title;
if (result.Subtitle && !item.title.includes(':') && !result.Subtitle.includes(':')) {
item.title += ': ' + result.Subtitle;
}
item.title = fixCase(item.title);
item.abstractNote = result.Sinopse;
item.series = fixCase(result.Colection);
// TODO: Need example data for:
// item.seriesNumber
// item.volume
// item.numberOfVolumes
item.edition = result.Edicao;
if (item.edition == '1') {
item.edition = '';
}
item.place = (result.Cidade || '') + (result.UF ? ', ' + result.UF : '');
item.publisher = fixCase(result.Imprint);
item.date = ZU.strToISO(result.Date);
item.numPages = result.Paginas;
if (item.numPages == '0') {
item.numPages = '';
}
item.language = (result.IdiomasObra && result.IdiomasObra[0]) || 'pt-BR';
if (item.language == 'português (Brasil)') {
item.language = 'pt-BR';
}
item.ISBN = ZU.cleanISBN(result.FormattedKey);
for (let [i, author] of result.Authors.entries()) {
if (author == author.toUpperCase()) {
author = ZU.capitalizeName(author);
}
let creatorType;
if (result.Profissoes && result.Profissoes.length === result.Authors.length) {
switch (result.Profissoes[i]) {
case 'Coordenador':
case 'Autor':
case 'Roteirista':
creatorType = 'author';
break;
case 'Revisor':
case 'Organizador':
case 'Editor':
creatorType = 'editor';
break;
case 'Tradutor':
creatorType = 'translator';
break;
case 'Ilustrador': // TODO: Used?
case 'Projeto Gráfico':
creatorType = 'illustrator';
break;
default:
// First creator is probably an author,
// even if the Profissoes string is something weird
creatorType = i == 0 ? 'author' : 'contributor';
break;
}
}
// No/mismatched-length Profissoes array, so we have to guess that this non-primary creator
// is a contributor
else if (i > 0) {
creatorType = 'contributor';
}
// No/mismatched-length Profissoes array, so we have to guess that this primary creator
// is an author
else {
creatorType = 'author';
}
// Brazilian names often contain many surnames, but determining which names are surnames
// and which are given names is outside the scope of this translator.
// Chicago indexes by the final element of the name alone, and so will we:
// https://en.wikipedia.org/wiki/Portuguese_name#Indexing
let creator = ZU.cleanAuthor(author, creatorType, author.includes(','));
if (!creator.firstName) creator.fieldMode = 1;
// That said, we will handle name suffixes, which should be combined with the last "middle"
// name particle in the last name
if (creator.firstName && creator.lastName
&& ['filho', 'junior', 'neto', 'sobrinho', 'segundo', 'terceiro']
.includes(ZU.removeDiacritics(creator.lastName.toLowerCase()))) {
let firstNameSplit = creator.firstName.split(/\s+/);
if (firstNameSplit.length) {
let lastParticleFirstName = firstNameSplit[firstNameSplit.length - 1];
creator.lastName = lastParticleFirstName + ' ' + creator.lastName;
creator.firstName = firstNameSplit.slice(0, firstNameSplit.length - 1).join(' ');
}
}
item.creators.push(creator);
}
if (result.Subject) {
item.tags.push({ tag: result.Subject });
}
for (let tag of result.PalavrasChave) {
item.tags.push({ tag });
}
item.complete();
}
function fixCase(s) {
if (s && s == s.toUpperCase()) {
s = ZU.capitalizeTitle(s, true);
}
return s;
}
function cleanData(items) {
if (!Array.isArray(items)) {
items = [items];
}
return items
.map((item) => {
if (typeof item === 'string') {
item = { ISBN: item };
}
if (item.ISBN) {
item.ISBN = ZU.cleanISBN(item.ISBN);
}
return item;
})
.filter(item => item.ISBN && (
item.ISBN.startsWith('97865')
|| item.ISBN.startsWith('65')
|| item.ISBN.startsWith('97885')
|| item.ISBN.startsWith('85')));
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "search",
"input": {
"ISBN": "9786599594755"
},
"items": [
{
"itemType": "book",
"title": "Mercadores da Insegurança: conjuntura e riscos do hacking governamental no Brasil",
"creators": [
{
"firstName": "André",
"lastName": "Ramiro",
"creatorType": "author"
},
{
"firstName": "Pedro",
"lastName": "Amaral",
"creatorType": "contributor"
},
{
"firstName": "Mariana",
"lastName": "Canto",
"creatorType": "contributor"
},
{
"firstName": "Marcos César M.",
"lastName": "Pereira",
"creatorType": "contributor"
},
{
"firstName": "Raquel",
"lastName": "Saraiva",
"creatorType": "contributor"
},
{
"firstName": "Clara",
"lastName": "Guimarães",
"creatorType": "contributor"
}
],
"date": "2022-10-11",
"ISBN": "9786599594755",
"abstractNote": "Em políticas públicas, o debate sobre como as técnicas de investigações criminais devem responder à digitalização das dinâmicas sociais tem se sobressaído e caminha em uma linha tênue entre otimização dos processos administrativos e possíveis transgressões em relação aos direitos fundamentais. Nesse sentido, técnicas de hacking governamental, ou seja, de superação de recursos de segurança em dispositivos pessoais, vem ganhando uma escalabilidade crescente e envolve a ampliação de fabricantes, revendedores e contratos com a administração pública, ao passo em que seus efeitos colaterais aos direitos fundamentais, sobretudo em relação à sociedade civil, vêm sendo denunciados internacionalmente.",
"language": "pt-BR",
"libraryCatalog": "Câmara Brasileira do Livro ISBN",
"place": "Recife, PE",
"publisher": "IP.rec",
"shortTitle": "Mercadores da Insegurança",
"attachments": [],
"tags": [
{
"tag": "Digital"
},
{
"tag": "Direito"
},
{
"tag": "Governamental"
},
{
"tag": "Insegurança"
},
{
"tag": "dados"
},
{
"tag": "hacking"
},
{
"tag": "vazamento"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "search",
"input": {
"ISBN": "8532511015"
},
"items": [
{
"itemType": "book",
"title": "Harry Potter E a Pedra Filosofal",
"creators": [
{
"firstName": "J. K.",
"lastName": "Rowling",
"creatorType": "author"
}
],
"date": "2000-05-29",
"ISBN": "9788532511010",
"language": "pt-BR",
"libraryCatalog": "Câmara Brasileira do Livro ISBN",
"publisher": "Rocco",
"attachments": [],
"tags": [
{
"tag": "Biblioteconomia e ciência da informação"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "search",
"input": {
"ISBN": "9786555320275"
},
"items": [
{
"itemType": "book",
"title": "Harry Potter e o Prisioneiro de Azkaban",
"creators": [
{
"firstName": "J. K.",
"lastName": "Rowling",
"creatorType": "author"
},
{
"firstName": "Lia",
"lastName": "Wyler",
"creatorType": "contributor"
},
{
"firstName": "Arch",
"lastName": "Apolar",
"creatorType": "contributor"
}
],
"date": "2020-03-04",
"ISBN": "9786555320275",
"language": "pt-BR",
"libraryCatalog": "Câmara Brasileira do Livro ISBN",
"publisher": "Rocco",
"series": "Harry Potter",
"attachments": [],
"tags": [
{
"tag": "Harry-Potter"
},
{
"tag": "Literatura infanto-juvenil"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "search",
"input": {
"ISBN": "9786587233956"
},
"items": [
{
"itemType": "book",
"title": "Einstein Socialista: Entrevistas, manifestos e artigos do maior cientista do século XX",
"creators": [
{
"firstName": "Albert",
"lastName": "Einstein",
"creatorType": "author"
},
{
"firstName": "Hugo",
"lastName": "Albuquerque",
"creatorType": "editor"
},
{
"firstName": "Lígia Magalhães",
"lastName": "Marinho",
"creatorType": "translator"
}
],
"date": "2023-04-12",
"ISBN": "9786587233956",
"abstractNote": "Por serem supostamente purgadas da “ideologia”, as ciências exatas alcançaram entre nós um status de demasiada confiabilidade, objetividade e verdade, Entretanto, Albert Einstein, o maior físico do século XX, não compactuava com essa crença e defendia abertamente os valores socialistas, colocando a própria narrativa cientificista, quase sempre favorável à ordem capitalista, em curto-circuito.\n\nEinstein era um militante e não se calou diante das falaciosas equiparações entre a Alemanha Nazista e a União Soviética. Nem se calou, como judeu, diante das violências cometidas contra os palestinos, pouco depois do Holocausto, pelos colonos judeus no nascente Estado de Israel. Tampouco poupou críticas à segregação racial nos Estados Unidos, onde foi lecionar em seus últimos anos.\n\nQuando a Guerra Fria estava a todo vapor, Einstein escreveu “Por que o Socialismo?” –, um de seus artigos mais conhecidos sobre política e frequentemente esquecido e dissociado de sua imagem. Não à toa, este texto, vez ou outra, é apresentado como “novidade” e não cansa de surpreender geração após geração. E que não se diga que era uma forma atenuada de socialismo que Einstein estava falando:\n\n“Numa economia planificada, em que a produção é ajustada às necessidades da comunidade, o trabalho a ser feito seria distribuído entre todas as pessoas aptas ao trabalho e garantiria condições de vida a todo homem, mulher e criança.”\n\nOu mesmo que, especificamente sobre a Revolução Russa, ele tenha confessado a Viereck que: \n\n“O bolchevismo é uma experiência extraordinária. Não é impossível que a deriva da evolução social daqui para a frente seja em direção ao comunismo. O experimento bolchevista talvez valha a pena.”\n\nCom uma certa dose de utopismo e um enorme enigma de como o socialismo pode ser alcançado e mantido, Einstein Socialista nos apresenta uma série de artigos, entrevistas e manifestos que revelam um lado muitas vezes negligenciado e “esquecido” de um dos maiores cientistas do mundo.",
"language": "pt-BR",
"libraryCatalog": "Câmara Brasileira do Livro ISBN",
"numPages": "96",
"place": "São Paulo, SP",
"publisher": "Autonomia Literaria",
"shortTitle": "Einstein Socialista",
"attachments": [],
"tags": [
{
"tag": "Ciências sociais"
},
{
"tag": "einstein"
},
{
"tag": "nazismo"
},
{
"tag": "relatividade"
},
{
"tag": "socialismo"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "search",
"input": {
"ISBN": "9788565053082"
},
"items": [
{
"itemType": "book",
"title": "State of the Art in Health and Knowledge",
"creators": [
{
"firstName": "Sociedade Beneficente Israelita Brasileira Albert",
"lastName": "Einstein",
"creatorType": "author"
},
{
"firstName": "Juliana",
"lastName": "Samel",
"creatorType": "translator"
}
],
"date": "2023-02-02",
"ISBN": "9788565053082",
"abstractNote": "The book presents the Albert Einstein Teaching and Research Center - Campus Cecilia and Abram Szajman, an architectural work in the city of São Paulo, created to be one of the most advanced teaching and research centers in the world. Students and researchers interact in this building to generate knowledge, with the aim of boosting Brazilian research and all this in an environment integrated with greenery, with the use of natural light and renewable energy technology.",
"language": "Inglês (EUA)",
"libraryCatalog": "Câmara Brasileira do Livro ISBN",
"numPages": "58",
"place": "São Paulo, SP",
"publisher": "Sociedade Beneficente Israelita Brasileira Albert Einstein",
"attachments": [],
"tags": [
{
"tag": "Arquitetura"
},
{
"tag": "Landscaping"
},
{
"tag": "architecture"
},
{
"tag": "health"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "search",
"input": {
"ISBN": "9786580341221"
},
"items": [
{
"itemType": "book",
"title": "Filipson: Memórias de uma menina na primeira colônia judaica no Rio Grande do Sul (1904-1920)",
"creators": [
{
"firstName": "Frida",
"lastName": "Alexandr",
"creatorType": "author"
},
{
"firstName": "Regina",
"lastName": "Zilberman",
"creatorType": "contributor"
}
],
"date": "2023-05-11",
"ISBN": "9786580341221",
"abstractNote": "“Já ouviram falar de Filipson? Um nome esquisito. Nem parece brasileiro. Mas, dentro do Brasil imenso, constituía um pontinho minúsculo que ficava lá nas bandas do Sul, perdido no meio de diversas colônias prósperas compostas em sua maioria de imigrantes espanhóis, italianos e alemães e uma ou outra fazenda de brasileiros.”\n\nDesde a primeira linha, Frida Alexandr surpreende o leitor, interpelando-o com uma pergunta. Mesmo em 1967, quando suas memórias foram publicadas em edição restrita, provavelmente poucos responderiam afirmativamente à sua questão.\n\nFilipson foi a primeira colônia judaica oficial do Brasil, formada por imigrantes judeus provenientes da Bessarábia (na região onde atualmente se localiza a Moldávia). Os pais e irmãos mais velhos de Frida chegaram ao Brasil com o grupo pioneiro, em 1904, e em \"Filipson: memórias de uma menina na primeira colônia judaica no Rio Grande do Sul (1904-1920)\". Frida deixa um registro que vai dos primeiros dias da colônia à melancólica despedida, em 1920, quando sua família decide partir novamente.\n\nEntre os dois pontos, desliza a memória de Frida, que organiza os fatos sem a preocupação de ordená-los no tempo. O importante é como essas cenas — que envolvem seus familiares, sua passagem pela escola, as dificuldades financeiras da família, as ameaças representadas por uma natureza nem sempre hospitaleira — repercutem em sua sensibilidade. Frida se vale da linguagem para transmitir a emoção na forma como a vivenciou.\n\n\"Filipson\", com posfácio da pesquisadora e escritora Regina Zilberman, é um testemunho de uma etapa do processo de adaptação e preservação dos judeus do leste da Europa no Brasil. Mas esse caráter documental é acompanhado pela recuperação sensível daqueles momentos fundadores, como se a autora, à maneira de Proust, fosse em busca das vivências daquele tempo, para transmiti-lo a um leitor que pouco conhece sobre o período.",
"language": "pt-BR",
"libraryCatalog": "Câmara Brasileira do Livro ISBN",
"numPages": "360",
"place": "SÃO PAULO, SP",
"publisher": "Chão Editora",
"shortTitle": "Filipson",
"attachments": [],
"tags": [
{
"tag": "Biografias"
},
{
"tag": "judeus"
},
{
"tag": "memórias"
},
{
"tag": "mulheres"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "search",
"input": {
"ISBN": "9786555250053"
},
"items": [
{
"itemType": "book",
"title": "Ilíada = Ἰλιάς",
"creators": [
{
"firstName": "",
"lastName": "Homero",
"creatorType": "author",
"fieldMode": 1
},
{
"firstName": "Trajano",
"lastName": "Vieira",
"creatorType": "translator"
}
],
"date": "2020-03-23",
"ISBN": "9786555250053",
"abstractNote": "Composta no século VIII a.C., a Ilíada é considerada o marco inaugural da literatura ocidental. Tradicionalmente atribuída a Homero, a obra aborda o período de algumas semanas no último ano da Guerra de Troia, durante o cerco final dos contingentes gregos à cidadela do rei Príamo, na Ásia Menor. Com seus mais de 15 mil versos, a Ilíada ganha agora uma nova tradução — das mãos de Trajano Vieira, professor livre-docente da Unicamp e premiado tradutor da Odisseia —, rigorosamente metrificada, que busca recriar em nossa língua a excelência do original, com seus símiles e invenções vocabulares. A presente edição, bilíngue, traz ainda uma série de aparatos, como um índice onomástico completo, um posfácio do tradutor, excertos da crítica, e o célebre ensaio de Simone Weil, “A Ilíada ou o poema da força”.",
"language": "pt-BR",
"libraryCatalog": "Câmara Brasileira do Livro ISBN",
"numPages": "1048",
"place": "São Paulo, SP",
"publisher": "Editora 34",
"attachments": [],
"tags": [
{
"tag": "Literatura grega"
},
{
"tag": "Literatura."
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "search",
"input": {
"ISBN": "9786556752631"
},
"items": [
{
"itemType": "book",
"title": "Manual de Sentença Trabalhista: Compreendendo a técnica da setença trabalhista para concurso",
"creators": [
{
"firstName": "Aline",
"lastName": "Leporaci",
"creatorType": "author"
},
{
"firstName": "Adriana Leandro de Sousa",
"lastName": "Freitas",
"creatorType": "contributor"
}
],
"date": "2023-03-02",
"ISBN": "9786556752631",
"abstractNote": "Nesse livro sobre sentença trabalhista, fase tão concorrida do concurso para a Magistratura do Trabalho, procuramos trazer os aspectos mais importantes a serem observados pelo candidato. O leitor poderá verificar a ordem de julgamento a seguir e a importância da fixação da prejudicialidade entre as matérias a serem analisadas. Além disso, também aprenderá as técnicas de distribuição do ônus da prova, e suas diversas teorias, sempre ressaltando qual deva ser de aplicação preferencial pelo candidato. O livro traz diversos aspectos teóricos, que são essenciais para a preparação de todos os interessados em efetivamente aprender a técnica da elaboração da sentença trabalhista, sempre com leitura fácil e direta. E não nos esquecemos dos aspectos práticos, pois o leitor terá exercícios de fixação de jornada de trabalho, e sentenças inéditas elaboradas pelas Autoras, com os respectivos gabaritos e sugestão de redação.",
"edition": "2",
"language": "pt-BR",
"libraryCatalog": "Câmara Brasileira do Livro ISBN",
"numPages": "232",
"place": "Rio de Janeiro, RJ",
"publisher": "Freitas Bastos Editora",
"shortTitle": "Manual de Sentença Trabalhista",
"attachments": [],
"tags": [
{
"tag": "Direito"
},
{
"tag": "Elaboração"
},
{
"tag": "Jornada"
},
{
"tag": "Magistratura"
},
{
"tag": "Trabalhista"
},
{
"tag": "Trabalho"
},
{
"tag": "Técnica"
},
{
"tag": "concurso"
},
{
"tag": "juiz"
},
{
"tag": "modelos"
},
{
"tag": "sentença"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "search",
"input": {
"ISBN": "9786559602513"
},
"items": [
{
"itemType": "book",
"title": "Batman",
"creators": [
{
"firstName": "John",
"lastName": "Ridley",
"creatorType": "author"
},
{
"firstName": "James Tynion",
"lastName": "IV",
"creatorType": "contributor"
},
{
"firstName": "Dandara",
"lastName": "Palankof",
"creatorType": "contributor"
},
{
"firstName": "Pedro",
"lastName": "Catarino",
"creatorType": "contributor"
},
{
"firstName": "Travel",
"lastName": "Foreman",
"creatorType": "contributor"
},
{
"firstName": "Riccardo",
"lastName": "Federici",
"creatorType": "contributor"
},
{
"firstName": "Jorge",
"lastName": "Jimenez",
"creatorType": "contributor"
}
],
"date": "2022-03-11",
"ISBN": "9786559602513",
"abstractNote": "Aventuras do Batman",
"language": "pt-BR",
"libraryCatalog": "Câmara Brasileira do Livro ISBN",
"numPages": "100",
"place": "Barueri, SP",
"publisher": "Panini Comics",
"attachments": [],
"tags": [
{
"tag": "Cartoons; caricaturas e quadrinhos"
},
{
"tag": "quadrinhos"
},
{
"tag": "super-herois"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "search",
"input": {
"ISBN": "9786559605101"
},
"items": [
{
"itemType": "book",
"title": "Superman",
"creators": [
{
"firstName": "Sean",
"lastName": "Lewis",
"creatorType": "author"
},
{
"firstName": "Phillip Kennedy",
"lastName": "Johnson",
"creatorType": "contributor"
},
{
"firstName": "Gabriel",
"lastName": "Faria",
"creatorType": "contributor"
},
{
"firstName": "Rodrigo",
"lastName": "Barros",
"creatorType": "contributor"
},
{
"firstName": "Sami",
"lastName": "Basri",
"creatorType": "contributor"
},
{
"firstName": "Phil",
"lastName": "Hester",
"creatorType": "contributor"
},
{
"firstName": "Daniel",
"lastName": "Sampere",
"creatorType": "contributor"
}
],
"date": "2022-03-10",
"ISBN": "9786559605101",
"abstractNote": "Aventuras do Superman",
"language": "pt-BR",
"libraryCatalog": "Câmara Brasileira do Livro ISBN",
"numPages": "100",
"place": "Barueri, SP",
"publisher": "Panini Comics",
"attachments": [],
"tags": [
{
"tag": "Cartoons; caricaturas e quadrinhos"
},
{
"tag": "quadrinhos"
},
{
"tag": "super-herois"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "search",
"input": {
"ISBN": "8576664984"
},
"items": [
{
"itemType": "book",
"title": "A Religião Nos Limites Da Simples Razão",
"creators": [],
"date": "2006-01-02",
"ISBN": "9788576664987",
"language": "pt-BR",
"libraryCatalog": "Câmara Brasileira do Livro ISBN",
"publisher": "Escala Educacional",
"series": "Série Filosofar",
"attachments": [],
"tags": [
{
"tag": "Literatura"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "search",
"input": {
"ISBN": "9788591597512"
},
"items": [
{
"itemType": "book",
"title": "Visões da áfrica: angola e moçambiqueJorge Alves de Lima Filho",
"creators": [
{
"firstName": "Jorge Alves de",
"lastName": "Lima Filho",
"creatorType": "author"
}
],
"date": "2015-09-29",
"ISBN": "9788591597512",
"language": "pt-BR",
"libraryCatalog": "Câmara Brasileira do Livro ISBN",
"publisher": "Jorge Alves de Lima Filho",
"shortTitle": "Visões da áfrica",
"attachments": [],
"tags": [
{
"tag": "Coleções de obras diversas sem assunto específico"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Simon Kornblith, Michael Berkowitz, Bastian Koenings, and Avram Lyon^https?://([^/]+\.)?ieeexplore\.ieee\.org/([^#]+[&?]arnumber=\d+|(abstract/)?document/|search/(searchresult|selected)\.jsp|xpl/(mostRecentIssue|tocresult)\.jsp\?|xpl/conhome/\d+/proceeding)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2023 Simon Kornblith, Michael Berkowitz, Bastian Koenings, and Avram Lyon
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
Zotero.monitorDOMChanges(doc.querySelector('.global-content-wrapper'));
if (doc.defaultView !== null && doc.defaultView !== doc.defaultView.top) return false;
if (/[?&]arnumber=(\d+)/i.test(url) || /\/document\/\d+/i.test(url)) {
var firstBreadcrumb = ZU.xpathText(doc, '(//div[contains(@class, "breadcrumbs")]//a)[1]');
if (firstBreadcrumb == "Conferences") {
return "conferencePaper";
}
return "journalArticle";
}
// Issue page
if ((url.includes("xpl/tocresult.jsp") || url.includes("xpl/mostRecentIssue.jsp")) && getSearchResults(doc, true)) {
return getSearchResults(doc, true) ? "multiple" : false;
}
// Search results
if (url.includes("/search/searchresult.jsp") && getSearchResults(doc, true)) {
return "multiple";
}
// conference list results
if (url.includes("xpl/conhome") && url.includes("proceeding") && getSearchResults(doc, true)) {
return "multiple";
}
// more generic method for other cases (is this still needed?)
/*
var scope = ZU.xpath(doc, '//div[contains(@class, "ng-scope")]')[0];
if (!scope) {
Zotero.debug("No scope");
return;
}
Z.monitorDOMChanges(scope, {childList: true});
if (getSearchResults(doc, true)) {
return "multiple";
}
*/
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = ZU.xpath(doc, '//*[contains(@class, "article-list") or contains(@class, "List-results-items")]//a[parent::h2|parent::h3]|//*[@id="results-blk"]//*[@class="art-abs-url"]');
for (var i = 0; i < rows.length; i++) {
var href = rows[i].href;
var title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[fixUrl(href)] = title;
}
return found ? items : false;
}
// Some pages don't show the metadata we need (http://forums.zotero.org/discussion/16283)
// No data: http://ieeexplore.ieee.org/search/srchabstract.jsp?tp=&arnumber=1397982
// No data: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=1397982
// Data: http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1397982
// Also address issue of saving from PDF itself, I hope
// URL like http://ieeexplore.ieee.org/ielx4/78/2655/00080767.pdf?tp=&arnumber=80767&isnumber=2655
// Or: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=1575188&tag=1
function fixUrl(url) {
var arnumber = url.match(/arnumber=(\d+)/);
if (arnumber) {
return url.replace(/\/(?:search|stamp|ielx[45])\/.*$/, "/xpls/abs_all.jsp?arnumber=" + arnumber[1]);
}
else {
return url;
}
}
async function doWeb(doc, url) {
if (detectWeb(doc, url) == 'multiple') {
let items = await Zotero.selectItems(getSearchResults(doc, false));
if (!items) return;
for (let url of Object.keys(items)) {
await scrape(await requestDocument(url));
}
}
else if (url.includes("/search/") || url.includes("/stamp/") || url.includes("/ielx4/") || url.includes("/ielx5/")) {
await scrape(await requestDocument([fixUrl(url)]));
}
else {
await scrape(doc, url);
}
}
async function scrape(doc, url = doc.location.href) {
var arnumber = (url.match(/arnumber=(\d+)/) || url.match(/\/document\/(\d+)/))[1];
var pdf = "/stamp/stamp.jsp?tp=&arnumber=" + arnumber;
// Z.debug("arNumber = " + arnumber);
var script = ZU.xpathText(doc, '//script[@type="text/javascript" and contains(., "global.document.metadata")]');
if (script) {
var dataRaw = script.split("global.document.metadata")[1]
.replace(/^=/, '').replace(/};[\s\S]*$/m, '}');
try {
var data = JSON.parse(dataRaw);
}
catch (e) {
Z.debug("Error parsing JSON data:");
Z.debug(e);
}
}
let bibtexURL = "/rest/search/citation/format?recordIds=" + arnumber + "&fromPage=&citations-format=citation-abstract&download-format=download-bibtex";
Z.debug(bibtexURL);
// metadata is downloaded in a JSON data field
let bibtex = await requestJSON(bibtexURL, { headers: { Referer: url} });
bibtex = bibtex.data;
bibtex = ZU.unescapeHTML(bibtex.replace(/(&[^\s;]+) and/g, '$1;'));
// remove empty tag - we can take this out once empty tags are ignored
bibtex = bibtex.replace(/(keywords=\{.+);\}/, "$1}");
var earlyaccess = false;
if (/^@null/.test(bibtex)) {
earlyaccess = true;
bibtex = text.replace(/^@null/, "@article");
}
var translator = Zotero.loadTranslator("import");
// Calling the BibTeX translator
translator.setTranslator("9cb70025-a888-4a29-a210-93ec52da40d4");
translator.setString(bibtex);
translator.setHandler("itemDone", function (obj, item) {
item.notes = [];
var res;
// Rearrange titles, per http://forums.zotero.org/discussion/8056
// If something has a comma or a period, and the text after comma ends with
// "of", "IEEE", or the like, then we switch the parts. Prefer periods.
if (item.publicationTitle.includes(".")) {
res = item.publicationTitle.trim().match(/^(.*)\.(.*(?:of|on|IEE|IEEE|IET|IRE))$/);
}
else {
res = item.publicationTitle.trim().match(/^(.*),(.*(?:of|on|IEE|IEEE|IET|IRE))$/);
}
if (res) {
item.publicationTitle = res[2] + " " + res[1];
}
item.proceedingsTitle = item.conferenceName = item.publicationTitle;
if (earlyaccess) {
item.volume = "Early Access Online";
item.issue = "";
item.pages = "";
}
if (data && data.authors && data.authors.length == item.creators.length) {
item.creators = [];
for (let author of data.authors) {
item.creators.push({
firstName: author.firstName,
lastName: author.lastName,
creatorType: "author"
});
}
}
if (!item.ISSN && data && data.issn) {
item.ISSN = data.issn.map(el => el.value).join(", ");
}
if (item.ISSN && !ZU.fieldIsValidForType('ISSN', item.itemType)) {
item.extra = "ISSN: " + item.ISSN;
}
item.url = url;
item.attachments.push({
document: doc,
title: "IEEE Xplore Abstract Record"
});
if (pdf) {
ZU.doGet(pdf, function (src) {
// Either the PDF is embedded in the page, or (e.g. for iOS)
// the page has a redirect to the full-page PDF
//
// As of 3/2020, embedded PDFs via a web-based proxy are
// being served as getPDF.jsp, so support that in addition
// to direct .pdf URLs.
var m = /<i?frame src="([^"]+\.pdf\b[^"]*|[^"]+\/getPDF\.jsp\b[^"]*)"|<meta HTTP-EQUIV="REFRESH" content="0; url=([^\s"]+\.pdf\b[^\s"]*)"/.exec(src);
var pdfUrl = m && (m[1] || m[2]);
if (pdfUrl) {
item.attachments.unshift({
url: pdfUrl,
title: "IEEE Xplore Full Text PDF",
mimeType: "application/pdf"
});
}
item.complete();
}, null);
}
else {
item.complete();
}
});
translator.getTranslatorObject(function (trans) {
trans.setKeywordSplitOnSpace(false);
trans.setKeywordDelimRe('\\s*;\\s*', '');
trans.doImport();
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://ieeexplore.ieee.org/document/4607247/?tp=&arnumber=4607247&refinements%3D4294967131%26openedRefinements%3D*%26filter%3DAND%28NOT%284283010803%29%29%26searchField%3DSearch+All%26queryText%3Dturing",
"items": [
{
"itemType": "journalArticle",
"title": "Fuzzy Turing Machines: Variants and Universality",
"creators": [
{
"firstName": "Yongming",
"lastName": "Li",
"creatorType": "author"
}
],
"date": "December 2008",
"DOI": "10.1109/TFUZZ.2008.2004990",
"ISSN": "1063-6706, 1941-0034",
"abstractNote": "In this paper, we study some variants of fuzzy Turing machines (FTMs) and universal FTM. First, we give several formulations of FTMs, including, in particular, deterministic FTMs (DFTMs) and nondeterministic FTMs (NFTMs). We then show that DFTMs and NFTMs are not equivalent as far as the power of recognizing fuzzy languages is concerned. This contrasts sharply with classical TMs. Second, we show that there is no universal FTM that can exactly simulate any FTM on it. But if the membership degrees of fuzzy sets are restricted to a fixed finite subset A of [0,1], such a universal machine exists. We also show that a universal FTM exists in some approximate sense. This means, for any prescribed accuracy, that we can construct a universal machine that simulates any FTM with the given accuracy. Finally, we introduce the notions of fuzzy polynomial time-bounded computation and nondeterministic fuzzy polynomial time-bounded computation, and investigate their connections with polynomial time-bounded computation and nondeterministic polynomial time-bounded computation.",
"issue": "6",
"itemID": "4607247",
"libraryCatalog": "IEEE Xplore",
"pages": "1491-1502",
"publicationTitle": "IEEE Transactions on Fuzzy Systems",
"shortTitle": "Fuzzy Turing Machines",
"volume": "16",
"attachments": [
{
"title": "IEEE Xplore Abstract Record"
}
],
"tags": [
{
"tag": "Computational complexity"
},
{
"tag": "Computational modeling"
},
{
"tag": "Computer science"
},
{
"tag": "Deterministic fuzzy Turing machine (DFTM)"
},
{
"tag": "Fuzzy sets"
},
{
"tag": "Hardware"
},
{
"tag": "Intelligent control"
},
{
"tag": "Microcomputers"
},
{
"tag": "Polynomials"
},
{
"tag": "Turing machines"
},
{
"tag": "Turing machines"
},
{
"tag": "computational complexity"
},
{
"tag": "deterministic automata"
},
{
"tag": "deterministic fuzzy Turing machines"
},
{
"tag": "fixed finite subset"
},
{
"tag": "fuzzy computational complexity"
},
{
"tag": "fuzzy grammar"
},
{
"tag": "fuzzy languages"
},
{
"tag": "fuzzy polynomial time-bounded computation"
},
{
"tag": "fuzzy recursive language"
},
{
"tag": "fuzzy recursively enumerable (f.r.e.) language"
},
{
"tag": "fuzzy set theory"
},
{
"tag": "fuzzy sets"
},
{
"tag": "nondeterministic fuzzy Turing machine (NFTM)"
},
{
"tag": "nondeterministic fuzzy Turing machines"
},
{
"tag": "nondeterministic polynomial time-bounded computation"
},
{
"tag": "universal fuzzy Turing machine (FTM)"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://ieeexplore.ieee.org/document/6221978/?arnumber=6221978",
"items": [
{
"itemType": "journalArticle",
"title": "Graph Matching for Adaptation in Remote Sensing",
"creators": [
{
"firstName": "Devis",
"lastName": "Tuia",
"creatorType": "author"
},
{
"firstName": "Jordi",
"lastName": "Munoz-Mari",
"creatorType": "author"
},
{
"firstName": "Luis",
"lastName": "Gomez-Chova",
"creatorType": "author"
},
{
"firstName": "Jesus",
"lastName": "Malo",
"creatorType": "author"
}
],
"date": "January 2013",
"DOI": "10.1109/TGRS.2012.2200045",
"ISSN": "0196-2892, 1558-0644",
"abstractNote": "We present an adaptation algorithm focused on the description of the data changes under different acquisition conditions. When considering a source and a destination domain, the adaptation is carried out by transforming one data set to the other using an appropriate nonlinear deformation. The eventually nonlinear transform is based on vector quantization and graph matching. The transfer learning mapping is defined in an unsupervised manner. Once this mapping has been defined, the samples in one domain are projected onto the other, thus allowing the application of any classifier or regressor in the transformed domain. Experiments on challenging remote sensing scenarios, such as multitemporal very high resolution image classification and angular effects compensation, show the validity of the proposed method to match-related domains and enhance the application of cross-domains image processing techniques.",
"issue": "1",
"itemID": "6221978",
"libraryCatalog": "IEEE Xplore",
"pages": "329-341",
"publicationTitle": "IEEE Transactions on Geoscience and Remote Sensing",
"volume": "51",
"attachments": [
{
"title": "IEEE Xplore Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "IEEE Xplore Abstract Record"
}
],
"tags": [
{
"tag": "Adaptation models"
},
{
"tag": "Domain adaptation"
},
{
"tag": "Entropy"
},
{
"tag": "Manifolds"
},
{
"tag": "Remote sensing"
},
{
"tag": "Support vector machines"
},
{
"tag": "Transforms"
},
{
"tag": "Vector quantization"
},
{
"tag": "adaptation algorithm"
},
{
"tag": "angular effects"
},
{
"tag": "cross-domain image processing techniques"
},
{
"tag": "data acquisition conditions"
},
{
"tag": "destination domain"
},
{
"tag": "geophysical image processing"
},
{
"tag": "geophysical techniques"
},
{
"tag": "graph matching method"
},
{
"tag": "image classification"
},
{
"tag": "image matching"
},
{
"tag": "image resolution"
},
{
"tag": "model portability"
},
{
"tag": "multitemporal classification"
},
{
"tag": "multitemporal very high resolution image classification"
},
{
"tag": "nonlinear deformation"
},
{
"tag": "nonlinear transform"
},
{
"tag": "remote sensing"
},
{
"tag": "remote sensing"
},
{
"tag": "source domain"
},
{
"tag": "support vector machine (SVM)"
},
{
"tag": "transfer learning"
},
{
"tag": "transfer learning mapping"
},
{
"tag": "vector quantization"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://ieeexplore.ieee.org/search/searchresult.jsp?queryText%3Dlabor&refinements=4291944246&pageNumber=1&resultAction=REFINE",
"defer": true,
"items": "multiple"
},
{
"type": "web",
"url": "https://ieeexplore.ieee.org/xpl/conhome/7048058/proceeding",
"defer": true,
"items": "multiple"
},
{
"type": "web",
"url": "http://ieeexplore.ieee.org/xpl/mostRecentIssue.jsp?punumber=6221021",
"defer": true,
"items": "multiple"
},
{
"type": "web",
"url": "http://ieeexplore.ieee.org/search/searchresult.jsp?queryText=Wind%20Farms&newsearch=true",
"defer": true,
"items": "multiple"
},
{
"type": "web",
"url": "https://ieeexplore.ieee.org/document/1397982/?tp=&arnumber=1397982",
"items": [
{
"itemType": "journalArticle",
"title": "Analysis and circuit modeling of waveguide-separated absorption charge multiplication-avalanche photodetector (WG-SACM-APD)",
"creators": [
{
"firstName": "Y.M.",
"lastName": "El-Batawy",
"creatorType": "author"
},
{
"firstName": "M.J.",
"lastName": "Deen",
"creatorType": "author"
}
],
"date": "March 2005",
"DOI": "10.1109/TED.2005.843884",
"ISSN": "0018-9383, 1557-9646",
"abstractNote": "Waveguide photodetectors are considered leading candidates to overcome the bandwidth efficiency tradeoff of conventional photodetectors. In this paper, a theoretical physics-based model of the waveguide separated absorption charge multiplication avalanche photodetector (WG-SACM-APD) is presented. Both time and frequency modeling for this photodetector are developed and simulated results for different thicknesses of the absorption and multiplication layers and for different areas of the photodetector are presented. These simulations provide guidelines for the design of these high-performance photodiodes. In addition, a circuit model of the photodetector is presented in which the photodetector is a lumped circuit element so that circuit simulation of the entire photoreceiver is now feasible. The parasitics of the photodetector are included in the circuit model and it is shown how these parasitics degrade the photodetectors performance and how they can be partially compensated by an external inductor in series with the load resistor. The results obtained from the circuit model of the WG-SACM-APD are compared with published experimental results and good agreement is obtained. This circuit modeling can easily be applied to any WG-APD structure. The gain-bandwidth characteristic of WG-SACM-APD is studied for different areas and thicknesses of both the absorption and the multiplication layers. The dependence of the performance of the photodetector on the dimensions, the material parameters and the multiplication gain are also investigated.",
"issue": "3",
"itemID": "1397982",
"libraryCatalog": "IEEE Xplore",
"pages": "335-344",
"publicationTitle": "IEEE Transactions on Electron Devices",
"volume": "52",
"attachments": [
{
"title": "IEEE Xplore Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "IEEE Xplore Abstract Record"
}
],
"tags": [
{
"tag": "Avalanche photodetectors"
},
{
"tag": "Avalanche photodiodes"
},
{
"tag": "Linear circuits"
},
{
"tag": "Optical receivers"
},
{
"tag": "Photodetectors"
},
{
"tag": "SACM photodetectors"
},
{
"tag": "SACM photodetectors"
},
{
"tag": "Semiconductor device modeling"
},
{
"tag": "WG-SACM-APD circuit modeling"
},
{
"tag": "absorption layers"
},
{
"tag": "avalanche photodiodes"
},
{
"tag": "circuit model of photodetectors"
},
{
"tag": "circuit modeling"
},
{
"tag": "circuit simulation"
},
{
"tag": "circuit simulation"
},
{
"tag": "external inductor"
},
{
"tag": "frequency modeling"
},
{
"tag": "high-performance photodiodes"
},
{
"tag": "high-speed photodetectors"
},
{
"tag": "high-speed photodetectors"
},
{
"tag": "load resistor"
},
{
"tag": "lumped circuit element"
},
{
"tag": "lumped parameter networks"
},
{
"tag": "multiplication layers"
},
{
"tag": "optical receivers"
},
{
"tag": "parasitics effects"
},
{
"tag": "photodetector analysis"
},
{
"tag": "photodetectors"
},
{
"tag": "photodetectors"
},
{
"tag": "photoreceiver"
},
{
"tag": "physics-based modeling"
},
{
"tag": "semiconductor device models"
},
{
"tag": "theoretical physics-based model"
},
{
"tag": "time modeling"
},
{
"tag": "waveguide photodetectors"
},
{
"tag": "waveguide photodetectors"
},
{
"tag": "waveguide separated absorption charge multiplication avalanche photodetector"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://ieeexplore.ieee.org/document/6919256/?arnumber=6919256&punumber%3D6287639",
"items": [
{
"itemType": "journalArticle",
"title": "Information Security in Big Data: Privacy and Data Mining",
"creators": [
{
"firstName": "Lei",
"lastName": "Xu",
"creatorType": "author"
},
{
"firstName": "Chunxiao",
"lastName": "Jiang",
"creatorType": "author"
},
{
"firstName": "Jian",
"lastName": "Wang",
"creatorType": "author"
},
{
"firstName": "Jian",
"lastName": "Yuan",
"creatorType": "author"
},
{
"firstName": "Yong",
"lastName": "Ren",
"creatorType": "author"
}
],
"date": "2014",
"DOI": "10.1109/ACCESS.2014.2362522",
"ISSN": "2169-3536",
"abstractNote": "The growing popularity and development of data mining technologies bring serious threat to the security of individual,'s sensitive information. An emerging research topic in data mining, known as privacy-preserving data mining (PPDM), has been extensively studied in recent years. The basic idea of PPDM is to modify the data in such a way so as to perform data mining algorithms effectively without compromising the security of sensitive information contained in the data. Current studies of PPDM mainly focus on how to reduce the privacy risk brought by data mining operations, while in fact, unwanted disclosure of sensitive information may also happen in the process of data collecting, data publishing, and information (i.e., the data mining results) delivering. In this paper, we view the privacy issues related to data mining from a wider perspective and investigate various approaches that can help to protect sensitive information. In particular, we identify four different types of users involved in data mining applications, namely, data provider, data collector, data miner, and decision maker. For each type of user, we discuss his privacy concerns and the methods that can be adopted to protect sensitive information. We briefly introduce the basics of related research topics, review state-of-the-art approaches, and present some preliminary thoughts on future research directions. Besides exploring the privacy-preserving approaches for each type of user, we also review the game theoretical approaches, which are proposed for analyzing the interactions among different users in a data mining scenario, each of whom has his own valuation on the sensitive information. By differentiating the responsibilities of different users with respect to security of sensitive information, we would like to provide some useful insights into the study of PPDM.",
"itemID": "6919256",
"libraryCatalog": "IEEE Xplore",
"pages": "1149-1176",
"publicationTitle": "IEEE Access",
"shortTitle": "Information Security in Big Data",
"volume": "2",
"attachments": [
{
"title": "IEEE Xplore Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "IEEE Xplore Abstract Record"
}
],
"tags": [
{
"tag": "Algorithm design and analysis"
},
{
"tag": "Big Data"
},
{
"tag": "Big Data"
},
{
"tag": "Computer security"
},
{
"tag": "Data mining"
},
{
"tag": "Data mining"
},
{
"tag": "Data privacy"
},
{
"tag": "Game theory"
},
{
"tag": "PPDM"
},
{
"tag": "Privacy"
},
{
"tag": "Tracking"
},
{
"tag": "anonymization"
},
{
"tag": "anonymization"
},
{
"tag": "anti-tracking"
},
{
"tag": "anti-tracking"
},
{
"tag": "data acquisition"
},
{
"tag": "data collector"
},
{
"tag": "data miner"
},
{
"tag": "data mining"
},
{
"tag": "data mining"
},
{
"tag": "data protection"
},
{
"tag": "data provider"
},
{
"tag": "data publishing"
},
{
"tag": "decision maker"
},
{
"tag": "game theory"
},
{
"tag": "game theory"
},
{
"tag": "game theory"
},
{
"tag": "game theory"
},
{
"tag": "information protection"
},
{
"tag": "information security"
},
{
"tag": "privacy auction"
},
{
"tag": "privacy auction"
},
{
"tag": "privacy preserving data mining"
},
{
"tag": "privacy-preserving data mining"
},
{
"tag": "privacypreserving data mining"
},
{
"tag": "provenance"
},
{
"tag": "provenance"
},
{
"tag": "security of data"
},
{
"tag": "sensitive information"
},
{
"tag": "sensitive information"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://ieeexplore.ieee.org/document/80767/",
"items": [
{
"itemType": "journalArticle",
"title": "An eigenanalysis interference canceler",
"creators": [
{
"firstName": "A.M.",
"lastName": "Haimovich",
"creatorType": "author"
},
{
"firstName": "Y.",
"lastName": "Bar-Ness",
"creatorType": "author"
}
],
"date": "January 1991",
"DOI": "10.1109/78.80767",
"ISSN": "1053-587X, 1941-0476",
"abstractNote": "Eigenanalysis methods are applied to interference cancellation problems. While with common array processing methods the cancellation is effected by global optimization procedures that include the interferences and the background noise, the proposed technique focuses on the interferences only, resulting in superior cancellation performance. Furthermore, the method achieves full effectiveness even for short observation times, when the number of samples used for processing is of the the order of the number of interferences. Adaptive implementation is obtained with a simple, fast converging algorithm.<>",
"issue": "1",
"itemID": "80767",
"libraryCatalog": "IEEE Xplore",
"pages": "76-84",
"publicationTitle": "IEEE Transactions on Signal Processing",
"volume": "39",
"attachments": [
{
"title": "IEEE Xplore Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "IEEE Xplore Abstract Record"
}
],
"tags": [
{
"tag": "Array signal processing"
},
{
"tag": "Background noise"
},
{
"tag": "Direction of arrival estimation"
},
{
"tag": "Interference cancellation"
},
{
"tag": "Jamming"
},
{
"tag": "Noise cancellation"
},
{
"tag": "Optimization methods"
},
{
"tag": "Sensor arrays"
},
{
"tag": "Signal to noise ratio"
},
{
"tag": "Steady-state"
},
{
"tag": "adaptive filters"
},
{
"tag": "adaptive implementation"
},
{
"tag": "array processing"
},
{
"tag": "eigenanalysis methods"
},
{
"tag": "eigenvalues and eigenfunctions"
},
{
"tag": "fast converging algorithm"
},
{
"tag": "filtering and prediction theory"
},
{
"tag": "interference cancellation"
},
{
"tag": "interference suppression"
},
{
"tag": "signal processing"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://ieeexplore.ieee.org/abstract/document/7696113/?reload=true",
"items": [
{
"itemType": "conferencePaper",
"title": "3D flexible antenna realization process using liquid metal and additive technology",
"creators": [
{
"firstName": "Mathieu",
"lastName": "Cosker",
"creatorType": "author"
},
{
"firstName": "Fabien",
"lastName": "Ferrero",
"creatorType": "author"
},
{
"firstName": "Leonardo",
"lastName": "Lizzi",
"creatorType": "author"
},
{
"firstName": "Robert",
"lastName": "Staraj",
"creatorType": "author"
},
{
"firstName": "Jean-Marc",
"lastName": "Ribero",
"creatorType": "author"
}
],
"date": "June 2016",
"DOI": "10.1109/APS.2016.7696113",
"abstractNote": "This paper presents a method to design 3D flexible antennas using liquid metal and additive technology (3D printer based on Fused Deposition Modeling (FDM) technology). The fabricated antennas present flexible properties. The design method is first presented and validated using the example of a simple inverted F antenna (IFA) in Ultra High Frequency (UHF) band. The design, the fabrication and the obtained measured results are discussed.",
"conferenceName": "2016 IEEE International Symposium on Antennas and Propagation (APSURSI)",
"extra": "ISSN: 1947-1491",
"itemID": "7696113",
"libraryCatalog": "IEEE Xplore",
"pages": "809-810",
"proceedingsTitle": "2016 IEEE International Symposium on Antennas and Propagation (APSURSI)",
"attachments": [
{
"title": "IEEE Xplore Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "IEEE Xplore Abstract Record"
}
],
"tags": [
{
"tag": "3D flexible antenna design"
},
{
"tag": "3D flexible antenna realization process"
},
{
"tag": "3D printer"
},
{
"tag": "3D printer"
},
{
"tag": "Antenna measurements"
},
{
"tag": "Antenna radiation patterns"
},
{
"tag": "FDM technology"
},
{
"tag": "IFA"
},
{
"tag": "IFA antenna"
},
{
"tag": "Liquids"
},
{
"tag": "Metals"
},
{
"tag": "Printers"
},
{
"tag": "Three-dimensional displays"
},
{
"tag": "UHF antennas"
},
{
"tag": "UHF band"
},
{
"tag": "additive technology"
},
{
"tag": "additives"
},
{
"tag": "antenna fabrication"
},
{
"tag": "fused deposition modeling technology"
},
{
"tag": "inverted F antenna"
},
{
"tag": "liquid metal"
},
{
"tag": "liquid metal and additive technology"
},
{
"tag": "liquid metals"
},
{
"tag": "planar inverted-F antennas"
},
{
"tag": "rapid prototyping (industrial)"
},
{
"tag": "ultra high frequency band"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://ieeexplore.ieee.org/xpl/tocresult.jsp?isnumber=10045573&punumber=6221021",
"defer": true,
"items": "multiple"
}
]
/** END TEST CASES **/
100Simon Kornblith, Frank Bennett, Aurimas Vinckevicius^https?://scholar[-.]google[-.](com|cat|(com?[-.])?[a-z]{2})(\.[^/]+)?/(scholar(_case)?\?|citations\?)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2022 Simon Kornblith, Frank Bennett, Aurimas Vinckevicius, and
Zoë C. Ma.
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
const DELAY_INTERVAL = 2000; // in milliseconds
var GS_CONFIG = { baseURL: undefined, lang: undefined };
const MIME_TYPES = {
PDF: 'application/pdf',
DOC: 'application/msword',
HTML: 'text/html',
};
// The only "typedef" that needs to be kept in mind: a data object representing
// a row in the seach/profile listing.
/**
* Information object for one Google Scholar entry or "row"
*
* @typedef {Object} RowObj
* @property {?string} id - Google Scholar ID string
* @property {string} [directLink] - href of the title link
* @property {string} [attachmentLink] - href of the attachment link found by GS
* @property {string} [attachmentType] - type (file extension) of the attachment
* @property {string} [byline] - the line of text below the title (in green)
*/
/* Detection for law cases, but not "How cited" pages,
* e.g. url of "how cited" page:
* http://scholar.google.co.jp/scholar_case?about=1101424605047973909&q=kelo&hl=en&as_sdt=2002
*/
function detectWeb(doc, url) {
if (url.includes('/scholar_case?')
&& url.includes('case=')
) {
return "case";
}
else if (url.includes('/citations?')) {
if (getProfileResults(doc, true)) {
return "multiple";
}
// individual saved citation
var link = ZU.xpathText(doc, '//a[@class="gsc_oci_title_link"]/@href');
if (!link) return false;
if (link.includes('/scholar_case?')) {
return 'case';
}
else {
// Can't distinguish book from journalArticle
// Both have "Journal" fields
return 'journalArticle';
}
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.gs_r[data-cid]');
for (var i = 0; i < rows.length; i++) {
var id = rows[i].dataset.cid;
var title = text(rows[i], '.gs_rt');
if (!id || !title) continue;
if (checkOnly) return true;
found = true;
items[id] = title;
}
return found ? items : false;
}
function getProfileResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('a.gsc_a_at');
for (var i = 0; i < rows.length; i++) {
var href = rows[i].href;
var title = rows[i].textContent;
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
async function doWeb(doc, url) {
// Determine the domain and language variant of the page.
let urlObj = new URL(url);
GS_CONFIG.baseURL = urlObj.origin;
GS_CONFIG.lang = urlObj.searchParams.get("hl") || "en";
let type = detectWeb(doc, url);
if (type == "multiple") {
let referrerURL;
let getRow;
let keys;
if (getSearchResults(doc, true/* checkOnly */)) {
let items = await Z.selectItems(getSearchResults(doc, false));
if (!items) {
return;
}
referrerURL = new URL(doc.location);
getRow = rowFromSearchResult;
keys = Object.keys(items);
}
else if (getProfileResults(doc, true/* checkOnly */)) {
let urls = await Z.selectItems(getProfileResults(doc, false));
if (!urls) {
return;
}
const profileName = text(doc, "#gsc_prf_in");
referrerURL = getEmulatedSearchURL(profileName);
getRow = rowFromProfile;
keys = Object.keys(urls);
}
await scrapeMany(keys, doc, getRow, referrerURL);
}
else {
// e.g. https://scholar.google.de/citations?view_op=view_citation&hl=de&user=INQwsQkAAAAJ&citation_for_view=INQwsQkAAAAJ:u5HHmVD_uO8C
await scrape(doc, url, type);
}
}
// Scrape an array of string IDs or URLs (keys) that are obtained from
// the GS search/profile document (baseDocument). rowRequestor is a function
// that returns the row or a promise resolving to a row when called as
// rowRequestor(key, baseDocument).
// This function will reject if some rows failed to translate.
async function scrapeMany(keys, baseDocument, rowRequestor, referrerURL) {
let failedRows = [];
let promises = [];
for (let i = 0; i < keys.length; i++) {
let key = keys[i];
let row = await rowRequestor(key, baseDocument);
if (row) {
// NOTE: here we start a promise that scrapes the row in the stages
// of DOI -> arXiv -> Google Scholar, but don't wait for it in the
// loop over rows
promises.push(scrapeInStages(row, referrerURL, failedRows));
}
if (i < keys.length - 1) {
// But we do wait between iterations over the rows
await delay(DELAY_INTERVAL);
}
}
await Promise.all(promises);
if (failedRows.length) {
throw new Error(`${failedRows.length} row(s) failed to translate`);
}
}
// Scrape one GS entry
async function scrape(doc, url, type) {
if (type && type == "case") {
scrapeCase(doc, url);
}
else {
// Stand-alone "View article" page
const profileName = text(doc, "#gsc_sb_ui > div > a");
let referrerURL = getEmulatedSearchURL(profileName);
// Single-item row computed from "View article" page content.
let row = parseViewArticle(doc);
if (row) {
let failedRow = [];
await scrapeInStages(row, referrerURL, failedRow);
if (failedRow.length) {
throw new Error(`Failed to translate: ${row}`);
}
}
else {
throw new Error(`Expected 'View article' page at ${url}, but failed to extract article info from it.`);
}
}
}
// "row requestor" functions
// For search results - given ID and the document it originates, return a row.
// This function does not incur additional network requests.
function rowFromSearchResult(id, doc) {
try {
let entryElem = doc.querySelector(`.gs_r[data-cid="${id}"]`);
// href from an <a> tag, direct link to the source. Note that the ID
// starting with number can be fine, but the selector is a pain.
let aElem = doc.getElementById(id);
let directLink = aElem ? aElem.href : undefined;
let attachmentLink = attr(entryElem, ".gs_ggs a", "href");
let attachmentType = text(entryElem, ".gs_ctg2");
if (attachmentType) {
// Remove the brackets
attachmentType = attachmentType.slice(1, -1).toUpperCase();
}
let byline = text(entryElem, ".gs_a");
return { id, directLink, attachmentLink, attachmentType, byline };
}
catch (error) {
Z.debug(`Warning: failed to get row info for GS id ${id}`);
return undefined;
}
}
// For search results - given "Article view" URLs and the profile document it
// originates, return a row. This will incur one request (to get the "Article
// view" document) per row.
async function rowFromProfile(url, profileDoc) {
// To "navigate" to the linked "View article" page from the profile page, a
// referrer is sent as header in the request
const requestOptions = { headers: { Referer: profileDoc.location.href } };
try {
let viewArticleDoc = await requestDocument(url, requestOptions);
let row = parseViewArticle(viewArticleDoc);
if (row) {
return row;
}
}
catch (error) {
Z.debug(`Warning: cannot retrieve the profile view-article page at ${url}; skipping. The error was:`);
Z.debug(error);
return undefined;
}
Z.debug(`Warning: cannot find Google Scholar id in profile view-article page at ${url}; skipping.`);
return undefined;
}
// process the row in the order of DOI -> arXiv -> GS. If all fail, add the row
// to the array failedRows. This function never rejects.
async function scrapeInStages(row, referrerURL, failedRows) {
try {
await scrapeDOI(row);
return;
}
catch (error) {
}
try {
await scrapeArXiv(row);
return;
}
catch (error) {
}
try {
await scrapeGoogleScholar(row, referrerURL);
}
catch (error) {
Z.debug(`Error with Google Scholar scraping of row ${row.directLink}`);
Z.debug(`The error was: ${error}`);
failedRows.push(row);
}
}
function scrapeDOI(row) {
let doi = extractDOI(row);
if (!doi) {
throw new Error(`No DOI found for link: ${row.directLink}`);
}
let translate = Z.loadTranslator("search");
// DOI Content Negotiation
translate.setTranslator("b28d0d42-8549-4c6d-83fc-8382874a5cb9");
translate.setHandler("error", () => {});
translate.setHandler("itemDone", (obj, item) => {
// NOTE: The 'DOI Content Negotiation' translator does not add
// attachments on its own
addAttachment(item, row);
item.complete();
});
translate.setSearch({ DOI: doi });
Z.debug(`Trying DOI search for ${row.directLink}`);
return translate.translate();
}
function scrapeArXiv(row) {
let eprintID = extractArXiv(row);
if (!eprintID) {
throw new Error(`No ArXiv eprint ID found for link: ${row.directLink}`);
}
let translate = Z.loadTranslator("search");
// arXiv.org
translate.setTranslator("ecddda2e-4fc6-4aea-9f17-ef3b56d7377a");
translate.setHandler("error", () => {});
translate.setHandler("itemDone", (obj, item) => {
// NOTE: Attachment is handled by the arXiv.org search translator
item.complete();
});
translate.setSearch({ arXiv: eprintID });
Z.debug(`Trying ArXiv search for ${row.directLink}`);
return translate.translate();
}
function scrapeGoogleScholar(row, referrerURL) {
// URL of the citation-info page fragment for the current row
let citeURL;
if (referrerURL.searchParams.get("scilib") === "1") { // My Library
citeURL = `${GS_CONFIG.baseURL}/scholar?scila=${row.id}&output=cite&scirp=0&hl=${GS_CONFIG.lang}`;
}
else { // Normal search page
citeURL = `${GS_CONFIG.baseURL}/scholar?q=info:${row.id}:scholar.google.com/&output=cite&scirp=0&hl=${GS_CONFIG.lang}`;
}
Z.debug(`Falling back to Google Scholar scraping for ${row.directLink || "citation-only entry"}`);
return processCitePage(citeURL, row, referrerURL.href);
}
/*
* #########################
* ### Scraper Functions ###
* #########################
*/
var bogusItemID = 1;
var scrapeCase = function (doc, url) {
// Citelet is identified by
// id="gsl_reference"
var refFrag = doc.evaluate('//div[@id="gsl_reference"] | //div[@id="gs_reference"]',
doc, null, XPathResult.ANY_TYPE, null).iterateNext();
if (refFrag) {
// citelet looks kind of like this
// Powell v. McCormack, 395 US 486 - Supreme Court 1969
var attachmentPointer = url;
if (Zotero.isMLZ) {
var block = doc.getElementById("gs_opinion_wrapper");
if (block) {
attachmentPointer = block;
}
}
var factory = new ItemFactory(doc, refFrag.textContent, [attachmentPointer]);
factory.repairCitelet();
factory.getDate();
factory.getCourt();
factory.getVolRepPag();
if (!factory.hasReporter()) {
// Look for docket number in the current document
factory.getDocketNumber(doc);
}
factory.getTitle();
factory.saveItem();
}
};
/*
* ####################
* ### Item Factory ###
* ####################
*/
var ItemFactory = function (doc, citeletString, attachmentLinks, titleString /* , bibtexLink*/) {
// var strings
this.v = {};
this.v.title = titleString;
this.v.number = false;
this.v.court = false;
this.v.extra = false;
this.v.date = undefined;
this.v.jurisdiction = false;
this.v.docketNumber = false;
this.vv = {};
this.vv.volRepPag = [];
// portable array
this.attachmentLinks = attachmentLinks;
this.doc = doc;
// working strings
this.citelet = citeletString;
/** handled outside of item factory
this.bibtexLink = bibtexLink;
this.bibtexData = undefined;
*/
this.trailingInfo = false;
// simple arrays of strings
this.hyphenSplit = false;
this.commaSplit = false;
};
ItemFactory.prototype.repairCitelet = function () {
if (!this.citelet.match(/\s+-\s+/)) {
this.citelet = this.citelet.replace(/,\s+([A-Z][a-z]+:)/, " - $1");
}
};
ItemFactory.prototype.repairTitle = function () {
// All-caps words of four or more characters probably need fixing.
if (this.v.title.match(/(?:[^a-z]|^)[A-Z]{4,}(?:[^a-z]|$)/)) {
this.v.title = ZU.capitalizeTitle(this.v.title.toLowerCase(), true)
.replace(/([^0-9a-z])V([^0-9a-z])/, "$1v$2");
}
};
ItemFactory.prototype.hasUsefulData = function () {
if (this.getDate()) {
return true;
}
if (this.hasInitials()) {
return true;
}
return false;
};
ItemFactory.prototype.hasInitials = function () {
if (this.hyphenSplit.length && this.hyphenSplit[0].match(/[A-Z] /)) {
return true;
}
return false;
};
ItemFactory.prototype.hasReporter = function () {
if (this.vv.volRepPag.length > 0) {
return true;
}
return false;
};
ItemFactory.prototype.getDate = function () {
var i, m;
// Citelet parsing, step (1)
if (!this.hyphenSplit) {
if (this.citelet.match(/\s+-\s+/)) {
this.hyphenSplit = this.citelet.split(/\s+-\s+/);
}
else {
m = this.citelet.match(/^(.*),\s+([^,]+Court,\s+[^,]+)$/);
if (m) {
this.hyphenSplit = [m[1], m[2]];
}
else {
this.hyphenSplit = [this.citelet];
}
}
this.trailingInfo = this.hyphenSplit.slice(-1);
}
if (!this.v.date && this.v.date !== false) {
this.v.date = false;
for (i = this.hyphenSplit.length - 1; i > -1; i += -1) {
m = this.hyphenSplit[i].match(/(?:(.*)\s+)*([0-9]{4})$/);
if (m) {
this.v.date = m[2];
if (m[1]) {
this.hyphenSplit[i] = m[1];
}
else {
this.hyphenSplit[i] = "";
}
this.hyphenSplit = this.hyphenSplit.slice(0, i + 1);
break;
}
}
}
// If we can find a more specific date in the case's centered text then use it
var nodesSnapshot = this.doc.evaluate('//div[@id="gs_opinion"]/center', this.doc, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
for (var iNode = 0; iNode < nodesSnapshot.snapshotLength; iNode++) {
var specificDate = nodesSnapshot.snapshotItem(iNode).textContent.trim();
// Remove the first word through the first space
// if it starts with "Deci" or it doesn't start with the first three letters of a month
// and if it doesn't start with Submitted or Argued
// (So, words like "Decided", "Dated", and "Released" will be removed)
specificDate = specificDate.replace(/^(?:Deci|(?!Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec|Submitted|Argued))[a-z]+[.:]?\s*/i, "")
// Remove the trailing period, if it is there
.replace(/\.$/, "");
// If the remaining text is a valid date...
if (!isNaN(Date.parse(specificDate))) {
// ...then use it
this.v.date = specificDate;
break;
}
}
return this.v.date;
};
ItemFactory.prototype.getCourt = function () {
var s, m;
// Citelet parsing, step (2)
s = this.hyphenSplit.pop().replace(/,\s*$/, "").replace(/\u2026\s*$/, "Court");
var court = null;
var jurisdiction = null;
m = s.match(/(.* Court),\s+(.*)/);
if (m) {
court = m[1];
jurisdiction = m[2];
}
if (!court) {
m = s.match(/(?:([a-zA-Z]+):\s*)*(.*)/);
if (m) {
court = m[2].replace(/_/g, " ");
jurisdiction = m[1];
}
}
if (court) {
this.v.court = court;
}
if (jurisdiction) {
this.v.extra = "Jurisdiction: " + jurisdiction;
}
};
ItemFactory.prototype.getVolRepPag = function () {
var i, m;
// Citelet parsing, step (3)
if (this.hyphenSplit.length) {
this.commaSplit = this.hyphenSplit.slice(-1)[0].split(/\s*,\s+/);
var gotOne = false;
for (i = this.commaSplit.length - 1; i > -1; i += -1) {
m = this.commaSplit[i].match(/^([0-9]+)\s+(.*)\s+(.*)/);
if (m) {
var volRepPag = {};
volRepPag.volume = m[1];
volRepPag.reporter = m[2];
volRepPag.pages = m[3].replace(/\s*$/, "");
this.commaSplit.pop();
if (!volRepPag.pages.match(/[0-9]$/) && (i > 0 || gotOne)) {
continue;
}
gotOne = true;
this.vv.volRepPag.push(volRepPag);
}
else {
break;
}
}
}
};
ItemFactory.prototype.getTitle = function () {
// Citelet parsing, step (4) [optional]
if (this.commaSplit) {
this.v.title = this.commaSplit.join(", ");
}
};
ItemFactory.prototype.getDocketNumber = function (doc) {
var docNumFrag = doc.evaluate(
'//center[preceding-sibling::center//h3[@id="gsl_case_name"]] | //div[@class="gsc_value" and preceding-sibling::div[text()="Docket id"]]',
doc, null, XPathResult.ANY_TYPE, null).iterateNext();
if (docNumFrag) {
this.v.docketNumber = docNumFrag.textContent
.replace(/^\s*[Nn][Oo](?:.|\s+)\s*/, "")
.replace(/\.\s*$/, "");
}
};
ItemFactory.prototype.getAttachments = function (doctype) {
var i, ilen, attachments;
var attachmentTitle = "Google Scholar " + doctype;
attachments = [];
for (i = 0, ilen = this.attachmentLinks.length; i < ilen; i += 1) {
if (!this.attachmentLinks[i]) continue;
if ("string" === typeof this.attachmentLinks[i]) {
attachments.push({
title: attachmentTitle,
url: this.attachmentLinks[i],
type: "text/html"
});
}
else {
// DOM fragment and parent doc
var block = this.attachmentLinks[i];
var doc = block.ownerDocument;
// String content (title, url, css)
var title = doc.getElementsByTagName("title")[0].textContent;
var url = doc.documentURI;
var css = "*{margin:0;padding:0;}div.mlz-outer{width: 60em;margin:0 auto;text-align:left;}body{text-align:center;}p{margin-top:0.75em;margin-bottom:0.75em;}div.mlz-link-button a{text-decoration:none;background:#cccccc;color:white;border-radius:1em;font-family:sans;padding:0.2em 0.8em 0.2em 0.8em;}div.mlz-link-button a:hover{background:#bbbbbb;}div.mlz-link-button{margin: 0.7em 0 0.8em 0;}";
// head element
var head = doc.createElement("head");
head.innerHTML = '<title>' + title + '</title>';
head.innerHTML += '<style type="text/css">' + css + '</style>';
var attachmentdoc = Zotero.Utilities.composeDoc(doc, head, block);
attachments.push({
title: attachmentTitle,
document: attachmentdoc
});
// URL for this item
this.item.url = url;
}
}
return attachments;
};
ItemFactory.prototype.pushAttachments = function (doctype) {
this.item.attachments = this.getAttachments(doctype);
};
/*
ItemFactory.prototype.getBibtexData = function (callback) {
if (!this.bibtexData) {
if (this.bibtexData !== false) {
Zotero.Utilities.doGet(this.bibtexLink, function(bibtexData) {
if (!bibtexData.match(/title={{}}/)) {
this.bibtexData = bibtexData;
} else {
this.bibtexData = false;
}
callback(this.bibtexData);
});
return;
}
}
callback(this.bibtexData);
};
*/
ItemFactory.prototype.saveItem = function () {
var i, ilen, key;
if (this.v.title) {
this.repairTitle();
if (this.vv.volRepPag.length) {
var completedItems = [];
for (i = 0, ilen = this.vv.volRepPag.length; i < ilen; i += 1) {
this.item = new Zotero.Item("case");
for (key in this.vv.volRepPag[i]) {
if (this.vv.volRepPag[i][key]) {
this.item[key] = this.vv.volRepPag[i][key];
}
}
this.saveItemCommonVars();
if (i === (this.vv.volRepPag.length - 1)) {
this.pushAttachments("Judgement");
}
this.item.itemID = "" + bogusItemID;
bogusItemID += 1;
completedItems.push(this.item);
}
if (completedItems.length === 0) {
throw new Error("Failed to parse \"" + this.citelet + "\"");
}
for (i = 0, ilen = completedItems.length; i < ilen; i += 1) {
for (let j = 0, jlen = completedItems.length; j < jlen; j += 1) {
if (i === j) {
continue;
}
completedItems[i].seeAlso.push(completedItems[j].itemID);
}
completedItems[i].complete();
}
}
else {
this.item = new Zotero.Item("case");
this.saveItemCommonVars();
this.pushAttachments("Judgement");
this.item.complete();
}
}
else {
throw new Error("Failed to find title in \"" + this.citelet + "\"");
}
};
ItemFactory.prototype.saveItemCommonVars = function () {
for (let key in this.v) {
if (this.v[key]) {
this.item[key] = this.v[key];
}
}
};
/*
* #########################
* ### Utility Functions ###
* #########################
*/
// Returns a promise that resolves (to undefined) after the minimum time delay
// specified in milliseconds
function delay(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
// Identification functions for external searches
/**
* Extract candidate DOI from row by parsing its direct-link URL
*
* @param {RowObj} row
* @returns {string?} Candidate DOI string, or null if not found
*/
function extractDOI(row) {
let path = decodeURIComponent((new URL(row.directLink)).pathname);
// Normally, match to the end of the path, because we couldn't have known
// better.
// But we can try clean up a bit, for common file extensions tacked to the
// end, e.g. the link in the header title of
// https://scholar.google.com/citations?view_op=view_citation&hl=en&user=Cz6X6UYAAAAJ&citation_for_view=Cz6X6UYAAAAJ:zYLM7Y9cAGgC
// https://www.nomos-elibrary.de/10.5771/9783845229614-153.pdf
let m = path.match(/(10\.\d{4,}\/.+?)(?:[./](?:pdf|htm|html|xhtml|epub|xml))?$/i);
return m && m[1];
}
/**
* Extract arXiv ID from row by parsing its direct-link URL
*
* @param {RowObj} row
* @returns {string?} ArXiv ID, or null if not found
*/
function extractArXiv(row) {
let urlObj = new URL(row.directLink);
if (urlObj.hostname.toLowerCase() !== "arxiv.org") {
return null;
}
let path = decodeURIComponent(urlObj.pathname);
let m = path.match(/\/\w+\/([a-z-]+\/\d+|\d+\.\d+)$/i);
return m && m[1];
}
// Page-processing utilities
/**
* Returns an emulated search URL for a GS search with the profile name as the
* search term
*
* @param {string} profileName - Name of the profile's owner
* @returns {URL}
*/
function getEmulatedSearchURL(profileName) {
return new URL(`/scholar?hl=${GS_CONFIG.lang}&as_sdt=0%2C5&q=${encodeURIComponent(profileName).replace(/%20/g, "+")}&btnG=`, GS_CONFIG.baseURL);
}
/**
* Parse the "View article" page and returns the equivalent of a GS
* search-result row
*
* @param {Document} viewArticleDoc - "View article" document
* @returns {RowObj?} The row object, or null if parsing failed.
*/
function parseViewArticle(viewArticleDoc) {
let related = ZU.xpathText(viewArticleDoc,
'//a[contains(@href, "q=related:")]/@href');
if (!related) {
Z.debug("Could not locate 'related' link on the 'View article' page.");
return null;
}
let m = related.match(/=related:([^:]+):/); // GS id
if (m) {
let id = m[1];
let directLink = attr(viewArticleDoc, ".gsc_oci_title_link", "href");
let attachmentLink = attr(viewArticleDoc, "#gsc_oci_title_gg a", "href");
let attachmentType = text(viewArticleDoc, ".gsc_vcd_title_ggt");
if (attachmentType) {
attachmentType = attachmentType.slice(1, -1).toUpperCase();
}
return { id, directLink, attachmentLink, attachmentType };
}
else {
Z.debug("Unexpected format of 'related' URL; can't find Google Scholar id. 'related' URL is " + related);
return null;
}
}
/**
* Request and read the page-fragment with citation info, retrieve BibTeX, and
* import. Each call sends two network requests, and each request is preceded
* by a delay.
*
* @param {string} citeURL - The citation-info page fragment's URL, to be
* requested.
* @param {RowObj} row - The row object carrying the information of the entry's
* identity.
* @param {string} referrer - The referrer for the citation-info page fragment
* request.
*/
async function processCitePage(citeURL, row, referrer) {
let requestOptions = { headers: { Referer: referrer } };
// Note that the page at citeURL has no doctype and is not a complete HTML
// document. The browser can parse it in quirks mode but ZU.requestDocument
// has trouble with it.
await delay(DELAY_INTERVAL);
const citePage = await requestText(citeURL, requestOptions);
let m = citePage.match(/href="((https?:\/\/[a-z.]*)?\/scholar.bib\?[^"]+)/);
if (!m) {
// Saved lists and possibly other places have different formats for
// BibTeX URLs
// Trying to catch them here (can't add test bc lists are tied to
// google accounts)
m = citePage.match(/href="(.+?)">BibTeX<\/a>/);
}
if (!m) {
var msg = "Could not find BibTeX URL";
var title = citePage.match(/<title>(.*?)<\/title>/i);
if (title) {
msg += ' Got page with title "' + title[1] + '"';
}
throw new Error(msg);
}
const bibTeXURL = ZU.unescapeHTML(m[1]);
// Pause between obtaining the citation info page and sending the request
// for the BibTeX document
await delay(DELAY_INTERVAL);
// NOTE: To emulate the web app, the referrer for the BibTeX text is always
// set to the origin (e.g. https://scholar.google.com/), imitating
// strict-origin-when-cross-origin
requestOptions.headers.Referer = GS_CONFIG.baseURL + "/";
const bibTeXBody = await requestText(bibTeXURL, requestOptions);
let translator = Z.loadTranslator("import");
translator.setTranslator("9cb70025-a888-4a29-a210-93ec52da40d4"); // BibTeX
translator.setString(bibTeXBody);
translator.setHandler("itemDone", function (obj, item) {
// case are not recognized and can be characterized by the
// title link, or that the second line starts with a number
// e.g. 1 Cr. 137 - Supreme Court, 1803
if ((row.directLink && row.directLink.includes('/scholar_case?'))
|| row.byline && "01234567890".includes(row.byline[0])) {
item.itemType = "case";
item.caseName = item.title;
item.reporter = item.publicationTitle;
item.reporterVolume = item.volume;
item.dateDecided = item.date;
item.court = item.publisher;
}
// patents are not recognized but are easily detected
// by the titleLink or second line
if ((row.directLink && row.directLink.includes('google.com/patents/'))
|| (row.byline && row.byline.includes('Google Patents'))) {
item.itemType = "patent";
// authors are inventors
for (let i = 0, n = item.creators.length; i < n; i++) {
item.creators[i].creatorType = 'inventor';
}
// country and patent number
if (row.directLink) {
let m = row.directLink.match(/\/patents\/([A-Za-z]+)(.*)$/);
if (m) {
item.country = m[1];
item.patentNumber = m[2];
}
}
}
// Add the title link as the url of the item
if (row.directLink) {
item.url = row.directLink;
}
// fix titles in all upper case, e.g. some patents in search results
if (item.title.toUpperCase() === item.title) {
item.title = ZU.capitalizeTitle(item.title);
}
// delete "others" as author
if (item.creators.length) {
var lastCreatorIndex = item.creators.length - 1,
lastCreator = item.creators[lastCreatorIndex];
if (lastCreator.lastName === "others" && (lastCreator.fieldMode === 1 || lastCreator.firstName === "")) {
item.creators.splice(lastCreatorIndex, 1);
}
}
// clean author names
for (let j = 0, m = item.creators.length; j < m; j++) {
if (!item.creators[j].firstName) {
continue;
}
item.creators[j] = ZU.cleanAuthor(
item.creators[j].lastName + ', '
+ item.creators[j].firstName,
item.creators[j].creatorType,
true);
}
addAttachment(item, row);
item.complete();
});
return translator.translate();
}
function addAttachment(item, row) {
// attach linked document as attachment if available
if (row.attachmentLink) {
let attachment = {
title: "Available Version (via Google Scholar)",
url: row.attachmentLink,
};
let mimeType = MIME_TYPES[row.attachmentType];
if (mimeType) {
attachment.mimeType = mimeType;
}
item.attachments.push(attachment);
}
}
/*
Test Case Descriptions: (these have not been included in the test case JSON below as per
aurimasv's comment on https://github.com/zotero/translators/pull/833)
"description": "Legacy test case",
"url": "http://scholar.google.com/scholar?q=marbury&hl=en&btnG=Search&as_sdt=1%2C22&as_sdtp=on",
"description": "Legacy test case",
"url": "http://scholar.google.com/scholar?hl=en&q=kelo&btnG=Search&as_sdt=0%2C22&as_ylo=&as_vis=0",
"description": "Legacy test case",
"url": "http://scholar.google.com/scholar?hl=en&q=smith&btnG=Search&as_sdt=0%2C22&as_ylo=&as_vis=0",
"description": "Legacy test case",
"url": "http://scholar.google.com/scholar?hl=en&q=view+of+the+cathedral&btnG=Search&as_sdt=0%2C22&as_ylo=&as_vis=0",
"description": "Legacy test case",
"url": "http://scholar.google.com/scholar?hl=en&q=clifford&btnG=Search&as_sdt=0%2C22&as_ylo=&as_vis=0",
"description": "Legacy test case",
"url": "http://scholar.google.com/scholar_case?case=9834052745083343188&q=marbury+v+madison&hl=en&as_sdt=2,5",
"description": "Decided date not preceded by any word or any other date line",
"url": "http://scholar.google.com/scholar_case?case=11350538941232186766",
"description": "Decided date preceded by 'Dated'",
"url": "http://scholar.google.com/scholar_case?case=4250138655935640563",
"description": "Decided date preceded by 'Released'",
"url": "http://scholar.google.com/scholar_case?case=8121501341214166807",
"description": "Decided date preceded by 'Decided' and also by a 'Submitted' date line",
"url": "http://scholar.google.com/scholar_case?case=834584264358299037",
"description": "Decided date preceded by 'Decided' and also by an 'Argued' date line",
"url": "http://scholar.google.com/scholar_case?case=15235797139493194004",
"description": "Decided date preceded by 'Decided' and also by an 'Argued' date line and followed by an 'As Modified' line; most citers of this case appear to use the Decided date, not the As Modified date",
"url": "http://scholar.google.com/scholar_case?case=163483131267446711",
*/
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://scholar.google.com/scholar?q=marbury&hl=en&btnG=Search&as_sdt=1%2C22&as_sdtp=on",
"items": "multiple"
},
{
"type": "web",
"url": "http://scholar.google.com/scholar?hl=en&q=kelo&btnG=Search&as_sdt=0%2C22&as_ylo=&as_vis=0",
"items": "multiple"
},
{
"type": "web",
"url": "http://scholar.google.com/scholar?hl=en&q=smith&btnG=Search&as_sdt=0%2C22&as_ylo=&as_vis=0",
"items": "multiple"
},
{
"type": "web",
"url": "http://scholar.google.com/scholar?hl=en&q=view+of+the+cathedral&btnG=Search&as_sdt=0%2C22&as_ylo=&as_vis=0",
"items": "multiple"
},
{
"type": "web",
"url": "http://scholar.google.com/scholar?hl=en&q=clifford&btnG=Search&as_sdt=0%2C22&as_ylo=&as_vis=0",
"items": "multiple"
},
{
"type": "web",
"url": "http://scholar.google.com/scholar_case?case=9834052745083343188&q=marbury+v+madison&hl=en&as_sdt=2,5",
"items": [
{
"itemType": "case",
"caseName": "Marbury v. Madison",
"creators": [],
"dateDecided": "1803",
"court": "Supreme Court",
"firstPage": "137",
"itemID": "1",
"reporter": "US",
"reporterVolume": "5",
"attachments": [
{
"title": "Google Scholar Judgement",
"type": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://scholar.google.com/scholar_case?case=11350538941232186766",
"items": [
{
"itemType": "case",
"caseName": "Meier ex rel. Meier v. Sun Intern. Hotels, Ltd.",
"creators": [],
"dateDecided": "April 19, 2002",
"court": "Court of Appeals, 11th Circuit",
"firstPage": "1264",
"itemID": "1",
"reporter": "F. 3d",
"reporterVolume": "288",
"attachments": [
{
"title": "Google Scholar Judgement",
"type": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://scholar.google.com/scholar_case?case=4250138655935640563",
"items": [
{
"itemType": "case",
"caseName": "Patio Enclosures, Inc. v. Four Seasons Marketing Corp.",
"creators": [],
"dateDecided": "September 21, 2005",
"court": "Court of Appeals, 9th Appellate Dist.",
"extra": "Jurisdiction: Ohio",
"firstPage": "4933",
"itemID": "1",
"reporter": "Ohio",
"reporterVolume": "2005",
"attachments": [
{
"title": "Google Scholar Judgement",
"type": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://scholar.google.com/scholar_case?case=8121501341214166807",
"items": [
{
"itemType": "case",
"caseName": "Click v. Estate of Click",
"creators": [],
"dateDecided": "June 13, 2007",
"court": "Court of Appeals, 4th Appellate Dist.",
"extra": "Jurisdiction: Ohio",
"firstPage": "3029",
"itemID": "1",
"reporter": "Ohio",
"reporterVolume": "2007",
"attachments": [
{
"title": "Google Scholar Judgement",
"type": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://scholar.google.com/scholar_case?case=834584264358299037",
"items": [
{
"itemType": "case",
"caseName": "Kenty v. Transamerica Premium Ins. Co.",
"creators": [],
"dateDecided": "July 5, 1995",
"court": "Supreme Court",
"extra": "Jurisdiction: Ohio",
"firstPage": "415",
"itemID": "1",
"reporter": "Ohio St. 3d",
"reporterVolume": "72",
"attachments": [
{
"title": "Google Scholar Judgement",
"type": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://scholar.google.com/scholar_case?case=15235797139493194004",
"items": [
{
"itemType": "case",
"caseName": "Tinker v. Des Moines Independent Community School Dist.",
"creators": [],
"dateDecided": "February 24, 1969",
"court": "Supreme Court",
"firstPage": "503",
"itemID": "1",
"reporter": "US",
"reporterVolume": "393",
"attachments": [
{
"title": "Google Scholar Judgement",
"type": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://scholar.google.com/scholar_case?case=163483131267446711",
"items": [
{
"itemType": "case",
"caseName": "Kaimowitz v. Board of Trustees of U. of Illinois",
"creators": [],
"dateDecided": "December 23, 1991",
"court": "Court of Appeals, 7th Circuit",
"firstPage": "765",
"itemID": "1",
"reporter": "F. 2d",
"reporterVolume": "951",
"attachments": [
{
"title": "Google Scholar Judgement",
"type": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://scholar.google.com/scholar_case?case=608089472037924072",
"items": [
{
"itemType": "case",
"caseName": "Kline v. Mortgage Electronic Security Systems",
"creators": [],
"dateDecided": "February 27, 2013",
"court": "Dist. Court",
"docketNumber": "Case No. 3:08cv408",
"extra": "Jurisdiction: SD Ohio",
"attachments": [
{
"title": "Google Scholar Judgement",
"type": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://scholar.google.de/citations?view_op=view_citation&hl=de&user=INQwsQkAAAAJ&citation_for_view=INQwsQkAAAAJ:u5HHmVD_uO8C",
"detectedItemType": "journalArticle",
"items": [
{
"itemType": "bookSection",
"title": "Linked data: The story so far",
"creators": [
{
"firstName": "Christian",
"lastName": "Bizer",
"creatorType": "author"
},
{
"firstName": "Tom",
"lastName": "Heath",
"creatorType": "author"
},
{
"firstName": "Tim",
"lastName": "Berners-Lee",
"creatorType": "author"
}
],
"date": "2011",
"bookTitle": "Semantic services, interoperability and web applications: emerging concepts",
"itemID": "bizer2011linked",
"libraryCatalog": "Google Scholar",
"pages": "205–227",
"publisher": "IGI global",
"shortTitle": "Linked data",
"url": "https://www.igi-global.com/chapter/linkeddata-story-far/55046",
"attachments": [
{
"title": "Available Version (via Google Scholar)",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://scholar.google.de/citations?user=INQwsQkAAAAJ&hl=de&oi=sra",
"items": "multiple"
},
{
"type": "web",
"url": "https://scholar.google.be/scholar?hl=en&as_sdt=1,5&as_vis=1&q=%22transformative+works+and+cultures%22&scisbd=1",
"items": "multiple"
},
{
"type": "web",
"url": "https://scholar.google.com/citations?user=Cz6X6UYAAAAJ&hl=en",
"items": "multiple"
},
{
"type": "web",
"url": "https://scholar.google.com/scholar_case?case=16585781351150334057",
"items": [
{
"itemType": "case",
"caseName": "Strickland v. Washington",
"creators": [],
"dateDecided": "May 14, 1984",
"court": "Supreme Court",
"firstPage": "668",
"itemID": "1",
"reporter": "US",
"reporterVolume": "466",
"attachments": [
{
"title": "Google Scholar Judgement",
"type": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://scholar.google.com/citations?view_op=view_citation&hl=en&user=RjsFKYEAAAAJ&cstart=20&pagesize=80&citation_for_view=RjsFKYEAAAAJ:5nxA0vEk-isC",
"detectedItemType": "journalArticle",
"items": [
{
"itemType": "journalArticle",
"title": "The Weakness of Power and the Power of Weakness: The Ethics of War in a Time of Terror",
"creators": [
{
"creatorType": "author",
"firstName": "Michael",
"lastName": "Northcott"
}
],
"date": "04/2007",
"DOI": "10.1177/0953946806075493",
"ISSN": "0953-9468, 1745-5235",
"abstractNote": "In 2002 a significant number of American theologians declared that the ‘war on terror’ was a just war. But the indiscriminate strategies and munitions technologies deployed in the invasion and occupation of Iraq fall short of the just war principles of non-combatant immunity, and proportionate response. The just war tradition is one of Christendom's most enduring legacies to the law of nations. Its practice implies a standard of virtue in war that is undermined by the indiscriminate effects of many modern weapons and by the deliberate targeting of civilian infrastructure. The violent power represented by the technology of what the Vatican calls ‘total war’has occasioned a significant shift in Catholic social teaching on just war since the Second World War. Total war generates an asymmetry of weakness in those subjected to these techniques of terror, and this has only strengthened the violence of the Islamist struggle against the West. But those who draw inspiration and legitimacy from this weakness in their struggle with the West also reject virtue in war. In a time of terror the theological vocation is to speak peace and to recall the terms in which the peace of God was achieved by way of the cross.",
"issue": "1",
"journalAbbreviation": "Studies in Christian Ethics",
"language": "en",
"libraryCatalog": "DOI.org (Crossref)",
"pages": "88-101",
"publicationTitle": "Studies in Christian Ethics",
"shortTitle": "The Weakness of Power and the Power of Weakness",
"url": "http://journals.sagepub.com/doi/10.1177/0953946806075493",
"volume": "20",
"attachments": [
{
"title": "Available Version (via Google Scholar)",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Sebastian Karcher/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2019 Sebastian Karcher
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectSearch(items) {
return (filterQuery(items).length > 0);
}
// return an array of DOIs from the query (items or text)
function filterQuery(items) {
if (!items) return [];
if (typeof items == 'string' || !items.length) items = [items];
// filter out invalid queries
var dois = [], doi;
for (var i = 0, n = items.length; i < n; i++) {
if (items[i].DOI && (doi = ZU.cleanDOI(items[i].DOI))) {
dois.push(doi);
}
else if (typeof items[i] == 'string' && (doi = ZU.cleanDOI(items[i]))) {
dois.push(doi);
}
}
return dois;
}
async function doSearch(items) {
for (let doi of filterQuery(items)) {
await processDOI(doi);
}
}
async function processDOI(doi) {
let response = await requestText(
`https://doi.org/${encodeURIComponent(doi)}`,
{ headers: { Accept: "application/vnd.datacite.datacite+json, application/vnd.crossref.unixref+xml, application/vnd.citationstyles.csl+json" } }
);
// by content negotiation we asked for datacite or crossref format, or CSL JSON
if (!response) return;
Z.debug(response);
let trans = Zotero.loadTranslator('import');
trans.setString(response);
if (response.includes("<crossref")) {
// Crossref Unixref
trans.setTranslator('93514073-b541-4e02-9180-c36d2f3bb401');
trans.setHandler('itemDone', function (obj, item) {
item.libraryCatalog = "DOI.org (Crossref)";
item.complete();
});
}
else if (response.includes("http://datacite.org/schema")
// TEMP
// https://github.com/zotero/translators/issues/2018#issuecomment-616491407
|| response.includes('"agency": "DataCite"')
|| response.includes('"providerId": ')) {
// Datacite JSON
trans.setTranslator('b5b5808b-1c61-473d-9a02-e1f5ba7b8eef');
trans.setHandler('itemDone', function (obj, item) {
item.libraryCatalog = "DOI.org (Datacite)";
item.complete();
});
}
else {
// use CSL JSON translator
trans.setTranslator('bc03b4fe-436d-4a1f-ba59-de4d2d7a63f7');
trans.setHandler('itemDone', function (obj, item) {
item.libraryCatalog = "DOI.org (CSL JSON)";
// check if there are potential issues with character encoding and try to fix it
// e.g. 10.1057/9780230391116.0016 (en dash in title is presented as escaped unicode)
for (var field in item) {
if (typeof item[field] != 'string') continue;
// check for control characters that should never be in strings from CrossRef
if (/[\u007F-\u009F]/.test(item[field])) {
var escaped = item[field].replace(/[^0-9A-Za-z ]/g, function (c) {
return "%" + c.charCodeAt(0).toString(16);
});
item[field] = decodeURIComponent(escaped);
}
}
item.complete();
});
}
await trans.translate();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "search",
"input": {
"DOI": "10.12763/ONA1045"
},
"items": [
{
"itemType": "journalArticle",
"title": "Code criminel de l'empereur Charles V vulgairement appellé la Caroline contenant les loix qui sont suivies dans les jurisdictions criminelles de l'Empire et à l'usage des conseils de guerre des troupes suisses.",
"creators": [
{
"firstName": "",
"lastName": "Heiliges Römisches Reich Deutscher Nation",
"creatorType": "author"
},
{
"firstName": "Franz Adam. Éditeur Scientifique",
"lastName": "Vogel",
"creatorType": "contributor"
},
{
"firstName": "Simon, Claude (167 ?-1752) Éditeur",
"lastName": "Commercial",
"creatorType": "contributor"
},
{
"firstName": "",
"lastName": "Université De Lorraine-Direction De La Documentation Et De L'Edition",
"creatorType": "contributor"
}
],
"date": "1734",
"DOI": "10.12763/ona1045",
"accessDate": "2019-02-02T02:31:57Z",
"language": "fre",
"libraryCatalog": "DOI.org (Datacite)",
"pages": "39.79 MB, 402 pages",
"relations": [],
"url": "http://docnum.univ-lorraine.fr/pulsar/RCR_543952102_NA1045.pdf",
"attachments": [],
"tags": [
"Droit"
],
"notes": [
"<h2>Other</h2>\nLe code est accompagné de commentaires de F. A. Vogel, qui signe l'épitre dédicatoire<h2>Other</h2>\nReliure 18è siècle<h2>Other</h2>\nEx-libris manuscrit \"Ex libris Dufour\""
]
}
]
},
{
"type": "search",
"input": {
"DOI": "10.7336/academicus.2014.09.05"
},
"items": [
{
"itemType": "journalArticle",
"title": "Second world war, communism and post-communism in Albania, an equilateral triangle of a tragic trans-Adriatic story. The Eftimiadi’s Saga",
"creators": [
{
"firstName": "Muner",
"lastName": "Paolo",
"creatorType": "author"
}
],
"date": "01/2014",
"DOI": "10.7336/academicus.2014.09.05",
"ISSN": "20793715",
"accessDate": "2019-02-02T03:28:48Z",
"libraryCatalog": "DOI.org (Crossref)",
"pages": "69-78",
"publicationTitle": "Academicus International Scientific Journal",
"relations": [],
"url": "http://academicus.edu.al/?subpage=volumes&nr=9",
"volume": "9",
"attachments": [],
"tags": [],
"notes": []
}
]
},
{
"type": "search",
"input": [
{
"DOI": "10.5555/12345678"
},
{
"DOI": "10.1109/TPS.1987.4316723"
},
{
"DOI": "10.5555/666655554444"
}
],
"items": [
{
"itemType": "journalArticle",
"title": "Toward a Unified Theory of High-Energy Metaphysics: Silly String Theory",
"creators": [
{
"creatorType": "author",
"firstName": "Josiah",
"lastName": "Carberry"
},
{
"creatorType": "contributor",
"fieldMode": 1,
"lastName": "Friends of Josiah Carberry"
}
],
"date": "2008-08-14",
"DOI": "10.5555/12345678",
"ISSN": "0264-3561",
"abstractNote": "The characteristic theme of the works of Stone is the bridge between culture and society. Several narratives concerning the fatal !aw, and subsequent dialectic, of semioticist class may be found. Thus, Debord uses the term ‘the subtextual paradigm of consensus’ to denote a cultural paradox. The subject is interpolated into a neocultural discourse that includes sexuality as a totality. But Marx’s critique of prepatriarchialist nihilism states that consciousness is capable of signi\"cance. The main theme of Dietrich’s[1]model of cultural discourse is not construction, but neoconstruction. Thus, any number of narratives concerning the textual paradigm of narrative exist. Pretextual cultural theory suggests that context must come from the collective unconscious.",
"issue": "11",
"journalAbbreviation": "Journal of Psychoceramics",
"language": "en",
"libraryCatalog": "DOI.org (Crossref)",
"pages": "1-3",
"publicationTitle": "Journal of Psychoceramics",
"shortTitle": "Toward a Unified Theory of High-Energy Metaphysics",
"url": "https://ojs33.crossref.publicknowledgeproject.org/index.php/test/article/view/2",
"volume": "5",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
},
{
"itemType": "journalArticle",
"title": "Bulk and Surface Plasmons in Artificially Structured Materials",
"creators": [
{
"creatorType": "author",
"firstName": "John J.",
"lastName": "Quinn"
},
{
"creatorType": "author",
"firstName": "Josiah S.",
"lastName": "Carberry"
}
],
"date": "1987",
"DOI": "10.1109/TPS.1987.4316723",
"ISSN": "0093-3813",
"issue": "4",
"journalAbbreviation": "IEEE Trans. Plasma Sci.",
"libraryCatalog": "DOI.org (Crossref)",
"pages": "394-410",
"publicationTitle": "IEEE Transactions on Plasma Science",
"url": "http://ieeexplore.ieee.org/document/4316723/",
"volume": "15",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
},
{
"itemType": "journalArticle",
"title": "The Memory Bus Considered Harmful",
"creators": [
{
"creatorType": "author",
"firstName": "Josiah",
"lastName": "Carberry"
}
],
"date": "2012-10-11",
"DOI": "10.5555/666655554444",
"ISSN": "0264-3561",
"issue": "11",
"journalAbbreviation": "Journal of Psychoceramics",
"language": "en",
"libraryCatalog": "DOI.org (Crossref)",
"pages": "1-3",
"publicationTitle": "Journal of Psychoceramics",
"url": "https://ojs33.crossref.publicknowledgeproject.org/index.php/test/article/view/8",
"volume": "9",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Alain Borel^https?://(www|news?)\.e-periodica\.ch/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2023 Alain Borel
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/digbib/view')) {
return "journalArticle";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
else {
return false;
}
}
function getSearchResults(doc, checkOnly) {
var items = {};
// Zotero.debug(items);
var found = false;
var rows = doc.querySelectorAll('h2.ep-result__title > a');
for (let row of rows) {
//Zotero.debug(row.textContent);
let href = row.href;
//Zotero.debug(href);
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
// Zotero.debug(items[href]);
}
return found ? items : false;
}
async function doWeb(doc, url) {
if (detectWeb(doc, url) == 'multiple') {
let items = await Zotero.selectItems(getSearchResults(doc, false));
if (!items) return;
for (let resultUrl of Object.keys(items)) {
await scrape(resultUrl);
}
}
else {
// The journalArticle type will be applicable in general unless we find multiple refs.
await scrape(url);
}
}
async function scrape(url) {
// In general the article ID is given the pid parameter in the URL
// If the URL ends with a hash/fragment identifier,
// the final digits of the pid parameter (after a double colon) must be replaced with the hash ID
// e.g. alp-001:1907:2::332#375 => alp-001:1907:2::375
let articleURL = new URL(url);
let articleID = articleURL.searchParams.get("pid");
let articleViewFragment = articleURL.hash.replace(/^#/, ""); // trim leading #
if (/\d+/.test(articleViewFragment)) {
// Normalize article ID by replacing the last segment with the real
// page id if any
articleID = articleID.replace(/::\d+$/, "::" + articleViewFragment);
}
let pageinfoUrl = "https://www.e-periodica.ch/digbib/ajax/pageinfo?pid=" + encodeURIComponent(articleID);
//Zotero.debug('JSON URL ' + pageinfoUrl);
let epJSON = await requestJSON(pageinfoUrl);
//Zotero.debug(epJSON);
let risURL;
if (epJSON.articles.length == 0) {
// Fallback for non-article content, listed as Werbung, Sonstiges and various others:
// this information is unfortunately not included in the JSON metadata => let's add a reasonable pseudo-title
epJSON.articles = [{ title: "Untitled" }];
}
if (epJSON.articles["0"].hasRisLink) {
risURL = '/view/' + epJSON.articles["0"].risLink;
}
// Zotero.debug(risURL);
var pdfURL = null;
if (epJSON.articles["0"].hasPdfLink) {
pdfURL = epJSON.articles["0"].pdfLink;
}
// Zotero.debug(pdfURL);
if (risURL) {
let risText = await requestText(risURL);
processRIS(risText, pdfURL);
}
else {
var item = new Zotero.Item("journalArticle");
item.title = epJSON.articles["0"].title.replace(' : ', ': ');
item.publicationTitle = epJSON.journalTitle.replace(' : ', ': ');
var numyear = epJSON.volumeNumYear.split(/[ ()]/).filter(element => element);
if (numyear.length > 1) {
item.date = numyear.slice(-1);
}
if (numyear.length > 0) {
item.volume = numyear[0];
}
if (epJSON.issueNumber) {
item.issue = epJSON.issueNumber;
}
if (epJSON.viewerLink.length > 0) {
if (epJSON.viewerLink.indexOf("http") == 0) {
item.url = epJSON.viewerLink;
}
else {
item.url = "https://www.e-periodica.ch" + epJSON.viewerLink;
}
}
if (epJSON.pdfLink) {
if (epJSON.pdfLink.indexOf("http") == 0) {
pdfURL = epJSON.pdfLink;
}
else {
pdfURL = "https://www.e-periodica.ch" + epJSON.pdfLink;
}
}
if (pdfURL) {
item.attachments.push({
url: pdfURL,
title: "Full Text PDF",
type: "application/pdf"
});
}
item.complete();
}
}
function processRIS(risText, pdfURL) {
// load translator for RIS
var translator = Zotero.loadTranslator("import");
translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7");
// Z.debug(text);
translator.setString(risText);
translator.setHandler("itemDone", function (obj, item) {
// Don't save HTML snapshot from 'UR' tag
item.attachments = [];
// change colon spacing in title and publicationTitle
item.title = item.title.replace(' : ', ': ');
if (item.publicationTitle) {
item.publicationTitle = item.publicationTitle.replace(' : ', ': ');
}
if (item.title == item.title.toUpperCase()) {
item.title = ZU.capitalizeTitle(item.title.toLowerCase(), true);
}
// Retrieve fulltext
if (pdfURL !== null) {
item.attachments.push({
url: pdfURL,
title: "Full Text PDF",
type: "application/pdf"
});
}
// DB in RIS maps to archive; we don't want that
delete item.archive;
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.doImport();
});
}/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.e-periodica.ch/digbib/view?pid=enh-006%3A2018%3A11::121#133",
"detectedItemType": "journalArticle",
"items": [
{
"itemType": "journalArticle",
"title": "Untersuchungen zur aktuellen Verbreitung der schweizerischen Laufkäfer (Coleoptera: Carabidae): Zwischenbilanz",
"creators": [
{
"lastName": "Hoess",
"firstName": "René",
"creatorType": "author"
},
{
"lastName": "Chittaro",
"firstName": "Yannick",
"creatorType": "author"
},
{
"lastName": "Walter",
"firstName": "Thomas",
"creatorType": "author"
}
],
"date": "2018",
"DOI": "10.5169/seals-986030",
"ISSN": "1662-8500",
"libraryCatalog": "E-periodica Switzerland",
"pages": "129",
"publicationTitle": "Entomo Helvetica: entomologische Zeitschrift der Schweiz",
"shortTitle": "Untersuchungen zur aktuellen Verbreitung der schweizerischen Laufkäfer (Coleoptera",
"volume": "11",
"attachments": [
{
"title": "Full Text PDF",
"type": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.e-periodica.ch/digbib/view?pid=bts-004%3A2011%3A137%3A%3A254&referrer=search#251",
"detectedItemType": "journalArticle",
"items": [
{
"itemType": "journalArticle",
"title": "Décentralisation, opportunités et contraintes",
"creators": [
{
"lastName": "Fignolé",
"firstName": "Jean-Claude",
"creatorType": "author"
}
],
"date": "2011",
"DOI": "10.5169/seals-144646",
"ISSN": "0251-0979",
"issue": "05-06",
"libraryCatalog": "E-periodica Switzerland",
"pages": "14",
"publicationTitle": "Tracés: bulletin technique de la Suisse romande",
"volume": "137",
"attachments": [
{
"title": "Full Text PDF",
"type": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.e-periodica.ch/digbib/view?pid=alp-001%3A1907%3A2%3A%3A332#375",
"detectedItemType": "journalArticle",
"items": [
{
"itemType": "journalArticle",
"title": "Stimmen und Meinungen: schweizerisches Nationaldrama?",
"creators": [
{
"lastName": "Falke",
"firstName": "Konrad",
"creatorType": "author"
}
],
"date": "1907-1908",
"DOI": "10.5169/seals-747870",
"issue": "12",
"libraryCatalog": "E-periodica Switzerland",
"pages": "364",
"publicationTitle": "Berner Rundschau: Halbmonatsschrift für Dichtung, Theater, Musik und bildende Kunst in der Schweiz",
"shortTitle": "Stimmen und Meinungen",
"volume": "2",
"attachments": [
{
"title": "Full Text PDF",
"type": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.e-periodica.ch/digbib/view?pid=bts-004%3A2011%3A137%3A%3A262#262",
"detectedItemType": "journalArticle",
"items": [
{
"itemType": "journalArticle",
"title": "Untitled",
"creators": [],
"date": "2011",
"issue": "05-06",
"libraryCatalog": "E-periodica Switzerland",
"publicationTitle": "Tracés: bulletin technique de la Suisse romande",
"url": "https://www.e-periodica.ch/digbib/view?pid=bts-004%3A2011%3A137%3A%3A262",
"volume": "137",
"attachments": [
{
"title": "Full Text PDF",
"type": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Sebastian Karcher^https?://phil(papers|archive)\.org//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2023 Sebastian Karcher
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/rec/')) {
return 'journalArticle';
}
else if (getSearchResults(doc, true)) {
return 'multiple';
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.entryList .citation>a');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function idFromUrl(url) {
return url.match(/\/rec\/([A-Z-\d]+)/)[1];
}
async function doWeb(doc, url) {
let isPhilArchive = /^https?:\/\/philarchive\.org\//.test(url);
var ids = [];
if (detectWeb(doc, url) == 'multiple') {
let items = await Zotero.selectItems(getSearchResults(doc, false));
if (!items) return;
for (let url of Object.keys(items)) {
let id = idFromUrl(url);
ids.push(id);
}
await scrape(ids, isPhilArchive);
}
else {
let identifier = idFromUrl(url);
// Z.debug(identifier)
await scrape([identifier], isPhilArchive);
}
}
async function scrape(identifiers, isPhilArchive) {
let baseUrl = isPhilArchive ? "https://philarchive.org" : "https://philpapers.org";
for (let id of identifiers) {
let bibUrl = `${baseUrl}/item.pl?eId=${id}&format=bib`;
let bibText = await requestText(bibUrl);
let url = "/rec/" + id;
let translator = Zotero.loadTranslator("import");
translator.setTranslator('9cb70025-a888-4a29-a210-93ec52da40d4');
translator.setString(bibText);
translator.setHandler('itemDone', (_obj, item) => {
if (isPhilArchive) {
item.libraryCatalog = 'PhilArchive';
item.url = `https://philarchive.org/rec/${id}`; // full-text
item.attachments.push({
title: 'Full Text PDF',
mimeType: 'application/pdf',
url: `/archive/${id}`
});
}
else {
item.attachments.push({ url,
title: 'Snapshot',
mimeType: 'text/html' });
}
item.complete();
});
await translator.translate();
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://philpapers.org/rec/COROCA-4",
"items": [
{
"itemType": "journalArticle",
"title": "Observation, Character, and a Purely First-Person Point of View",
"creators": [
{
"firstName": "Josep E.",
"lastName": "Corbí",
"creatorType": "author"
}
],
"date": "2011",
"DOI": "10.1007/s12136-011-0124-2",
"issue": "4",
"itemID": "Corbi2011-COROCA-4",
"libraryCatalog": "PhilPapers",
"pages": "311–328",
"publicationTitle": "Acta Analytica",
"volume": "26",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://philpapers.org/browse/causal-realism",
"items": "multiple"
},
{
"type": "web",
"url": "https://philpapers.org/pub/6",
"items": "multiple"
},
{
"type": "web",
"url": "https://philpapers.org/s/solipsism",
"items": "multiple"
},
{
"type": "web",
"url": "https://philarchive.org/rec/RAYNGF",
"items": [
{
"itemType": "journalArticle",
"title": "Norm-Based Governance for a New Era: Lessons From Climate Change and Covid-19",
"creators": [
{
"firstName": "Leigh",
"lastName": "Raymond",
"creatorType": "author"
},
{
"firstName": "Daniel",
"lastName": "Kelly",
"creatorType": "author"
},
{
"firstName": "Erin",
"lastName": "Hennes",
"creatorType": "author"
}
],
"date": "2021",
"itemID": "Raymond2021-RAYNGF",
"libraryCatalog": "PhilArchive",
"pages": "1–14",
"publicationTitle": "Perspectives on Politics",
"shortTitle": "Norm-Based Governance for a New Era",
"url": "https://philarchive.org/rec/RAYNGF",
"volume": "1",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://philarchive.org/rec/LANTEO-39",
"items": [
{
"itemType": "journalArticle",
"title": "The Ethics of Partiality",
"creators": [
{
"firstName": "Benjamin",
"lastName": "Lange",
"creatorType": "author"
}
],
"date": "2022",
"DOI": "10.1111/phc3.12860",
"issue": "8",
"itemID": "Lange2022-LANTEO-39",
"libraryCatalog": "PhilArchive",
"pages": "1–15",
"publicationTitle": "Philosophy Compass",
"url": "https://philarchive.org/rec/LANTEO-39",
"volume": "1",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Ryan Velazquez and contributors^https://(classic\.clinicaltrials\.gov/ct2/(show|results)|(www\.)?clinicaltrials\.gov/(study|search))\b/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2020 Ryan Velazquez and contributors
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function isClassic(url) {
return url.startsWith("https://classic.clinicaltrials.gov");
}
function detectWeb(doc, url) {
let urlObject = new URL(url);
if (!isClassic(url)) { // new UI and default since July 2023
if (urlObject.pathname === "/search") {
// Watch for disappearance/appearance of results due to filtering
let resultsNode = doc.querySelector(".results-content-area");
if (resultsNode) {
// after the node has been generated by ajax, watch it
Zotero.monitorDOMChanges(resultsNode);
}
if (getSearchResults(doc, true/* checkOnly */)) {
return "multiple";
}
}
else if (urlObject.pathname.startsWith("/study/")) {
return "report";
}
return false;
}
// for "classic" UI
if (urlObject.pathname === "/ct2/results") {
// The following node being watched is present on the intial page.
Zotero.monitorDOMChanges(doc.querySelector("#docListBlock"));
if (getSearchResults(doc, true/* checkOnly */)) {
return "multiple";
}
}
else if (urlObject.pathname.startsWith("/ct2/show/")) {
return "report";
}
return false;
}
// The keys in the returned item will be the NCTId, which is enough for
// identifying a report
function getSearchResults(doc, checkOnly) {
let resultSelector
= isClassic(doc.location.href)
? '#theDataTable a[href^="/ct2/show/"]'
: "ctg-search-hit-card header > a[href^='/study/']";
var items = {};
var found = false;
var rows = doc.querySelectorAll(resultSelector);
for (let row of rows) {
let id = getClinicalTrialID(row.href);
let title = ZU.trimInternal(row.textContent);
if (!id || !title) continue;
if (checkOnly) return true;
found = true;
items[id] = title;
}
return found ? items : false;
}
async function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
let trialIDs = await Z.selectItems(getSearchResults(doc));
if (!trialIDs) return;
for (let id of Object.keys(trialIDs)) {
await scrape(id);
}
}
else {
await scrape(getClinicalTrialID(url));
}
}
async function scrape(clinicalTrialID) {
let jsonRequestURL = `https://classic.clinicaltrials.gov/api/query/full_studies?expr=${clinicalTrialID}&fmt=JSON`;
classicJSONToItem(await requestJSON(jsonRequestURL));
}
function getClinicalTrialID(url) {
let pathComponents = new URL(url).pathname.split("/");
return pathComponents[pathComponents.length - 1]; // last component in pathname
}
// Convert the data object from the JSON response of "classic" API into item
// TODO:
// - Add support for new API
// - This can be the basis for a search and import translator
function classicJSONToItem(data) {
let item = new Zotero.Item("report");
let study = data.FullStudiesResponse.FullStudies[0].Study;
// Start get the creator info
let creators = [];
let authorModule = study.ProtocolSection.SponsorCollaboratorsModule;
let firstAuthor = authorModule.ResponsibleParty;
let leadSponsor = authorModule.LeadSponsor;
let investigatorName;
if (firstAuthor
&& firstAuthor.ResponsiblePartyType !== "Sponsor") { // a person
// Clean up the comma trailing titles such as "First Last, MD, PhD"
investigatorName = firstAuthor.ResponsiblePartyInvestigatorFullName;
let cleanName = investigatorName.split(", ")[0];
creators.push(ZU.cleanAuthor(cleanName, "author"));
}
if (leadSponsor && leadSponsor.LeadSponsorName !== investigatorName) {
// lead sponsor is not a duplicate of the PI
creators.push({
lastName: leadSponsor.LeadSponsorName,
creatorType: (creators.length ? "contributor" : "author"),
fieldMode: 1
});
}
if (authorModule.CollaboratorList) {
let collabArray = authorModule.CollaboratorList.Collaborator || [];
for (let entity of collabArray) {
if (entity && entity.CollaboratorName) {
creators.push({
lastName: entity.CollaboratorName,
creatorType: "contributor",
fieldMode: 1
});
}
}
}
item.creators = creators;
let idModule = study.ProtocolSection.IdentificationModule;
let statusModule = study.ProtocolSection.StatusModule;
item.title = idModule.OfficialTitle;
item.date = statusModule.LastUpdateSubmitDate;
item.accessDate = ZU.strToISO(data.FullStudiesResponse.DataVrs);
item.institution = "clinicaltrials.gov"; // publisher
item.reportNumber = idModule.NCTId;
item.shortTitle = idModule.BriefTitle;
item.abstractNote = study.ProtocolSection.DescriptionModule.BriefSummary;
item.url = "https://clinicaltrials.gov/study/" + idModule.NCTId;
item.reportType = "Clinical trial registration";
item.extra = `submitted: ${statusModule.StudyFirstSubmitDate}`;
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://clinicaltrials.gov/study/NCT04292899",
"items": [
{
"itemType": "report",
"title": "A Phase 3 Randomized Study to Evaluate the Safety and Antiviral Activity of Remdesivir (GS-5734™) in Participants With Severe COVID-19",
"creators": [
{
"lastName": "Gilead Sciences",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "December 15, 2020",
"abstractNote": "The primary objective of this study is to evaluate the efficacy of 2 remdesivir (RDV) regimens with respect to clinical status assessed by a 7-point ordinal scale on Day 14.",
"extra": "submitted: February 28, 2020",
"institution": "clinicaltrials.gov",
"libraryCatalog": "clinicaltrials.gov",
"reportNumber": "NCT04292899",
"reportType": "Clinical trial registration",
"shortTitle": "Study to Evaluate the Safety and Antiviral Activity of Remdesivir (GS-5734™) in Participants With Severe Coronavirus Disease (COVID-19)",
"url": "https://clinicaltrials.gov/study/NCT04292899",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://clinicaltrials.gov/study/NCT00287391",
"items": [
{
"itemType": "report",
"title": "The Impact of Gastroesophageal Reflux Disease in Sleep Disorders: A Pilot Investigation of Rabeprazole, 20 mg Twice Daily for the Relief of GERD-Related Insomnia.",
"creators": [
{
"lastName": "University of North Carolina",
"creatorType": "author",
"fieldMode": 1
},
{
"lastName": "Janssen Pharmaceutica N.V., Belgium",
"creatorType": "contributor",
"fieldMode": 1
}
],
"date": "April 25, 2007",
"abstractNote": "This study will investigate Gastroesophageal Reflux Disease (GERD)as a cause of sleep disturbance. Patients with GERD may experience all or some of the following symptoms: stomach acid or partially digested food re-entering the esophagus (which is sometimes referred to as heartburn or regurgitation) and belching. Even very small, unnoticeable amounts of rising stomach acid may cause patients to wake up during the night.\n\nThis study will also investigate the effect of Rabeprazole, (brand name Aciphex) on patients with known insomnia. Rabeprazole is an FDA approved medication already marketed for the treatment of GERD.",
"extra": "submitted: February 3, 2006",
"institution": "clinicaltrials.gov",
"libraryCatalog": "clinicaltrials.gov",
"reportNumber": "NCT00287391",
"reportType": "Clinical trial registration",
"shortTitle": "Sleep Disorders and Gastroesophageal Reflux Disease (GERD)",
"url": "https://clinicaltrials.gov/study/NCT00287391",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://clinicaltrials.gov/study/NCT04261517?recrs=e&cond=COVID&draw=2",
"items": [
{
"itemType": "report",
"title": "Efficacy and Safety of Hydroxychloroquine for Treatment of COVID-19",
"creators": [
{
"firstName": "Hongzhou",
"lastName": "Lu",
"creatorType": "author"
},
{
"lastName": "Shanghai Public Health Clinical Center",
"creatorType": "contributor",
"fieldMode": 1
}
],
"date": "April 9, 2020",
"abstractNote": "The study aims to evaluate the efficacy and safety of hydroxychloroquine in the treatment of COVID-19 pneumonia.",
"extra": "submitted: February 6, 2020",
"institution": "clinicaltrials.gov",
"libraryCatalog": "clinicaltrials.gov",
"reportNumber": "NCT04261517",
"reportType": "Clinical trial registration",
"url": "https://clinicaltrials.gov/study/NCT04261517",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://classic.clinicaltrials.gov/ct2/show/NCT04292899",
"items": [
{
"itemType": "report",
"title": "A Phase 3 Randomized Study to Evaluate the Safety and Antiviral Activity of Remdesivir (GS-5734™) in Participants With Severe COVID-19",
"creators": [
{
"lastName": "Gilead Sciences",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "December 15, 2020",
"abstractNote": "The primary objective of this study is to evaluate the efficacy of 2 remdesivir (RDV) regimens with respect to clinical status assessed by a 7-point ordinal scale on Day 14.",
"extra": "submitted: February 28, 2020",
"institution": "clinicaltrials.gov",
"libraryCatalog": "clinicaltrials.gov",
"reportNumber": "NCT04292899",
"reportType": "Clinical trial registration",
"shortTitle": "Study to Evaluate the Safety and Antiviral Activity of Remdesivir (GS-5734™) in Participants With Severe Coronavirus Disease (COVID-19)",
"url": "https://clinicaltrials.gov/study/NCT04292899",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.clinicaltrials.gov/search?term=transgender%20care",
"defer": true,
"items": "multiple"
},
{
"type": "web",
"url": "https://classic.clinicaltrials.gov/ct2/results?cond=Coronavirus+Disease+2019&term=&cntry=&state=&city=&dist=&Search=Search",
"defer": true,
"items": "multiple"
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://www\.ipcc\.ch/report//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek and contributors
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
let report6Wg1Editors = 'Valérie Masson-Delmotte; Panmao Zhai; Anna Pirani; Sarah L. Connors; Clotilde Péan; Sophie Berger; Nada Caud; Yang Chen; Leah Goldfarb; Melissa I. Gomis; Mengtian Huang; Katherine Leitzell; Elisabeth Lonnoy; J. B. Robin Matthews; Thomas K. Maycock; Tim Waterfield; Özge Yelekçi; Rong Yu; Botao Zhou'
.split('; ').map(name => ZU.cleanAuthor(name, 'editor', name.includes(', ')));
let report6Wg1TechSummaryAuthors = 'Paola A. Arias; Nicolas Bellouin; Erika Coppola; Richard G. Jones; Gerhard Krinner; Jochem Marotzke; Vaishali Naik; Matthew D. Palmer; Gian-Kasper Plattner; Joeri Rogelj; Maisa Rojas; Jana Sillmann; Trude Storelvmo; Peter W. Thorne; Blair Trewin; Krishna M. Achutarao; Bhupesh Adhikary; Richard P. Allan; Kyle Armour; Govindasamy Bala; Rondrotiana Barimalala; Sophie Berger; Josep G. Canadell; Christophe Cassou; Annalisa Cherchi; William Collins; William D. Collins; Sarah L. Connors; Susanna Corti; Faye A. Cruz; Frank J. Dentener; Claudine Dereczynski; Di Luca, Alejandro; Aïda Diongue-Niang; Francisco J. Doblas-Reyes; Alessandro Dosio; Hervé Douville; François Engelbrecht; Veronika Eyring; Erich Fischer; Piers Forster; Baylor Fox-Kemper; Jan S. Fuglestvedt; John C. Fyfe; Nathan P. Gillett; Leah Goldfarb; Irina V. Gorodetskaya; José Manuel Gutiérrez; Rafiq Hamdi; Ed Hawkins; Helene T. Hewitt; Pandora Hope; Akm Saiful Islam; Christopher Jones; Darrell S. Kaufman; Robert E. Kopp; Yu Kosaka; James Kossin; Svitlana Krakovska; June-Yi Lee; Jian Li; Thorsten Mauritsen; Thomas K. Maycock; Malte Meinshausen; Seung-Ki Min; Scheel Monteiro, Pedro; Thanh Ngo-Duc; Friederike Otto; Izidine Pinto; Anna Pirani; Krishnan Raghavan; Roshanka Ranasinghe; Alex C. Ruane; Lucas Ruiz; Jean-Baptiste Sallée; Bjørn H. Samset; Shubha Sathyendranath; Sonia I. Seneviratne; Anna A. Sörensson; Sophie Szopa; Izuru Takayabu; Anne-Marie Treguier; Bart van den Hurk; Robert Vautard; von Schuckmann, Karina; Sönke Zaehle; Xuebin Zhang; Kirsten Zickfeld'
.split('; ').map(name => ZU.cleanAuthor(name, 'author', name.includes(', ')));
let report6Wg1Ch1Authors = 'Deliang Chen; Maisa Rojas; Bjørn H. Samset; Kim Cobb; Aïda Diongue-Niang; Paul Edwards; Seita Emori; Sergio Henrique Faria; Ed Hawkins; Pandora Hope; Philippe Huybrechts; Malte Meinshausen; Sawsan K. Mustafa; Gian-Kasper Plattner; Anne Marie Tréguier'
.split('; ').map(name => ZU.cleanAuthor(name, 'author', name.includes(', ')));
let report6Wg1Ch2Authors = 'Sergey K. Gulev; Peter W. Thorne; Jinho Ahn; Frank J. Dentener; Catia M. Domingues; Sebastian Gerland; Daoyi Gong; Darrell S. Kaufman; Hyacinth C. Nnamchi; Johannes Quaas; Juan Antonio Rivera; Shubha Sathyendranath; Sharon L. Smith; Blair Trewin; von Shuckmann, Karina; Russell S. Vose'
.split('; ').map(name => ZU.cleanAuthor(name, 'author', name.includes(', ')));
let report6Wg1Ch3Authors = 'Veronika Eyring; Nathan P. Gillett; Krishna M. Achutarao; Rondrotiana Barimalala; Barreiro Parrillo, Marcelo; Nicolas Bellouin; Christophe Cassou; Paul J. Durack; Yu Kosaka; Shayne McGregor; Seung-Ki Min; Olaf Morgenstern; Ying Sun'
.split('; ').map(name => ZU.cleanAuthor(name, 'author', name.includes(', ')));
let report6Wg1Ch4Authors = 'June-Yi Lee; Jochem Marotzke; Govindasamy Bala; Long Cao; Susanna Corti; John P. Dunne; François Engelbrecht; Erich Fischer; John C. Fyfe; Christopher Jones; Amanda Maycock; Joseph Mutemi; Ousman Ndiaye; Swapna Panickal; Tianjun Zhou'
.split('; ').map(name => ZU.cleanAuthor(name, 'author', name.includes(', ')));
let report6Wg1Ch5Authors = 'Josep G. Canadell; Scheel Monteiro, Pedro; Marcos H. Costa; Cotrim da Cunha, Leticia; Peter M. Cox; Alexey V. Eliseev; Stephanie Henson; Masao Ishii; Samuel Jaccard; Charles Koven; Annalea Lohila; Prabir K. Patra; Shilong Piao; Joeri Rogelj; Stephen Syampungani; Sönke Zaehle; Kirsten Zickfeld'
.split('; ').map(name => ZU.cleanAuthor(name, 'author', name.includes(', ')));
let report6Wg1Ch6Authors = 'Vaishali Naik; Sophie Szopa; Bhupesh Adhikary; Artaxo Netto, Paulo Eduardo; Terje Berntsen; William D. Collins; Sandro Fuzzi; Laura Gallardo; Astrid Kiendler-Scharr; Zbigniew Klimont; Hong Liao; Nadine Unger; Prodromos Zanis'
.split('; ').map(name => ZU.cleanAuthor(name, 'author', name.includes(', ')));
let report6Wg1Ch7Authors = 'Piers Forster; Trude Storelvmo; Kyle Armour; William Collins; Jean-Luis Dufresne; David Frame; Daniel J. Lunt; Thorsten Mauritsen; Matthew D. Palmer; Masahiro Watanabe; Martin Wild; Xuebin Zhang'
.split('; ').map(name => ZU.cleanAuthor(name, 'author', name.includes(', ')));
let report6Wg1Ch8Authors = 'Hervé Douville; Krishnan Raghavan; James A. Renwick; Richard P. Allan; Paola A. Arias; M. Barlow; Cerezo Mota, Ruth; Annalisa Cherchi; Thian Yew Gan; Joelle Gergis; Dabang Jiang; Asif Khan; Pokam Mba, Wilfried; Daniel Rosenfeld; Jessica Tierney; Olga Zolina'
.split('; ').map(name => ZU.cleanAuthor(name, 'author', name.includes(', ')));
let report6Wg1Ch9Authors = 'Baylor Fox-Kemper; Helene T. Hewitt; Cunde Xiao; Guðfinna Aðalgeirsdóttir; Sybren S. Drijfhout; Tamsin L. Edwards; Nicholas R. Golledge; Mark Hemer; Robert E. Kopp; Gerhard Krinner; Alan Mix; Dirk Notz; Sophie Nowicki; Intan S. Nurhati; Lucas Ruiz; Jean-Baptiste Sallée; Aimée B. A. Slangen; Yongqiang Yu'
.split('; ').map(name => ZU.cleanAuthor(name, 'author', name.includes(', ')));
let report6Wg1Ch10Authors = 'Francisco J. Doblas-Reyes; Anna A. Sörensson; M. Almazroui; Alessandro Dosio; William J. Gutowski; Rein Haarsma; Rafiq Hamdi; Bruce Hewitson; Won-Tae Kwon; Benjamin L. Lamptey; Douglas Maraun; Tannecia S. Stephenson; Izuru Takayabu; Laurent Terray; Andrew Turner; Zhiyan Zuo'
.split('; ').map(name => ZU.cleanAuthor(name, 'author', name.includes(', ')));
let report6Wg1Ch11Authors = 'Sonia I. Seneviratne; Xuebin Zhang; M. Adnan; W. Badi; Claudine Dereczynski; Di Luca, Alejandro; S. Ghosh; Iskhaq Iskandar; James Kossin; Sophie Lewis; Friederike Otto; Izidine Pinto; Masaki Satoh; Sergio M. Vicente-Serrano; Michael Wehner; Botao Zhou'
.split('; ').map(name => ZU.cleanAuthor(name, 'author', name.includes(', ')));
let report6Wg1Ch12Authors = 'Roshanka Ranasinghe; Alex C. Ruane; Robert Vautard; Nigel Arnell; Erika Coppola; Faye A. Cruz; Suraje Dessai; Akm Saiful Islam; Mohammad Rahimi; Ruiz Carrascal, Daniel; Jana Sillmann; Mouhamadou Bamba Sylla; Claudia Tebaldi; Wen Wang; Rashyd Zaaboul'
.split('; ').map(name => ZU.cleanAuthor(name, 'author', name.includes(', ')));
let report6Wg1AtlasAuthors = 'José Manuel Gutiérrez; Richard G. Jones; Gemma Teresa Narisma; Muniz Alves, Lincoln; Muhammad Amjad; Irina V. Gorodetskaya; Michael Grose; Nana Ama Browne Klutse; Svitlana Krakovska; Jian Li; Daniel Martínez-Castro; Linda O. Mearns; Sebastian H. Mernild; Thanh Ngo-Duc; van den Hurk, Bart; Jin-Ho Yoon'
.split('; ').map(name => ZU.cleanAuthor(name, 'author', name.includes(', ')));
let report6Wg2Editors = 'Hans-Otto Pörtner; Debra Cynthia Roberts; Melinda M.B. Tignor; Elvira S. Poloczanska; Katja Mintenbeck; Andrès Alegría; Marlies Craig; Stefanie Langsdorf; Sina Löschke; Vincent Möller; Andrew Okem; Bardhyl Rama'
.split('; ').map(name => ZU.cleanAuthor(name, 'editor', name.includes(', ')));
let report6Wg2TechSummaryAuthors = 'Hans-Otto Pörtner; Debra Cynthia Roberts; Helen Adams; Ibidun Adelekan; Carolina Adler; Rita Adrian; Paulina Aldunce; Elham Ali; Rawshan Ara Begum; Birgit Bednar-Friedl; Bezner Kerr, Rachel; Robbert Biesbroek; Joern Birkmann; Kathryn Bowen; Martina Angela Caretta; Jofre Carnicer; Edwin Castellanos; Tae Sung Cheong; Winston Chow; Gueladio Cissé; Susan Clayton; Andrew Constable; Sarah Cooley; Mark John Costello; Marlies Craig; Wolfgang Cramer; Richard Dawson; David Dodman; Jackson Efitre; Matthias Garschagen; Elisabeth Gilmore; Bruce Glavovic; David Gutzler; Marjolin Haasnoot; Sherilee Harper; Toshihiro Hasegawa; Bronwyn Hayward; Jeffrey A. Hicke; Yukihiko Hirabayashi; Cunrui Huang; Kanungwe Kalaba; Wolfgang Kiessling; Akio Kitoh; Rodel Lasco; Judy Lawrence; Maria Fernanda Lemos; Robert Lempert; Christopher Lennard; Deborah Ley; Tabea Lissner; Qiyong Liu; Emma Liwenga; Salvador Lluch-Cota; Sina Löschke; Simone Lucatello; Yong Luo; Brendan Mackey; Katja Mintenbeck; Alisher Mirzabaev; Vincent Möller; Mariana Moncassim Vale; Mike D. Morecroft; Linda Mortsch; Aditi Mukherji; Tero Mustonen; Michelle Mycoo; Johanna Nalau; Mark New; Andrew Okem; Jean Pierre Ometto; Brian O’Neill; Rajiv Pandey; Camille Parmesan; Mark Pelling; Patricia Fernanda Pinho; John Pinnegar; Elvira S. Poloczanska; Anjal Prakash; Benjamin Preston; Marie-Fanny Racault; Diana Reckien; Aromar Revi; Steven K. Rose; E. Lisa F. Schipper; Daniela N. Schmidt; David Schoeman; Rajib Shaw; Nicholas P. Simpson; Chandni Singh; William Solecki; Lindsay Stringer; Edmond Totin; Christopher Trisos; Yongyut Trisurat; Maarten van Aalst; David Viner; Morgan Wairu; Rachel Warren; Philippus Wester; David Wrathall; Zelina Zaiton Ibrahim'
.split('; ').map(name => ZU.cleanAuthor(name, 'author', name.includes(', ')));
let report6Wg2Ch1Authors = 'Rawshan Ara Begum; Robert Lempert; Elham Ali; Tor Arve Benjaminsen; Thomas Bernauer; Wolfgang Cramer; Xuefeng Cui; Katharine Mach; Gustavo Nagy; Nils Christian Stenseth: Raman Sukumar; Philippus Wester'
.split('; ').map(name => ZU.cleanAuthor(name, 'author', name.includes(', ')));
let report6Wg2Ch2Authors = 'Camille Parmesan; Mike D. Morecroft; Yongyut Trisurat; Rita Adrian; Gusti Zakaria Anshari; Almut Arneth; Qingzhu Gao; Patrick Gonzalez; Rebecca Harris; Jeff Price; Nicola Stevens; Gautam Hirak Talukdar'
.split('; ').map(name => ZU.cleanAuthor(name, 'author', name.includes(', ')));
let report6Wg2Ch3Authors = 'Sarah Cooley; David Schoeman; Laurent Bopp; Philip Boyd; Simon Donner; Shin-Ichi Ito; Wolfgang Kiessling; Paulina Martinetto; Elena Ojea; Marie-Fanny Racault; Björn Rost; Mette Skern-Mauritzen; Dawit Yemane Ghebrehiwet'
.split('; ').map(name => ZU.cleanAuthor(name, 'author', name.includes(', ')));
let report6Wg2Ch4Authors = 'Martina Angela Caretta; Aditi Mukherji; Md Arfanuzzaman; Richard A. Betts; Alexander Gelfan; Yukiko Hirabayashi; Tabea Katharina Lissner; Lopez Gunn, Elena; Junguo Liu; Ruth Morgan; Sixbert Mwanga; Seree Supratid'
.split('; ').map(name => ZU.cleanAuthor(name, 'author', name.includes(', ')));
let report6Wg2Ch5Authors = 'Bezner Kerr, Rachel; Toshihiro Hasegawa; Rodel Lasco; Indra Bhatt; Delphine Deryng; Aidan Farrell; Helen Gurney-Smith; Hui Ju; Salvador Lluch-Cota; Francisco Meza; Gerald Nelson; Henry Neufeldt; Philip Thornton'
.split('; ').map(name => ZU.cleanAuthor(name, 'author', name.includes(', ')));
let report6Wg2Ch6Authors = 'David Dodman; Bronwyn Hayward; Mark Pelling; Vanesa Castán Broto; Winston Chow; Eric Chu; Richard Dawson; Luna Khirfan; Timon McPhearson; Anjal Prakash; Yan Zheng; Gina Ziervogel'
.split('; ').map(name => ZU.cleanAuthor(name, 'author', name.includes(', ')));
let report6Wg2Ch7Authors = 'Guéladio Cissé; Robert McLeman; Helen Adams; Paulina Aldunce; Kathryn Bowen; Diarmid Campbell-Lendrum; Susan Clayton; Kristie L. Ebi; Jeremy Hess; Cunrui Huang; Qiyong Liu; Glenn McGregor; Jan Semenza; Maria Cristina Tirado'
.split('; ').map(name => ZU.cleanAuthor(name, 'author', name.includes(', ')));
let report6Wg2Ch8Authors = 'Joern Birkmann; Emma Liwenga; Rajiv Pandey; Emily Boyd; Riyanti Djalante; François Gemenne; Walter Leal Filho; Patricia Fernanda Pinho; Lindsay Stringer; David Wrathall'
.split('; ').map(name => ZU.cleanAuthor(name, 'author', name.includes(', ')));
let report6Wg2Ch9Authors = 'Christopher H. Trisos; Ibidun O. Adelekan; Edmond Totin; Ayansina Ayanlade; Jackson Efitre; Adugna Gemeda; Kanungwe Kalaba; Christopher Lennard; Catherine Masao; Yunus Mgaya; Grace Ngaruiya; Daniel Olago; Nicholas P. Simpson; Sumaya Zakieldeen'
.split('; ').map(name => ZU.cleanAuthor(name, 'author', name.includes(', ')));
let report6Wg2Ch10Authors = 'Rajib Shaw; Yong Luo; Tae Sung Cheong; Abdul Halim, Sharina; Sanjay Chaturvedi; Masahiro Hashizume; Gregory E. Insarov; Yoichi Ishikawa; Mostafa Jafari; Akio Kitoh; Juan Pulhin; Chandni Singh; Kripa Vasant; Zhibin Zhang'
.split('; ').map(name => ZU.cleanAuthor(name, 'author', name.includes(', ')));
let report6Wg2Ch11Authors = 'Judy Lawrence; Brendan Mackey; Francis Chiew; Mark J. Costello; Kevin Hennessy; Nina Lansbury; Uday Bhaskar Nidumolu; Gretta Pecl; Lauren Rickards; Nigel Tapper; Alistair Woodward; Anita Wreford'
.split('; ').map(name => ZU.cleanAuthor(name, 'author', name.includes(', ')));
let report6Wg2Ch12Authors = 'Edwin J. Castellanos; Maria Fernanda Lemos; Laura Astigarraga; Noemí Chacón; Nicolás Cuvi; Christian Huggel; Liliana Miranda; Mariana Moncassim Vale; Jean Pierre Ometto; Pablo L. Peri; Julio C. Postigo; Laura Ramajo; Lisandro Roco; Matilde Rusticucci'
.split('; ').map(name => ZU.cleanAuthor(name, 'author', name.includes(', ')));
let report6Wg2Ch13Authors = 'Birgit Bednar-Friedl; Robbert Biesbroek; Daniela N. Schmidt; Peter Alexander ; Knut Yngve Børsheim; Jofre Carnicer; Elena Georgopoulou; Marjolijn Haasnoot; Le Cozannet, Gonéri; Piero Lionello; Oksana Lipka; Christian Möllmann; Veruska Muccione; Tero Mustonen; Dieter Piepenburg; Lorraine Whitmarsh'
.split('; ').map(name => ZU.cleanAuthor(name, 'author', name.includes(', ')));
let report6Wg2Ch14Authors = 'Jeffrey A. Hicke; Simone Lucatello; Linda D. Mortsch; Jackie Dawson; Domínguez Aguilar, Mauricio; Carolyn A.F. Enquist; Elisabeth A. Gilmore; David S. Gutzler; Sherilee Harper; Kirstin Holsman; Elizabeth B. Jewett; Timothy A. Kohler; Kathleen Miller'
.split('; ').map(name => ZU.cleanAuthor(name, 'author', name.includes(', ')));
let report6Wg2Ch15Authors = 'Michelle Mycoo; Morgan Wairiu; Donovan Campbell; Virginie Duvat; Yimnang Golbuu; Shobha Maharaj; Johanna Nalau; Patrick Nunn; John Pinnegar; Olivia Warrick'
.split('; ').map(name => ZU.cleanAuthor(name, 'author', name.includes(', ')));
let report6Wg2Ch16Authors = 'Brian O\'Neill; van Aalst, Maarten; Zelina Zaiton Ibrahim; Berrang Ford, Lea; Suruchi Bhadwal; Halvard Buhaug; Delavane Diaz; Katja Frieler; Matthias Garschagen; Alexandre Magnan; Guy Midgley; Alisher Mirzabaev; Adelle Thomas; Rachel Warren'
.split('; ').map(name => ZU.cleanAuthor(name, 'author', name.includes(', ')));
let report6Wg2Ch17Authors = 'Mark New; Diana Reckien; David Viner; Carolina Adler; So-Min Cheong; Cecilia Conde; Andrew Constable; Coughlan de Perez, Erin; Annamaria Lammel; Reinhard Mechler; Ben Orlove; William Solecki'
.split('; ').map(name => ZU.cleanAuthor(name, 'author', name.includes(', ')));
let report6Wg2Ch18Authors = 'E. Lisa F. Schipper; Aromar Revi; Benjamin L. Preston; Edward. R. Carr; Siri H. Eriksen; Luis R. Fernández-Carril; Bruce Glavovic; Nathalie J.M. Hilmi; Debora Ley; Rupa Mukerji; M. Silvia Muylaert de Araujo; Rosa Perez; Steven K. Rose; Pramod K. Singh'
.split('; ').map(name => ZU.cleanAuthor(name, 'author', name.includes(', ')));
let report6Wg3Editors = "Priyadarshi R. Shukla; Jim Skea; Raphael Slade; Al Khourdajie, Alaa; van Diemen, Renée; David McCollum; Minal Pathak; Shreya Some; Purvi Vyas; Roger Fradera; Malek Belkacemi; Apoorva Hasija; Géninha Lisboa; Sigourney Luz; Juliette Malley"
.split('; ').map(name => ZU.cleanAuthor(name, 'editor', name.includes(', ')));
let report6Wg3SFPAuthors = "Jim Skea; Priyadarshi R. Shukla; Andy Reisinger; Raphael Slade; Minal Pathak; Al Khourdajie, Alaa; van Diemen, Renée; Amjad Abdulla; Keigo Akimoto; Mustafa Babiker; Quan Bai; Igor A. Bashmakov; Christopher Bataille; Göran Berndes; Gabriel Blanco; Kornelis Blok; Mercedes Bustamante; Edward Byers; Luisa F. Cabeza; Katherine Calvin; Carlo Carraro; Leon Clarke; Annette Cowie; Felix Creutzig; Diriba Korecha Dadi; Dipak Dasgupta; de Coninck, Heleen; Fatima Denton; Shobhakar Dhakal; Navroz K. Dubash; Oliver Geden; Michael Grubb; Céline Guivarch; Shreekant Gupta; Andrea N. Hahmann; Kirsten Halsnaes; Paulina Jaramillo; Kejun Jiang; Frank Jotzo; Tae Yong Jung; Kahn Ribeiro, Suzana; Smail Khennas; Şiir Kılkış; Silvia Kreibiehl; Volker Krey; Elmar Kriegler; William F. Lamb; Franck Lecocq; Shuaib Lwasa; Nagmeldin Mahmoud; Cheikh Mbow; David McCollum; Jan Christoph Minx; Catherine Mitchell; Rachid Mrabet; Yacob Mulugetta; Gert-Jan Nabuurs; Gregory F. Nemet; Peter Newman; Leila Niamir; Lars J. Nilsson; Sudarmanto Budi Nugroho; Chukwumerije Okereke; Shonali Pachauri; Anthony Patt; Ramón Pichs-Madruga; Joana Portugal-Pereira; Lavanya Rajamani; Keywan Riahi; Joyashree Roy; Yamina Saheb; Roberto Schaeffer; Karen C. Seto; Shreya Some; Linda Steg; Ferenc L. Toth; Diana Ürge-Vorsatz; van Vuuren, Detlef P.; Elena Verdolini; Purvi Vyas; Yi-Ming Wei; Mariama Williams; Harald Winkler"
.split('; ').map(name => ZU.cleanAuthor(name, 'author', name.includes(', ')));
let report6Wg3TechSummaryAuthors = "Minal Pathak; Raphael Slade; Ramón Pichs-Madruga; Diana Ürge-Vorsatz; Priyadarshi R. Shukla; Jim Skea; Amjad Abdulla; Al Khourdajie, Alaa; Mustafa Babiker; Quan Bai; Igor A. Bashmakov; Christopher Bataille; Göran Berndes; Gabriel Blanco; Luisa F. Cabeza; Carlo Carraro; Leon Clarke; de Coninck, Heleen; Felix Creutzig; Diriba Korecha Dadi; Fatima Denton; Shobhakar Dhakal; van Diemen, Renée; Navroz K. Dubash; Amit Garg; Oliver Geden; Michael Grubb; Céline Guivarch; Kirsten Halsnaes; Paulina Jaramillo; Tae Yong Jung; Kahn Ribeiro, Suzana; Şiir Kılkış; Alexandre Koberle; Silvia Kreibiehl; Elmar Kriegler; William F. Lamb; Franck Lecocq; Shuaib Lwasa; Nagmeldin Mahmoud; Eric Masanet; David McCollum; Jan Christoph Minx; Catherine Mitchell; Kanako Morita; Rachid Mrabet; Gert-Jan Nabuurs; Peter Newman; Leila Niamir; Lars J. Nilsson; Chukwumerije Okereke; Anthony Patt; Joana Portugal-Pereira; Lavanya Rajamani; Andy Reisinger; Keywan Riahi; Joyashree Roy; Ambuj Sagar; Yamina Saheb; Roberto Schaeffer; Karen C. Seto; Pete Smith; Shreya Some; Benjamin K. Sovacool; Linda Steg; Massimo Tavoni; Ferenc L. Toth; Purvi Vyas; Yi-Ming Wei; Jake Whitehead; Thomas Wiedmann; Harald Winkler"
.split('; ').map(name => ZU.cleanAuthor(name, 'author', name.includes(', ')));
let report6Wg3Ch1Authors = "Michael Grubb; Chukwumerije Okereke; Jun Arima; Valentina Bosetti; Ying Chen; James Edmonds; Shreekant Gupta; Alexandre Köberle; Snorre Kverndokk; Arunima Malik; Linda Yanti Sulistiawati"
.split('; ').map(name => ZU.cleanAuthor(name, 'author', name.includes(', ')));
let report6Wg3Ch2Authors = "Shobhakar Dhakal; Jan Christoph Minx; Ferenc L. Toth; Amr Abdel-Aziz; Figueroa Meza, Maria Josefina; Klaus Hubacek; Inge G.C. Jonckheere; Yong-Gun Kim; Gregory F. Nemet; Shonali Pachauri; Xianchun C. Tan; Thomas Wiedmann"
.split('; ').map(name => ZU.cleanAuthor(name, 'author', name.includes(', ')));
let report6Wg3Ch3Authors = "Keywan Riahi; Roberto Schaeffer; Jacobo Arango; Katherine Calvin; Céline Guivarch; Tomoko Hasegawa,; Kejun Jiang; Elmar Kriegler; Robert Matthews; Glen P. Peters; Anand Rao; Simon Robertson; Adam Mohammed Sebbit; Julia Steinberger; Massimo Tavoni; van Vuuren, Detlef P."
.split('; ').map(name => ZU.cleanAuthor(name, 'author', name.includes(', ')));
let report6Wg3Ch4Authors = "Franck Lecocq; Harald Winkler; Julius Partson Daka; Sha Fu; James S. Gerber; Sivan Kartha; Volker Krey; Hans Lofgren; Toshihiko Masui; Ritu Mathur; Joana Portugal-Pereira; Benjamin K. Sovacool; Maria Virginia Vilariño; Nan Zhou"
.split('; ').map(name => ZU.cleanAuthor(name, 'author', name.includes(', ')));
let report6Wg3Ch5Authors = "Felix Creutzig; Joyashree Roy; Patrick Devine-Wright; Julio Díaz-José; Frank W. Geels; Arnulf Grubler; Nadia Maïzi; Eric Masanet; Yacob Mulugetta; Chioma Daisy Onyige; Patricia E. Perkins; Alessandro Sanches-Pereira; Elke Ursula Weber"
.split('; ').map(name => ZU.cleanAuthor(name, 'author', name.includes(', ')));
let report6Wg3Ch6Authors = "Leon Clarke; Yi-Ming Wei; De La Vega Navarro, Angel; Amit Garg; Andrea N. Hahmann; Smail Khennas; Lima de Azevedo, Inês Margarida; Andreas Löschel; Ajay Kumar Singh; Linda Steg; Goran Strbac; Kenichi Wada"
.split('; ').map(name => ZU.cleanAuthor(name, 'author', name.includes(', ')));
let report6Wg3Ch7Authors = "Gert-Jan Nabuurs; Rachid Mrabet; Abu Hatab, Assem; Mercedes Bustamante; Harry Clark; Petr Havlík; Joanna I. House; Cheikh Mbow; Karachepone N. Ninan; Alexander Popp; Stephanie Roe; Brent Sohngen; Sirintornthep Towprayoon"
.split('; ').map(name => ZU.cleanAuthor(name, 'author', name.includes(', ')));
let report6Wg3Ch8Authors = "Shuaib Lwasa; Karen C. Seto; Xuemei Bai; Hilda Blanco; Kevin R. Gurney; Şiir Kılkış; Oswaldo Lucon; Jin Murakami; Jiahua Pan; Ayyoob Sharifi; Yoshiki Yamagata"
.split('; ').map(name => ZU.cleanAuthor(name, 'author', name.includes(', ')));
let report6Wg3Ch9Authors = "Luisa F. Cabeza; Quan Bai; Paolo Bertoldi; Jacob M. Kihila; André F.P. Lucena; Érika Mata; Sebastian Mirasgedis; Aleksandra Novikova; Yamina Saheb"
.split('; ').map(name => ZU.cleanAuthor(name, 'author', name.includes(', ')));
let report6Wg3Ch10Authors = "Paulina Jaramillo; Kahn Ribeiro, Suzana; Peter Newman; Subash Dhar; Ogheneruona E. Diemuodeke; Tsutomu Kajino; David Simon Lee; Sudarmanto Budi Nugroho; Xunmin Ou; Anders Hammer Strømman; Jake Whitehead"
.split('; ').map(name => ZU.cleanAuthor(name, 'author', name.includes(', ')));
let report6Wg3Ch11Authors = "Igor A. Bashmakov; Lars J. Nilsson; Adolf Acquaye; Christopher Bataille; Jonathan M. Cullen; de la Rue du Can, Stéphane; Manfred Fischedick; Yong Geng; Kanako Tanaka"
.split('; ').map(name => ZU.cleanAuthor(name, 'author', name.includes(', ')));
let report6Wg3Ch12Authors = "Mustafa Babiker; Göran Berndes; Kornelis Blok; Brett Cohen; Annette Cowie; Oliver Geden; Veronika Ginzburg; Adrian Leip; Pete Smith; Masahiro Sugiyama; Francis Yamba"
.split('; ').map(name => ZU.cleanAuthor(name, 'author', name.includes(', ')));
let report6Wg3Ch13Authors = "Navroz K. Dubash; Catherine Mitchell; Elin Lerum Boasson; Mercy J. Borbor-Córdova; Solomone Fifita; Erik Haites; Mark Jaccard; Frank Jotzo; Sasha Naidoo; Patricia Romero-Lankao; Wei Shen; Mykola Shlapak; Libo Wu"
.split('; ').map(name => ZU.cleanAuthor(name, 'author', name.includes(', ')));
let report6Wg3Ch14Authors = "Anthony Patt; Lavanya Rajamani; Preety Bhandari; Antonina Ivanova Boncheva; Alejandro Caparrós; Kamal Djemouai; Izumi Kubota; Jacqueline Peel; Agus Pratama Sari; Detlef F. Sprinz; Jørgen Wettestad"
.split('; ').map(name => ZU.cleanAuthor(name, 'author', name.includes(', ')));
let report6Wg3Ch15Authors = "Silvia Kreibiehl; Tae Yong Jung; Stefano Battiston; Carvajal Sarzosa, Pablo Esteban; Christa Clapp; Dipak Dasgupta; Nokuthula Dube; Raphaël Jachnik; Kanako Morita; Nahla Samargandi; Mariama Williams"
.split('; ').map(name => ZU.cleanAuthor(name, 'author', name.includes(', ')));
let report6Wg3Ch16Authors = "Gabriel Blanco; de Coninck, Heleen; Lawrence Agbemabiese; El Hadji Mbaye Diagne; Diaz Anadon, Laura; Yun Seng Lim; Walter Alberto Pengue; Ambuj D. Sagar; Taishi Sugiyama; Kenji Tanaka; Elena Verdolini; Jan Witajewski-Baltvilks"
.split('; ').map(name => ZU.cleanAuthor(name, 'author', name.includes(', ')));
let report6Wg3Ch17Authors = "Fatima Denton; Kirsten Halsnæs; Keigo Akimoto; Sarah Burch; Diaz Morejon, Cristobal; Fernando Farias; Joni Jupesta; Ali Shareef; Petra Schweizer-Ries; Fei Teng; Eric Zusman"
.split('; ').map(name => ZU.cleanAuthor(name, 'author', name.includes(', ')));
let report6Wg3Annex1Authors = "van Diemen, Renée; J.B. Robin Matthews; Vincent Möller; Jan S. Fuglestvedt; Valérie Masson-Delmotte; Carlos Méndez; Andy Reisinger; Sergey Semenov"
.split('; ').map(name => ZU.cleanAuthor(name, 'author', name.includes(', ')));
let report6Wg3Annex2Authors = "Al Khourdajie, Alaa; van Diemen, Renée; William F. Lamb; Minal Pathak; Andy Reisinger; de la Rue du Can, Stéphane; Jim Skea; Raphael Slade; Shreya Some; Linda Steg"
.split('; ').map(name => ZU.cleanAuthor(name, 'author', name.includes(', ')));
let report6Wg3Annex3Authors = "Céline Guivarch; Elmar Kriegler; Joana Portugal-Pereira, Valentina Bosetti; James Edmonds; Manfred Fischedick; Petr Havlík; Paulina Jaramillo; Volker Krey; Franck Lecocq; André F.P. Lucena; Malte Meinshausen; Sebastian Mirasgedis; Brian O’Neill; Glen P. Peters; Joeri Rogelj; Steven Rose; Yamina Saheb; Goran Strbac; Anders Hammer Strømman; van Vuuren, Detlef P.; Nan Zhou"
.split('; ').map(name => ZU.cleanAuthor(name, 'author', name.includes(', ')));
function wg1Chapter(slug, itemTemplate) {
return Object.assign(new Zotero.Item('bookSection'), itemTemplate, {
bookTitle: 'Climate Change 2021: The Physical Science Basis. Contribution of Working Group I to the Sixth Assessment Report of the Intergovernmental Panel on Climate Change',
publisher: 'Cambridge University Press',
place: 'Cambridge, United Kingdom and New York, NY, USA',
date: '2021',
DOI: '10.1017/9781009157896.001',
creators: [...(itemTemplate.creators || []), ...report6Wg1Editors],
attachments: [
{
title: 'Full Text PDF',
mimeType: 'application/pdf',
url: `https://www.ipcc.ch/report/ar6/wg1/downloads/report/IPCC_AR6_WGI_${slug}.pdf`
}
]
});
}
function wg2Chapter(slug, itemTemplate) {
return Object.assign(new Zotero.Item('bookSection'), itemTemplate, {
bookTitle: 'Climate Change 2022: Impacts, Adaptation and Vulnerability. Contribution of Working Group II to the Sixth Assessment Report of the Intergovernmental Panel on Climate Change',
publisher: 'Cambridge University Press',
date: '2022',
creators: [...(itemTemplate.creators || []), ...report6Wg2Editors],
attachments: [
{
title: 'Full Text PDF',
mimeType: 'application/pdf',
url: `https://www.ipcc.ch/report/ar6/wg2/downloads/report/IPCC_AR6_WGII_${slug}.pdf`
}
]
});
}
function wg3Chapter(slug, itemTemplate) {
return Object.assign(new Zotero.Item('bookSection'), itemTemplate, {
bookTitle: 'Climate Change 2022: Mitigation of Climate Change. Contribution of Working Group III to the Sixth Assessment Report of the Intergovernmental Panel on Climate Change',
publisher: 'Cambridge University Press',
place: "Cambridge, UK and New York, NY, USA",
date: '2022',
creators: [...(itemTemplate.creators || []), ...report6Wg3Editors],
attachments: [
{
title: 'Full Text PDF',
mimeType: 'application/pdf',
url: `https://www.ipcc.ch/report/ar6/wg3/downloads/report/IPCC_AR6_WGIII_${slug}.pdf`
}
]
});
}
let citations = {
'/report/ar6/wg1/': {
'Full Report': Object.assign(new Zotero.Item('book'), {
// yes, it's a report, but it's published like a book
title: 'Climate Change 2021: The Physical Science Basis. Contribution of Working Group I to the Sixth Assessment Report of the Intergovernmental Panel on Climate Change',
abstractNote: 'The Working Group I contribution to the Sixth Assessment Report addresses the most up-to-date physical understanding of the climate system and climate change, bringing together the latest advances in climate science, and combining multiple lines of evidence from paleoclimate, observations, process understanding, and global and regional climate simulations.',
publisher: 'Cambridge University Press',
place: 'Cambridge, United Kingdom and New York, NY, USA',
date: '2021',
DOI: '10.1017/9781009157896',
creators: report6Wg1Editors,
attachments: [
{
title: 'Full Text PDF',
mimeType: 'application/pdf',
url: 'https://www.ipcc.ch/report/ar6/wg1/downloads/report/IPCC_AR6_WGI_Full_Report.pdf'
}
]
}),
'Summary for Policymakers': wg1Chapter('SPM', {
title: 'Summary for policymakers',
pages: '3-32',
abstractNote: 'The Summary for Policymakers (SPM) provides a high-level summary of the understanding of the current state of the climate, including how it is changing and the role of human influence, and the state of knowledge about possible climate futures, climate information relevant to regions and sectors, and limiting human-induced climate change.'
}),
'Technical Summary': wg1Chapter('TS', {
title: 'Technical summary',
pages: '33-144',
abstractNote: 'The Technical Summary (TS) is designed to bridge between the comprehensive assessment of the Working Group I Chapters and its Summary for Policymakers (SPM). It is primarily built from the Executive Summaries of the individual chapters and atlas and provides a synthesis of key findings based on multiple lines of evidence.',
creators: report6Wg1TechSummaryAuthors
}),
'Chapter 1: Framing, context, methods': wg1Chapter('Chapter01', {
title: 'Framing, context, and methods',
pages: '147-286',
creators: report6Wg1Ch1Authors
}),
'Chapter 2: Changing state of the climate system': wg1Chapter('Chapter02', {
title: 'Changing state of the climate system',
pages: '287-422',
creators: report6Wg1Ch2Authors
}),
'Chapter 3: Human influence on the climate system': wg1Chapter('Chapter03', {
title: 'Human influence on the climate system',
pages: '423-552',
creators: report6Wg1Ch3Authors
}),
'Chapter 4: Future global climate: scenario-based projections and near-term information': wg1Chapter('Chapter04', {
title: 'Future global climate: scenario-based projections and near-term information',
pages: '553-672',
creators: report6Wg1Ch4Authors
}),
'Chapter 5: Global carbon and other biogeochemical cycles and feedbacks': wg1Chapter('Chapter05', {
title: 'Global carbon and other biogeochemical cycles and feedbacks',
pages: '673-816',
creators: report6Wg1Ch5Authors
}),
'Chapter 6: Short-lived climate forcers': wg1Chapter('Chapter06', {
title: 'Short-lived climate forcers',
pages: '817-922',
creators: report6Wg1Ch6Authors
}),
'Chapter 7: The Earth\'s energy budget, climate feedbacks, and climate sensitivity': wg1Chapter('Chapter07', {
title: 'The Earth\'s energy budget, climate feedbacks, and climate sensitivity',
pages: '923-1054',
creators: report6Wg1Ch7Authors
}),
'Chapter 8: Water cycle changes': wg1Chapter('Chapter08', {
title: 'Water cycle changes',
pages: '1055-1210',
creators: report6Wg1Ch8Authors
}),
'Chapter 9: Ocean, cryosphere, and sea level change': wg1Chapter('Chapter09', {
title: 'Ocean, cryosphere, and sea level change',
pages: '1211-1362',
creators: report6Wg1Ch9Authors
}),
'Chapter 10: Linking global to regional climate change': wg1Chapter('Chapter10', {
title: 'Linking global to regional climate change',
pages: '1363-1512',
creators: report6Wg1Ch10Authors
}),
'Chapter 11: Weather and climate extreme events in a changing climate': wg1Chapter('Chapter11', {
title: 'Weather and climate extreme events in a changing climate',
pages: '1513-1766',
creators: report6Wg1Ch11Authors
}),
'Chapter 12: Climate change information for regional impact and for risk assessment': wg1Chapter('Chapter12', {
title: 'Climate change information for regional impact and for risk assessment',
pages: '1767-1926',
creators: report6Wg1Ch12Authors
}),
Atlas: wg1Chapter('Atlas', {
title: 'Atlas',
pages: '1927-2058',
creators: report6Wg1AtlasAuthors,
url: 'https://interactive-atlas.ipcc.ch/'
}),
'Annex I Observational Products': wg1Chapter('AnnexI', {
title: 'Annex I: Observational products',
pages: '2061-2086',
// the IPCC's recommended citations call annex authors "editors,"
// but we'll call them authors so they show up before the section
// in the citation, separately from the book editors
creators: [ZU.cleanAuthor('Blair Trewin', 'author')]
}),
'Annex II Models': wg1Chapter('AnnexII', {
title: 'Annex II: Models',
pages: '2087-2138',
creators: [
ZU.cleanAuthor('José Manuel Gutiérrez', 'author'),
ZU.cleanAuthor('Anne-Marie Treguier', 'author')
]
}),
'Annex III Radiative Forcing': wg1Chapter('AnnexIII', {
title: 'Annex III: Tables of historical and projected well-mixed greenhouse gas mixing ratios and effective radiative forcing of all climate forcers',
pages: '2139-2152',
creators: [
ZU.cleanAuthor('Frank J. Dentener', 'author'),
ZU.cleanAuthor('B. Hall', 'author'),
ZU.cleanAuthor('Chris Smith', 'author')
]
}),
'Annex IV Modes of Variability': wg1Chapter('AnnexIV', {
title: 'Annex IV: Modes of variability',
pages: '2153-2192',
creators: [
ZU.cleanAuthor('Christophe Cassou', 'author'),
ZU.cleanAuthor('Annalisa Cherchi', 'author'),
ZU.cleanAuthor('Yu Kosaka', 'author')
]
}),
'Annex V Monsoons': wg1Chapter('AnnexV', {
title: 'Annex V: Monsoons',
pages: '2193-2204',
creators: [
ZU.cleanAuthor('Annalisa Cherchi', 'author'),
ZU.cleanAuthor('Andrew Turner', 'author')
]
}),
'Annex VI Climatic Impact-Driver and Extreme Indices': wg1Chapter('AnnexVI', {
title: 'Annex VI: Climatic impact-driver and extreme indices',
pages: '2205-2214',
creators: [
ZU.cleanAuthor('José Manuel Gutiérrez', 'author'),
ZU.cleanAuthor('Roshanka Ranasinghe', 'author'),
ZU.cleanAuthor('Alex C. Ruane', 'author'),
ZU.cleanAuthor('Robert Vautard', 'author')
]
}),
'Annex VII Glossary': wg1Chapter('AnnexVII', {
title: 'Annex VII: Glossary',
pages: '2215-2256',
creators: [
ZU.cleanAuthor('J. B. Robin Matthews', 'author'),
ZU.cleanAuthor('Jan S. Fuglestvedt', 'author'),
ZU.cleanAuthor('Valérie Masson-Delmotte', 'author'),
ZU.cleanAuthor('Vincent Möller', 'author'),
ZU.cleanAuthor('Carlos Méndez', 'author'),
ZU.cleanAuthor('van Diemen, Renée', 'author', true),
ZU.cleanAuthor('Andy Reisinger', 'author'),
ZU.cleanAuthor('Sergey Semenov', 'author')
]
}),
'Annex VIII Acronyms': wg1Chapter('AnnexVIII', {
title: 'Annex VIII: Acronyms',
pages: '2257-2266'
}),
'Annex IX': wg1Chapter('AnnexIX', {
title: 'Annex IX: Contributors to the IPCC Working Group I Sixth Assessment Report',
pages: '2267-2286',
}),
'Annex X': wg1Chapter('AnnexX', {
title: 'Annex X: Expert Reviewers of the IPCC Working Group I Sixth Assessment Report',
pages: '2287-2338',
}),
},
'/report/ar6/wg2/': {
'Full Report': Object.assign(new Zotero.Item('book'), {
title: 'Climate Change 2022: Impacts, Adaptation and Vulnerability. Contribution of Working Group II to the Sixth Assessment Report of the Intergovernmental Panel on Climate Change.',
date: '2022',
creators: report6Wg2Editors,
attachments: [
{
title: 'Full Text PDF',
mimeType: 'application/pdf',
url: 'https://report.ipcc.ch/ar6/wg2/IPCC_AR6_WGII_FullReport.pdf'
}
]
}),
'Summary for Policymakers': wg2Chapter('SummaryForPolicymakers', {
title: 'Summary for policymakers',
abstractNote: 'The Summary for Policymakers (SPM) provides a high-level summary of the key findings of the Working Group II Report and is approved by the IPCC member governments line by line.'
}),
'Technical Summary': wg2Chapter('TS', {
title: 'Technical summary',
abstractNote: 'The Technical Summary (TS) provides extended summary of key findings and serves as a link between the comprehensive assessment of the Working Group II Report and the concise SPM.',
creators: report6Wg2TechSummaryAuthors
}),
'Chapter 1: Point of departure and key concepts': wg2Chapter('Chapter01', {
title: 'Point of departure and key concepts',
creators: report6Wg2Ch1Authors
}),
'Chapter 2: Terrestrial and freshwater ecosystems and their services': wg2Chapter('Chapter02', {
title: 'Terrestrial and freshwater ecosystems and their services',
creators: report6Wg2Ch2Authors
}),
'Chapter 3: Ocean and coastal ecosystems and their services': wg2Chapter('Chapter03', {
title: 'Ocean and coastal ecosystems and their services',
creators: report6Wg2Ch3Authors
}),
'Chapter 4: Water': wg2Chapter('Chapter04', {
title: 'Water',
creators: report6Wg2Ch4Authors
}),
'Chapter 5: Food, fibre, and other ecosystem products': wg2Chapter('Chapter05', {
title: 'Food, fibre, and other ecosystem products',
creators: report6Wg2Ch5Authors
}),
'Chapter 6: Cities, settlements and key infrastructure': wg2Chapter('Chapter06', {
title: 'Cities, settlements and key infrastructure',
creators: report6Wg2Ch6Authors
}),
'Chapter 7: Health, wellbeing and the changing structure of communities': wg2Chapter('Chapter07', {
title: 'Health, wellbeing and the changing structure of communities',
creators: report6Wg2Ch7Authors
}),
'Chapter 8: Poverty, livelihoods and sustainable development': wg2Chapter('Chapter08', {
title: 'Poverty, livelihoods and sustainable development',
creators: report6Wg2Ch8Authors
}),
'Chapter 9: Africa': wg2Chapter('Chapter09', {
title: 'Africa',
creators: report6Wg2Ch9Authors
}),
'Chapter 10: Asia': wg2Chapter('Chapter10', {
title: 'Asia',
creators: report6Wg2Ch10Authors
}),
'Chapter 11: Australasia': wg2Chapter('Chapter11', {
title: 'Australasia',
creators: report6Wg2Ch11Authors
}),
'Chapter 12: Central and South America': wg2Chapter('Chapter12', {
title: 'Central and South America',
creators: report6Wg2Ch12Authors
}),
'Chapter 13: Europe': wg2Chapter('Chapter13', {
title: 'Europe',
creators: report6Wg2Ch13Authors
}),
'Chapter 14: North America': wg2Chapter('Chapter14', {
title: 'North America',
creators: report6Wg2Ch14Authors
}),
'Chapter 15: Small Islands': wg2Chapter('Chapter15', {
title: 'Small Islands',
creators: report6Wg2Ch15Authors
}),
'Chapter 16: Key risks across sectors and regions': wg2Chapter('Chapter16', {
title: 'Key risks across sectors and regions',
creators: report6Wg2Ch16Authors
}),
'Chapter 17: Decision-making options for managing risk': wg2Chapter('Chapter17', {
title: 'Decision-making options for managing risk',
creators: report6Wg2Ch17Authors
}),
'Chapter 18: Climate resilient development pathways': wg2Chapter('Chapter18', {
title: 'Climate resilient development pathways',
creators: report6Wg2Ch18Authors
})
},
"/report/ar6/wg3/": {
'Full Report': Object.assign(new Zotero.Item('book'), {
title: 'Climate Change 2022: Impacts, Adaptation and Vulnerability. Contribution of Working Group III to the Sixth Assessment Report of the Intergovernmental Panel on Climate Change.',
date: '2022',
creators: report6Wg3Editors,
ISBN: "978-92-9169-160-9",
DOI: "10.1017/9781009157926",
attachments: [
{
title: 'Full Text PDF',
mimeType: 'application/pdf',
url: 'https://www.ipcc.ch/report/ar6/wg3/downloads/report/IPCC_AR6_WGIII_FullReport.pdf'
}
]
}),
'Summary for Policymakers': wg3Chapter('SummaryForPolicymakers', {
title: 'Summary for Policymakers',
abstractNote: 'The Summary for Policymakers (SPM) provides a high-level summary of the key findings of the Working Group III Report and is approved by the IPCC member governments line by line.',
DOI: "10.1017/9781009157926.001",
pages: "1-48",
creators: report6Wg3SFPAuthors
}),
'Technical Summary': wg3Chapter('TS', {
title: 'Technical Summary',
abstractNote: 'The Technical Summary (TS) provides extended summary of key findings and serves as a link between the comprehensive assessment of the Working Group III Report and the concise SPM..',
DOI: "10.1017/9781009157926.002",
pages: "49-147",
creators: report6Wg3TechSummaryAuthors
}),
'Chapter 1: Introduction and Framing': wg3Chapter('Chapter01', {
title: 'Introduction and Framing',
DOI: "10.1017/9781009157926.003",
pages: "151-213",
creators: report6Wg3Ch1Authors
}),
'Chapter 2: Emissions trends and drivers': wg3Chapter('Chapter02', {
title: 'Emissions Trends and Drivers',
DOI: "10.1017/9781009157926.004",
pages: "215-294",
creators: report6Wg3Ch2Authors
}),
'Chapter 3: Mitigation pathways compatible with long-term goals': wg3Chapter('Chapter03', {
title: 'Mitigation pathways compatible with long-term goals',
DOI: "10.1017/9781009157926.005",
pages: "295-408",
creators: report6Wg3Ch3Authors
}),
'Chapter 4: Mitigation and development pathways in the near- to mid-term': wg3Chapter('Chapter04', {
title: 'Mitigation and development pathways in the near- to mid-term',
DOI: "10.1017/9781009157926.006",
pages: "409-502",
creators: report6Wg3Ch4Authors
}),
'Chapter 5: Demand, services and social aspects of mitigation': wg3Chapter('Chapter05', {
title: 'Demand, services and social aspects of mitigation',
DOI: "10.1017/9781009157926.007",
pages: "503-612",
creators: report6Wg3Ch5Authors
}),
'Chapter 6: Energy systems': wg3Chapter('Chapter06', {
title: 'Energy Systems',
DOI: "10.1017/9781009157926.008",
pages: "613-746",
creators: report6Wg3Ch6Authors
}),
'Chapter 7: Agriculture, Forestry, and Other Land Uses (AFOLU)': wg3Chapter('Chapter07', {
title: 'Agriculture, Forestry and Other Land Uses (AFOLU)',
DOI: "10.1017/9781009157926.009",
pages: "747-860",
creators: report6Wg3Ch7Authors
}),
'Chapter 8: Urban systems and other settlements': wg3Chapter('Chapter08', {
title: 'Urban systems and other settlements',
DOI: "10.1017/9781009157926.010",
pages: "861-952",
creators: report6Wg3Ch8Authors
}),
'Chapter 9: Buildings': wg3Chapter('Chapter09', {
title: 'Buildings',
DOI: "10.1017/9781009157926.011",
pages: "953-1048",
creators: report6Wg3Ch9Authors
}),
'Chapter 10: Transport': wg3Chapter('Chapter10', {
title: 'Transport',
DOI: "10.1017/9781009157926.012",
pages: "1049-1160",
creators: report6Wg3Ch10Authors
}),
'Chapter 11: Industry': wg3Chapter('Chapter11', {
title: 'Industry',
DOI: "10.1017/9781009157926.013",
pages: "1161-1243",
creators: report6Wg3Ch11Authors
}),
'Chapter 12: Cross sectoral perspectives': wg3Chapter('Chapter12', {
title: 'Cross-sectoral perspectives',
DOI: "10.1017/9781009157926.014",
pages: "1245-1354",
creators: report6Wg3Ch12Authors
}),
'Chapter 13: National and sub-national policies and institution': wg3Chapter('Chapter13', {
title: 'National and sub-national policies and institution',
DOI: "10.1017/9781009157926.015",
pages: "1355-1450",
creators: report6Wg3Ch13Authors
}),
'Chapter 14: International cooperation': wg3Chapter('Chapter14', {
title: 'International cooperation',
DOI: "10.1017/9781009157926.016",
pages: "1451-1545",
creators: report6Wg3Ch14Authors
}),
'Chapter 15: Investment and finance': wg3Chapter('Chapter15', {
title: 'Investment and finance',
DOI: "10.1017/9781009157926.017",
pages: "1547-1640",
creators: report6Wg3Ch15Authors
}),
'Chapter 16: Innovation, technology development and transfer': wg3Chapter('Chapter16', {
title: 'Innovation, technology development and transfer',
DOI: "10.1017/9781009157926.018",
pages: "1641-1725",
creators: report6Wg3Ch16Authors
}),
'Chapter 17: Accelerating the transition in the context of sustainable development': wg3Chapter('Chapter17', {
title: 'Accelerating the transition in the context of sustainable development',
DOI: "10.1017/9781009157926.019",
pages: "1727-1790",
creators: report6Wg3Ch17Authors
}),
'Annex I: Glossary': wg3Chapter('Annex-I', {
title: 'Annex I: Glossary',
DOI: "10.1017/9781009157926.020",
pages: "1793-1820",
creators: report6Wg3Annex1Authors,
}),
'Annex II: Definitions, units and conventions': wg3Chapter('Annex-II', {
title: 'Annex II: Definitions, Units and Conventions',
DOI: "10.1017/9781009157926.021",
pages: "1821-1840",
creators: report6Wg3Annex2Authors,
}),
'Annex III: Scenarios and modelling methods': wg3Chapter('Annex-III', {
title: 'Annex III: Scenarios and modelling methods',
DOI: "10.1017/9781009157926.022",
pages: "1841-1908",
creators: report6Wg3Annex3Authors,
}),
'Annex IV: Contributors to the IPCC Working Group III Sixth Assessment Report': wg3Chapter('Annex-IV', {
DOI: "10.1017/9781009157926.023",
pages: "1909-1924",
title: 'Annex IV: Contributors to the IPCC Working Group III Sixth Assessment Report'
}),
'Annex V: Expert Reviewers of the IPCC WGIII Sixth Assessment Report': wg3Chapter('Annex-V', {
DOI: "10.1017/9781009157926.024",
pages: "1925-1968",
title: 'Annex V: Expert Reviewers of the IPCC WGIII Sixth Assessment Report'
}),
'Annex VI: Acronyms': wg3Chapter('Annex-VI', {
DOI: "10.1017/9781009157926.024",
pages: "1969-1977",
title: 'Annex VI: Acronyms'
}),
},
};
function getCitations(doc) {
let pathname = doc.location.pathname;
if (pathname == '/report/sixth-assessment-report-working-group-i/') {
pathname = '/report/ar6/wg1/';
}
else if (pathname == '/report/sixth-assessment-report-working-group-ii/') {
pathname = '/report/ar6/wg2/';
}
else if (pathname == '/report/sixth-assessment-report-working-group-3/') {
pathname = '/report/ar6/wg3/';
}
return citations[pathname];
}
function detectWeb(doc, _url) {
if (getCitations(doc)) {
return 'multiple';
}
return false;
}
function doWeb(doc, _url) {
let chapters = getCitations(doc);
// We can't pass in chapters as is - if selectItems() finds that the values
// are objects with title fields, it'll use those titles instead of the keys
let input = {};
for (let chapter in chapters) {
input[chapter] = chapter;
}
Zotero.selectItems(input, function (items) {
if (items) {
for (let key of Object.keys(items)) {
chapters[key].complete();
}
}
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.ipcc.ch/report/ar6/wg1/",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.ipcc.ch/report/ar6/wg2/",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.ipcc.ch/report/ar6/wg3/",
"items": "multiple"
}
]
/** END TEST CASES **/
100jacoblee36251^https?://(www\.)?encykorea\.aks\.ac\.kr/Article//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2023 jacoblee36251
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (/^https?:\/\/[^/]+\/Article\/E\d+/.test(url)) {
return 'encyclopediaArticle';
}
else if (getSearchResults(doc, true)) {
return 'multiple';
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('li.item > a[href^="/Article/E"]');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.querySelector('div.title').textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
async function doWeb(doc, url) {
if (detectWeb(doc, url) == 'multiple') {
let items = await Zotero.selectItems(getSearchResults(doc, false));
if (!items) return;
for (let url of Object.keys(items)) {
await scrape(await requestDocument(url));
}
}
else {
await scrape(doc, url);
}
}
async function scrape(doc, url = doc.location.href) {
var item = new Zotero.Item('encyclopediaArticle');
item.title = ZU.trimInternal(text(doc, ".content-head-title"));
item.encyclopediaTitle = "한국민족문화대백과사전 [Encyclopedia of Korean Culture]";
item.publisher = "Academy of Korean Studies";
item.language = "ko";
// Clean url by removing # terms
item.url = url.replace(/#.*/, "");
// Author processing; may be 0 or more names, would be in Korean
var authors = doc.querySelector('div.author-wrap > span');
if (authors) {
authors = authors.textContent;
// For simplicity, assume one character surnames for everybody (there are rare exceptions)
for (let author of authors.split('·')) {
item.creators.push({
lastName: author[0],
firstName: author.slice(1),
creatorType: "author"
});
}
}
item.attachments.push({ title: "Snapshot", document: doc, mimeType: "text/html" });
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://encykorea.aks.ac.kr/Article/E0013414#cm_multimedia",
"detectedItemType": "encyclopediaArticle",
"items": [
{
"itemType": "encyclopediaArticle",
"title": "다대포 (多大浦)",
"creators": [
{
"lastName": "오",
"firstName": "건환",
"creatorType": "author"
},
{
"lastName": "김",
"firstName": "건유",
"creatorType": "author"
}
],
"encyclopediaTitle": "한국민족문화대백과사전 [Encyclopedia of Korean Culture]",
"language": "ko",
"libraryCatalog": "Encyclopedia of Korean Culture",
"publisher": "Academy of Korean Studies",
"url": "https://encykorea.aks.ac.kr/Article/E0013414",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://encykorea.aks.ac.kr/Article/E0002855",
"detectedItemType": "encyclopediaArticle",
"items": [
{
"itemType": "encyclopediaArticle",
"title": "경주 남산 탑곡 마애불상군 (慶州 南山 塔谷 磨崖佛像群)",
"creators": [],
"encyclopediaTitle": "한국민족문화대백과사전 [Encyclopedia of Korean Culture]",
"language": "ko",
"libraryCatalog": "Encyclopedia of Korean Culture",
"publisher": "Academy of Korean Studies",
"url": "https://encykorea.aks.ac.kr/Article/E0002855",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://encykorea.aks.ac.kr/Article/E0025488",
"detectedItemType": "encyclopediaArticle",
"items": [
{
"itemType": "encyclopediaArticle",
"title": "사랑 (舍廊)",
"creators": [
{
"lastName": "김",
"firstName": "동욱",
"creatorType": "author"
}
],
"encyclopediaTitle": "한국민족문화대백과사전 [Encyclopedia of Korean Culture]",
"language": "ko",
"libraryCatalog": "Encyclopedia of Korean Culture",
"publisher": "Academy of Korean Studies",
"url": "https://encykorea.aks.ac.kr/Article/E0025488",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://encykorea.aks.ac.kr/Article/Search/%ED%95%99%EC%9B%90?field=&type=&alias=false&body=false&containdesc=false&keyword=%ED%95%99%EC%9B%90",
"detectedItemType": "multiple",
"items": "multiple"
},
{
"type": "web",
"url": "https://encykorea.aks.ac.kr/Article/List/Field/%EC%98%88%EC%88%A0%C2%B7%EC%B2%B4%EC%9C%A1%3E%EC%A1%B0%EA%B0%81",
"detectedItemType": "multiple",
"items": "multiple"
},
{
"type": "web",
"url": "https://encykorea.aks.ac.kr/Article/List/Type/%EC%9C%A0%EC%A0%81",
"detectedItemType": "multiple",
"items": "multiple"
}
]
/** END TEST CASES **/
100Michael Berkowitz, Rintze Zelle and Avram Lyon^https?://www\.scopus\.com[^/]*/*
Scopus Translator
Copyright (C) 2008-2021 Center for History and New Media and Sebastian Karcher
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
function detectWeb(doc, url) {
if (url.includes("/results/") && getSearchResults(doc, true)) {
return "multiple";
}
else if (url.includes("/record/")) {
return "journalArticle";
}
return false;
}
function getEID(url) {
return url.match(/eid=([^&]+)/)[1];
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('tr[id *= resultDataRow] td a[title = "Show document details"], tr[class *= "resultsRow"] h4 a[title = "Show document details"], div.table-title h4 a');
for (var i = 0; i < rows.length; i++) {
var href = rows[i].href;
var title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
async function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
let items = await Zotero.selectItems(getSearchResults(doc, false));
if (items) {
for (let url of Object.keys(items)) {
await scrape(await requestDocument(url), url);
await new Promise(resolve => setTimeout(resolve, 500));
}
}
}
else {
await scrape(doc, url);
}
}
async function scrape(doc, url) {
// ISBN, language, and ISSN are not in the export data - get them from the page
var ISSN = ZU.xpathText(doc, '//div[contains(@class, "meta-text")]//dl[dt[contains(text(), "ISSN")]]/dd');
var ISBN = ZU.xpathText(doc, '//div[contains(@class, "meta-text")]//dl[dt[contains(text(), "ISBN")]]/dd');
var language = ZU.xpathText(doc, '//div[contains(@class, "meta-text")]//dl[dt[contains(text(), "Original language")]]/dd');
var prefix = url.match(/^https?:\/\//)[0];
var baseUrl = prefix + doc.location.host
+ '/onclick/export.uri?oneClickExport=%7b%22Format%22%3a%22RIS%22%2c%22View%22%3a%22CiteAbsKeyws%22%7d&origin=recordpage&eid=';
// this is the encoded version of oneClickExport={"Format":"RIS","View":"CiteAbsKeyws"} but since it's always the same, no need to run encodeURL
var eid = getEID(url);
var rislink = baseUrl + eid + "&zone=recordPageHeader&outputType=export&txGid=0";
Z.debug(rislink);
let text = await requestText(rislink);
// load translator for RIS
// Z.debug(text)
if (/T2 {2}-/.test(text) && /JF {2}-/.test(text)) {
// SCOPUS RIS mishandles alternate titles and journal titles
// if both fields are present, T2 is the alternate title and JF the journal title
text = text.replace(/T2 {2}-/, "N1 -").replace(/JF {2}-/, "T2 -");
}
// Scopus places a stray TY right above the DB field
text = text.replace(/TY.+\nDB/, "DB");
// Some Journal Articles are oddly SER
text = text.replace(/TY {2}- SER/, "TY - JOUR");
// Z.debug(text)
var translator = Zotero.loadTranslator("import");
translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7");
translator.setString(text);
translator.setHandler("itemDone", function (obj, item) {
var notes = [];
for (let note of item.notes) {
if (/Export Date:|Source:/.test(note.note)) continue;
notes.push(note);
}
item.notes = notes;
item.url = "";
for (var i = 0; i < item.creators.length; i++) {
if (item.creators[i].fieldMode == 1 && item.creators[i].lastName.includes(" ")) {
item.creators[i].firstName = item.creators[i].lastName.match(/\s(.+)/)[1];
item.creators[i].lastName = item.creators[i].lastName.replace(/\s.+/, "");
item.creators[i].fieldMode = 2;
}
}
item.attachments.push({ document: doc, title: "Snapshot" });
if (ISSN) item.ISSN = ZU.cleanISSN(ISSN);
if (ISBN) item.ISBN = ZU.cleanISBN(ISBN);
if (language) item.language = language.trim();
item.complete();
});
await translator.translate();
}
/** BEGIN TEST CASES **/
var testCases = [
]
/** END TEST CASES **/
100Zoë C. Ma^https://bosworthtoller\.com//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2023 Zoë C. Ma
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc) {
// The logic is that "a page's type is determined by its content", because
// the current implementation of the dictionary web app may not be able to
// sync URL correctly all the time.
if (getSearchResults(doc, true/* checkOnly */)) {
return "multiple";
}
if (doc.querySelector("#btd--entry-single")) {
return "dictionaryEntry";
}
return false;
}
function getSearchResults(doc, checkOnly = false) {
let items = {};
let found = false;
let rows = doc.querySelectorAll(".btd--search-entry");
for (let row of rows) {
// Don't retrieve the "similar entry" links
let href = attr(row, ".btd--search-entry-header a", "href");
let title = ZU.trimInternal(text(row, ".btd--entry-grammar").trim());
if (!title) {
title = text(row, ".btd--search-entry-header a"); // fallback
}
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
async function doWeb(doc, url) {
if (detectWeb(doc) === 'multiple') {
let items = await Z.selectItems(getSearchResults(doc));
if (!items) return;
for (let url of Object.keys(items)) {
scrape(await requestDocument(url));
}
}
else {
scrape(doc, url);
}
}
const BOSWORTH_TOLLER_INFO = {
dictionaryTitle: "An Anglo-Saxon Dictionary Online",
language: "en",
place: "Prague",
publisher: "Faculty of Arts, Charles University",
date: "2014",
creators: [
{ firstName: "Joseph", lastName: "Bosworth", creatorType: "author" },
{ firstName: "Thomas Northcote", lastName: "Toller", creatorType: "editor" },
{ firstName: "Christ", lastName: "Sean", creatorType: "editor" },
{ firstName: "Ondřej", lastName: "Tichy", creatorType: "editor" },
],
};
function scrape(doc, url = doc.location.href) {
let item = new Z.Item("dictionaryEntry");
// "Constant" fields
Object.assign(item, BOSWORTH_TOLLER_INFO);
// Page-specific data
item.url = url;
// Word entry
item.title = normalizeLemma(doc) || "[Unknown entry]";
// Original publication and page number in it, if any, as extra
item.extra = getExtraInfo(doc);
// Snapshot
item.attachments = [{
document: doc,
title: "Snapshot",
mimeType: "text/html"
}];
item.complete();
}
// See https://bosworthtoller.com/images-dictionary/frontback_matter.pdf
var BOOK_ORIG_INFO = {
b: "Original Dictionary Title: An Anglo-Saxon Dictionary, Based on the Manuscript Collections of the Late Joseph Bosworth, D.D., F.R.S.\nOriginal Date: 1898\nOriginal Publisher: Oxford University Press\nOriginal Place: London",
d: "Original Dictionary Title: An Anglo-Saxon Dictionary, Based on the Manuscript Collections of the Late Joseph Bosworth; Supplement\nOriginal Date: 1921\nOriginal Publisher: Oxford University Press\nOriginal Place: London",
};
// Get the extra info including original volume info and page number by parsing
// the URL of the scanned page linked to the article. Returns a string where
// each extra entry occupies one line in `key: value` format, or empty string
// if the original book and page cannot be determined.
function getExtraInfo(doc) {
let imageURL = attr(doc, ".btd--image-pin-pan > img", "src");
if (!imageURL) {
return "";
}
// "b" for main book (1898), "d" for supplement (1912)
let pageMatch = imageURL.match(/^\/images-dictionary\/bt_([bd])(\d+)\..+$/);
if (!pageMatch) {
return "";
}
let [, bookKey, page] = pageMatch;
return BOOK_ORIG_INFO[bookKey] // static original publication info
+ "\nOriginal Page: " + page.replace(/^0*/, ""); // trim leading zero
}
// Normalize the lemma's vowel display-form, following the original book's
// orthography (acute for long vowel).
// Why is this necessary? Because the lemma prominently displayed on the page
// main body can be configured by the user (by clicking on the icons: acute,
// macron, and none). But we want the form used in our item data normalized, no
// matter the display option, in order to not lose information and avoid
// duplication.
// NOTE that the letter case is not normalized -- the display on the page
// corresponds to the lemma in the original book.
function normalizeLemma(doc) {
// The key is to apply the correct vowel length even if the user disables
// its display. This "canonical" form (which corresponds to the original
// form in the print book) can be found either in the metadata or in the
// "citation" block under "entry information" in the doc, no matter the
// citation style in use on the page.
let titleRaw = text(doc, "#btd--entry-lemma").trim();
let titleNormalized = removeDiacritics(titleRaw);
// lemma from the meta field, not normally amenable to client-side
// modification
let metaTitle = attr(doc, 'meta[property="og:title"]', "content").trim();
let metaTitleNormalized = removeDiacritics(metaTitle);
if (metaTitle && titleNormalized === metaTitleNormalized) {
return metaTitle;
}
return null;
}
// Utility functions
// Remove the acute accent and macron if any.
function removeDiacritics(str) {
return str.normalize("NFD").replace(/[\u0301\u0304]/g, "");
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://bosworthtoller.com/search?q=heorte",
"defer": true,
"items": "multiple"
},
{
"type": "web",
"url": "https://bosworthtoller.com/search/advanced?q=%7B%22minFields%22%3A1,%22fields%22%3A%5B%7B%22query%22%3A%22diacon%22,%22field%22%3A%22headword%22,%22is_regex%22%3Afalse%7D,%7B%22query%22%3A%22%22,%22field%22%3A%22headword%22,%22condition%22%3A%22and%22,%22is_regex%22%3Afalse%7D%5D,%22wordclass%22%3A%7B%22include%22%3A%5B%221%22%5D,%22exclude%22%3A%5B%5D%7D,%22gender%22%3A%7B%22include%22%3A%5B%221%22%5D,%22exclude%22%3A%5B%5D%7D,%22subcategory%22%3A%7B%22include%22%3A%5B%5D,%22exclude%22%3A%5B%5D%7D,%22volume%22%3Anull%7D",
"defer": true,
"items": "multiple"
},
{
"type": "web",
"url": "https://bosworthtoller.com/23205",
"items": [
{
"itemType": "dictionaryEntry",
"title": "mucg-wyrt",
"creators": [
{
"firstName": "Joseph",
"lastName": "Bosworth",
"creatorType": "author"
},
{
"firstName": "Thomas Northcote",
"lastName": "Toller",
"creatorType": "editor"
},
{
"firstName": "Christ",
"lastName": "Sean",
"creatorType": "editor"
},
{
"firstName": "Ondřej",
"lastName": "Tichy",
"creatorType": "editor"
}
],
"date": "2014",
"dictionaryTitle": "An Anglo-Saxon Dictionary Online",
"extra": "Original Dictionary Title: An Anglo-Saxon Dictionary, Based on the Manuscript Collections of the Late Joseph Bosworth, D.D., F.R.S.\nOriginal Date: 1898\nOriginal Publisher: Oxford University Press\nOriginal Place: London\nOriginal Page: 700",
"language": "en",
"libraryCatalog": "Bosworth Toller's Anglo-Saxon Dictionary Online",
"place": "Prague",
"publisher": "Faculty of Arts, Charles University",
"url": "https://bosworthtoller.com/23205",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://bosworthtoller.com/7096",
"items": [
{
"itemType": "dictionaryEntry",
"title": "CYN",
"creators": [
{
"firstName": "Joseph",
"lastName": "Bosworth",
"creatorType": "author"
},
{
"firstName": "Thomas Northcote",
"lastName": "Toller",
"creatorType": "editor"
},
{
"firstName": "Christ",
"lastName": "Sean",
"creatorType": "editor"
},
{
"firstName": "Ondřej",
"lastName": "Tichy",
"creatorType": "editor"
}
],
"date": "2014",
"dictionaryTitle": "An Anglo-Saxon Dictionary Online",
"extra": "Original Dictionary Title: An Anglo-Saxon Dictionary, Based on the Manuscript Collections of the Late Joseph Bosworth, D.D., F.R.S.\nOriginal Date: 1898\nOriginal Publisher: Oxford University Press\nOriginal Place: London\nOriginal Page: 183",
"language": "en",
"libraryCatalog": "Bosworth Toller's Anglo-Saxon Dictionary Online",
"place": "Prague",
"publisher": "Faculty of Arts, Charles University",
"url": "https://bosworthtoller.com/7096",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://bosworthtoller.com/27305",
"items": [
{
"itemType": "dictionaryEntry",
"title": "secgan",
"creators": [
{
"firstName": "Joseph",
"lastName": "Bosworth",
"creatorType": "author"
},
{
"firstName": "Thomas Northcote",
"lastName": "Toller",
"creatorType": "editor"
},
{
"firstName": "Christ",
"lastName": "Sean",
"creatorType": "editor"
},
{
"firstName": "Ondřej",
"lastName": "Tichy",
"creatorType": "editor"
}
],
"date": "2014",
"dictionaryTitle": "An Anglo-Saxon Dictionary Online",
"extra": "Original Dictionary Title: An Anglo-Saxon Dictionary, Based on the Manuscript Collections of the Late Joseph Bosworth, D.D., F.R.S.\nOriginal Date: 1898\nOriginal Publisher: Oxford University Press\nOriginal Place: London\nOriginal Page: 855",
"language": "en",
"libraryCatalog": "Bosworth Toller's Anglo-Saxon Dictionary Online",
"place": "Prague",
"publisher": "Faculty of Arts, Charles University",
"url": "https://bosworthtoller.com/27305",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://bosworthtoller.com/23035",
"items": [
{
"itemType": "dictionaryEntry",
"title": "mód-c-wánig",
"creators": [
{
"firstName": "Joseph",
"lastName": "Bosworth",
"creatorType": "author"
},
{
"firstName": "Thomas Northcote",
"lastName": "Toller",
"creatorType": "editor"
},
{
"firstName": "Christ",
"lastName": "Sean",
"creatorType": "editor"
},
{
"firstName": "Ondřej",
"lastName": "Tichy",
"creatorType": "editor"
}
],
"date": "2014",
"dictionaryTitle": "An Anglo-Saxon Dictionary Online",
"extra": "Original Dictionary Title: An Anglo-Saxon Dictionary, Based on the Manuscript Collections of the Late Joseph Bosworth, D.D., F.R.S.\nOriginal Date: 1898\nOriginal Publisher: Oxford University Press\nOriginal Place: London\nOriginal Page: 694",
"language": "en",
"libraryCatalog": "Bosworth Toller's Anglo-Saxon Dictionary Online",
"place": "Prague",
"publisher": "Faculty of Arts, Charles University",
"url": "https://bosworthtoller.com/23035",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://bosworthtoller.com/53107",
"items": [
{
"itemType": "dictionaryEntry",
"title": "hrǽw",
"creators": [
{
"firstName": "Joseph",
"lastName": "Bosworth",
"creatorType": "author"
},
{
"firstName": "Thomas Northcote",
"lastName": "Toller",
"creatorType": "editor"
},
{
"firstName": "Christ",
"lastName": "Sean",
"creatorType": "editor"
},
{
"firstName": "Ondřej",
"lastName": "Tichy",
"creatorType": "editor"
}
],
"date": "2014",
"dictionaryTitle": "An Anglo-Saxon Dictionary Online",
"extra": "Original Dictionary Title: An Anglo-Saxon Dictionary, Based on the Manuscript Collections of the Late Joseph Bosworth; Supplement\nOriginal Date: 1921\nOriginal Publisher: Oxford University Press\nOriginal Place: London\nOriginal Page: 562",
"language": "en",
"libraryCatalog": "Bosworth Toller's Anglo-Saxon Dictionary Online",
"place": "Prague",
"publisher": "Faculty of Arts, Charles University",
"url": "https://bosworthtoller.com/53107",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://bosworthtoller.com/42878",
"items": [
{
"itemType": "dictionaryEntry",
"title": "dón",
"creators": [
{
"firstName": "Joseph",
"lastName": "Bosworth",
"creatorType": "author"
},
{
"firstName": "Thomas Northcote",
"lastName": "Toller",
"creatorType": "editor"
},
{
"firstName": "Christ",
"lastName": "Sean",
"creatorType": "editor"
},
{
"firstName": "Ondřej",
"lastName": "Tichy",
"creatorType": "editor"
}
],
"date": "2014",
"dictionaryTitle": "An Anglo-Saxon Dictionary Online",
"extra": "Original Dictionary Title: An Anglo-Saxon Dictionary, Based on the Manuscript Collections of the Late Joseph Bosworth; Supplement\nOriginal Date: 1921\nOriginal Publisher: Oxford University Press\nOriginal Place: London\nOriginal Page: 154",
"language": "en",
"libraryCatalog": "Bosworth Toller's Anglo-Saxon Dictionary Online",
"place": "Prague",
"publisher": "Faculty of Arts, Charles University",
"url": "https://bosworthtoller.com/42878",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Sebastian Karcher^https?://(www\.)?bostonreview\.net//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2012/2013 Sebastian Karcher, Zoë C. Ma, and contributors
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
let pageURL = new URL(url);
// Some content may not be in the print edition, but the web publication
// is a magazine nonetheless
if (/^\/(articles|forum(_response)?|us)\/.+/.test(pageURL.pathname)) {
return 'magazineArticle';
}
else if (getSearchResults(doc, true)) {
return 'multiple';
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
let outerSelectors = [
"[data-elementor-type='search-results']", // search page
"[data-elementor-post-type='issue']", // issue TOC
"[data-elementor-post-type='special-project']", // special project
];
// Titles are in an "h3 a" inside the outer container element
// The computed selector looks like "container1 h3 a, container2 h3 a ..."
let selectors = outerSelectors.map(s => s + " h3 a").join(", ");
// Legacy issue pages; although many of the links are broken
selectors += ", [data-elementor-post-type='elementor_library'] h6 a";
var rows = doc.querySelectorAll(selectors);
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
async function doWeb(doc, url) {
if (detectWeb(doc, url) == 'multiple') {
let items = await Zotero.selectItems(getSearchResults(doc, false));
if (!items) return;
for (let url of Object.keys(items)) {
await scrape(await requestDocument(url));
}
}
else {
await scrape(doc, url);
}
}
async function scrape(doc, url = doc.location.href) {
let translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', (_obj, item) => {
item.publicationTitle = item.libraryCatalog = "Boston Review";
let ldInfo = text(doc, "script[type='application/ld+json']");
let date;
if (ldInfo) {
// Get schema.org metadata for the web page from JSON-LD
let pageInfo
= (JSON.parse(ldInfo)["@graph"] || [])
.filter(x => x["@type"] === "WebPage")[0];
date = pageInfo && pageInfo.datePublished;
}
if (!date) {
// Only as fallback; despite the itemprop value, this doesn't
// always appear to be "date modified"; rather, it's the original
// publication date
date = text(doc, ".elementor-post-info [itemprop='dateModified']");
}
if (date) {
item.date = ZU.strToISO(date);
}
// Remove suffix " - Boston Review" in title
item.title = item.title.replace(/\s+-\s+Boston Review\s*$/, "");
// NOTE: the href property match takes care of both /author and
// /author-custom paths
let authors = doc.querySelectorAll("h2 a[href^='https://www.bostonreview.net/author']");
for (let author of authors) {
let authorName = ZU.trimInternal(author.textContent.trim());
item.creators.push(ZU.cleanAuthor(authorName, "author"));
}
for (let tag of doc.querySelectorAll("a[href^='https://www.bostonreview.net/tag/']")) {
item.tags.push(ZU.trimInternal(tag.textContent));
}
// NOTE that in general there's no sure way to determine whether an
// article belongs to a print issue (hence no volume/issue numbers and
// no ISSN which is for the print publication). If you can help, please
// contribute!
item.complete();
});
let em = await translator.getTranslatorObject();
em.itemType = 'magazineArticle';
await em.doWeb(doc, url);
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.bostonreview.net/forum_response/rethinking-family-life-robin-west/",
"items": [
{
"itemType": "magazineArticle",
"title": "Rethinking Family Life",
"creators": [
{
"firstName": "Robin",
"lastName": "West",
"creatorType": "author"
}
],
"date": "2012-11-09",
"abstractNote": "Rethinking Family Life James Heckman provides an economic argument for a claim that is often thought to be supported at most by moral considerations:",
"language": "en-US",
"libraryCatalog": "Boston Review",
"publicationTitle": "Boston Review",
"url": "https://www.bostonreview.net/forum_response/rethinking-family-life-robin-west/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.bostonreview.net/forum/can-global-brands-create-just-supply-chains-richard-locke",
"items": [
{
"itemType": "magazineArticle",
"title": "Can Global Brands Create Just Supply Chains?",
"creators": [
{
"firstName": "Richard M.",
"lastName": "Locke",
"creatorType": "author"
}
],
"date": "2013-05-21",
"abstractNote": "When Jia Jingchuan, a 27-year-old electronics worker in Suzhou, China, sought compensation for the chemical poisoning he suffered at work, he appealed",
"language": "en-US",
"libraryCatalog": "Boston Review",
"publicationTitle": "Boston Review",
"url": "https://www.bostonreview.net/forum/can-global-brands-create-just-supply-chains-richard-locke/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Global"
},
{
"tag": "Human Rights"
},
{
"tag": "Labor"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.bostonreview.net/articles/government-loansharking/",
"items": [
{
"itemType": "magazineArticle",
"title": "Government Loansharking",
"creators": [
{
"firstName": "Malcolm",
"lastName": "Harris",
"creatorType": "author"
}
],
"date": "2013-06-07",
"abstractNote": "Last November when I first wrote about student loans for Boston Review, the Department of Education estimated it would be pulling in around $25 billion in",
"language": "en-US",
"libraryCatalog": "Boston Review",
"publicationTitle": "Boston Review",
"url": "https://www.bostonreview.net/articles/government-loansharking/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Economy"
},
{
"tag": "Education"
},
{
"tag": "Politics"
},
{
"tag": "U.S."
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://bostonreview.net/issue/september-october-2012/",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.bostonreview.net/?s=labor",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.bostonreview.net/articles/astra-taylor-wolson-interview/",
"items": [
{
"itemType": "magazineArticle",
"title": "Beyond the Neoliberal University",
"creators": [
{
"firstName": "Astra",
"lastName": "Taylor",
"creatorType": "author"
},
{
"firstName": "Todd",
"lastName": "Wolfson",
"creatorType": "author"
}
],
"date": "2020-08-04",
"abstractNote": "Astra Taylor talks with Rutgers faculty union president Todd Wolfson about organizing academic communities in the age of COVID-19.",
"language": "en-US",
"libraryCatalog": "Boston Review",
"publicationTitle": "Boston Review",
"url": "https://www.bostonreview.net/articles/astra-taylor-wolson-interview/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "COVID-19"
},
{
"tag": "Education"
},
{
"tag": "Interview"
},
{
"tag": "Labor"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.bostonreview.net/special_project/opportunity-after-neoliberalism/",
"items": "multiple"
}
]
/** END TEST CASES **/
100Philipp Zumstein^https?://(www\.)?wikidata\.org/wiki/Q/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2017 Philipp Zumstein
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
// see also https://github.com/UB-Mannheim/zotkat/blob/master/Wikidata%20QuickStatements.js
var typeMapping = {
Q838948: "artwork",
Q30070318: "audioRecording",
Q686822: "bill",
Q17928402: "blogPost",
Q571: "book",
Q3331189: "book", // Edition
Q47461344: "book", // written work
Q1980247: "bookSection",
Q2334719: "case",
Q40056: "computerProgram",
Q23927052: "conferencePaper",
Q30070414: "dictionaryEntry",
Q49848: "document",
Q30070439: "email",
Q13433827: "encyclopediaArticle",
Q17329259: "encyclopediaArticle", // merged into Q13433827
Q11424: "film",
Q7216866: "forumPost",
Q30070550: "hearing",
Q30070565: "instantMessage",
Q178651: "interview",
Q13442814: "journalArticle",
Q133492: "letter",
Q30070590: "magazineArticle",
Q87167: "manuscript",
Q4006: "map",
Q5707594: "newspaperArticle",
Q253623: "patent",
Q24634210: "podcast",
Q604733: "presentation",
Q1555508: "radioBroadcast",
Q10870555: "report",
Q820655: "statute",
Q1266946: "thesis",
Q187685: "thesis", // doctoral thesis
Q15416: "tvBroadcast",
Q30070675: "videoRecording",
Q36774: "webpage",
Q1172284: "document" // dataset
};
// see also https://www.wikidata.org/wiki/Template:Bibliographical_properties
var mapping = {
'wdt:P1476': 'title',
'wdt:P1680': 'subtitle',
'wdt:P123': 'publisher',
'wdt:P577': 'date',
'wdt:P356': 'DOI',
'wdt:P407': 'language',
'wdt:P1433': 'publicationTitle',
'wdt:P921': 'tagString',
'wdt:P50': 'creator',
'wdt:P2093': 'creator',
'wdt:P98': 'creator',
'wdt:P655': 'creator',
'wdt:P110': 'creator',
'wdt:P57': 'creator',
'wdt:P58': 'creator',
'wdt:P161': 'creator',
'wdt:P162': 'creator',
'wdt:P953': 'url',
'wdt:P478': 'volume',
'wdt:P433': 'issue',
'wdt:P304': 'pages',
'wdt:P179': 'series',
'wdt:P212': 'ISBN',
'wdt:P957': 'ISBN',
'wdt:P236': 'ISSN',
'wdt:P136': 'genre',
'wdt:P275': 'rights',
'wdt:P2047': 'runningTime',
'wdt:P750': 'distributor',
'wdt:P698': 'PMID',
'wdt:P932': 'PMCID'
};
// creators with no special role here are treated as contributor
var creatorMapping = {
'wdt:P50': 'author',
'wdt:P2093': 'author',
'wdt:P98': 'editor',
'wdt:P655': 'translator',
'wdt:P110': 'illustrator',
'wdt:P57': 'director',
'wdt:P58': 'scriptwriter',
'wdt:P162': 'producer'
};
var namespaces = {
rdf: "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
xsd: "http://www.w3.org/2001/XMLSchema#",
rdfs: "http://www.w3.org/2000/01/rdf-schema#",
owl: "http://www.w3.org/2002/07/owl#",
wikibase: "http://wikiba.se/ontology-beta#",
wdata: "https://www.wikidata.org/wiki/Special:EntityData/",
wd: "http://www.wikidata.org/entity/",
wds: "http://www.wikidata.org/entity/statement/",
wdref: "http://www.wikidata.org/reference/",
wdv: "http://www.wikidata.org/value/",
wdt: "http://www.wikidata.org/prop/direct/",
p: "http://www.wikidata.org/prop/",
ps: "http://www.wikidata.org/prop/statement/",
psv: "http://www.wikidata.org/prop/statement/value/",
psn: "http://www.wikidata.org/prop/statement/value-normalized/",
pq: "http://www.wikidata.org/prop/qualifier/",
pqv: "http://www.wikidata.org/prop/qualifier/value/",
pqn: "http://www.wikidata.org/prop/qualifier/value-normalized/",
pr: "http://www.wikidata.org/prop/reference/",
prv: "http://www.wikidata.org/prop/reference/value/",
prn: "http://www.wikidata.org/prop/reference/value-normalized/",
wdno: "http://www.wikidata.org/prop/novalue/",
skos: "http://www.w3.org/2004/02/skos/core#",
schema: "http://schema.org/",
cc: "http://creativecommons.org/ns#",
geo: "http://www.opengis.net/ont/geosparql#",
prov: "http://www.w3.org/ns/prov#",
// usually the defintion of the xml namespace is not needed, but
// here we have to explicitely define it before using ZU.xpath
xml: "http://www.w3.org/XML/1998/namespace"
};
function detectWeb(doc) {
var p31statement = doc.getElementById("P31");
if (p31statement) {
var p31values = ZU.xpath(p31statement, './/div[contains(@class, "wikibase-statementlistview")]//div[contains(@class, "wikibase-snakview-value")]/a/@title');
for (var i = 0; i < p31values.length; i++) {
if (p31values[i] && typeMapping[p31values[i].textContent]) {
return typeMapping[p31values[i].textContent];
}
}
}
return false;
}
function doWeb(doc, url) {
scrape(doc, url);
}
function scrape(doc, url) {
var type = detectWeb(doc, url);
url = url.replace(/#.*/, '');
var qposition = url.indexOf('Q');
var qnumber = url.substr(qposition);
var xmlUrl = ZU.xpathText(doc, '//link[@rel="alternate" and @type="application/rdf+xml"]/@href');
ZU.doGet(xmlUrl, function (data) {
var parser = new DOMParser();
var xml = parser.parseFromString(data, "application/xml");
var item = new Zotero.Item(type);
item.extra = 'QID: ' + qnumber;
var nodes = ZU.xpath(xml, '//rdf:Description', namespaces);
var creatorsArray = [];
for (var i = 0; i < nodes.length; i++) {
var rdfabout = nodes[i].getAttribute("rdf:about");
if (rdfabout) {
var id = rdfabout.substr(rdfabout.length - qnumber.length);
if (id == qnumber) {
for (var prop in nodes[i].childNodes) {
var propstatement = nodes[i].childNodes[prop];
var tagname = propstatement.tagName;
if (tagname && mapping[tagname]) {
var zprop = mapping[tagname];
var value = propstatement.textContent;
var resource = propstatement.getAttribute("rdf:resource");
if (!value && resource) {
// Z.debug("Internal look up resource: " + resource);
value = ZU.xpathText(xml, '//rdf:Description[@rdf:about="' + resource + '"]/rdfs:label[contains(@xml:lang, "en")][1]', namespaces)
|| ZU.xpathText(xml, '//rdf:Description[@rdf:about="' + resource + '"]/rdfs:label[1]', namespaces);
if (!value) { continue; }
// Z.debug(value);
}
if (zprop == "creator") {
var seriesOrdinal = ZU.xpathText(xml, '//rdf:Description[ps:P50[@rdf:resource="' + resource + '"]]/pq:P1545[1]', namespaces)
|| ZU.xpathText(xml, '//rdf:Description[ps:P2093[text()="' + value + '"]]/pq:P1545[1]', namespaces);
var func = creatorMapping[tagname] || 'contributor';
creatorsArray.push([value, func, seriesOrdinal]);
}
else if (zprop == "tagString") {
for (let tag of value.split(', ')) {
item.tags.push(tag);
}
}
else if (["PMID", "PMCID"].includes(zprop)) {
Z.debug(`Property added to extra: ${zprop}`);
if (zprop == "PMCID") {
value = `PMC${value.trim()}`;
}
item.extra += `\n${zprop}: ${value}`;
}
else if (item[zprop]) {
item[zprop] += ', ' + value;
}
else {
item[zprop] = value;
}
}
else if (tagname == 'wdt:P31') {
let resource = propstatement.getAttribute('rdf:resource');
if (resource.endsWith('/Q1172284')) {
item.extra += '\nType: dataset';
}
}
}
}
}
}
if (item.title && item.subtitle) {
item.title += ': ' + item.subtitle;
delete item.subtitle;
}
creatorsArray.sort(function (a, b) {
return a[2] - b[2];
});
for (let aut of creatorsArray) {
item.creators.push(ZU.cleanAuthor(aut[0], aut[1]));
}
// in Zotero we cannot allow multiple DOIs
if (item.DOI && item.DOI.includes(', ')) {
item.DOI = ZU.xpathText(xml, '(//rdf:Description[wikibase:rank[contains(@rdf:resource, "#PreferredRank")]]/ps:P356)[1]', namespaces)
|| ZU.xpathText(xml, '(//rdf:Description[wikibase:rank[contains(@rdf:resource, "#NormalRank")]]/ps:P356)[1]', namespaces)
|| ZU.xpathText(xml, '(//rdf:Description[wikibase:rank[contains(@rdf:resource, "#DeprecatedRank")]]/ps:P356)[1]', namespaces);
}
item.complete();
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.wikidata.org/wiki/Q30000000",
"items": [
{
"itemType": "journalArticle",
"title": "The Synergistic Activity of Thyroid Transcription Factor 1 and Pax 8 Relies on the Promoter/Enhancer Interplay",
"creators": [
{
"firstName": "Stefania",
"lastName": "Miccadei",
"creatorType": "author"
},
{
"firstName": "Rossana De",
"lastName": "Leo",
"creatorType": "author"
},
{
"firstName": "Enrico",
"lastName": "Zammarchi",
"creatorType": "author"
},
{
"firstName": "Pier Giorgio",
"lastName": "Natali",
"creatorType": "author"
},
{
"firstName": "Donato",
"lastName": "Civitareale",
"creatorType": "author"
}
],
"date": "2002-04-01T00:00:00Z",
"DOI": "10.1210/MEND.16.4.0808",
"extra": "QID: Q30000000\nPMID: 11923479",
"issue": "4",
"language": "English",
"libraryCatalog": "Wikidata",
"pages": "837-846",
"publicationTitle": "Molecular Endocrinology",
"volume": "16",
"attachments": [],
"tags": [
{
"tag": "transcription"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.wikidata.org/wiki/Q29121277",
"items": [
{
"itemType": "journalArticle",
"title": "FindZebra: A search engine for rare diseases",
"creators": [
{
"firstName": "Radu",
"lastName": "Dragusin",
"creatorType": "author"
},
{
"firstName": "Paula",
"lastName": "Petcu",
"creatorType": "author"
},
{
"firstName": "Christina",
"lastName": "Lioma",
"creatorType": "author"
},
{
"firstName": "Birger",
"lastName": "Larsen",
"creatorType": "author"
},
{
"firstName": "Henrik L.",
"lastName": "Jørgensen",
"creatorType": "author"
},
{
"firstName": "Ingemar J.",
"lastName": "Cox",
"creatorType": "author"
},
{
"firstName": "Lars Kai",
"lastName": "Hansen",
"creatorType": "author"
},
{
"firstName": "Peter",
"lastName": "Ingwersen",
"creatorType": "author"
},
{
"firstName": "Ole",
"lastName": "Winther",
"creatorType": "author"
}
],
"date": "2013-06-01T00:00:00Z",
"DOI": "10.1016/J.IJMEDINF.2013.01.005",
"extra": "QID: Q29121277\nPMID: 23462700",
"issue": "6",
"libraryCatalog": "Wikidata",
"pages": "528-538",
"publicationTitle": "International Journal of Medical Informatics",
"shortTitle": "FindZebra",
"volume": "82",
"attachments": [],
"tags": [
{
"tag": "rare disease"
},
{
"tag": "search engine"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.wikidata.org/wiki/Q470573",
"items": [
{
"itemType": "film",
"title": "Les Charlots en folie: À nous quatre Cardinal !",
"creators": [
{
"firstName": "André",
"lastName": "Hunebelle",
"creatorType": "director"
},
{
"firstName": "Jean",
"lastName": "Halain",
"creatorType": "scriptwriter"
},
{
"firstName": "Gérard",
"lastName": "Rinaldi",
"creatorType": "contributor"
},
{
"firstName": "Jean-Guy",
"lastName": "Fechner",
"creatorType": "contributor"
},
{
"firstName": "Jean",
"lastName": "Sarrus",
"creatorType": "contributor"
},
{
"firstName": "Gérard",
"lastName": "Filippelli",
"creatorType": "contributor"
},
{
"firstName": "André",
"lastName": "Badin",
"creatorType": "contributor"
},
{
"firstName": "André",
"lastName": "Dumas",
"creatorType": "contributor"
},
{
"firstName": "Bernard",
"lastName": "Haller",
"creatorType": "contributor"
},
{
"firstName": "Bernard",
"lastName": "Lajarrige",
"creatorType": "contributor"
},
{
"firstName": "Bernard",
"lastName": "Menez",
"creatorType": "contributor"
},
{
"firstName": "Catherine",
"lastName": "Jourdan",
"creatorType": "contributor"
},
{
"firstName": "Daniel",
"lastName": "Ceccaldi",
"creatorType": "contributor"
},
{
"firstName": "Dominique",
"lastName": "Zardi",
"creatorType": "contributor"
},
{
"firstName": "Gib",
"lastName": "Grossac",
"creatorType": "contributor"
},
{
"firstName": "Henri",
"lastName": "Attal",
"creatorType": "contributor"
},
{
"firstName": "Igor De",
"lastName": "Savitch",
"creatorType": "contributor"
},
{
"firstName": "Jacques",
"lastName": "Dynam",
"creatorType": "contributor"
},
{
"firstName": "Jacques",
"lastName": "Legras",
"creatorType": "contributor"
},
{
"firstName": "Jacques",
"lastName": "Seiler",
"creatorType": "contributor"
},
{
"firstName": "Jean",
"lastName": "Valmont",
"creatorType": "contributor"
},
{
"firstName": "Jean-Marie",
"lastName": "Proslier",
"creatorType": "contributor"
},
{
"firstName": "Josephine",
"lastName": "Chaplin",
"creatorType": "contributor"
},
{
"firstName": "Karin",
"lastName": "Petersen",
"creatorType": "contributor"
},
{
"firstName": "Max",
"lastName": "Montavon",
"creatorType": "contributor"
},
{
"firstName": "Paul",
"lastName": "Mercey",
"creatorType": "contributor"
},
{
"firstName": "Paul",
"lastName": "Préboist",
"creatorType": "contributor"
},
{
"firstName": "Yvan",
"lastName": "Chiffre",
"creatorType": "contributor"
},
{
"firstName": "Yvan",
"lastName": "Tanguy",
"creatorType": "contributor"
},
{
"firstName": "Georges",
"lastName": "Mansart",
"creatorType": "contributor"
},
{
"firstName": "Robert",
"lastName": "Favart",
"creatorType": "contributor"
}
],
"date": "1974-08-30T00:00:00Z",
"extra": "QID: Q470573",
"genre": "comedy film, parody film, swashbuckler film, film based on a novel",
"libraryCatalog": "Wikidata",
"runningTime": "+75",
"shortTitle": "Les Charlots en folie",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.wikidata.org/wiki/Q480743",
"items": [
{
"itemType": "book",
"title": "Eichmann in Jerusalem: A Report on the Banality of Evil",
"creators": [
{
"firstName": "Hannah",
"lastName": "Arendt",
"creatorType": "author"
}
],
"date": "1963-01-01T00:00:00Z, 2000-01-01T00:00:00Z",
"extra": "QID: Q480743",
"language": "English",
"libraryCatalog": "Wikidata",
"publisher": "Viking Press",
"shortTitle": "Eichmann in Jerusalem",
"attachments": [],
"tags": [
{
"tag": "Adolf Eichmann"
},
{
"tag": "The Holocaust"
},
{
"tag": "war crimes trial"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.wikidata.org/wiki/Q28294211",
"items": [
{
"itemType": "journalArticle",
"title": "Characterization of Agouti-Related Protein Binding to Melanocortin Receptors",
"creators": [
{
"firstName": "Ying-kui",
"lastName": "Yang",
"creatorType": "author"
},
{
"firstName": "Darren A.",
"lastName": "Thompson",
"creatorType": "author"
},
{
"firstName": "Chris J.",
"lastName": "Dickinson",
"creatorType": "author"
},
{
"firstName": "Jill",
"lastName": "Wilken",
"creatorType": "author"
},
{
"firstName": "Greg S.",
"lastName": "Barsh",
"creatorType": "author"
},
{
"firstName": "Stephen B. H.",
"lastName": "Kent",
"creatorType": "author"
},
{
"firstName": "Ira",
"lastName": "Gantz",
"creatorType": "author"
}
],
"date": "1999-01-01T00:00:00Z",
"extra": "QID: Q28294211\nPMID: 9892020",
"issue": "1",
"language": "English",
"libraryCatalog": "Wikidata",
"pages": "148-155",
"publicationTitle": "Molecular Endocrinology",
"volume": "13",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.wikidata.org/wiki/Q15892061",
"items": [
{
"itemType": "encyclopediaArticle",
"title": "Ancile",
"creators": [
{
"firstName": "Paul",
"lastName": "Habel",
"creatorType": "author"
}
],
"date": "1894-01-01T00:00:00Z",
"encyclopediaTitle": "Pauly-Wissowa vol. I,2",
"extra": "QID: Q15892061",
"language": "German",
"libraryCatalog": "Wikidata",
"attachments": [],
"tags": [
{
"tag": "ancile"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.wikidata.org/wiki/Q30000000",
"items": [
{
"itemType": "journalArticle",
"title": "The Synergistic Activity of Thyroid Transcription Factor 1 and Pax 8 Relies on the Promoter/Enhancer Interplay",
"creators": [
{
"firstName": "Stefania",
"lastName": "Miccadei",
"creatorType": "author"
},
{
"firstName": "Rossana De",
"lastName": "Leo",
"creatorType": "author"
},
{
"firstName": "Enrico",
"lastName": "Zammarchi",
"creatorType": "author"
},
{
"firstName": "Pier Giorgio",
"lastName": "Natali",
"creatorType": "author"
},
{
"firstName": "Donato",
"lastName": "Civitareale",
"creatorType": "author"
}
],
"date": "2002-04-01T00:00:00Z",
"DOI": "10.1210/MEND.16.4.0808",
"extra": "QID: Q30000000\nPMID: 11923479",
"issue": "4",
"language": "English",
"libraryCatalog": "Wikidata",
"pages": "837-846",
"publicationTitle": "Molecular Endocrinology",
"volume": "16",
"attachments": [],
"tags": [
{
"tag": "transcription"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.wikidata.org/wiki/Q58732106",
"items": [
{
"itemType": "journalArticle",
"title": "Practical Medicine and Therapeutics",
"creators": [],
"date": "1837-04-01T00:00:00Z",
"extra": "QID: Q58732106\nPMID: 30161437\nPMCID: PMC5589313",
"issue": "6",
"language": "English",
"libraryCatalog": "Wikidata",
"pages": "548-556",
"volume": "3",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.wikidata.org/wiki/Q107586230",
"items": [
{
"itemType": "document",
"title": "Camptochaeta luxemburgensis Heller, Hippa and Vilkamaa spec. nov. (Diptera: Sciaridae), a new cavernicolous species from Luxembourg",
"creators": [
{
"firstName": "Dieter",
"lastName": "Weber",
"creatorType": "author"
},
{
"firstName": "Alain C.",
"lastName": "Frantz",
"creatorType": "author"
},
{
"firstName": "Heikki",
"lastName": "Hippa",
"creatorType": "author"
},
{
"firstName": "Pekka",
"lastName": "Vilkamaa",
"creatorType": "author"
},
{
"firstName": "Björn",
"lastName": "Rulik",
"creatorType": "author"
},
{
"firstName": "Kai",
"lastName": "Heller",
"creatorType": "author"
}
],
"date": "2018-01-01T00:00:00Z",
"extra": "QID: Q107586230\nType: dataset",
"libraryCatalog": "Wikidata",
"publisher": "Barcode of Life Data Systems",
"shortTitle": "Camptochaeta luxemburgensis Heller, Hippa and Vilkamaa spec. nov. (Diptera",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.wikidata.org/wiki/Q30834230",
"items": [
{
"itemType": "journalArticle",
"creators": [
{
"firstName": "Nicola",
"lastName": "Francesca",
"creatorType": "author"
},
{
"firstName": "Cláudia",
"lastName": "Carvalho",
"creatorType": "author"
},
{
"firstName": "Ciro",
"lastName": "Sannino",
"creatorType": "author"
},
{
"firstName": "Marco Alexandre",
"lastName": "Guerreiro",
"creatorType": "author"
},
{
"firstName": "Pedro",
"lastName": "Almeida",
"creatorType": "author"
},
{
"firstName": "Luca",
"lastName": "Settanni",
"creatorType": "author"
},
{
"firstName": "José Paulo",
"lastName": "Sampaio",
"creatorType": "author"
},
{
"firstName": "Bruno",
"lastName": "Massa",
"creatorType": "author"
},
{
"firstName": "Giancarlo",
"lastName": "Moschetti",
"creatorType": "author"
}
],
"tags": [
{
"tag": "species nova",
"type": 1
},
{
"tag": "species nova",
"type": 1
}
],
"extra": "QID: Q30834230\nPMID: 24981278",
"date": "2014-07-28T00:00:00Z",
"issue": "6",
"publicationTitle": "FEMS Yeast Research, FEMS Yeast Research",
"DOI": "10.1111/1567-1364.12179",
"volume": "14",
"title": "Yeasts vectored by migratory birds collected in the Mediterranean island of Ustica and description of Phaffomyces usticensis f.a. sp. nov., a new species related to the cactus ecoclade",
"pages": "910-921",
"libraryCatalog": "Wikidata"
}
]
}
]
/** END TEST CASES **/
97Sebastian Karcherfunction detectSearch(item) {
//re-enable once
/*if (item.ISBN) {
return !!ZU.cleanISBN(item.ISBN)
} else return false; */
return !!item.ISBN;
}
function doSearch(item) {
// Sends an SRU formatted as CQL to the Library of Congress asking for MARCXML back
// https://www.loc.gov/standards/sru/
// https://www.loc.gov/z3950/lcserver.html
let url;
if (item.ISBN) {
url = "https://lx2.loc.gov/sru/lcdb?operation=searchRetrieve&version=1.1&query=bath.ISBN=^" + ZU.cleanISBN(item.ISBN) + "&maximumRecords=1";
}
else if (item.query) {
url = "https://lx2.loc.gov/sru/lcdb?operation=searchRetrieve&version=1.1&query=" + encodeURIComponent(item.query) + "&maximumRecords=50";
}
ZU.doGet(url, function (text) {
//Z.debug(text);
var translator = Zotero.loadTranslator("import");
translator.setTranslator("edd87d07-9194-42f8-b2ad-997c4c7deefd");
translator.setString(text);
translator.translate();
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "search",
"input": {
"ISBN": "9780521779241"
},
"items": [
{
"itemType": "book",
"creators": [
{
"lastName": "Haakonssen",
"firstName": "Knud",
"creatorType": "editor"
}
],
"notes": [
{
"note": "Imagination : morals, science, arts / Charles L. Griswold, Jr. -- Adam Smith, belletrist / Mark Salber Phillips -- Adam Smith's theory of language / Marcelo Dascal -- Smith and science / Christopher J. Berry -- Smith on ingenuity, pleasure, and the imitative arts / Neil de Marchi -- Sympathy and the impartial spectator / Alexander Broadie -- Virtues, utility, and rules / Robert Shaver -- Adam Smith on justice, rights, and law / David Lieberman -- Self-interest and other interests / Pratap Bhanu Mehta -- Adam Smith and history / J.G.A. Pocock -- Adam Smith's politics / Douglas Long -- Adam Smith's economics / Emma Rothschild and Amartya Sen -- The legacy of Adam Smith / Knud Haakonssen and Donald Winch"
}
],
"tags": [
"Smith, Adam"
],
"seeAlso": [],
"attachments": [],
"libraryCatalog": "Library of Congress ISBN",
"place": "Cambridge ; New York",
"ISBN": "9780521770590 9780521779241",
"title": "The Cambridge companion to Adam Smith",
"publisher": "Cambridge University Press",
"date": "2006",
"numPages": "409",
"series": "Cambridge companions to philosophy",
"callNumber": "B1545.Z7 C36 2006",
"extra": "OCLC: ocm60321422"
}
]
}
]
/** END TEST CASES **/
100Sebastian Karcher^https?://tools\.niehs\.nih\.gov/cchhl/index\.cfm/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2022 Sebastian Karcher
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/index.cfm/detail/')) {
return 'journalArticle';
}
let appRoot = doc.querySelector("#app"); // Ajax app "mount point"
if (appRoot) {
// Watch for live filtering of search results)
Z.monitorDOMChanges(appRoot);
}
if (getSearchResults(doc, true)) {
return 'multiple';
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('#ccpp_results-list .ccpp_result-title>a');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
async function doWeb(doc, url) {
if (detectWeb(doc, url) == 'multiple') {
let items = await Zotero.selectItems(getSearchResults(doc, false));
if (!items) return;
for (let url of Object.keys(items)) {
await scrape(await requestDocument(url));
}
}
else {
await scrape(doc);
}
}
async function scrape(doc) {
var pmid = text(doc, 'li>a[href*="www.ncbi.nlm.nih.gov/pubmed"]');
var doi = text(doc, 'li>a[href*="doi.org/10."]');
var abstract = text(doc, '#cchh-detail-abstract');
Z.debug(pmid);
Z.debug(doi);
if (pmid) {
pmid = pmid.match(/\.gov\/pubmed\/(\d+)/)[1];
let translate = Z.loadTranslator('search');
translate.setTranslator('3d0231ce-fd4b-478c-b1d3-840389e5b68c');
translate.setSearch({ itemType: "journalArticle", PMID: pmid });
await translate.translate();
}
else if (doi) {
let translate = Z.loadTranslator('search');
translate.setSearch({ DOI: ZU.cleanDOI(doi) });
translate.setTranslator('b28d0d42-8549-4c6d-83fc-8382874a5cb9'); // DOI Content Negotiation
translate.setHandler("itemDone", function (obj, item) {
// ad abstract from page
if (abstract && !item.abstractNote) {
item.abstractNote = abstract;
}
item.complete();
});
await translate.translate();
}
else {
// scrape if we have to; I couldn't find a live example of this
var item = new Zotero.Item("journalArticle");
item.title = text(doc, 'h1>span');
item.date = ZU.xpathText(doc, '//div[@class="cchh-content_label" and contains(text(), "Year:")]/following-sibling::div');
let authors = ZU.xpathText(doc, '//div[@class="cchh-content_label" and contains(text(), "Author(s):")]/following-sibling::div');
let publication = ZU.xpathText(doc, '//div[@class="cchh-content_label" and contains(text(), "Journal:")]/following-sibling::div');
for (let author of authors.split(", ")) {
author = author.replace(/\s([A-Z]+)$/, ", $1");
item.creators.push(ZU.cleanAuthor(author, "author", true));
}
if (publication) {
var pubinfo = publication.match(/^(.+?)\.\s*(\d+)\s*(?:\((\d+)\))?:\s*([\d-]+?)$/);
if (pubinfo) {
item.publicationTitle = pubinfo[1];
item.volume = pubinfo[2];
item.issue = pubinfo[3];
item.pages = pubinfo[4];
}
}
item.complete();
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://tools.niehs.nih.gov/cchhl/index.cfm/detail/20124#searchTerm=testing&selectedFacets=&selectedResults=",
"items": [
{
"itemType": "journalArticle",
"title": "An analytical heat wave definition based on the impact on buildings and occupants",
"creators": [
{
"creatorType": "author",
"firstName": "Alfonso P.",
"lastName": "Ramallo-González"
},
{
"creatorType": "author",
"firstName": "Matt E.",
"lastName": "Eames"
},
{
"creatorType": "author",
"firstName": "Sukumar",
"lastName": "Natarajan"
},
{
"creatorType": "author",
"firstName": "Daniel",
"lastName": "Fosas-de-Pando"
},
{
"creatorType": "author",
"firstName": "David A.",
"lastName": "Coley"
}
],
"date": "06/2020",
"DOI": "10.1016/j.enbuild.2020.109923",
"ISSN": "03787788",
"abstractNote": "Alongside a mean global rise in temperature, climate change predictions point to an increase in heat waves and an associated rise in heat-related mortality. This suggests a growing need to ensure buildings are resilient to such events. Unfortunately, there is no agreed way of doing this, and no standard set of heatwaves for scientists or engineers to use. In addition, in all cases, heat waves are defined in terms of external conditions, yet, as the Paris heat wave of 2003 showed, people die in the industrialised world from the conditions inside buildings, not those outside. In this work, we reverse engineer external temperature time series from monitored conditions within a representative set of buildings during a heat wave. This generates a general probabilistic analytical relationship between internal and external heatwaves and thereby a standard set of events for testing resilience. These heat waves are by their simplicity ideal for discussions between clients and designers, or for the setting of national building codes. In addition, they provide a new framework for the declaration of a health emergency. (C) 2020 Published by Elsevier B.V.",
"journalAbbreviation": "Energy and Buildings",
"language": "en",
"libraryCatalog": "DOI.org (Crossref)",
"pages": "109923",
"publicationTitle": "Energy and Buildings",
"url": "https://linkinghub.elsevier.com/retrieve/pii/S0378778819330622",
"volume": "216",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://tools.niehs.nih.gov/cchhl/index.cfm/main/search#/params?searchTerm=heat%20pump&selectedFacets=&selectedResults=",
"defer": true,
"items": "multiple"
},
{
"type": "web",
"url": "https://tools.niehs.nih.gov/cchhl/index.cfm/detail/10206#searchTerm=heat%20pump&selectedFacets=&selectedResults=",
"items": [
{
"itemType": "journalArticle",
"title": "Heat waves, aging, and human cardiovascular health",
"creators": [
{
"firstName": "W. Larry",
"lastName": "Kenney",
"creatorType": "author"
},
{
"firstName": "Daniel H.",
"lastName": "Craighead",
"creatorType": "author"
},
{
"firstName": "Lacy M.",
"lastName": "Alexander",
"creatorType": "author"
}
],
"date": "2014-10",
"DOI": "10.1249/MSS.0000000000000325",
"ISSN": "1530-0315",
"abstractNote": "This brief review is based on a President's Lecture presented at the Annual Meeting of the American College of Sports Medicine in 2013. The purpose of this review was to assess the effects of climate change and consequent increases in environmental heat stress on the aging cardiovascular system. The earth's average global temperature is slowly but consistently increasing, and along with mean temperature changes come increases in heat wave frequency and severity. Extreme passive thermal stress resulting from prolonged elevations in ambient temperature and prolonged physical activity in hot environments creates a high demand on the left ventricle to pump blood to the skin to dissipate heat. Even healthy aging is accompanied by altered cardiovascular function, which limits the extent to which older individuals can maintain stroke volume, increase cardiac output, and increase skin blood flow when exposed to environmental extremes. In the elderly, the increased cardiovascular demand during heat waves is often fatal because of increased strain on an already compromised left ventricle. Not surprisingly, excess deaths during heat waves 1) occur predominantly in older individuals and 2) are overwhelmingly cardiovascular in origin. Increasing frequency and severity of heat waves coupled with a rapidly growing at-risk population dramatically increase the extent of future untoward health outcomes.",
"extra": "PMID: 24598696\nPMCID: PMC4155032",
"issue": "10",
"journalAbbreviation": "Med Sci Sports Exerc",
"language": "eng",
"libraryCatalog": "PubMed",
"pages": "1891-1899",
"publicationTitle": "Medicine and Science in Sports and Exercise",
"volume": "46",
"attachments": [
{
"title": "PubMed entry",
"mimeType": "text/html",
"snapshot": false
}
],
"tags": [
{
"tag": "Aged"
},
{
"tag": "Aged, 80 and over"
},
{
"tag": "Aging"
},
{
"tag": "Cardiovascular Diseases"
},
{
"tag": "Cardiovascular System"
},
{
"tag": "Cause of Death"
},
{
"tag": "Climate Change"
},
{
"tag": "Heat Stress Disorders"
},
{
"tag": "Humans"
},
{
"tag": "Skin Aging"
},
{
"tag": "Sports Medicine"
},
{
"tag": "Sweating"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Philipp Zumstein^https?://(psycnet|doi)\.apa\.org//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2017-2021 Philipp Zumstein
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
// Some test cases are only working in the browser with some AJAX loading:
// 1) http://psycnet.apa.org/PsycBOOKS/toc/10023
// 2) follow a link in a search
// 3) search page
// 4) journal page
//
// Moreover, after three test cases you have to load an psycnet url in the browser
// to avoid some automatic download detection.
function detectWeb(doc, url) {
if (url.includes('/search/display?')
|| url.includes('/record/')
|| url.includes('/fulltext/')
|| url.includes('/buy/')
|| url.includes('/doiLanding?doi=')) {
if (doc.getElementById('bookchapterstoc')) {
return "book";
}
else if (attr(doc, 'meta[property="og:type"]', 'content') == 'Chapter') {
return "bookSection";
}
else {
return "journalArticle";
}
}
if (url.includes('/search/results?') || url.includes('/journal/')) { // && getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('a.article-title');
for (var i = 0; i < rows.length; i++) {
var href = rows[i].href;
var title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
async function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
let items = await Zotero.selectItems(getSearchResults(doc, false));
if (!items) {
return;
}
for (let url of Object.keys(items)) {
await scrape(await requestDocument(url), url);
}
}
else {
await scrape(doc, url);
}
}
async function scrape(doc, url) {
var uid = await getIds(doc, url.replace(/#.*$/, ''));
if (!uid) {
throw new Error("ID not found");
}
var productCode;
var db = doc.getElementById('database') || doc.querySelector('doi-landing .meta span');
if (db) {
db = db.parentNode.textContent.toLowerCase();
if (db.includes('psycarticles')) {
productCode = 'PA';
}
else if (db.includes('psycbooks')) {
productCode = 'PB';
}
else if (db.includes('psycinfo')) {
productCode = 'PI';
}
else if (db.includes('psycextra')) {
productCode = 'PE';
}
}
else {
// default, e.g. if page is not completely loaded
productCode = 'PI';
}
var postData = JSON.stringify({
api: "record.exportRISFile",
params: {
UIDList: [{ UID: uid, ProductCode: productCode }],
exportType: "zotero"
}
});
var headers = {
'Content-Type': 'application/json',
Referer: url
};
let apiReturnData = await requestJSON('/api/request/record.exportRISFile', {
method: 'POST',
headers: headers,
body: postData,
});
if (apiReturnData && apiReturnData.isRisExportCreated) {
// 2. Download the requested data (after step 1)
let data = await requestText('/ris/download');
if (data.includes('Content: application/x-research-info-systems')) {
processRIS(data, doc);
}
else {
// sometimes (e.g. during testing) the data is not loaded
// but a meta redirect to a captcha page mentioning
Z.debug("The APA anomaly detection think we are doing "
+ "something unusual (sigh). Please reload any APA page e.g. "
+ "http://psycnet.apa.org/ in your browser and try again.");
Z.debug(data);
}
}
}
function processRIS(text, doc) {
var translator = Zotero.loadTranslator("import");
translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7");
translator.setString(text);
translator.setHandler("itemDone", function (obj, item) {
item.title = cleanTitle(item.title);
if (item.publication) item.publication = cleanTitle(item.publication);
if (item.bookTitle) item.bookTitle = cleanTitle(item.bookTitle);
if (item.series) item.series = cleanTitle(item.series);
if (item.place) item.place = item.place.replace(/\s+/g, ' ');
if (item.ISSN) item.ISSN = ZU.cleanISSN(item.ISSN);
for (var i = 0; i < item.tags.length; i++) {
item.tags[i] = item.tags[i].replace(/^\*/, '');
}
var pdfURL = attr(doc, 'a[href*="/fulltext"]', 'href');
if (pdfURL) {
item.attachments.push({
url: pdfURL,
title: "Full Text PDF",
mimeType: "application/pdf"
});
}
item.attachments.push({
title: "Snapshot",
document: doc
});
item.complete();
});
translator.translate();
}
// try to figure out ids that we can use for fetching RIS
async function getIds(doc, url) {
Z.debug('Finding IDs in ' + url);
// try to extract uid from the table
var uid = text(doc, '#uid + dd') || text(doc, '#bookUID');
if (uid) {
return uid;
}
// try to extract uid from the url
if (url.includes('/record/')) {
let m = url.match(/\/record\/([\d-]*)/);
if (m && m[1]) {
return m[1];
}
}
// DOI landing pages include a link to the /record/ page
if (url.includes('/doiLanding') && doc.querySelector('.title > a')) {
let m = attr(doc, '.title > a', 'href').match(/\/record\/([\d-]*)/);
if (m && m[1]) {
return m[1];
}
}
/** on the book pages, we can find the UID in
* the Front matter and Back matter links
*/
if (url.includes('/PsycBOOKS/')) {
var link = attr(doc, '.bookMatterLinks a', 'href');
if (link) {
let m = link.match(/\/fulltext\/([^&]+?)-(?:FRM|BKM)/i);
if (m && m[1]) {
return m[1];
}
}
}
/** for pages with buy.optionToBuy
* we can fetch the id from the url
* alternatively, the id is in a javascript section (this is messy)
*/
if (url.includes('/buy/')) {
let m = url.match(/\/buy\/([\d-]*)/);
if (m) {
return m[1];
}
m = doc.documentElement.textContent.match(/\bitemUID\s*=\s*(['"])(.*?)\1/);
if (m && m[2]) {
return m[2];
}
}
/** check for a purchase link
*/
var purchaseLink = attr(doc, 'a.purchase[href*="/buy/"]', 'href');
if (purchaseLink) {
let m = purchaseLink.match(/\/buy\/([\d-]*)/);
return m[1];
}
// Worst-case fallback if we're on a search result page: make some requests
if (url.includes('/search/display?')) {
let searchParams = new URL(url).searchParams;
let id = searchParams.get('id');
if (id) {
let searchObj = await requestJSON('/api/request/recentSearch.get', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
api: 'recentSearch.get',
params: {
id
}
})
});
let recordId = parseInt(searchParams.get('recordId'));
let recordWithCount = await requestJSON('/api/request/search.recordWithCount', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
api: 'search.recordWithCount',
params: {
...searchObj,
responseParameters: {
...searchObj.responseParameters,
start: recordId - 1,
rows: 1
}
}
})
});
return recordWithCount.results.result.doc[0].UID;
}
}
return false;
}
function cleanTitle(title) {
// delete point at the end of a title,
// except it looks like an abbreviation
if (/\b\w\.$/.test(title)) {
return title;
}
else {
return title.replace(/\.$/, '');
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://psycnet.apa.org/record/2004-16644-010",
"items": [
{
"itemType": "journalArticle",
"title": "Neuropsychology of Adults With Attention-Deficit/Hyperactivity Disorder: A Meta-Analytic Review",
"creators": [
{
"lastName": "Hervey",
"firstName": "Aaron S.",
"creatorType": "author"
},
{
"lastName": "Epstein",
"firstName": "Jeffery N.",
"creatorType": "author"
},
{
"lastName": "Curry",
"firstName": "John F.",
"creatorType": "author"
}
],
"date": "2004",
"DOI": "10.1037/0894-4105.18.3.485",
"ISSN": "1931-1559(Electronic),0894-4105(Print)",
"abstractNote": "A comprehensive, empirically based review of the published studies addressing neuropsychological performance in adults diagnosed with attention-deficit/hyperactivity disorder (ADHD) was conducted to identify patterns of performance deficits. Findings from 33 published studies were submitted to a meta-analytic procedure producing sample-size-weighted mean effect sizes across test measures. Results suggest that neuropsychological deficits are expressed in adults with ADHD across multiple domains of functioning, with notable impairments in attention, behavioral inhibition, and memory, whereas normal performance is noted in simple reaction time. Theoretical and developmental considerations are discussed, including the role of behavioral inhibition and working memory impairment. Future directions for research based on these findings are highlighted, including further exploration of specific impairments and an emphasis on particular tests and testing conditions. (PsycINFO Database Record (c) 2016 APA, all rights reserved)",
"issue": "3",
"libraryCatalog": "APA PsycNET",
"pages": "485-503",
"publicationTitle": "Neuropsychology",
"shortTitle": "Neuropsychology of Adults With Attention-Deficit/Hyperactivity Disorder",
"volume": "18",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [
{
"tag": "Attention Deficit Disorder with Hyperactivity"
},
{
"tag": "Behavioral Inhibition"
},
{
"tag": "Empirical Methods"
},
{
"tag": "Experimentation"
},
{
"tag": "Hyperkinesis"
},
{
"tag": "Inhibition (Personality)"
},
{
"tag": "Neuropsychological Assessment"
},
{
"tag": "Neuropsychology"
},
{
"tag": "Reaction Time"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://psycnet.apa.org/record/1956-05944-001",
"items": [
{
"itemType": "journalArticle",
"title": "Factor analysis of meaning",
"creators": [
{
"lastName": "Osgood",
"firstName": "Charles E.",
"creatorType": "author"
},
{
"lastName": "Suci",
"firstName": "George J.",
"creatorType": "author"
}
],
"date": "1955",
"DOI": "10.1037/h0043965",
"ISSN": "0022-1015(Print)",
"abstractNote": "Two factor analytic studies of meaningful judgments based upon the same sample of 50 bipolar descriptive scales are reported. Both analyses reveal three major connotative factors: evaluation, potency, and activity. These factors appear to be independent dimensions of the semantic space within which the meanings of concepts may be specified. (PsycINFO Database Record (c) 2016 APA, all rights reserved)",
"issue": "5",
"libraryCatalog": "APA PsycNET",
"pages": "325-338",
"publicationTitle": "Journal of Experimental Psychology",
"volume": "50",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [
{
"tag": "Factor Analysis"
},
{
"tag": "Factor Structure"
},
{
"tag": "Judgment"
},
{
"tag": "Meaning"
},
{
"tag": "Semantics"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://psycnet.apa.org/record/1992-98221-010",
"items": [
{
"itemType": "bookSection",
"title": "Catatonia: Tonic immobility: Evolutionary underpinnings of human catalepsy and catatonia",
"creators": [
{
"lastName": "Gallup Jr.",
"firstName": "Gordon G.",
"creatorType": "author"
},
{
"lastName": "Maser",
"firstName": "Jack D.",
"creatorType": "author"
}
],
"date": "1977",
"ISBN": "9780716703686 9780716703679",
"abstractNote": "tonic immobility [animal hypnosis] might be a useful laboratory analog or research model for catatonia / we have been collaborating on an interdisciplinary program of research in an effort to pinpoint the behavioral antecedents and biological bases for tonic immobility / attempt to briefly summarize our findings, and . . . discuss the implications of these data in terms of the model characteristics of tonic immobility / hypnosis / catatonia, catalepsy, and cataplexy / tonic immobility as a model for catatonia / fear potentiation / fear alleviation / fear or arousal / learned helplessness / neurological correlates / pharmacology and neurochemistry / genetic underpinnings / evolutionary considerations / implications for human psychopathology (PsycINFO Database Record (c) 2016 APA, all rights reserved)",
"bookTitle": "Psychopathology: Experimental models",
"libraryCatalog": "APA PsycNET",
"pages": "334-357",
"place": "New York, NY, US",
"publisher": "W H Freeman/Times Books/ Henry Holt & Co",
"series": "A series of books in psychology",
"shortTitle": "Catatonia",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [
{
"tag": "Animal Models"
},
{
"tag": "Catalepsy"
},
{
"tag": "Catatonia"
},
{
"tag": "Fear"
},
{
"tag": "Genetics"
},
{
"tag": "Neurology"
},
{
"tag": "Pharmacology"
},
{
"tag": "Tonic Immobility"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://psycnet.apa.org/record/2004-16329-000?doi=1",
"items": [
{
"itemType": "book",
"title": "The abnormal personality: A textbook",
"creators": [
{
"lastName": "White",
"firstName": "Robert W.",
"creatorType": "author"
}
],
"date": "1948",
"abstractNote": "The author's intent is to write about abnormal people in a way that will be valuable and interesting to students new to the subject. A first course in abnormal psychology is not intended to train specialists. Its goal is more general: it should provide the student with the opportunity to whet his interest, expand his horizons, register a certain body of new facts, and relate this to the rest of his knowledge about mankind. I have tried to present the subject in such a way as to emphasize its usefulness to all students of human nature. I have tried the experiment of writing two introductory chapters, one historical and the other clinical. This reflects my desire to set the subject-matter in a broad perspective and at the same time to anchor it in concrete fact. Next comes a block of six chapters designed to set forth the topics of maladjustment and neurosis. The two chapters on psychotherapy complete the more purely psychological or developmental part of the work. In the final chapter the problem of disordered personalities is allowed to expand to its full social dimensions. Treatment, care, and prevention call for social effort and social organization. I have sought to show some of the lines, both professional and nonprofessional, along which this effort can be expended. (PsycINFO Database Record (c) 2016 APA, all rights reserved)",
"extra": "DOI: 10.1037/10023-000",
"libraryCatalog": "APA PsycNET",
"numPages": "x, 617",
"place": "New York, NY, US",
"publisher": "Ronald Press Company",
"series": "The abnormal personality: A textbook",
"shortTitle": "The abnormal personality",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [
{
"tag": "Abnormal Psychology"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://psycnet.apa.org/buy/2004-16329-002",
"items": [
{
"itemType": "bookSection",
"title": "Clinical introduction: Examples of disordered personalities",
"creators": [
{
"lastName": "White",
"firstName": "Robert W.",
"creatorType": "author"
}
],
"date": "1948",
"abstractNote": "This chapter examines some representative examples of disordered personalities. The reader should be forewarned that the five cases described here will be frequently referred to in later chapters of the book. They display to advantage many of the problems and principles that will occupy us when we undertake to build up a systematic account of abnormal psychology. It will be assumed that the cases given in this chapter are well remembered, and with this in mind the reader should not only go through them but study and compare them rather carefully. The main varieties of disordered personalities and student attitudes toward abnormality are discussed before the case histories are presented. (PsycINFO Database Record (c) 2016 APA, all rights reserved)",
"bookTitle": "The abnormal personality: A textbook",
"extra": "DOI: 10.1037/10023-002",
"libraryCatalog": "APA PsycNET",
"pages": "54-101",
"place": "New York, NY, US",
"publisher": "Ronald Press Company",
"shortTitle": "Clinical introduction",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [
{
"tag": "Abnormal Psychology"
},
{
"tag": "Personality Disorders"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://psycnet.apa.org/buy/2010-19350-001",
"items": [
{
"itemType": "journalArticle",
"title": "Predicting behavior in economic games by looking through the eyes of the players",
"creators": [
{
"lastName": "Mellers",
"firstName": "Barbara A.",
"creatorType": "author"
},
{
"lastName": "Haselhuhn",
"firstName": "Michael P.",
"creatorType": "author"
},
{
"lastName": "Tetlock",
"firstName": "Philip E.",
"creatorType": "author"
},
{
"lastName": "Silva",
"firstName": "José C.",
"creatorType": "author"
},
{
"lastName": "Isen",
"firstName": "Alice M.",
"creatorType": "author"
}
],
"date": "2010",
"DOI": "10.1037/a0020280",
"ISSN": "1939-2222(Electronic),0096-3445(Print)",
"abstractNote": "Social scientists often rely on economic experiments such as ultimatum and dictator games to understand human cooperation. Systematic deviations from economic predictions have inspired broader conceptions of self-interest that incorporate concerns for fairness. Yet no framework can describe all of the major results. We take a different approach by asking players directly about their self-interest—defined as what they want to do (pleasure-maximizing options). We also ask players directly about their sense of fairness—defined as what they think they ought to do (fairness-maximizing options). Player-defined measures of self-interest and fairness predict (a) the majority of ultimatum-game and dictator-game offers, (b) ultimatum-game rejections, (c) exiting behavior (i.e., escaping social expectations to cooperate) in the dictator game, and (d) who cooperates more after a positive mood induction. Adopting the players' perspectives of self-interest and fairness permits better predictions about who cooperates, why they cooperate, and when they punish noncooperators. (PsycINFO Database Record (c) 2016 APA, all rights reserved)",
"issue": "4",
"libraryCatalog": "APA PsycNET",
"pages": "743-755",
"publicationTitle": "Journal of Experimental Psychology: General",
"volume": "139",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [
{
"tag": "Behavior"
},
{
"tag": "Cooperation"
},
{
"tag": "Economics"
},
{
"tag": "Emotional States"
},
{
"tag": "Games"
},
{
"tag": "Prediction"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://psycnet.apa.org/record/2010-09295-002",
"items": [
{
"itemType": "bookSection",
"title": "The self in vocational psychology: Object, subject, and project",
"creators": [
{
"lastName": "Savickas",
"firstName": "Mark L.",
"creatorType": "author"
}
],
"date": "2011",
"ISBN": "9781433808616 9781433808623",
"abstractNote": "In this chapter, I seek to redress vocational psychology’s inattention to the self and address the ambiguity of the meaning of self. To begin, I offer a chronological survey of vocational psychology’s three main views of human singularity. During succeeding historical eras, different aspects of human singularity interested vocational psychologists, so they developed a new set of terms and concepts to deal with shifts in the meaning of individuality. Over time, vocational psychology developed what Kuhn (2000) referred to as language communities, each with its own paradigm for understanding the self and vocational behavior. Because the self is fundamentally ambiguous, adherents to each paradigm describe it with an agreed on language and metaphors. Thus, each paradigm has a textual tradition, or way of talking about the self. As readers shall see, when they talk about individuals, differentialists use the language of personality, developmentalists use the language of personhood, and constructionists use the language of identity. (PsycINFO Database Record (c) 2017 APA, all rights reserved)",
"bookTitle": "Developing self in work and career: Concepts, cases, and contexts",
"extra": "DOI: 10.1037/12348-002",
"libraryCatalog": "APA PsycNET",
"pages": "17-33",
"place": "Washington, DC, US",
"publisher": "American Psychological Association",
"shortTitle": "The self in vocational psychology",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [
{
"tag": "Occupational Guidance"
},
{
"tag": "Personality"
},
{
"tag": "Self-Concept"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://psycnet.apa.org/search/results?id=e6cd5430-40d2-11ee-9aa2-b3e92ca9fef3",
"items": "multiple"
}
]
/** END TEST CASES **/
100Sebastian Karcher, Philipp Zumstein^https?://www\.foreignaffairs\.com/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2016-2022 Sebastian Karcher & Philipp Zumstein
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, _url) {
if (doc.getElementsByClassName('article-body-text').length) {
return "magazineArticle";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
let isIssues = /^https:\/\/[^/]+\/issues\/.+/.test(doc.location.href);
var items = {};
var found = false;
var rows = doc.querySelectorAll('article.article-card > a, div.article-data > h2.title > a');
for (let row of rows) {
let href = row.href;
let title;
if (isIssues) {
title = text(row, ".article-card-title");
}
else {
title = ZU.trimInternal(row.textContent);
}
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
async function doWeb(doc, url) {
if (detectWeb(doc, url) == 'multiple') {
let items = await Zotero.selectItems(getSearchResults(doc, false));
if (!items) return;
for (let url of Object.keys(items)) {
await scrape(await requestDocument(url));
}
}
else {
await scrape(doc, url);
}
}
async function scrape(doc, url = doc.location.href) {
var item = new Zotero.Item("magazineArticle");
var author = text(doc, '.article-byline-author');
var tags = doc.querySelectorAll('.article-footer--tag-item');
let issueNode = doc.querySelector(".article-header--metadata-date > a");
if (issueNode) {
var volumeTitle = ZU.trimInternal(issueNode.textContent.trim());
// the digits are yyyy/vol/num
let issueMatch = issueNode.href.match(/\/issues\/\d+\/(\d+)\/(\d+)$/);
if (issueMatch) {
item.volume = issueMatch[1];
item.issue = issueMatch[2];
}
}
if (volumeTitle) {
if (!item.extra) item.extra = "";
item.extra += `\nVolume Title: ${volumeTitle}`;
}
item.date = attr(doc, 'meta[property="article:published_time"]', 'content');
item.title = attr(doc, 'meta[property="og:title"]', 'content');
item.abstractNote = attr(doc, 'meta[name="abstract"]', 'content');
if (item.date) {
item.date = ZU.strToISO(item.date);
}
let authors = author.split(/, and|and |, /);
for (let aut of authors) {
item.creators.push(ZU.cleanAuthor(aut, "author"));
}
for (let tag of tags) {
item.tags.push(tag.textContent);
}
item.url = url;
item.attachments.push({ document: doc, title: "Snapshot" });
item.publicationTitle = "Foreign Affairs";
item.ISSN = "0015-7120";
item.language = "en-US";
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://www.foreignaffairs.com/issues/2012/91/01",
"defer": true,
"items": "multiple"
},
{
"type": "web",
"url": "https://www.foreignaffairs.com/reviews/capsule-review/2003-05-01/history-argentina-twentieth-century",
"items": [
{
"itemType": "magazineArticle",
"title": "A History of Argentina in the Twentieth Century",
"creators": [
{
"firstName": "Kenneth",
"lastName": "Maxwell",
"creatorType": "author"
}
],
"date": "2003-05-01",
"ISSN": "0015-7120",
"abstractNote": "A fascinating and well-translated account of Argentina's misadventures over the last century by one of that country's brightest historians. Absorbing vast amounts of British capital and tens of thousands of European immigrants, Argentina began the century with great promise. In 1914, with half of its population still foreign, a dynamic society had emerged that was both open and mobile.",
"extra": "Volume Title: May/June 2003",
"issue": "3",
"language": "en-US",
"libraryCatalog": "Foreign Affairs",
"publicationTitle": "Foreign Affairs",
"url": "https://www.foreignaffairs.com/reviews/capsule-review/2003-05-01/history-argentina-twentieth-century",
"volume": "82",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Argentina"
},
{
"tag": "Western Hemisphere"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.foreignaffairs.com/articles/middle-east/2012-01-01/time-attack-iran",
"items": [
{
"itemType": "magazineArticle",
"title": "Time to Attack Iran",
"creators": [
{
"firstName": "Matthew",
"lastName": "Kroenig",
"creatorType": "author"
}
],
"date": "2012-01-01",
"ISSN": "0015-7120",
"abstractNote": "Opponents of military action against Iran assume a U.S. strike would be far more dangerous than simply letting Tehran build a bomb. Not so, argues this former Pentagon defense planner. With a carefully designed attack, Washington could mitigate the costs and spare the region and the world from an unacceptable threat.",
"extra": "Volume Title: January/February 2012",
"issue": "1",
"language": "en-US",
"libraryCatalog": "Foreign Affairs",
"publicationTitle": "Foreign Affairs",
"url": "https://www.foreignaffairs.com/articles/middle-east/2012-01-01/time-attack-iran",
"volume": "91",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Arms Control & Disarmament"
},
{
"tag": "Defense & Military"
},
{
"tag": "Foreign Policy"
},
{
"tag": "Iran"
},
{
"tag": "Middle East"
},
{
"tag": "North America"
},
{
"tag": "Nuclear Weapons & Proliferation"
},
{
"tag": "Obama Administration"
},
{
"tag": "Persian Gulf"
},
{
"tag": "Security"
},
{
"tag": "Strategy & Conflict"
},
{
"tag": "U.S. Foreign Policy"
},
{
"tag": "United States"
},
{
"tag": "War & Military Strategy"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.foreignaffairs.com/articles/united-states/2014-08-11/print-less-transfer-more",
"items": [
{
"itemType": "magazineArticle",
"title": "Print Less but Transfer More",
"creators": [
{
"firstName": "Mark",
"lastName": "Blyth",
"creatorType": "author"
},
{
"firstName": "Eric",
"lastName": "Lonergan",
"creatorType": "author"
}
],
"date": "2014-08-11",
"ISSN": "0015-7120",
"abstractNote": "Most economists agree that the global economy is stagnating and that governments need to stimulate growth, but lowering interest rates still further could spur a damaging cycle of booms and busts. Instead, central banks should hand consumers cash directly.",
"extra": "Volume Title: September/October 2014",
"issue": "5",
"language": "en-US",
"libraryCatalog": "Foreign Affairs",
"publicationTitle": "Foreign Affairs",
"url": "https://www.foreignaffairs.com/articles/united-states/2014-08-11/print-less-transfer-more",
"volume": "93",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Asia"
},
{
"tag": "Economic Development"
},
{
"tag": "Europe"
},
{
"tag": "North America"
},
{
"tag": "United States"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.foreignaffairs.com/articles/india/2014-09-08/modi-misses-mark",
"items": [
{
"itemType": "magazineArticle",
"title": "Modi Misses the Mark",
"creators": [
{
"firstName": "Derek",
"lastName": "Scissors",
"creatorType": "author"
}
],
"date": "2014-09-08",
"ISSN": "0015-7120",
"abstractNote": "India needs fundamental change: its rural land rights system is a mess, its manufacturing sector has been strangled by labor market restrictions, and its states are poorly integrated. But, so far, Modi has squandered major opportunities to establish his economic vision.",
"language": "en-US",
"libraryCatalog": "Foreign Affairs",
"publicationTitle": "Foreign Affairs",
"url": "https://www.foreignaffairs.com/articles/india/2014-09-08/modi-misses-mark",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Economics"
},
{
"tag": "India"
},
{
"tag": "South Asia"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.foreignaffairs.com/world/spirals-delusion-artificial-intelligence-decision-making",
"items": [
{
"itemType": "magazineArticle",
"title": "Spirals of Delusion",
"creators": [
{
"firstName": "Henry",
"lastName": "Farrell",
"creatorType": "author"
},
{
"firstName": "Abraham",
"lastName": "Newman",
"creatorType": "author"
},
{
"firstName": "Jeremy",
"lastName": "Wallace",
"creatorType": "author"
}
],
"date": "2022-08-31",
"ISSN": "0015-7120",
"abstractNote": "How AI distorts decision-making and makes dictators more dangerous.",
"extra": "Volume Title: September/October 2022",
"issue": "5",
"language": "en-US",
"libraryCatalog": "Foreign Affairs",
"publicationTitle": "Foreign Affairs",
"url": "https://www.foreignaffairs.com/world/spirals-delusion-artificial-intelligence-decision-making",
"volume": "101",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Artificial Intelligence"
},
{
"tag": "Authoritarianism"
},
{
"tag": "Foreign Affairs: 100 Years"
},
{
"tag": "Intelligence"
},
{
"tag": "Politics & Society"
},
{
"tag": "Propaganda & Disinformation"
},
{
"tag": "Science & Technology"
},
{
"tag": "Security"
},
{
"tag": "World"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.foreignaffairs.com/search/argentina",
"defer": true,
"items": "multiple"
}
]
/** END TEST CASES **/
100Sebastian Karcher^https?://aquadocs\.org/(handle|discover|browse)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2023 Sebastian Karcher
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/handle/') && attr(doc, 'meta[name="DC.type"]', 'content')) {
let type = attr(doc, 'meta[name="DC.type"]', 'content');
// Z.debug(type);
return getType(type);
}
else if (getSearchResults(doc, true)) {
return 'multiple';
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.main-content .description-content a');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
async function doWeb(doc, url) {
if (detectWeb(doc, url) == 'multiple') {
let items = await Zotero.selectItems(getSearchResults(doc, false));
if (!items) return;
for (let url of Object.keys(items)) {
await scrape(url);
}
}
else {
await scrape(url);
}
}
function getType(string) {
string = string.toLowerCase();
if (string.includes("book_section") || string.includes("chapter")) {
return "bookSection";
}
else if (string.includes("book") || string.includes("monograph")) {
return "book";
}
else if (string.includes("report")) {
return "report";
}
else if (string.includes("proceedings") || string.includes("conference")) {
return "conferencePaper";
}
else {
return "journalArticle"; // default -- most of the catalog
}
}
async function scrape(url) {
let xmlURL = url.replace("/handle/", "/metadata/handle/").replace(/[?#].*$/, "") + "/mets.xml";
// Z.debug(xmlURL);
let xmlText = await requestText(xmlURL);
// Z.debug(xmlText)
let translator = Zotero.loadTranslator('import');
translator.setTranslator('2c05e2d1-a533-448f-aa20-e919584864cb'); // DIM
translator.setString(xmlText);
translator.setHandler('itemDone', (_obj, item) => {
for (let attachment of item.attachments) {
if (attachment.url && !attachment.url.startsWith("http")) {
attachment.url = "https://aquadocs.org" + attachment.url;
}
}
item.complete();
});
await translator.translate();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://aquadocs.org/handle/1834/42391",
"items": [
{
"itemType": "journalArticle",
"title": "Upwelling phenomenon in the marine regions of Southern Central of Vietnam: a review",
"creators": [
{
"firstName": "Hong Long",
"lastName": "Bui",
"creatorType": "author"
},
{
"firstName": "Minh Thu",
"lastName": "Phan",
"creatorType": "author"
}
],
"date": "2022",
"ISSN": "1859-3097",
"abstractNote": "Upwelling is an oceanographic phenomenon that involves the physical process and contributes to changes in chemistry, biology, and natural resources. So, systematically, it is the particular ecosystems of whole marine regions with the upwelling. The strong upwelling waters in South Central Regions of Vietnam have uncertain features of the East Vietnam Sea (Bien Dong) and special characteristics of a coastal upwelling area, recorded in international scientific papers in the twentieth century. Their first signals were discovered in the early 1930s through conceptual ideas. The upwelling phenomenon is officially confirmed by scientific results of marine investigations of the NAGA Expedition (1959–1961). The paper aims to review and discuss the physical from Vietnamese investigation and results since 1990s. The following factors are the most contributing to forming and developing the strong upwelling in Southern Central Waters: (1) Influence scale (Mezo- and micro-scale); (2) Forming causes and developing mechanism of upwelling phenomenon, such as monsoon, morphography, shoreline, and western boundary current system of the East Vietnam Sea; (3) Influence of the water-mass from Mekong River on the upwelling area; (4) Ecological environmental consequences; (5) Impacts of the atmospheric-oceanic interaction processes on the western EVS on upwelling. Additionally, the review has targeted findings of upwelling phenomenon mainly in Vietnamese waters based on remote sensing analysis and reanalysis data series to simulate their forming, mechanizing, fluctuating models and the impacts of upwelling in the EVS on resources and ecosystems. The coupled atmosphere-ocean models resulted the upwelling mechanisms and formation. The long-time series of upwelling phenomenon (Macroscale) were evaluated by remote sensing and reanalyzed data series. It is also providing the supplementing and detailing causes and mechanisms of upwelling formation; impacts and interactions of upwelling on marine physics and hydrodynamics (ocean vortexes, seawater temperature), biochemical (nutrients, plankton organisms), and resources (fish, seafood). Within the framework of strong upwelling waters in the Southern Central Regions (Vietnam), the review has not only mentioned partly clarified scientific results but also indicates the limitations and challenges which were faced and encountered in the forecasters of upwelling phenomena in the future.",
"issue": "2",
"language": "en",
"libraryCatalog": "AquaDocs",
"pages": "103-122",
"publicationTitle": "Vietnam of Journal Marine Science and Technology",
"shortTitle": "Upwelling phenomenon in the marine regions of Southern Central of Vietnam",
"url": "http://hdl.handle.net/1834/42391",
"volume": "22",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Natural resources"
},
{
"tag": "Upwelling phenomenon"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://aquadocs.org/handle/1834/20117?show=full",
"items": [
{
"itemType": "book",
"title": "M/V CONNECTED Coral Reef Restoration Monitoring Report, Monitoring Events 2004-2005. Florida Keys National Marine Sanctuary Monroe County, Florida",
"creators": [
{
"firstName": "Joe",
"lastName": "Schittone",
"creatorType": "author"
},
{
"firstName": "Erik C.",
"lastName": "Franklin",
"creatorType": "author"
},
{
"firstName": "J. Harold",
"lastName": "Hudson",
"creatorType": "author"
},
{
"firstName": "Jeff",
"lastName": "Anderson",
"creatorType": "author"
}
],
"date": "2006",
"abstractNote": "This document presents the results of the monitoring of a repaired coral reef injured by the M/V Connected vessel grounding incident of March 27, 2001. This groundingoccurred in Florida state waters within the boundaries of the Florida Keys National Marine Sanctuary (FKNMS). The National Oceanic and Atmospheric Administration (NOAA) and the Board of Trustees of the Internal Improvement Trust Fund of the State of Florida, (“State of Florida” or “state”) are the co-trustees for the natural resourceswithin the FKNMS and, thus, are responsible for mediating the restoration of the damaged marine resources and monitoring the outcome of the restoration actions. Therestoration monitoring program tracks patterns of biological recovery, determines the success of restoration measures, and assesses the resiliency to environmental andanthropogenic disturbances of the site over time.The monitoring program at the Connected site was to have included an assessment of the structural stability of installed restoration modules and biological condition of reattached corals performed on the following schedule: immediately (i.e., baseline), 1, 3, and 6 years after restoration and following a catastrophic event. Restoration of this site was completed on July 20, 2001. Due to unavoidable delays in the settlement of the case, the“baseline” monitoring event for this site occurred in July 2004. The catastrophic monitoring event occurred on August 31, 2004, some 2 ½ weeks after the passage of Hurricane Charley which passed nearby, almost directly over the Dry Tortugas. In September 2005, the year one monitoring event occurred shortly after the passage of Hurricane Katrina, some 70 km to the NW. This report presents the results of all three monitoring events. (PDF contains 37 pages.)",
"language": "en",
"libraryCatalog": "AquaDocs",
"place": "Silver Spring, MD",
"publisher": "NOAA/National Ocean Service/National Marine Sanctuary Program",
"series": "Marine Sanctuaries Conservation Series",
"url": "http://hdl.handle.net/1834/20117",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Acropora palmata"
},
{
"tag": "Coral"
},
{
"tag": "Ecology"
},
{
"tag": "Environment"
},
{
"tag": "Florida Keys National Marine Sanctuary"
},
{
"tag": "Grounding"
},
{
"tag": "Hurricane Charley"
},
{
"tag": "Hurricane Katrina"
},
{
"tag": "Management"
},
{
"tag": "Monitoring"
},
{
"tag": "Restoration"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://aquadocs.org/discover",
"items": "multiple"
},
{
"type": "web",
"url": "https://aquadocs.org/browse?type=subject&value=A.+gueldenstaedtii",
"items": "multiple"
},
{
"type": "web",
"url": "https://aquadocs.org/handle/1834/30052?show=full",
"items": [
{
"itemType": "bookSection",
"title": "Ecological Attribute Alteration: Measurement and Evaluation: Activity Assessment Routine: Ecological Systems Component, Ecological Systems Component Handbook",
"creators": [],
"date": "1978-08",
"abstractNote": "This technical paper is intended to provide a more complete treatment of implicit principles and assumptions contained in the user's manual for the ecological systems component of the activity assessment routine. The ecological systems component (ESC) defines a method for evaluating changes in an ecosystem which may result from resource use and consumption. This paper begins by characterizing an ecosystem as an organized collection of attributes mutually dependent on energy exchange. The magnitude matrix with which altered energy flows are scaled is described in Chapter 4. The magnitude of an alteration is assessed somewhat differently for the two categories of attributes: discussion of conventions relevant to this distinction is provided in Chapter 5. However, effects on attributes are variable through time, and additional remarks concerning duration are included in Chapter 6. Finally, possible exceptions to the general guidelines for designating the direction of an effect are introduced in Chapter 7.",
"bookTitle": "Ecological Systems Component Handbook",
"language": "en",
"libraryCatalog": "AquaDocs",
"place": "Austin, TX",
"publisher": "RPC, Inc.",
"series": "Technical Paper",
"shortTitle": "Ecological Attribute Alteration",
"url": "http://hdl.handle.net/1834/30052",
"attachments": [],
"tags": [
{
"tag": "Ecology"
},
{
"tag": "Management"
},
{
"tag": "coastal zone management"
},
{
"tag": "ecological assessment"
},
{
"tag": "evaluation"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://aquadocs.org/handle/1834/970?show=full",
"items": [
{
"itemType": "conferencePaper",
"title": "Report from the WPB on the Data Situation for Billfish",
"creators": [],
"date": "2000",
"conferenceName": "IOTC 3",
"language": "en",
"libraryCatalog": "AquaDocs",
"pages": "102-103",
"proceedingsTitle": "IOTC Proceedings no. 3",
"publisher": "IOTC",
"url": "http://hdl.handle.net/1834/970",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Billfisheries"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://aquadocs.org/handle/1834/31638?show=full",
"items": [
{
"itemType": "conferencePaper",
"title": "Introduction",
"creators": [
{
"firstName": "Caroline M.",
"lastName": "Isaacs",
"creatorType": "author"
}
],
"date": "1997",
"abstractNote": "The Thirteenth Annual PACLIM Workshop was held at the Asilomar Conference Center on April 14-17, 1996. Attended by about 100 registered participants, the workshop included 27 talks and 26 poster presentations. The talks consisted of a one-day theme session of seven 45-minute talks and two featured evening talks. Throughout the remainder of the meeting were nearly 20 shorter, 20-minute presentations. Poster presenters gave a short 1-2 minute introduction to their posters, which were displayed during the entire meeting.All presenters were invited to expand their abstracts into a manuscript for inclusion in the Proceedings volume, and nearly all presentations are included in manuscript or abstract form. In this Proceedings volume, manuscripts are presented first, and abstracts of talks and then posters follow.",
"conferenceName": "Thirteenth Annual Pacific Climate (PACLIM) Workshop",
"language": "en",
"libraryCatalog": "AquaDocs",
"pages": "1-8",
"url": "http://hdl.handle.net/1834/31638",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Atmospheric Sciences"
},
{
"tag": "Earth Sciences"
},
{
"tag": "Ecology"
},
{
"tag": "Limnology"
},
{
"tag": "Oceanography"
},
{
"tag": "PACLIM"
},
{
"tag": "hydrology"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Sebastian Karcherxml/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2022 Sebastian Karcher
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectImport() {
var text = Zotero.read(1000);
return text.includes("http://www.dspace.org/xmlns/dspace/dim");
}
function getType(string) {
string = string.toLowerCase();
if (string.includes("book_section") || string.includes("chapter")) {
return "bookSection";
}
else if (string.includes("book") || string.includes("monograph")) {
return "book";
}
else if (string.includes("report")) {
return "report";
}
else if (string.includes("proceedings") || string.includes("conference")) {
return "conferencePaper";
}
else {
return "journalArticle"; // default -- most of the catalog
}
}
function doImport() {
var xml = Zotero.getXML();
var ns = {
dim: 'http://www.dspace.org/xmlns/dspace/dim',
mets: 'http://www.loc.gov/METS/',
xlink: 'http://www.w3.org/TR/xlink/'
};
let type = ZU.xpathText(xml, '//dim:field[@element="type"]', ns);
var item = new Zotero.Item("journalArticle");
if (type) {
item.itemType = getType(type);
}
item.title = ZU.trimInternal(ZU.xpathText(xml, '//dim:field[@element="title"]', ns));
let abstract = ZU.xpath(xml, '//dim:field[@qualifier="abstract"]', ns);
if (abstract.length) {
item.abstractNote = abstract[0].textContent;
}
item.date = ZU.xpathText(xml, '//dim:field[@element="date" and @qualifier="issued"]', ns);
item.language = ZU.xpathText(xml, '//dim:field[@element="language"]', ns);
item.issue = ZU.xpathText(xml, '//dim:field[@element="bibliographicCitation" and @qualifier="issue"]', ns);
item.volume = ZU.xpathText(xml, '//dim:field[@element="bibliographicCitation" and @qualifier="volume"]', ns);
item.publicationTitle = ZU.xpathText(xml, '//dim:field[@element="title" and @qualifier="parent"]', ns);
if (!item.publicationTitle) {
item.publicationTitle = ZU.xpathText(xml, '//dim:field[@element="bibliographicCitation" and @qualifier="title"]', ns);
}
item.conferenceName = ZU.xpathText(xml, '//dim:field[@element="bibliographicCitation" and @qualifier="conferencename"]', ns);
item.publisher = ZU.xpathText(xml, '//dim:field[@element="publisher" and not(@qualifier="place")]', ns);
item.place = ZU.xpathText(xml, '//dim:field[@element="publisher" and @qualifier="place"]', ns);
item.series = ZU.xpathText(xml, '//dim:field[@element="relation" and @qualifier="ispartofseries"]', ns);
item.ISSN = ZU.xpathText(xml, '//dim:field[@element="identifier" and @qualifier="issn"]', ns);
let pages = ZU.xpathText(xml, '//dim:field[@element="format" and @qualifier="pagerange"]', ns);
if (pages) {
item.pages = pages.replace(/pp?\./i, "");
}
else if (ZU.xpathText(xml, '//dim:field[@element="bibliographicCitation" and @qualifier="stpage"]', ns)) {
item.pages = ZU.xpathText(xml, '//dim:field[@element="bibliographicCitation" and @qualifier="stpage"]', ns)
+ "-" + ZU.xpathText(xml, '//dim:field[@element="bibliographicCitation" and @qualifier="endpage"]', ns);
}
let numPages = ZU.xpathText(xml, '//dim:field[@element="format" and @qualifier="pages"]', ns);
if (numPages) {
item.numPages = numPages.replace(/pp?\.?/i, "");
}
item.url = ZU.xpathText(xml, '//dim:field[@element="identifier" and @qualifier="uri"]', ns); // using the handle
let authors = ZU.xpath(xml, '//dim:field[@element="contributor" and @qualifier="author"]', ns);
for (let author of authors) {
item.creators.push(ZU.cleanAuthor(author.textContent, "author", true));
}
let tags = ZU.xpath(xml, '//dim:field[@element="subject"]', ns);
for (let tag of tags) {
item.tags.push(tag.textContent);
}
// getting only the first PDF
let pdfURL = ZU.xpathText(xml, '//mets:file[@MIMETYPE="application/pdf"][1]/mets:FLocat/@xlink:href', ns);
if (pdfURL) {
item.attachments.push({ url: pdfURL, title: "Full Text PDF", mimeType: "application/pdf" });
}
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "import",
"input": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n <mets:METS xmlns:mets=\"http://www.loc.gov/METS/\" xmlns:xlink=\"http://www.w3.org/TR/xlink/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dim=\"http://www.dspace.org/xmlns/dspace/dim\" PROFILE=\"DSPACE METS SIP Profile 1.0\" LABEL=\"DSpace Item\" OBJID=\"/handle/1834/20117\" ID=\"hdl:1834/20117\" OBJEDIT=\"/admin/item?itemID=17862\">\r\n <mets:dmdSec GROUPID=\"group_dmd_0\" ID=\"dmd_1\">\r\n <mets:mdWrap OTHERMDTYPE=\"DIM\" MDTYPE=\"OTHER\">\r\n <mets:xmlData>\r\n <dim:dim dspaceType=\"ITEM\">\r\n <dim:field qualifier=\"author\" authority=\"a80664eb5ce92c976de86df05479756e\" confidence=\"UNCERTAIN\" mdschema=\"dc\" element=\"contributor\">Schittone, Joe</dim:field>\r\n <dim:field qualifier=\"author\" authority=\"ffe0a5ba180ba325e66815a10079ce12\" confidence=\"UNCERTAIN\" mdschema=\"dc\" element=\"contributor\">Franklin, Erik C.</dim:field>\r\n <dim:field qualifier=\"author\" authority=\"c1c40f364e922b7700f22e1199138365\" confidence=\"UNCERTAIN\" mdschema=\"dc\" element=\"contributor\">Hudson, J. Harold</dim:field>\r\n <dim:field qualifier=\"author\" authority=\"86462809e751c2d6b701daf4c232599b\" confidence=\"UNCERTAIN\" mdschema=\"dc\" element=\"contributor\">Anderson, Jeff</dim:field>\r\n <dim:field qualifier=\"accessioned\" mdschema=\"dc\" element=\"date\">2021-06-24T15:18:40Z</dim:field>\r\n <dim:field qualifier=\"available\" mdschema=\"dc\" element=\"date\">2021-06-24T15:18:40Z</dim:field>\r\n <dim:field qualifier=\"issued\" mdschema=\"dc\" element=\"date\">2006</dim:field>\r\n <dim:field qualifier=\"uri\" mdschema=\"dc\" element=\"identifier\">http://hdl.handle.net/1834/20117</dim:field>\r\n <dim:field qualifier=\"abstract\" mdschema=\"dc\" element=\"description\">This document presents the results of the monitoring of a repaired coral reef injured by the M/V Connected vessel grounding incident of March 27, 2001. This groundingoccurred in Florida state waters within the boundaries of the Florida Keys National Marine Sanctuary (FKNMS). The National Oceanic and Atmospheric Administration (NOAA) and the Board of Trustees of the Internal Improvement Trust Fund of the State of Florida, (“State of Florida” or “state”) are the co-trustees for the natural resourceswithin the FKNMS and, thus, are responsible for mediating the restoration of the damaged marine resources and monitoring the outcome of the restoration actions. Therestoration monitoring program tracks patterns of biological recovery, determines the success of restoration measures, and assesses the resiliency to environmental andanthropogenic disturbances of the site over time.The monitoring program at the Connected site was to have included an assessment of the structural stability of installed restoration modules and biological condition of reattached corals performed on the following schedule: immediately (i.e., baseline), 1, 3, and 6 years after restoration and following a catastrophic event. Restoration of this site was completed on July 20, 2001. Due to unavoidable delays in the settlement of the case, the“baseline” monitoring event for this site occurred in July 2004. The catastrophic monitoring event occurred on August 31, 2004, some 2 ½ weeks after the passage of Hurricane Charley which passed nearby, almost directly over the Dry Tortugas. In September 2005, the year one monitoring event occurred shortly after the passage of Hurricane Katrina, some 70 km to the NW. This report presents the results of all three monitoring events. (PDF contains 37 pages.)</dim:field>\r\n <dim:field mdschema=\"dc\" element=\"format\">application/pdf</dim:field>\r\n <dim:field qualifier=\"mimetype\" mdschema=\"dc\" element=\"format\">application/pdf</dim:field>\r\n <dim:field qualifier=\"iso\" mdschema=\"dc\" element=\"language\">en</dim:field>\r\n <dim:field mdschema=\"dc\" element=\"publisher\">NOAA/National Ocean Service/National Marine Sanctuary Program</dim:field>\r\n <dim:field qualifier=\"ispartofseries\" mdschema=\"dc\" element=\"relation\">Marine Sanctuaries Conservation Series</dim:field>\r\n <dim:field qualifier=\"uri\" mdschema=\"dc\" element=\"relation\">http://sanctuaries.noaa.gov/science/conservation/pdfs/connected.pdf</dim:field>\r\n <dim:field qualifier=\"other\" mdschema=\"dc\" element=\"subject\">Ecology</dim:field>\r\n <dim:field qualifier=\"other\" mdschema=\"dc\" element=\"subject\">Management</dim:field>\r\n <dim:field qualifier=\"other\" mdschema=\"dc\" element=\"subject\">Environment</dim:field>\r\n <dim:field qualifier=\"other\" mdschema=\"dc\" element=\"subject\">Florida Keys National Marine Sanctuary</dim:field>\r\n <dim:field qualifier=\"other\" mdschema=\"dc\" element=\"subject\">Coral</dim:field>\r\n <dim:field qualifier=\"other\" mdschema=\"dc\" element=\"subject\">Grounding</dim:field>\r\n <dim:field qualifier=\"other\" mdschema=\"dc\" element=\"subject\">Restoration</dim:field>\r\n <dim:field qualifier=\"other\" mdschema=\"dc\" element=\"subject\">Monitoring</dim:field>\r\n <dim:field qualifier=\"other\" mdschema=\"dc\" element=\"subject\">Hurricane Charley</dim:field>\r\n <dim:field qualifier=\"other\" mdschema=\"dc\" element=\"subject\">Hurricane Katrina</dim:field>\r\n <dim:field qualifier=\"other\" mdschema=\"dc\" element=\"subject\">Acropora palmata</dim:field>\r\n <dim:field mdschema=\"dc\" element=\"title\">M/V CONNECTED Coral Reef Restoration Monitoring Report,\r\n Monitoring Events 2004-2005. Florida Keys National Marine Sanctuary Monroe County, Florida</dim:field>\r\n <dim:field mdschema=\"dc\" element=\"type\">monograph</dim:field>\r\n <dim:field qualifier=\"issue\" mdschema=\"dc\" element=\"bibliographicCitation\">NMSP-0</dim:field>\r\n <dim:field qualifier=\"place\" mdschema=\"dc\" element=\"publisher\">Silver Spring, MD</dim:field>\r\n <dim:field mdschema=\"refterms\" element=\"dateFOA\">2021-06-24T15:18:40Z</dim:field>\r\n <dim:field qualifier=\"legacyrecordurl\" mdschema=\"dc\" element=\"source\">http://aquaticcommons.org/id/eprint/2312</dim:field>\r\n <dim:field qualifier=\"legacydepositorid\" mdschema=\"dc\" element=\"source\">403</dim:field>\r\n <dim:field qualifier=\"legacylastmod\" mdschema=\"dc\" element=\"source\">2011-09-29 19:16:51</dim:field>\r\n <dim:field qualifier=\"legacyid\" mdschema=\"dc\" element=\"source\">2312</dim:field>\r\n <dim:field qualifier=\"legacyagency\" mdschema=\"dc\" element=\"source\">United States National Ocean Service</dim:field>\r\n </dim:dim>\r\n </mets:xmlData>\r\n </mets:mdWrap>\r\n </mets:dmdSec>\r\n <mets:fileSec>\r\n <mets:fileGrp USE=\"THUMBNAIL\">\r\n <mets:file GROUPID=\"group_file_66843\" CHECKSUM=\"73e73b5a14ff38efe11d6b1dacd570fa\" MIMETYPE=\"image/jpeg\" SIZE=\"154876\" ID=\"file_124081\" CHECKSUMTYPE=\"MD5\">\r\n <mets:FLocat LOCTYPE=\"URL\" xlink:label=\"Generated Thumbnail\" xlink:href=\"/bitstream/handle/1834/20117/connected.pdf.jpg?sequence=3&isAllowed=y\" xlink:type=\"locator\" xlink:title=\"connected.pdf.jpg\"/>\r\n </mets:file>\r\n </mets:fileGrp>\r\n <mets:fileGrp USE=\"TEXT\">\r\n <mets:file GROUPID=\"group_file_66843\" CHECKSUM=\"629fd05b10aeea0c6cbb759a42cf2241\" MIMETYPE=\"text/plain\" SIZE=\"49772\" ID=\"file_124080\" CHECKSUMTYPE=\"MD5\">\r\n <mets:FLocat LOCTYPE=\"URL\" xlink:label=\"Extracted text\" xlink:href=\"/bitstream/handle/1834/20117/connected.pdf.txt?sequence=2&isAllowed=y\" xlink:type=\"locator\" xlink:title=\"connected.pdf.txt\"/>\r\n </mets:file>\r\n </mets:fileGrp>\r\n <mets:fileGrp USE=\"CONTENT\">\r\n <mets:file GROUPID=\"group_file_66843\" CHECKSUM=\"ccf6b4d9996fdafa3eafd3ce981abf20\" MIMETYPE=\"application/pdf\" SIZE=\"3069632\" ID=\"file_66843\" CHECKSUMTYPE=\"MD5\">\r\n <mets:FLocat LOCTYPE=\"URL\" xlink:href=\"/bitstream/handle/1834/20117/connected.pdf?sequence=1&isAllowed=y\" xlink:type=\"locator\" xlink:title=\"connected.pdf\"/>\r\n </mets:file>\r\n </mets:fileGrp>\r\n </mets:fileSec>\r\n <mets:structMap LABEL=\"DSpace\" TYPE=\"LOGICAL\">\r\n <mets:div DMDID=\"dmd_1\" TYPE=\"DSpace Item\">\r\n <mets:div ID=\"div_2\" TYPE=\"DSpace Content Bitstream\">\r\n <mets:fptr FILEID=\"file_66843\"/>\r\n </mets:div>\r\n </mets:div>\r\n </mets:structMap>\r\n </mets:METS>",
"items": [
{
"itemType": "book",
"title": "M/V CONNECTED Coral Reef Restoration Monitoring Report, Monitoring Events 2004-2005. Florida Keys National Marine Sanctuary Monroe County, Florida",
"creators": [
{
"firstName": "Joe",
"lastName": "Schittone",
"creatorType": "author"
},
{
"firstName": "Erik C.",
"lastName": "Franklin",
"creatorType": "author"
},
{
"firstName": "J. Harold",
"lastName": "Hudson",
"creatorType": "author"
},
{
"firstName": "Jeff",
"lastName": "Anderson",
"creatorType": "author"
}
],
"date": "2006",
"abstractNote": "This document presents the results of the monitoring of a repaired coral reef injured by the M/V Connected vessel grounding incident of March 27, 2001. This groundingoccurred in Florida state waters within the boundaries of the Florida Keys National Marine Sanctuary (FKNMS). The National Oceanic and Atmospheric Administration (NOAA) and the Board of Trustees of the Internal Improvement Trust Fund of the State of Florida, (“State of Florida” or “state”) are the co-trustees for the natural resourceswithin the FKNMS and, thus, are responsible for mediating the restoration of the damaged marine resources and monitoring the outcome of the restoration actions. Therestoration monitoring program tracks patterns of biological recovery, determines the success of restoration measures, and assesses the resiliency to environmental andanthropogenic disturbances of the site over time.The monitoring program at the Connected site was to have included an assessment of the structural stability of installed restoration modules and biological condition of reattached corals performed on the following schedule: immediately (i.e., baseline), 1, 3, and 6 years after restoration and following a catastrophic event. Restoration of this site was completed on July 20, 2001. Due to unavoidable delays in the settlement of the case, the“baseline” monitoring event for this site occurred in July 2004. The catastrophic monitoring event occurred on August 31, 2004, some 2 ½ weeks after the passage of Hurricane Charley which passed nearby, almost directly over the Dry Tortugas. In September 2005, the year one monitoring event occurred shortly after the passage of Hurricane Katrina, some 70 km to the NW. This report presents the results of all three monitoring events. (PDF contains 37 pages.)",
"language": "en",
"place": "Silver Spring, MD",
"publisher": "NOAA/National Ocean Service/National Marine Sanctuary Program",
"series": "Marine Sanctuaries Conservation Series",
"url": "http://hdl.handle.net/1834/20117",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Acropora palmata"
},
{
"tag": "Coral"
},
{
"tag": "Ecology"
},
{
"tag": "Environment"
},
{
"tag": "Florida Keys National Marine Sanctuary"
},
{
"tag": "Grounding"
},
{
"tag": "Hurricane Charley"
},
{
"tag": "Hurricane Katrina"
},
{
"tag": "Management"
},
{
"tag": "Monitoring"
},
{
"tag": "Restoration"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Abe Jellinek^https://www\.preprints\.org//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2022 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
let preprintType = ZU.fieldIsValidForType('title', 'preprint')
? 'preprint'
: 'manuscript';
function detectWeb(doc, url) {
if (url.includes('/manuscript/')) {
if (doc.querySelector('.peer-reviewed-box')) {
return 'journalArticle';
}
else {
return preprintType;
}
}
else if (getSearchResults(doc, true)) {
return 'multiple';
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.row a.title[href*="/manuscript/"]');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
async function doWeb(doc, url) {
if (detectWeb(doc, url) == 'multiple') {
let items = await Zotero.selectItems(getSearchResults(doc, false));
if (!items) return;
for (let url of Object.keys(items)) {
await scrape(await requestDocument(url));
}
}
else {
await scrape(doc, url);
}
}
async function scrape(doc, url) {
if (doc.querySelector('.peer-reviewed-box')) {
let doiNode = doc.querySelector('.peer-reviewed-box .journal-ref');
if (doiNode) {
let DOI = doiNode.lastChild.nodeValue;
if (DOI) DOI = ZU.cleanDOI(DOI);
if (DOI) {
await scrapeDOI(DOI);
}
}
else {
await scrapePublisher(attr(doc, '.peer-reviewed-box a', 'href'));
}
}
else {
await scrapeEM(doc, url);
}
}
async function scrapeDOI(DOI) {
let translator = Zotero.loadTranslator('search');
translator.setSearch({ DOI });
translator.setHandler('translators', (_, translators) => {
translator.setTranslator(translators);
});
await translator.getTranslators();
await translator.translate();
}
// Just a failsafe in case there's no DOI
async function scrapePublisher(url) {
let doc = await requestDocument(url);
let translator = Zotero.loadTranslator('web');
translator.setDocument(doc);
translator.setHandler('translators', (_, translators) => {
translator.setTranslator(translators);
});
await translator.getTranslators();
await translator.translate();
}
async function scrapeEM(doc, url = doc.location.href) {
let translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', (_obj, item) => {
item.attachments = item.attachments.filter(a => a.title != 'Snapshot');
item.libraryCatalog = 'Preprints.org';
try {
item.archiveID = url.match(/\/manuscript\/([^/?#]+)/)[1].replace('.', '');
}
catch (e) {}
item.complete();
});
let em = await translator.getTranslatorObject();
em.itemType = preprintType;
await em.doWeb(doc, url);
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.preprints.org/manuscript/201805.0444/v1",
"items": [
{
"itemType": "journalArticle",
"title": "Encapsulation of Droplets Using Cusp Formation behind a Drop Rising in a Non-Newtonian Fluid",
"creators": [
{
"creatorType": "author",
"firstName": "Raphaël",
"lastName": "Poryles"
},
{
"creatorType": "author",
"firstName": "Roberto",
"lastName": "Zenit"
}
],
"date": "2018-08-01",
"DOI": "10.3390/fluids3030054",
"ISSN": "2311-5521",
"abstractNote": "The rising of a Newtonian oil drop in a non-Newtonian viscous solution is studied experimentally. In this case, the shape of the ascending drop is strongly affected by the viscoelastic and shear-thinning properties of the surrounding liquid. We found that the so-called velocity discontinuity phenomena is observed for drops larger than a certain critical size. Beyond the critical velocity, the formation of a long tail is observed, from which small droplets are continuously emitted. We determined that the fragmentation of the tail results mainly from the effect of capillary effects. We explore the idea of using this configuration as a new encapsulation technique, where the size and frequency of droplets are directly related to the volume of the main rising drop, for the particular pair of fluids used. These experimental results could lead to other investigations, which could help to predict the droplet formation process by tuning the two fluids’ properties, and adjusting only the volume of the main drop.",
"issue": "3",
"journalAbbreviation": "Fluids",
"language": "en",
"libraryCatalog": "DOI.org (Crossref)",
"pages": "54",
"publicationTitle": "Fluids",
"url": "http://www.mdpi.com/2311-5521/3/3/54",
"volume": "3",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.preprints.org/manuscript/202202.0276/v1",
"items": [
{
"itemType": "preprint",
"title": "Presence of Crystals in the Synovial Fluid of Patients With Psoriatic Arthritis",
"creators": [
{
"firstName": "Stanislava Dimitrova",
"lastName": "Popova-Belova",
"creatorType": "author"
},
{
"firstName": "Mariela Gencheva",
"lastName": "Geneva-Popova",
"creatorType": "author"
},
{
"firstName": "Velichka Zaharieva",
"lastName": "Popova",
"creatorType": "author"
},
{
"firstName": "Krasimir Iliev",
"lastName": "Kraev",
"creatorType": "author"
},
{
"firstName": "Anastas Zgurov",
"lastName": "Batalov",
"creatorType": "author"
}
],
"date": "2022-02-22",
"DOI": "10.20944/preprints202202.0276.v1",
"abstractNote": "Analyzing synovial fluid from joints affected by the pathological process of psoriatic arthritis is part of the overall patient examination, since it may have differential diagnostic significance. The purpose of this study was to assess the presence of crystals in the synovial fluid of psoriatic arthritis patients as biomarkers for disease activity. Materials and methods: The synovial fluid of 156 patients with proven PSA diagnosis (patients covered CASPAR criteria) was analyzed over 24 months and compared to 50 patients with activated gonarthrosis. The Leica DM4500P polarization microscope (Leica Microsystems, Germany) was used for crystal detection. Pain and disease activity measures were also evaluated (PSA VAS for pain, DAPSA, PASDAI, mCPDAI, and HAQ-DI). The statistical analysis was carried out using SPSS version 26 with a significance set at p < 0.05. Results: The macroscopic appearance of synovial fluid from patients with psoriatic arthritis was clear in 84.6% of the patients. Synovial fluid crystals were found in 23.71% of patients with psoriatic arthritis - predominantly monosodium urate (67.58%) but also calcium pyrophosphate (21.62%) and lipid drops (5.4%). The presence of monosodium urate crystals significantly correlates with all pain and disease activity measures – VAS for pain, DAPSA, PASDAI, mCPDAI, and HAQ-DI. In 67.56% of patients with established crystals treatment with an anti-TNF blocker was started at the discretion of the treating rheumatologist due to high levels of disease activity. Conclusion: Examining the synovial fluid in PSA patients is a necessary minimally invasive procedure in cases of joint effusion, since the presence of synovial fluid crystals is a significant indicator of disease severity. The current analyses demonstrate that the presence of synovial fluid crystals in PSA patients can be used as a biomarker for disease severity and the necessity to commence biological treatment (most often TNF-a-blocker).",
"archiveID": "2022020276",
"language": "en",
"libraryCatalog": "Preprints.org",
"repository": "Preprints",
"url": "https://www.preprints.org/manuscript/202202.0276/v1",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "PSA"
},
{
"tag": "biomarker"
},
{
"tag": "crystals"
},
{
"tag": "synovial fluid"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.preprints.org/manuscript/201810.0525/v2",
"items": [
{
"itemType": "preprint",
"title": "Scaling Law for Liquid Splashing inside a Container Drop Impact on a Solid Surface",
"creators": [
{
"firstName": "Bohua",
"lastName": "Sun",
"creatorType": "author"
}
],
"date": "2018-11-15",
"DOI": "10.20944/preprints201810.0525.v2",
"abstractNote": "This letter attempts to find splashing height of liquid-filled container drop impact to a solid surface by dimensional analysis (DA). Two solutions were obtained by both traditional DA and directed DA without solving any governing equations. It is found that the directed DA can provide much more useful information than the traditional one. This study shows that the central controlling parameter is called splash number $\\mathrm{Sp}=\\mathrm{Ga} \\mathrm{La}^\\beta=(\\frac{gR^3}{\\nu^2})(\\frac{\\sigma R}{\\rho \\nu^2})^\\beta$, which is the collective performance of each quantity. The splash height is given by $ \\frac{h}{H}=(\\frac{\\rho\\nu^2}{\\sigma R})^\\alpha f[\\frac{gR^3}{\\nu^2}(\\frac{R\\sigma}{\\rho\\nu^2})^\\beta]=\\frac{1}{\\mathrm{La}^\\alpha}f(\\mathrm{Ga}\\cdot \\mathrm{La}^\\beta)$. From the physics of the splashing number, we can have a fair good picture on the physics of the liquid splashing as follows: the jets propagation will generate vortex streets from the container bottom due to sudden pressure increasing from drop impact (water-hammer effect), which will travel along the container sidewall to the centre of the container and subsequently excite a gravity wave on the liquid surface. The interaction between the gravitational force, surface force and viscous force is responsible for creating droplet splash at the liquid surface.",
"archiveID": "2018100525",
"language": "en",
"libraryCatalog": "Preprints.org",
"repository": "Preprints",
"url": "https://www.preprints.org/manuscript/201810.0525/v2",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "dimensional analysis"
},
{
"tag": "directed dimensional analysis"
},
{
"tag": "liquid splashing"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.preprints.org/search?search1=fluid&field1=title_keywords&search2=fluid&field2=assigned_doi&clause=OR",
"items": "multiple"
}
]
/** END TEST CASES **/
100Sebastian Karcher^https?://(www\.)?eric\.ed\.gov//*
Translator
Copyright (C) 2013 Sebastian Karcher
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
function detectWeb(doc, url) {
if (/id=E[JD]\d+/.test(url)) {
return findType(doc, url);
}
else if (getSearchResults(doc, false)) {
return "multiple";
}
return false;
}
function getType(ericID, publicationType) {
// Trying to do reasonable guesses for non-journal types
if (ericID.startsWith("ED")) {
if (publicationType) {
if (publicationType.includes("Books")) {
return "book";
}
else if (publicationType.includes("Dissertations/Theses")) {
return "thesis";
}
else {
return "report";
}
}
else {
// Report is the most plausible fallback
return "report";
}
}
else {
return "journalArticle";
}
}
function findType(doc, url) {
var ericID = url.match(/id=(E[JD]\d+)/)[1];
var typeSecondary = ZU.xpathText(doc, '//div[@class="sInfo"]//div[strong[contains(text(), "Publication Type")]]');
return getType(ericID, typeSecondary);
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll("div.r_t > a[href*='id=']");
for (var i = 0; i < rows.length; i++) {
var href = rows[i].href;
var title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
async function doWeb(doc, url) {
if (detectWeb(doc, url) == 'multiple') {
let items = await Zotero.selectItems(getSearchResults(doc, false));
if (!items) return;
for (let url of Object.keys(items)) {
await scrape(await requestDocument(url));
}
}
else {
await scrape(doc, url);
}
}
async function scrape(doc, url = doc.location.href) {
var abstract = ZU.xpathText(doc, '//div[@class="abstract"]');
var DOI = ZU.xpathText(doc, '//a[contains(text(), "Direct link")]/@href');
var ericID = url.match(/id=(E[JD]\d+)/)[1];
var authorString = ZU.xpathText(doc, '//meta[@name="citation_author"]/@content');
let translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', (_obj, item) => {
if (abstract) item.abstractNote = abstract.replace(/^\|/, "");
item.title = item.title.replace(/.\s*$/, "");
item.itemType = findType(doc, url);
if (authorString.includes("|")) {
item.creators = [];
var authors = authorString.split("|");
for (var i = 0; i < authors.length; i++) {
item.creators.push(ZU.cleanAuthor(authors[i], "author", true));
}
}
if (item.ISSN) {
Z.debug(item.ISSN);
item.ISSN = ZU.cleanISSN(item.ISSN.replace(/ISSN-/, ""));
}
if (item.ISBN) item.ISBN = ZU.cleanISBN(item.ISBN.replace('ISBN', ''));
if (item.publisher) item.publisher = item.publisher.replace(/\..+/, "");
if (DOI) {
item.DOI = ZU.cleanDOI(decodeURIComponent(DOI));
}
if (item.itemType == "journalArticle" && item.publisher == item.publicationTitle) {
delete item.publisher; // Publisher & Publication Title are often identical
}
item.extra = "ERIC Number: " + ericID;
// Only include URL if full text is hosted on ERIC
if (!ZU.xpath(doc, '//div[@id="r_colR"]//img[@alt="PDF on ERIC"]').length) {
delete item.url;
}
else {
// use clean URL
item.url = "https://eric.ed.gov/?id=" + ericID;
}
item.libraryCatalog = "ERIC";
item.complete();
});
let em = await translator.getTranslatorObject();
await em.doWeb(doc, url);
}
function cleanInput(search) {
if (typeof search === 'string') {
search = { ericNumber: search };
}
if (typeof search.ericNumber !== 'string') {
return false;
}
let matches = search.ericNumber.match(/E[DJ]\d+/);
if (matches) {
search.ericNumber = matches[0];
return search;
}
else {
return false;
}
}
function detectSearch(search) {
return !!cleanInput(search);
}
async function doSearch(search) {
search = cleanInput(search);
let { response } = await requestJSON(`https://api.ies.ed.gov/eric/?search=id:${search.ericNumber}&format=json&fields=*`);
if (!response.docs || !response.docs.length) {
throw new Error('ERIC search returned no results');
}
let doc = response.docs[0];
let item = new Zotero.Item(getType(doc.id, doc.publicationtype.join('; ')));
item.title = ZU.unescapeHTML(doc.title);
item.creators.push(...doc.author.map(name => ZU.cleanAuthor(name, 'author', true)));
item.abstractNote = doc.description || doc.desc;
if (item.abstractNote) {
item.abstractNote = ZU.unescapeHTML(item.abstractNote);
}
item.ISBN = doc.isbn && ZU.cleanISBN(doc.isbn.join(' '));
item.ISSN = doc.issn && ZU.cleanISSN(doc.issn.join(' ').replace(/ISSN-/g, ''));
item.DOI = doc.url && ZU.cleanDOI(decodeURIComponent(doc.url));
item.language = doc.language && doc.language[0];
item.date = ZU.strToISO(doc.publicationdate || doc.publicationdateyear);
item.publisher = doc.publisher && doc.publisher.split('. ')[0];
item.numPages = doc.pagecount;
if (item.itemType == 'report') {
item.institution = doc.institution;
}
else {
item.publicationTitle = doc.source || doc.institution;
let matches = doc.sourceid && doc.sourceid.match(/(v\d+)?\s*(n\d+)?\s*(p[\d-]+)?/);
if (matches) {
let [, volume, number, pages] = matches;
item.volume = volume && volume.substring(1);
item.issue = number && number.substring(1);
item.pages = pages && pages.substring(1);
}
}
item.extra = `ERIC Number: ${doc.id}`;
item.tags = doc.subject.map(subject => ({ tag: subject }));
if (doc.e_fulltextauth) {
item.attachments.push({
title: 'Full Text PDF',
mimeType: 'application/pdf',
url: `https://files.eric.ed.gov/fulltext/${doc.id}.pdf`
});
item.url = `https://eric.ed.gov/?id=${doc.id}`;
// Don't bother including the URL in doc.url: it's usually just the publisher's homepage
// and not relevant to the item
}
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://eric.ed.gov/?id=EJ956651",
"items": [
{
"itemType": "journalArticle",
"title": "Collaborating with Parents to Establish Behavioral Goals in Child-Centered Play Therapy",
"creators": [
{
"firstName": "Phyllis B.",
"lastName": "Post",
"creatorType": "author"
},
{
"firstName": "Peggy L.",
"lastName": "Ceballos",
"creatorType": "author"
},
{
"firstName": "Saundra L.",
"lastName": "Penn",
"creatorType": "author"
}
],
"date": "2012/01/00",
"DOI": "10.1177/1066480711425472",
"ISSN": "1066-4807",
"abstractNote": "The purpose of this article is to provide specific guidelines for child-centered play therapists to set behavioral outcome goals to effectively work with families and to meet the demands for accountability in the managed care environment. The child-centered play therapy orientation is the most widely practiced approach among play therapists who identify a specific theoretical orientation. While information about setting broad objectives is addressed using this approach to therapy, explicit guidelines for setting behavioral goals, while maintaining the integrity of the child-centered theoretical orientation, are needed. The guidelines are presented in three phases of parent consultation: (a) the initial engagement with parents, (b) the ongoing parent consultations, and (c) the termination phase. In keeping with the child-centered approach, the authors propose to work with parents from a person-centered orientation and seek to appreciate how cultural influences relate to parents' concerns and goals for their children. A case example is provided to demonstrate how child-centered play therapists can accomplish the aforementioned goals.",
"extra": "ERIC Number: EJ956651",
"issue": "1",
"language": "en",
"libraryCatalog": "ERIC",
"pages": "51-57",
"publicationTitle": "Family Journal: Counseling and Therapy for Couples and Families",
"volume": "20",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Cooperative Planning"
},
{
"tag": "Counseling Techniques"
},
{
"tag": "Counselor Role"
},
{
"tag": "Cultural Influences"
},
{
"tag": "Cultural Relevance"
},
{
"tag": "Guidelines"
},
{
"tag": "Interpersonal Relationship"
},
{
"tag": "Parent Participation"
},
{
"tag": "Play Therapy"
},
{
"tag": "Therapy"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://eric.ed.gov/?q=(prekindergarten+OR+kindergarten)+AND+literacy",
"items": "multiple"
},
{
"type": "web",
"url": "https://eric.ed.gov/?q=(prekindergarten+OR+kindergarten)+AND+literacy&ff1=pubBooks&id=ED509979",
"items": [
{
"itemType": "book",
"title": "The Building Blocks of Preschool Success",
"creators": [
{
"firstName": "Katherine A.",
"lastName": "Beauchat",
"creatorType": "author"
},
{
"firstName": "Katrin L.",
"lastName": "Blamey",
"creatorType": "author"
},
{
"firstName": "Sharon",
"lastName": "Walpole",
"creatorType": "author"
}
],
"date": "2010/06/00",
"ISBN": "9781606236949",
"abstractNote": "Written expressly for preschool teachers, this engaging book explains the \"whats,\" \"whys,\" and \"how-tos\" of implementing best practices for instruction in the preschool classroom. The authors show how to target key areas of language and literacy development across the entire school day, including whole-group and small-group activities, center time, transitions, and outdoor play. Detailed examples in every chapter illustrate what effective instruction and assessment look like in three distinct settings: a school-based pre-kindergarten, a Head Start center with many English language learners, and a private suburban preschool. Helpful book lists, charts, and planning tools are featured, including reproducible materials. Contents include: (1) The Realities of Preschool; (2) A Focus on Oral Language and Vocabulary Development; (3) Comprehension; (4) Phonological Awareness; (5) Print and Alphabet Awareness; (6) Emergent Writing; (7) Tracking Children's Progress: The Role of Assessment in Preschool Classrooms; and (8) Making It Work for Adults and Children.",
"extra": "ERIC Number: ED509979",
"language": "en",
"libraryCatalog": "ERIC",
"publisher": "Guilford Press",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Alphabets"
},
{
"tag": "Best Practices"
},
{
"tag": "Classroom Environment"
},
{
"tag": "Disadvantaged Youth"
},
{
"tag": "Educational Assessment"
},
{
"tag": "Emergent Literacy"
},
{
"tag": "English (Second Language)"
},
{
"tag": "Group Activities"
},
{
"tag": "Instructional Materials"
},
{
"tag": "Language Skills"
},
{
"tag": "Oral Language"
},
{
"tag": "Phonological Awareness"
},
{
"tag": "Play"
},
{
"tag": "Preschool Children"
},
{
"tag": "Preschool Teachers"
},
{
"tag": "Reading Instruction"
},
{
"tag": "Reprography"
},
{
"tag": "Second Language Learning"
},
{
"tag": "Suburban Schools"
},
{
"tag": "Vocabulary Development"
},
{
"tag": "Writing Instruction"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://eric.ed.gov/?id=EJ906692",
"items": [
{
"itemType": "journalArticle",
"title": "Determining Faculty Needs for Delivering Accessible Electronically Delivered Instruction in Higher Education",
"creators": [
{
"firstName": "Marsha A.",
"lastName": "Gladhart",
"creatorType": "author"
}
],
"date": "2010/00/00",
"abstractNote": "The purpose of this study was to determine if a need exists for faculty training to improve accommodation for students with disabilities enrolled in electronically delivered courses at a statewide university system. An online survey was used to determine if instructors had students who had been identified as needing accommodation in their online courses, to identify which tools instructors used in electronically delivered instruction, and to determine how familiar the instructors were with strategies for accommodating students with disabilities in their courses. Over half the respondents reported identifying students in their classes with disabilities either by an official notice or through other means of identification. The respondents identified a variety of electronic delivery tools used to provide instruction in distance courses. A low percentage of the faculty surveyed reported they were aware of strategies to improve accessibility in their electronically delivered courses. (Contains 6 tables.)",
"extra": "ERIC Number: EJ906692",
"issue": "3",
"language": "en",
"libraryCatalog": "ERIC",
"pages": "185-196",
"publicationTitle": "Journal of Postsecondary Education and Disability",
"url": "https://eric.ed.gov/?id=EJ906692",
"volume": "22",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Academic Accommodations (Disabilities)"
},
{
"tag": "College Faculty"
},
{
"tag": "Delivery Systems"
},
{
"tag": "Disabilities"
},
{
"tag": "Disability Identification"
},
{
"tag": "Educational Needs"
},
{
"tag": "Educational Practices"
},
{
"tag": "Educational Strategies"
},
{
"tag": "Electronic Learning"
},
{
"tag": "Familiarity"
},
{
"tag": "Mail Surveys"
},
{
"tag": "Needs Assessment"
},
{
"tag": "Online Courses"
},
{
"tag": "Teacher Attitudes"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://eric.ed.gov/?q=test&ff1=pubReports+-+Research&ff2=pubReports+-+Descriptive&id=ED211592",
"items": [
{
"itemType": "report",
"title": "Test Design Project: Studies in Test Bias. Annual Report",
"creators": [
{
"firstName": "David",
"lastName": "McArthur",
"creatorType": "author"
}
],
"date": "1981/11/01",
"abstractNote": "Item bias in a multiple-choice test can be detected by appropriate analyses of the persons x items scoring matrix. This permits comparison of groups of examinees tested with the same instrument. The test may be biased if it is not measuring the same thing in comparable groups, if groups are responding to different aspects of the test items, or if cultural and linguistic issues take precedence. An empirical study of the question of bias as shown by these techniques was conducted. Five related schemes for the statistical analysis of bias were applied to the Comprehensive Test of Basic Skills which was administered in either the English or Spanish language version at two levels of elementary school in bilingual education programs. The objectives measured were recall or recognition ability, ability to translate or convert verbal or symbolic concepts, ability to comprehend concepts, ability to apply techniques, and ability to extend interpretation beyond stated information. The results indicated that several items in the tests showed strong evidence of bias, corroborated by a separate analysis of linguistic and cultural sources of bias for many items. (Author/DWH)",
"extra": "ERIC Number: ED211592",
"language": "en",
"libraryCatalog": "ERIC",
"shortTitle": "Test Design Project",
"url": "https://eric.ed.gov/?id=ED211592",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Bilingual Education"
},
{
"tag": "Bilingual Students"
},
{
"tag": "Elementary Education"
},
{
"tag": "Ethnicity"
},
{
"tag": "Non English Speaking"
},
{
"tag": "Research Methodology"
},
{
"tag": "Statistical Analysis"
},
{
"tag": "Test Bias"
},
{
"tag": "Test Construction"
},
{
"tag": "Writing Evaluation"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "search",
"input": {
"ericNumber": "EJ1125432"
},
"items": [
{
"itemType": "journalArticle",
"title": "The Influence of Culture in Infant-Toddler Child Care Settings",
"creators": [
{
"firstName": "Joan",
"lastName": "Test",
"creatorType": "author"
}
],
"date": "2015-03",
"ISSN": "0736-8038",
"abstractNote": "It is not only in families that young children are influenced to become members of their culture. Around the world and within individual countries, culture influences how care is provided to infants and toddlers in child care settings. In turn, infants and toddlers begin to learn how to act and think as members of their culture. From ways that teachers handle conflicts between toddlers, to how teachers manage transitions, to the organization of groups and physical environments, to more conscious transmission of culture through curriculum, culture influences infants and toddlers to become cultural beings that function well within their culture. This article explores cultural variations in group care and what infants and toddlers learn from these practices about being members of a culture.",
"extra": "ERIC Number: EJ1125432",
"issue": "4",
"language": "English",
"libraryCatalog": "ERIC",
"pages": "19-26",
"publicationTitle": "ZERO TO THREE",
"volume": "35",
"attachments": [],
"tags": [
{
"tag": "Child Care"
},
{
"tag": "Child Care Centers"
},
{
"tag": "Child Development"
},
{
"tag": "Comparative Education"
},
{
"tag": "Conflict"
},
{
"tag": "Cultural Differences"
},
{
"tag": "Cultural Influences"
},
{
"tag": "Culture Conflict"
},
{
"tag": "Foreign Countries"
},
{
"tag": "Infants"
},
{
"tag": "Interpersonal Relationship"
},
{
"tag": "Physical Environment"
},
{
"tag": "Preschool Curriculum"
},
{
"tag": "Preschool Teachers"
},
{
"tag": "Toddlers"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "search",
"input": {
"ericNumber": "EJ1179129"
},
"items": [
{
"itemType": "journalArticle",
"title": "Effects of a Self-Monitoring Checklist as a Component of the \"Self-Directed IEP\"",
"creators": [
{
"firstName": "Karen M.",
"lastName": "Diegelmann",
"creatorType": "author"
},
{
"firstName": "David W.",
"lastName": "Test",
"creatorType": "author"
}
],
"date": "2018-03",
"ISSN": "2154-1647",
"abstractNote": "Post-school outcomes for students with intellectual disability continue to lag behind other students with disabilities. One way to improve outcomes for these students is to include them in decisions about their future by teaching students how to participate in their IEP meetings. Self-monitoring provides immediate feedback, motivation, and teaches students to self-regulate what they are learning. In this study, two middle school and two high school students learned the steps of leading their IEP meeting. This study used a multiple baseline across participants design to examine the effects of a self-monitoring checklist as an essential component of the \"Self-Directed IEP\" for students with intellectual and multiple disabilities. Results showed three of four students only met criteria once the self-monitoring checklist was introduced. In addition, three students were able to generalize to post-intervention mock IEPs using the self-monitoring checklist.",
"extra": "ERIC Number: EJ1179129",
"issue": "1",
"language": "English",
"libraryCatalog": "ERIC",
"pages": "73-83",
"publicationTitle": "Education and Training in Autism and Developmental Disabilities",
"volume": "53",
"attachments": [],
"tags": [
{
"tag": "Check Lists"
},
{
"tag": "Daily Living Skills"
},
{
"tag": "Individualized Education Programs"
},
{
"tag": "Intellectual Disability"
},
{
"tag": "Meetings"
},
{
"tag": "Observation"
},
{
"tag": "Questionnaires"
},
{
"tag": "Secondary School Students"
},
{
"tag": "Self Management"
},
{
"tag": "Student Development"
},
{
"tag": "Student Empowerment"
},
{
"tag": "Student Participation"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "search",
"input": {
"ericNumber": "EJ1194142"
},
"items": [
{
"itemType": "journalArticle",
"title": "Including College and Career Readiness within a Multitiered Systems of Support Framework",
"creators": [
{
"firstName": "Mary E.",
"lastName": "Morningstar",
"creatorType": "author"
},
{
"firstName": "Allison",
"lastName": "Lombardi",
"creatorType": "author"
},
{
"firstName": "David",
"lastName": "Test",
"creatorType": "author"
}
],
"date": "2018",
"abstractNote": "Current practices of college and career readiness (CCR) emerged from within secondary school reform efforts. During a similar timeframe, evidence-based schoolwide interventions--positive behavioral interventions and supports (PBIS) and response to interventions (RTI)--were developed, first targeting elementary initiatives and then translated to secondary schools. We provide an overview of a recently established CCR framework underscoring both academic and nonacademic factors necessary for student success. To operationalize CCR approaches within secondary schools, an effort must be made to utilize existing interventions and strategies as well as data-informed efforts included within multitiered systems of support (MTSS). Therefore, we examine how CCR can be extended within secondary MTSS approaches and extend current methods by recommending measures aligning CCR elements within essential data-based decision making and fidelity of implementation tenets of MTSS. By embedding CCR within established MTSS approaches, improved post-school outcome for all students, including those with disabilities, can be achieved.",
"extra": "ERIC Number: EJ1194142",
"issue": "1",
"language": "English",
"libraryCatalog": "ERIC",
"publicationTitle": "AERA Open",
"url": "https://eric.ed.gov/?id=EJ1194142",
"volume": "4",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Career Readiness"
},
{
"tag": "College Readiness"
},
{
"tag": "Critical Thinking"
},
{
"tag": "Disabilities"
},
{
"tag": "Interpersonal Relationship"
},
{
"tag": "Intervention"
},
{
"tag": "Learner Engagement"
},
{
"tag": "Learning Processes"
},
{
"tag": "Planning"
},
{
"tag": "Positive Behavior Supports"
},
{
"tag": "Response to Intervention"
},
{
"tag": "Secondary Education"
},
{
"tag": "Transitional Programs"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "search",
"input": {
"ericNumber": "ED616685"
},
"items": [
{
"itemType": "report",
"title": "Can Closed-Ended Practice Tests Promote Understanding from Text?",
"creators": [
{
"firstName": "Lena",
"lastName": "Hildenbrand",
"creatorType": "author"
},
{
"firstName": "Jennifer",
"lastName": "Wiley",
"creatorType": "author"
}
],
"date": "2021",
"abstractNote": "Many studies have demonstrated that testing students on to-be-learned materials can be an effective learning activity. However, past studies have also shown that some practice test formats are more effective than others. Open-ended recall or short answer practice tests may be effective because the questions prompt deeper processing as students must generate an answer. With closed-ended testing formats such as multiple-choice or true-false tests, there are concerns that they may prompt only superficial processing, and that any benefits will not extend to non-practiced information or over time. They also may not be effective for improving comprehension from text as measured by how-and-why questions. The present study explored the utility of practice tests with closed-ended questions to improve learning from text. Results showed closed-ended practice testing can lead to benefits even when the learning outcome was comprehension of text. [This paper was published in: \"Proceedings of the 43rd Annual Conference of the Cognitive Science Society,\" 2021, pp.327-333.]",
"extra": "ERIC Number: ED616685",
"language": "English",
"libraryCatalog": "ERIC",
"attachments": [],
"tags": [
{
"tag": "Cognitive Processes"
},
{
"tag": "College Entrance Examinations"
},
{
"tag": "Comparative Analysis"
},
{
"tag": "Cues"
},
{
"tag": "Educational Benefits"
},
{
"tag": "Instructional Effectiveness"
},
{
"tag": "Introductory Courses"
},
{
"tag": "Language Processing"
},
{
"tag": "Learning Activities"
},
{
"tag": "Multiple Choice Tests"
},
{
"tag": "Outcomes of Education"
},
{
"tag": "Prior Learning"
},
{
"tag": "Psychology"
},
{
"tag": "Reading Tests"
},
{
"tag": "Recall (Psychology)"
},
{
"tag": "Scores"
},
{
"tag": "Test Format"
},
{
"tag": "Test Items"
},
{
"tag": "Testing"
},
{
"tag": "Undergraduate Students"
},
{
"tag": "Urban Universities"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "search",
"input": {
"ericNumber": "EJ956651"
},
"items": [
{
"itemType": "journalArticle",
"title": "Collaborating with Parents to Establish Behavioral Goals in Child-Centered Play Therapy",
"creators": [
{
"firstName": "Phyllis B.",
"lastName": "Post",
"creatorType": "author"
},
{
"firstName": "Peggy L.",
"lastName": "Ceballos",
"creatorType": "author"
},
{
"firstName": "Saundra L.",
"lastName": "Penn",
"creatorType": "author"
}
],
"date": "2012-01",
"DOI": "10.1177/1066480711425472",
"ISSN": "1066-4807",
"abstractNote": "The purpose of this article is to provide specific guidelines for child-centered play therapists to set behavioral outcome goals to effectively work with families and to meet the demands for accountability in the managed care environment. The child-centered play therapy orientation is the most widely practiced approach among play therapists who identify a specific theoretical orientation. While information about setting broad objectives is addressed using this approach to therapy, explicit guidelines for setting behavioral goals, while maintaining the integrity of the child-centered theoretical orientation, are needed. The guidelines are presented in three phases of parent consultation: (a) the initial engagement with parents, (b) the ongoing parent consultations, and (c) the termination phase. In keeping with the child-centered approach, the authors propose to work with parents from a person-centered orientation and seek to appreciate how cultural influences relate to parents' concerns and goals for their children. A case example is provided to demonstrate how child-centered play therapists can accomplish the aforementioned goals.",
"extra": "ERIC Number: EJ956651",
"issue": "1",
"language": "English",
"libraryCatalog": "ERIC",
"pages": "51-57",
"publicationTitle": "Family Journal: Counseling and Therapy for Couples and Families",
"volume": "20",
"attachments": [],
"tags": [
{
"tag": "Cooperative Planning"
},
{
"tag": "Counseling Techniques"
},
{
"tag": "Counselor Role"
},
{
"tag": "Cultural Influences"
},
{
"tag": "Cultural Relevance"
},
{
"tag": "Guidelines"
},
{
"tag": "Interpersonal Relationship"
},
{
"tag": "Parent Participation"
},
{
"tag": "Play Therapy"
},
{
"tag": "Therapy"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Simon Kornblith, Sebastian Karcher, Abe Jellinek^https?://([^/]+\.)?worldcat\.org//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2022 Simon Kornblith, Sebastian Karcher, and Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
// http://www.loc.gov/marc/relators/relaterm.html
// From MARC.js
const RELATORS = {
act: "castMember",
asn: "contributor", // Associated name
aut: "author",
cmp: "composer",
ctb: "contributor",
drt: "director",
edt: "editor",
pbl: "SKIP", // publisher
prf: "performer",
pro: "producer",
pub: "SKIP", // publication place
trl: "translator"
};
const RECORD_MAPPING = {
oclcNumber: (item, value) => item.extra = (item.extra || '') + `\nOCLC: ${value}`,
title: (item, value) => item.title = value.replace(' : ', ': '),
edition: 'edition',
publisher: 'publisher',
publicationPlace: 'place',
publicationDate: (item, value) => item.date = ZU.strToISO(value),
catalogingLanguage: 'language',
summary: 'abstractNote',
physicalDescription: (item, value) => {
item.numPages = (value.match(/\d+(?= pages?)/) || value.match(/\d+/) || [])[0];
},
series: 'series',
subjectsText: 'tags',
cartographicData: 'scale',
// genre: 'genre',
doi: (item, value) => item.DOI = ZU.cleanDOI(value),
mediumOfPerformance: 'medium',
issns: (item, value) => item.ISSN = ZU.cleanISSN(value),
sourceIssn: (item, value) => item.ISSN = ZU.cleanISSN(value),
digitalAccessAndLocations: (item, value) => {
if (value.length) {
item.url = value[0].uri;
}
},
isbns: (item, value) => item.ISBN = ZU.cleanISBN(value.join(' ')),
isbn13: (item, value) => item.ISBN = ZU.cleanISBN(value),
publication: (item, value) => {
try {
let [, publicationTitle, volume, date, page] = value.match(/^(.+), (.+), (.+), (.+)$/);
item.publicationTitle = publicationTitle;
item.volume = volume;
item.date = ZU.strToISO(date);
item.pages = page;
}
catch (e) {
Z.debug(e);
}
},
contributors: (item, value) => {
for (let contrib of value) {
let creatorType;
if (contrib.relatorCodes && contrib.relatorCodes[0]) {
creatorType = RELATORS[contrib.relatorCodes[0]] || 'contributor';
if (creatorType == 'SKIP') continue;
}
else {
creatorType = ZU.getCreatorsForType(item.itemType)[0];
}
let creator = {
firstName: contrib.firstName && contrib.firstName.text,
lastName: contrib.secondName && contrib.secondName.text,
creatorType
};
// If only firstName field, set as single-field name
if (creator.firstName && !creator.lastName) {
creator.lastName = creator.firstName;
delete creator.firstName;
creator.fieldMode = 1;
}
item.creators.push(creator);
}
}
};
function detectWeb(doc, url) {
let nextData = doc.querySelector('#__NEXT_DATA__');
if (url.includes('/title/') && nextData) {
try {
return getItemType(JSON.parse(nextData.textContent).props.pageProps.record);
}
catch (e) {
return 'book';
}
}
else if (getSearchResults(doc, true)) {
return 'multiple';
}
else if (url.includes('/search?')) {
Z.monitorDOMChanges(doc.body, { childList: true, subtree: true });
}
return false;
}
function getItemType(record) {
if (record.generalFormat == 'ArtChap') {
if (record.specificFormat == 'Artcl') {
return 'journalArticle';
}
else {
return 'bookSection';
}
}
else {
return 'book';
}
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.MuiGrid-item a[href*="/title/"]:not([data-testid^="format-link"])');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
async function doWeb(doc, url) {
if (detectWeb(doc, url) == 'multiple') {
let items = await Zotero.selectItems(getSearchResults(doc, false));
if (!items) return;
for (let url of Object.keys(items)) {
await scrape(await requestDocument(url));
}
}
else {
await scrape(doc, url);
}
}
async function scrape(doc, url = doc.location.href) {
let record = null;
try {
record = JSON.parse(text(doc, '#__NEXT_DATA__')).props.pageProps.record;
}
catch (e) {}
if (!record || !url.includes('/' + record.oclcNumber)) {
Zotero.debug('__NEXT_DATA__ is stale; requesting page again');
doc = await requestDocument(url);
record = JSON.parse(text(doc, '#__NEXT_DATA__')).props.pageProps.record;
}
scrapeRecord([record]);
}
function scrapeRecord(records) {
for (let record of records) {
Z.debug(record);
if (record.doi) {
let translate = Z.loadTranslator('search');
translate.setSearch({ DOI: record.doi });
translate.setTranslator('b28d0d42-8549-4c6d-83fc-8382874a5cb9'); // DOI Content Negotiation
translate.translate();
continue;
}
let item = new Zotero.Item(getItemType(record));
for (let [key, mapper] of Object.entries(RECORD_MAPPING)) {
if (!record[key]) continue;
if (typeof mapper == 'string') {
item[mapper] = record[key];
}
else {
mapper(item, record[key]);
}
}
for (let keyToFix of ['title', 'publisher', 'place']) {
if (item[keyToFix]) {
item[keyToFix] = item[keyToFix].replace(/^\[(.+)\]$/, '$1');
}
}
item.complete();
}
}
function sanitizeInput(items, checkOnly) {
if (items.length === undefined || typeof items == 'string') {
items = [items];
}
var cleanItems = [];
for (let i = 0; i < items.length; i++) {
var item = ZU.deepCopy(items[i]),
valid = false;
if (item.ISBN && typeof item.ISBN == 'string'
&& (item.ISBN = ZU.cleanISBN(item.ISBN))
) {
valid = true;
}
else {
delete item.ISBN;
}
if (item.identifiers && typeof item.identifiers.oclc == 'string'
&& /^\d+$/.test(item.identifiers.oclc.trim())
) {
valid = true;
item.identifiers.oclc = item.identifiers.oclc.trim();
}
else if (item.identifiers) {
delete item.identifiers.oclc;
}
if (valid) {
if (checkOnly) return true;
cleanItems.push(item);
}
}
return checkOnly ? !!cleanItems.length : cleanItems;
}
function detectSearch(items) {
return sanitizeInput(items, true);
}
async function doSearch(items) {
items = sanitizeInput(items);
if (!items.length) {
Z.debug("Search query does not contain valid identifiers");
return;
}
var ids = [], isbns = [];
for (let i = 0; i < items.length; i++) {
if (items[i].identifiers && items[i].identifiers.oclc) {
ids.push(items[i].identifiers.oclc);
continue;
}
isbns.push(items[i].ISBN);
}
let secureToken = await getSecureToken();
let cookie = `wc_tkn=${encodeURIComponent(secureToken)}`;
ids = await fetchIDs(isbns, ids, cookie);
if (!ids.length) {
Z.debug("Could not retrieve any OCLC IDs");
Zotero.done(false);
return;
}
var url = "https://www.worldcat.org/api/search?q=no%3A"
+ ids.map(encodeURIComponent).join('+OR+no%3A');
let json = await requestJSON(url, {
headers: {
Referer: 'https://worldcat.org/search?q=',
Cookie: cookie
}
});
if (json.briefRecords) {
scrapeRecord(json.briefRecords);
}
}
async function getSecureToken() {
let doc;
try {
doc = await requestDocument('https://www.worldcat.org/');
}
catch (e) {
Z.debug('Initial request to homepage failed; trying latest Google cache');
try {
doc = await requestDocument('https://webcache.googleusercontent.com/search?q=cache%3Aworldcat.org');
}
catch (e) {
Z.debug('Request to Google cache failed; trying archive.org');
doc = await requestDocument('https://web.archive.org/web/https://worldcat.org/');
}
}
let buildID = JSON.parse(text(doc, '#__NEXT_DATA__')).buildId;
Z.debug('buildID: ' + buildID);
let json = await requestJSON(`https://www.worldcat.org/_next/data/${buildID}/en/search.json`);
let { secureToken } = json.pageProps;
Z.debug('secureToken: ' + secureToken);
return secureToken;
}
async function fetchIDs(isbns, ids, cookie) {
while (isbns.length) {
let isbn = isbns.shift();
// As of 10/19/2022, WorldCat's API seems to do an unindexed lookup for ISBNs without hyphens,
// with requests taking 40+ seconds, so we hyphenate them
isbn = wcHyphenateISBN(isbn);
let url = "https://www.worldcat.org/api/search?q=bn%3A"
+ encodeURIComponent(isbn);
let json = await requestJSON(url, {
headers: {
Referer: 'https://worldcat.org/search?q=',
Cookie: cookie
}
});
if (json.briefRecords && json.briefRecords.length) {
scrapeRecord([json.briefRecords[0]]);
}
}
return ids;
}
// Copied from Zotero.Utilities.Internal.hyphenateISBN()
function wcHyphenateISBN(isbn) {
// Copied from isbn.js
var ISBN = {};
ISBN.ranges = (function () {
/* eslint-disable */
var ranges = {"978":{"0":["00","19","200","699","7000","8499","85000","89999","900000","949999","9500000","9999999"],"1":["00","09","100","329","330","399","4000","5499","55000","86979","869800","998999","9990000","9999999"],"2":["00","19","200","349","400","699","7000","8399","35000","39999","84000","89999","900000","949999","9500000","9999999"],"3":["00","02","04","19","030","033","200","699","0340","0369","7000","8499","03700","03999","85000","89999","95400","96999","99000","99499","99500","99999","900000","949999","9500000","9539999","9700000","9899999"],"5":["01","19","200","420","430","430","440","440","450","699","0050","0099","4210","4299","4310","4399","4410","4499","7000","8499","9200","9299","9501","9799","9910","9999","00000","00499","85000","89999","91000","91999","93000","94999","98000","98999","900000","909999","9500000","9500999","9900000","9909999"],"600":["00","09","100","499","5000","8999","90000","99999"],"601":["00","19","85","99","200","699","7000","7999","80000","84999"],"602":["00","07","200","699","0800","0899","0900","1099","1100","1199","1200","1399","1500","1699","7500","7999","8000","9499","14000","14999","17000","17999","18000","18999","19000","19999","70000","74999","95000","99999"],"603":["00","04","05","49","500","799","8000","8999","90000","99999"],"604":["0","4","50","89","900","979","9800","9999"],"605":["01","02","04","09","030","039","100","399","4000","5999","9000","9999","60000","89999"],"606":["0","0","10","49","500","799","8000","9199","92000","99999"],"607":["00","39","400","749","7500","9499","95000","99999"],"608":["0","0","7","9","10","19","200","449","4500","6499","65000","69999"],"609":["00","39","400","799","8000","9499","95000","99999"],"612":["00","29","50","99","300","399","4000","4499","45000","49999"],"613":["0","9"],"615":["00","09","100","499","5000","7999","80000","89999"],"616":["00","19","200","699","7000","8999","90000","99999"],"617":["00","49","500","699","7000","8999","90000","99999"],"618":["00","19","200","499","5000","7999","80000","99999"],"619":["00","14","150","699","7000","8999","90000","99999"],"621":["00","29","400","599","8000","8999","95000","99999"],"7":["00","09","100","499","5000","7999","80000","89999","900000","999999"],"80":["00","19","200","699","7000","8499","85000","89999","900000","999999"],"82":["00","19","200","689","7000","8999","90000","98999","690000","699999","990000","999999"],"83":["00","19","200","599","7000","8499","60000","69999","85000","89999","900000","999999"],"84":["00","13","140","149","200","699","7000","8499","9000","9199","9700","9999","15000","19999","85000","89999","92400","92999","95000","96999","920000","923999","930000","949999"],"85":["00","19","200","549","5500","5999","7000","8499","60000","69999","85000","89999","98000","99999","900000","979999"],"86":["00","29","300","599","6000","7999","80000","89999","900000","999999"],"87":["00","29","400","649","7000","7999","85000","94999","970000","999999"],"88":["00","19","200","599","910","929","6000","8499","9300","9399","85000","89999","95000","99999","900000","909999","940000","949999"],"89":["00","24","250","549","990","999","5500","8499","85000","94999","97000","98999","950000","969999"],"90":["00","19","90","90","94","94","200","499","5000","6999","8500","8999","70000","79999","800000","849999"],"91":["0","1","20","49","500","649","7000","7999","85000","94999","970000","999999"],"92":["0","5","60","79","800","899","9000","9499","95000","98999","990000","999999"],"93":["00","09","100","499","5000","7999","80000","94999","950000","999999"],"94":["000","599","6000","8999","90000","99999"],"950":["00","49","500","899","9000","9899","99000","99999"],"951":["0","1","20","54","550","889","8900","9499","95000","99999"],"952":["00","19","60","65","80","94","200","499","5000","5999","6600","6699","7000","7999","9500","9899","67000","69999","99000","99999"],"953":["0","0","10","14","51","54","150","509","6000","9499","55000","59999","95000","99999"],"954":["00","28","300","799","2900","2999","8000","8999","9300","9999","90000","92999"],"955":["20","40","550","749","0000","1999","4500","4999","7500","7999","8000","9499","41000","43999","44000","44999","50000","54999","95000","99999"],"956":["00","19","200","699","7000","9999"],"957":["00","02","05","19","21","27","31","43","440","819","0300","0499","2000","2099","8200","9699","28000","30999","97000","99999"],"958":["00","56","600","799","8000","9499","57000","59999","95000","99999"],"959":["00","19","200","699","7000","8499","85000","99999"],"960":["00","19","93","93","200","659","690","699","6600","6899","7000","8499","9400","9799","85000","92999","98000","99999"],"961":["00","19","200","599","6000","8999","90000","94999"],"962":["00","19","200","699","900","999","7000","8499","8700","8999","85000","86999"],"963":["00","19","200","699","7000","8499","9000","9999","85000","89999"],"964":["00","14","150","249","300","549","970","989","2500","2999","5500","8999","9900","9999","90000","96999"],"965":["00","19","200","599","7000","7999","90000","99999"],"966":["00","12","14","14","130","139","170","199","279","289","300","699","910","949","980","999","1500","1699","2000","2789","2900","2999","7000","8999","90000","90999","95000","97999"],"967":["00","00","60","89","300","499","900","989","0100","0999","5000","5999","9900","9989","10000","19999","99900","99999"],"968":["01","39","400","499","800","899","5000","7999","9000","9999"],"969":["0","1","20","22","24","39","400","749","7500","9999","23000","23999"],"970":["01","59","600","899","9000","9099","9700","9999","91000","96999"],"971":["02","02","06","49","97","98","000","015","500","849","0160","0199","0300","0599","8500","9099","9600","9699","9900","9999","91000","95999"],"972":["0","1","20","54","550","799","8000","9499","95000","99999"],"973":["0","0","20","54","100","169","550","759","1700","1999","7600","8499","8900","9499","85000","88999","95000","99999"],"974":["00","19","200","699","7000","8499","9500","9999","85000","89999","90000","94999"],"975":["02","24","250","599","990","999","6000","9199","00000","01999","92000","98999"],"976":["0","3","40","59","600","799","8000","9499","95000","99999"],"977":["00","19","90","99","200","499","700","849","5000","6999","85000","89999"],"978":["000","199","900","999","2000","2999","8000","8999","30000","79999"],"979":["20","29","000","099","400","799","1000","1499","3000","3999","8000","9499","15000","19999","95000","99999"],"980":["00","19","200","599","6000","9999"],"981":["00","11","200","289","290","299","310","399","3000","3099","4000","9999","17000","19999"],"982":["00","09","70","89","100","699","9000","9799","98000","99999"],"983":["00","01","45","49","50","79","020","199","800","899","2000","3999","9000","9899","40000","44999","99000","99999"],"984":["00","39","400","799","8000","8999","90000","99999"],"985":["00","39","400","599","6000","8999","90000","99999"],"986":["00","11","120","559","5600","7999","80000","99999"],"987":["00","09","30","35","40","44","500","899","1000","1999","3600","3999","9000","9499","20000","29999","45000","49999","95000","99999"],"988":["00","11","200","799","8000","9699","12000","14999","15000","16999","17000","19999","97000","99999"],"9925":["0","2","30","54","550","734","7350","9999"],"9926":["0","1","20","39","400","799","8000","9999"],"9927":["00","09","100","399","4000","4999"],"9929":["0","3","40","54","550","799","8000","9999"],"9930":["00","49","500","939","9400","9999"],"9931":["00","29","300","899","9000","9999"],"9932":["00","39","400","849","8500","9999"],"9933":["0","0","10","39","400","899","9000","9999"],"9934":["0","0","10","49","500","799","8000","9999"],"9937":["0","2","30","49","500","799","8000","9999"],"9938":["00","79","800","949","9500","9999"],"9939":["0","4","50","79","800","899","9000","9999"],"9940":["0","1","20","49","500","899","9000","9999"],"9942":["00","84","900","984","8500","8999","9850","9999"],"9943":["00","29","300","399","975","999","4000","9749"],"9944":["60","69","80","89","100","499","700","799","900","999","0000","0999","5000","5999"],"9945":["00","00","08","39","57","57","010","079","400","569","580","849","8500","9999"],"9946":["0","1","20","39","400","899","9000","9999"],"9947":["0","1","20","79","800","999"],"9949":["0","0","10","39","75","89","400","749","9000","9999"],"9950":["00","29","300","849","8500","9999"],"9953":["0","0","10","39","60","89","400","599","9000","9999"],"9955":["00","39","400","929","9300","9999"],"9957":["00","39","70","84","88","99","400","699","8500","8799"],"9958":["00","01","10","18","20","49","020","029","040","089","500","899","0300","0399","0900","0999","1900","1999","9000","9999"],"9959":["0","1","20","79","98","99","800","949","970","979","9500","9699"],"9960":["00","59","600","899","9000","9999"],"9961":["0","2","30","69","700","949","9500","9999"],"9962":["00","54","56","59","600","849","5500","5599","8500","9999"],"9963":["0","1","30","54","250","279","550","734","2000","2499","2800","2999","7350","7499","7500","9999"],"9964":["0","6","70","94","950","999"],"9965":["00","39","400","899","9000","9999"],"9966":["20","69","000","149","750","959","1500","1999","7000","7499","9600","9999"],"9971":["0","5","60","89","900","989","9900","9999"],"9972":["1","1","00","09","30","59","200","249","600","899","2500","2999","9000","9999"],"9973":["00","05","10","69","060","089","700","969","0900","0999","9700","9999"],"9974":["0","2","30","54","95","99","550","749","7500","9499"],"9975":["0","0","45","89","100","299","900","949","3000","3999","4000","4499","9500","9999"],"9977":["00","89","900","989","9900","9999"],"9978":["00","29","40","94","300","399","950","989","9900","9999"],"9979":["0","4","50","64","66","75","650","659","760","899","9000","9999"],"9980":["0","3","40","89","900","989","9900","9999"],"9981":["00","09","20","79","100","159","800","949","1600","1999","9500","9999"],"9982":["00","79","800","989","9900","9999"],"9983":["80","94","950","989","9900","9999"],"9984":["00","49","500","899","9000","9999"],"9986":["00","39","97","99","400","899","940","969","9000","9399"],"9987":["00","39","400","879","8800","9999"],"9988":["0","2","30","54","550","749","7500","9999"],"9989":["0","0","30","59","100","199","600","949","2000","2999","9500","9999"],"99901":["00","49","80","99","500","799"],"99903":["0","1","20","89","900","999"],"99904":["0","5","60","89","900","999"],"99905":["0","3","40","79","800","999"],"99906":["0","2","30","59","70","89","90","94","600","699","950","999"],"99908":["0","0","10","89","900","999"],"99909":["0","3","40","94","950","999"],"99910":["0","2","30","89","900","999"],"99911":["00","59","600","999"],"99912":["0","3","60","89","400","599","900","999"],"99913":["0","2","30","35","600","604"],"99914":["0","4","50","89","900","999"],"99915":["0","4","50","79","800","999"],"99916":["0","2","30","69","700","999"],"99919":["0","2","40","69","70","79","300","399","800","849","850","899","900","999"],"99921":["0","1","8","8","20","69","90","99","700","799"],"99922":["0","3","40","69","700","999"],"99926":["0","0","10","59","87","89","90","99","600","869"],"99927":["0","2","30","59","600","999"],"99928":["0","0","10","79","800","999"],"99932":["0","0","7","7","10","59","80","99","600","699"],"99935":["0","2","7","8","30","59","90","99","600","699"],"99936":["0","0","10","59","600","999"],"99937":["0","1","20","59","600","999"],"99938":["0","1","20","59","90","99","600","899"],"99940":["0","0","10","69","700","999"],"99941":["0","2","30","79","800","999"],"99953":["0","2","30","79","94","99","800","939"],"99954":["0","2","30","69","88","99","700","879"],"99955":["0","1","20","59","80","99","600","799"],"99956":["00","59","86","99","600","859"],"99958":["0","4","50","93","940","949","950","999"],"99960":["0","0","10","94","950","999"],"99961":["0","3","40","89","900","999"],"99963":["00","49","92","99","500","919"],"99966":["0","2","30","69","80","94","700","799"],"99967":["0","1","20","59","600","899"],"99971":["0","5","60","84","850","999"],"99974":["40","79","800","999"],"99976":["0","1","20","59","600","799"]},"979":{"10":["00","19","200","699","7000","8999","90000","97599","976000","999999"],"11":["00","24","250","549","5500","8499","85000","94999","950000","999999"],"12":["200","200"]}};
ranges['978']['99968']=ranges['978']['99912'];ranges['978']['9935']=ranges['978']['9941']=ranges['978']['9956']=ranges['978']['9933'];ranges['978']['9976']=ranges['978']['9971'];ranges['978']['99949']=ranges['978']['99903'];ranges['978']['9968']=ranges['978']['9930'];ranges['978']['99929']=ranges['978']['99930']=ranges['978']['99931']=ranges['978']['99942']=ranges['978']['99944']=ranges['978']['99948']=ranges['978']['99950']=ranges['978']['99952']=ranges['978']['99962']=ranges['978']['99969']=ranges['978']['99915'];ranges['978']['99917']=ranges['978']['99910'];ranges['978']['99920']=ranges['978']['99970']=ranges['978']['99972']=ranges['978']['99914'];ranges['978']['99933']=ranges['978']['99943']=ranges['978']['99946']=ranges['978']['99959']=ranges['978']['99927'];ranges['978']['81']=ranges['978']['80'];ranges['978']['9967']=ranges['978']['9970']=ranges['978']['9965'];ranges['978']['9936']=ranges['978']['9952']=ranges['978']['9954']=ranges['978']['9926'];ranges['978']['99965']=ranges['978']['99922'];ranges['978']['9928']=ranges['978']['9927'];ranges['978']['99947']=ranges['978']['99916'];ranges['978']['9985']=ranges['978']['9939'];ranges['978']['99918']=ranges['978']['99925']=ranges['978']['99973']=ranges['978']['99975']=ranges['978']['99905'];ranges['978']['99939']=ranges['978']['99945']=ranges['978']['99904'];ranges['978']['989']=ranges['978']['972'];ranges['978']['620']=ranges['978']['613'];ranges['978']['4']=ranges['978']['0'];ranges['978']['99923']=ranges['978']['99924']=ranges['978']['99934']=ranges['978']['99957']=ranges['978']['99964']=ranges['978']['9947'];ranges['978']['614']=ranges['978']['609'];ranges['978']['9948']=ranges['978']['9951']=ranges['978']['9932'];
/* eslint-enable */
return ranges;
})();
var ranges = ISBN.ranges,
parts = [],
uccPref,
i = 0;
if (isbn.length == 10) {
uccPref = '978';
}
else {
uccPref = isbn.substr(0, 3);
if (!ranges[uccPref]) return ''; // Probably invalid ISBN, but the checksum is OK
parts.push(uccPref);
i = 3; // Skip ahead
}
var group = '',
found = false;
while (i < isbn.length - 3 /* check digit, publication, registrant */) {
group += isbn.charAt(i);
if (ranges[uccPref][group]) {
parts.push(group);
found = true;
break;
}
i++;
}
if (!found) return ''; // Did not find a valid group
// Array of registrant ranges that are valid for a group
// Array always contains an even number of values (as string)
// From left to right, the values are paired so that the first indicates a
// lower bound of the range and the right indicates an upper bound
// The ranges are sorted by increasing number of characters
var regRanges = ranges[uccPref][group];
var registrant = '';
found = false;
i++; // Previous loop 'break'ed early
while (!found && i < isbn.length - 2 /* check digit, publication */) {
registrant += isbn.charAt(i);
for (let j = 0; j < regRanges.length && registrant.length >= regRanges[j].length; j += 2) {
if (registrant.length == regRanges[j].length
&& registrant >= regRanges[j] && registrant <= regRanges[j + 1] // Falls within the range
) {
parts.push(registrant);
found = true;
break;
}
}
i++;
}
if (!found) return ''; // Outside of valid range, but maybe we need to update our data
parts.push(isbn.substring(i, isbn.length - 1)); // Publication is the remainder up to last digit
parts.push(isbn.charAt(isbn.length - 1)); // Check digit
return parts.join('-');
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://www.worldcat.org/search?qt=worldcat_org_bks&q=argentina&fq=dt%3Abks",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.worldcat.org/title/489605",
"items": [
{
"itemType": "book",
"title": "Argentina",
"creators": [
{
"firstName": "Arthur Preston",
"lastName": "Whitaker",
"creatorType": "author"
}
],
"date": "1964",
"abstractNote": "\"This book delves into the Argentine past seeking the origins of the political, social, and economic conflicts that have stunted Argentina's development after her spectacular progress during the late nineteenth and early twentieth centuries\"--From book jacket",
"extra": "OCLC: 489605",
"language": "eng",
"libraryCatalog": "Open WorldCat",
"numPages": "184",
"place": "Englewood Cliffs, N.J.",
"publisher": "Prentice-Hall",
"series": "Spectrum book",
"attachments": [],
"tags": [
{
"tag": "Argentina"
},
{
"tag": "Argentina Historia 1810-"
},
{
"tag": "Argentina History"
},
{
"tag": "Argentina History 1810-"
},
{
"tag": "Argentine Histoire"
},
{
"tag": "Argentine Histoire 1810-"
},
{
"tag": "Economic history Argentina"
},
{
"tag": "History"
},
{
"tag": "Politics and government Argentina"
},
{
"tag": "Since 1810"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.worldcat.org/title/42854423",
"items": [
{
"itemType": "book",
"title": "A dynamic systems approach to the development of cognition and action",
"creators": [
{
"firstName": "Esther",
"lastName": "Thelen",
"creatorType": "author"
},
{
"firstName": "Linda B.",
"lastName": "Smith",
"creatorType": "author"
}
],
"date": "1996",
"ISBN": "9780585030159",
"abstractNote": "Annotation. A Dynamic Systems Approach to the Development of Cognition and Action presents a comprehensive and detailed theory of early human development based on the principles of dynamic systems theory. Beginning with their own research in motor, perceptual, and cognitive development, Thelen and Smith raise fundamental questions about prevailing assumptions in the field. They propose a new theory of the development of cognition and action, unifying recent advances in dynamic systems theory with current research in neuroscience and neural development. In particular, they show how by processes of exploration and selection, multimodal experiences form the bases for self-organizing perception-action categories. Thelen and Smith offer a radical alternative to current cognitive theory, both in their emphasis on dynamic representation and in their focus on processes of change. Among the first attempt to apply complexity theory to psychology, they suggest reinterpretations of several classic issues in early cognitive development. The book is divided into three sections. The first discusses the nature of developmental processes in general terms, the second covers dynamic principles in process and mechanism, and the third looks at how a dynamic theory can be applied to enduring puzzles of development. Cognitive Psychology series",
"edition": "1st MIT pbk. ed",
"extra": "OCLC: 42854423",
"language": "eng",
"libraryCatalog": "Open WorldCat",
"numPages": "376",
"place": "Cambridge, Mass.",
"publisher": "MIT Press",
"series": "MIT Press/Bradford Books series in cognitive psychology",
"url": "http://search.ebscohost.com/login.aspx?direct=true&scope=site&db=nlebk&db=nlabk&AN=1712",
"attachments": [],
"tags": [
{
"tag": "Activité motrice"
},
{
"tag": "Activité motrice chez le nourrisson"
},
{
"tag": "Child"
},
{
"tag": "Child Development"
},
{
"tag": "Child development"
},
{
"tag": "Children"
},
{
"tag": "Cognition"
},
{
"tag": "Cognition chez le nourrisson"
},
{
"tag": "Cognition in infants"
},
{
"tag": "Developmental psychobiology"
},
{
"tag": "Electronic books"
},
{
"tag": "Enfants"
},
{
"tag": "Enfants Développement"
},
{
"tag": "FAMILY & RELATIONSHIPS Life Stages Infants & Toddlers"
},
{
"tag": "Infant"
},
{
"tag": "Infants"
},
{
"tag": "Motor Skills"
},
{
"tag": "Motor ability"
},
{
"tag": "Motor ability in infants"
},
{
"tag": "Nourrissons"
},
{
"tag": "Perceptual-motor processes"
},
{
"tag": "Processus perceptivomoteurs"
},
{
"tag": "Psychobiologie du développement"
},
{
"tag": "System theory"
},
{
"tag": "Systems Theory"
},
{
"tag": "Théorie des systèmes"
},
{
"tag": "children (people by age group)"
},
{
"tag": "cognition"
},
{
"tag": "infants"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.worldcat.org/title/60321422",
"items": [
{
"itemType": "book",
"title": "The Cambridge companion to Adam Smith",
"creators": [
{
"firstName": "Knud",
"lastName": "Haakonssen",
"creatorType": "author"
}
],
"date": "2006",
"ISBN": "9780521770590",
"abstractNote": "\"Adam Smith is best known as the founder of scientific economics and as an early proponent of the modern market economy. Political economy, however, was only one part of Smith's comprehensive intellectual system. Consisting of a theory of mind and its functions in language, arts, science, and social intercourse, Smith's system was a towering contribution to the Scottish Enlightenment. His ideas on social intercourse, in fact, also served as the basis for a moral theory that provided both historical and theoretical accounts of law, politics, and economics. This companion volume provides an up-to-date examination of all aspects of Smith's thought. Collectively, the essays take into account Smith's multiple contexts - Scottish, British, European, Atlantic, biographical, institutional, political, philosophical - and they draw on all his works, including student notes from his lectures. Pluralistic in approach, the volume provides a contextualist history of Smith, as well as direct philosophical engagement with his ideas.\"--Jacket",
"extra": "OCLC: 60321422",
"language": "eng",
"libraryCatalog": "Open WorldCat",
"numPages": "409",
"place": "Cambridge",
"publisher": "Cambridge University Press",
"series": "Cambridge companions to philosophy",
"url": "http://catdir.loc.gov/catdir/toc/ecip0512/2005011910.html",
"attachments": [],
"tags": [
{
"tag": "Aufsatzsammlung"
},
{
"tag": "Filosofie"
},
{
"tag": "Smith, Adam"
},
{
"tag": "Smith, Adam 1723-1790"
},
{
"tag": "Smith, Adam Philosoph"
},
{
"tag": "Smith, Adam, 1723-1790"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.worldcat.org/title/from-lanka-eastwards-the-ramayana-in-the-literature-and-visual-arts-of-indonesia/oclc/765821302",
"items": [
{
"itemType": "book",
"title": "From Laṅkā eastwards: the Rāmāyaṇa in the literature and visual arts of Indonesia",
"creators": [
{
"firstName": "Andrea",
"lastName": "Acri",
"creatorType": "author"
},
{
"firstName": "Helen",
"lastName": "Creese",
"creatorType": "author"
},
{
"firstName": "Arlo",
"lastName": "Griffiths",
"creatorType": "author"
}
],
"date": "2011",
"ISBN": "9789067183840",
"extra": "OCLC: 765821302",
"language": "eng",
"libraryCatalog": "Open WorldCat",
"numPages": "259",
"place": "Leiden",
"publisher": "KITLV Press",
"series": "Verhandelingen van het Koninklijk Instituut voor Taal-, Land- en Volkenkunde",
"shortTitle": "From Laṅkā eastwards",
"attachments": [],
"tags": [
{
"tag": "Art indonésien Congrès"
},
{
"tag": "Art, Indonesian"
},
{
"tag": "Art, Indonesian Congresses"
},
{
"tag": "Conference papers and proceedings"
},
{
"tag": "Epen (teksten)"
},
{
"tag": "History Sources"
},
{
"tag": "Kakawin Ramayana"
},
{
"tag": "Kunst"
},
{
"tag": "Literatur"
},
{
"tag": "Râmâyaṇa (Old Javanese kakawin)"
},
{
"tag": "Râmâyaṇa (Old Javanese kakawin) Congresses"
},
{
"tag": "Râmâyaṇa (Old Javanese kakawin) Sources Congresses"
},
{
"tag": "Rezeption"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.worldcat.org/title/newmans-relation-to-modernism/oclc/676747555",
"items": [
{
"itemType": "book",
"title": "Newman's relation to modernism",
"creators": [
{
"firstName": "Sydney F.",
"lastName": "Smith",
"creatorType": "author"
}
],
"date": "1912",
"extra": "OCLC: 847984210",
"language": "eng",
"libraryCatalog": "Open WorldCat",
"numPages": "1",
"place": "London",
"publisher": "publisher not identified",
"url": "https://archive.org/details/a626827800smituoft/",
"attachments": [],
"tags": [
{
"tag": "Modernism (Christian theology) Catholic Church"
},
{
"tag": "Newman, John Henry, Saint, 1801-1890"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.worldcat.org/title/48394842",
"items": [
{
"itemType": "book",
"title": "Cahokia Mounds replicas",
"creators": [
{
"firstName": "Martha LeeAnn",
"lastName": "Grimont",
"creatorType": "author"
},
{
"firstName": "Claudia Gellman",
"lastName": "Mink",
"creatorType": "author"
}
],
"date": "2000",
"ISBN": "9781881563020",
"extra": "OCLC: 48394842",
"language": "eng",
"libraryCatalog": "Open WorldCat",
"numPages": "10",
"place": "Collinsville, Ill.",
"publisher": "Cahokia Mounds Museum Society",
"attachments": [],
"tags": [
{
"tag": "Antiquities"
},
{
"tag": "Cahokia Mounds State Historic Park (Ill.)"
},
{
"tag": "Cahokia Mounds State Historic Park (Ill.) Antiquities Pottery"
},
{
"tag": "Illinois"
},
{
"tag": "Illinois Antiquities Pottery"
},
{
"tag": "Illinois Cahokia Mounds State Historic Park"
},
{
"tag": "Indians of North America Antiquities"
},
{
"tag": "Indians of North America Illinois Antiquities"
},
{
"tag": "Mound-builders"
},
{
"tag": "Mound-builders Illinois"
},
{
"tag": "Mounds"
},
{
"tag": "Mounds Illinois"
},
{
"tag": "Pottery"
},
{
"tag": "Pottery Illinois"
},
{
"tag": "Tumulus Illinois"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "search",
"input": {
"ISBN": "9780585030159"
},
"items": [
{
"itemType": "book",
"title": "A dynamic systems approach to the development of cognition and action",
"creators": [
{
"firstName": "Esther",
"lastName": "Thelen",
"creatorType": "author"
},
{
"firstName": "Linda B.",
"lastName": "Smith",
"creatorType": "author"
}
],
"date": "1996",
"ISBN": "9780585030159",
"abstractNote": "Annotation. A Dynamic Systems Approach to the Development of Cognition and Action presents a comprehensive and detailed theory of early human development based on the principles of dynamic systems theory. Beginning with their own research in motor, perceptual, and cognitive development, Thelen and Smith raise fundamental questions about prevailing assumptions in the field. They propose a new theory of the development of cognition and action, unifying recent advances in dynamic systems theory with current research in neuroscience and neural development. In particular, they show how by processes of exploration and selection, multimodal experiences form the bases for self-organizing perception-action categories. Thelen and Smith offer a radical alternative to current cognitive theory, both in their emphasis on dynamic representation and in their focus on processes of change. Among the first attempt to apply complexity theory to psychology, they suggest reinterpretations of several classic issues in early cognitive development. The book is divided into three sections. The first discusses the nature of developmental processes in general terms, the second covers dynamic principles in process and mechanism, and the third looks at how a dynamic theory can be applied to enduring puzzles of development. Cognitive Psychology series",
"edition": "1st MIT pbk. ed",
"extra": "OCLC: 42854423",
"language": "eng",
"libraryCatalog": "Open WorldCat",
"place": "Cambridge, Mass.",
"publisher": "MIT Press",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "search",
"input": {
"identifiers": {
"oclc": "42854423"
}
},
"items": [
{
"itemType": "book",
"title": "A dynamic systems approach to the development of cognition and action",
"creators": [
{
"firstName": "Esther",
"lastName": "Thelen",
"creatorType": "author"
},
{
"firstName": "Linda B.",
"lastName": "Smith",
"creatorType": "author"
}
],
"date": "1996",
"ISBN": "9780585030159",
"abstractNote": "Annotation. A Dynamic Systems Approach to the Development of Cognition and Action presents a comprehensive and detailed theory of early human development based on the principles of dynamic systems theory. Beginning with their own research in motor, perceptual, and cognitive development, Thelen and Smith raise fundamental questions about prevailing assumptions in the field. They propose a new theory of the development of cognition and action, unifying recent advances in dynamic systems theory with current research in neuroscience and neural development. In particular, they show how by processes of exploration and selection, multimodal experiences form the bases for self-organizing perception-action categories. Thelen and Smith offer a radical alternative to current cognitive theory, both in their emphasis on dynamic representation and in their focus on processes of change. Among the first attempt to apply complexity theory to psychology, they suggest reinterpretations of several classic issues in early cognitive development. The book is divided into three sections. The first discusses the nature of developmental processes in general terms, the second covers dynamic principles in process and mechanism, and the third looks at how a dynamic theory can be applied to enduring puzzles of development. Cognitive Psychology series",
"edition": "1st MIT pbk. ed",
"extra": "OCLC: 42854423",
"language": "eng",
"libraryCatalog": "Open WorldCat",
"place": "Cambridge, Mass.",
"publisher": "MIT Press",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.worldcat.org/title/4933578953",
"items": [
{
"itemType": "journalArticle",
"title": "Navigating the trilemma: Capital flows and monetary policy in China",
"creators": [
{
"creatorType": "author",
"firstName": "Reuven",
"lastName": "Glick"
},
{
"creatorType": "author",
"firstName": "Michael",
"lastName": "Hutchison"
}
],
"date": "5/2009",
"DOI": "10.1016/j.asieco.2009.02.011",
"ISSN": "10490078",
"issue": "3",
"journalAbbreviation": "Journal of Asian Economics",
"language": "en",
"libraryCatalog": "DOI.org (Crossref)",
"pages": "205-224",
"publicationTitle": "Journal of Asian Economics",
"shortTitle": "Navigating the trilemma",
"url": "https://linkinghub.elsevier.com/retrieve/pii/S104900780900013X",
"volume": "20",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.worldcat.org/search?q=isbn%3A7112062314",
"defer": true,
"items": [
{
"itemType": "book",
"title": "中囯园林假山",
"creators": [
{
"lastName": "毛培琳",
"creatorType": "author",
"fieldMode": 1
},
{
"lastName": "朱志红",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "2005",
"ISBN": "9787112062317",
"extra": "OCLC: 77641948",
"language": "Chinese",
"libraryCatalog": "Open WorldCat",
"place": "北京",
"publisher": "中囯建筑工业出版社",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.worldcat.org/title/994342191",
"items": [
{
"itemType": "book",
"title": "Medieval science, technology and medicine: an encyclopedia",
"creators": [
{
"firstName": "Thomas F.",
"lastName": "Glick",
"creatorType": "editor"
},
{
"firstName": "Steven J.",
"lastName": "Livesey",
"creatorType": "editor"
},
{
"firstName": "Faith",
"lastName": "Wallis",
"creatorType": "editor"
}
],
"date": "2017",
"ISBN": "9781315165127",
"abstractNote": "\"First published in 2005, this encyclopedia demonstrates that the millennium from the fall of the Roman Empire to the Renaissance was a period of great intellectual and practical achievement and innovation. In Europe, the Islamic world, South and East Asia, and the Americas, individuals built on earlier achievements, introduced sometimes radical refinements and laid the foundations for modern development. Medieval Science, Technology, and Medicine details the whole scope of scientific knowledge in the medieval period in more than 300 A to Z entries. This comprehensive resource discusses the research, application of knowledge, cultural and technology exchanges, experimentation, and achievements in the many disciplines related to science and technology. It also looks at the relationship between medieval science and the traditions it supplanted. Written by a select group of international scholars, this reference work will be of great use to scholars, students, and general readers researching topics in many fields, including medieval studies, world history, history of science, history of technology, history of medicine, and cultural studies.\"--Provided by publisher",
"extra": "OCLC: 994342191",
"language": "eng",
"libraryCatalog": "Open WorldCat",
"numPages": "598",
"place": "London",
"publisher": "Routledge",
"series": "Routledge revivals",
"shortTitle": "Medieval science, technology and medicine",
"url": "https://www.taylorfrancis.com/books/e/9781315165127",
"attachments": [],
"tags": [
{
"tag": "Electronic books"
},
{
"tag": "Encyclopedias"
},
{
"tag": "Medicine, Medieval"
},
{
"tag": "Medicine, Medieval Encyclopedias"
},
{
"tag": "Médecine médiévale Encyclopédies"
},
{
"tag": "Science, Medieval"
},
{
"tag": "Science, Medieval Encyclopedias"
},
{
"tag": "Sciences médiévales Encyclopédies"
},
{
"tag": "Technologie Encyclopédies"
},
{
"tag": "Technology"
},
{
"tag": "Technology Encyclopedias"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://worldcat.org/title/1023201734",
"items": [
{
"itemType": "book",
"title": "Alices adventures in wonderland",
"creators": [
{
"firstName": "Lewis",
"lastName": "Carroll",
"creatorType": "author"
},
{
"firstName": "Robert",
"lastName": "Ingpen",
"creatorType": "contributor"
}
],
"date": "2017",
"ISBN": "9781786751041",
"abstractNote": "This edition brings together the complete and unabridged text with more than 70 stunning illustrations by Robert Ingpen, each reflecting his unique style and extraordinary imagination in visualising this enchanting story.",
"extra": "OCLC: 1023201734",
"language": "eng",
"libraryCatalog": "Open WorldCat",
"numPages": "192",
"publisher": "Palazzo Editions Ltd",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.worldcat.org/fr/title/960449363",
"items": [
{
"itemType": "book",
"title": "غرفة واحدة لا تكفي: رواية",
"creators": [
{
"lastName": "سلطان العميمي.",
"creatorType": "author",
"fieldMode": 1
},
{
"lastName": "عميمي، سلطان علي بن بخيت، 1974-",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "2016",
"ISBN": "9786140214255",
"edition": "al-Ṭabʻah al-thāniyah",
"extra": "OCLC: 960449363",
"language": "ara",
"libraryCatalog": "Open WorldCat",
"numPages": "212",
"place": "Bayrūt, al-Jazāʼir al-ʻĀṣimah",
"publisher": "منشورات ضفاف ؛ منشورات الاختلاف،",
"shortTitle": "غرفة واحدة لا تكفي",
"attachments": [],
"tags": [
{
"tag": "2000-2099"
},
{
"tag": "Arabic fiction"
},
{
"tag": "Arabic fiction 21st century"
},
{
"tag": "Fiction"
},
{
"tag": "Novels"
},
{
"tag": "Roman arabe 21e siècle"
},
{
"tag": "Romans"
},
{
"tag": "novels"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Philipp Zumstein^https?://www\.nybooks\.com//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2017 Philipp Zumstein and contributors
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
let path = new URL(url).pathname;
if (/^\/articles\//.test(path)) {
return "magazineArticle";
}
if (/^\/(online|daily)\//.test(path)) {
return "blogPost";
}
if (/^\/search\//.test(path)) { // search page
let searchResultRoot = doc.querySelector("#root");
if (searchResultRoot) {
Z.monitorDOMChanges(searchResultRoot);
}
}
if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll(".container .row, .sui-result");
for (let row of rows) {
let href = attr(row, "h4 > a, .sui-result__title-link", "href");
let title = ZU.trimInternal(text(row, "h4 > a, .sui-result__title-link"));
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
// Do a bit of disambiguition using author names; try this:
// https://www.nybooks.com/search?q=star
let author = ZU.trimInternal(text(row, "div:first-child"));
items[href] = author ? `${title} (${author.slice(0, 40).trim()})` : title;
}
return found ? items : false;
}
async function doWeb(doc, url) {
if (detectWeb(doc, url) == 'multiple') {
let items = await Zotero.selectItems(getSearchResults(doc, false));
if (!items) return;
for (let url of Object.keys(items)) {
await scrape(await requestDocument(url));
}
}
else {
await scrape(doc, url);
}
}
async function scrape(doc, url = doc.location.href) {
var type = detectWeb(doc, url);
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
// Work around the synchronicity restruction of handler callback;
// Do necessary computation involving async function out of the callback.
// Date; also useful for retrieving volume and number
let dateArray = urlToDateArray(url);
// Get { volume, issue } from the article's issue page asynchronously
let itemStub;
if (type === "magazineArticle" && dateArray) {
itemStub = await getIssue(dateArray);
}
translator.setHandler('itemDone', function (obj, item) {
item.publicationTitle = "The New York Review of Books";
Object.assign(item, itemStub); // absorb volume/number info
if (type == "magazineArticle") {
item.ISSN = "0028-7504";
}
if (!item.date && dateArray) {
item.date = dateArray.join("-");
}
// Remove noise trailing the "pipe" character
let cleanTitle = text(doc, "header.article-header h1");
if (!cleanTitle) {
cleanTitle = item.title.split("|")[0].trim();
}
item.title = cleanTitle || item.title;
// Remove author of editorials
if (item.creators && item.creators.length === 1) {
let authorString = creatorToString(item.creators[0]);
if (authorString.toLowerCase() === "the editors") {
item.creators = [];
}
}
// Find any translators and fix their type (the EM doesn't mark them as
// translators)
let authorByline = ZU.trimInternal(text(doc, "header .author"));
// Split off any ", translated by ..."
let maybeTranslator = authorByline.split(/\btranslat\S+\s+by\s+/i)[1];
if (maybeTranslator) {
// Iterate over creators and check if the full name appears in the
// "translated by ..." part
for (let author of item.creators) {
let authorString = creatorToString(author);
if (maybeTranslator.includes(authorString)) {
author.creatorType = "translator";
}
}
}
// Add reviewed authors (only for "author" authors, not including
// works without leading author but having editor/translator)
let reviewed = doc.querySelectorAll(".review-items .attribution");
for (let bylineElem of reviewed) {
let byline = ZU.trimInternal(bylineElem.textContent.trim());
for (let author of cleanReviewedByline(byline)) {
item.creators.push(ZU.cleanAuthor(author, "reviewedAuthor"));
}
}
item.complete();
});
let em = await translator.getTranslatorObject();
em.itemType = type;
await em.doWeb(doc, url);
}
// Parse URL path and extract the year, month, and day as array.
function urlToDateArray(url) {
let path = new URL(url).pathname;
let m = path.match(/\/(\d{4})\/(\d{1,2})\/(\d{1,2})\//); // yyyy mm dd
return m && [m[1], m[2], m[3]];
}
// Given the date-array of the issue, find the volume and number by requesting
// the issue's page and parse the metadata. This function is memoized.
var ISSUE_CACHE = {};
async function getIssue(dateArray) {
let key = dateArray.join("/");
if (ISSUE_CACHE[key]) {
return ISSUE_CACHE[key];
}
let issueURL = `https://www.nybooks.com/issues/${key}/`;
let issuePageDoc = await requestDocument(issueURL);
// Use LD-JSON to retrieve the breadcrumb containing volume / issue info
let linkedData = text(issuePageDoc, "script[type='application/ld+json']");
if (linkedData) {
let issueInfo = JSON.parse(linkedData);
let breadcrumbs = issueInfo["@graph"].filter(x => x["@type"] === "BreadcrumbList");
if (breadcrumbs.length) {
breadcrumbs = breadcrumbs[0].itemListElement || [];
}
for (let bcItem of breadcrumbs) {
let m = bcItem.name.match(/^volume (\d+), (?:issue|number) (\d+)/i);
if (m) {
let result = { volume: m[1], issue: m[2] };
ISSUE_CACHE[key] = result;
return result;
}
}
}
return null;
}
// Turn creator object to string in "First Last"
function creatorToString(creator) {
return [creator.firstName, creator.lastName].filter(Boolean).join(" ");
}
// For any single attribution line of the work being reviewed, return the name
// of authors (excluding translators, editors, etc.)
function cleanReviewedByline(byline) {
let authors = [];
let m = byline.match(/^by\s+(.+)/i);
if (!m) { // complex byline, without first "author"; ignore
return authors;
}
byline = m[1]; // remove leading "by"
for (let item of byline.split(/(,|\band\b)/)) {
item = item.trim();
if (item.startsWith("translat")) {
break;
}
if (item && item !== "," && item !== "and") {
authors.push(item);
}
}
return authors;
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.nybooks.com/articles/2011/12/08/zuccotti-park-what-future/",
"items": [
{
"itemType": "magazineArticle",
"title": "Zuccotti Park: What Future?",
"creators": [
{
"firstName": "Michael",
"lastName": "Greenberg",
"creatorType": "author"
}
],
"date": "2011-12-08",
"ISSN": "0028-7504",
"abstractNote": "For weeks, organizers had demonstrated enormous skill in keeping the occupation going, steadily expanding while outfoxing Mayor Bloomberg in his attempts to evict them. But what end did it serve if their status as ethical defenders of the 99 percent was being damaged? It was, after all, their major asset. The complicated logistics of holding the park (and providing food, clothing, and warmth for a floating army of hundreds) was draining resources and forcing the most talented activists to narrow their focus to matters of mere physical survival.",
"issue": "19",
"language": "en",
"libraryCatalog": "www.nybooks.com",
"publicationTitle": "The New York Review of Books",
"shortTitle": "Zuccotti Park",
"url": "https://www.nybooks.com/articles/2011/12/08/zuccotti-park-what-future/",
"volume": "58",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.nybooks.com/search/?q=labor+union",
"defer": true,
"items": "multiple"
},
{
"type": "web",
"url": "https://www.nybooks.com/online/2011/11/16/americas-new-robber-barons/",
"items": [
{
"itemType": "blogPost",
"title": "America’s New Robber Barons",
"creators": [
{
"firstName": "Jeff",
"lastName": "Madrick",
"creatorType": "author"
}
],
"date": "2011-11-16",
"abstractNote": "With early Tuesday’s abrupt evacuation of Zuccotti Park, the City of New York has managed—for the moment—to dislodge protesters from Wall Street. But it will be much harder to turn attention away from the financial excesses of the very rich—the problems that have given Occupy Wall Street such traction. Data on who is in the top 1 percent of earners further reinforces their point. Here's why. Though the situation is often described as a problem of inequality, this is not quite the real concern. The issue is runaway incomes at the very top—people earning a million and a half dollars or more according to the most recent data. And much of that runaway income comes from financial investments, stock options, and other special financial benefits available to the exceptionally rich—much of which is taxed at very low capital gains rates. Meanwhile, there has been something closer to stagnation for almost everyone else—including even for many people in the top 20 percent of earners.",
"blogTitle": "The New York Review of Books",
"language": "en",
"url": "https://www.nybooks.com/online/2011/11/16/americas-new-robber-barons/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.nybooks.com/issues/2012/03/22/",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.nybooks.com/articles/1983/12/08/the-second-death-of-peron/",
"items": [
{
"itemType": "magazineArticle",
"title": "The Second Death of Perón?",
"creators": [
{
"firstName": "Robert",
"lastName": "Cox",
"creatorType": "author"
},
{
"firstName": "Joseph A.",
"lastName": "Page",
"creatorType": "reviewedAuthor"
},
{
"firstName": "Lars",
"lastName": "Schoultz",
"creatorType": "reviewedAuthor"
}
],
"date": "1983-12-08",
"ISSN": "0028-7504",
"abstractNote": "Perón, Perón, how great you are. My general, how much you're worth! As the chorus of the Peronist marching song \"The Peronist Boys\" suggests, there was",
"issue": "19",
"language": "en",
"libraryCatalog": "www.nybooks.com",
"publicationTitle": "The New York Review of Books",
"url": "https://www.nybooks.com/articles/1983/12/08/the-second-death-of-peron/",
"volume": "30",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.nybooks.com/articles/1983/12/22/double-trouble/",
"items": [
{
"itemType": "magazineArticle",
"title": "Double Trouble",
"creators": [
{
"firstName": "David",
"lastName": "Bellos",
"creatorType": "translator"
},
{
"firstName": "Emmanuel Le Roy",
"lastName": "Ladurie",
"creatorType": "author"
},
{
"firstName": "Natalie Zemon",
"lastName": "Davis",
"creatorType": "reviewedAuthor"
}
],
"date": "1983-12-22",
"ISSN": "0028-7504",
"abstractNote": "The biographies of peasants and especially the autobiographies of country people are a longstanding problem. We owe to the habits of Protestant",
"issue": "20",
"language": "en",
"libraryCatalog": "www.nybooks.com",
"publicationTitle": "The New York Review of Books",
"url": "https://www.nybooks.com/articles/1983/12/22/double-trouble/",
"volume": "30",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.nybooks.com/articles/2015/02/05/putins-kleptocracy/",
"items": [
{
"itemType": "magazineArticle",
"title": "‘Putin’s Kleptocracy’",
"creators": [],
"date": "2015-02-05",
"ISSN": "0028-7504",
"abstractNote": "Lucy Komisar has written to us that she has a statement to make about the article by Anne Applebaum, “How He and His Cronies Stole Russia,” in our",
"issue": "2",
"language": "en",
"libraryCatalog": "www.nybooks.com",
"publicationTitle": "The New York Review of Books",
"url": "https://www.nybooks.com/articles/2015/02/05/putins-kleptocracy/",
"volume": "62",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.nybooks.com/online/2012/12/15/our-moloch/",
"items": [
{
"itemType": "blogPost",
"title": "Our Moloch",
"creators": [
{
"firstName": "Garry",
"lastName": "Wills",
"creatorType": "author"
}
],
"date": "2012-12-15",
"abstractNote": "The gun is our Moloch. We sacrifice children to him daily—sometimes, as at Sandy Hook, by directly throwing them into the fire-hose of bullets from our protected private killing machines, sometimes by blighting our children’s lives by the death of a parent, a schoolmate, a teacher, a protector. The gun is not a mere tool, a bit of technology, a political issue, a point of debate. It is an object of reverence.",
"blogTitle": "The New York Review of Books",
"language": "en",
"url": "https://www.nybooks.com/online/2012/12/15/our-moloch/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://(www\.|referenceworks\.|bibliographies\.)?brill(online)?\.com//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (doc.querySelector('meta[name="citation_title"]')) {
if (url.includes('/journals/')) {
return 'journalArticle';
}
else if (url.includes('referenceworks.brillonline.com/entries/')) {
return 'encyclopediaArticle';
}
else {
return 'book';
}
}
else if (url.includes('bibliographies.brillonline.com/entries/')
&& doc.querySelector('#export-form')) {
return 'journalArticle';
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('#searchContent .text-headline a, .type-article .text-headline a, .result-item .book-title a');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
if (url.includes('bibliographies.brillonline.com/entries/')) {
scrapeBibliography(doc);
return;
}
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
if (item.date) {
item.date = ZU.strToISO(item.date);
}
if (item.itemType == 'journalArticle' && item.section) {
delete item.section;
}
if (item.itemType == 'book' && item.publicationTitle) {
delete item.publicationTitle;
}
if (item.abstractNote && item.abstractNote.endsWith('by Brill.')) {
delete item.abstractNote;
}
if (!item.creators.length) {
// editors often don't make it into the EM
for (let editor of doc.querySelectorAll('.content-contributor-editor a')) {
item.creators.push(ZU.cleanAuthor(editor.textContent, 'editor'));
}
}
if (item.attachments.length > 1) {
// only remove snapshot if we get a PDF
item.attachments = item.attachments.filter(at => at.title != 'Snapshot');
}
item.complete();
});
translator.getTranslatorObject(function (trans) {
if (url.includes('referenceworks.brillonline.com/entries/')) {
trans.itemType = 'encyclopediaArticle';
}
// Brill's HTML is structured incorrectly due to a bug in the
// Pubfactory CMS, and it causes some parsers to put the <meta>
// tags in the body. We'll fix it by telling EM to work around it.
trans.searchForMetaTagsInBody = true;
trans.doWeb(doc, url);
});
}
function scrapeBibliography(doc) {
let params = new URLSearchParams({
entryId: attr(doc, 'input[name="entryId"]', 'value'),
dest: attr(doc, 'input[name="dest"]', 'value')
}).toString();
ZU.doPost('/export/exportRis', params, function (ris) {
var translator = Zotero.loadTranslator("import");
translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7"); // RIS
translator.setString(ris);
translator.setHandler("itemDone", function (obj, item) {
if (item.journalAbbreviation == item.publicationTitle) {
delete item.journalAbbreviation;
}
if (item.url) {
item.url = item.url.replace(':443', '');
}
item.complete();
});
translator.translate();
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://brill.com/view/journals/afdi/5/1/article-p27_3.xml",
"items": [
{
"itemType": "journalArticle",
"title": "African Trading Post in Guangzhou: Emergent or Recurrent Commercial Form?",
"creators": [
{
"firstName": "Sylvie",
"lastName": "Bredeloup",
"creatorType": "author"
}
],
"date": "2012-01-01",
"DOI": "10.1163/187254612X646206",
"ISSN": "1872-5457, 1872-5465",
"abstractNote": "Abstract In the early 2000s, nationals of Sub-Saharan Africa who had settled in the market places of Hong Kong, Bangkok, Jakarta, and Kuala Lumpur, moved to Guangzhou and opened offices in the upper floors of buildings in Baiyun and Yuexiu Districts. These were located in the northwest of the city, near the central railway station and one of the two fairs of Canton. Gradually these traders were able to create the necessary conditions of hospitality by opening community restaurants on upper floors, increasing the number of showrooms and offices as well as the services of freight and customs clearance in order to live up to an African itinerant customer’s expectations. From interviews carried out between 2006 and 2009 in the People’s Republic of China and in Hong Kong, Bangkok, Dubai, and West Africa, the article will first highlight the economic logics which have contributed to the constitution of African trading posts in China and describe their extension from the Middle East and from Asia. The second part will determine the respective roles of migrants and traveling Sub-Saharan entrepreneurs, before exploring their interactions with Chinese society in the setting up of these commercial networks. It will also look at the impact of toughening immigration policies. It is the principle of the African trading posts of anchoring of some traders in strategic places negotiated with the host society that allows the movement but also the temporary settlement of many visitors. The first established traders purchase products manufactured in the hinterland to fulfill the demand of the itinerant merchants who in turn supply customers located in other continents.",
"issue": "1",
"language": "en",
"libraryCatalog": "brill.com",
"pages": "27-50",
"publicationTitle": "African Diaspora",
"shortTitle": "African Trading Post in Guangzhou",
"url": "https://brill.com/view/journals/afdi/5/1/article-p27_3.xml",
"volume": "5",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "African entrepreneurs"
},
{
"tag": "African migration"
},
{
"tag": "Guangzhou"
},
{
"tag": "comptoir commercial"
},
{
"tag": "entrepreneurs africains"
},
{
"tag": "migration africaine"
},
{
"tag": "trading post"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://brill.com/search?q2=ottoman+missionary",
"items": "multiple"
},
{
"type": "web",
"url": "https://brill.com/view/journals/jal/49/3/article-p171_1.xml",
"items": [
{
"itemType": "journalArticle",
"title": "The Arabic Adventures of Télémaque: Trajectory of a Global Enlightenment Text in the Nahḍah",
"creators": [
{
"firstName": "Peter",
"lastName": "Hill",
"creatorType": "author"
}
],
"date": "2018-08-17",
"DOI": "10.1163/1570064x-12341367",
"ISSN": "0085-2376, 1570-064x",
"abstractNote": "Abstract The Marquis de Fénelon’s internationally popular didactic narrative, Les aventures de Télémaque, went through a remarkable number of metamorphoses in the Nahḍah, the Arab world’s cultural revival movement of the long nineteenth century. This article examines two early manuscript translations by Syrian Christian writers in the 1810s, the rhymed prose version by Rifāʿah Rāfiʿ al-Ṭahṭāwī in the 1860s; its rewriting by Shāhīn ʿAṭiyyah in 1885; and Saʿdallāh al-Bustānī’s musical drama of 1869, the basis for performances later in the century by the famous actor Salāmah Ḥijāzī. Placing Télémaque’s Arabic trajectory within its global vogue in the Enlightenment suggests ways of reading the Nahḍah between theories of world literature and ‘transnational mass-texts’, and more specific local histories of translation and literary adaptation. The ambiguity of Télémaque, its hybrid and transitional form, was important to its success in milieux facing analogous kinds of hybridity and transition—among them those of the Arab Nahḍah.",
"issue": "3",
"language": "en",
"libraryCatalog": "brill.com",
"pages": "171-203",
"publicationTitle": "Journal of Arabic Literature",
"shortTitle": "The Arabic Adventures of Télémaque",
"url": "https://brill.com/view/journals/jal/49/3/article-p171_1.xml",
"volume": "49",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Arab theater"
},
{
"tag": "Beirut"
},
{
"tag": "Cairo"
},
{
"tag": "Enlightenment"
},
{
"tag": "Fénelon"
},
{
"tag": "Nahḍah"
},
{
"tag": "adaptation"
},
{
"tag": "translation"
},
{
"tag": "world literature"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://brill.com/view/title/58302",
"items": [
{
"itemType": "book",
"title": "Encyclopaedia of Islam - Three 2021-3",
"creators": [
{
"firstName": "Kate",
"lastName": "Fleet",
"creatorType": "editor"
},
{
"firstName": "Gudrun",
"lastName": "Krämer",
"creatorType": "editor"
},
{
"firstName": "Denis",
"lastName": "Matringe",
"creatorType": "editor"
},
{
"firstName": "John",
"lastName": "Nawas",
"creatorType": "editor"
},
{
"firstName": "Everett",
"lastName": "Rowson",
"creatorType": "editor"
}
],
"date": "2021-04-30",
"ISBN": "9789004435957",
"language": "en",
"libraryCatalog": "brill.com",
"publisher": "Brill",
"url": "https://brill.com/view/title/58302",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "General"
},
{
"tag": "Middle East and Islamic Studies"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://brill.com/view/journals/ejjs/15/2/ejjs.15.issue-2.xml",
"items": "multiple"
},
{
"type": "web",
"url": "https://referenceworks.brillonline.com/entries/encyclopaedia-iranica-online/abaev-vasilii-ivanovich-COM_362360",
"items": [
{
"itemType": "encyclopediaArticle",
"title": "ABAEV, VASILIĬ IVANOVICH",
"creators": [
{
"firstName": "Ilya",
"lastName": "Yakubovich",
"creatorType": "author"
}
],
"date": "2021-05-10",
"encyclopediaTitle": "Encyclopaedia Iranica Online",
"language": "en",
"libraryCatalog": "referenceworks.brillonline.com",
"publisher": "Brill",
"url": "https://referenceworks.brillonline.com/entries/encyclopaedia-iranica-online/abaev-vasilii-ivanovich-COM_362360",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://referenceworks.brillonline.com/browse/encyclopaedia-iranica-online/alpha/e",
"items": "multiple"
},
{
"type": "web",
"url": "https://bibliographies.brillonline.com/entries/bibliography-of-slavic-linguistics/perspektive-proucavanja-alhamijado-pismenosti-projekt-transkripcije-i-transliteracije-alhamijado-tekstova-lb900000427509?s.num=0&s.f.s2_parent=s.f.book.bibliography-of-slavic-linguistics&s.keywords=%22Abjad%22",
"items": [
{
"itemType": "journalArticle",
"title": "Perspektive proučavanja alhamijado pismenosti : projekt transkripcije i transliteracije alhamijado tekstova",
"creators": [
{
"lastName": "Kalajdžija",
"firstName": "Alen",
"creatorType": "author"
}
],
"date": "2014",
"language": "English",
"libraryCatalog": "Brill",
"pages": "421-430",
"publicationTitle": "Prilozi za orijentalnu filologiju = Contributions to Oriental Philology = Revue de Philologie Orientale",
"shortTitle": "Perspektive proučavanja alhamijado pismenosti",
"url": "https://bibliographies.brillonline.com/entries/bibliography-of-slavic-linguistics/perspektive-proucavanja-alhamijado-pismenosti-projekt-transkripcije-i-transliteracije-alhamijado-tekstova-lb900000427509",
"volume": "64",
"attachments": [],
"tags": [
{
"tag": "Abjad"
},
{
"tag": "Script, orthography"
},
{
"tag": "Serbo-Croatian (Serbian, Croatian, Bosnian)"
},
{
"tag": "Transliteration"
}
],
"notes": [
{
"note": "<p>E. ab.</p>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://bibliographies.brillonline.com/search?s.num=0&s.f.s2_parent=s.f.book.bibliography-of-slavic-linguistics&s.keywords=%22Abjad%22",
"items": "multiple"
}
]
/** END TEST CASES **/
100Abe Jellinek^https://archive\.alsharekh\.org//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
let apiBase = 'https://archiveapi.alsharekh.org';
let urlRe = /\/Articles\/([^/]+)\/([^/]+)\/([^/?#]+)/;
function detectWeb(doc, url) {
if (urlRe.test(url)) {
return "magazineArticle";
}
let appElem = doc.querySelector("app-root");
if (appElem) {
Z.monitorDOMChanges(appElem);
}
if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('td > a[href^="/Articles/"], th > a[href^="/Articles/"]');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
async function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
let items = await Z.selectItems(getSearchResults(doc));
if (!items) return;
for (let url of Object.keys(items)) {
await scrape(null, url);
}
}
else {
await scrape(doc, url);
}
}
async function scrape(doc, url) {
let item = new Zotero.Item('magazineArticle');
let [, MID, IID, AID] = url.match(urlRe);
let issue = await requestJSON(`${apiBase}/Search/IssueHInfo?MID=${MID}&IID=${IID}`);
let article = await requestJSON(`${apiBase}/Search/ArticleHInfo?AID=${AID}`);
item.title = article.articleTitle.replace(' : ', ": ");
item.pages = article.pageNo;
item.creators.push(ZU.cleanAuthor(article.articleAuthor, 'author'));
item.publicationTitle = issue.magazineArabicName;
item.place = issue.countryName;
item.issue = issue.issuenumber || issue.issueName;
item.date = ZU.strToISO(arabicToEnglishDate(issue.newIssueDate));
item.url = url;
let attachment = { title: "Snapshot" };
if (doc) {
attachment.document = doc;
}
else {
attachment.url = url;
}
item.attachments.push(attachment);
item.complete();
}
// just so we get months on non-Arabic locales
function arabicToEnglishDate(date) {
return date
.replace('يناير', 'January')
.replace('فبراير', 'February')
.replace('مارس', 'March')
.replace('أبريل', 'April')
.replace('إبريل', 'April')
.replace('مايو', 'May')
.replace('يونيو', 'June')
.replace('يونية', 'June')
.replace('يوليو', 'July')
.replace('يوليو', 'July')
.replace('أغسطس', 'August')
.replace('سبتمبر', 'September')
.replace('أكتوبر', 'October')
.replace('نوفمبر', 'November')
.replace('ديسمبر', 'December');
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://archive.alsharekh.org/Articles/290/20647/469598",
"items": [
{
"itemType": "magazineArticle",
"title": "الخط العربي: فلسفة التأصيل الجمالي والتفريع الفني",
"creators": [
{
"firstName": "بركات محمد",
"lastName": "مراد",
"creatorType": "author"
}
],
"date": "2004-04-01",
"issue": "11",
"libraryCatalog": "Alsharekh",
"publicationTitle": "حروف عربية",
"shortTitle": "الخط العربي",
"url": "https://archive.alsharekh.org/Articles/290/20647/469598",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://archive.alsharekh.org/Articles/312/21129/479105",
"items": [
{
"itemType": "magazineArticle",
"title": "الرحالة والباحثون الروس في تاريخ الجزيرة العربية وآثارها \"دراسة تقويمية\"",
"creators": [
{
"firstName": "عبد الرحمن الطيب",
"lastName": "الأنصاري",
"creatorType": "author"
}
],
"date": "2005-01-01",
"issue": "11",
"libraryCatalog": "Alsharekh",
"publicationTitle": "أدوماتو",
"url": "https://archive.alsharekh.org/Articles/312/21129/479105",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://archive.alsharekh.org/Articles/174/16356/368236",
"items": [
{
"itemType": "magazineArticle",
"title": "أسلوب النقض في كتابات الرحالة الأوربيين",
"creators": [
{
"firstName": "حسن",
"lastName": "غزالة",
"creatorType": "author"
}
],
"date": "2005-06-01",
"issue": "20",
"libraryCatalog": "Alsharekh",
"publicationTitle": "جذور",
"url": "https://archive.alsharekh.org/Articles/174/16356/368236",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://archive.alsharekh.org/contents/174/19785",
"defer": true,
"items": "multiple"
},
{
"type": "web",
"url": "https://archive.alsharekh.org/AuthorArticles/124",
"items": "multiple"
}
]
/** END TEST CASES **/
100Zoë C. Ma^https?://lithub\.com//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2023 Zoë C. Ma
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
const urlObj = new URL(url);
// Reject "non-processable" pages, i.e. pages for site-structural
// purposes, including legal notices, about pages, taxonomy, etc.
// Not incorporating this logic into the "target" field of translator
// metadata, to keep the RegExp there simple.
const skipPath = /\/(category|tag|masthead|about-literary-hub|privacy-policy-for-.+)\//;
if (urlObj.pathname.match(skipPath)) {
return false;
}
const searchValue = urlObj.searchParams.get("s");
if (urlObj.pathname === "/") { // On search page (i.e. site base URL).
if (!searchValue) {
// Empty search (searchValue is empty string) or a page
// on the expected path but without the required
// search-query parameter; skip content check and
// reject directly.
return false;
}
if (getSearchResults(doc, true)) {
return "multiple";
}
else {
return false;
}
}
// Not on search page.
if (doc.querySelector("div.post_wrapper")) {
const tags = getTags(doc);
if (tags && tags.includes("podcasts")) {
return "podcast";
}
return "blogPost";
}
return false;
}
async function doWeb(doc, url) {
if (detectWeb(doc, url) === "multiple") {
const items = await Z.selectItems(getSearchResults(doc, false));
if (!items) return;
for (const url of Object.keys(items)) {
await scrape(await requestDocument(url));
}
}
else {
await scrape(doc, url);
}
}
function getSearchResults(doc, checkOnly) {
const resultElems = doc.querySelectorAll("div.search .post_header a");
if (!resultElems.length) return false;
const items = {};
let isNonEmpty = false;
for (const anchorElem of resultElems) {
const href = anchorElem.href;
const title = ZU.trimInternal(anchorElem.textContent.trim());
// Currently, external hyperlinks in search results
// will not work correctly, because they are passed to
// the same scrape() function that is not designed for
// them. Therefore, they are skipped.
const hrefURL = new URL(href);
if (hrefURL.origin === doc.location.origin
&& !(href in items) && title) {
if (checkOnly) {
return true;
}
items[href] = title;
isNonEmpty = true;
} // Otherwise skip duplicate or external result.
}
return isNonEmpty && items;
}
async function scrape(doc, url) { // eslint-disable-line no-unused-vars
const translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function (tobj, item) {
handleItem(doc, item);
});
translator.translate();
}
// Detect the LitHub article type (plain, Lit Hub Excerpts, ...).
// NOTE: Must be called after the item's tags have been populated, because some
// detection routines require tag data.
function detectType(doc) {
if (doc.querySelector("div.excerptpage")) {
return "excerpt";
}
// Other types of posts, if needed, may be add here.
return false;
}
// Handle generic item by populating the tags and publicationTitle fields and
// dispatch the handler based on the document's type.
function handleItem(doc, item) {
item.publicationTitle = "Literary Hub";
const tags = getTags(doc);
item.tags = tags;
const articleType = tags.map(t => t.toLowerCase()).includes("podcasts")
? "podcast"
: detectType(doc);
// Populate the fields (especially authorship info) based on the type
// of the article.
switch (articleType) {
case "excerpt":
handleExcerpt(doc, item);
break;
case "podcast":
handlePodcast(doc, item);
break;
default:
handleDefault(doc, item);
}
item.complete();
}
// Type-specific handlers.
// Podcasts hosted by LitHub.
function handlePodcast(doc, item) {
item.itemType = "podcast";
item.seriesTitle = getByline(doc);
item.creators = getPodcastAuthors(doc);
item.creators.push(...inferPodcastGuests(doc, item.title));
}
function getPodcastAuthors(doc) {
const textLine = getSubheading(doc);
if (!textLine) return [];
let rawAuth = textLine.match(/(?:conversation with\s+)(.+)(?:\s+on\s+)/i);
if (!rawAuth) {
rawAuth = textLine.match(/(?:Hosted by\s+)(.+)/i);
}
if (rawAuth) {
return splitNames(rawAuth[1])
.map(n => ZU.cleanAuthor(n, "author"));
}
return [];
}
// Infer the podcast guests from the body paragraphs. The opening bold text of
// paragraphs are where the names can usually be found. To filter out noise,
// notice that the guest's name is also most likely part of the title.
// NOTE: an alternative idea is to look for the guest's name in the tags.
function inferPodcastGuests(doc, title) {
const podBody = doc.querySelector("[itemprop='articleBody']");
if (!podBody) return false;
const normTitle = title.toLowerCase();
const boldFrags = [];
for (const elem of podBody.querySelectorAll(":scope p b, :scope p strong")) {
const txtMatch = ZU.trimInternal(elem.textContent).match(/\b.+\b/);
if (txtMatch) {
const txt = txtMatch[0];
if (txt === txt.toUpperCase()) {
// Skip all-caps, which are relatively noisy.
continue;
}
if (!boldFrags.includes(txt)
&& normTitle.includes(txt.toLowerCase())) {
boldFrags.push(txt);
}
}
}
return boldFrags.map(name => ZU.cleanAuthor(name, "guest"));
}
// Default, or "plain" blog post.
function handleDefault(doc, item) {
const creators = [];
const rawAuthors = getByline(doc);
// Skip "institutional author" when it is the same as publisher.
if (rawAuthors && rawAuthors.toLowerCase() !== "literary hub") {
const authorInfo = parseAuthorTransFromDefault(rawAuthors, doc, item);
if (authorInfo) {
for (const [type, names] of Object.entries(authorInfo)) {
creators.push(...names.map(n => ZU.cleanAuthor(n, type)));
}
}
}
item.creators = creators;
}
// Given the document of the article of the "default" type, determine author
// and possible translator information as an object with properties "author"
// and "translator", or false if not found.
function parseAuthorTransFromDefault(bylineText, doc, item) {
// Attempt to parse the raw-byline as "...[,] translated by [...]" or
// similar.
const bylineMatch = bylineText.match(/(.+?)[,;\s([]+trans(?:lated\s+by\s+|\.\s+)(.+)\b/i);
if (bylineMatch) {
return {
author: splitNames(bylineMatch[1]),
translator: splitNames(bylineMatch[2])
};
}
// Attempt to parse the byline without any "translated by" or "trans."
// hints in it. To check for any translator(s), check for any that is
// included in the title or subtitle after "translated by ...".
const transHeadingRE = /\btranslated by\s+(.+)/i;
// Check title.
let transHeadingMatch = item.title.match(transHeadingRE);
if (!transHeadingMatch) {
// Check subtitle h3.
const subheading = getSubheading(doc);
transHeadingMatch = subheading.match(transHeadingRE);
}
if (transHeadingMatch) {
const translators = splitNames(transHeadingMatch[1]);
// Dedup any byline names.
const authors = [];
for (const name of splitNames(bylineText)) {
if (!translators.includes(name)) {
authors.push(name);
}
}
return {
author: authors,
translator: translators
};
}
// Just author names, without translators.
return {
author: splitNames(bylineText),
translator: []
};
}
// Handle the page that belongs to the "Lit Hub Excerpts" type.
function handleExcerpt(doc, item) {
const rawAuthorText = ZU.trimInternal(text(doc, "div.excerptpage>h2"));
// Split into possible main author(s)/translator(s) parts.
const authTransMatch = rawAuthorText.match(/(.+)\s*\(trans\.\s(.+)\)/);
const creators = [];
let nameText;
if (authTransMatch) {
// Translated work.
nameText = authTransMatch[2]; // translator(s)
for (const name of splitNames(nameText)) {
creators.push(ZU.cleanAuthor(name, "translator"));
}
nameText = authTransMatch[1]; // original author(s)
}
else {
nameText = rawAuthorText;
}
// Handle original author name(s).
for (const name of splitNames(nameText)) {
creators.push(ZU.cleanAuthor(name, "author"));
}
item.creators = creators;
}
// Convenience utility functions
// Split a string of personal names delimitered by the comma (,) and optionally
// with the word "and", no matter whether the Oxford comma style is used.
function splitNames(str) {
return str.split(/(?:,|\s+and\s+)/)
.map(s => s.trim())
.filter(Boolean);
}
// Returns an array of tags on the article.
function getTags(doc) {
return Array.from(doc.querySelectorAll(".post_tag a[rel='tag']"))
.map(elem => ZU.trimInternal(elem.textContent.trim()));
}
// Returns the (whitespace-normalized) byline ("By ...") text.
function getByline(doc) {
let byline = text(doc, ".author_name span[itemprop='name']");
if (!byline) {
// Only for certain pre-2022 posts without more
// semantically-clear byline info.
byline = text(doc, ".post_detail > a[href*='author']");
}
return ZU.trimInternal(byline);
}
// Returns the h3 subheading in the post heading block, which can be rich in
// information.
function getSubheading(doc) {
return ZU.trimInternal(text(doc, ".post_header_wrapper h3"));
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://lithub.com/?s=wonder+AND+lelio",
"detectedItemType": "multiple",
"items": "multiple"
},
{
"type": "web",
"url": "https://lithub.com/lydia-conklin-on-letting-their-personality-into-their-work/",
"detectedItemType": "podcast",
"items": [
{
"itemType": "podcast",
"title": "Lydia Conklin on Letting Their Personality Into Their Work",
"creators": [
{
"firstName": "Alex",
"lastName": "Higley",
"creatorType": "author"
},
{
"firstName": "Lindsay",
"lastName": "Hunter",
"creatorType": "author"
},
{
"firstName": "Lydia",
"lastName": "Conklin",
"creatorType": "guest"
}
],
"abstractNote": "Welcome to I’m a Writer But, where two writers-and talk to other writers-and about their work, their lives, their other work, the stuff that takes up any free time they have, all the stuff th…",
"language": "en-US",
"seriesTitle": "I'm a Writer But",
"url": "https://lithub.com/lydia-conklin-on-letting-their-personality-into-their-work/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Alex Higley"
},
{
"tag": "I'm a Writer But"
},
{
"tag": "Lindsay Hunter"
},
{
"tag": "Lit Hub Radio"
},
{
"tag": "Lydia Conklin"
},
{
"tag": "Rainbow Rainbow"
},
{
"tag": "podcasts"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://lithub.com/the-cat-thief-by-son-bo-mi-translated-by-janet-hong/",
"detectedItemType": "blogPost",
"items": [
{
"itemType": "blogPost",
"title": "“The Cat Thief” by Son Bo-mi, Translated by Janet Hong",
"creators": [
{
"firstName": "Son",
"lastName": "Bo-mi",
"creatorType": "author"
},
{
"firstName": "Janet",
"lastName": "Hong",
"creatorType": "translator"
}
],
"date": "2022-11-08T09:51:52+00:00",
"abstractNote": "“I was away from Korea for a long time,” he said. We were having tea at a downtown café. I tried to recall the last time I’d seen him, but couldn’t. When I made some offhand comment about the tea t…",
"blogTitle": "Literary Hub",
"language": "en-US",
"url": "https://lithub.com/the-cat-thief-by-son-bo-mi-translated-by-janet-hong/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Freeman's"
},
{
"tag": "Janet Hong"
},
{
"tag": "Korean literature"
},
{
"tag": "Son Bo-mi"
},
{
"tag": "The Cat Thief"
},
{
"tag": "loss"
},
{
"tag": "theft"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://lithub.com/read-the-winners-of-american-short-fictions-2022-insider-prize-selected-by-lauren-hough/",
"detectedItemType": "blogPost",
"items": [
{
"itemType": "blogPost",
"title": "Read the Winners of American Short Fiction’s 2022 Insider Prize, Selected by Lauren Hough",
"creators": [],
"date": "2022-09-15T08:55:13+00:00",
"abstractNote": "Lauren Hough may be known for her spar-ready online presence, but in real life she’s pure warmth: years ago, she overheard us talking about the Insider Prize—American Short Fiction’s annual contest…",
"blogTitle": "Literary Hub",
"language": "en-US",
"url": "https://lithub.com/read-the-winners-of-american-short-fictions-2022-insider-prize-selected-by-lauren-hough/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "American Short Fiction"
},
{
"tag": "David Antares"
},
{
"tag": "Insider Prize"
},
{
"tag": "Lauren Hough"
},
{
"tag": "Michael John Wiese"
},
{
"tag": "incarcerated writers"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://lithub.com/eden-boudreau-on-memoirs-that-risk-everything/",
"detectedItemType": "podcast",
"items": [
{
"itemType": "podcast",
"title": "Eden Boudreau on Memoirs That Risk Everything",
"creators": [
{
"firstName": "Brooke",
"lastName": "Warner",
"creatorType": "author"
},
{
"firstName": "Grant",
"lastName": "Faulkner",
"creatorType": "author"
},
{
"firstName": "Eden",
"lastName": "Boudreau",
"creatorType": "guest"
}
],
"abstractNote": "Write-minded: Weekly Inspiration for Writers is currently in its fourth year. We are a weekly podcast for writers craving a unique blend of inspiration and real talk about the ups and downs of the …",
"language": "en-US",
"seriesTitle": "Write-minded",
"url": "https://lithub.com/eden-boudreau-on-memoirs-that-risk-everything/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Brooke Warner"
},
{
"tag": "Crying Wolf"
},
{
"tag": "Eden Boudreau"
},
{
"tag": "Grant Faulkner"
},
{
"tag": "Lit Hub Radio"
},
{
"tag": "Write-minded"
},
{
"tag": "podcasts"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://lithub.com/lesser-islands/",
"detectedItemType": "blogPost",
"items": [
{
"itemType": "blogPost",
"title": "Lesser Islands",
"creators": [
{
"firstName": "Peter",
"lastName": "DiGiovanni",
"creatorType": "translator"
},
{
"firstName": "Donatella",
"lastName": "Melucci",
"creatorType": "translator"
},
{
"firstName": "Lorenza",
"lastName": "Pieri",
"creatorType": "author"
}
],
"date": "2023-02-24T09:52:10+00:00",
"abstractNote": "We saw the dolphins in the morning. We trailed their shiny fins in the boat for a good half hour; then they went too far, and Papa had to turn back. For me, it was the first time. It was the end of…",
"blogTitle": "Literary Hub",
"language": "en-US",
"url": "https://lithub.com/lesser-islands/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Donatella Melucci"
},
{
"tag": "Europa"
},
{
"tag": "Excerpt"
},
{
"tag": "Fiction"
},
{
"tag": "Italian"
},
{
"tag": "Lesser Islands"
},
{
"tag": "Peter DiGiovanni"
},
{
"tag": "novel"
},
{
"tag": "translation"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://lithub.com/the-forest-a-fable-of-america-in-the-1830s/",
"detectedItemType": "blogPost",
"items": [
{
"itemType": "blogPost",
"title": "The Forest: A Fable of America in the 1830s",
"creators": [
{
"firstName": "Alexander",
"lastName": "Nemerov",
"creatorType": "author"
}
],
"date": "2023-03-10T09:08:09+00:00",
"abstractNote": "“Smoke and Burnt Pine” Nat Turner saw hieroglyphic characters on the leaves. Written in blood, they portrayed men in different poses, the same he had seen in the sky when the Holy Ghost…",
"blogTitle": "Literary Hub",
"language": "en-US",
"shortTitle": "The Forest",
"url": "https://lithub.com/the-forest-a-fable-of-america-in-the-1830s/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Alexander Nemerov"
},
{
"tag": "Excerpt"
},
{
"tag": "Princeton University Press"
},
{
"tag": "The Forest"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://lithub.com/a-girl-and-the-moon/",
"detectedItemType": "blogPost",
"items": [
{
"itemType": "blogPost",
"title": "“A Girl and the Moon”",
"creators": [
{
"firstName": "Lee",
"lastName": "Young-Ju",
"creatorType": "author"
},
{
"firstName": "Jae",
"lastName": "Kim",
"creatorType": "translator"
}
],
"date": "2021-12-17T09:48:57+00:00",
"abstractNote": "Mid-night, swinging upside down on a pull-up bar, the girl says, Mother, this bone growing on my back, white in the night, protruding out of my skin, long and endlessly this bone, like a ladder it …",
"blogTitle": "Literary Hub",
"language": "en-US",
"url": "https://lithub.com/a-girl-and-the-moon/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "A Girl and the Moon"
},
{
"tag": "Black Ocean"
},
{
"tag": "Cold Candies"
},
{
"tag": "Jae Kim"
},
{
"tag": "Lee Young-Ju"
},
{
"tag": "translated poetry"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://lithub.com/the-calling-of-st-mattew/",
"detectedItemType": "blogPost",
"items": [
{
"itemType": "blogPost",
"title": "“The Calling of St. Matthew”",
"creators": [
{
"firstName": "Adam",
"lastName": "Zagajewski",
"creatorType": "author"
},
{
"firstName": "Clare",
"lastName": "Cavanagh",
"creatorType": "translator"
}
],
"date": "2021-12-09T09:49:32+00:00",
"abstractNote": "that priest looks just like Belmondo –Wislawa Szymborska, Funeral (II) —Look at his hand, his palm. Like a pianist’s —But that old guy can’t see a thing —What next, paying in a church —Mom, my hea…",
"blogTitle": "Literary Hub",
"language": "en-US",
"url": "https://lithub.com/the-calling-of-st-mattew/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Adam Zagajewski"
},
{
"tag": "Clare Cavanagh"
},
{
"tag": "Farrar Straus and Giroux"
},
{
"tag": "Jonathan Galassi"
},
{
"tag": "Robyn Creswell"
},
{
"tag": "The FSG Poetry Anthology"
},
{
"tag": "a poem"
},
{
"tag": "poetry"
},
{
"tag": "translated poetry"
},
{
"tag": "translation"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://lithub.com/small-wonder-the-challenge-of-parenting-through-climate-collapse/",
"detectedItemType": "blogPost",
"items": [
{
"itemType": "blogPost",
"title": "Small Wonder: The Challenge of Parenting Through Climate Collapse",
"creators": [
{
"firstName": "Eiren",
"lastName": "Caffall",
"creatorType": "author"
}
],
"date": "2019-11-18T09:55:49+00:00",
"abstractNote": "We come to Monhegan Island—twelve miles off the coast of Maine, perched in the fastest-warming saltwater ecosystem on the planet—to avoid darkness. We come for wonder. We walk across the island onc…",
"blogTitle": "Literary Hub",
"language": "en-US",
"shortTitle": "Small Wonder",
"url": "https://lithub.com/small-wonder-the-challenge-of-parenting-through-climate-collapse/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Coast"
},
{
"tag": "Environment"
},
{
"tag": "Maine"
},
{
"tag": "Monhegan Island"
},
{
"tag": "Periwinkles"
},
{
"tag": "Rachel Carson"
},
{
"tag": "Southport"
},
{
"tag": "The Sense of Wonder"
},
{
"tag": "climate change"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://lithub.com/letters-to-a-writer-of-color-deepa-anappara-and-taymour-soomro-on-finding-community-with-each-other/",
"detectedItemType": "podcast",
"items": [
{
"itemType": "podcast",
"title": "Letters to a Writer of Color: Deepa Anappara and Taymour Soomro on Finding Community With Each Other",
"creators": [
{
"firstName": "Whitney",
"lastName": "Terrell",
"creatorType": "author"
},
{
"firstName": "V. V.",
"lastName": "Ganeshananthan",
"creatorType": "author"
},
{
"firstName": "Deepa",
"lastName": "Anappara",
"creatorType": "guest"
},
{
"firstName": "Taymour",
"lastName": "Soomro",
"creatorType": "guest"
}
],
"abstractNote": "Fiction writers Deepa Anappara and Taymour Soomro join co-hosts V.V. Ganeshananthan and Whitney Terrell to discuss the newly published essay collection Letters to a Writer of Color, which they co-e…",
"language": "en-US",
"seriesTitle": "Fiction Non Fiction",
"shortTitle": "Letters to a Writer of Color",
"url": "https://lithub.com/letters-to-a-writer-of-color-deepa-anappara-and-taymour-soomro-on-finding-community-with-each-other/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Deepa Anappara"
},
{
"tag": "Fiction/Non/Fiction"
},
{
"tag": "Letters to a Writer of Color"
},
{
"tag": "Lit Hub Radio"
},
{
"tag": "Taymour Soomro"
},
{
"tag": "podcasts"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Brendan O'Connell^https?://plus\.cobiss\.net/cobiss/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2023 Brendan O'Connell
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
// single items may end in an id number that is 6 digits or more
var itemIDURL = /\d{6,}$/;
// detailed view of single items ends in /#full
var fullRecordURL = /#full$/;
if (url.match(itemIDURL) || url.match(fullRecordURL)) {
// capture type of material directly from the catalog page, e.g. "undergraduate thesis"
var typeOfMaterial = doc.querySelector("button#add-biblioentry-to-shelf").getAttribute("data-mat-type");
if (typeOfMaterial) {
// use translateItemType function to translate catalog material type into a Zotero
// item type, e.g "thesis"
var detectItemType = translateItemType(typeOfMaterial);
if (detectItemType) {
return detectItemType;
}
// if a catalog item type isn't contained in the hash in translateItemType function,
// return Zotero item type 'book', which is by far the most common item type in this catalog.
else {
return 'book';
}
}
}
else if (getSearchResults(doc, true)) {
return 'multiple';
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('a.title.value');
for (let row of rows) {
let href = row.href;
let title = row.innerText;
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function constructRISURL(url) {
// catalog page URL: https://plus.cobiss.net/cobiss/si/sl/bib/107937536
// RIS URL: https://plus.cobiss.net/cobiss/si/sl/bib/risCit/107937536
// capture first part of URL, e.g. https://plus.cobiss.net/cobiss/si/sl/bib/
const firstRegex = /^(.*?)\/bib\//;
let firstUrl = url.match(firstRegex)[0];
// capture item ID, e.g. /92020483
const secondRegex = /\/([^/]+)$/;
let secondUrl = url.match(secondRegex)[0];
// outputs correct RIS URL structure
let risURL = firstUrl + "risCit" + secondUrl;
return risURL;
}
function constructEnglishURL(url) {
// default catalog page URL: https://plus.cobiss.net/cobiss/si/sl/bib/107937536
// page with English metadata: https://plus.cobiss.net/cobiss/si/en/bib/107937536
// most COBISS catalogs follow the format where the language code is two characters e.g. "sl"
// except ones with three languages, e.g.: https://plus.cobiss.net/cobiss/cg/cnr_cyrl/bib/20926212
// where there are language codes for english, latin montenegrin, and cyrillic montenegrin
const firstPartRegex = /https:\/\/plus\.cobiss\.net\/cobiss\/[a-z]{2}\//;
const endPartRegex = /\/bib\/\S*/;
const firstPart = url.match(firstPartRegex)[0];
const endPart = url.match(endPartRegex)[0];
var englishURL = firstPart + "en" + endPart;
return englishURL;
}
// in the catalog, too many items are classified in RIS as either BOOK or ELEC,
// including many reports, ebooks, etc, that thus are incorrectly assigned itemType "book" or "webpage"
// when we rely on Zotero RIS translator. This map assigns more accurate itemTypes
// based on "type of material" classification in English catalog, instead of relying on RIS.
// this function also assigns itemType for catalog items with no RIS.
function translateItemType(englishCatalogItemType) {
var catalogItemTypeHash = new Map([
['undergraduate thesis', 'thesis'],
['proceedings', 'conferencePaper'],
['novel', 'book'],
['science fiction (prose)', 'book'],
['book', 'book'],
['handbook', 'book'],
['proceedings of conference contributions', 'conferencePaper'],
['professional monograph', 'report'],
['scientific monograph', 'book'],
['textbook', 'book'],
['e-book', 'book'],
['picture book', 'book'],
['treatise, study', 'report'],
['catalogue', 'book'],
['master\u0027s thesis', 'thesis'],
['picture book', 'book'],
['short stories', 'book'],
['research report', 'report'],
['poetry', 'book'],
['dissertation', 'thesis'],
['picture book', 'book'],
['offprint', 'magazineArticle'],
['guide-book', 'book'],
['expertise', 'hearing'], // court testimony, e.g. https://plus.cobiss.net/cobiss/si/en/bib/94791683
['profess. monogr', 'report'],
['project documentation', 'report'],
['antiquarian material', 'book'], // mostly books, e.g. https://plus.cobiss.net/cobiss/si/en/bib/7543093
['other lit.forms', 'book'],
['drama', 'book'],
['strip cartoon', 'book'],
['documentary lit', 'book'],
['encyclopedia', 'book'],
['exercise book', 'book'],
['educational material', 'book'],
['review', 'report'],
['statistics', 'report'],
['legislation', 'statute'],
['essay', 'book'],
['final paper', 'thesis'],
['standard', 'book'],
['specialist thesis', 'book'],
['aphorisms, proverbs', 'book'],
['humour, satire, parody', 'book'],
['examin. paper', 'report'],
['annual', 'report'],
['yearly', 'report'],
['documentary lit', 'book'],
['folk literature', 'book'],
['patent', 'patent'],
['regulations', 'report'],
['conf. materials', 'conferencePaper'],
['radio play', 'book'],
['letters', 'book'],
['literature survey/review', 'report'],
['statute', 'statute'],
['matura paper', 'thesis'],
['seminar paper', 'thesis'],
['habilitation', 'thesis'],
['dramaturgical paper', 'thesis'],
['article, component part', 'journalArticle'],
['e-article', 'journalArticle'],
['periodical', 'book'],
['monogr. series', 'book'],
['audio CD', 'audioRecording'],
['audio cassette', 'audioRecording'],
['disc', 'audioRecording'],
['music, sound recording', 'audioRecording'],
['audio DVD', 'audioRecording'],
['printed and manuscript music', 'audioRecording'],
['graphics', 'artwork'],
['poster', 'artwork'],
['photograph', 'artwork'],
['e-video', 'videoRecording'],
['video DVD', 'videoRecording'],
['video cassette', 'videoRecording'],
['blu-ray', 'videoRecording'],
['motion picture', 'videoRecording'],
['map', 'map'],
['atlas', 'map'],
['electronic resource', 'webpage'],
['computer CD, DVD, USB', 'computerProgram'],
['article, component part ', 'journalArticle']
// there are likely other catalog item types in COBISS,
// which could be added to this hash later if they're being
// imported with the wrong Zotero item type
]);
return (catalogItemTypeHash.get(englishCatalogItemType));
}
async function doWeb(doc, url) {
if (detectWeb(doc, url) == 'multiple') {
let items = await Zotero.selectItems(getSearchResults(doc, false));
if (!items) return;
for (let url of Object.keys(items)) {
await scrape(await requestDocument(url));
}
}
else {
await scrape(doc, url);
}
}
async function scrape(doc, url = doc.location.href) {
var finalItemType = "";
// if url matches /en/bib/, then skip constructing englishURL
if (url.match("/en/bib")) {
// get catalog item type from page, then translate to Zotero item type using translateItemType()
var nativeEnglishItemType = doc.querySelector("button#add-biblioentry-to-shelf").getAttribute("data-mat-type");
finalItemType = translateItemType(nativeEnglishItemType);
}
else {
// replace specific language in bib record URL with english to detect item type
var englishURL = constructEnglishURL(url);
var englishDocument = await requestDocument(englishURL);
var englishItemType = englishDocument.querySelector("button#add-biblioentry-to-shelf").getAttribute("data-mat-type");
finalItemType = translateItemType(englishItemType);
}
if (doc.getElementById("unpaywall-link")) {
var pdfLink = doc.getElementById("unpaywall-link").href;
}
if (doc.getElementById('showUrlHref')) {
var fullTextLink = doc.getElementById('showUrlHref').href;
}
const risURL = constructRISURL(url);
const risText = await requestText(risURL);
// case for catalog items with RIS (95%+ of items)
if (risText) {
// RIS always has an extraneous OK## at the beginning, remove it
let fixedRisText = risText.replace(/^OK##/, '');
// PY tag sometimes has 'cop.' at the end - remove it or it makes the date parser return '0000' for some reason
fixedRisText = fixedRisText.replace(/^(PY\s*-\s*.+)cop\.$/m, '$1');
const translator = Zotero.loadTranslator('import');
translator.setTranslator('32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7'); // RIS
translator.setString(fixedRisText);
translator.setHandler('itemDone', (_obj, item) => {
if (pdfLink) {
item.attachments.push({
url: pdfLink,
title: 'Full Text PDF',
mimeType: 'application/pdf'
});
}
else if (fullTextLink) {
if (fullTextLink.match(/.pdf$/)) {
item.attachments.push({
url: fullTextLink,
title: 'Full Text PDF',
mimeType: 'application/pdf'
});
}
else {
item.attachments.push({
url: fullTextLink,
title: 'Full Text',
mimeType: 'text/html'
});
}
}
// if finalItemType is found from the catalog page, override itemType from RIS with it.
// if "Type of material" from catalog page isn't in catalogItemTypeHash, finalItemType will return as undefined.
// in this case, default Type from RIS will remain.
if (finalItemType) {
item.itemType = finalItemType;
}
// some items have tags in RIS KW field and are captured by
// RIS translator, e.g. https://plus.cobiss.net/cobiss/si/en/bib/78691587.
// don't add dupliicate tags from the page to these items.
if (item.tags.length === 0) {
// other items e.g. https://plus.cobiss.net/cobiss/si/sl/bib/82789891 have tags,
// but they're not in the RIS. In this case, add tags from catalog page.
var pageTags = doc.querySelectorAll('a[href^="bib/search?c=su="]');
for (let tagElem of pageTags) {
item.tags.push(tagElem.innerText);
}
}
item.url = url;
item.complete();
});
await translator.translate();
}
// case for catalog items with no RIS (remaining 5% or so of items) where we can't use the RIS import translator
else {
// construct correct fullRecord URL from basic catalog URL or #full URL
// base URL: https://plus.cobiss.net/cobiss/si/sl/bib/93266179
// JSON URL: https://plus.cobiss.net/cobiss/si/sl/bib/COBIB/93266179/full
var jsonUrl = url.replace(/\/bib\/(\d+)/, "/bib/COBIB/$1/full");
var fullRecord = await requestJSON(jsonUrl);
var noRISItem = new Zotero.Item(finalItemType);
noRISItem.title = fullRecord.titleCard.value;
var creatorsJson = fullRecord.author700701.value;
var brSlashRegex = /<br\/>/;
var creators = creatorsJson.split(brSlashRegex).map(value => value.trim());
for (let creator of creators) {
// creator role isn't defined in metadata, so assign everyone "author" role
let role = "author";
noRISItem.creators.push(ZU.cleanAuthor(creator, role, true));
}
if (fullRecord.languageCard) noRISItem.language = fullRecord.languageCard.value;
if (fullRecord.publishDate) noRISItem.date = fullRecord.publishDate.value;
if (fullRecord.edition) noRISItem.edition = fullRecord.edition.value;
if (fullRecord.isbnCard) noRISItem.ISBN = fullRecord.isbnCard.value;
if (fullRecord.publisherCard) {
var placePublisher = fullRecord.publisherCard.value;
// example string for publisherCard.value: "Ljubljana : Intelego, 2022"
const colonIndex = placePublisher.indexOf(":");
const commaIndex = placePublisher.indexOf(",");
noRISItem.place = placePublisher.slice(0, colonIndex).trim();
noRISItem.publisher = placePublisher.slice(colonIndex + 2, commaIndex).trim();
}
if (fullRecord.notesCard) {
var notesJson = fullRecord.notesCard.value;
var brRegex = /<br>/;
var notes = notesJson.split(brRegex).map(value => value.trim());
for (let note of notes) {
noRISItem.notes.push(note);
}
}
// add subjects from JSON as tags. There are three fields that contain tags,
// sgcHeadings, otherSubjects and subjectCardUncon with
// different separators. sgcHeadings and otherSubjects use <br>, subjectCardUncon uses /
if (fullRecord.sgcHeadings) {
var sgcHeadingsJson = fullRecord.sgcHeadings.value;
var sgcHeadingTags = sgcHeadingsJson.split(brRegex).map(value => value.trim());
for (let sgcHeadingTag of sgcHeadingTags) {
noRISItem.tags.push(sgcHeadingTag);
}
}
if (fullRecord.otherSubjects) {
var otherSubjectsJson = fullRecord.otherSubjects.value;
var otherSubjectsTags = otherSubjectsJson.split(brRegex).map(value => value.trim());
for (let otherSubjectsTag of otherSubjectsTags) {
noRISItem.tags.push(otherSubjectsTag);
}
}
if (fullRecord.subjectCardUncon) {
var subjectCardUnconJson = fullRecord.subjectCardUncon.value;
const slashRegex = /\//;
var subjectCardUnconTags = subjectCardUnconJson.split(slashRegex).map(value => value.trim());
for (let subjectCardUnconTag of subjectCardUnconTags) {
noRISItem.tags.push(subjectCardUnconTag);
}
}
// add attachments to RIS items
if (pdfLink) {
noRISItem.attachments.push({
url: pdfLink,
title: 'Full Text PDF',
mimeType: 'application/pdf'
});
}
else if (fullTextLink) {
if (fullTextLink.match(/.pdf$/)) {
noRISItem.attachments.push({
url: fullTextLink,
title: 'Full Text PDF',
mimeType: 'application/pdf'
});
}
else {
noRISItem.attachments.push({
url: fullTextLink,
title: 'Full Text',
mimeType: 'text/html'
});
}
}
noRISItem.complete();
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://plus.cobiss.net/cobiss/si/sl/bib/92020483",
"items": [
{
"itemType": "videoRecording",
"title": "Nauk o barvah po Goetheju. DVD 2/3, Poglobitev vsebine nauka o barvah, še posebej poglavja \"Fizične barve\" s prikazom eksperimentov",
"creators": [
{
"lastName": "Kühl",
"firstName": "Johannes",
"creatorType": "director"
}
],
"date": "2022",
"ISBN": "9789619527542",
"libraryCatalog": "COBISS",
"place": "Hvaletinci",
"studio": "NID Sapientia",
"url": "https://plus.cobiss.net/cobiss/si/sl/bib/92020483",
"attachments": [],
"tags": [
{
"tag": "Antropozofija"
},
{
"tag": "Barve"
}
],
"notes": [
{
"note": "<p>Dialogi v slov. in nem. s konsekutivnim prevodom v slov.</p>"
},
{
"note": "<p>Tisk po naročilu</p>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://plus.cobiss.net/cobiss/si/sl/bib/search?q=*&db=cobib&mat=allmaterials&cof=0_105b-p&pdfrom=01.01.2023",
"items": "multiple"
},
{
"type": "web",
"url": "https://plus.cobiss.net/cobiss/si/sl/bib/115256576",
"items": [
{
"itemType": "book",
"title": "Angel z zahodnega okna",
"creators": [
{
"lastName": "Meyrink",
"firstName": "Gustav",
"creatorType": "author"
}
],
"date": "2001",
"ISBN": "9789616400107",
"libraryCatalog": "COBISS",
"numPages": "2 zv. (216; 203 )",
"place": "Ljubljana",
"publisher": "Založniški atelje Blodnjak",
"series": "Zbirka Blodnjak",
"url": "https://plus.cobiss.net/cobiss/si/sl/bib/115256576",
"attachments": [],
"tags": [],
"notes": [
{
"note": "<p>Prevod dela: Der Engel vom westlichen Fenster</p>"
},
{
"note": "<p>Gustav Meyrink / Herman Hesse: str. 198-200</p>"
},
{
"note": "<p>Magični stekleni vrtovi judovske kulture / Jorge Luis Borges: str. 201-203</p>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://plus.cobiss.net/cobiss/si/sl/bib/139084803",
"detectedItemType": "book",
"items": [
{
"itemType": "report",
"title": "Poročilo analiz vzorcev odpadnih vod na vsebnost prepovedanih in dovoljenih drog na področju centralne čistilne naprave Kranj (2022)",
"creators": [
{
"lastName": "Heath",
"firstName": "Ester",
"creatorType": "author"
},
{
"lastName": "Verovšek",
"firstName": "Taja",
"creatorType": "author"
}
],
"date": "2023",
"institution": "Institut Jožef Stefan",
"libraryCatalog": "COBISS",
"pages": "1 USB-ključ",
"place": "Ljubljana",
"url": "https://plus.cobiss.net/cobiss/si/sl/bib/139084803",
"attachments": [],
"tags": [
{
"tag": "dovoljene droge"
},
{
"tag": "nedovoljene droge"
},
{
"tag": "odpadne vode"
},
{
"tag": "čistilna naprava"
}
],
"notes": [
{
"note": "<p>Nasl. z nasl. zaslona</p>"
},
{
"note": "<p>Opis vira z dne 11. 1. 2023</p>"
},
{
"note": "<p>Bibliografija: str. 13</p>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://plus.cobiss.net/cobiss/si/sl/bib/84534787",
"detectedItemType": "book",
"items": [
{
"itemType": "journalArticle",
"title": "Flood legislation and land policy framework of EU and non-EU countries in Southern Europe",
"creators": [
{
"lastName": "Kapović-Solomun",
"firstName": "Marijana",
"creatorType": "author"
},
{
"lastName": "Ferreira",
"firstName": "Carla S.S.",
"creatorType": "author"
},
{
"lastName": "Zupanc",
"firstName": "Vesna",
"creatorType": "author"
},
{
"lastName": "Ristić",
"firstName": "Ratko",
"creatorType": "author"
},
{
"lastName": "Drobnjak",
"firstName": "Aleksandar",
"creatorType": "author"
},
{
"lastName": "Kalantari",
"firstName": "Zahra",
"creatorType": "author"
}
],
"date": "2022",
"ISSN": "2049-1948",
"issue": "1",
"journalAbbreviation": "WIREs",
"libraryCatalog": "COBISS",
"pages": "1-14",
"publicationTitle": "WIREs",
"url": "https://plus.cobiss.net/cobiss/si/sl/bib/84534787",
"volume": "9",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "EU legislation"
},
{
"tag": "Južna Evropa"
},
{
"tag": "Southern Europe"
},
{
"tag": "floods"
},
{
"tag": "land governance"
},
{
"tag": "policy framework"
},
{
"tag": "politika"
},
{
"tag": "poplave"
},
{
"tag": "upravljanje zemljišč"
},
{
"tag": "zakonodaja EU"
}
],
"notes": [
{
"note": "<p>Nasl. z nasl. zaslona</p>"
},
{
"note": "<p>Opis vira z dne 11. 11. 2021</p>"
},
{
"note": "<p>Bibliografija: str. 12-14</p>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://plus.cobiss.net/cobiss/si/sl/bib/5815649",
"detectedItemType": "book",
"items": [
{
"itemType": "thesis",
"title": "Rangiranje cest po metodologiji EuroRAP ; Elektronski vir: diplomska naloga = Rating roads using EuroRAP procedures",
"creators": [
{
"lastName": "Pešec",
"firstName": "Katja",
"creatorType": "author"
}
],
"date": "2012",
"libraryCatalog": "COBISS",
"place": "Ljubljana",
"shortTitle": "Rangiranje cest po metodologiji EuroRAP ; Elektronski vir",
"university": "[K. Pešec]",
"url": "https://plus.cobiss.net/cobiss/si/sl/bib/5815649",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "EuroRAP"
},
{
"tag": "EuroRAP"
},
{
"tag": "VSŠ"
},
{
"tag": "cesta in obcestje"
},
{
"tag": "diplomska dela"
},
{
"tag": "economic efficiency"
},
{
"tag": "ekonomska učinkovitost"
},
{
"tag": "gradbeništvo"
},
{
"tag": "graduation thesis"
},
{
"tag": "pilot project"
},
{
"tag": "pilotski projekt"
},
{
"tag": "predlagani (proti)ukrepi"
},
{
"tag": "rangiranje cest"
},
{
"tag": "road and roadside"
},
{
"tag": "star rating"
},
{
"tag": "suggested countermeasure"
}
],
"notes": [
{
"note": "<p>Diplomsko delo visokošolskega strokovnega študija gradbeništva, Prometna smer</p>"
},
{
"note": "<p>Nasl. z nasl. zaslona</p>"
},
{
"note": "<p>Publikacija v pdf formatu obsega 103 str.</p>"
},
{
"note": "<p>Bibliografija: str. 85-87</p>"
},
{
"note": "<p>Izvleček ; Abstract</p>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://plus.cobiss.net/cobiss/si/sl/bib/82789891",
"detectedItemType": "book",
"items": [
{
"itemType": "conferencePaper",
"title": "Posvet Avtomatizacija strege in montaže 2021/2021 - ASM '21/22, Ljubljana, 11. 05. 2022: zbornik povzetkov s posveta",
"creators": [
{
"lastName": "Posvet Avtomatizacija strege in montaže",
"creatorType": "author",
"fieldMode": 1
},
{
"lastName": "Herakovič",
"firstName": "Niko",
"creatorType": "editor"
},
{
"lastName": "Debevec",
"firstName": "Mihael",
"creatorType": "editor"
},
{
"lastName": "Pipan",
"firstName": "Miha",
"creatorType": "editor"
},
{
"lastName": "Adrović",
"firstName": "Edo",
"creatorType": "editor"
}
],
"date": "2022",
"ISBN": "9789616980821",
"libraryCatalog": "COBISS",
"pages": "141",
"place": "Ljubljana",
"publisher": "Fakulteta za strojništvo",
"shortTitle": "Posvet Avtomatizacija strege in montaže 2021/2021 - ASM '21/22, Ljubljana, 11. 05. 2022",
"url": "https://plus.cobiss.net/cobiss/si/sl/bib/82789891",
"attachments": [],
"tags": [
{
"tag": "Avtomatizacija"
},
{
"tag": "Posvetovanja"
},
{
"tag": "Strojništvo"
}
],
"notes": [
{
"note": "<p>180 izv.</p>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://plus.cobiss.net/cobiss/si/en/bib/78691587",
"items": [
{
"itemType": "thesis",
"title": "Modeliranje obratovanja transformatorskih postaj z metodami strojnega učenja: diplomsko delo: visokošolski strokovni študijski program prve stopnje Računalništvo in informatika",
"creators": [
{
"lastName": "Čuš",
"firstName": "Tibor",
"creatorType": "author"
}
],
"date": "2022",
"libraryCatalog": "COBISS",
"numPages": "55",
"place": "Ljubljana",
"shortTitle": "Modeliranje obratovanja transformatorskih postaj z metodami strojnega učenja",
"university": "[T. Čuš]",
"url": "https://plus.cobiss.net/cobiss/si/en/bib/78691587",
"attachments": [
{
"title": "Full Text",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "computer science"
},
{
"tag": "diploma"
},
{
"tag": "diplomske naloge"
},
{
"tag": "electrical power system"
},
{
"tag": "elektroenergetski sistem"
},
{
"tag": "forecasting models"
},
{
"tag": "indikatorji preobremenitev"
},
{
"tag": "machine learning"
},
{
"tag": "napovedni modeli"
},
{
"tag": "overload indicators"
},
{
"tag": "transformer station"
},
{
"tag": "visokošolski strokovni študij"
}
],
"notes": [
{
"note": "<p>Bibliografija: str. 53-55</p>"
},
{
"note": "<p>Povzetek ; Abstract: Modeling transformer station operation with machine learning methods</p>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://plus.cobiss.net/cobiss/si/en/bib/94705155#full",
"items": [
{
"itemType": "book",
"title": "Ljubezen v pismih: dopisovanje med Felicito Koglot in Francem Pericem: Aleksandrija-Bilje: 1921-1931",
"creators": [
{
"lastName": "Koglot",
"firstName": "Felicita",
"creatorType": "author"
},
{
"lastName": "Peric",
"firstName": "Franc",
"creatorType": "author"
},
{
"lastName": "Vončina",
"firstName": "Lara",
"creatorType": "editor"
},
{
"lastName": "Orel",
"firstName": "Maja",
"creatorType": "editor"
},
{
"lastName": "Koren",
"firstName": "Manca",
"creatorType": "editor"
},
{
"lastName": "Mihurko Poniž",
"firstName": "Katja",
"creatorType": "editor"
}
],
"date": "2022",
"ISBN": "9789617025224",
"libraryCatalog": "COBISS",
"numPages": "235",
"place": "V Novi Gorici",
"publisher": "Založba Univerze",
"shortTitle": "Ljubezen v pismih",
"url": "https://plus.cobiss.net/cobiss/si/en/bib/94705155#full",
"attachments": [],
"tags": [
{
"tag": "Primorska"
},
{
"tag": "Slovenke"
},
{
"tag": "emigracija"
},
{
"tag": "pisma"
},
{
"tag": "ženske"
}
],
"notes": [
{
"note": "<p>Potiskane notr. str. ov.</p>"
},
{
"note": "<p>250 izv.</p>"
},
{
"note": "<p>Kdo sta bila Felicita Koglot in Franc Peric in o knjižni izdaji njunega dopisovanja / Manca Koren, Maja Orel, Lara Vončina: str. 5-6</p>"
},
{
"note": "<p>Kratek oris zgodovinskih razmer v Egiptu in na Primorskem v obdobju med obema vojnama / Manca Koren: str. 185-195</p>"
},
{
"note": "<p>Franc Peric in Felicita Koglot: večkratne migracije v družinski korespondenci / Mirjam Milharčič Hladnik: str. 197-209</p>"
},
{
"note": "<p>Družinsko življenje in doživljanje aleksandrinstva v pismih / Manca Koren: str. 211-228</p>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://plus.cobiss.net/cobiss/si/en/bib/78691587",
"items": [
{
"itemType": "thesis",
"title": "Modeliranje obratovanja transformatorskih postaj z metodami strojnega učenja: diplomsko delo: visokošolski strokovni študijski program prve stopnje Računalništvo in informatika",
"creators": [
{
"lastName": "Čuš",
"firstName": "Tibor",
"creatorType": "author"
}
],
"date": "2022",
"libraryCatalog": "COBISS",
"numPages": "55",
"place": "Ljubljana",
"shortTitle": "Modeliranje obratovanja transformatorskih postaj z metodami strojnega učenja",
"university": "[T. Čuš]",
"url": "https://plus.cobiss.net/cobiss/si/en/bib/78691587",
"attachments": [
{
"title": "Full Text",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "computer science"
},
{
"tag": "diploma"
},
{
"tag": "diplomske naloge"
},
{
"tag": "electrical power system"
},
{
"tag": "elektroenergetski sistem"
},
{
"tag": "forecasting models"
},
{
"tag": "indikatorji preobremenitev"
},
{
"tag": "machine learning"
},
{
"tag": "napovedni modeli"
},
{
"tag": "overload indicators"
},
{
"tag": "transformer station"
},
{
"tag": "visokošolski strokovni študij"
}
],
"notes": [
{
"note": "<p>Bibliografija: str. 53-55</p>"
},
{
"note": "<p>Povzetek ; Abstract: Modeling transformer station operation with machine learning methods</p>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://plus.cobiss.net/cobiss/si/en/bib/search?q=*&db=cobib&mat=allmaterials&cof=0_105b-mb16",
"items": "multiple"
},
{
"type": "web",
"url": "https://plus.cobiss.net/cobiss/si/en/bib/101208835",
"items": [
{
"itemType": "book",
"title": "Fizika. Zbirka maturitetnih nalog z rešitvami 2012-2017 / [avtorji Vitomir Babič ... [et al.] ; urednika Aleš Drolc, Joži Trkov]",
"creators": [
{
"firstName": "Vito",
"lastName": "Babič",
"creatorType": "author"
},
{
"firstName": "Ruben",
"lastName": "Belina",
"creatorType": "author"
},
{
"firstName": "Peter",
"lastName": "Gabrovec",
"creatorType": "author"
},
{
"firstName": "Marko",
"lastName": "Jagodič",
"creatorType": "author"
},
{
"firstName": "Aleš",
"lastName": "Mohorič",
"creatorType": "author"
},
{
"firstName": "Mirijam",
"lastName": "Pirc",
"creatorType": "author"
},
{
"firstName": "Gorazd",
"lastName": "Planinšič",
"creatorType": "author"
},
{
"firstName": "Mitja",
"lastName": "Slavinec",
"creatorType": "author"
},
{
"firstName": "Ivica",
"lastName": "Tomić",
"creatorType": "author"
}
],
"date": "2022",
"ISBN": "9789616899420",
"edition": "3. ponatis",
"language": "Slovenian",
"libraryCatalog": "COBISS",
"place": "Ljubljana",
"publisher": "Državni izpitni center",
"attachments": [],
"tags": [
{
"tag": "Fizika -- Matura -- 2012-2017 -- Vaje za srednje šole"
},
{
"tag": "Fizika -- Vaje za maturo"
},
{
"tag": "izpitne naloge za srednje šole"
},
{
"tag": "naloge"
},
{
"tag": "rešitve"
},
{
"tag": "testi znanja"
},
{
"tag": "učbeniki za srednje šole"
}
],
"notes": [
"Nasl. na hrbtu: Fizika 2012-2017",
"Avtorji navedeni v kolofonu",
"600 izv."
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://plus.cobiss.net/cobiss/si/sl/bib/93266179",
"items": [
{
"itemType": "book",
"title": "Matematika na splošni maturi : 2022 : vprašanja in odgovori za ustni izpit iz matematike na splošni maturi za osnovno raven / Bojana Dvoržak",
"creators": [
{
"firstName": "Bojana",
"lastName": "Dvoržak",
"creatorType": "author"
}
],
"date": "2022",
"ISBN": "9789616558624",
"edition": "1. izd.",
"language": "slovenski",
"libraryCatalog": "COBISS",
"place": "Ljubljana",
"publisher": "Intelego",
"shortTitle": "Matematika na splošni maturi",
"attachments": [],
"tags": [
{
"tag": "Matematika"
},
{
"tag": "Matematika -- Katalogi znanja za srednje šole"
},
{
"tag": "Matematika -- Matura -- Vaje za srednje šole"
},
{
"tag": "Matematika -- Vaje za maturo"
},
{
"tag": "Matura"
},
{
"tag": "Naloge, vaje itd."
},
{
"tag": "izpitne naloge za srednje šole"
},
{
"tag": "odgovori"
},
{
"tag": "osnovna raven"
},
{
"tag": "rešitve"
},
{
"tag": "testi znanja"
},
{
"tag": "učbeniki za srednje šole"
},
{
"tag": "vprašanja"
},
{
"tag": "zaključni izpiti"
}
],
"notes": [
"Dodatek k nasl. v kolofonu in CIP-u: Vprašanja in odgovori za ustni izpit iz matematike na splošni maturi 2022 za osnovno raven",
"1.000 izv."
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://plus.cobiss.net/cobiss/si/en/bib/143385859",
"items": [
{
"itemType": "book",
"title": "Fizika. Zbirka maturitetnih nalog z rešitvami 2012-2017 / [avtorji Vitomir Babič ... [et al.] ; urednika Aleš Drolc, Joži Trkov]",
"creators": [
{
"firstName": "Vito",
"lastName": "Babič",
"creatorType": "author"
},
{
"firstName": "Ruben",
"lastName": "Belina",
"creatorType": "author"
},
{
"firstName": "Peter",
"lastName": "Gabrovec",
"creatorType": "author"
},
{
"firstName": "Marko",
"lastName": "Jagodič",
"creatorType": "author"
},
{
"firstName": "Aleš",
"lastName": "Mohorič",
"creatorType": "author"
},
{
"firstName": "Mirijam",
"lastName": "Pirc",
"creatorType": "author"
},
{
"firstName": "Gorazd",
"lastName": "Planinšič",
"creatorType": "author"
},
{
"firstName": "Mitja",
"lastName": "Slavinec",
"creatorType": "author"
},
{
"firstName": "Ivica",
"lastName": "Tomić",
"creatorType": "author"
}
],
"date": "2023",
"ISBN": "9789616899420",
"edition": "4. ponatis",
"language": "Slovenian",
"libraryCatalog": "COBISS",
"place": "Ljubljana",
"publisher": "Državni izpitni center",
"attachments": [],
"tags": [
{
"tag": "Fizika -- Matura -- 2012-2017 -- Priročniki"
},
{
"tag": "Fizika -- Vaje za maturo"
},
{
"tag": "izpitne naloge za srednje šole"
},
{
"tag": "naloge"
},
{
"tag": "rešitve"
},
{
"tag": "učbeniki za srednje šole"
},
{
"tag": "vaje za srednje šole"
}
],
"notes": [
"Hrbtni nasl.: Fizika 2012-2017",
"Avtorji navedeni v kolofonu",
"300 izv."
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://plus.cobiss.net/cobiss/si/en/bib/70461955",
"items": [
{
"itemType": "book",
"title": "Napredna znanja za kakovostno mentorstvo v zdravstveni negi: znanstvena monografija",
"creators": [
{
"lastName": "Filej",
"firstName": "Bojana",
"creatorType": "editor"
},
{
"lastName": "Kaučič",
"firstName": "Boris Miha",
"creatorType": "editor"
}
],
"date": "2023",
"ISBN": "9789616889377",
"edition": "1. izd.",
"libraryCatalog": "COBISS",
"place": "Celje",
"publisher": "Fakulteta za zdravstvene vede",
"shortTitle": "Napredna znanja za kakovostno mentorstvo v zdravstveni negi",
"url": "https://plus.cobiss.net/cobiss/si/en/bib/70461955",
"attachments": [
{
"title": "Full Text",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Izobrževanje"
},
{
"tag": "Mentorstvo"
},
{
"tag": "Mentorstvo"
},
{
"tag": "Praktična znanja"
},
{
"tag": "Vzgoja in izobraževanje"
},
{
"tag": "Zborniki"
},
{
"tag": "Zdravstvena nega"
},
{
"tag": "Zdravstvena nega"
}
],
"notes": [
{
"note": "<p>Nasl. z nasl. zaslona</p>"
},
{
"note": "<p>Dokument v pdf formatu obsega 94 str.</p>"
},
{
"note": "<p>Opis vira z dne 1. 2. 2023</p>"
},
{
"note": "<p>Bibliografija pri posameznih poglavjih</p>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://plus.cobiss.net/cobiss/si/en/bib/105123075",
"items": [
{
"itemType": "report",
"title": "Storitveni sektor in siva ekonomija v času epidemije COVID-19: raziskovalno delo: področje: ekonomija in turizem",
"creators": [
{
"lastName": "Hochkraut",
"firstName": "Nataša",
"creatorType": "author"
},
{
"lastName": "Verbovšek",
"firstName": "Lea",
"creatorType": "author"
}
],
"date": "2022",
"institution": "Osnovna šola Primoža Trubarja",
"libraryCatalog": "COBISS",
"place": "Laško",
"shortTitle": "Storitveni sektor in siva ekonomija v času epidemije COVID-19",
"url": "https://plus.cobiss.net/cobiss/si/en/bib/105123075",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "COVID 19"
},
{
"tag": "SARS-Cov-2"
},
{
"tag": "izvajalci storitev"
},
{
"tag": "korelacija"
},
{
"tag": "koronavirus"
},
{
"tag": "potrošniki"
},
{
"tag": "raziskovalne naloge"
},
{
"tag": "siva ekonomija"
},
{
"tag": "statistika"
},
{
"tag": "storitveni sektor"
}
],
"notes": [
{
"note": "<p>Raziskovalna naloga v okviru projekta Mladi za Celje 2022</p>"
},
{
"note": "<p>Povzetek v slov in angl.</p>"
},
{
"note": "<p>Bibliografija: f. 35-36</p>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://plus.cobiss.net/cobiss/si/en/bib/84576259",
"items": [
{
"itemType": "audioRecording",
"title": "Reforma: tribute to Laibach",
"creators": [
{
"lastName": "Noctiferia",
"creatorType": "composer",
"fieldMode": 1
}
],
"date": "2021",
"label": "Nika",
"libraryCatalog": "COBISS",
"place": "Ljubljana",
"shortTitle": "Reforma",
"url": "https://plus.cobiss.net/cobiss/si/en/bib/84576259",
"attachments": [
{
"title": "Full Text",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "avantgardna glasba"
},
{
"tag": "avantgardni rock"
},
{
"tag": "black metal"
},
{
"tag": "death metal"
},
{
"tag": "extreme metal"
},
{
"tag": "heavy metal"
},
{
"tag": "industrial metal"
},
{
"tag": "metal"
},
{
"tag": "priredbe"
}
],
"notes": [
{
"note": "<p>Leto posnetja 2021</p>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://plus.cobiss.net/cobiss/al/sq/bib/334906368",
"items": [
{
"itemType": "book",
"title": "Trëndafili i mesnatës",
"creators": [
{
"lastName": "Riley",
"firstName": "Lucinda",
"creatorType": "author"
}
],
"date": "[2022]",
"ISBN": "9789928366108",
"libraryCatalog": "COBISS",
"numPages": "603 f.",
"place": "[Tiranë]",
"publisher": "Dituria",
"series": "Letërsi e huaj bashkëkohore",
"url": "https://plus.cobiss.net/cobiss/al/sq/bib/334906368",
"attachments": [],
"tags": [
{
"tag": "letërsia irlandeze"
},
{
"tag": "romane"
}
],
"notes": [
{
"note": "<p>Tit. i origj.: The midnight rose</p>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://plus.cobiss.net/cobiss/bh/sr/bib/47388678",
"detectedItemType": "book",
"items": [
{
"itemType": "thesis",
"title": "The influence of negative transfer on the use of collocations in high school student's writing = Utjecaj negativnog transfera na korištenje kolokacija u pismenim zadaćama učenika srednjih škola",
"creators": [
{
"lastName": "Đapo",
"firstName": "Amra",
"creatorType": "author"
}
],
"date": "2022",
"libraryCatalog": "COBISS",
"numPages": "76 listova",
"place": "Tuzla",
"university": "[A. Đapo]",
"url": "https://plus.cobiss.net/cobiss/bh/sr/bib/47388678",
"attachments": [],
"tags": [
{
"tag": "acquisition"
},
{
"tag": "collocations"
},
{
"tag": "engleski kao drugi jezik"
},
{
"tag": "errors"
},
{
"tag": "greške"
},
{
"tag": "kolokacije"
},
{
"tag": "magistarski rad"
},
{
"tag": "transfer"
},
{
"tag": "transfer"
},
{
"tag": "usvajanje"
}
],
"notes": [
{
"note": "<p>Bibliografija: listovi 73-76</p>"
},
{
"note": "<p>Sažetak ; Summary</p>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://plus.cobiss.net/cobiss/rs/sr/bib/57790729",
"detectedItemType": "book",
"items": [
{
"itemType": "statute",
"nameOfAct": "Закон о Централном регистру обавезног социјалног осигурања, са подзаконским актима",
"creators": [
{
"lastName": "Србија",
"creatorType": "author",
"fieldMode": 1
},
{
"lastName": "Мартић",
"firstName": "Вера",
"creatorType": "editor"
}
],
"dateEnacted": "2022",
"pages": "II, 74 стр.",
"url": "https://plus.cobiss.net/cobiss/rs/sr/bib/57790729",
"attachments": [],
"tags": [
{
"tag": "Београд"
},
{
"tag": "Законски прописи"
},
{
"tag": "Централни регистар обавезног социјалног осигурања"
}
],
"notes": [
{
"note": "<p>Тираж 300</p>"
},
{
"note": "<p>Напомене и библиографске референце уз текст.</p>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://plus.cobiss.net/cobiss/bg/en/bib/51193608",
"items": [
{
"itemType": "thesis",
"title": "Хирургични аспекти на аноректалните абсцеси при деца и възрастни: дисертационен труд за присъждане на образователна и научна степен \"доктор\", област на висше образование 7. Здравеопазване и спорт, професионално направление 7.1 Медицина, научна специалност: 03.01.37 Обща хирургия",
"creators": [
{
"lastName": "Хаджиева",
"firstName": "Елена Божидарова",
"creatorType": "author"
},
{
"lastName": "Hadžieva",
"firstName": "Elena Božidarova",
"creatorType": "author"
}
],
"date": "2022",
"libraryCatalog": "COBISS",
"numPages": "198 л.",
"place": "Пловдив",
"shortTitle": "Хирургични аспекти на аноректалните абсцеси при деца и възрастни",
"university": "[Е. Хаджиева]",
"url": "https://plus.cobiss.net/cobiss/bg/en/bib/51193608",
"attachments": [],
"tags": [],
"notes": [
{
"note": "<p>Библиогр.: л. 175-190</p>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://plus.cobiss.net/cobiss/ks/sq/bib/120263427",
"detectedItemType": "book",
"items": [
{
"itemType": "conferencePaper",
"title": "Kumtesat nga konferenca shkencore ndërkombëtare: (17 dhe 18 nëntor 2021): Ndikimi i COVID-19 në humbjet mësimore - pasojat në rritjen e pabarazive në mësim dhe sfidat e përmbushjes/kompensimit",
"creators": [
{
"lastName": "Instituti Pedagogjik i Kosovës",
"firstName": "Konferenca shkencore ndërkombëtare",
"creatorType": "author"
},
{
"lastName": "Koliqi",
"firstName": "Hajrullah",
"creatorType": "editor"
}
],
"date": "2021",
"ISBN": "9789951591560",
"libraryCatalog": "COBISS",
"pages": "190 f.",
"place": "Prishtinë",
"publisher": "Instituti Pedagogjik i Kosovës",
"shortTitle": "Kumtesat nga konferenca shkencore ndërkombëtare",
"url": "https://plus.cobiss.net/cobiss/ks/sq/bib/120263427",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "covid-19"
},
{
"tag": "mësimi online"
},
{
"tag": "përmbledhjet e punimeve"
},
{
"tag": "sistemet arsimore"
}
],
"notes": [
{
"note": "<p>Përmbledhjet në gjuhën shqipe dhe angleze</p>"
},
{
"note": "<p>Bibliografia në fund të çdo punimi</p>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://plus.cobiss.net/cobiss/mk/en/bib/search?q=*&db=cobib&mat=allmaterials&tyf=1_gla_cd",
"items": "multiple"
},
{
"type": "web",
"url": "https://plus.cobiss.net/cobiss/mk/mk/bib/57036037",
"detectedItemType": "book",
"items": [
{
"itemType": "audioRecording",
"title": "Крени ме",
"creators": [
{
"lastName": "Кајшаров",
"firstName": "Константин",
"creatorType": "composer"
}
],
"date": "2022",
"label": "К. Кајшаров",
"libraryCatalog": "COBISS",
"place": "Скопје",
"url": "https://plus.cobiss.net/cobiss/mk/mk/bib/57036037",
"attachments": [],
"tags": [
{
"tag": "CD-a"
},
{
"tag": "Вокално-инструментални композиции"
},
{
"tag": "Духовна музика"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://plus.cobiss.net/cobiss/cg/cnr_cyrl/bib/20926212",
"detectedItemType": "book",
"items": [
{
"itemType": "thesis",
"title": "Menadžment ljudskih resursa: diplomski rad",
"creators": [
{
"lastName": "Obradović",
"firstName": "Nikoleta",
"creatorType": "author"
}
],
"date": "2022",
"libraryCatalog": "COBISS",
"place": "Podgorica",
"shortTitle": "Menadžment ljudskih resursa",
"university": "[N. Obradović]",
"url": "https://plus.cobiss.net/cobiss/cg/cnr_cyrl/bib/20926212",
"attachments": [],
"tags": [
{
"tag": "Diplomski radovi"
},
{
"tag": "Menadžment ljudskih resursa"
}
],
"notes": [
{
"note": "<p>Nasl. sa nasl. ekrana</p>"
},
{
"note": "<p>Bibliografija</p>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://plus.cobiss.net/cobiss/sr/sr_latn/bib/search?q=*&db=cobib&mat=allmaterials",
"items": "multiple"
},
{
"type": "web",
"url": "https://plus.cobiss.net/cobiss/sr/sr_latn/bib/15826441",
"items": [
{
"itemType": "book",
"title": "Zanosni",
"creators": [
{
"lastName": "Prince",
"creatorType": "author",
"fieldMode": 1
},
{
"lastName": "Принс",
"creatorType": "author",
"fieldMode": 1
},
{
"lastName": "Božić",
"firstName": "Aleksandar",
"creatorType": "editor"
},
{
"lastName": "Божић",
"firstName": "Александар",
"creatorType": "editor"
}
],
"date": "2022",
"ISBN": "9788664630160",
"libraryCatalog": "COBISS",
"numPages": "281",
"place": "Beograd",
"publisher": "IPC Media",
"series": "Edicija (B)io",
"url": "https://plus.cobiss.net/cobiss/sr/sr_latn/bib/15826441",
"attachments": [],
"tags": [
{
"tag": "Аутобиографија"
},
{
"tag": "Принс, 1958-2016"
}
],
"notes": [
{
"note": "<p>Prevod dela: The beautiful ones / Prince</p>"
},
{
"note": "<p>Autorove slike</p>"
},
{
"note": "<p>Tiraž 1.000</p>"
},
{
"note": "<p>Str. 4-49: Predgovor / Den Pajpenbring</p>"
},
{
"note": "<p>O autorima: str. [282].</p>"
}
],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Bo An, Dan Stillman^https?://([^/]+\.)?twitter\.com//*
***** BEGIN LICENSE BLOCK *****
Twitter Translator
Copyright © 2020-2021 Bo An, Dan Stillman
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
let titleRe = /^(?:\(\d+\) )?(.+) .* (?:Twitter|X): .([\S\s]+). \/ (?:Twitter|X)/;
function detectWeb(doc, url) {
if (url.includes('/status/')) {
return "forumPost";
}
return false;
}
function unshortenURLs(doc, str) {
var matches = str.match(/https?:\/\/t\.co\/[a-z0-9]+/gi);
if (matches) {
for (let match of matches) {
let url = unshortenURL(doc, match);
// Replace t.co URLs (with optional query string, such as "?amp=1")
// in text with real URLs
str = str.replace(new RegExp(ZU.quotemeta(match) + '(\\?\\w+)?'), url);
}
}
return str;
}
function unshortenURL(doc, tCoURL) {
var a = doc.querySelector('a[href*="' + tCoURL + '"]');
return (a ? a.textContent.replace(/…$/, '') : false) || tCoURL;
}
function extractURLs(doc, str) {
var urls = [];
var matches = str.match(/https?:\/\/t\.co\/[a-z0-9]+/gi);
if (matches) {
for (let match of matches) {
urls.push(unshortenURL(doc, match));
}
}
return urls;
}
// Find the link to the permalink (e.g., "8h")
function findPermalinkLink(doc, canonicalURL) {
let path = canonicalURL.match(/https?:\/\/[^/]+(.+)/)[1];
return doc.querySelector(`a[href="${path}" i]`);
}
function doWeb(doc, url) {
scrape(doc, url);
}
function scrape(doc, url) {
var item = new Zotero.Item("forumPost");
var canonicalURL = doc.querySelector('link[rel="canonical"]').href;
// For unclear reasons, in some cases the URL doesn't have capitalization
// but rel="canonical" does, and in other cases it's the other way around,
// so if rel="canonical" doesn't have any caps, use the URL
if (!/[A-Z]/.test(canonicalURL)) {
canonicalURL = url.match(/^([^?#]+)/)[1];
}
var originalTitle = doc.title;
var unshortenedTitle = ZU.unescapeHTML(unshortenURLs(doc, originalTitle));
// Extract tweet from "[optional count] [Display Name] on Twitter: “[tweet]”"
var matches = unshortenedTitle.match(titleRe);
var [, author, tweet] = matches;
// Title is tweet with newlines removed
item.title = tweet.replace(/\s+/g, ' ');
// Don't set short title when tweet contains colon
item.shortTitle = false;
// Identify the tweet block by looking for the client link (e.g, "Tweetbot")
var articleEl;
var clientLink = doc.querySelector('a[href*="source-labels"]');
if (clientLink) {
articleEl = clientLink.closest('article');
}
// If client link not found, use permalink
//
// This is the case on share URLs such as
// https://twitter.com/aerospacecorp/status/1391160460150382598?s=27,
// but that doesn't serve content to the test runner for some reason, so
// we don't have a test for it.
else {
let a = findPermalinkLink(doc, canonicalURL);
articleEl = a.closest('article');
}
var tweetSelector = 'article[role="article"]';
// If the title is modified (e.g., because we stripped newlines), add the
// full tweet in Abstract.
//
// Same if it's a quote tweet, since the quoted tweet isn't included in the
// title. It would be better to just get the tweet URL, but that doesn't
// seem to be available on the page.
//
// DEBUG: 'role*=blockquote' doesn't seem to be used anymore, so there
// doesn't seem to be a good way to get the contents of the quoted tweet
let blockquote = articleEl.querySelector(`${tweetSelector} div[role*=blockquote]`);
if (tweet != item.title || blockquote) {
let note = ZU.text2html('“' + tweet + '”');
if (blockquote) {
note += '<blockquote>'
+ ZU.text2html(blockquote.innerText.replace(/[\s]+/g, ' ').trim())
+ "</blockquote>";
}
item.notes.push({ note });
}
item.language = attr(articleEl, 'div[lang]', 'lang');
item.creators.push({
lastName: `${author} [@${canonicalURL.split('/')[3]}]`,
fieldMode: 1,
creatorType: 'author'
});
// Date and time
var spans = articleEl.querySelectorAll(`${tweetSelector} a span`);
for (let span of spans) {
// Is this used in all locales?
let dotSep = ' · ';
let str = span.textContent;
if (!str.includes(dotSep)) {
// Z.debug("Date separator not found")
// Share URLs don't show the date, so use the <time> in the
// permalink link
//
// E.g., https://twitter.com/aerospacecorp/status/1391160460150382598?s=27
let a = findPermalinkLink(doc, canonicalURL);
if (a) {
let time = a.querySelector('time');
if (time) {
let dt = time.getAttribute('datetime');
item.date = dt.replace(/:\d\d\.000/, '');
}
}
continue;
}
let [time, date] = str.split(dotSep);
item.date = ZU.strToISO(date);
time = time.trim();
let matches = time.match(/^([0-9]{1,2})[:h]([0-9]{2})(?: (.+))?$/);
if (matches) {
let hour = matches[1];
let minute = matches[2];
let ampm = matches[3];
// If "PM", add 12 hours
if (ampm && ampm.toLowerCase() == 'pm' && hour != "12") {
hour = parseInt(hour) + 12;
}
// Convert to UTC and add 'T' and 'Z'
let isoDate = item.date + 'T' + ("" + hour).padStart(2, '0') + ':' + minute;
isoDate = new Date(isoDate).toISOString();
item.date = isoDate.replace(/:00\.000/, '');
}
}
item.forumTitle = "Twitter";
item.postType = "Tweet";
item.url = canonicalURL;
/*
// Add retweets and likes to Extra
let retweets;
let likes;
let str = text(articleEl, 'a[href*="retweets"]');
if (str) {
// Extract from "123 Retweets", "1.2K Retweets"
str = str.match(/^[^ ]+/);
if (str) {
retweets = str[0];
}
}
str = text(articleEl, 'a[href*="likes"]');
if (str) {
str = str.match(/^[^ ]+/);
if (str) {
likes = str[0];
}
}
if (!item.extra) {
item.extra = '';
}
if (retweets) {
item.extra += 'Retweets: ' + retweets;
}
if (likes) {
item.extra += '\n' + 'Likes: ' + likes;
}
*/
item.attachments.push({
document: doc,
title: "Snapshot"
});
// Add links to any URLs
var urls = extractURLs(doc, originalTitle);
for (let i = 0; i < urls.length; i++) {
let url = urls[i];
let title = "Link";
// Number links if more than one
if (urls.length > 1) {
title += " " + (i + 1);
}
// Include domain in parentheses
let domain = url.match(/https?:\/\/(?:www\.)?([^/]+)+/)[1];
if (domain != 't.co') {
title += ` (${domain})`;
}
item.attachments.push({
url,
title,
mimeType: "text/html",
snapshot: false
});
}
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://twitter.com/zotero/status/105608278976905216",
"defer": true,
"items": [
{
"itemType": "forumPost",
"title": "Zotero 3.0 beta is now available with duplicate detection and tons more. Runs outside Firefox with Chrome or Safari! http://zotero.org/blog/announcing-zotero-3-0-beta-release/",
"creators": [
{
"lastName": "Zotero [@zotero]",
"fieldMode": 1,
"creatorType": "author"
}
],
"date": "2011-08-22T11:52Z",
"forumTitle": "Twitter",
"language": "en",
"postType": "Tweet",
"url": "https://twitter.com/zotero/status/105608278976905216",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
},
{
"title": "Link (zotero.org)",
"mimeType": "text/html",
"snapshot": false
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://twitter.com/zotero/status/1037407737154596864",
"defer": true,
"items": [
{
"itemType": "forumPost",
"title": "Zotero, Mendeley, EndNote. You have a lot of choices for managing your research. Here’s why we think you should choose Zotero. https://t.co/Qu2g5cGBGu",
"creators": [
{
"lastName": "Zotero [@zotero]",
"fieldMode": 1,
"creatorType": "author"
}
],
"date": "2018-09-05T18:30Z",
"forumTitle": "Twitter",
"language": "en",
"postType": "Tweet",
"url": "https://twitter.com/zotero/status/1037407737154596864",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
},
{
"title": "Link",
"mimeType": "text/html",
"snapshot": false
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://twitter.com/zotero/status/1105581965405757440",
"defer": true,
"items": [
{
"itemType": "forumPost",
"title": "You don’t have to send students to a site that will spam them with ads or try to charge them money just to build a bibliography. Instead, tell them about ZoteroBib, the free, open-source, privacy-protecting bibliography generator from Zotero. https://zbib.org",
"creators": [
{
"lastName": "Zotero [@zotero]",
"fieldMode": 1,
"creatorType": "author"
}
],
"date": "2019-03-12T21:30Z",
"forumTitle": "Twitter",
"language": "en",
"postType": "Tweet",
"url": "https://twitter.com/zotero/status/1105581965405757440",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
},
{
"title": "Link (zbib.org)",
"mimeType": "text/html",
"snapshot": false
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://twitter.com/DieZeitansage/status/958792005034930176",
"defer": true,
"items": [
{
"itemType": "forumPost",
"title": "Es ist 21:00 Uhr.",
"creators": [
{
"lastName": "Zeitansage [@DieZeitansage]",
"fieldMode": 1,
"creatorType": "author"
}
],
"date": "2018-01-31T20:00Z",
"forumTitle": "Twitter",
"language": "de",
"postType": "Tweet",
"url": "https://twitter.com/DieZeitansage/status/958792005034930176",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
250Abe Jellinek^https://((ils\.test|bib)\.rero\.ch|ils\.bib\.uclouvain\.be)/[^/]+/(documents/\d+|search/documents\?)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2022 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
/* eslint-disable camelcase */
const TYPE_MAPPING = {
docmaintype_archives: 'document',
docmaintype_article: 'journalArticle',
docmaintype_audio: 'audioRecording',
docmaintype_book: 'book',
docsubtype_manuscript: 'manuscript',
docsubtype_thesis: 'thesis',
docmaintype_electronic: 'computerProgram',
docsubtype_video_game: 'computerProgram',
docmaintype_image: 'artwork',
docmaintype_map: 'map',
docmaintype_movie_series: 'videoRecording',
docmaintype_patent: 'patent',
docmaintype_preprint: 'preprint',
};
// Copied from MARC translator
const CREATOR_MAPPING = {
act: "castMember",
asn: "contributor", // Associated name
aut: "author",
cmp: "composer",
ctb: "contributor",
drt: "director",
edt: "editor",
pbl: "SKIP", // publisher
prf: "performer",
pro: "producer",
pub: "SKIP", // publication place
trl: "translator"
};
async function detectWeb(doc, url) {
if (!doc.querySelector('.rero-ils-header')) {
return false;
}
if (getDomainAndID(url).length) {
let type = attr('#thumbnail > img[src*="icon_"]', 'src').match(/icon_([^.]+)/);
if (type) {
return TYPE_MAPPING[type[1]]
// Assume that "online" items are articles and everything else is some kind of book
|| (type[1] === 'docmaintype_online' ? 'journalArticle' : 'book');
}
else {
return 'book';
}
}
else if (getSearchResults(doc, true)) {
return 'multiple';
}
else if (url.includes('/search/')) {
Z.monitorDOMChanges(doc.querySelector('public-search-root'),
{ childList: true, subtree: true });
}
return false;
}
function getDomainAndID(url) {
return (url.match(/\/([^/]+)\/documents\/(\d+)/) || []).slice(1);
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('#recordlist h4 > a[href*="/documents/"]');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
async function doWeb(doc, url) {
if (await detectWeb(doc, url) == 'multiple') {
let items = await Zotero.selectItems(getSearchResults(doc, false));
if (items) {
await Promise.all(
Object.keys(items)
.map(url => scrape(getDomainAndID(url)))
);
}
}
else {
await scrape(getDomainAndID(url));
}
}
async function scrape([domain, id]) {
let jsonDoc = await requestDocument(`/${domain}/documents/${id}/export/json`);
let json = JSON.parse(text(jsonDoc, 'pre')).metadata;
let itemType = 'book';
for (let { main_type, subtype } of json.type) {
if (subtype && TYPE_MAPPING[subtype]) {
itemType = TYPE_MAPPING[subtype];
}
else if (TYPE_MAPPING[main_type]) {
itemType = TYPE_MAPPING[main_type];
}
}
let item = new Zotero.Item(itemType);
if (json.title && json.title.length) {
item.title = json.title[0]._text
|| (json.title[0].mainTitle[0].value + ': ' + json.title[0].subtitle[0].value);
}
else {
item.title = 'Untitled';
}
if (json.contribution && json.contribution.length) {
for (let creator of json.contribution) {
let metadata;
if (creator.agent) {
if (creator.agent.preferred_name) {
metadata = creator.agent;
}
else {
metadata = (await requestJSON(creator.agent.$ref)).metadata;
}
}
else if (creator.entity) {
if (creator.entity.preferred_name) {
metadata = creator.entity;
}
else {
metadata = (await requestJSON(creator.entity.$ref)).metadata;
}
}
else {
Zotero.debug('Invalid creator');
Zotero.debug(creator);
continue;
}
let type = CREATOR_MAPPING[creator.role[0]] || 'author';
if (type === 'SKIP') continue;
let name = metadata.preferred_name;
if (metadata.type == 'bf:Organisation') {
item.creators.push({
lastName: name,
creatorType: type,
fieldMode: 1
});
}
else {
item.creators.push(ZU.cleanAuthor(name, type, name.includes(',')));
}
}
if (item.creators.every(c => c.creatorType == 'contributor')) {
for (let creator of item.creators) {
creator.creatorType = 'author';
}
}
}
if (json.extent) {
let extent = json.extent.replace('p.', '');
if (!(/^vol/i.test(extent)) && ZU.fieldIsValidForType('numPages', itemType)) {
item.numPages = extent;
}
}
if (json.language && json.language.length) {
item.language = json.language[0].value;
}
if (json.provisionActivity && json.provisionActivity.length) {
let provision = json.provisionActivity[0];
let place, agent, date;
if (provision.statement) {
for (let statement of provision.statement) {
let label = statement.label[0] && statement.label[0].value;
if (!label) continue;
switch (statement.type) {
case 'bf:Place':
place = label;
break;
case 'bf:Agent':
agent = label;
break;
case 'Date':
date = label;
break;
}
}
}
if (!date) {
date = provision.startDate;
}
if (place) {
item.place = place
.replace(/^\[(.+)\]$/, '$1')
.replace(/\([^)]+\)/, '')
.replace(/\[[^\]]+\]/, '');
}
if (agent) {
item.publisher = agent
.replace(/\([^)]+\)/, '')
.replace(/\[[^\]]+\]/, '');
}
if (date) {
item.date = ZU.strToISO(date);
}
}
if (json.seriesStatement && json.seriesStatement.length) {
let statement = json.seriesStatement[0];
let series = statement.seriesTitle && statement.seriesTitle[0].value;
if (ZU.fieldIsValidForType('publicationTitle', itemType)) {
item.publicationTitle = series;
let seriesEnum = statement.seriesEnumeration && statement.seriesEnumeration[0]
&& statement.seriesEnumeration[0].value;
if (seriesEnum) {
let parts = seriesEnum.split(',').map(part => part.trim().toLowerCase());
for (let part of parts) {
if (part.startsWith('vol.')) {
item.volume = part.substring(4);
}
else if (part.startsWith('no.')) {
item.issue = part.substring(3);
}
else if (part.startsWith('p.')) {
item.pages = part.substring(2);
}
}
}
}
else {
// These are usually collection names, not really series;
// we probably don't want to store them.
// item.series = series;
}
}
if (json.identifiedBy) {
for (let identifier of json.identifiedBy) {
switch (identifier.type) {
case 'bf:Isbn':
item.ISBN = ZU.cleanISBN(identifier.value);
break;
case 'uri':
item.url = identifier.value;
break;
case 'bf:Local':
if (identifier.source == 'RERO') {
item.callNumber = identifier.value;
}
}
}
}
if (json.dimensions && json.dimensions[0]
&& ZU.fieldIsValidForType('artworkSize', itemType)) {
item.artworkSize = json.dimensions[0];
}
if (json.editionStatement && json.editionStatement[0]) {
item.edition = json.editionStatement[0].editionDesignation[0].value;
}
if (json.subjects) {
for (let subject of json.subjects) {
item.tags.push({ tag: subject.term });
}
}
if (json.supplementaryContent) {
for (let note of json.supplementaryContent) {
item.notes.push({ note });
}
}
if (json.note) {
for (let note of json.note) {
item.notes.push({ note: note.label });
}
}
if (json.summary) {
for (let summary of json.summary) {
for (let label of summary.label) {
item.abstractNote = (item.abstractNote ? item.abstractNote + '\n' : '')
+ label.value;
}
}
}
if (json.electronicLocator) {
for (let locator of json.electronicLocator) {
if (locator.content == 'coverImage'
|| locator.url.endsWith('.jpg')
|| locator.url.endsWith('.png')) {
continue;
}
let title = locator.content == 'fullText'
? 'Full Text PDF'
: 'Full Text';
let mimeType = locator.content == 'fullText'
? 'application/pdf'
: 'text/html';
let snapshot = locator.content != 'fullText';
item.attachments.push({
title,
mimeType,
snapshot,
url: locator.url
});
}
}
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://ils.bib.uclouvain.be/uclouvain/documents/68705",
"items": [
{
"itemType": "book",
"title": "Histoire économique de la France : XIXe-XXe siècles",
"creators": [
{
"firstName": "François",
"lastName": "Caron",
"creatorType": "author"
}
],
"date": "1981",
"language": "fre",
"libraryCatalog": "Library Catalog (RERO ILS)",
"numPages": "320",
"place": "Paris",
"publisher": "Armand Colin",
"shortTitle": "Histoire économique de la France",
"attachments": [],
"tags": [],
"notes": [
{
"note": "Bibliogr. p. 304-313"
},
{
"note": "cartes, tabl."
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://ils.bib.uclouvain.be/global/documents/295985",
"items": [
{
"itemType": "book",
"title": "Interpreting psychological test data.. 1, Test response antecedent",
"creators": [
{
"firstName": "Joseph",
"lastName": "Gilbert",
"creatorType": "author"
}
],
"date": "1978",
"ISBN": "9780442253134",
"language": "eng",
"libraryCatalog": "Library Catalog (RERO ILS)",
"numPages": "XV, 251",
"place": "New York",
"publisher": "Van Nostrand Reinhold",
"attachments": [],
"tags": [
{
"tag": "Bender-Gestalt Test"
},
{
"tag": "Draw-A-Person Test"
},
{
"tag": "Personality assessment"
},
{
"tag": "Rorschach test"
},
{
"tag": "Wechsler Adult Intelligence Scale"
}
],
"notes": [
{
"note": "Associating personality and behavior with responses to the Bender-Gestalt, human figure drawing, Wechsler adult intelligence scale, and the Rorschach ink blot tests"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://ils.bib.uclouvain.be/global/documents/3435980",
"items": [
{
"itemType": "journalArticle",
"title": "'Common language' in the workplace: an approach devoid of social perspective?",
"creators": [
{
"firstName": "Vincent",
"lastName": "Mariscal",
"creatorType": "author"
}
],
"date": "2017",
"abstractNote": "This paper puts under scrutiny a contemporary management tool called “common language”. This concept derives both from the idea of “freedom” of speech in the workplace, as set up by the Auroux Act, and from the “participative” management approach that emerged in the early 1980s. “Common language” has been developed as part of corporate culture consisting in creating a common culture in which workers can identify themselves; the aim being to coordinate the workers’ actions so they contribute to corporate success. We analyze “common language” as a theoretical construct within a corpus of corporate communication manuals. This study is multidisciplinary: it is mainly based on sociology, sociolinguistics and discourse analysis. We postulate that “common language” is a vision devoid of social perspective, based on an endemic culture where linguistic, cultural, historical and thus social questions are minimized. This interpretation leads us to question whether freedom of speech in the workplace is real or not. Indeed, in the corporate communication manuals studied, language at work is limited to a “theoretical reason”. Ultimately, the rationalization of language in the workplace suggests a technological rationality close to classical management.",
"issue": "11",
"language": "eng",
"libraryCatalog": "Library Catalog (RERO ILS)",
"pages": "21-40",
"publicationTitle": "Sociolinguistic Studies",
"shortTitle": "'Common language' in the workplace",
"url": "http://hdl.handle.net/2078.1/170384",
"volume": "1",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf",
"snapshot": false
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://bib.rero.ch/global/documents/1289565",
"items": [
{
"itemType": "audioRecording",
"title": "Solomon (edited and revised by Sir Thomas Beecham, Bart.)",
"creators": [
{
"firstName": "Georg Friedrich",
"lastName": "Haendel",
"creatorType": "author"
},
{
"firstName": "Thomas",
"lastName": "Beecham",
"creatorType": "contributor"
},
{
"firstName": "John",
"lastName": "Cameron",
"creatorType": "contributor"
},
{
"firstName": "Lois",
"lastName": "Marshall",
"creatorType": "contributor"
},
{
"firstName": "Elsie",
"lastName": "Morison",
"creatorType": "contributor"
},
{
"firstName": "Alexander",
"lastName": "Young",
"creatorType": "contributor"
},
{
"lastName": "The Beecham choral society (London, 1955-1962)",
"creatorType": "contributor",
"fieldMode": 1
},
{
"lastName": "Royal Philharmonic Orchestra (Londres)",
"creatorType": "contributor",
"fieldMode": 1
}
],
"callNumber": "R006481802",
"label": "Columbia, P",
"language": "eng",
"libraryCatalog": "Library Catalog (RERO ILS)",
"place": "Lieu de publication non identifié",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://ils.bib.uclouvain.be/uclouvain/documents/406229",
"items": [
{
"itemType": "book",
"title": "Social care in a mixed economy",
"creators": [
{
"firstName": "Brian",
"lastName": "Hardy",
"creatorType": "author"
},
{
"firstName": "Martin",
"lastName": "Knapp",
"creatorType": "author"
},
{
"firstName": "Gerald",
"lastName": "Wistow",
"creatorType": "author"
}
],
"date": "1994",
"ISBN": "9780335190430",
"language": "eng",
"libraryCatalog": "Library Catalog (RERO ILS)",
"numPages": "X, 166",
"place": "Buckinghamshire",
"publisher": "Open university",
"attachments": [],
"tags": [
{
"tag": "Mixed economy"
},
{
"tag": "Social service"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://ils.bib.uclouvain.be/uclouvain/documents/2009186",
"items": [
{
"itemType": "book",
"title": "Cities in a world economy",
"creators": [
{
"firstName": "Saskia",
"lastName": "Sassen",
"creatorType": "author"
}
],
"date": "2019",
"ISBN": "9781506362618",
"edition": "Fifth edition",
"language": "eng",
"libraryCatalog": "Library Catalog (RERO ILS)",
"numPages": "xxv, 413",
"place": "Thousand Oaks",
"publisher": "Sage",
"attachments": [],
"tags": [
{
"tag": "Cities and towns"
},
{
"tag": "Metropolitan areas"
},
{
"tag": "Sociology, Urban"
},
{
"tag": "Urban economics"
}
],
"notes": [
{
"note": "Includes bibliographical references p. 325-394 and index."
},
{
"note": "ill."
},
{
"note": "Revised edition of the author's Cities in a world economy"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://bib.rero.ch/global/documents/1516290",
"items": [
{
"itemType": "audioRecording",
"title": "Cats on trees",
"creators": [
{
"lastName": "Cats on Trees",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "2014",
"callNumber": "R008116813",
"label": "Tôt ou Tard",
"language": "eng",
"libraryCatalog": "Library Catalog (RERO ILS)",
"place": "Lieu de publication non identifié",
"attachments": [],
"tags": [],
"notes": [
{
"note": "1 livret"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://bib.rero.ch/rbnj/documents/627927",
"items": [
{
"itemType": "book",
"title": "Bakŝis, skizoj el la vivo de Egiptoj : novelaro",
"creators": [
{
"firstName": "Leonard Noel Mansell",
"lastName": "Newell",
"creatorType": "author"
}
],
"date": "1938",
"callNumber": "R003853768",
"language": "epo",
"libraryCatalog": "Library Catalog (RERO ILS)",
"numPages": "149",
"place": "Budapest",
"publisher": "Literatura Mondo",
"shortTitle": "Bakŝis, skizoj el la vivo de Egiptoj",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Jonas Schrieb and Morgan Shirley^https?://eccc\.weizmann\.ac\.il/(title|year|keyword|report|search)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2023 Jonas Schrieb and Morgan Shirley
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
const preprintType = ZU.fieldIsValidForType('title', 'preprint')
? 'preprint'
: 'report';
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('a[href^="/report/"]');
for (let row of rows) {
let href = row.href;
let title = text(row, "h4");
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function detectWeb(doc, url) {
var multipleRe = /^https?:\/\/eccc\.weizmann\.ac\.il\/(title|year|keyword|search)\//;
var singleRe = /^https?:\/\/eccc\.weizmann\.ac\.il\/report\//;
if (multipleRe.test(url)) {
return getSearchResults(doc, true) && "multiple";
}
else if (singleRe.test(url)) {
return preprintType;
}
else return false;
}
async function scrape(doc, url = doc.location.href) {
let translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', (_obj, item) => {
item.publisher = "Electronic Colloquium on Computational Complexity";
// Keywords and abstract are not in the metadata; scrape from webpage
var keywords = doc.querySelectorAll("#box a[href^='/keyword/']");
for (let i = 0; i < keywords.length; i++) {
item.tags[i] = keywords[i].textContent;
}
var abstractParagraphs = doc.querySelectorAll("#box p");
item.abstractNote = "";
for (let i = 0; i < abstractParagraphs.length; i++) {
item.abstractNote += abstractParagraphs[i].innerText + "\n";
}
item.complete();
});
let em = await translator.getTranslatorObject();
em.itemType = preprintType;
await em.doWeb(doc, url);
}
async function doWeb(doc, url) {
if (detectWeb(doc, url) == 'multiple') {
let items = await Zotero.selectItems(getSearchResults(doc, false));
if (!items) return;
for (let url of Object.keys(items)) {
await scrape(await requestDocument(url));
}
}
else {
await scrape(doc, url);
}
}/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://eccc.weizmann.ac.il/report/2006/067/",
"detectedItemType": "preprint",
"items": [
{
"itemType": "preprint",
"title": "On the Impact of Combinatorial Structure on Congestion Games",
"creators": [
{
"firstName": "Heiner",
"lastName": "Ackermann",
"creatorType": "author"
},
{
"firstName": "Heiko",
"lastName": "Röglin",
"creatorType": "author"
},
{
"firstName": "Berthold",
"lastName": "Vöcking",
"creatorType": "author"
}
],
"date": "2006/5/28",
"abstractNote": "We study the impact of combinatorial structure in congestion games on the complexity of computing pure Nash equilibria and the convergence time of best response sequences. In particular, we investigate which properties of the strategy spaces of individual players ensure a polynomial convergence time. We show, if the strategy space of each player consists of the bases of a matroid over the set of resources, then the lengths of all best response sequences are polynomially bounded in the number of players and resources. We can also prove that this result is tight, that is, the matroid property is a necessary and sufficient condition on the players' strategy spaces for guaranteeing polynomial time convergence to a Nash equilibrium. In addition, we present an approach that enables us to devise hardness proofs for various kinds of combinatorial games, including first results about the hardness of market sharing games and congestion games for overlay network design. Our approach also yields a short proof for the PLS-completeness of network congestion games.",
"archiveID": "TR06-067",
"language": "en",
"libraryCatalog": "eccc.weizmann.ac.il",
"repository": "Electronic Colloquium on Computational Complexity",
"url": "https://eccc.weizmann.ac.il/report/2006/067/",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Combinatorial Structure"
},
{
"tag": "Congestion Games"
},
{
"tag": "Convergence Time"
},
{
"tag": "PLS-Completeness"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://eccc.weizmann.ac.il/report/2007/112/",
"detectedItemType": "preprint",
"items": [
{
"itemType": "preprint",
"title": "Unbounded-Error Communication Complexity of Symmetric Functions",
"creators": [
{
"firstName": "Alexander A.",
"lastName": "Sherstov",
"creatorType": "author"
}
],
"date": "2007/11/12",
"abstractNote": "The sign-rank of a real matrix M is the least rank\nof a matrix R in which every entry has the same sign as the\ncorresponding entry of M. We determine the sign-rank of every\nmatrix of the form M=[ D(|x AND y|) ]_{x,y}, where\nD:{0,1,...,n}->{-1,+1} is given and x and y range over {0,1}^n.\nSpecifically, we prove that the sign-rank of M equals\n2^{\\tilde Theta(k)}, where k is the number of times D changes\nsign in {0,1,...,n}.\nPut differently, we prove an optimal lower bound\non the unbounded-error communication complexity of every\nsymmetric function, i.e., a function of the form\nf(x,y)=D(|x AND y|) for some D. The unbounded-error model is\nessentially the most powerful of all models of communication\n(both classical and quantum), and proving lower bounds in it\nis a substantial challenge. The only previous nontrivial lower\nbounds for this model appear in the groundbreaking work of\nForster (2001) and its extensions. As corollaries to our\nresult, we give new lower bounds for PAC learning and for\nthreshold-of-majority circuits.\nThe technical content of our proof is diverse and\nfeatures random walks on (Z_2)^n, discrete approximation theory,\nthe Fourier transform on (Z_2)^n, linear-programming duality,\nand matrix analysis.",
"archiveID": "TR07-112",
"language": "en",
"libraryCatalog": "eccc.weizmann.ac.il",
"repository": "Electronic Colloquium on Computational Complexity",
"url": "https://eccc.weizmann.ac.il/report/2007/112/",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Communication complexity"
},
{
"tag": "Sign-rank"
},
{
"tag": "Unbounded-error communication complexity"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://eccc.weizmann.ac.il/search/?search=combinatorial",
"detectedItemType": "multiple",
"items": "multiple"
},
{
"type": "web",
"url": "https://eccc.weizmann.ac.il/search/?search=asdf",
"detectedItemType": false,
"items": []
},
{
"type": "web",
"url": "https://eccc.weizmann.ac.il/keyword/14114/",
"detectedItemType": "multiple",
"items": "multiple"
}
]
/** END TEST CASES **/
100Jonas Schrieb^https://eprint\.iacr\.org//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2010-2023 Jonas Schrieb and contributors
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
// There are several types of searches available on ePrint, producing pages with different structure, need to distinguish them
// This covers the standard text-based search
const SEARCH_TYPE_TEXT = "text";
// This covers all time-based searches: "All papers" (excluding "Compact view"), "Updates from the last X days", "Listing by year"
const SEARCH_TYPE_TIME = "time";
let searchType = "";
function detectWeb(doc, url) {
var eprintBaseURLRe = /^https:\/\/eprint\.iacr\.org\//;
// Single paper URL format is https://<ePrint FQDN>/<year>/<paper number within the year>
// The year is always 4 digits, paper number can technically be 1 digit or more,
// the default is 3 or 4 digits (the former is left-padded with zeroes if smaller than 100)
var singleRe = new RegExp(eprintBaseURLRe.source + /\d{4}\/\d+/.source);
var multipleTextSearchRe = new RegExp(eprintBaseURLRe.source + /search\?/.source);
var multipleTimeSearchYearRe = new RegExp(eprintBaseURLRe.source + /\d{4}\/?$/.source);
var multipleTimeSearchDaysRe = new RegExp(eprintBaseURLRe.source + /days/.source);
// The "Compact view" is explicitly unsupported - it does not use pagination and trying to handle all 20K+ papers at once reliably kills Zotero
var multipleTimeSearchAllRe = new RegExp(eprintBaseURLRe.source + /complete\/?$/.source);
if (singleRe.test(url)) {
return 'preprint';
}
else if (multipleTextSearchRe.test(url)) {
searchType = SEARCH_TYPE_TEXT;
}
else if (multipleTimeSearchYearRe.test(url)
|| multipleTimeSearchDaysRe.test(url)
|| multipleTimeSearchAllRe.test(url)) {
searchType = SEARCH_TYPE_TIME;
}
if (searchType && getSearchResults(doc, true)) return "multiple";
return false;
}
async function scrape(doc, url = doc.location.href) {
var titleSelector = 'meta[name="citation_title"]';
var authorsSelector = 'meta[name="citation_author"]';
var archiveSelector = 'meta[name="citation_journal_title"]';
var abstractXPath = "//h5[starts-with(text(),'Abstract')]/following-sibling::p[1]";
var noteXPath = "//h5[starts-with(text(),'Abstract')]/following-sibling::p[2]/strong[starts-with(text(), 'Note:')]/..";
var keywordsSelector = ".keywords > .keyword";
var publicationInfoSelector = "//div[@id='metadata']/dl/dt[starts-with(text(), 'Publication info')]/following-sibling::dd[1]";
var paperIDSelector = "#eprintContent h4";
var paperID = text(doc, paperIDSelector);
// The year is always 4 digits, the paper number is canonicalized (3 or 4 digits) before calling scrape()
paperID = paperID.match(/(\d{4})\/(\d{3,4})$/);
if (paperID) {
var paperYear = paperID[1];
var paperNum = paperID[2];
paperID = paperYear + "/" + paperNum;
}
var title = ZU.trimInternal(attr(doc, titleSelector, 'content'));
var archiveName = ZU.trimInternal(attr(doc, archiveSelector, 'content'));
var authors = doc.querySelectorAll(authorsSelector);
authors = [...authors].map(author => author.content);
var abstr = ZU.xpathText(doc, abstractXPath);
// Remove surplus whitespace, but preserve paragraphs, denoted in the page markup by double newlines with some spaces in between
if (abstr) abstr = abstr.replace(/\n\s+\n/g, "\n\n").replace(/[ \t]+/g, " ").trim();
let note = ZU.xpathText(doc, noteXPath);
if (note) note = ZU.trimInternal(note.replace(/^Note: /, ""));
let publicationInfo = ZU.xpathText(doc, publicationInfoSelector);
publicationInfo = ZU.trimInternal(publicationInfo);
var keywords = doc.querySelectorAll(keywordsSelector);
keywords = [...keywords].map(kw => kw.textContent.trim());
var newItem = new Zotero.Item('preprint');
newItem.date = paperYear;
let urlComponents = url.match(/^https:\/\/([^/]+)/);
let eprintFQDN = urlComponents[1];
// TODO: Do we want to differentiate Archive and Library Catalog like this (the latter has FQDN appended)? Do we want to populate both or just one of them? The translator population has all possible approaches.
newItem.archive = archiveName;
newItem.libraryCatalog = `${archiveName} (${eprintFQDN})`;
newItem.archiveID = paperID;
// Canonicalize the URL to avoid errors if e.g., the user removed or prepended extra zeroes to the paper ID in the original URL
newItem.url = urlComponents[0] + "/" + paperID;
newItem.title = title;
newItem.abstractNote = abstr;
for (let i in authors) {
newItem.creators.push(ZU.cleanAuthor(authors[i], "author"));
}
for (let i in keywords) {
newItem.tags.push(keywords[i]);
}
newItem.attachments = [
{ url: newItem.url + ".pdf", title: "Full Text PDF", mimeType: "application/pdf" }
];
if (note) newItem.notes.push({ note: note });
let extra = `Publication info: ${publicationInfo}`;
newItem.extra = newItem.extra
? newItem.extra + `\n${extra}`
: extra;
newItem.complete();
}
function getSearchResults(doc, checkonly) {
if (searchType === SEARCH_TYPE_TEXT) {
return getTextSearchResults(doc, checkonly);
}
else if (searchType === SEARCH_TYPE_TIME) {
return getTimeSearchResults(doc, checkonly);
}
return false;
}
// Standard (text) search results parser
function getTextSearchResults(doc, checkOnly) {
let rowSelector = ".results > div";
let titleSelector = "div > strong:first-child";
let linkSelector = "a.paperlink";
let items = {};
let found = false;
// Each "row" div will contain two nested divs with necessary information
for (let row of doc.querySelectorAll(rowSelector)) {
let title = text(row, titleSelector);
let href = attr(row, linkSelector, 'href');
if (!title || !href) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
// Time-based search results parser ("All papers", "Listing by year", "Updates from the last X days")
function getTimeSearchResults(doc, checkOnly) {
let rowSelector = ".paperList > div";
let titleSelector = ".papertitle";
let linkSelector = "a:first-child";
let items = {};
let found = false;
// This search type returns a page with a flat list of divs, odd ones contain links, even ones contain titles
// We treat the list as a set of [virtual] rows, each comprised of a pair of divs
let rows = doc.querySelectorAll(rowSelector);
for (let i = 0; i < rows.length - 1; i += 2) {
let href = attr(rows[i], linkSelector, "href");
let title = text(rows[i + 1], titleSelector);
if (!title || !href) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
async function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
let items = await Z.selectItems(getSearchResults(doc, false));
if (!items) return;
for (let url of Object.keys(items)) {
await scrape(await requestDocument(url));
}
}
// Firefox restrictions will prevent this convenience clause from running (Chrome works as expected)
// Standard PDF saving (and metadata retrieval) logic will be used instead
else if (/\.pdf$/.test(url)) {
// Go to the landing page to scrape
url = url.replace(/\.pdf$/, "");
await scrape(await requestDocument(url));
}
else {
await scrape(doc, url);
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://eprint.iacr.org/2005/033",
"items": [
{
"itemType": "preprint",
"title": "An Attack on CFB Mode Encryption As Used By OpenPGP",
"creators": [
{
"firstName": "Serge",
"lastName": "Mister",
"creatorType": "author"
},
{
"firstName": "Robert",
"lastName": "Zuccherato",
"creatorType": "author"
}
],
"date": "2005",
"abstractNote": "This paper describes an adaptive-chosen-ciphertext attack on the Cipher Feedback (CFB) mode of encryption as used in OpenPGP. In most circumstances it will allow an attacker to determine 16 bits of any block of plaintext with about 215 oracle queries for the initial\nsetup work and 215 oracle queries for each block. Standard CFB mode encryption does not appear to be affected by this attack. It applies to a particular variation of CFB used by OpenPGP. In particular it exploits an ad-hoc integrity check feature in OpenPGP which was meant as a \"quick check\" to determine the correctness of the decrypting symmetric key.",
"archive": "Cryptology ePrint Archive",
"archiveID": "2005/033",
"extra": "Publication info: Published elsewhere. Unknown where it was published",
"libraryCatalog": "Cryptology ePrint Archive (eprint.iacr.org)",
"url": "https://eprint.iacr.org/2005/033",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "applications"
},
{
"tag": "cryptanalysis"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://eprint.iacr.org/2011/566",
"items": [
{
"itemType": "preprint",
"title": "Fully Homomorphic Encryption with Polylog Overhead",
"creators": [
{
"firstName": "Craig",
"lastName": "Gentry",
"creatorType": "author"
},
{
"firstName": "Shai",
"lastName": "Halevi",
"creatorType": "author"
},
{
"firstName": "Nigel P.",
"lastName": "Smart",
"creatorType": "author"
}
],
"date": "2011",
"abstractNote": "We show that homomorphic evaluation of (wide enough) arithmetic circuits can be accomplished with only polylogarithmic overhead. Namely, we present a construction of fully homomorphic encryption (FHE) schemes that for security parameter \\secparam can evaluate any width-Ω(\\secparam) circuit with t gates in time t⋅polylog(\\secparam).\n\nTo get low overhead, we use the recent batch homomorphic evaluation techniques of Smart-Vercauteren and Brakerski-Gentry-Vaikuntanathan, who showed that homomorphic operations can be applied to \"packed\" ciphertexts that encrypt vectors of plaintext elements. In this work, we introduce permuting/routing techniques to move plaintext elements across\nthese vectors efficiently. Hence, we are able to implement general arithmetic circuit in a batched fashion without ever needing to \"unpack\" the plaintext vectors.\n\nWe also introduce some other optimizations that can speed up homomorphic evaluation in certain cases. For example, we show how to use the Frobenius map to raise plaintext elements to powers of~p at the \"cost\" of a linear operation.",
"archive": "Cryptology ePrint Archive",
"archiveID": "2011/566",
"extra": "Publication info: Published elsewhere. extended abstract in Eurocrypt 2012",
"libraryCatalog": "Cryptology ePrint Archive (eprint.iacr.org)",
"url": "https://eprint.iacr.org/2011/566",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Automorphism"
},
{
"tag": "Batching"
},
{
"tag": "Bootstrapping"
},
{
"tag": "Galois group"
},
{
"tag": "Homomorphic encryption"
},
{
"tag": "Permutation network"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://eprint.iacr.org/2022/1039",
"items": [
{
"itemType": "preprint",
"title": "Theoretical Limits of Provable Security Against Model Extraction by Efficient Observational Defenses",
"creators": [
{
"firstName": "Ari",
"lastName": "Karchmer",
"creatorType": "author"
}
],
"date": "2022",
"abstractNote": "Can we hope to provide provable security against model extraction attacks? As a step towards a theoretical study of this question, we unify and abstract a wide range of \"observational\" model extraction defenses (OMEDs) --- roughly, those that attempt to detect model extraction by analyzing the distribution over the adversary's queries. To accompany the abstract OMED, we define the notion of complete OMEDs --- when benign clients can freely interact with the model --- and sound OMEDs --- when adversarial clients are caught and prevented from reverse engineering the model. Our formalism facilitates a simple argument for obtaining provable security against model extraction by complete and sound OMEDs, using (average-case) hardness assumptions for PAC-learning, in a way that abstracts current techniques in the prior literature.\n\nThe main result of this work establishes a partial computational incompleteness theorem for the OMED: any efficient OMED for a machine learning model computable by a polynomial size decision tree that satisfies a basic form of completeness cannot satisfy soundness, unless the subexponential Learning Parity with Noise (LPN) assumption does not hold. To prove the incompleteness theorem, we introduce a class of model extraction attacks called natural Covert Learning attacks based on a connection to the Covert Learning model of Canetti and Karchmer (TCC '21), and show that such attacks circumvent any defense within our abstract mechanism in a black-box, nonadaptive way. As a further technical contribution, we extend the Covert Learning algorithm of Canetti and Karchmer to work over any \"concise\" product distribution (albeit for juntas of a logarithmic number of variables rather than polynomial size decision trees), by showing that the technique of learning with a distributional inverter of Binnendyk et al. (ALT '22) remains viable in the Covert Learning setting.",
"archive": "Cryptology ePrint Archive",
"archiveID": "2022/1039",
"extra": "Publication info: Published elsewhere. IEEE Secure and Trustworthy Machine Learning (SATML)",
"libraryCatalog": "Cryptology ePrint Archive (eprint.iacr.org)",
"url": "https://eprint.iacr.org/2022/1039",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Covert Learning"
},
{
"tag": "Model Extraction"
},
{
"tag": "Provable Security"
}
],
"notes": [
{
"note": "This is an updated version. The paper has been modified to improve readability and argumentation. Some new results have been added in section 5. The previous version of the paper appeared under the title \"The Limits of Provable Security Against Model Extraction.\" The current version is the same as for publication in IEEE SATML '23, except for minor differences and formatting."
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://eprint.iacr.org/search?q=test",
"items": "multiple"
},
{
"type": "web",
"url": "https://eprint.iacr.org/days/7",
"items": "multiple"
},
{
"type": "web",
"url": "https://eprint.iacr.org/2021/",
"items": "multiple"
},
{
"type": "web",
"url": "https://eprint.iacr.org/complete/",
"items": "multiple"
}
]
/** END TEST CASES **/
98Maciej Nux Jaros/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2023 Maciej Nux Jaros
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectSearch(item) {
// Other supported parameters (BN docs):
// https://data.bn.org.pl/docs/bibs
// for now only using ISBN
if (typeof item.ISBN === 'string') {
// filter by country code (83)
const isbn = item.ISBN.replace(/[ -]/g, '');
return isbn.search(/^(97[8-9]83|83)/) === 0;
}
return false;
}
// function test(item) {
// const result = detectSearch(item);
// console.log({result, item:JSON.stringify(item)});
// }
// // not matched
// test({})
// test({ISBN:'123'})
// test({ISBN:'978'})
// // matched
// test({ISBN:'97883'})
// test({ISBN:'83'})
// test({ISBN:'978-83-578'})
// test({ISBN:'83-123456'})
// test({ISBN:' 978-83-578'})
// test({ISBN:' 83-123456'})
// test({ISBN:' -978-83-578'})
// test({ISBN:' -83-123456'})
function doSearch(item) {
const isbn = ZU.cleanISBN(item.ISBN);
const url = `https://data.bn.org.pl/api/institutions/bibs.marcxml?isbnIssn=${isbn}`;
ZU.doGet(url, function (xmlText) {
// example XML:
// <resp>
// <nextPage>https://data.bn.org.pl/api/institutions/bibs.marcxml?isbnIssn=8301136545&sinceId=1540416</nextPage>
// <collection>
// <record xmlns='http://www.loc.gov/MARC21/slim'>...</record>
// </collection>
// </resp>
const doc = ((new DOMParser()).parseFromString(xmlText, 'text/xml'));
let record = doc.querySelector('collection > record');
if (!record) {
return;
}
let marcXml = new XMLSerializer().serializeToString(record);
// MARCXML.js translator
const translator = Zotero.loadTranslator('import');
translator.setTranslator('edd87d07-9194-42f8-b2ad-997c4c7deefd');
translator.setString(marcXml);
translator.translate();
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "search",
"input": {
"ISBN": "8301136545"
},
"items": [
{
"itemType": "book",
"title": "Podstawy chemii nieorganicznej",
"creators": [
{
"firstName": "Adam",
"lastName": "Bielański",
"creatorType": "author"
}
],
"date": "2002",
"ISBN": "9788301136543",
"callNumber": "2.152.922 A",
"edition": "Wyd. 5 zm. i popr",
"language": "pol",
"libraryCatalog": "National Library of Poland ISBN",
"numPages": "1064",
"place": "Warszawa",
"publisher": "Wydaw. Naukowe PWN",
"attachments": [],
"tags": [
{
"tag": "Chemia nieorganiczna"
},
{
"tag": "Chemia nieorganiczna"
},
{
"tag": "Podręczniki akademickie"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Pascal Quach^https?://optimization-online\.org//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2023 Pascal Quach <pascal.quach@centralesupelec.fr>
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) { // eslint-disable-line no-unused-vars
if (doc.body.classList.contains('single-post')) {
return 'preprint';
}
else if (getSearchResults(doc, true)) {
return 'multiple';
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.entry-title > a');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
async function doWeb(doc, url) {
if (detectWeb(doc, url) == 'multiple') {
let items = await Zotero.selectItems(getSearchResults(doc, false));
if (!items) return;
for (let url of Object.keys(items)) {
await scrape(await requestDocument(url));
}
}
else {
await scrape(doc, url);
}
}
async function scrape(doc, url) {
let translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', (_obj, item) => {
// Item
item.itemType = 'preprint';
// Use innerText instead of textContent (duplicated LaTeX)
let title = innerText(doc, 'h1.entry-title');
if (title) {
item.title = ZU.capitalizeTitle(title);
}
let tags = doc.querySelectorAll('div.entry-meta > span.tags-links > a[rel="tag"]');
for (let tag of tags) {
item.tags.push(ZU.cleanTags(tag.text));
}
// Use innerText instead of textContent (duplicated LaTeX)
let abstractNote = innerText(doc, 'div.entry-content > div > p');
if (abstractNote) {
item.abstractNote = ZU.trimInternal(abstractNote);
}
// Attachment
let attachmentUrl = attr(doc, '.entry-content a[href*="/wp-content/uploads/"]', 'href');
item.attachments = [];
if (attachmentUrl.length) {
item.attachments.push({
title: 'Full Text PDF',
mimeType: 'application/pdf',
url: attachmentUrl,
});
}
// Archive
item.publisher = 'Optimization Online'; // repository
item.libraryCatalog = 'optimization-online.org';
let archiveID = attr(doc, 'article', 'id');
if (archiveID) {
item.archiveID = archiveID.split('-')[1];
}
let shortUrl = doc.querySelector('span.shorturl > a').href;
if (shortUrl) {
item.url = shortUrl;
}
item.complete();
});
let em = await translator.getTranslatorObject();
await em.doWeb(doc, url);
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://optimization-online.org/2023/05/political-districting-to-optimize-the-polsby-popper-compactness-score/",
"detectedItemType": "preprint",
"items": [
{
"itemType": "preprint",
"title": "Political districting to optimize the Polsby-Popper compactness score",
"creators": [
{
"firstName": "Pietro",
"lastName": "Belotti",
"creatorType": "author"
},
{
"firstName": "Austin",
"lastName": "Buchanan",
"creatorType": "author"
},
{
"firstName": "Soraya",
"lastName": "Ezazipour",
"creatorType": "author"
}
],
"date": "2023-05-19",
"abstractNote": "In the academic literature and in expert testimony, the Polsby-Popper score is the most popular way to measure the compactness of a political district. Given a district with area A and perimeter P, its Polsby-Popper score is given by (4 \\pi A)/P^2. This score takes values between zero and one, with circular districts achieving a perfect score of one. In this paper, we propose the first mathematical optimization models to draw districts with optimum Polsby-Popper score. Specifically, we propose new mixed-integer second-order cone programs (MISOCPs), which can be solved with existing optimization software. We investigate their tractability by applying them to real-life districting instances in the USA. Experiments show that they are able to: (i) identify the most compact majority-minority districts at the tract level; (ii) identify the most compact districting plans at the county level; and (iii) refine existing tract-level plans to make them substantially more compact. Our techniques could be used by plaintiffs when seeking to overturn maps that dilute the voting strength of minority groups. Our python code and results are publicly available on GitHub.",
"archiveID": "23021",
"language": "en-US",
"libraryCatalog": "optimization-online.org",
"repository": "Optimization Online",
"url": "https://optimization-online.org/?p=23021",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "MINLP"
},
{
"tag": "districting"
},
{
"tag": "misocp"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://optimization-online.org/2023/06/mind-the-tildeo-asymptotically-better-but-still-impractical-quantum-distributed-algorithms/",
"detectedItemType": "preprint",
"items": [
{
"itemType": "preprint",
"title": "Mind the \\tilde{O}: asymptotically better, but still impractical, quantum distributed algorithms",
"creators": [
{
"firstName": "David E. Bernal",
"lastName": "Neira",
"creatorType": "author"
}
],
"date": "2023-06-22",
"archiveID": "23283",
"language": "en-US",
"libraryCatalog": "optimization-online.org",
"repository": "Optimization Online",
"shortTitle": "Mind the \\tilde{O}",
"url": "https://optimization-online.org/?p=23283",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Directed Minimum Spanning Tree"
},
{
"tag": "complexity"
},
{
"tag": "distributed computing"
},
{
"tag": "quantum computing"
},
{
"tag": "steiner tree"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://optimization-online.org/2023/05/maximum-likelihood-probability-measures-over-sets-and-applications-to-data-driven-optimization/",
"detectedItemType": "preprint",
"items": [
{
"itemType": "preprint",
"title": "Maximum Likelihood Probability Measures over Sets and Applications to Data-Driven Optimization",
"creators": [
{
"firstName": "Juan",
"lastName": "Borrero",
"creatorType": "author"
},
{
"firstName": "Denis",
"lastName": "Saure",
"creatorType": "author"
}
],
"date": "2023-05-15",
"archiveID": "22948",
"language": "en-US",
"libraryCatalog": "optimization-online.org",
"repository": "Optimization Online",
"url": "https://optimization-online.org/?p=22948",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "data-driven decision making"
},
{
"tag": "distributionally robust optimization"
},
{
"tag": "maximum likelihood estimation"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://optimization-online.org/2023/05/modeling-risk-for-cvar-based-decisions-in-risk-aggregation/",
"detectedItemType": "preprint",
"items": [
{
"itemType": "preprint",
"title": "Modeling risk for CVaR-based decisions in risk aggregation",
"creators": [
{
"firstName": "Yuriy",
"lastName": "Zinchenko",
"creatorType": "author"
}
],
"date": "2023-05-08",
"abstractNote": "Download",
"archiveID": "22890",
"language": "en-US",
"libraryCatalog": "optimization-online.org",
"repository": "Optimization Online",
"url": "https://optimization-online.org/?p=22890",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://optimization-online.org/2018/03/6538/",
"detectedItemType": "preprint",
"items": [
{
"itemType": "preprint",
"title": "Discretization-based algorithms for generalized semi-infinite and bilevel programs with coupling equality constraints",
"creators": [
{
"firstName": "Hatim",
"lastName": "Djelassi",
"creatorType": "author"
},
{
"firstName": "Alexander",
"lastName": "Mitsos",
"creatorType": "author"
},
{
"firstName": "Moll",
"lastName": "Glass",
"creatorType": "author"
}
],
"date": "2018-03-22",
"archiveID": "15107",
"language": "en-US",
"libraryCatalog": "optimization-online.org",
"repository": "Optimization Online",
"url": "https://optimization-online.org/?p=15107",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://optimization-online.org/tag/affine-recourse-adaptation/",
"detectedItemType": "multiple",
"items": "multiple"
},
{
"type": "web",
"url": "https://optimization-online.org/author/melvynsim/",
"detectedItemType": "multiple",
"items": "multiple"
},
{
"type": "web",
"url": "https://optimization-online.org/category/robust-optimization/",
"detectedItemType": "multiple",
"items": "multiple"
},
{
"type": "web",
"url": "https://optimization-online.org/2022/",
"detectedItemType": "multiple",
"items": "multiple"
},
{
"type": "web",
"url": "https://optimization-online.org/2022/07/",
"detectedItemType": "multiple",
"items": "multiple"
},
{
"type": "web",
"url": "https://optimization-online.org/2022/7/",
"detectedItemType": "multiple",
"items": "multiple"
},
{
"type": "web",
"url": "https://optimization-online.org/2022/07/1/",
"detectedItemType": "multiple",
"items": "multiple"
},
{
"type": "web",
"url": "https://optimization-online.org/2022/7/01/",
"detectedItemType": "multiple",
"items": "multiple"
},
{
"type": "web",
"url": "https://optimization-online.org/2022/7/1/",
"detectedItemType": "multiple",
"items": "multiple"
},
{
"type": "web",
"url": "https://optimization-online.org/2022/07/01/",
"detectedItemType": "multiple",
"items": "multiple"
}
]
/** END TEST CASES **/
110Aurimas Vinckevicius^https?://([^/]+\.)?airitilibrary\.com/Publication/alDetailedMeshfunction detectWeb(doc, url) {
// How can we distinguish thesis from journal article??
if (ZU.xpathText(doc, '/html/head/meta[@name="citation_title"]/@content')) {
return 'journalArticle';
}
}
function getDocId(url) {
var m = url.match(/\bDocID=([^&#]+)/i);
if (!m) return;
return m[1];
}
async function doWeb(doc, url) {
var docID = getDocId(url);
await scrape([docID], function(item) {
if (!item.url) {
// Maybe we shouldn't. Looks more like a catalog.
item.url = url;
}
item.attachments.push({
title: 'Snapshot',
document: doc
});
item.complete();
});
}
async function scrape(docIDs, itemDoneHandler) {
let tokenParams = new URLSearchParams();
tokenParams.append('BER', JSON.stringify(docIDs.map(id => ({
DocID: id,
IsCanAddShoppingCar: null
}))));
tokenParams.append('IsShowLink', 'false');
tokenParams.append('keepThis', 'true');
// This sets the necessary cookies:
await requestDocument('https://www.airitilibrary.com/Publication/MetaExport?' + tokenParams);
var bibTeXUrl = buildQuery(docIDs);
ZU.doGet(bibTeXUrl, function(text) {
var translator = Zotero.loadTranslator("import");
// BibTeX
translator.setTranslator("9cb70025-a888-4a29-a210-93ec52da40d4");
translator.setString(text);
translator.setHandler('itemDone', function(obj, item) {
// Chinese names are not split correctly
// Sometimes, English name is provided as well in parentheses
for (var i=0, n=item.creators.length; i<n; i++) {
var c = item.creators[i];
var zhChar = /[\u4E00-\u9FFF]/;
if (!zhChar.test(c.firstName) && !zhChar.test(c.lastName)) continue;
delete c.fieldMode;
var name = (c.firstName || "") + (c.lastName || "");
var trimAt = name.indexOf('(');
if (trimAt == 0) {
c.lastName = name;
delete c.firstName;
c.fieldMode = 1;
continue;
} else if (trimAt != -1) {
name = name.substr(0, trimAt);
}
name = name.trim();
c.lastName = name.substr(0, 1);
if (name.length > 1) {
c.firstName = name.substr(1, name.length);
} else {
delete c.firstName;
c.fieldMode = 1;
}
}
// language is sometimes written in chinese
// use "zh", since I think dialect actually varies in this catalog
item.language = "zh";
// search- and web-specific itemDone handlers
if (itemDoneHandler) itemDoneHandler(item);
else item.complete();
});
translator.translate();
});
}
function buildQuery(docIDs) {
var url = 'https://www.airitilibrary.com/publication/ExportTo?ExportType=BibTex'
+ '¶meter=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16';
for (var i=0; i<docIDs.length; i++) {
url += '&DocIDs[' + i + ']=' + encodeURIComponent(docIDs[i]);
}
return url;
}/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.airitilibrary.com/Publication/alDetailedMesh?DocID=P20110413001-200411-201104130017-201104130017-446-453",
"items": [
{
"itemType": "conferencePaper",
"title": "國小自然與生活科技教師參與輔導團研習活動之民俗誌研究",
"creators": [
{
"lastName": "曾",
"creatorType": "author",
"firstName": "國鴻"
},
{
"lastName": "賴",
"creatorType": "author",
"firstName": "秋露"
},
{
"lastName": "鍾",
"creatorType": "author",
"firstName": "季娟"
},
{
"lastName": "何",
"creatorType": "author",
"firstName": "妙桂"
},
{
"lastName": "廖",
"creatorType": "author",
"firstName": "文榮"
}
],
"date": "2004-01",
"DOI": "10.29495/CITE.200411.0446",
"abstractNote": "本研究針對九年一貫輔導團規劃之「國小自然與生活科技領域研習」進行探究,目的是探討教師參與輔導團研習活動的意願及其影響因素,並瞭解輔導團研習活動對自然與生活科技教師教學能力之影響,最後根據研究結果提供輔導團作爲規劃研習活動之參考。本研究採俗民誌研究法,研究者先進入研習現場參與觀察,再以六位自然與生活科技領域相關教師爲對象,進行焦點團體訪談,最後輔以相關資料文件做分析,研究結果發現:充實知識是參與研習意願的動力來源、研習的時間爲教師決定是否參與研習的重要因素、家庭狀況與研習地點的安排影響教師是否參與研習的決定、研習的方式應考量研習的目的做不同形式的安排、研習教材內容會充實教師的專業知能、講師的授課方式讓研習教師對教學技巧自我反省。研習綜合歸納之研究結論如下:1.自然與生活科技教師參與輔導團研習活動的意願高。2.影響教師參與輔導團研習活動的意願之主要因素爲「研習時間」、「研習地點」、「家庭狀況」。3.輔導團研習活動在「教材內容」方面,對教師之影響爲充實知識與補充教學資料。4.輔導團之研習在「講師授課方式」方面,對教師在運用教具、教學方法與師生互動等層面有影響。The aim of the research is to examine teachers willing of participating in further study in Science and Technology field held by CEAG (Compulsory Education Advisory Group) and factors that influenced their participation. Also, the effects of further study to the teachers teaching abilities in teaching Science and Technology filed. Finally, giving the research results to CEAG as a reference for planning further study afterwards. This research adopt ethnographic approach that researcher goes to the scene of further study to observe, and then choose six teachers to have a group interview. Then compare with the relevant information to analyze. The result shows: Pursuing of great knowledge is the motivation of teachers to participate in further study; Time is the most influential factor that teacher determine whether to attend the further study; Family conditions and place affect their decisions to participate in further study; Way of further study should take the purpose of further study into consideration to have different arrangement; The content of the further study would enrich teachers’ teaching abilities; Teaching style of the lecturer would motivate self-examination in teachers' teaching techniques. In conclusion: 1. Most of teachers in Science and Technology field like to participate in further study. 2. The main reasons that affect teachers’ participation in further study are time, place and family condition. 3. In the aspect of teaching content, further study held by CEAG helps teachers by supplying relevant teaching materials. 4. In the aspect of teaching style of lecturer, further study held by CEAG helps teachers: to use teaching aids more effectively, an alternative thinking on their teaching methods, and improve interaction between teacher and student.",
"itemID": "AL:P20110413001-200411-201104130017-201104130017-446-453",
"language": "zh",
"libraryCatalog": "Airiti",
"pages": "446-453",
"proceedingsTitle": "科技教育課程改革與發展學術研討會論文集",
"publisher": "國立高雄師範大學",
"url": "https://www.airitilibrary.com/Publication/alDetailedMesh?DocID=P20110413001-200411-201104130017-201104130017-446-453",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Compulsory Education Advisory Group"
},
{
"tag": "ethnographic"
},
{
"tag": "science and life technology"
},
{
"tag": "solution-focused group counseling"
},
{
"tag": "study"
},
{
"tag": "俗民誌"
},
{
"tag": "自然與生活科技"
},
{
"tag": "輔導團"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.airitilibrary.com/Publication/alDetailedMesh1?DocID=U0011-0406200711273000",
"items": [
{
"itemType": "thesis",
"title": "學童口腔保健行為與新齲齒發生之探討-10個月追蹤研究",
"creators": [
{
"lastName": "張",
"creatorType": "author",
"firstName": "雀鳳"
}
],
"date": "2007-01",
"abstractNote": "中文摘要 研究背景: 台灣國小學童高齲齒率在校園內儼然是學童健康的一大問題,以DMFT分析是與累積的危險因素有關,然而兒童在不同時期造成齲齒的危險因子應不全然相同;齲齒形成的複雜性和多成因的特質,評估齲齒的危險因子應以追蹤研究來加以分析,採追蹤研究(prospective follow-up study)可將當期新齲齒的發生與當時期那些影響因素作分析比較。 研究目的: 了解學童口腔健康狀況與口腔保健行為關係及影響新齲齒發生之相關因素。 研究方法: 本研究為追蹤研究(prospective follow-up study),研究對象以高雄縣某公立小學1至5年級學童為對象,每個年級3個班級,共完成問卷及口腔檢查人數為504人;經過10個月後之後測剔除未能全程參與或中途轉學者剩餘475人,其中男生261人、女生214人,後測完成率94.25%。 研究結果: 在10個月的追蹤研究發現DMFT index平均增加了0.35; DMFS index平均增加了0.45(p<.0001﹐p<.0001 ),恆牙填補率增加5.00(p=0.0450), DMFT index 在9歲時增加呈現高峰0.46,之後隨年齡的增加逐漸趨於平緩,整體而言達統計上的顯著性差異,性別方面發現女生比男生有較高的DMFT index及DMFS index,其齲齒狀況則隨年齡增加而遞增。在多變項迴歸分析調整過前測DMFT指數、性別、年級、父親教育程度、甜食習慣、潔牙時機與看牙醫的經驗等重要影響因素之後,發現父親教育程度與前後改變量的恆牙填補率有顯著性相關。而研究中也發現主要影響學童口腔健康來自於家庭因素。 討論及結論: 整體而言恆牙齲齒經驗指數男生優於女生,盛行率方面亦發現同樣的結果;在填補數上結果顯示女生的填補數則較男生高,研究發現學童的潔牙行為可有效減少齲齒的發生。餐後潔牙及攝取甜食後有潔牙行為其齲齒經驗指數較低,齲齒發生率亦較少 建議: 口腔保健是一個連續性、長遠性、必然性的推展工作,因此健康促進不只注重於健康及與健康有關的行為,也應該致力於健康及健康行為與環境之間的關係。Abstract Background: High caries prevalence is still a major problem for Taiwanese pupils. The phenomenon, analyzed by DMFT, was related to the accumulated risk factors. However, caries risk factors in different growing periods would be various. Prospective follow-up study was used to analyze the risk factors of caries owing to the complex of forming and the multi-origin characteristics. The researcher adopted prospective follow-up study to compare and analyze the new contemporaneous incidence of caries and the influence factors. Aim: The aim of this study was to evaluate the relationship among new oral incidence of caries, oral health behavior, and related factors. Methods: Prospective follow-up study was assumed in this study. Study participants were recruited from first grader to fifth grader of a primary school in Kaohsiung County .For each grade, 3 classes were randomly selected, questionnaired, and orally examined with finally a total of 504 subjects. After 10 months of following-up, students who couldn’t participate thoroughly or transferred to other schools during the study were excluded. A total of 475 subjects (male: 261; female:214) remained with the completion rate of 94.25% of the posttest. Result: The result showed an increase of 0.35 on mean DMFT index, 0.45 (p < .0001, p < .0001) on DMFS index, and 5.00 (p = 0.0450) on filling rate of permanent teeth in this 10-month prospective follow-up study. The increase of DMFT index reached the peak of 0.46 at the age of 9, and then gently steadied by the addition of age. Overall, a statistically significant difference showed in the study. On the aspect of gender, higher DMFT index and DMFS index were presented on girl students, whose caries status augmented when the age increased. After the adjustment of important influence factors the pretest of DMFT index, gender education, sweet habit, timing of cleaning teeth, and the dental clinic experience in the Multiple Regression Analysis, the researcher found a strong relation between father’s education and the filling rates of the caries of permanent teeth on pretest and posttest. Meanwhile, domestic factors were the key to influence oral health of school children. Discussion and Conclusion: The DMFT index of permanent teeth was higher on boys than on girls, same as the prevalence. The result of filling rate indicated girls’ filling rate was higher than boys’. The behavior of cleaning teeth on school children could effectively lessen the occurring of caries. Cleaning teeth after meal and after sweet lowered the DMFT index and the caries incidence. Suggestion: Oral health was an inevitable, long-term, and continual promotion job.Therefore, health promotion should focus not only on physical condition and health-related behaviors but also on the relationship among health, health-related behaviors, and environment.",
"extra": "DOI: 10.6832/KMU.2007.00008",
"itemID": "AL:U0011-0406200711273000",
"language": "zh",
"libraryCatalog": "Airiti",
"numPages": "1-167",
"thesisType": "Master's Thesis",
"university": "高雄醫學大學",
"url": "https://www.airitilibrary.com/Publication/alDetailedMesh1?DocID=U0011-0406200711273000",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Oral health"
},
{
"tag": "caries incidence"
},
{
"tag": "follow-up study"
},
{
"tag": "口腔保健"
},
{
"tag": "追蹤研究"
},
{
"tag": "齲齒發生率"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.airitilibrary.com/Publication/alDetailedMesh?DocID=10220690-201202-201202200002-201202200002-1-20",
"items": [
{
"itemType": "journalArticle",
"title": "The Study of Second Level of People Capability Maturity Model on the Industrial Control Industry in Taiwan",
"creators": [
{
"firstName": "Yin-Che",
"lastName": "Chen",
"creatorType": "author"
},
{
"firstName": "King-Ching",
"lastName": "Hsieh",
"creatorType": "author"
},
{
"firstName": "Mei-Tai",
"lastName": "Wu",
"creatorType": "author"
}
],
"date": "2012-02",
"DOI": "10.6220/joq.2012.19(1).01",
"ISSN": "1022-0690",
"abstractNote": "The People Capability Maturity Model (P-CMM) is an evolving channel for and a roadmap of organizational development and improvement. This model comprises five consecutive maturity levels: initial, managed, defined, predictable, and optimized. The unique characteristics of P-CMM lie in the standardization of processes guiding employees to perform their daily routines more efficiently. This was a field research project that used document analysis, observation, interviews, and analysis of researchers' field notes. By triangulating this data, researchers hoped to maintain a satisfactory level of reliability and validity for the model. Through on-site research into the industrial control industry, researchers endeavored to obtain some indication of the significance and potential application of this model. After evaluating each step of the current production process, researchers made necessary changes or appropriate adjustments based on the protocol set out in the second level of P-CMM to evaluate and diagnose the model.",
"issue": "1",
"itemID": "AL:10220690-201202-201202200002-201202200002-1-20",
"language": "zh",
"libraryCatalog": "Airiti",
"pages": "1-20",
"publicationTitle": "品質學報",
"url": "https://www.airitilibrary.com/Publication/alDetailedMesh?DocID=10220690-201202-201202200002-201202200002-1-20",
"volume": "19",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "field research"
},
{
"tag": "people capability maturity model"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.airitilibrary.com/Publication/alDetailedMesh?DocID=10213120-198905-28-1-377-382-a&PublishTypeID=P001",
"items": [
{
"itemType": "journalArticle",
"title": "Jones Dye Test與Fluorescein Dye Disappearance Test的再評估",
"creators": [
{
"firstName": "彥志",
"lastName": "陳",
"creatorType": "author"
},
{
"firstName": "啓祥",
"lastName": "高",
"creatorType": "author"
},
{
"firstName": "素玲",
"lastName": "林",
"creatorType": "author"
}
],
"date": "1989-05",
"DOI": "10.30048/ACTASOS.198905.0069",
"ISSN": "1021-3120",
"abstractNote": "對一般眼科門診時常遭遇到的主訴流淚的患者,應如何以簡便有效的方法測試?本篇收集無症狀的三十人(六十眼)施以Jones Dye Test與Fluorescein Dye Disappearance Test評量它們的可行性,正確性及彼此的關聯。Jones Ⅰ染料試驗的陽性率可達86.7%,然而Fluorescein Dye Disappearance Test的陽性率卻高達95.3%,前者有直接證據但是後者卻屬間接觀察,但兩者皆不失為評估排淚功能簡易而有效的方法。We Studied 30 randomly selected individuals without epiphora. Jones dye test and Fluorescein dye disappearance test (FDDT) were performed and evaluated. Among 60 eyes, only 1 eye (1.7%) was regarded as negative in FDDT while 8 eyes (13.3%) were negative in Jones Ⅰ dye test. However, none was negative in Jones Ⅱ test. We also concluded that Subjects whose Basal Secretion test values are over 10mm/5min have Statisticably higher positive rate in Jones Ⅰ test than those under l0min/5min. The Study suggests that Jones Ⅰ test remains the most important screening test for assessment of lacrimal excretion, however, FDDT can be given as an adjunct for its high sensitivity and rapid interpretation.",
"issue": "1",
"itemID": "AL:10213120-198905-28-1-377-382-a",
"language": "zh",
"libraryCatalog": "Airiti",
"pages": "377-382",
"publicationTitle": "中華民國眼科醫學會雜誌",
"url": "https://www.airitilibrary.com/Publication/alDetailedMesh?DocID=10213120-198905-28-1-377-382-a&PublishTypeID=P001",
"volume": "28",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Epiphora"
},
{
"tag": "Fluorescein Dye Disappearance Test"
},
{
"tag": "Jones Dye Test"
},
{
"tag": "Lacrimal Pump"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.airitilibrary.com/Publication/alDetailedMesh?docid=P20200813001-202112-202112200001-202112200001-473-478",
"items": [
{
"itemType": "journalArticle",
"title": "Thinking on the Construction of Model Party Branch in Colleges and Universities",
"creators": [
{
"firstName": "Bingxin",
"lastName": "Lan",
"creatorType": "author"
},
{
"firstName": "Huan",
"lastName": "Hu",
"creatorType": "author"
}
],
"date": "2021-12",
"DOI": "10.6981/FEM.202112_2(12).0063",
"ISSN": "2692-7608",
"abstractNote": "The Party branch is the Party's basic organization, the basic unit of the Party organization to carry out its work, the Party's fighting fortress in the basic social organizations, and the foundation of all the Party's work and combat effectiveness. Party building work is an effective way for schools to consolidate ideological and political work and an important starting point for carrying out ideological and political education. The construction of grass-roots Party branches is the top priority of the Party building work in colleges and universities, it is necessary to strengthen political guidance and enhance Party member education; strictly grasp standard procedures, do a good job in Party member management, strictly regulate Party discipline, strengthen Party member supervision, focus on central work, extensively organize teachers and students, choose advanced models, focus on propagation work; gather the joint efforts of teachers and students, promote collaborative education; strengthen the sense of purpose, connect and serve teachers and students, and solidly promote the creation of model Party branches, give full play to the leading and exemplary role, educate people for the Party and cultivate talents for the country.",
"issue": "12",
"itemID": "AL:P20200813001-202112-202112200001-202112200001-473-478",
"language": "zh",
"libraryCatalog": "Airiti",
"pages": "473-478",
"publicationTitle": "Frontiers in Economics and Management",
"url": "https://www.airitilibrary.com/Publication/alDetailedMesh?docid=P20200813001-202112-202112200001-202112200001-473-478",
"volume": "2",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Colleges and Universities"
},
{
"tag": "Model"
},
{
"tag": "Party Branch"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Justin Warren, Philipp Zumstein^https?://www\d?\.(austlii\.edu\.au|nzlii\.org)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2018 Justin Warren, Philipp Zumstein
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
var classes = attr(doc, 'body', 'class');
if (classes.includes('case')) {
return "case";
}
if (classes.includes('legislation')) {
return "statute";
}
if (classes.includes('journals')) {
return "journalArticle";
}
if (url.includes('nzlii.org/nz/cases/') && url.includes('.html')) {
return "case";
}
if (url.includes('austlii.edu.au/cgi-bin/sinodisp/au/cases/') && url.includes('.html')) {
return "case";
}
if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('#page-main ul>li>a');
for (let i = 0; i < rows.length; i++) {
let href = rows[i].href;
let title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (!href.includes('.html')) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
var type = detectWeb(doc, url);
if (type == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) {
return true;
}
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
return true;
}
);
}
else {
scrape(doc, url);
}
return false;
}
/*
* Convert full court names to standard abbreviations.
* If the name of the court is in the map, return the abbreviation
* else return the original full name (i.e. leave it unchanged)
* The Australian Guide to Legal Citation covers this in Rule 2.2.3
* legal Reports in Appendix A, but I've not been able to locate
* a copy with the appendix intact yet.
*/
var courtAbbrev = {
"Federal Court of Australia": "FCA",
"High Court of Australia": "HCA",
"Family Court of Australia": "FamCA",
"Australian Information Commissioner": "AICmr"
};
/*
* Adjust some jurisdiction abbreviations
*/
var jurisdictionAbbrev = {
"Commonwealth": "Cth",
"CTH": "Cth",
"Australian Capital Territory": "ACT",
"New South Wales": "NSW",
"Northern Territory": "NT",
"Queensland": "Qld",
"QLD": "Qld",
"South Australia": "SA",
"Tasmania": "Tas",
"TAS": "Tas",
"Victoria": "Vic",
"VIC": "Vic",
"Western Australia": "WA"
};
/*
* ZU.capitalizeTitle doesn't cope with Act Names (With Parenthetical Names) Acts
* so we give it a bit of help.
*/
function capitalizeWithPunctuation(string) {
const actNameDelimRegex = /( \(|\) )/;
var words = string.split(actNameDelimRegex);
var newString = "";
var lastWordIndex = words.length - 1;
for (var i = 0; i <= lastWordIndex; i++) {
if (actNameDelimRegex.test(words[i])) {
newString += words[i];
}
else {
newString += ZU.capitalizeTitle(words[i].toLowerCase(), true);
}
}
return newString;
}
/*
* AustLII includes the date on the end of all Acts
*/
function parseActName(nameOfAct) {
// Split at the last space before the year
const parsed = nameOfAct.split(/\s(\d{4})/);
// Zotero.debug(parsed);
let actName = parsed[0], actYear = parsed[1];
actName = capitalizeWithPunctuation(actName);
return { actName, actYear };
}
function scrape(doc, url) {
var type = detectWeb(doc, url);
var newItem = new Zotero.Item(type);
var full_jurisdiction = text(doc, 'li.ribbon-jurisdiction>a>span');
var jurisdiction = jurisdictionAbbrev[full_jurisdiction] || full_jurisdiction;
if (jurisdiction) {
newItem.code = jurisdiction;
}
var citation = text(doc, 'li.ribbon-citation>a>span');
var voliss;
var m;
if (text(doc, '#ribbon')) {
if (type == "case") {
voliss = text(doc, 'head>title');
// e.g. C & M [2006] FamCA 212 (20 January 2006)
newItem.caseName = voliss.replace(/\s?\[.*$/, '');
newItem.title = newItem.caseName;
var lastParenthesis = voliss.match(/\(([^)]*)\)$/);
if (lastParenthesis) {
newItem.dateDecided = ZU.strToISO(lastParenthesis[1]);
}
else {
newItem.dateDecided = text(doc, 'li.ribbon-year>a>span');
}
var full_court = text(doc, 'li.ribbon-database>a>span');
newItem.court = courtAbbrev[full_court] || full_court;
if (citation) {
var lastNumber = citation.match(/(\d+)$/);
if (lastNumber) {
newItem.docketNumber = lastNumber[1];
}
}
}
if (type == "statute") {
// All AustLII Act titles end in the year the Act was passed
const actInfo = parseActName(citation);
newItem.nameOfAct = actInfo.actName;
newItem.dateEnacted = actInfo.actYear;
// section
newItem.section = text(doc, 'li.ribbon-subject>a>span');
if (newItem.section) newItem.section = newItem.section.replace(/^SECT /, '');
}
if (type == "journalArticle") {
var title = text(doc, 'title');
m = title.match(/(.*) --- "([^"]*)"/);
if (m) {
newItem.title = m[2];
var authors = m[1].split(';');
for (let i = 0; i < authors.length; i++) {
newItem.creators.push(ZU.cleanAuthor(authors[i], 'author', authors[i].includes(',')));
}
}
else {
newItem.title = title;
}
newItem.publicationTitle = text(doc, 'li.ribbon-database>a>span');
newItem.date = text(doc, 'li.ribbon-year>a>span');
}
}
else {
voliss = text(doc, 'head>title');
// e.g. C & M [2006] FamCA 212 (20 January 2006)
m = voliss.match(/^([^[]*)\[(\d+)\](.*)\(([^)]*)\)$/);
if (m) {
newItem.title = m[1];
newItem.dateDecided = ZU.strToISO(m[4]);
var courtNumber = m[3].trim().split(' ');
if (courtNumber.length >= 2) {
newItem.court = courtNumber[0];
newItem.docketNumber = courtNumber[1].replace(/[^\w]*$/, '');
}
}
else {
newItem.title = voliss;
}
}
newItem.url = url;
newItem.attachments = [{
document: doc,
title: "Snapshot",
mimeType: "text/html"
}];
newItem.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://www.austlii.edu.au/cgi-bin/viewdoc/au/cases/cth/FamCA/2006/212.html",
"items": [
{
"itemType": "case",
"caseName": "C & M",
"creators": [],
"dateDecided": "2006-01-20",
"code": "Cth",
"court": "FamCA",
"docketNumber": "212",
"url": "http://www.austlii.edu.au/cgi-bin/viewdoc/au/cases/cth/FamCA/2006/212.html",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.austlii.edu.au/cgi-bin/viewdoc/au/cases/cth/FCA/2010/1.html",
"items": [
{
"itemType": "case",
"caseName": "Yeo, in the matter of AES Services (Aust) Pty Ltd (ACN 111 306 543) (Administrators Appointed)",
"creators": [],
"dateDecided": "2010-01-05",
"code": "Cth",
"court": "FCA",
"docketNumber": "1",
"url": "http://www.austlii.edu.au/cgi-bin/viewdoc/au/cases/cth/FCA/2010/1.html",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.nzlii.org/nz/cases/NZSC/2008/1.html",
"items": [
{
"itemType": "case",
"caseName": "Bronwyn Estate Ltd and ors v Gareth Hoole and others",
"creators": [],
"dateDecided": "2008-02-08",
"court": "NZSC",
"docketNumber": "1",
"url": "http://www.nzlii.org/nz/cases/NZSC/2008/1.html",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.austlii.edu.au/cgi-bin/viewtoc/au/cases/act/ACTSC/2010/",
"items": "multiple"
},
{
"type": "web",
"url": "http://www.austlii.edu.au/cgi-bin/viewdoc/au/cases/cth/AICmr/2017/134.html",
"items": [
{
"itemType": "case",
"caseName": "'NM' and Department of Human Services (Freedom of information)",
"creators": [],
"dateDecided": "2017-12-08",
"code": "Cth",
"court": "AICmr",
"docketNumber": "134",
"url": "http://www.austlii.edu.au/cgi-bin/viewdoc/au/cases/cth/AICmr/2017/134.html",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.austlii.edu.au/cgi-bin/viewdoc/au/legis/cth/consol_act/foia1982222/s24ab.html",
"items": [
{
"itemType": "statute",
"nameOfAct": "Freedom of Information Act",
"creators": [],
"dateEnacted": "1982",
"code": "Cth",
"section": "24AB",
"url": "http://www.austlii.edu.au/cgi-bin/viewdoc/au/legis/cth/consol_act/foia1982222/s24ab.html",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.austlii.edu.au/cgi-bin/viewdb/au/legis/cth/consol_act/foia1982222/",
"items": [
{
"itemType": "statute",
"nameOfAct": "Freedom of Information Act",
"creators": [],
"dateEnacted": "1982",
"code": "Cth",
"url": "http://www.austlii.edu.au/cgi-bin/viewdb/au/legis/cth/consol_act/foia1982222/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.austlii.edu.au/cgi-bin/viewdb/au/legis/cth/consol_act/antsasta1999402/",
"items": [
{
"itemType": "statute",
"nameOfAct": "A New Tax System (Goods and Services Tax) Act",
"creators": [],
"dateEnacted": "1999",
"code": "Cth",
"url": "https://www.austlii.edu.au/cgi-bin/viewdb/au/legis/cth/consol_act/antsasta1999402/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.austlii.edu.au/cgi-bin/viewdb/au/legis/cth/consol_act/caca2010265/",
"items": [
{
"itemType": "statute",
"nameOfAct": "Competition and Consumer Act",
"creators": [],
"dateEnacted": "2010",
"code": "Cth",
"url": "https://www.austlii.edu.au/cgi-bin/viewdb/au/legis/cth/consol_act/caca2010265/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.austlii.edu.au/cgi-bin/viewdoc/au/journals/AdminRw//2010/9.html",
"items": [
{
"itemType": "journalArticle",
"title": "Statements of the Decision Maker's Actual Reasons",
"creators": [
{
"firstName": "Stephen",
"lastName": "Lloyd",
"creatorType": "author"
},
{
"firstName": "Donald",
"lastName": "Mitchell",
"creatorType": "author"
}
],
"date": "2010",
"libraryCatalog": "AustLII and NZLII",
"publicationTitle": "Administrative Review Council - Admin Review",
"url": "http://www.austlii.edu.au/cgi-bin/viewdoc/au/journals/AdminRw//2010/9.html",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.austlii.edu.au/cgi-bin/sinosrch.cgi?mask_path=;method=auto;query=adam%20smith;view=relevance&mask_path=au/cases/act/ACTCA",
"items": "multiple"
},
{
"type": "web",
"url": "http://www.austlii.edu.au/cgi-bin/sinodisp/au/cases/cth/AICmr/2017/20.html",
"items": [
{
"itemType": "case",
"caseName": "Cash World Gold Buyers Pty Ltd and Australian Taxation Office (Freedom of information)",
"creators": [],
"dateDecided": "2017-03-10",
"court": "AICmr",
"docketNumber": "20",
"url": "http://www8.austlii.edu.au/cgi-bin/viewdoc/au/cases/cth/AICmr/2017/20.html",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.austlii.edu.au/cgi-bin/viewdb/au/legis/qld/consol_act/pla1974179/",
"items": [
{
"itemType": "statute",
"nameOfAct": "Property Law Act",
"creators": [],
"dateEnacted": "1974",
"code": "Qld",
"url": "https://www.austlii.edu.au/cgi-bin/viewdb/au/legis/qld/consol_act/pla1974179/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.austlii.edu.au/cgi-bin/viewdb/au/legis/vic/consol_act/ca195882/",
"items": [
{
"itemType": "statute",
"nameOfAct": "Crimes Act",
"creators": [],
"dateEnacted": "1958",
"code": "Vic",
"url": "https://www.austlii.edu.au/cgi-bin/viewdb/au/legis/vic/consol_act/ca195882/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.austlii.edu.au/cgi-bin/viewdb/au/legis/nsw/consol_act/leara2002451/",
"items": [
{
"itemType": "statute",
"nameOfAct": "Law Enforcement (Powers and Responsibilities) Act",
"creators": [],
"dateEnacted": "2002",
"code": "NSW",
"url": "https://www.austlii.edu.au/cgi-bin/viewdb/au/legis/nsw/consol_act/leara2002451/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Simon Kornblith, Sebastian Karcher^https?://(mathscinet\.)?ams\.[^/]*/(mathscinet/2006/)?mathscinet(\-getitem\?|/search/(publications\.html|publdoc\.html))/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2015-2023 Simon Kornblith & Sebastian Karcher
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, _url) {
var itemType;
if (getSearchResults(doc, true)) {
return "multiple";
}
else if (ZU.xpathText(doc, '//div[@class="headlineMenu"]/*[last()-1]')) {
itemType = ZU.xpathText(doc, '//div[@class="headlineMenu"]/*[last()-1]');
switch (itemType.trim().toLowerCase()) {
case 'article':
return "journalArticle";
case 'book':
return "book";
case 'chapter':
return "bookSection";
}
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = ZU.xpath(doc, '//div[@class="headlineText"]');
for (var i = 0; i < rows.length; i++) {
var href = ZU.xpathText(rows[i], './a[@class="mrnum"]/@href');
var title = ZU.xpathText(rows[i], './span[@class="title"]');
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
async function doWeb(doc, url) {
if (detectWeb(doc, url) == 'multiple') {
let items = await Zotero.selectItems(getSearchResults(doc, false));
if (!items) return;
for (let url of Object.keys(items)) {
await scrape(await requestDocument(url));
}
}
else {
await scrape(doc, url);
}
}
async function scrape(doc, url = doc.location.href) {
var host = url.match(/^(.+)\/mathscinet/);
var pub = host[0] + "/search/publications.html?fmt=bibtex";
var MR = ZU.xpathText(doc, '//div[@id="content"]/div[@class="doc"]/div[@class="headline"]/strong[1]');
pub += "&pg1=MR&s1=" + MR.replace(/^MR0*/, "");
let text = await requestText(pub);
var preRE = /<pre>\s*([\s\S]*?)\s*<\/pre>/g;
var bibTeXString = "";
var m;
//eslint-disable-next-line no-cond-assign
while (m = preRE.exec(text)) {
bibTeXString += m[1] + '\n';
}
// import using BibTeX
let translator = Zotero.loadTranslator("import");
translator.setTranslator("9cb70025-a888-4a29-a210-93ec52da40d4");
translator.setString(bibTeXString);
translator.setHandler("itemDone", function (obj, item) {
// Fix/fetch MR number
var mrnumber;
if (item.extra) {
item.extra = item.extra.replace(/^MR:\s*(?:MR)?(\d+).*/gm,
function (m, mr) {
mrnumber = mr;
return 'MR: ' + mr;
});
}
if (mrnumber) {
url = 'https://mathscinet.ams.org/mathscinet-getitem?mr=' + mrnumber;
}
item.attachments.push({ title: "MathSciNet Snapshot", document: doc });
item.url = url;
item.complete();
});
await translator.translate();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://mathscinet.ams.org/mathscinet/search/publications.html?pg4=AUCN&s4=Karcher&co4=AND&pg5=TI&s5=&co5=AND&pg6=PC&s6=&co6=AND&pg7=ALLF&s7=&co7=AND&Submit=Search&dr=all&yrop=eq&arg3=&yearRangeFirst=&yearRangeSecond=&pg8=ET&s8=All&review_format=html",
"items": "multiple"
},
{
"type": "web",
"url": "https://mathscinet.ams.org/mathscinet/2006/mathscinet/search/publdoc.html?arg3=&co4=AND&co5=AND&co6=AND&co7=AND&dr=all&pg4=MR&pg5=TI&pg6=PC&pg7=ALLF&pg8=ET&r=1&review_format=html&s4=3004573",
"items": [
{
"itemType": "journalArticle",
"title": "Extrapolation of stable random fields",
"creators": [
{
"firstName": "Wolfgang",
"lastName": "Karcher",
"creatorType": "author"
},
{
"firstName": "Elena",
"lastName": "Shmileva",
"creatorType": "author"
},
{
"firstName": "Evgeny",
"lastName": "Spodarev",
"creatorType": "author"
}
],
"date": "2013",
"DOI": "10.1016/j.jmva.2012.11.004",
"ISSN": "0047-259X",
"extra": "MR: 3004573",
"itemID": "MR3004573",
"journalAbbreviation": "J. Multivariate Anal.",
"libraryCatalog": "AMS MathSciNet (Legacy)",
"pages": "516–536",
"publicationTitle": "Journal of Multivariate Analysis",
"url": "https://mathscinet.ams.org/mathscinet-getitem?mr=3004573",
"volume": "115",
"attachments": [
{
"title": "MathSciNet Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://mathscinet.ams.org/mathscinet/search/publications.html?pg1=ISSI&s1=308850",
"items": "multiple"
},
{
"type": "web",
"url": "https://mathscinet.ams.org/mathscinet/2006/mathscinet/search/publdoc.html?arg3=&co4=AND&co5=AND&co6=AND&co7=AND&dr=all&pg4=MR&pg5=TI&pg6=PC&pg7=ALLF&pg8=ET&r=1&review_format=html&s4=2767535",
"items": [
{
"itemType": "bookSection",
"title": "On implementation of the Markov chain Monte Carlo stochastic approximation algorithm",
"creators": [
{
"firstName": "Yihua",
"lastName": "Jiang",
"creatorType": "author"
},
{
"firstName": "Peter",
"lastName": "Karcher",
"creatorType": "author"
},
{
"firstName": "Yuedong",
"lastName": "Wang",
"creatorType": "author"
}
],
"date": "2011",
"bookTitle": "Advances in directional and linear statistics",
"extra": "MR: 2767535\nDOI: 10.1007/978-3-7908-2628-9_7",
"itemID": "MR2767535",
"libraryCatalog": "AMS MathSciNet (Legacy)",
"pages": "97–111",
"publisher": "Physica-Verlag/Springer, Heidelberg",
"url": "https://mathscinet.ams.org/mathscinet-getitem?mr=2767535",
"attachments": [
{
"title": "MathSciNet Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://mathscinet.ams.org/mathscinet/2006/mathscinet/search/publdoc.html?arg3=&co4=AND&co5=AND&co6=AND&co7=AND&dr=all&pg4=MR&pg5=TI&pg6=PC&pg7=ALLF&pg8=ET&r=1&review_format=html&s4=2663710",
"items": [
{
"itemType": "book",
"title": "Advances in directional and linear statistics",
"creators": [
{
"firstName": "Martin T.",
"lastName": "Wells",
"creatorType": "editor"
},
{
"firstName": "Ashis",
"lastName": "SenGupta",
"creatorType": "editor"
}
],
"date": "2011",
"ISBN": "9783790826272",
"extra": "MR: 2663710\nDOI: 10.1007/978-3-7908-2628-9",
"itemID": "MR2663710",
"libraryCatalog": "AMS MathSciNet (Legacy)",
"numPages": "xiv+321",
"publisher": "Physica-Verlag/Springer, Heidelberg",
"url": "https://mathscinet.ams.org/mathscinet-getitem?mr=2663710",
"attachments": [
{
"title": "MathSciNet Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [
{
"note": "<p>A Festschrift for Sreenivasa Rao Jammalamadaka</p>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://mathscinet.ams.org/mathscinet-getitem?mr=1346201",
"items": [
{
"itemType": "journalArticle",
"title": "Sommation des séries divergentes",
"creators": [
{
"firstName": "Bernard",
"lastName": "Malgrange",
"creatorType": "author"
}
],
"date": "1995",
"ISSN": "0723-0869",
"extra": "MR: 1346201",
"issue": "2-3",
"itemID": "MR1346201",
"journalAbbreviation": "Exposition. Math.",
"libraryCatalog": "AMS MathSciNet",
"pages": "163–222",
"publicationTitle": "Expositiones Mathematicae. International Journal",
"url": "https://mathscinet.ams.org/mathscinet-getitem?mr=1346201",
"volume": "13",
"attachments": [
{
"title": "MathSciNet Snapshot"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Sebastian Karcher^https?://mathscinet\.ams\.[^/]*/mathscinet/(article\?|publications-search\?|author\?)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2023 Sebastian Karcher
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (getSearchResults(doc, true)) {
return "multiple";
}
else if (url.includes("article?mr=")) {
if (doc.querySelector('div[data-testid="ap-book-isbn"]')) {
if (doc.querySelector('div[data-testid="ap-book-collection"] a.router-link-active')) return "bookSection";
else return "book";
}
else return "journalArticle";
}
else return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.results div.font-weight-bold');
for (let row of rows) {
let href = attr(row, 'a', 'href');
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
async function doWeb(doc, url) {
if (detectWeb(doc, url) == 'multiple') {
let items = await Zotero.selectItems(getSearchResults(doc, false));
if (!items) return;
for (let url of Object.keys(items)) {
await scrape(await requestDocument(url));
}
}
else {
await scrape(doc, url);
}
}
async function scrape(doc, url = doc.location.href) {
let id = url.match(/\?mr=(\d+)/);
if (!id) {
throw new Error("No MR ID, can't proceed");
}
let bibJSONUrl = '/mathscinet/api/publications/format?formats=bib&ids=' + id[1];
// Z.debug(bibJSONUrl)
let bibJSON = await requestText(bibJSONUrl);
// Z.debug(bibJSON)
bibJSON = JSON.parse(bibJSON);
let bibTex = bibJSON[0].bib;
// Z.debug(bibTex)
let translator = Zotero.loadTranslator("import");
translator.setTranslator('9cb70025-a888-4a29-a210-93ec52da40d4');
translator.setString(bibTex);
translator.setHandler('itemDone', (_obj, item) => {
item.url = ""; // these aren't full text URLs
item.attachments.push({
title: 'Snapshot',
document: doc
});
item.complete();
});
await translator.translate();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://mathscinet.ams.org/mathscinet/article?mr=3004573",
"items": [
{
"itemType": "journalArticle",
"title": "Extrapolation of stable random fields",
"creators": [
{
"firstName": "Wolfgang",
"lastName": "Karcher",
"creatorType": "author"
},
{
"firstName": "Elena",
"lastName": "Shmileva",
"creatorType": "author"
},
{
"firstName": "Evgeny",
"lastName": "Spodarev",
"creatorType": "author"
}
],
"date": "2013",
"DOI": "10.1016/j.jmva.2012.11.004",
"ISSN": "0047-259X,1095-7243",
"extra": "MR: 3004573",
"itemID": "MR3004573",
"journalAbbreviation": "J. Multivariate Anal.",
"libraryCatalog": "AMS MathSciNet",
"pages": "516–536",
"publicationTitle": "Journal of Multivariate Analysis",
"volume": "115",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://mathscinet.ams.org/mathscinet/article?mr=2767535",
"items": [
{
"itemType": "bookSection",
"title": "On implementation of the Markov chain Monte Carlo stochastic approximation algorithm",
"creators": [
{
"firstName": "Yihua",
"lastName": "Jiang",
"creatorType": "author"
},
{
"firstName": "Peter",
"lastName": "Karcher",
"creatorType": "author"
},
{
"firstName": "Yuedong",
"lastName": "Wang",
"creatorType": "author"
}
],
"date": "2011",
"ISBN": "9783790826272",
"bookTitle": "Advances in directional and linear statistics",
"extra": "MR: 2767535\nDOI: 10.1007/978-3-7908-2628-9_7",
"itemID": "MR2767535",
"libraryCatalog": "AMS MathSciNet",
"pages": "97–111",
"publisher": "Physica-Verlag/Springer, Heidelberg",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://mathscinet.ams.org/mathscinet/article?mr=2663710",
"items": [
{
"itemType": "book",
"title": "Advances in directional and linear statistics",
"creators": [
{
"firstName": "Martin T.",
"lastName": "Wells",
"creatorType": "editor"
},
{
"firstName": "Ashis",
"lastName": "SenGupta",
"creatorType": "editor"
}
],
"date": "2011",
"ISBN": "9783790826272",
"extra": "MR: 2663710\nDOI: 10.1007/978-3-7908-2628-9",
"itemID": "MR2663710",
"libraryCatalog": "AMS MathSciNet",
"numPages": "xiv+321",
"publisher": "Physica-Verlag/Springer, Heidelberg",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [
{
"note": "<p>A Festschrift for Sreenivasa Rao Jammalamadaka</p>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://mathscinet.ams.org/mathscinet/article?mr=1346201",
"items": [
{
"itemType": "journalArticle",
"title": "Sommation des séries divergentes",
"creators": [
{
"firstName": "Bernard",
"lastName": "Malgrange",
"creatorType": "author"
}
],
"date": "1995",
"ISSN": "0723-0869",
"extra": "MR: 1346201",
"issue": "2-3",
"itemID": "MR1346201",
"journalAbbreviation": "Exposition. Math.",
"libraryCatalog": "AMS MathSciNet",
"pages": "163–222",
"publicationTitle": "Expositiones Mathematicae. International Journal",
"volume": "13",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://mathscinet.ams.org/mathscinet/publications-search?query=karcher&page=1&size=20&sort=newest&facets=",
"items": "multiple"
},
{
"type": "web",
"url": "https://mathscinet.ams.org/mathscinet/author?authorId=98350",
"items": "multiple"
}
]
/** END TEST CASES **/
{"async":true,"getCollections":"true"}{"exportCharset":"UTF-8","exportNotes":true,"exportFileData":false}100Simon Kornblith and Aurimas Vinckeviciusris/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2006-2023 Simon Kornblith, Aurimas Vinckevicus, Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectImport() {
var line;
var i = 0;
while ((line = Zotero.read()) !== false) {
line = line.replace(/^\s+/, "");
if (line != "") {
if (line.substr(0, 6).match(/^TY {1,2}- /)) {
return true;
}
else if (i++ > 3) {
return false;
}
}
}
return false;
}
/********************
* Exported options *
********************/
//exported as translatorObject.options
var exportedOptions = {
itemType: false, //allows translators to override item type
defaultItemType: false, //item type to default to
typeMap: false,
fieldMap: false
};
/************************
* TY <-> itemType maps *
************************/
var DEFAULT_EXPORT_TYPE = 'GEN';
var DEFAULT_IMPORT_TYPE = 'journalArticle';
var exportTypeMap = {
artwork: "ART",
audioRecording: "SOUND", //consider MUSIC
bill: "BILL",
blogPost: "BLOG",
book: "BOOK",
bookSection: "CHAP",
case: "CASE",
computerProgram: "COMP",
conferencePaper: "CONF",
dictionaryEntry: "DICT",
encyclopediaArticle: "ENCYC",
email: "ICOMM",
dataset: "DATA",
film: "MPCT",
hearing: "HEAR",
journalArticle: "JOUR",
letter: "PCOMM",
magazineArticle: "MGZN",
manuscript: "MANSCPT",
map: "MAP",
newspaperArticle: "NEWS",
patent: "PAT",
presentation: "SLIDE",
report: "RPRT",
statute: "STAT",
thesis: "THES",
videoRecording: "VIDEO",
webpage: "ELEC"
};
//These export type maps are degenerate
//They will cause loss of information when exported and reimported
//These should either be duplicates of some of the RIS types above
// or be different from the importTypeMap mappings
var degenerateExportTypeMap = {
interview: "PCOMM",
instantMessage: "ICOMM",
forumPost: "ICOMM",
tvBroadcast: "MPCT",
radioBroadcast: "SOUND",
podcast: "SOUND",
document: "GEN" //imported as journalArticle
};
//These are degenerate types that are not exported as the same TY value
//These should not include any types from exportTypeMap
//We add the rest from exportTypeMap
var importTypeMap = {
ABST: "journalArticle",
ADVS: "film",
AGGR: "document", //how can we handle "database" citations?
ANCIENT: "document",
CHART: "artwork",
CLSWK: "book",
CPAPER: "conferencePaper",
CTLG: "magazineArticle",
DBASE: "dataset", //database
EBOOK: "book",
ECHAP: "bookSection",
EDBOOK: "book",
EJOUR: "journalArticle",
EQUA: "document", //what's a good way to handle this?
FIGURE: "artwork",
GEN: "journalArticle",
GOVDOC: "report",
GRNT: "document",
INPR: "manuscript",
JFULL: "journalArticle",
LEGAL: "case", //is this what they mean?
MULTI: "videoRecording", //maybe?
MUSIC: "audioRecording",
PAMP: "manuscript",
SER: "book",
STAND: "report",
UNBILL: "manuscript",
UNPD: "manuscript",
WEB: "webpage" //not in spec, but used by EndNote
};
//supplement input map with export
var ty;
for (ty in exportTypeMap) {
importTypeMap[exportTypeMap[ty]] = ty;
}
// for Zotero clients <6.0.24: set dataset back to document
if (!ZU.fieldIsValidForType('title', 'dataset')) {
delete importTypeMap.DATA;
delete importTypeMap.DBASE;
importTypeMap.DBASE = 'document';
importTypeMap.DATA = 'document';
}
//merge degenerate export type map into main list
for (ty in degenerateExportTypeMap) {
exportTypeMap[ty] = degenerateExportTypeMap[ty];
}
/*****************************
* Tag <-> zotero field maps *
*****************************/
/** Syntax
* {
* RIS-TAG:
* String, Zotero field used for any item type
* List, item-type dependent mapping
* {
* Zotero field: Zotero item type array. Map RIS tag to the specified Zotero field for indicated item types
* "__ignore": Zotero item type array. Ignore this RIS tag for indicated item types. Do not place it in a note
* "__default": Zotero field. If not matched by above, map RIS tag to this field, unless...
* "__exclude": Zotero item type array. Do not use the __default mapping for these item types
* }
* }
*
* Special "Zotero fields"
* "attachments/[PDF|HTML|other]": import as attachment with a provided path/url
* "creators/...": map to a specified creator type
* "unsupported/...": there is no corresponding Zotero field, but we can provide a human-readable label for the data and attach it as note
*/
//used for exporting and importing
//this ensures that we can mostly reimport everything the same way
//(except for item types that do not have unique RIS types, see above)
var fieldMap = {
//same for all itemTypes
AB: "abstractNote",
AN: "archiveLocation",
CN: "callNumber",
DB: "archive",
DO: "DOI",
DP: "libraryCatalog",
J2: "journalAbbreviation",
KW: "tags",
L1: "attachments/PDF",
L2: "attachments/HTML",
L4: "attachments/other",
N1: "notes",
ST: "shortTitle",
UR: "url",
Y2: "accessDate",
//type specific
//tag => field:itemTypes
//if itemType not explicitly given, __default field is used
// unless itemType is excluded in __exclude
TI: {
__default: "title",
subject: ["email"],
caseName: ["case"],
nameOfAct: ["statute"]
},
T2: {
code: ["bill", "statute"],
bookTitle: ["bookSection"],
blogTitle: ["blogPost"],
conferenceName: ["conferencePaper"],
dictionaryTitle: ["dictionaryEntry"],
encyclopediaTitle: ["encyclopediaArticle"],
committee: ["hearing"],
forumTitle: ["forumPost"],
websiteTitle: ["webpage"],
programTitle: ["radioBroadcast", "tvBroadcast"],
meetingName: ["presentation"],
seriesTitle: ["computerProgram", "map", "report"],
series: ["book"],
publicationTitle: ["journalArticle", "magazineArticle", "newspaperArticle"]
},
T3: {
legislativeBody: ["hearing", "bill"],
series: ["bookSection", "conferencePaper", "journalArticle"],
seriesTitle: ["audioRecording"]
},
//NOT HANDLED: reviewedAuthor, scriptwriter, contributor, guest
AU: {
__default: "creators/author",
"creators/artist": ["artwork"],
"creators/cartographer": ["map"],
"creators/composer": ["audioRecording"],
"creators/director": ["film", "radioBroadcast", "tvBroadcast", "videoRecording"], //this clashes with audioRecording
"creators/interviewee": ["interview"],
"creators/inventor": ["patent"],
"creators/podcaster": ["podcast"],
"creators/programmer": ["computerProgram"]
},
A1: {
__default: "creators/author",
"creators/artist": ["artwork"],
"creators/cartographer": ["map"],
"creators/composer": ["audioRecording"],
"creators/director": ["film", "radioBroadcast", "tvBroadcast", "videoRecording"], //this clashes with audioRecording
"creators/interviewee": ["interview"],
"creators/inventor": ["patent"],
"creators/podcaster": ["podcast"],
"creators/programmer": ["computerProgram"]
},
A2: {
"creators/sponsor": ["bill"],
"creators/performer": ["audioRecording"],
"creators/presenter": ["presentation"],
"creators/interviewer": ["interview"],
"creators/editor": ["journalArticle", "bookSection", "conferencePaper", "dictionaryEntry", "document", "encyclopediaArticle"],
"creators/seriesEditor": ["book", "report"],
"creators/recipient": ["email", "instantMessage", "letter"],
reporter: ["case"],
issuingAuthority: ["patent"]
},
A3: {
"creators/contributor": ["thesis"],
"creators/cosponsor": ["bill"],
"creators/producer": ["film", "tvBroadcast", "videoRecording", "radioBroadcast"],
"creators/editor": ["book"],
"creators/seriesEditor": ["bookSection", "conferencePaper", "dictionaryEntry", "encyclopediaArticle", "map"]
},
A4: {
__default: "creators/translator",
"creators/counsel": ["case"],
"creators/contributor": ["conferencePaper", "film", "dataset"] //translator does not fit these
},
C1: {
filingDate: ["patent"], //not in spec
"creators/castMember": ["radioBroadcast", "tvBroadcast", "videoRecording"],
scale: ["map"],
place: ["conferencePaper"]
},
C2: {
issueDate: ["patent"], //not in spec
"creators/bookAuthor": ["bookSection"],
"creators/commenter": ["blogPost"]
},
C3: {
artworkSize: ["artwork"],
proceedingsTitle: ["conferencePaper"],
country: ["patent"]
},
C4: {
"creators/wordsBy": ["audioRecording"], //not in spec
"creators/attorneyAgent": ["patent"],
genre: ["film"]
},
C5: {
references: ["patent"],
audioRecordingFormat: ["audioRecording", "radioBroadcast"],
videoRecordingFormat: ["film", "tvBroadcast", "videoRecording"]
},
C6: {
legalStatus: ["patent"],
},
CY: {
__default: "place",
repositoryLocation: ["dataset"],
__exclude: ["conferencePaper"] //should be exported as C1
},
DA: { //also see PY when editing
__default: "date",
dateEnacted: ["statute"],
dateDecided: ["case"],
issueDate: ["patent"]
},
ET: {
__default: "edition",
// "__ignore":["journalArticle"], //EPubDate
session: ["bill", "hearing", "statute"],
versionNumber: ["computerProgram", "dataset"]
},
IS: {
__default: "issue",
numberOfVolumes: ["bookSection"],
__exclude: ["dataset"] //IS
},
LA: {
__default: "language",
programmingLanguage: ["computerProgram"]
},
M1: {
seriesNumber: ["book"],
billNumber: ["bill"],
system: ["computerProgram"],
documentNumber: ["hearing"],
applicationNumber: ["patent"],
publicLawNumber: ["statute"],
episodeNumber: ["podcast", "radioBroadcast", "tvBroadcast"]
},
M3: {
manuscriptType: ["manuscript"],
mapType: ["map"],
reportType: ["report"],
thesisType: ["thesis"],
websiteType: ["blogPost", "webpage"],
postType: ["forumPost"],
letterType: ["letter"],
interviewMedium: ["interview"],
presentationType: ["presentation"],
artworkMedium: ["artwork"],
audioFileType: ["podcast"]
},
NV: {
__default: "numberOfVolumes",
identifier: ["dataset"],
__exclude: ["bookSection"] //IS
},
OP: {
history: ["hearing", "statute", "bill", "case"],
priorityNumbers: ["patent"]
},
PB: {
__default: "publisher",
label: ["audioRecording"],
court: ["case"],
distributor: ["film"],
assignee: ["patent"],
institution: ["report"],
repository: ["dataset"],
university: ["thesis"],
company: ["computerProgram"],
studio: ["videoRecording"],
network: ["radioBroadcast", "tvBroadcast"]
},
PY: { //duplicate of DA, but this will only output year
__default: "date",
dateEnacted: ["statute"],
dateDecided: ["case"],
issueDate: ["patent"]
},
SE: {
__default: "section", //though this can refer to pages, start page, etc. for some types. Zotero does not support any of those combinations, however.
__exclude: ["case"]
},
SN: {
__default: "ISBN",
ISSN: ["journalArticle", "magazineArticle", "newspaperArticle"],
patentNumber: ["patent"],
reportNumber: ["report"],
},
SP: {
__default: "pages", //needs extra processing
codePages: ["bill"], //bill
numPages: ["book", "thesis", "manuscript"], //manuscript not really in spec
firstPage: ["case"],
runningTime: ["film"]
},
SV: {
seriesNumber: ["bookSection"],
docketNumber: ["case"] //not in spec. EndNote exports this way
},
VL: {
__default: "volume",
codeNumber: ["statute"],
codeVolume: ["bill"],
reporterVolume: ["case"],
__exclude: ["patent", "webpage"]
}
};
//non-standard or degenerate field maps
//used ONLY for importing and only if these fields are not specified above (e.g. M3)
//these are not exported the same way
var degenerateImportFieldMap = {
AD: {
__default: "unsupported/Author Address",
"unsupported/Inventor Address": ["patent"]
},
AV: "archiveLocation", //REFMAN
BT: {
title: ["book", "manuscript"],
bookTitle: ["bookSection"],
__default: "backupPublicationTitle" //we do more filtering on this later
},
CA: "unsupported/Caption",
CR: "rights",
CT: "title",
CY: "place", // ProCite and Springer are using CY instead of C1 also for conferencePapers
ED: "creators/editor",
EP: "pages",
H1: "unsupported/Library Catalog", //Citavi specific (possibly multiple occurences)
H2: "unsupported/Call Number", //Citavi specific (possibly multiple occurences)
ID: "__ignore",
IS: {
versionNumber: ["dataset"]
},
JA: "journalAbbreviation",
JF: "publicationTitle",
JO: {
__default: "journalAbbreviation",
conferenceName: ["conferencePaper"]
},
LB: "unsupported/Label",
M1: {
__default: "extra",
issue: ["journalArticle"], //EndNote hack
numberOfVolumes: ["bookSection"], //EndNote exports here instead of IS
accessDate: ["webpage"] //this is access date when coming from EndNote
},
M2: "extra", //not in spec
M3: "DOI",
N2: "abstractNote",
NV: "numberOfVolumes",
OP: {
__default: "unsupported/Original Publication",
"unsupported/Content": ["blogPost", "computerProgram", "film", "presentation", "report", "videoRecording", "webpage"]
},
RI: {
__default: "unsupported/Reviewed Item",
"unsupported/Article Number": ["statute"]
},
RN: "notes",
SE: {
"unsupported/File Date": ["case"]
},
T1: fieldMap.TI,
T2: "backupPublicationTitle", //most item types should be covered above
T3: {
series: ["book"]
},
TA: "unsupported/Translated Author",
TT: "unsupported/Translated Title",
VL: {
"unsupported/Patent Version Number": ['patent'],
accessDate: ["webpage"] //technically access year according to EndNote
},
Y1: fieldMap.DA // Old RIS spec
};
/**
* @class Generic tag mapping with caching
*
* @param {Tag <-> zotero field map []} mapList An array of field map lists as
* described above. Lists are matched in order they are supplied. If a tag is
* not present in the list, the next list is checked. If the RIS tag is
* present, but an item type does not match (no __default) or is explicit
* excluded from matching (__exclude), the next list is checked.
* The `deprecatedMap` should be a subset of the maps in this list.
* @param {Tag <-> zotero field map} deprecatedMap A map, in the same format as
* the entries in the `mapList`, containing deprecated tags that should only
* be used if no other tag maps to the same Zotero item field.
*/
var TagMapper = function (mapList, deprecatedMap) {
this.cache = {};
this.reverseCache = {};
this.mapList = mapList;
this.deprecatedMap = deprecatedMap;
};
TagMapper.prototype.isDeprecated = function (tag) {
return this.deprecatedMap.hasOwnProperty(tag);
};
/**
* Given an item type and a RIS tag, return Zotero field data should be mapped to.
* Mappings are cached.
*
* @param {String} itemType Zotero item type
* @param {String} tag RIS tag
* @return {String} Zotero field
*/
TagMapper.prototype.getField = function (itemType, tag) {
if (!this.cache[itemType]) this.cache[itemType] = {};
//retrieve from cache if available
//it can be false if previous search did not find a mapping
if (this.cache[itemType][tag] !== undefined) {
return this.cache[itemType][tag];
}
var field = false;
for (let i = 0, n = this.mapList.length; i < n; i++) {
var map = this.mapList[i];
if (typeof (map[tag]) == 'object') {
var def, exclude = false;
for (var f in map[tag]) {
//__ignore is not handled here. It's returned as a Zotero field so it
//can be explicitly excluded from the note attachment
if (f == "__default") {
//store default mapping in case we can't find anything explicit
def = map[tag][f];
continue;
}
if (f == "__exclude") {
if (map[tag][f].includes(itemType)) {
exclude = true; //don't break. Let explicit mapping override this
}
continue;
}
if (map[tag][f].includes(itemType)) {
field = f;
break;
}
}
//assign default value if not excluded
if (!field && def && !exclude) field = def;
}
else if (typeof (map[tag]) == 'string') {
field = map[tag];
}
if (field) break; //no need to go on
}
this.cache[itemType][tag] = field;
return field;
};
/**
* Given a Zotero item type and field, return a RIS tag.
* Mappings are cached.
* Not used for export, but for ProCite tag re-mapping
*
* @param {String} itemType Zotero item type
* @param {String} zField Zotero field
* @return {String} RIS tag
*/
TagMapper.prototype.reverseLookup = function (itemType, zField) {
if (!this.reverseCache[itemType]) this.reverseCache[itemType] = {};
if (this.reverseCache[itemType][zField] !== undefined) {
return this.reverseCache[itemType][zField];
}
for (let i = 0, n = this.mapList.length; i < n; i++) {
var risTag;
for (risTag in this.mapList[i]) {
var typeMap = this.mapList[i][risTag];
if (typeMap == zField) {
// item type indepndent
this.reverseCache[itemType][zField] = risTag;
return risTag;
}
else if (typeof (typeMap) == 'object') {
if (typeMap[zField] && typeMap[zField].includes(itemType)) {
//explicitly mapped
this.reverseCache[itemType][zField] = risTag;
return risTag;
}
if (!(typeMap.__exclude && typeMap.__exclude.includes(itemType))
&& typeMap.__default == zField
) {
// may be mapped via default, but make sure this item type is not
// explicitly mapped somewhere else
var preventDefault = false;
for (var field in typeMap) {
if (typeMap[field].includes(itemType)) {
// mapped to something else
preventDefault = true;
break;
}
}
if (!preventDefault) {
this.reverseCache[itemType][zField] = risTag;
return risTag;
}
}
}
}
}
this.reverseCache[itemType][zField] = false;
return false;
};
/********************
* Import Functions *
********************/
//import field mapping
var importFields;
//do not store unknwon fields in notes
//configurable via RIS.import.ignoreUnknown hidden preference
var ignoreUnknown = true;
/**
* @singleton Provides facilities to read one RIS entry at a time
*/
var RISReader = new function () {
//if we read a tag-value pair from the next entry, we need to keep it for later
var _tagValueBuffer = [];
/**
* public
* Returns the next RIS entry
* Note: we do allow entries to be missing a TY tag
*
* @return Array of tag-value pairs in order of appearance.
* Includes an additional property "tags", which is a list of RIS tags.
* The values of the list are arrays, which contain references to the
* tag-value pairs stored in the returned array.
*/
this.nextEntry = function () {
var tagValue,
entry = []; //maintain tag order
entry.tags = {}; //tag list for convenience
// eslint-disable-next-line no-cond-assign
while (tagValue = (_tagValueBuffer.length && _tagValueBuffer.pop()) || _getTagValue()) {
if (tagValue.tag == 'TY' && entry.length) {
//we hit a new entry. ER was omitted, but we'll forgive
_tagValueBuffer.push(tagValue);
return entry;
}
if (tagValue.tag == 'ER') {
if (!entry.length) continue; //weird, but keep going and ignore ER outside of entry
return entry;
}
entry.push(tagValue);
//also add to the "tags" list for convenient access
if (!entry.tags[tagValue.tag]) entry.tags[tagValue.tag] = [];
entry.tags[tagValue.tag].push(tagValue);
}
if (entry.length) return entry;
return false;
};
var risFormat = /^([A-Z][A-Z0-9]) {1,2}-(?: (.*))?$/, //allow empty entries
//list of tags for which we preserve newlines
preserveNewLines = ['KW', 'L1', 'L2', 'L3'], //these could use newline as separator
//keep track of maximum line length so we can make a better call on whether
//something should be on a new line or not
_maxLineLength = 0;
/**
* private
* Get the next RIS tag-value pair
*
* @return {
* raw: the line (or multiple lines) that were read in for this tag value pair,
* tag: RIS tag,
* value: value, which may have newlines stripped
* }
*/
function _getTagValue() {
var line, tagValue, temp, lastLineLength = 0;
while ((line = _nextLine()) !== false) { //could be reading empty lines
temp = line.match(risFormat);
if (!temp && !tagValue) {
//doesn't match RIS format and we're not processing a tag-value pair,
//so this is not a multi-line tag-value pair
if (line.trim()) {
// Z.debug("RIS: Dropping line outside of RIS record: " + line);
}
continue;
}
if (line.length > _maxLineLength) _maxLineLength = line.length;
if (temp && tagValue) {
//if we are already processing a tag-value pair, then this is the next pair
//store this line for later and return
_lineBuffer.push(line);
return tagValue;
}
if (temp) {
//new tag-value pair
tagValue = {
tag: temp[1],
value: temp[2],
raw: line
};
if (tagValue.value === undefined) tagValue.value = '';
}
else {
//tagValue && !temp
//multi-line RIS tag-value pair
var newLineAdded = false;
var cleanLine = line.trim();
//new lines would probably only be meaningful in notes and abstracts
if (['AB', 'N1', 'N2', 'RN'].includes(tagValue.tag)
//if all lines are not trimmed to ~80 characters or previous line was
// short, this would probably be on a new line. Might want to consider
// looking for periods and capital letters to make a better call.
// Empty lines imply a new line
&& (_maxLineLength > 85
|| (lastLineLength !== undefined && lastLineLength < 65)
|| cleanLine.length == 0)
) {
cleanLine = "\n" + cleanLine;
newLineAdded = true;
}
//don't remove new lines from keywords or attachments
if (!newLineAdded && preserveNewLines.includes(tagValue.tag)) {
cleanLine = "\n" + cleanLine;
newLineAdded = true;
}
//check if we need to add a space before concatenating
if (!newLineAdded && tagValue.value.charAt(tagValue.value.length - 1) != ' ') {
cleanLine = ' ' + cleanLine;
}
tagValue.raw += "\n" + line;
tagValue.value += cleanLine;
}
lastLineLength = line.length;
}
if (tagValue) return tagValue;
return false;
}
var _lineBuffer = [];
/**
* private
* Gets the next line in the buffer or file
*
* @return (String)
*/
function _nextLine() {
// Don't use shortcuts like _lineBuffer.pop() || Zotero.read(),
// because we may have an empty line, which could be meaningful
if (_lineBuffer.length) return _lineBuffer.pop();
var line = Zotero.read();
if (line && (line.includes('\u2028') || line.includes('\u2029'))) {
// Apparently some services think that it's cool to break up single
// lines in RIS into shorter lines using Unicode "LINE SEPARATOR"
// character. Well, that sucks for us, because . (dot) in regexp does
// not match this character. We also probably don't want it in the
// metadata, so clean it up here.
// e.g. http://informahealthcare.com/doi/full/10.3109/07434618.2014.906498
// (an Atypon system)
// Also include paragraph separator, though no live example available.
line = line.replace(/\s?[\u2028\u2029]|[\u2028\u2029]\s?/g, ' ');
}
return line;
}
};
/**
* Generic methods for cleaning RIS tags
*/
var TagCleaner = {
/**
* public
* Changes the RIS tag for an indicated tag-value pair. If more than one tag
* is specified, additional pairs are added.
*
* @param (RISReader entry) entry
* @param (Integer) at Index in entry of the tag-value pair to alter
* @param (String[]) toTags Array of tags to change to
*/
changeTag: function (entry, at, toTags) {
var source = entry[at], byTag = entry.tags[source.tag];
//clean up "tags" list
byTag.splice(byTag.indexOf(source), 1);
if (!byTag.length) delete entry.tags[source.tag];
if (!toTags || !toTags.length) {
//then we just remove
entry.splice(at, 1);
}
else {
source.tag = toTags[0]; //re-use the same pair for first tag
if (!entry.tags[toTags[0]]) entry.tags[toTags[0]] = [];
entry.tags[toTags[0]].push(source);
//if we're changing to more than one tag, we need to add extras
for (let i = 1, n = toTags.length; i < n; i++) {
var newSource = ZU.deepCopy(source);
newSource.tag = toTags[i];
entry.splice(at + i, 0, newSource);
if (!entry.tags[toTags[i]]) entry.tags[toTags[i]] = [];
entry.tags[toTags[i]].push(newSource);
}
}
}
};
/**
* @singleton Provides facilities to remap ProCite note-based data tagging to
* proper RIS format
* Note that after processing, the order of tag-value pairs in the "tags" list
* may be out of order
*/
var ProCiteCleaner = new function () {
this.proCiteMode = false; //are we sure we're processing a ProCite file?
//ProCite -> Zotero field map
this.proCiteMap = {
'Author Role': { //special case
actor: 'cast-member',
author: 'author',
cartographer: 'cartographer',
composer: 'composer',
composed: 'composer',
director: 'director',
directed: 'director',
performer: 'performer',
performed: 'performer',
producer: 'producer',
produced: 'producer',
editor: 'editor',
ed: 'editor',
edited: 'editor',
'editor-in-chief': 'editor',
compiler: 'editor',
compiled: 'editor',
collected: 'editor',
assembled: 'editor',
presenter: 'presenter',
presented: 'presenter',
translator: 'translator',
translated: 'translator',
introduction: 'contributor'
//conductor
//illustrator
//librettist
},
'Call Number': 'callNumber',
Edition: 'edition',
ISBN: 'ISBN',
Language: 'language',
'Publisher Name': 'publisher',
'Series Title': 'series',
'Proceedings Title': 'proceedingsTitle',
'Page(s)': 'pages',
'Volume ID': 'volume',
'Issue ID': 'issue',
'Issue Identification': 'issue',
'Series Volume ID': 'seriesNumber',
Scale: 'scale',
'Place of Publication': 'place',
Histroy: 'history', // yes, it's misspelled in their export filter
Size: 'artworkSize'
};
var tagValueSplit = /([A-Za-z,\s]+)\s*:\s*([\s\S]*)/; //ProCite version
/**
* public
* Converts ProCite "tags" to RIS tags
*
* @param (RISReader entry) entry Entry to be cleaned up in-place
* @param (Zotero.Item) item Indicates item type for proper mapping
*/
this.cleanTags = function (entry, item) {
// We _must_ change some tags before mapping from notes, otherwise
// there will be ambiguity
var ty;
if (this.proCiteMode) {
ty = entry.tags.TY && entry.tags.TY[0].value;
if ((ty == 'CHAP' || ty == 'BOOK') && entry.tags.VL) {
// Edition in ET, not VL
_changeAllTags(entry, 'VL', 'ET');
}
}
var extentOfWork, packagingMethod;
//go through all the notes
for (let i = 0; i < entry.length; i++) {
var m, risTag;
if (entry[i].tag !== 'N1'
|| !(m = entry[i].value.trim().match(tagValueSplit))) {
continue;
}
switch (m[1]) {
case 'Author, Subsidiary':
case 'Author, Monographic':
//seems to always come before "Author Role"
//we guess what RIS tag to assign,
//but this gets fixed on next iteration anyway
risTag = entry.tags.A1 ? (entry.tags.A2 ? 'A3' : 'A2') : 'A1';
var authors = m[2].split(/;\s*/); //multiple authors on the same line
this._changeTag(entry, i, [risTag]);
//use current tag-value pair for first author
//authors are in firstName lastName format, we need to fix it
entry[i].value = _fixAuthor(authors[0]);
//subsequent authors need to have their own tag-value pairs
for (let j = 1; j < authors.length; j++) {
var newEntry = ZU.deepCopy(entry[i]);
newEntry.value = authors[j];
entry.splice(i + 1, 0, newEntry); //insert into tag-value array
entry.tags[risTag].push(newEntry); //and add to tags
}
i += authors.length - 1; //skip past the new entries we just added
break;
case 'Artist Role':
case 'Series Editor Role':
case 'Editor/Compiler Role':
case 'Cartographer Role':
case 'Composer Role':
case 'Producer Role':
case 'Director Role':
case 'Performer Role':
case 'Author Role': {
var authorRoles = _normalizeAuthorRole(m[2]);
var risTags = [], fail = false;
//find a RIS tag for each author role
for (let j = 0, k = authorRoles.length; j < k; j++) {
var role = this.proCiteMap['Author Role'][authorRoles[j]];
if (!role) {
// Z.debug('RIS: Unknown ProCite author role: ' + authorRoles[j]);
continue;
}
role = 'creators/' + role;
risTag = importFields.reverseLookup(item.itemType, role);
if (!risTag) {
// Z.debug('RIS: Cannot map ProCite author role to RIS tag: ' + role + ' for ' + item.itemType);
// Z.debug('RIS: Will not attempt a partial match: ' + m[0]);
fail = true;
break;
}
if (!(risTags.includes(risTag))) risTags.push(risTag); //don't add same role
}
if (fail || !risTags.length) continue;
// Z.debug('RIS: ' + m[0]);
// Z.debug('RIS: Mapping preceeding authors to ' + risTags.join(', '));
let added = this._remapPreceedingTags(entry, i, ['A1', 'A2', 'A3'], risTags);
if (added) {
this._changeTag(entry, i); //remove ProCite note
i--;
if (added !== true) {
i += added;
}
}
break;
}
case 'Record ID':
case 'Record Number':
this._changeTag(entry, i, ['ID']);
entry[i].value = m[2];
break;
case 'Notes':
entry[i].value = m[2];
break;
case 'Connective Phrase':
if (m[2].trim().toLowerCase() == 'in') {
//this is somewhat meaningless, remove it
this._changeTag(entry, i);
i--;
}
break;
case 'Extent of Work':
extentOfWork = entry[i]; //processed later
break;
case 'Packaging Method':
packagingMethod = entry[i]; //processed later
break;
default:
if (this.proCiteMap[m[1]]) {
risTag = importFields.reverseLookup(item.itemType, this.proCiteMap[m[1]]);
if (!risTag) {
// Z.debug('RIS: Cannot map ProCite note to RIS tag: ' + this.proCiteMap[m[1]] + ' for ' + item.itemType);
continue;
}
this._changeTag(entry, i, [risTag]);
entry[i].value = m[2];
}
}
}
if (extentOfWork) {
let extent = extentOfWork.value.match(tagValueSplit)[2],
m = extent.match(/^(\d+)\s*(pages?|p(?:p|gs?)?|vols?|volumes?)\.?$/i), //e.g. 2 vols.
units, deletePackagingMethod = false;
if (m) {
//we have both extent and units in the same field
//packagingMethod will be useless
units = m[2].charAt(0).toLowerCase() == 'p' ? 'numPages' : 'numberOfVolumes';
extent = m[1];
}
else if (packagingMethod && /^\s*\d+\s*$/.test(extent) //numeric extent
&& (m = packagingMethod.value.match(/:\s*(pages?|p(?:p|gs?)?|vols?|volumes?)\.?\s*$/i))
) {
units = m[1].charAt(0).toLowerCase() == 'p' ? 'numPages' : 'numberOfVolumes';
extent = extent.trim();
deletePackagingMethod = true; //we can delete it since we used it
}
if (units) {
risTag = importFields.reverseLookup(item.itemType, units);
if (risTag) {
extentOfWork.value = extent;
this._changeTag(entry, entry.indexOf(extentOfWork), [risTag]);
if (deletePackagingMethod) {
this._changeTag(entry, entry.indexOf(packagingMethod));
}
}
}
}
//the rest we only fix if we're sure this is ProCite
if (!this.proCiteMode) return;
ty = entry.tags.TY && entry.tags.TY[0].value;
//fix titles in book sections.
//essentially, make sure there are no duplicate T tags and put them in order
if (ty == 'CHAP') {
var titleTags = ['T3', 'T2', 'TI'];
for (let i = 0; i < entry.length && titleTags.length; i++) {
if (['TI', 'T1', 'T2', 'T3'].includes(entry[i].tag)) {
var newTag = titleTags.pop();
if (entry[i].tag == newTag) continue; //already correct
this._changeTag(entry, i, [newTag]);
}
}
}
if (ty == 'BOOK' && entry.tags.IS && entry.tags.IS.length) {
_changeAllTags(entry, 'IS', 'VL');
}
if ((ty == 'CHAP' || ty == 'BOOK') && entry.tags.VL && entry.tags.VL.length > 1) {
// We try to fix this ahead of time, but we can't always
// 2 of these entries would indicate Edition and then Volume (maybe)
this._changeTag(entry, entry.indexOf(entry.tags.VL[0]), ['ET']);
}
if (ty == 'COMP' && entry.tags.IS) {
_changeAllTags(entry, 'IS', 'ET');
}
if (ty == 'BILL') {
if (entry.tags.CY) _changeAllTags(entry, 'CY', 'T2');
if (entry.tags.VL) _changeAllTags(entry, 'VL', 'M1');
if (entry.tags.SP) _changeAllTags(entry, 'SP', 'SE');
}
if (ty == 'ART') {
if (entry.tags.M1) _changeAllTags(entry, 'M1', 'M3');
}
};
/**
* private
* Normalize author role strings
*
* @param (String) role
* @return (String[]) normalized author role(s)
*/
function _normalizeAuthorRole(role) {
return role.toLowerCase()
.replace(/s\b|\.|\s+by\b|with an\s*/g, '')
//split multiple types
.split(/\s*(?:,|and)\s*/);
}
/**
* private
* Formats author name as lastName, firstName
*
* @param (String) author
* @return (String)
*/
function _fixAuthor(author) {
if (author.includes(',') || !(author.trim().includes(' '))) return author;
author = author.trim();
return author.substr(author.lastIndexOf(' ') + 1) + ', ' + author.substring(0, author.lastIndexOf(' '));
}
/**
* private
* Change all appearances of tag to another tag
*
* @param (RISReader entry) entry
* @param (String) from
* @param (String) to
*/
function _changeAllTags(entry, from, to) {
if (!from || !to) return;
for (let i = 0; i < entry.tags[from].length; i++) {
entry.tags[from][i].tag = to;
}
entry.tags[to] = entry.tags[from];
delete entry.tags[from];
}
/**
* public
* Wrapper for TagCleaner.changeTag
*/
this._changeTag = function (entry, at, toTags) {
TagCleaner.changeTag(entry, at, toTags);
//if we're changing tags, then we're sure this is ProCite format
//it's not the most intuitive place for this,
//but it makes sure that we don't miss setting this somewhere
this.proCiteMode = true;
};
/**
* public
* Changes RIS tags for preceeding tag-value pairs until we hit something that
* is not allowed to be modified
*
* @param (RISReader entry) entry
* @param (Integer) start Index in entry before which to change tags
* @param (String[]) allowedTags Array of tags that are allowed to be modified
* @param (String[]) risTags Array of tags to change to
* @return (Boolean | Integer) If only one tag is specified in risTags,
* this will be a Boolean indicating whether anything was changed.
* If risTags contains more than one tag, then this will be Integer
* indicating how many new tag-value pairs were inserted.
*/
this._remapPreceedingTags = function (entry, start, allowedTags, risTags) {
var tag, added = 0;
for (let i = start - 1; i >= 0; i--) {
if (tag && entry[i].tag !== tag) {
//different from the tags we changed previously. Don't continue
return added ? added : true;
}
tag = entry[i].tag;
if (!(allowedTags.includes(tag))) {
//not allowed to remap this tag
// Z.debug('RIS: nothing to remap');
return false;
}
this._changeTag(entry, i, risTags); //don't need to adjust i, since we're traversing backwards
added += risTags.length - 1;
}
//we should not end up at the begining of entry,
//since we will probably never be replacing TY, but just in case
if (tag) return added ? added : true;
return false;
};
};
/**
* @singleton Fixes some EndNote bugs, makes it more conveninent to import
*/
var EndNoteCleaner = new function () {
// eslint-disable-next-line lines-around-comment
/**
* public
*
* @param (RISReader entry) entry Entry to be cleaned up in-place
* @param (Zotero.Item) item Indicates item type for proper mapping
*/
this.cleanTags = function (entry) {
// for edited books, treat authors as editors
if (entry.tags.TY && entry.tags.TY[0].value == 'EDBOOK' && entry.tags.AU) {
for (let i = entry.tags.AU.length - 1; i >= 0; i--) {
TagCleaner.changeTag(entry, entry.indexOf(entry.tags.AU[i]), ['A3']);
}
}
};
};
/**
* @singleton Deals with some Citavi specific nuances
*/
var CitaviCleaner = new function () {
this.cleanTags = function (entry) {
// Citavi uses multiple H1 and H2 tags to list mutliple libraries and call
// numbers for items. We can only store one, so we will transform the first
// set of H1+H2 tags to DP+CN tags
if (entry.tags.CN || entry.tags.DP) return; // DP or CN already in use, so do nothing
if (!entry.tags.H1 && !entry.tags.H2) return;
if (!entry.tags.H1) {
// Only have a call number (maybe multiple, so take the first)
let at = entry.indexOf(entry.tags.H2[0]);
TagCleaner.changeTag(entry, at, ['CN']);
return;
}
if (!entry.tags.H1) {
// Only have a library
let at = entry.indexOf(entry.tags.H1[0]);
TagCleaner.changeTag(entry, at, ['DP']);
}
// We have pairs, so find the first set and change it
for (let i = 0; i < entry.length - 1; i++) {
if (entry[i].tag == 'H1' && entry[i + 1].tag == 'H2') {
TagCleaner.changeTag(entry, i, ['DP']);
TagCleaner.changeTag(entry, i + 1, ['CN']);
return;
}
}
};
};
/**
* Returns false and fails to process if the provided tag is deprecated and
* allowDeprecated is false.
*/
function processTag(item, tagValue, risEntry, allowDeprecated) {
var tag = tagValue.tag;
var value = tagValue.value.trim();
var rawLine = tagValue.raw;
//drop empty fields
if (value === "") return false;
if (!allowDeprecated && importFields.isDeprecated(tag)) {
return false;
}
var zField = importFields.getField(item.itemType, tag);
if (!zField) {
// Z.debug("Unknown field " + tag + " in entry :\n" + rawLine);
zField = 'unknown'; //this will result in the value being added as note
}
zField = zField.split('/');
if (tag != "N1" && tag != "RN" && tag != "AB") {
value = Zotero.Utilities.unescapeHTML(value);
}
//tag based manipulations
var processFields = true; //whether we should continue processing by zField
switch (tag) {
case "N1":
case "RN":
//seems that EndNote duplicates title in the note field sometimes
if (item.title == value) {
value = undefined;
processFields = false;
//do some HTML formatting in non-HTML notes
}
else if (!value.match(/<[^>]+>/)) { //from cleanTags
value = '<p>'
+ value.replace(/\n\n/g, '</p><p>')
.replace(/\n/g, '<br/>')
.replace(/\t/g, ' ')
.replace(/ {2}/g, ' ')
+ '</p>';
}
break;
case "EP":
if (item.pages) {
if (!(item.pages.includes('-'))) {
item.pages = item.pages + '-' + value;
}
else {
item.backupNumPages = value;
}
value = undefined;
}
else {
item.backupEndPage = value; //store this for an odd case where SP comes after EP
value = undefined;
}
break;
case "M1":
//Endnote exports access date for webpages to M1
//It makes much more sense to export to Y2
//We should make sure that M1 does not overwrite whatever may be in Y2
if (zField[0] == "accessDate") {
item.backupAccessDate = {
field: zField[0],
value: dateRIStoZotero(value, zField[0])
};
value = undefined;
processFields = false;
}
break;
case "M3":
// This is DOI when coming from EndNote, but it can be used for
// publication type as well
if (zField[0] == 'DOI') {
var cleanDOI = ZU.cleanDOI(value);
if (cleanDOI) {
value = cleanDOI;
}
else {
zField[0] = 'unknown';
}
}
break;
case "VL":
if (zField[0] == "accessDate") {
//EndNote screws up webpage entries. VL is access year, but access date is available
if (!item.backupAccessDate) { //make sure we don't replace the M1 data
item.backupAccessDate = {
field: zField[0],
value: dateRIStoZotero(value, zField[0])
};
}
value = undefined;
processFields = false;
}
break;
//PY is typically less complete than other dates. We'll store it as backup
case "PY":
item.backupDate = {
field: zField[0],
value: dateRIStoZotero(value, zField[0])
};
value = undefined;
processFields = false;
break;
case "UR":
//REFMAN places PMIDS in UR sometimes
if (value.includes('PM:')) {
value = 'PMID: ' + value.substr(3);
zField = ['extra'];
}
break;
}
//zField based manipulations
if (processFields) {
switch (zField[0]) {
case "__ignore":
value = undefined;
break;
case "backupPublicationTitle":
item.backupPublicationTitle = value;
value = undefined;
break;
case "creators":
var lName = value.split(/\s*,\s*/)[0];
var fName = value.substr(lName.length).replace(/^\s*,\s*/, '');
value = { lastName: lName, firstName: fName, creatorType: zField[1] };
if (!value.firstName) { //corporate
delete value.firstName;
value.fieldMode = 1;
}
break;
case "date":
case "accessDate":
case "filingDate":
case "issueDate":
case "dateEnacted":
case "dateDecided":
value = dateRIStoZotero(value, zField[0]);
break;
case "tags":
//allow new lines or semicolons. Commas, might be more problematic
//%K part is a hack for REFMAN exports
value = value.split(/\s*(?:[\r\n]+\s*)+(?:%K\s+)?|\s*(?:;\s*)+/);
//the regex will take care of double semicolons and newlines
//but it will still allow a blank tag if there is a newline or
//semicolon at the begining or the end
if (!value[0]) value.shift();
if (value.length && !value[value.length - 1]) value.pop();
if (!value.length) {
value = undefined;
}
break;
case "notes":
value = { note: value };
//we can specify note title in the field mapping table
if (zField[1]) {
value.note = zField[1] + ': ' + value.note;
}
break;
case "attachments":
var values = value.split('\n');
var title, mimeType, url;
for (let i = 0, n = values.length; i < n; i++) {
//support for EndNote's relative paths
url = values[i].replace(/^internal-pdf:\/\//i, 'PDF/').trim();
if (!url) continue;
//get title from file name
title = url.match(/([^/\\]+)(?:\.\w{1,8})$/);
if (title) {
try {
title = decodeURIComponent(title[1]);
}
catch (e) {
title = title[1];
}
}
else {
title = "Attachment";
}
if (zField[1] == 'HTML') {
title = "Full Text (HTML)";
mimeType = "text/html";
}
item.attachments.push({
title: title,
path: url,
mimeType: mimeType || undefined
});
}
value = false;
break;
case "unsupported": //unsupported fields
//we can convert a RIS tag to something more useful though
if (zField[1]) {
value = zField[1] + ': ' + value;
}
break;
}
}
applyValue(item, zField[0], value, rawLine);
return true;
}
function applyValue(item, zField, value, rawLine) {
if (!value) return;
if (!zField || zField == 'unknown') {
if (!ignoreUnknown && !Zotero.parentTranslator) {
// Z.debug("Entry stored in note: " + rawLine);
item.unknownFields.push(rawLine);
}
return;
}
if (zField == 'unsupported') {
if (!ignoreUnknown && !Zotero.parentTranslator) {
// Z.debug("Unsupported field will be stored in note: " + value);
item.unsupportedFields.push(value);
}
return;
}
//check if field is valid for item type
if (!Zotero.parentTranslator //cannot use this in connectors, plus we drop notes in most cases anyway
&& zField != 'creators' && zField != 'tags'
&& zField != 'notes' && zField != 'attachments'
&& zField != 'DOI'
&& !ZU.fieldIsValidForType(zField, item.itemType)) {
// Z.debug("Invalid field '" + zField + "' for item type '" + item.itemType + "'.");
if (!ignoreUnknown && !Zotero.parentTranslator) {
// Z.debug("Entry stored in note: " + rawLine);
item.unknownFields.push(rawLine);
return;
}
//otherwise, we can still store them and they will get dropped automatically
}
//special processing for certain fields
switch (zField) {
case 'notes':
case 'attachments':
case 'creators':
case 'tags':
if (!(value instanceof Array)) {
value = [value];
}
item[zField] = item[zField].concat(value);
break;
case 'extra':
if (item.extra) {
item.extra += '\n' + value;
}
else {
item.extra = value;
}
break;
case 'DOI':
value = ZU.cleanDOI(value);
//add DOI to extra field,
if (!ZU.fieldIsValidForType("DOI", item.itemType) && value) {
if (item.extra) {
if (!(/^DOI:/.test(item.extra))) {
item.extra += '\nDOI: ' + value;
}
}
else {
item.extra = 'DOI: ' + value;
}
}
else {
item[zField] = value;
}
break;
default:
//check if value already exists. Don't overwrite existing values
if (item[zField]) {
//if the new value is not the same as existing value, store it as note
if (!ignoreUnknown && !Zotero.parentTranslator && item[zField] != value) {
item.unsupportedFields.push(zField + ': ' + value);
}
}
else {
item[zField] = value;
}
}
}
function dateRIStoZotero(risDate, zField) {
var date = [];
//we'll be very lenient about formatting
//First, YYYY/MM/DD/other with everything but year optional
var m = risDate.match(/^(\d+)(?:\/(\d{0,2})(?:\/(\d{0,2})(?:(?:\/|\s)([^/]*))?)?)?$/);
var timeCheck;
if (m) {
date[0] = m[1]; //year
date[1] = m[2]; //month
date[2] = m[3]; //day
timeCheck = m[4];
}
else {
//EndNote suggests entering only Month and Day in the date field
//We'll return this, but also add 0000 as a placeholder for year
//This will come from PY at some point and we'll let Zotero figure out the date
//This will NOT work with access date, but there's only so much we can do
var y = risDate.match(/\b\d{4}\b/);
let d = risDate.match(/\b(?:[1-3]\d|[1-9])\b/);
m = risDate.match(/[A-Za-z]+/);
if (!y && m) {
return '0000 ' + m[0] + (d ? ' ' + d[0] : '');
}
// Only try harder with access dates, since those get dropped otherwise
// For everything else, Zotero will go through the same algorithm later
// but at least we won't be discarding anything
if (zField != 'accessDate') return risDate;
// Let Zotero try and figure this out
var parsedDate = ZU.strToDate(risDate);
if (!parsedDate || !parsedDate.year) {
return risDate;
}
date[0] = parsedDate.year;
date[1] = '' + (parsedDate.month + 1);
date[2] = '' + parsedDate.day;
}
//sometimes unknown parts of date are given as 0. Drop these and anything that follows
for (let i = 0; i < 3; i++) {
if (date[i] !== undefined) date[i] = date[i].replace(/^0+/, ''); //drop leading 0s
if (!date[i]) {
date.splice(i);
break;
}
}
if (zField == "accessDate") { //format this as SQL date
if (!date[0]) return risDate; //this should never happed
//adjust month to be 0 based
if (date[1]) {
date[1] = parseInt(date[1]);
if (date[1]) date[1] = '' + (date[1] - 1); //make it a string again to keep things simpler
else date[1] = '0'; //the regex above should ensure this never happens. We don't even test the day
}
//make sure we have a month and day
if (!date[1]) date[1] = '0'; //0 based months
if (!date[2]) date[2] = '1';
var time;
if (timeCheck) {
time = timeCheck.match(/\b([0-2]?[1-9]):(\d{2})(?::(\d{2}))\s*(am|pm)?/i);
if (time) {
if (!time[3]) time[3] = '0';
if (time[4]) {
var hour = parseInt(time[1]); //this should not fail
if (time[4].toLowerCase() == 'pm' && hour < 12) {
time[1] = '' + (hour + 12);
}
else if (time[4].toLowerCase() == 'am' && hour == 12) {
time[1] = '0';
}
}
}
}
/**
* we export as UTC, so assume UTC on import as well,
* but only if we have a time part. Otherwise this might be coming from
* other software, which is probably local time.
* (maybe also look for time zone in the future)
*/
let d = new Date();
/** We intentionally avoid passing parameters in the constructor,
* because it interprets dates with 2 digits or less as 1900+ dates.
* This is clearly not a problem with accessDate, but maybe this will
* end up being used for something else later.
*/
if (time) {
d.setUTCFullYear(date[0], date[1], date[2]);
d.setUTCHours(time[1], time[2], time[3]);
}
else {
d.setFullYear(date[0], date[1], date[2]);
}
var pad = function (n, width) {
n = '000' + n; //that should be sufficient for our purposes here
return n.substr(n.length - width);
};
return pad(d.getUTCFullYear(), 4) + '-' + pad(d.getUTCMonth() + 1, 2)
+ '-' + pad(d.getUTCDate(), 2)
+ (time
? ' ' + pad(d.getUTCHours(), 2) + ':'
+ pad(d.getUTCMinutes(), 2) + ':'
+ pad(d.getUTCSeconds(), 2)
: '');
}
else {
let [year, month, day] = date;
let dateString = "";
if (date.length === 0) {
return dateString;
}
else {
dateString = year.padStart(4, '0');
if (month) {
dateString += "-" + month.padStart(2, '0');
if (day) {
dateString += "-" + day.padStart(2, '0');
}
}
return dateString;
}
}
}
function completeItem(item) {
// if backup publication title exists but not proper, use backup
// (hack to get newspaper titles from EndNote)
if (item.backupPublicationTitle) {
if (!item.publicationTitle) {
item.publicationTitle = item.backupPublicationTitle;
}
item.backupPublicationTitle = undefined;
}
if (item.backupNumPages) {
if (!item.numPages) {
item.numPages = item.backupNumPages;
}
item.backupNumPages = undefined;
}
if (item.backupEndPage) {
if (!item.pages) {
item.pages = item.backupEndPage;
}
else if (!(item.pages.includes('-'))) {
item.pages += '-' + item.backupEndPage;
}
else if (!item.numPages) { //should we do this?
item.numPages = item.backupEndPage;
}
item.backupEndPage = undefined;
}
//see if we have a backup date
if (item.backupDate) {
if (!item[item.backupDate.field]) {
item[item.backupDate.field] = item.backupDate.value;
}
else {
item[item.backupDate.field] = item[item.backupDate.field]
.replace(/\b0000\b/, item.backupDate.value);
}
item.backupDate = undefined;
}
//same for access date
if (item.backupAccessDate) {
if (!item[item.backupAccessDate.field]) {
item[item.backupAccessDate.field] = item.backupAccessDate.value;
}
item.backupAccessDate = undefined;
}
if (item.DOI) {
// Only clean DOI if we get something back. Otherwise just leave it be
var cleanDOI = ZU.cleanDOI(item.DOI);
if (cleanDOI) item.DOI = cleanDOI;
}
// hack for sites like Nature, which only use JA, journal abbreviation
if (item.journalAbbreviation && !item.publicationTitle) {
item.publicationTitle = item.journalAbbreviation;
}
// Hack for Endnote exports missing full title
if (item.shortTitle && !item.title) {
item.title = item.shortTitle;
}
//if we only have one tag, try splitting it by comma
//odds of this this backfiring are pretty low
if (item.tags.length == 1) {
item.tags = item.tags[0].split(/\s*(?:,\s*)+/);
if (!item.tags[0]) item.tags.shift();
if (item.tags.length && !item.tags[item.tags.length - 1]) item.tags.pop();
}
//don't pass access date if this is called from (most likely) a web translator
if (Zotero.parentTranslator) {
item.accessDate = undefined;
}
//store unsupported and unknown fields in a single note
if (!Zotero.parentTranslator) {
var note = '';
for (let i = 0, n = item.unsupportedFields.length; i < n; i++) {
note += item.unsupportedFields[i] + '<br/>';
}
for (let i = 0, n = item.unknownFields.length; i < n; i++) {
note += item.unknownFields[i] + '<br/>';
}
if (note) {
note = "The following values have no corresponding Zotero field:<br/>" + note;
item.notes.push({ note: note.trim(), tags: ['_RIS import'] });
}
}
item.unsupportedFields = undefined;
item.unknownFields = undefined;
return item.complete();
}
//creates a new item of specified type
function getNewItem(type) {
var item = new Zotero.Item(type);
item.unknownFields = [];
item.unsupportedFields = [];
return item;
}
function doImport() {
if (typeof Promise == 'undefined') {
startImport(
function () {},
function (e) {
throw e;
}
);
return false;
}
else {
return new Promise(function (resolve, reject) {
startImport(resolve, reject);
});
}
}
function startImport(resolve, reject) {
try {
//set up import field mapper
var maps = [fieldMap, degenerateImportFieldMap];
if (exportedOptions.fieldMap) maps.unshift(exportedOptions.fieldMap);
importFields = new TagMapper(maps, degenerateImportFieldMap);
//prepare some configurable options
if (Zotero.getHiddenPref) {
let pref = Zotero.getHiddenPref("RIS.import.ignoreUnknown");
if (pref != undefined) {
ignoreUnknown = pref;
}
pref = Zotero.getHiddenPref("RIS.import.keepID");
if (pref === true) {
degenerateImportFieldMap.ID = pref;
}
}
importNext(resolve, reject);
}
catch (e) {
reject(e);
}
}
function importNext(resolve, reject) {
try {
var entry;
// eslint-disable-next-line no-cond-assign
while (entry = RISReader.nextEntry()) {
//determine item type
var itemType = exportedOptions.itemType;
if (!itemType && entry.tags.TY) {
var risType = entry.tags.TY[0].value.trim().toUpperCase();
if (exportedOptions.typeMap) {
itemType = exportedOptions.typeMap[risType];
}
if (!itemType) {
itemType = importTypeMap[risType];
}
}
//we allow entries without TY and just use default type
if (!itemType) {
var defaultType = exportedOptions.defaultItemType || DEFAULT_IMPORT_TYPE;
if (entry.tags.TY) {
// Z.debug("RIS: Unknown item type: " + entry.tags.TY[0].value + ". Defaulting to " + defaultType);
}
else {
// Z.debug("RIS: TY tag not specified. Defaulting to " + defaultType);
}
itemType = defaultType;
}
var item = getNewItem(itemType);
ProCiteCleaner.cleanTags(entry, item); //clean up ProCite "tags"
EndNoteCleaner.cleanTags(entry, item); //some tweaks to EndNote export
CitaviCleaner.cleanTags(entry, item);
var deferredEntries = [];
for (let i = 0, n = entry.length; i < n; i++) {
//ignore TY and ER tags
if (['TY', 'ER'].includes(entry[i].tag)) continue;
if (!processTag(item, entry[i], entry, false)) {
deferredEntries.push(entry[i]);
}
}
for (let deferred of deferredEntries) {
processTag(item, deferred, entry, true);
}
var maybePromise = completeItem(item);
if (maybePromise) {
maybePromise.then(function () {
importNext(resolve, reject);
});
return;
}
}
}
catch (e) {
reject(e);
}
resolve();
}
/********************
* Export Functions *
********************/
//RIS files have a certain structure, which is often meaningful
//Records always start with TY and end with ER. This is hardcoded below
var exportOrder = {
__default: ["TI",
"AU",
"T2",
"A2",
"T3",
"A3",
"A4",
"AB",
"C1",
"C2",
"C3",
"C4",
"C5",
"C6",
"CN",
"CY",
"DA",
"PY",
"DO",
"DP",
"ET",
"VL",
"IS",
"SP",
"J2",
"LA",
"M1",
"M3",
"NV",
"OP",
"PB",
"SE",
"SN",
"ST",
"SV",
"UR",
"AN",
"DB",
"Y2",
"L1",
"L2",
"L4",
"N1",
"KW"],
//in bill sponsor (A2) and cosponsor (A3) should be together and not split by legislativeBody (T3)
bill: ["TI",
"AU",
"T2",
"A2",
"A3",
"T3",
"A4",
"AB",
"C1",
"C2",
"C3",
"C4",
"C5",
"C6",
"CN",
"CY",
"DA",
"PY",
"DO",
"DP",
"ET",
"VL",
"IS",
"SP",
"J2",
"LA",
"M1",
"M3",
"NV",
"OP",
"PB",
"SE",
"SN",
"ST",
"SV",
"UR",
"AN",
"DB",
"Y2",
"L1",
"L2",
"L4",
"N1",
"KW"]
};
var newLineChar = "\r\n"; //from spec
//set up export field mapping
var exportFields;
function addTag(tag, value) {
if (!(value instanceof Array)) value = [value];
for (let i = 0, n = value.length; i < n; i++) {
if (value[i] === undefined) return;
//don't export empty strings
var v = (value[i] + '').trim();
if (!v) continue;
Zotero.write(tag + " - " + v + newLineChar);
}
}
function doExport() {
var item, order, tag, field, value;
//set up field mapper
var map = [fieldMap];
if (exportedOptions.fieldMap) map.unshift(exportedOptions.fieldMap);
exportFields = new TagMapper(map);
// eslint-disable-next-line no-cond-assign
while (item = Zotero.nextItem()) {
// can't store independent notes in RIS
if (item.itemType == "note" || item.itemType == "attachment") {
continue;
}
// type
var type = exportTypeMap[item.itemType];
if (!type) {
type = DEFAULT_EXPORT_TYPE;
// Z.debug("Unknown item type: " + item.itemType + ". Defaulting to " + type);
}
addTag("TY", type);
//before we begin, pre-sort attachments based on type
var attachments = {
PDF: [],
HTML: [],
other: []
};
for (let i = 0, n = item.attachments.length; i < n; i++) {
switch (item.attachments[i].mimeType) {
case 'application/pdf':
attachments.PDF.push(item.attachments[i]);
break;
case 'text/html':
attachments.HTML.push(item.attachments[i]);
break;
default:
attachments.other.push(item.attachments[i]);
}
}
order = exportOrder[item.itemType] || exportOrder.__default;
for (let i = 0, n = order.length; i < n; i++) {
tag = order[i];
//find the appropriate field to export for this item type
field = exportFields.getField(item.itemType, tag);
//if we didn't get anything, we don't need to export this tag for this item type
if (!field) continue;
value = undefined;
//we can define fields that are nested (i.e. creators) using slashes
field = field.split('/');
//handle special cases based on item field
switch (field[0]) {
case "creators":
//according to spec, one author per line in the "Lastname, Firstname, Suffix" format
//Zotero does not store suffixes in a separate field
value = [];
var name;
for (let j = 0, m = item.creators.length; j < m; j++) {
name = [];
if (item.creators[j].creatorType == field[1]) {
name.push(item.creators[j].lastName);
if (item.creators[j].firstName) name.push(item.creators[j].firstName);
value.push(name.join(', '));
}
}
if (!value.length) value = undefined;
break;
case "notes":
if (item.notes && Zotero.getOption("exportNotes")) {
value = item.notes.map(function (n) {
return n.note.replace(/(?:\r\n?|\n)/g, "\r\n");
});
}
break;
case "tags":
value = item.tags.map(function (t) {
return t.tag;
});
break;
case "attachments":
value = [];
var att = attachments[field[1]];
for (let j = 0, m = att.length; j < m; j++) {
if (att[j].saveFile) { //local file
value.push(att[j].defaultPath);
att[j].saveFile(att[j].defaultPath);
}
else { //link to remote file
value.push(att[j].url);
}
}
break;
case "pages":
if (tag == "SP" && item.pages) {
var m = item.pages.trim().match(/(.+?)[\u002D\u00AD\u2010-\u2015\u2212\u2E3A\u2E3B\s]+(.+)/);
if (m) {
addTag(tag, m[1]);
tag = "EP";
value = m[2];
}
else {
value = item.pages;
}
}
break;
default:
value = item[field];
}
//handle special cases based on RIS tag
let date;
switch (tag) {
case "PY":
date = ZU.strToDate(item[field]);
if (date.year) {
value = ('000' + date.year).substr(-4); //since this is in export, this should not be a problem with MS JavaScript implementation of substr
}
else {
value = item[field];
}
break;
case "Y2":
case "DA":
date = ZU.strToDate(item[field]);
if (date.year) {
date.year = ('000' + date.year).substr(-4);
date.month = (date.month || date.month === 0 || date.month === "0") ? ('0' + (date.month + 1)).substr(-2) : '';
date.day = date.day ? ('0' + date.day).substr(-2) : '';
if (!date.part) date.part = '';
value = date.year + '/' + date.month + '/' + date.day + '/' + date.part;
}
else {
value = item[field];
}
break;
}
addTag(tag, value);
}
Zotero.write("ER - " + newLineChar + newLineChar);
}
}
var exports = {
doExport: doExport,
doImport: doImport,
options: exportedOptions
};
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "import",
"input": "TY - JOUR\nA1 - Baldwin,S.A.\nA1 - Fugaccia,I.\nA1 - Brown,D.R.\nA1 - Brown,L.V.\nA1 - Scheff,S.W.\nT1 - Blood-brain barrier breach following\ncortical contusion in the rat\nJO - J.Neurosurg.\nY1 - 1996\nVL - 85\nSP - 476\nEP - 481\nRP - Not In File\nKW - cortical contusion\nKW - blood-brain barrier\nKW - horseradish peroxidase\nKW - head trauma\nKW - hippocampus\nKW - rat\nN2 - Adult Fisher 344 rats were subjected to a unilateral impact to the dorsal cortex above the hippocampus at 3.5 m/sec with a 2 mm cortical depression. This caused severe cortical damage and neuronal loss in hippocampus subfields CA1, CA3 and hilus. Breakdown of the blood-brain barrier (BBB) was assessed by injecting the protein horseradish peroxidase (HRP) 5 minutes prior to or at various times following injury (5 minutes, 1, 2, 6, 12 hours, 1, 2, 5, and 10 days). Animals were killed 1 hour after HRP injection and brain sections were reacted with diaminobenzidine to visualize extravascular accumulation of the protein. Maximum staining occurred in animals injected with HRP 5 minutes prior to or 5 minutes after cortical contusion. Staining at these time points was observed in the ipsilateral hippocampus. Some modest staining occurred in the dorsal contralateral cortex near the superior sagittal sinus. Cortical HRP stain gradually decreased at increasing time intervals postinjury. By 10 days, no HRP stain was observed in any area of the brain. In the ipsilateral hippocampus, HRP stain was absent by 3 hours postinjury and remained so at the 6- and 12- hour time points. Surprisingly, HRP stain was again observed in the ipsilateral hippocampus 1 and 2 days following cortical contusion, indicating a biphasic opening of the BBB following head trauma and a possible second wave of secondary brain damage days after the contusion injury. These data indicate regions not initially destroyed by cortical impact, but evidencing BBB breach, may be accessible to neurotrophic factors administered intravenously both immediately and days after brain trauma.\nER - ",
"items": [
{
"itemType": "journalArticle",
"title": "Blood-brain barrier breach following cortical contusion in the rat",
"creators": [
{
"lastName": "Baldwin",
"firstName": "S.A.",
"creatorType": "author"
},
{
"lastName": "Fugaccia",
"firstName": "I.",
"creatorType": "author"
},
{
"lastName": "Brown",
"firstName": "D.R.",
"creatorType": "author"
},
{
"lastName": "Brown",
"firstName": "L.V.",
"creatorType": "author"
},
{
"lastName": "Scheff",
"firstName": "S.W.",
"creatorType": "author"
}
],
"date": "1996",
"abstractNote": "Adult Fisher 344 rats were subjected to a unilateral impact to the dorsal cortex above the hippocampus at 3.5 m/sec with a 2 mm cortical depression. This caused severe cortical damage and neuronal loss in hippocampus subfields CA1, CA3 and hilus. Breakdown of the blood-brain barrier (BBB) was assessed by injecting the protein horseradish peroxidase (HRP) 5 minutes prior to or at various times following injury (5 minutes, 1, 2, 6, 12 hours, 1, 2, 5, and 10 days). Animals were killed 1 hour after HRP injection and brain sections were reacted with diaminobenzidine to visualize extravascular accumulation of the protein. Maximum staining occurred in animals injected with HRP 5 minutes prior to or 5 minutes after cortical contusion. Staining at these time points was observed in the ipsilateral hippocampus. Some modest staining occurred in the dorsal contralateral cortex near the superior sagittal sinus. Cortical HRP stain gradually decreased at increasing time intervals postinjury. By 10 days, no HRP stain was observed in any area of the brain. In the ipsilateral hippocampus, HRP stain was absent by 3 hours postinjury and remained so at the 6- and 12- hour time points. Surprisingly, HRP stain was again observed in the ipsilateral hippocampus 1 and 2 days following cortical contusion, indicating a biphasic opening of the BBB following head trauma and a possible second wave of secondary brain damage days after the contusion injury. These data indicate regions not initially destroyed by cortical impact, but evidencing BBB breach, may be accessible to neurotrophic factors administered intravenously both immediately and days after brain trauma.",
"journalAbbreviation": "J.Neurosurg.",
"pages": "476-481",
"publicationTitle": "J.Neurosurg.",
"volume": "85",
"attachments": [],
"tags": [
{
"tag": "blood-brain barrier"
},
{
"tag": "cortical contusion"
},
{
"tag": "head trauma"
},
{
"tag": "hippocampus"
},
{
"tag": "horseradish peroxidase"
},
{
"tag": "rat"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "TY - PAT\nA1 - Burger,D.R.\nA1 - Goldstein,A.S.\nT1 - Method of detecting AIDS virus infection\nY1 - 1990/2/27\nVL - 877609\nIS - 4,904,581\nRP - Not In File\nA2 - Epitope,I.\nCY - OR\nPB - 4,629,783\nKW - AIDS\nKW - virus\nKW - infection\nKW - antigens\nY2 - 1986/6/23\nM1 - G01N 33/569 G01N 33/577\nM2 - 435/5 424/3 424/7.1 435/7 435/29 435/32 435/70.21 435/240.27 435/172.2 530/387 530/808 530/809 935/110\nN2 - A method is disclosed for detecting the presence of HTLV III infected cells in a medium. The method comprises contacting the medium with monoclonal antibodies against an antigen produced as a result of the infection and detecting the binding of the antibodies to the antigen. The antigen may be a gene product of the HTLV III virus or may be bound to such gene product. On the other hand the antigen may not be a viral gene product but may be produced as a result of the infection and may further be bound to a lymphocyte. The medium may be a human body fluid or a culture medium. A particular embodiment of the present method involves a method for determining the presence of a AIDS virus in a person. The method comprises combining a sample of a body fluid from the person with a monoclonal antibody that binds to an antigen produced as a result of the infection and detecting the binding of the monoclonal antibody to the antigen. The presence of the binding indicates the presence of a AIDS virus infection. Also disclosed are novel monoclonal antibodies, noval compositions of matter, and novel diagnostic kits\nER - ",
"items": [
{
"itemType": "patent",
"title": "Method of detecting AIDS virus infection",
"creators": [
{
"lastName": "Burger",
"firstName": "D.R.",
"creatorType": "inventor"
},
{
"lastName": "Goldstein",
"firstName": "A.S.",
"creatorType": "inventor"
}
],
"issueDate": "1990-02-27",
"abstractNote": "A method is disclosed for detecting the presence of HTLV III infected cells in a medium. The method comprises contacting the medium with monoclonal antibodies against an antigen produced as a result of the infection and detecting the binding of the antibodies to the antigen. The antigen may be a gene product of the HTLV III virus or may be bound to such gene product. On the other hand the antigen may not be a viral gene product but may be produced as a result of the infection and may further be bound to a lymphocyte. The medium may be a human body fluid or a culture medium. A particular embodiment of the present method involves a method for determining the presence of a AIDS virus in a person. The method comprises combining a sample of a body fluid from the person with a monoclonal antibody that binds to an antigen produced as a result of the infection and detecting the binding of the monoclonal antibody to the antigen. The presence of the binding indicates the presence of a AIDS virus infection. Also disclosed are novel monoclonal antibodies, noval compositions of matter, and novel diagnostic kits",
"applicationNumber": "G01N 33/569 G01N 33/577",
"assignee": "4,629,783",
"extra": "435/5 424/3 424/7.1 435/7 435/29 435/32 435/70.21 435/240.27 435/172.2 530/387 530/808 530/809 935/110",
"issuingAuthority": "Epitope,I.",
"place": "OR",
"attachments": [],
"tags": [
{
"tag": "AIDS"
},
{
"tag": "antigens"
},
{
"tag": "infection"
},
{
"tag": "virus"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "TY - AGGR\nAB - Abstract\nAD - Author Address\nAN - Accession Number\nAU - Name1, Author\nAU - Name2, Author\nCA - Caption\nCY - Place Published\nDA - Date Accessed\nDB - Name of Database\nDO - 10.1234/123456\nDP - Database Provider\nET - Date Published\nJ2 - Periodical Title\nKW - Keyword1, Keyword2, Keyword3\nKeyword4; Keyword5\nLA - Language\nLB - Label\nM1 - Publication Number\nM3 - Type of Work\nN1 - Notes\nOP - Original Publication\nPB - Publisher\nPY - Year\nRN - ResearchNotes\nSE - Screens\nSN - ISSN/ISBN\nSP - Pages\nST - Short Title\nT2 - Periodical\nTA - Author, Translated\nTI - Title\nTT - Translated Title\nUR - URL\nVL - Volume\nID - 2\nER - \n\n\nTY - ANCIENT\nA2 - Editor\nA4 - Translator\nAB - Abstract\nAD - Author Address\nAN - Accession Number\nAU - Name1, Author\nAU - Name2, Author\nCN - Call Number\nCA - Caption\nCY - Place Published\nDA - Date\nDB - Name of Database\nDO - DOI\nDP - Database Provider\nET - Edition\nJ2 - Abbreviated Publication\nKW - Keyword1, Keyword2, Keyword3\nKeyword4; Keyword5\nLA - Language\nLB - Label\nM1 - Text Number\nM3 - Type of Work\nN1 - Notes\nNV - Number of Volumes\nOP - Original Publication\nPB - Publisher\nPY - Year\nRI - Reviewed Item\nRN - ResearchNotes\nRP - Reprint Edition\nSN - ISBN\nSP - Pages\nST - Short Title\nT2 - Publication Title\nT3 - Volume Title\nTA - Author, Translated\nTI - Title\nTT - Translated Title\nUR - URL\nVL - Volume\nY2 - Access Date\nID - 3\nER - \n\n\nTY - ART\nAB - Abstract\nAD - Author Address\nAN - Accession Number\nAU - Artist\nC3 - Size/Length\nCA - Caption\nCN - Call Number\nCY - Place Published\nDA - Date\nDB - Name of Database\nDP - Database Provider\nDO - DOI\nET - Edition\nJ2 - Periodical Title\nKW - Keyword1, Keyword2, Keyword3\nKeyword4; Keyword5\nLA - Language\nLB - Label\nM1 - Size\nM3 - Type of Work\nN1 - Notes\nPB - Publisher\nPY - Year\nRN - Research Notes\nSP - Description\nST - Short Title\nTI - Title\nTT - Translated Title\nTA - Author, Translated\nUR - URL\nY2 - Access Date\nID - 4\nER - \n\n\nTY - ADVS\nA2 - Performers\nA3 - Editor, Series\nAB - Abstract\nAD - Author Address\nAN - Accession Number\nAU - Name1, Author\nAU - Name2, Author\nC1 - Cast\nC2 - Credits\nC3 - Size/Length\nC5 - Format\nCA - Caption\nCN - Call Number\nCY - Place Published\nDA - Date\nDB - Name of Database\nDO - DOI\nDP - Database Provider\nET - Edition\nJ2 - Periodical Title\nKW - Keyword1, Keyword2, Keyword3\nKeyword4; Keyword5\nLA - Language\nLB - Label\nM1 - Number\nM3 - Type\nN1 - Notes\nNV - Extent of Work\nOP - Contents\nPB - Publisher\nPY - Year\nRN - Research Notes\nSN - ISBN\nST - Short Title\nT3 - Series Title\nTA - Author, Translated\nTI - Title\nTT - Translated Title\nUR - URL\nVL - Volume\nY2 - Access Date\nID - 5\nER - \n\n\nTY - BILL\nA2 - Sponsor\nAB - Abstract\nAD - Author Address\nAN - Accession Number\nCA - Caption\nCN - Call Number\nDA - Date\nDB - Name of Database\nDO - DOI\nDP - Database Provider\nET - Session\nKW - Keyword1, Keyword2, Keyword3\nKeyword4; Keyword5\nLA - Language\nLB - Label\nN1 - Notes\nM1 - Bill Number\nOP - History\nPY - Year\nRN - Research Notes\nSE - Code Section\nSP - Code Pages\nST - Short Title\nT2 - Code\nT3 - Legislative Body\nTA - Author, Translated\nTI - Title\nTT - Translated Title\nUR - URL\nVL - Code Volume\nY2 - Access Date\nID - 6\nER - \n\n\nTY - BLOG\nA2 - Editor\nA3 - Illustrator\nAB - Abstract\nAD - Author Address\nAN - Accession Number\nAU - Name1, Author\nAU - Name2, Author\nC1 - Author Affiliation\nCA - Caption\nCN - Call Number\nCY - Place Published\nDA - Last Update Date\nDB - Name of Database\nDO - DOI\nDP - Database Provider\nET - Edition\nJ2 - Periodical Title\nKW - Keyword1, Keyword2, Keyword3\nKeyword4; Keyword5\nLA - Language\nLB - Label\nM3 - Type of Medium\nN1 - Notes\nOP - Contents\nPB - Publisher\nPY - Year\nRN - Research Notes\nSE - Message Number\nSN - ISBN\nSP - Description\nST - Short Title\nT2 - Title of WebLog\nT3 - Institution\nTA - Author, Translated\nTI - Title of Entry\nTT - Translated Title\nUR - URL\nVL - Access Year\nY2 - Number\nID - 7\nER - \n\n\nTY - BOOK\nA2 - Editor, Series\nA3 - Editor\nA4 - Translator\nAB - Abstract\nAD - Author Address\nAN - Accession Number\nAU - Name1, Author\nAU - Name2, Author\nC3 - Title Prefix\nC4 - Reviewer\nCA - Caption\nCN - Call Number\nCY - Place Published\nDA - Date\nDB - Name of Database\nDO - DOI\nDP - Database Provider\nET - Edition\nJ2 - Abbreviation\nKW - Keyword1, Keyword2, Keyword3\nKeyword4; Keyword5\nLA - Language\nLB - Label\nM1 - Series Volume\nM3 - Type of Work\nN1 - Notes\nNV - Number of Volumes\nOP - Original Publication\nPB - Publisher\nPY - Year\nRN - Research Notes\nRP - Reprint Edition\nSE - Pages\nSN - ISBN\nSP - Number of Pages\nST - Short Title\nT2 - Series Title\nTA - Author, Translated\nTI - Title\nTT - Translated Title\nUR - URL\nVL - Volume\nY2 - Access Date\nID - 8\nER - \n\n\nTY - CHAP\nA2 - Editor\nA3 - Editor, Series\nA4 - Translator\nAB - Abstract\nAD - Author Address\nAN - Accession Number\nAU - Name1, Author\nAU - Name2, Author\nC1 - Section\nC3 - Title Prefix\nC4 - Reviewer\nC5 - Packaging Method\nCA - Caption\nCN - Call Number\nCY - Place Published\nDB - Name of Database\nDO - DOI\nDP - Database Provider\nET - Edition\nJ2 - Abbreviation\nKW - Keyword1, Keyword2, Keyword3\nKeyword4; Keyword5\nLA - Language\nLB - Label\nM1 - Number of Volumes\nOP - Original Publication\nN1 - Notes\nPB - Publisher\nPY - Year\nRI - Reviewed Item\nRN - Research Notes\nRP - Reprint Edition\nSE - Chapter\nSN - ISBN\nSP - Pages\nST - Short Title\nSV - Series Volume\nT2 - Book Title\nT3 - Series Title\nTA - Author, Translated\nTI - Title\nTT - Translated Title\nUR - URL\nVL - Volume\nY2 - Access Date\nID - 9\nER - \n\n\nTY - CASE\nA2 - Reporter\nA3 - Court, Higher\nA4 - Counsel\nAB - Abstract\nAD - Author Address\nAN - Accession Number\nCA - Caption\nCN - Call Number\nDA - Date Accessed\nDB - Name of Database\nDO - DOI\nDP - Database Provider\nET - Action of Higher Court\nJ2 - Parallel Citation\nKW - Keyword1, Keyword2, Keyword3\nKeyword4; Keyword5\nLA - Language\nLB - Label\nM3 - Citation of Reversal\nN1 - Notes\nNV - Reporter Abbreviation\nOP - History\nPB - Court\nPY - Year Decided\nRN - ResearchNotes\nSE - Filed Date\nSP - First Page\nST - Abbreviated Case Name\nSV - Docket Number\nT3 - Decision\nTA - Author, Translated\nTI - Case Name\nTT - Translated Title\nUR - URL\nVL - Reporter Volume\nID - 10\nER - \n\n\nTY - CTLG\nA2 - Institution\nA4 - Translator\nAB - Abstract\nAD - Author Address\nAN - Accession Number\nAU - Name1, Author\nAU - Name2, Author\nC5 - Packaging Method\nCA - Caption\nCN - Call Number\nCY - Place Published\nDA - Date\nDB - Name of Database\nDO - DOI\nDP - Database Provider\nET - Edition\nJ2 - Abbreviation\nKW - Keyword1, Keyword2, Keyword3\nKeyword4; Keyword5\nLA - Language\nLB - Label\nM1 - Series Volume\nM3 - Type of Work\nN1 - Notes\nNV - Catalog Number\nOP - Original Publication\nPB - Publisher\nPY - Year\nRN - Research Notes\nRP - Reprint Edition\nSE - Number of Pages\nSN - ISBN\nSP - Pages\nST - Short Title\nT2 - Series Title\nTA - Author, Translated\nTI - Title\nTT - Translated Title\nUR - URL\nVL - Volume\nY2 - Access Date\nID - 11\nER - \n\n\nTY - CHART\nA2 - File, Name of\nAB - Abstract\nAD - Author Address\nAN - Accession Number\nAU - By, Created\nCA - Caption\nCN - Call Number\nCY - Place Published\nDA - Date\nDB - Name of Database\nDO - DOI\nDP - Database Provider\nET - Version\nKW - Keyword1, Keyword2, Keyword3\nKeyword4; Keyword5\nLA - Language\nLB - Label\nM1 - Number\nM3 - Type of Image\nN1 - Notes\nPB - Publisher\nPY - Year\nRN - Research Notes\nSP - Description\nT2 - Image Source Program\nTA - Author, Translated\nTI - Title\nTT - Translated Title\nUR - URL\nVL - Image Size\nY2 - Access Date\nID - 12\nER - \n\n\nTY - CLSWK\nA2 - Editor, Series\nA4 - Translator\nAB - Abstract\nAD - Author Address\nAN - Accession Number\nAU - Attribution\nCA - Caption\nCN - Call Number\nCY - Place Published\nDB - Name of Database\nDO - DOI\nDP - Database Provider\nET - Edition\nJ2 - Periodical Title\nKW - Keyword1, Keyword2, Keyword3\nKeyword4; Keyword5\nLA - Language\nLB - Label\nM1 - Series Volume\nM3 - Type\nN1 - Notes\nNV - Number of Volumes\nOP - Original Publication\nPB - Publisher\nPY - Year\nRN - Research Notes\nRP - Reprint Edition\nSN - ISSN/ISBN\nSP - Number of Pages\nST - Short Title\nT2 - Series Title\nTA - Author, Translated\nTI - Title\nTT - Translated Title\nUR - URL\nVL - Volume\nY2 - Access Date\nID - 23\nER - \n\n\nTY - COMP\nA2 - Editor, Series\nAB - Abstract\nAD - Author Address\nAN - Accession Number\nAU - Programmer\nC1 - Computer\nCA - Caption\nCN - Call Number\nCY - Place Published\nDB - Name of Database\nDO - DOI\nDP - Database Provider\nET - Version\nJ2 - Periodical Title\nKW - Keyword1, Keyword2, Keyword3\nKeyword4; Keyword5\nLA - Language\nLB - Label\nM3 - Type\nN1 - Notes\nOP - Contents\nPB - Publisher\nPY - Year\nRN - Research Notes\nSN - ISBN\nSP - Description\nST - Short Title\nT2 - Series Title\nTA - Author, Translated\nTI - Title\nTT - Translated Title\nUR - URL\nVL - Edition\nY2 - Access Date\nID - 14\nER - \n\n\nTY - CPAPER\nA2 - Editor\nAB - Abstract\nAD - Author Address\nAN - Accession Number\nAU - Name1, Author\nAU - Name2, Author\nC1 - Place Published\nCA - Caption\nCY - Conference Location\nDA - Date\nDB - Name of Database\nDO - DOI\nDP - Database Provider\nKW - Keyword1, Keyword2, Keyword3\nKeyword4; Keyword5\nLA - Language\nLB - Label\nM1 - Issue\nM3 - Type\nN1 - Notes\nPB - Publisher\nPY - Year\nRN - Research Notes\nSP - Pages\nT2 - Conference Name\nTA - Author, Translated\nTI - Title\nTT - Translated Title\nUR - URL\nVL - Volume\nY2 - Access Date\nID - 15\nER - \n\n\nTY - CONF\nA2 - Editor\nA3 - Editor, Series\nA4 - Sponsor\nAB - Abstract\nAD - Author Address\nAN - Accession Number\nAU - Name1, Author\nAU - Name2, Author\nC1 - Place Published\nC2 - Year Published\nC3 - Proceedings Title\nC5 - Packaging Method\nCA - Caption\nCN - Call Number\nCY - Conference Location\nDA - Date\nDB - Name of Database\nDO - DOI\nDP - Database Provider\nET - Edition\nKW - Keyword1, Keyword2, Keyword3\nKeyword4; Keyword5\nLA - Language\nLB - Label\nM1 - Issue\nN1 - Notes\nNV - Number of Volumes\nOP - Source\nPB - Publisher\nPY - Year of Conference\nRN - Research Notes\nSN - ISBN\nSP - Pages\nST - Short Title\nT2 - Conference Name\nT3 - Series Title\nTA - Author, Translated\nTI - Title\nTT - Translated Title\nUR - URL\nVL - Volume\nY2 - Access Date\nID - 16\nER - \n\n\nTY - DATA\nA2 - Producer\nA4 - Agency, Funding\nAB - Abstract\nAD - Author Address\nAN - Accession Number\nAU - Investigators\nC1 - Time Period\nC2 - Unit of Observation\nC3 - Data Type\nC4 - Dataset(s)\nCA - Caption\nCN - Call Number\nCY - Place Published\nDA - Date of Collection\nDB - Name of Database\nDO - DOI\nDP - Database Provider\nET - Version\nJ2 - Abbreviation\nKW - Keyword1, Keyword2, Keyword3\nKeyword4; Keyword5\nLA - Language\nLB - Label\nN1 - Notes\nNV - Study Number\nOP - Version History\nPB - Distributor\nPY - Year\nRI - Geographic Coverage\nRN - Research Notes\nSE - Original Release Date\nSN - ISSN\nST - Short Title\nT3 - Series Title\nTA - Author, Translated\nTI - Title\nTT - Translated Title\nUR - URL\nY2 - Access Date\nID - 17\nER - \n\n\nTY - DICT\nA2 - Editor\nA4 - Translator\nAB - Abstract\nAD - Author Address\nAN - Accession Number\nAU - Name1, Author\nAU - Name2, Author\nC1 - Term\nCA - Caption\nCN - Call Number\nCY - Place Published\nDB - Name of Database\nDO - DOI\nDP - Database Provider\nET - Edition\nJ2 - Abbreviation\nKW - Keyword1, Keyword2, Keyword3\nKeyword4; Keyword5\nLA - Language\nLB - Label\nM1 - Number\nM3 - Type of Work\nN1 - Notes\nNV - Number of Volumes\nOP - Original Publication\nPB - Publisher\nPY - Year\nRI - Reviewed Item\nRN - Research Notes\nRP - Reprint Edition\nSE - Version\nSN - ISBN\nSP - Pages\nST - Short Title\nT2 - Dictionary Title\nTA - Author, Translated\nTI - Title\nTT - Translated Title\nUR - URL\nVL - Volume\nY2 - Access Date\nID - 13\nER - \n\n\nTY - EDBOOK\nA2 - Editor, Series\nA4 - Translator\nAB - Abstract\nAD - Editor Address\nAN - Accession Number\nAU - Editor\nCA - Caption\nCN - Call Number\nCY - Place Published\nDA - Date\nDB - Name of Database\nDO - DOI\nDP - Database Provider\nET - Edition\nJ2 - Periodical Title\nKW - Keyword1, Keyword2, Keyword3\nKeyword4; Keyword5\nLA - Language\nLB - Label\nM1 - Series Volume\nM3 - Type of Work\nN1 - Notes\nNV - Number of Volumes\nOP - Original Publication\nPB - Publisher\nPY - Year\nRN - Research Notes\nRP - Reprint Edition\nSN - ISBN\nSP - Number of Pages\nST - Short Title\nT2 - Series Title\nTA - Author, Translated\nTI - Title\nTT - Translated Title\nUR - URL\nVL - Volume\nY2 - Access Date\nID - 19\nER - \n\n\nTY - EJOUR\nAB - Abstract\nAD - Author Address\nAN - Accession Number\nAU - Name1, Author\nAU - Name2, Author\nC1 - Year Cited\nC2 - Date Cited\nC3 - PMCID\nC4 - Reviewer\nC5 - Issue Title\nC6 - NIHMSID\nC7 - Article Number\nCA - Caption\nCY - Place Published\nDA - Date Accessed\nDB - Name of Database\nDO - DOI\nDP - Database Provider\nET - Edition\nJ2 - Periodical Title\nKW - Keyword1, Keyword2, Keyword3\nKeyword4; Keyword5\nLA - Language\nLB - Label\nM1 - Issue\nM3 - Type of Work\nN1 - Notes\nNV - Document Number\nPB - Publisher\nPY - Year\nRI - Reviewed Item\nRN - Research Notes\nRP - Reprint Edition\nSE - E-Pub Date\nSN - ISSN\nSP - Pages\nST - Short Title\nT2 - Periodical Title\nT3 - Website Title\nTA - Author, Translated\nTI - Title\nTT - Translated Title\nUR - URL\nVL - Volume\nID - 20\nER - \n\n\nTY - EBOOK\nA2 - Editor\nA3 - Editor, Series\nAB - Abstract\nAD - Author Address\nAN - Accession Number\nAU - Name1, Author\nAU - Name2, Author\nC1 - Year Cited\nC2 - Date Cited\nC3 - Title Prefix\nC4 - Reviewer\nC5 - Last Update Date\nC6 - NIHMSID\nC7 - PMCID\nCA - Caption\nCN - Call Number\nCY - Place Published\nDA - Date Accessed\nDB - Name of Database\nDO - DOI\nDP - Database Provider\nET - Edition\nKW - Keyword1, Keyword2, Keyword3\nKeyword4; Keyword5\nLA - Language\nLB - Label\nM3 - Type of Medium\nN1 - Notes\nNV - Version\nOP - Original Publication\nPB - Publisher\nPY - Year\nRI - Reviewed Item\nRN - Research Notes\nRP - Reprint Edition\nSN - ISBN\nSP - Number of Pages\nT2 - Secondary Title\nT3 - Series Title\nTA - Author, Translated\nTI - Title\nTT - Translated Title\nUR - URL\nVL - Volume\nID - 21\nER - \n\n\nTY - ECHAP\nA2 - Editor\nA3 - Editor, Series\nA4 - Translator\nAB - Abstract\nAD - Author Address\nAN - Accession Number\nAU - Name1, Author\nAU - Name2, Author\nC1 - Section\nC3 - Title Prefix\nC4 - Reviewer\nC5 - Packaging Method\nC6 - NIHMSID\nC7 - PMCID\nCA - Caption\nCN - Call Number\nCY - Place Published\nDA - Date\nDB - Name of Database\nDO - DOI\nDP - Database Provider\nET - Edition\nKW - Keyword1, Keyword2, Keyword3\nKeyword4; Keyword5\nLA - Language\nLB - Label\nM1 - Series Volume\nM3 - Type of Work\nN1 - Notes\nNV - Number of Volumes\nOP - Original Publication\nPB - Publisher\nPY - Year\nRI - Reviewed Item\nRN - Research Notes\nRP - Reprint Edition\nSN - ISSN/ISBN\nSP - Number of Pages\nST - Short Title\nT2 - Book Title\nT3 - Series Title\nTA - Author, Translated\nTI - Title\nTT - Translated Title\nUR - URL\nVL - Volume\nY2 - Access Date\nID - 22\nER - \n\n\nTY - ENCYC\nA2 - Editor\nA4 - Translator\nAB - Abstract\nAD - Author Address\nAN - Accession Number\nAU - Name1, Author\nAU - Name2, Author\nC1 - Term\nCA - Caption\nCN - Call Number\nCY - Place Published\nDA - Date\nDB - Name of Database\nDO - DOI\nDP - Database Provider\nET - Edition\nJ2 - Abbreviation\nKW - Keyword1, Keyword2, Keyword3\nKeyword4; Keyword5\nLA - Language\nLB - Label\nN1 - Notes\nNV - Number of Volumes\nOP - Original Publication\nPB - Publisher\nPY - Year\nRI - Reviewed Item\nRN - Research Notes\nRP - Reprint Edition\nSN - ISBN\nSP - Pages\nST - Short Title\nT2 - Encyclopedia Title\nTA - Author, Translated\nTI - Title\nTT - Translated Title\nUR - URL\nVL - Volume\nY2 - Access Date\nID - 18\nER - \n\n\nTY - EQUA\nA2 - File, Name of\nAB - Abstract\nAD - Author Address\nAN - Accession Number\nAU - By, Created\nCA - Caption\nCN - Call Number\nCY - Place Published\nDA - Date\nDB - Name of Database\nDO - DOI\nDP - Database Provider\nET - Version\nKW - Keyword1, Keyword2, Keyword3\nKeyword4; Keyword5\nLA - Language\nLB - Label\nM1 - Number\nM3 - Type of Image\nN1 - Notes\nPB - Publisher\nPY - Year\nRN - Research Notes\nSP - Description\nT2 - Image Source Program\nTA - Author, Translated\nTI - Title\nTT - Translated Title\nUR - URL\nVL - Image Size\nY2 - Access Date\nID - 24\nER - \n\n\nTY - FIGURE\nA2 - File, Name of\nAB - Abstract\nAD - Author Address\nAN - Accession Number\nAU - By, Created\nCN - Call Number\nCA - Caption\nCY - Place Published\nDA - Date\nDB - Name of Database\nDO - DOI\nDP - Database Provider\nET - Version\nKW - Keyword1, Keyword2, Keyword3\nKeyword4; Keyword5\nLA - Language\nLB - Label\nM1 - Number\nM3 - Type of Image\nN1 - Notes\nPB - Publisher\nPY - Year\nRN - Research Notes\nSP - Description\nT2 - Image Source Program\nTA - Author, Translated\nTI - Title\nTT - Translated Title\nUR - URL\nVL - Image Size\nY2 - Access Date\nID - 25\nER - \n\n\nTY - MPCT\nA2 - Director, Series\nA3 - Producer\nA4 - Performers\nAB - Synopsis\nAD - Author Address\nAN - Accession Number\nAU - Director\nC1 - Cast\nC2 - Credits\nC4 - Genre\nC5 - Format\nCA - Caption\nCN - Call Number\nCY - Place Published\nDA - Date Released\nDB - Name of Database\nDO - DOI\nDP - Database Provider\nET - Edition\nJ2 - Periodical Title\nKW - Keyword1, Keyword2, Keyword3\nKeyword4; Keyword5\nLA - Language\nLB - Label\nM3 - Medium\nN1 - Notes\nPB - Distributor\nPY - Year Released\nRN - Research Notes\nRP - Reprint Edition\nSP - Running Time\nST - Short Title\nT2 - Series Title\nTA - Author, Translated\nTI - Title\nTT - Translated Title\nUR - URL\nY2 - Access Date\nID - 26\nER - \n\n\nTY - GEN\nA2 - Author, Secondary\nA3 - Author, Tertiary\nA4 - Author, Subsidiary\nAB - Abstract\nAD - Author Address\nAN - Accession Number\nAU - Name1, Author\nAU - Name2, Author\nC1 - Custom 1\nC2 - Custom 2\nC3 - Custom 3\nC4 - Custom 4\nC5 - Custom 5\nC6 - Custom 6\nC7 - Custom 7\nC8 - Custom 8\nCA - Caption\nCN - Call Number\nCY - Place Published\nDA - Date\nDB - Name of Database\nDO - DOI\nDP - Database Provider\nET - Edition\nJ2 - Periodical Title\nKW - Keyword1, Keyword2, Keyword3\nKeyword4; Keyword5\nLA - Language\nLB - Label\nM1 - Number\nM3 - Type of Work\nN1 - Notes\nNV - Number of Volumes\nOP - Original Publication\nPB - Publisher\nPY - Year\nRI - Reviewed Item\nRN - Research Notes\nRP - Reprint Edition\nSE - Section\nSN - ISSN/ISBN\nSP - Pages\nST - Short Title\nT2 - Secondary Title\nT3 - Tertiary Title\nTA - Author, Translated\nTI - Title\nTT - Translated Title\nUR - URL\nVL - Volume\nY2 - Access Date\nID - 27\nER - \n\n\nTY - GOVDOC\nA2 - Department\nAB - Abstract\nAD - Author Address\nAN - Accession Number\nAU - Name1, Author\nAU - Name2, Author\nC1 - Government Body\nC2 - Congress Number\nC3 - Congress Session\nCA - Caption\nCY - Place Published\nDB - Name of Database\nDO - DOI\nDP - Database Provider\nET - Edition\nKW - Keyword1, Keyword2, Keyword3\nKeyword4; Keyword5\nLA - Language\nLB - Label\nM1 - Number\nN1 - Notes\nPB - Publisher\nPY - Year\nRN - Research Notes\nSE - Section\nSN - ISSN/ISBN\nSP - Pages\nT3 - Series Title\nTA - Author, Translated\nTI - Title\nTT - Translated Title\nUR - URL\nVL - Volume\nY2 - Access Date\nID - 28\nER - \n\n\nTY - GRANT\nA4 - Translator\nAB - Abstract\nAD - Author Address\nAN - Accession Number\nAU - Investigators\nC1 - Contact Name\nC2 - Contact Address\nC3 - Contact Phone\nC4 - Contact Fax\nC5 - Funding Number\nC6 - CFDA Number\nCA - Caption\nCN - Call Number\nCY - Activity Location\nDA - Deadline\nDB - Name of Database\nDO - DOI\nDP - Database Provider\nET - Requirements\nJ2 - Periodical Title\nKW - Keyword1, Keyword2, Keyword3\nKeyword4; Keyword5\nLA - Language\nLB - Label\nM1 - Status\nM3 - Funding Type\nN1 - Notes\nNV - Amount Received\nOP - Original Grant Number\nPB - Sponsoring Agency\nPY - Year\nRI - Reviewed Item\nRN - Research Notes\nRP - Review Date\nSE - Duration of Grant\nSP - Pages\nST - Short Title\nTA - Author, Translated\nTI - Title of Grant\nTT - Translated Title\nUR - URL\nVL - Amount Requested\nY2 - Access Date\nID - 29\nER - \n\n\nTY - HEAR\nAB - Abstract\nAD - Author Address\nAN - Accession Number\nC2 - Congress Number\nCA - Caption\nCN - Call Number\nCY - Place Published\nDA - Date\nDB - Name of Database\nDO - DOI\nDP - Database Provider\nET - Session\nKW - Keyword1, Keyword2, Keyword3\nKeyword4; Keyword5\nLA - Language\nLB - Label\nM1 - Document Number\nN1 - Notes\nNV - Number of Volumes\nOP - History\nPB - Publisher\nPY - Year\nRN - Research Notes\nSN - ISBN\nSP - Pages\nST - Short Title\nT2 - Committee\nT3 - Legislative Body\nTA - Author, Translated\nTI - Title\nTT - Translated Title\nUR - URL\nY2 - Access Date\nID - 30\nER - \n\n\nTY - JOUR\nAB - Abstract\nAD - Author Address\nAN - Accession Number\nAU - Name1, Author\nAU - Name2, Author\nC1 - Legal Note\nC2 - PMCID\nC6 - NIHMSID\nC7 - Article Number\nCA - Caption\nCN - Call Number\nDA - Date\nDB - Name of Database\nDO - DOI\nDP - Database Provider\nET - Epub Date\nJ2 - Periodical Title\nLA - Language\nLB - Label\nIS - Issue\nM3 - Type of Article\nOP - Original Publication\nPY - Year\nRI - Reviewed Item\nRN - Research Notes\nRP - Reprint Edition\nSE - Start Page\nSN - ISSN\nSP - Pages\nST - Short Title\nT2 - Journal\nTA - Author, Translated\nTI - Title\nTT - Translated Title\nUR - URL\nVL - Volume\nY2 - Access Date\nID - 31\nER - \n\n\nTY - LEGAL\nA2 - Organization, Issuing\nAB - Abstract\nAD - Author Address\nAN - Accession Number\nAU - Name1, Author\nAU - Name2, Author\nCA - Caption\nCN - Call Number\nCY - Place Published\nDA - Date of Code Edition\nDB - Name of Database\nDO - DOI\nDP - Database Provider\nET - Edition\nJ2 - Periodical Title\nKW - Keyword1, Keyword2, Keyword3\nKeyword4; Keyword5\nLA - Language\nLB - Label\nM1 - Start Page\nM3 - Type of Work\nN1 - Notes\nNV - Session Number\nOP - History\nPB - Publisher\nPY - Year\nRN - Research Notes\nSE - Section Number\nSN - ISSN/ISBN\nSP - Pages\nT2 - Title Number\nT3 - Supplement No.\nTA - Author, Translated\nTI - Title\nTT - Translated Title\nUR - URL\nVL - Rule Number\nY2 - Access Date\nID - 32\nER - \n\n\nTY - MGZN\nAB - Abstract\nAD - Author Address\nAN - Accession Number\nAU - Name1, Author\nAU - Name2, Author\nCA - Caption\nCN - Call Number\nCY - Place Published\nDA - Date\nDB - Name of Database\nDO - DOI\nDP - Database Provider\nET - Edition\nJ2 - Periodical Title\nKW - Keyword1, Keyword2, Keyword3\nKeyword4; Keyword5\nLA - Language\nLB - Label\nM1 - Issue Number\nM3 - Type of Article\nN1 - Notes\nNV - Frequency\nOP - Original Publication\nPB - Publisher\nPY - Year\nRI - Reviewed Item\nRN - Research Notes\nRP - Reprint Edition\nSE - Start Page\nSN - ISSN\nSP - Pages\nST - Short Title\nT2 - Magazine\nTA - Author, Translated\nTI - Title\nTT - Translated Title\nUR - URL\nVL - Volume\nY2 - Access Date\nID - 33\nER - \n\n\nTY - MANSCPT\nAB - Abstract\nAD - Author Address\nAN - Accession Number\nAU - Name1, Author\nAU - Name2, Author\nCA - Caption\nCN - Call Number\nCY - Place Published\nDA - Date\nDB - Name of Database\nDO - DOI\nDP - Database Provider\nET - Description of Material\nJ2 - Periodical Title\nKW - Keyword1, Keyword2, Keyword3\nKeyword4; Keyword5\nLA - Language\nLB - Label\nM1 - Folio Number\nM3 - Type of Work\nN1 - Notes\nNV - Manuscript Number\nPB - Library/Archive\nPY - Year\nRN - Research Notes\nRP - Reprint Edition\nSE - Start Page\nSP - Pages\nST - Short Title\nT2 - Collection Title\nTA - Author, Translated\nTI - Title\nTT - Translated Title\nUR - URL\nVL - Volume/Storage Container\nY2 - Access Date\nID - 34\nER - \n\n\nTY - MAP\nA2 - Editor, Series\nAB - Abstract\nAD - Author Address\nAN - Accession Number\nAU - Cartographer\nC1 - Scale\nC2 - Area\nC3 - Size\nC5 - Packaging Method\nCA - Caption\nCN - Call Number\nCY - Place Published\nDA - Date\nDB - Name of Database\nDO - DOI\nDP - Database Provider\nET - Edition\nJ2 - Periodical Title\nKW - Keyword1, Keyword2, Keyword3\nKeyword4; Keyword5\nLA - Language\nLB - Label\nM3 - Type\nN1 - Notes\nPB - Publisher\nPY - Year\nRN - Research Notes\nRP - Reprint Edition\nSN - ISSN/ISBN\nSP - Description\nST - Short Title\nT2 - Series Title\nTA - Author, Translated\nTI - Title\nTT - Translated Title\nUR - URL\nY2 - Access Date\nID - 35\nER - \n\n\nTY - MUSIC\nA2 - Editor\nA3 - Editor, Series\nA4 - Producer\nAB - Abstract\nAD - Author Address\nAN - Accession Number\nAU - Composer\nC1 - Format of Music\nC2 - Form of Composition\nC3 - Music Parts\nC4 - Target Audience\nC5 - Accompanying Matter\nCA - Caption\nCN - Call Number\nCY - Place Published\nDA - Date\nDB - Name of Database\nDO - DOI\nDP - Database Provider\nET - Edition\nKW - Keyword1, Keyword2, Keyword3\nKeyword4; Keyword5\nLA - Language\nLB - Label\nM3 - Form of Item\nN1 - Notes\nNV - Number of Volumes\nOP - Original Publication\nPB - Publisher\nPY - Year\nRN - Research Notes\nRP - Reprint Edition\nSE - Section\nSN - ISBN\nSP - Pages\nST - Short Title\nT2 - Album Title\nT3 - Series Title\nTA - Author, Translated\nTI - Title\nTT - Translated Title\nUR - URL\nVL - Volume\nY2 - Access Date\nID - 36\nER - \n\n\nTY - NEWS\nAB - Abstract\nAD - Author Address\nAN - Accession Number\nAU - Reporter\nC1 - Column\nC2 - Issue\nCA - Caption\nCN - Call Number\nCY - Place Published\nDA - Issue Date\nDB - Name of Database\nDO - DOI\nDP - Database Provider\nET - Edition\nKW - Keyword1, Keyword2, Keyword3\nKeyword4; Keyword5\nLA - Language\nLB - Label\nM1 - Start Page\nM3 - Type of Article\nN1 - Notes\nNV - Frequency\nOP - Original Publication\nPB - Publisher\nPY - Year\nRI - Reviewed Item\nRN - Research Notes\nRP - Reprint Edition\nSE - Section\nSN - ISSN\nSP - Pages\nST - Short Title\nT2 - Newspaper\nTA - Author, Translated\nTI - Title\nTT - Translated Title\nUR - URL\nVL - Volume\nY2 - Access Date\nID - 37\nER - \n\n\nTY - DBASE\nAB - Abstract\nAD - Author Address\nAN - Accession Number\nAU - Name1, Author\nAU - Name2, Author\nCA - Caption\nCY - Place Published\nDA - Date Accessed\nDB - Name of Database\nDO - DOI\nDP - Database Provider\nET - Date Published\nKW - Keyword1, Keyword2, Keyword3\nKeyword4; Keyword5\nLA - Language\nLB - Label\nM3 - Type of Work\nN1 - Notes\nPB - Publisher\nPY - Year\nRN - Research Notes\nSN - Report Number\nSP - Pages\nT2 - Periodical\nTA - Author, Translated\nTI - Title\nTT - Translated Title\nUR - URL\nVL - Volume\nID - 38\nER - \n\n\nTY - MULTI\nA2 - Editor, Series\nAB - Abstract\nAD - Author Address\nAN - Accession Number\nAU - By, Created\nC1 - Year Cited\nC2 - Date Cited\nC5 - Format/Length\nCA - Caption\nDA - Date Accessed\nDB - Name of Database\nDO - DOI\nDP - Database Provider\nKW - Keyword1, Keyword2, Keyword3\nKeyword4; Keyword5\nLA - Language\nLB - Label\nM1 - Number of Screens\nM3 - Type of Work\nN1 - Notes\nPB - Distributor\nPY - Year\nRN - Research Notes\nT2 - Series Title\nTA - Author, Translated\nTI - Title\nTT - Translated Title\nUR - URL\nID - 39\nER - \n\n\nTY - PAMP\nA2 - Institution\nA4 - Translator\nAB - Abstract\nAD - Author Address\nAN - Accession Number\nAU - Name1, Author\nAU - Name2, Author\nC5 - Packaging Method\nCA - Caption\nCN - Call Number\nCY - Place Published\nDA - Date\nDB - Name of Database\nDO - DOI\nDP - Database Provider\nET - Edition\nJ2 - Abbreviation\nKW - Keyword1, Keyword2, Keyword3\nKeyword4; Keyword5\nLA - Language\nLB - Label\nM1 - Series Volume\nM3 - Type of Work\nN1 - Notes\nOP - Original Publication\nPB - Publisher\nPY - Year\nRN - Research Notes\nRP - Reprint Edition\nM2 - Number of Pages\nSN - ISBN\nSP - Pages\nST - Short Title\nT2 - Published Source\nTA - Author, Translated\nTI - Title\nTT - Translated Title\nUR - URL\nVL - Number\nY2 - Access Date\nID - 40\nER - \n\n\nTY - PAT\nA2 - Organization, Issuing\nA3 - International Author\nAB - Abstract\nAD - Inventor Address\nAN - Accession Number\nAU - Inventor\nC2 - Issue Date\nC3 - Designated States\nC4 - Attorney/Agent\nC5 - References\nC6 - Legal Status\nCA - Caption\nCN - Call Number\nCY - Country\nDA - Date\nDB - Name of Database\nDO - DOI\nDP - Database Provider\nET - International Patent Classification\nKW - Keyword1, Keyword2, Keyword3\nKeyword4; Keyword5\nLA - Language\nLB - Label\nM1 - Application Number\nM3 - Patent Type\nN1 - Notes\nNV - US Patent Classification\nOP - Priority Numbers\nPB - Assignee\nPY - Year\nRN - Research Notes\nSE - International Patent Number\nSN - Patent Number\nSP - Pages\nST - Short Title\nT2 - Published Source\nT3 - Title, International\nTA - Author, Translated\nTI - Title\nTT - Translated Title\nUR - URL\nVL - Patent Version Number\nY2 - Access Date\nID - 41\nER - \n\n\nTY - PCOMM\nA2 - Recipient\nAB - Abstract\nAD - Author Address\nAN - Accession Number\nAU - Name1, Author\nAU - Name2, Author\nC1 - Senders E-Mail\nC2 - Recipients E-Mail\nCN - Call Number\nCA - Caption\nCY - Place Published\nDA - Date\nDB - Name of Database\nDO - DOI\nDP - Database Provider\nET - Description\nJ2 - Abbreviation\nKW - Keyword1, Keyword2, Keyword3\nKeyword4; Keyword5\nLA - Language\nLB - Label\nM1 - Folio Number\nM3 - Type\nN1 - Notes\nNV - Communication Number\nPB - Publisher\nPY - Year\nRN - Research Notes\nSP - Pages\nST - Short Title\nTA - Author, Translated\nTI - Title\nTT - Translated Title\nUR - URL\nY2 - Access Date\nID - 42\nER - \n\n\nTY - RPRT\nA2 - Editor, Series\nA3 - Publisher\nA4 - Department/Division\nAB - Abstract\nAD - Author Address\nAN - Accession Number\nAU - Name1, Author\nAU - Name2, Author\nC6 - Issue\nCA - Caption\nCN - Call Number\nCY - Place Published\nDA - Date\nDB - Name of Database\nDO - DOI\nDP - Database Provider\nET - Edition\nJ2 - Periodical Title\nKW - Keyword1, Keyword2, Keyword3\nKeyword4; Keyword5\nLA - Language\nLB - Label\nM1 - Document Number\nM3 - Type\nN1 - Notes\nNV - Series Volume\nOP - Contents\nPB - Institution\nPY - Year\nRN - Research Notes\nRP - Notes\nSN - Report Number\nSP - Pages\nST - Short Title\nTA - Author, Translated\nT2 - Series Title\nTI - Title\nTT - Translated Title\nUR - URL\nVL - Volume\nY2 - Access Date\nID - 43\nER - \n\n\nTY - SER\nA2 - Editor\nA3 - Editor, Series\nA4 - Editor, Volume\nAB - Abstract\nAD - Author Address\nAN - Accession Number\nAU - Name1, Author\nAU - Name2, Author\nC1 - Section\nC2 - Report Number\nC5 - Packaging Method\nCA - Caption\nCN - Call Number\nCY - Place Published\nDA - Date\nDB - Name of Database\nDO - DOI\nDP - Database Provider\nET - Edition\nJ2 - Abbreviation\nKW - Keyword1, Keyword2, Keyword3\nKeyword4; Keyword5\nLA - Language\nLB - Label\nM1 - Series Volume\nM3 - Type of Work\nN1 - Notes\nNV - Number of Volumes\nOP - Original Publication\nPB - Publisher\nPY - Year\nRI - Reviewed Item\nRN - Research Notes\nRP - Reprint Edition\nSE - Chapter\nSN - ISBN\nSP - Pages\nST - Short Title\nT2 - Secondary Title\nT3 - Series Title\nTA - Author, Translated\nTI - Title\nTT - Translated Title\nUR - URL\nVL - Volume\nY2 - Access Date\nID - 44\nER - \n\n\nTY - STAND\nAB - Abstract\nAD - Author Address\nAN - Accession Number\nAU - Institution\nCA - Caption\nCN - Call Number\nCY - Place Published\nDA - Date\nDB - Name of Database\nDO - DOI\nDP - Database Provider\nJ2 - Abbreviation\nKW - Keyword1, Keyword2, Keyword3\nKeyword4; Keyword5\nLA - Language\nLB - Label\nM1 - Start Page\nM3 - Type of Work\nN1 - Notes\nNV - Session Number\nPB - Publisher\nPY - Year\nRN - Research Notes\nSE - Section Number\nSN - Document Number\nSP - Pages\nT2 - Section Title\nT3 - Paper Number\nTA - Author, Translated\nTI - Title\nTT - Translated Title\nUR - URL\nVL - Rule Number\nY2 - Access Date\nID - 45\nER - \n\n\nTY - STAT\nAB - Abstract\nAD - Author Address\nAN - Accession Number\nC5 - Publisher\nC6 - Volume\nCA - Caption\nCN - Call Number\nCY - Country\nDA - Date Enacted\nDB - Name of Database\nDO - DOI\nDP - Database Provider\nET - Session\nJ2 - Abbreviation\nKW - Keyword1, Keyword2, Keyword3\nKeyword4; Keyword5\nLA - Language\nLB - Label\nM1 - Public Law Number\nN1 - Notes\nNV - Statute Number\nOP - History\nPB - Source\nPY - Year\nRI - Article Number\nRN - Research Notes\nSE - Sections\nSP - Pages\nST - Short Title\nT2 - Code\nT3 - International Source\nTA - Author, Translated\nTI - Name of Act\nTT - Translated Title\nUR - URL\nVL - Code Number\nY2 - Access Date\nID - 46\nER - \n\n\nTY - THES\nA3 - Advisor\nAB - Abstract\nAD - Author Address\nAN - Accession Number\nAU - Name1, Author\nAU - Name2, Author\nCA - Caption\nCN - Call Number\nCY - Place Published\nDA - Date\nDB - Name of Database\nDO - DOI\nDP - Database Provider\nKW - Keyword1, Keyword2, Keyword3\nKeyword4; Keyword5\nLA - Language\nLB - Label\nM1 - Document Number\nM3 - Thesis Type\nN1 - Notes\nPB - University\nPY - Year\nRN - Research Notes\nSP - Number of Pages\nST - Short Title\nT2 - Academic Department\nTA - Author, Translated\nTI - Title\nTT - Translated Title\nUR - URL\nVL - Degree\nY2 - Access Date\nID - 47\nER - \n\n\nTY - UNPB\nA2 - Editor, Series\nAB - Abstract\nAD - Author Address\nAU - Name1, Author\nAU - Name2, Author\nCA - Caption\nCY - Place Published\nDA - Date\nDB - Name of Database\nDO - DOI\nDP - Database Provider\nJ2 - Abbreviation\nKW - Keyword1, Keyword2, Keyword3\nKeyword4; Keyword5\nLA - Language\nLB - Label\nM1 - Number\nM3 - Type of Work\nN1 - Notes\nPB - Institution\nPY - Year\nRN - Research Notes\nSP - Pages\nST - Short Title\nT2 - Series Title\nT3 - Department\nTA - Author, Translated\nTI - Title of Work\nTT - Translated Title\nUR - URL\nY2 - Access Date\nID - 48\nER - \n\n\nTY - WEB\nA2 - Editor, Series\nAB - Abstract\nAD - Author Address\nAN - Accession Number\nAU - Name1, Author\nAU - Name2, Author\nC1 - Year Cited\nC2 - Date Cited\nCA - Caption\nCN - Call Number\nCY - Place Published\nDA - Last Update Date\nDB - Name of Database\nDO - DOI\nDP - Database Provider\nET - Edition\nJ2 - Periodical Title\nKW - Keyword1, Keyword2, Keyword3\nKeyword4; Keyword5\nLA - Language\nLB - Label\nM1 - Access Date\nM3 - Type of Medium\nN1 - Notes\nOP - Contents\nPB - Publisher\nPY - Year\nRN - Research Notes\nSN - ISBN\nSP - Description\nST - Short Title\nT2 - Series Title\nTA - Author, Translated\nTI - Title\nTT - Translated Title\nUR - URL\nVL - Access Year\nID - 49\nER - \n\n\n",
"items": [
{
"itemType": "document",
"title": "Title",
"creators": [
{
"lastName": "Name1",
"firstName": "Author",
"creatorType": "author"
},
{
"lastName": "Name2",
"firstName": "Author",
"creatorType": "author"
}
],
"date": "0000 Year Date",
"abstractNote": "Abstract",
"archive": "Name of Database",
"archiveLocation": "Accession Number",
"extra": "DOI: 10.1234/123456\nPublication Number",
"language": "Language",
"libraryCatalog": "Database Provider",
"publisher": "Publisher",
"shortTitle": "Short Title",
"url": "URL",
"attachments": [],
"tags": [
{
"tag": "Keyword1, Keyword2, Keyword3"
},
{
"tag": "Keyword4"
},
{
"tag": "Keyword5"
}
],
"notes": [
{
"note": "<p>Notes</p>"
},
{
"note": "<p>ResearchNotes</p>"
}
],
"seeAlso": []
},
{
"itemType": "document",
"title": "Title",
"creators": [
{
"lastName": "Editor",
"creatorType": "editor",
"fieldMode": 1
},
{
"lastName": "Translator",
"creatorType": "translator",
"fieldMode": 1
},
{
"lastName": "Name1",
"firstName": "Author",
"creatorType": "author"
},
{
"lastName": "Name2",
"firstName": "Author",
"creatorType": "author"
}
],
"date": "0000 Year Date",
"abstractNote": "Abstract",
"archive": "Name of Database",
"archiveLocation": "Accession Number",
"callNumber": "Call Number",
"extra": "Text Number",
"language": "Language",
"libraryCatalog": "Database Provider",
"publisher": "Publisher",
"shortTitle": "Short Title",
"url": "URL",
"attachments": [],
"tags": [
{
"tag": "Keyword1, Keyword2, Keyword3"
},
{
"tag": "Keyword4"
},
{
"tag": "Keyword5"
}
],
"notes": [
{
"note": "<p>Notes</p>"
},
{
"note": "<p>ResearchNotes</p>"
}
],
"seeAlso": []
},
{
"itemType": "artwork",
"title": "Title",
"creators": [
{
"lastName": "Artist",
"creatorType": "artist",
"fieldMode": 1
}
],
"date": "0000 Year Date",
"abstractNote": "Abstract",
"archive": "Name of Database",
"archiveLocation": "Accession Number",
"artworkMedium": "Type of Work",
"artworkSize": "Size/Length",
"callNumber": "Call Number",
"extra": "Size",
"language": "Language",
"libraryCatalog": "Database Provider",
"shortTitle": "Short Title",
"url": "URL",
"attachments": [],
"tags": [
{
"tag": "Keyword1, Keyword2, Keyword3"
},
{
"tag": "Keyword4"
},
{
"tag": "Keyword5"
}
],
"notes": [
{
"note": "<p>Notes</p>"
},
{
"note": "<p>Research Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "film",
"title": "Title",
"creators": [
{
"lastName": "Editor",
"firstName": "Series",
"creatorType": "producer"
},
{
"lastName": "Name1",
"firstName": "Author",
"creatorType": "director"
},
{
"lastName": "Name2",
"firstName": "Author",
"creatorType": "director"
}
],
"date": "0000 Year Date",
"abstractNote": "Abstract",
"archive": "Name of Database",
"archiveLocation": "Accession Number",
"callNumber": "Call Number",
"distributor": "Publisher",
"extra": "Number",
"language": "Language",
"libraryCatalog": "Database Provider",
"shortTitle": "Short Title",
"url": "URL",
"videoRecordingFormat": "Format",
"attachments": [],
"tags": [
{
"tag": "Keyword1, Keyword2, Keyword3"
},
{
"tag": "Keyword4"
},
{
"tag": "Keyword5"
}
],
"notes": [
{
"note": "<p>Notes</p>"
},
{
"note": "<p>Research Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "bill",
"title": "Title",
"creators": [
{
"lastName": "Sponsor",
"creatorType": "sponsor",
"fieldMode": 1
}
],
"date": "0000 Year Date",
"abstractNote": "Abstract",
"billNumber": "Bill Number",
"code": "Code",
"codePages": "Code Pages",
"codeVolume": "Code Volume",
"history": "History",
"language": "Language",
"legislativeBody": "Legislative Body",
"section": "Code Section",
"session": "Session",
"shortTitle": "Short Title",
"url": "URL",
"attachments": [],
"tags": [
{
"tag": "Keyword1, Keyword2, Keyword3"
},
{
"tag": "Keyword4"
},
{
"tag": "Keyword5"
}
],
"notes": [
{
"note": "<p>Notes</p>"
},
{
"note": "<p>Research Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "blogPost",
"title": "Title of Entry",
"creators": [
{
"lastName": "Name1",
"firstName": "Author",
"creatorType": "author"
},
{
"lastName": "Name2",
"firstName": "Author",
"creatorType": "author"
}
],
"date": "0000 Year Last",
"abstractNote": "Abstract",
"blogTitle": "Periodical Title",
"language": "Language",
"shortTitle": "Short Title",
"url": "URL",
"websiteType": "Type of Medium",
"attachments": [],
"tags": [
{
"tag": "Keyword1, Keyword2, Keyword3"
},
{
"tag": "Keyword4"
},
{
"tag": "Keyword5"
}
],
"notes": [
{
"note": "<p>Notes</p>"
},
{
"note": "<p>Research Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "book",
"title": "Title",
"creators": [
{
"lastName": "Editor",
"firstName": "Series",
"creatorType": "seriesEditor"
},
{
"lastName": "Editor",
"creatorType": "editor",
"fieldMode": 1
},
{
"lastName": "Translator",
"creatorType": "translator",
"fieldMode": 1
},
{
"lastName": "Name1",
"firstName": "Author",
"creatorType": "author"
},
{
"lastName": "Name2",
"firstName": "Author",
"creatorType": "author"
}
],
"date": "0000 Year Date",
"ISBN": "ISBN",
"abstractNote": "Abstract",
"archive": "Name of Database",
"archiveLocation": "Accession Number",
"callNumber": "Call Number",
"edition": "Edition",
"language": "Language",
"libraryCatalog": "Database Provider",
"numPages": "Number of Pages",
"numberOfVolumes": "Number of Volumes",
"place": "Place Published",
"publisher": "Publisher",
"series": "Series Title",
"seriesNumber": "Series Volume",
"shortTitle": "Short Title",
"url": "URL",
"volume": "Volume",
"attachments": [],
"tags": [
{
"tag": "Keyword1, Keyword2, Keyword3"
},
{
"tag": "Keyword4"
},
{
"tag": "Keyword5"
}
],
"notes": [
{
"note": "<p>Notes</p>"
},
{
"note": "<p>Research Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "bookSection",
"title": "Title",
"creators": [
{
"lastName": "Editor",
"creatorType": "editor",
"fieldMode": 1
},
{
"lastName": "Editor",
"firstName": "Series",
"creatorType": "seriesEditor"
},
{
"lastName": "Translator",
"creatorType": "translator",
"fieldMode": 1
},
{
"lastName": "Name1",
"firstName": "Author",
"creatorType": "author"
},
{
"lastName": "Name2",
"firstName": "Author",
"creatorType": "author"
}
],
"date": "0000 Year",
"ISBN": "ISBN",
"abstractNote": "Abstract",
"archive": "Name of Database",
"archiveLocation": "Accession Number",
"bookTitle": "Abbreviation",
"callNumber": "Call Number",
"edition": "Edition",
"language": "Language",
"libraryCatalog": "Database Provider",
"numberOfVolumes": "Number of Volumes",
"pages": "Pages",
"place": "Place Published",
"publisher": "Publisher",
"series": "Series Title",
"seriesNumber": "Series Volume",
"shortTitle": "Short Title",
"url": "URL",
"volume": "Volume",
"attachments": [],
"tags": [
{
"tag": "Keyword1, Keyword2, Keyword3"
},
{
"tag": "Keyword4"
},
{
"tag": "Keyword5"
}
],
"notes": [
{
"note": "<p>Notes</p>"
},
{
"note": "<p>Research Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "case",
"caseName": "Abbreviated Case Name",
"creators": [
{
"lastName": "Counsel",
"creatorType": "counsel",
"fieldMode": 1
}
],
"dateDecided": "0000 Year Date",
"abstractNote": "Abstract",
"court": "Court",
"docketNumber": "Docket Number",
"firstPage": "First Page",
"history": "History",
"language": "Language",
"reporter": "Reporter",
"reporterVolume": "Reporter Volume",
"url": "URL",
"attachments": [],
"tags": [
{
"tag": "Keyword1, Keyword2, Keyword3"
},
{
"tag": "Keyword4"
},
{
"tag": "Keyword5"
}
],
"notes": [
{
"note": "<p>Notes</p>"
},
{
"note": "<p>ResearchNotes</p>"
}
],
"seeAlso": []
},
{
"itemType": "magazineArticle",
"title": "Title",
"creators": [
{
"lastName": "Translator",
"creatorType": "translator",
"fieldMode": 1
},
{
"lastName": "Name1",
"firstName": "Author",
"creatorType": "author"
},
{
"lastName": "Name2",
"firstName": "Author",
"creatorType": "author"
}
],
"date": "0000 Year Date",
"ISSN": "ISBN",
"abstractNote": "Abstract",
"archive": "Name of Database",
"archiveLocation": "Accession Number",
"callNumber": "Call Number",
"extra": "Series Volume",
"language": "Language",
"libraryCatalog": "Database Provider",
"pages": "Pages",
"publicationTitle": "Series Title",
"shortTitle": "Short Title",
"url": "URL",
"volume": "Volume",
"attachments": [],
"tags": [
{
"tag": "Keyword1, Keyword2, Keyword3"
},
{
"tag": "Keyword4"
},
{
"tag": "Keyword5"
}
],
"notes": [
{
"note": "<p>Notes</p>"
},
{
"note": "<p>Research Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "artwork",
"title": "Title",
"creators": [
{
"lastName": "By",
"firstName": "Created",
"creatorType": "artist"
}
],
"date": "0000 Year Date",
"abstractNote": "Abstract",
"archive": "Name of Database",
"archiveLocation": "Accession Number",
"artworkMedium": "Type of Image",
"callNumber": "Call Number",
"extra": "Number",
"language": "Language",
"libraryCatalog": "Database Provider",
"url": "URL",
"attachments": [],
"tags": [
{
"tag": "Keyword1, Keyword2, Keyword3"
},
{
"tag": "Keyword4"
},
{
"tag": "Keyword5"
}
],
"notes": [
{
"note": "<p>Notes</p>"
},
{
"note": "<p>Research Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "book",
"title": "Title",
"creators": [
{
"lastName": "Editor",
"firstName": "Series",
"creatorType": "seriesEditor"
},
{
"lastName": "Translator",
"creatorType": "translator",
"fieldMode": 1
},
{
"lastName": "Attribution",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "0000 Year",
"ISBN": "ISSN/ISBN",
"abstractNote": "Abstract",
"archive": "Name of Database",
"archiveLocation": "Accession Number",
"callNumber": "Call Number",
"edition": "Edition",
"language": "Language",
"libraryCatalog": "Database Provider",
"numPages": "Number of Pages",
"numberOfVolumes": "Number of Volumes",
"place": "Place Published",
"publisher": "Publisher",
"series": "Series Title",
"seriesNumber": "Series Volume",
"shortTitle": "Short Title",
"url": "URL",
"volume": "Volume",
"attachments": [],
"tags": [
{
"tag": "Keyword1, Keyword2, Keyword3"
},
{
"tag": "Keyword4"
},
{
"tag": "Keyword5"
}
],
"notes": [
{
"note": "<p>Notes</p>"
},
{
"note": "<p>Research Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "computerProgram",
"title": "Title",
"creators": [
{
"lastName": "Programmer",
"creatorType": "programmer",
"fieldMode": 1
}
],
"date": "0000 Year",
"ISBN": "ISBN",
"abstractNote": "Abstract",
"archive": "Name of Database",
"archiveLocation": "Accession Number",
"callNumber": "Call Number",
"company": "Publisher",
"libraryCatalog": "Database Provider",
"place": "Place Published",
"programmingLanguage": "Language",
"seriesTitle": "Series Title",
"shortTitle": "Short Title",
"url": "URL",
"versionNumber": "Version",
"attachments": [],
"tags": [
{
"tag": "Keyword1, Keyword2, Keyword3"
},
{
"tag": "Keyword4"
},
{
"tag": "Keyword5"
}
],
"notes": [
{
"note": "<p>Notes</p>"
},
{
"note": "<p>Research Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "conferencePaper",
"title": "Title",
"creators": [
{
"lastName": "Editor",
"creatorType": "editor",
"fieldMode": 1
},
{
"lastName": "Name1",
"firstName": "Author",
"creatorType": "author"
},
{
"lastName": "Name2",
"firstName": "Author",
"creatorType": "author"
}
],
"date": "0000 Year Date",
"abstractNote": "Abstract",
"archive": "Name of Database",
"archiveLocation": "Accession Number",
"conferenceName": "Conference Name",
"extra": "Issue",
"language": "Language",
"libraryCatalog": "Database Provider",
"pages": "Pages",
"place": "Place Published",
"publisher": "Publisher",
"url": "URL",
"volume": "Volume",
"attachments": [],
"tags": [
{
"tag": "Keyword1, Keyword2, Keyword3"
},
{
"tag": "Keyword4"
},
{
"tag": "Keyword5"
}
],
"notes": [
{
"note": "<p>Notes</p>"
},
{
"note": "<p>Research Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "conferencePaper",
"title": "Title",
"creators": [
{
"lastName": "Editor",
"creatorType": "editor",
"fieldMode": 1
},
{
"lastName": "Editor",
"firstName": "Series",
"creatorType": "seriesEditor"
},
{
"lastName": "Sponsor",
"creatorType": "contributor",
"fieldMode": 1
},
{
"lastName": "Name1",
"firstName": "Author",
"creatorType": "author"
},
{
"lastName": "Name2",
"firstName": "Author",
"creatorType": "author"
}
],
"date": "0000 Year Date",
"ISBN": "ISBN",
"abstractNote": "Abstract",
"archive": "Name of Database",
"archiveLocation": "Accession Number",
"callNumber": "Call Number",
"conferenceName": "Conference Name",
"extra": "Issue",
"language": "Language",
"libraryCatalog": "Database Provider",
"pages": "Pages",
"place": "Place Published",
"proceedingsTitle": "Proceedings Title",
"publisher": "Publisher",
"series": "Series Title",
"shortTitle": "Short Title",
"url": "URL",
"volume": "Volume",
"attachments": [],
"tags": [
{
"tag": "Keyword1, Keyword2, Keyword3"
},
{
"tag": "Keyword4"
},
{
"tag": "Keyword5"
}
],
"notes": [
{
"note": "<p>Notes</p>"
},
{
"note": "<p>Research Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "dataset",
"title": "Title",
"creators": [
{
"lastName": "Agency",
"firstName": "Funding",
"creatorType": "contributor"
},
{
"lastName": "Investigators",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "0000 Year Date",
"abstractNote": "Abstract",
"archive": "Name of Database",
"archiveLocation": "Accession Number",
"callNumber": "Call Number",
"identifier": "Study Number",
"language": "Language",
"libraryCatalog": "Database Provider",
"repository": "Distributor",
"repositoryLocation": "Place Published",
"shortTitle": "Short Title",
"url": "URL",
"versionNumber": "Version",
"attachments": [],
"tags": [
{
"tag": "Keyword1, Keyword2, Keyword3"
},
{
"tag": "Keyword4"
},
{
"tag": "Keyword5"
}
],
"notes": [
{
"note": "<p>Notes</p>"
},
{
"note": "<p>Research Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "dictionaryEntry",
"title": "Title",
"creators": [
{
"lastName": "Editor",
"creatorType": "editor",
"fieldMode": 1
},
{
"lastName": "Translator",
"creatorType": "translator",
"fieldMode": 1
},
{
"lastName": "Name1",
"firstName": "Author",
"creatorType": "author"
},
{
"lastName": "Name2",
"firstName": "Author",
"creatorType": "author"
}
],
"date": "0000 Year",
"ISBN": "ISBN",
"abstractNote": "Abstract",
"archive": "Name of Database",
"archiveLocation": "Accession Number",
"callNumber": "Call Number",
"dictionaryTitle": "Abbreviation",
"edition": "Edition",
"extra": "Number",
"language": "Language",
"libraryCatalog": "Database Provider",
"numberOfVolumes": "Number of Volumes",
"pages": "Pages",
"place": "Place Published",
"publisher": "Publisher",
"shortTitle": "Short Title",
"url": "URL",
"volume": "Volume",
"attachments": [],
"tags": [
{
"tag": "Keyword1, Keyword2, Keyword3"
},
{
"tag": "Keyword4"
},
{
"tag": "Keyword5"
}
],
"notes": [
{
"note": "<p>Notes</p>"
},
{
"note": "<p>Research Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "book",
"title": "Title",
"creators": [
{
"lastName": "Editor",
"firstName": "Series",
"creatorType": "seriesEditor"
},
{
"lastName": "Translator",
"creatorType": "translator",
"fieldMode": 1
},
{
"lastName": "Editor",
"creatorType": "editor",
"fieldMode": 1
}
],
"date": "0000 Year Date",
"ISBN": "ISBN",
"abstractNote": "Abstract",
"archive": "Name of Database",
"archiveLocation": "Accession Number",
"callNumber": "Call Number",
"edition": "Edition",
"language": "Language",
"libraryCatalog": "Database Provider",
"numPages": "Number of Pages",
"numberOfVolumes": "Number of Volumes",
"place": "Place Published",
"publisher": "Publisher",
"series": "Series Title",
"seriesNumber": "Series Volume",
"shortTitle": "Short Title",
"url": "URL",
"volume": "Volume",
"attachments": [],
"tags": [
{
"tag": "Keyword1, Keyword2, Keyword3"
},
{
"tag": "Keyword4"
},
{
"tag": "Keyword5"
}
],
"notes": [
{
"note": "<p>Notes</p>"
},
{
"note": "<p>Research Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "journalArticle",
"title": "Title",
"creators": [
{
"lastName": "Name1",
"firstName": "Author",
"creatorType": "author"
},
{
"lastName": "Name2",
"firstName": "Author",
"creatorType": "author"
}
],
"date": "0000 Year Date",
"ISSN": "ISSN",
"abstractNote": "Abstract",
"archive": "Name of Database",
"archiveLocation": "Accession Number",
"issue": "Issue",
"journalAbbreviation": "Periodical Title",
"language": "Language",
"libraryCatalog": "Database Provider",
"pages": "Pages",
"publicationTitle": "Periodical Title",
"series": "Website Title",
"shortTitle": "Short Title",
"url": "URL",
"volume": "Volume",
"attachments": [],
"tags": [
{
"tag": "Keyword1, Keyword2, Keyword3"
},
{
"tag": "Keyword4"
},
{
"tag": "Keyword5"
}
],
"notes": [
{
"note": "<p>Notes</p>"
},
{
"note": "<p>Research Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "book",
"title": "Title",
"creators": [
{
"lastName": "Editor",
"creatorType": "seriesEditor",
"fieldMode": 1
},
{
"lastName": "Editor",
"firstName": "Series",
"creatorType": "editor"
},
{
"lastName": "Name1",
"firstName": "Author",
"creatorType": "author"
},
{
"lastName": "Name2",
"firstName": "Author",
"creatorType": "author"
}
],
"date": "0000 Year Date",
"ISBN": "ISBN",
"abstractNote": "Abstract",
"archive": "Name of Database",
"archiveLocation": "Accession Number",
"callNumber": "Call Number",
"edition": "Edition",
"language": "Language",
"libraryCatalog": "Database Provider",
"numPages": "Number of Pages",
"numberOfVolumes": "Version",
"place": "Place Published",
"publisher": "Publisher",
"series": "Secondary Title",
"url": "URL",
"volume": "Volume",
"attachments": [],
"tags": [
{
"tag": "Keyword1, Keyword2, Keyword3"
},
{
"tag": "Keyword4"
},
{
"tag": "Keyword5"
}
],
"notes": [
{
"note": "<p>Notes</p>"
},
{
"note": "<p>Research Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "bookSection",
"title": "Title",
"creators": [
{
"lastName": "Editor",
"creatorType": "editor",
"fieldMode": 1
},
{
"lastName": "Editor",
"firstName": "Series",
"creatorType": "seriesEditor"
},
{
"lastName": "Translator",
"creatorType": "translator",
"fieldMode": 1
},
{
"lastName": "Name1",
"firstName": "Author",
"creatorType": "author"
},
{
"lastName": "Name2",
"firstName": "Author",
"creatorType": "author"
}
],
"date": "0000 Year Date",
"ISBN": "ISSN/ISBN",
"abstractNote": "Abstract",
"archive": "Name of Database",
"archiveLocation": "Accession Number",
"bookTitle": "Book Title",
"callNumber": "Call Number",
"edition": "Edition",
"language": "Language",
"libraryCatalog": "Database Provider",
"numberOfVolumes": "Series Volume",
"pages": "Number of Pages",
"place": "Place Published",
"publisher": "Publisher",
"series": "Series Title",
"shortTitle": "Short Title",
"url": "URL",
"volume": "Volume",
"attachments": [],
"tags": [
{
"tag": "Keyword1, Keyword2, Keyword3"
},
{
"tag": "Keyword4"
},
{
"tag": "Keyword5"
}
],
"notes": [
{
"note": "<p>Notes</p>"
},
{
"note": "<p>Research Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "encyclopediaArticle",
"title": "Title",
"creators": [
{
"lastName": "Editor",
"creatorType": "editor",
"fieldMode": 1
},
{
"lastName": "Translator",
"creatorType": "translator",
"fieldMode": 1
},
{
"lastName": "Name1",
"firstName": "Author",
"creatorType": "author"
},
{
"lastName": "Name2",
"firstName": "Author",
"creatorType": "author"
}
],
"date": "0000 Year Date",
"ISBN": "ISBN",
"abstractNote": "Abstract",
"archive": "Name of Database",
"archiveLocation": "Accession Number",
"callNumber": "Call Number",
"edition": "Edition",
"encyclopediaTitle": "Abbreviation",
"language": "Language",
"libraryCatalog": "Database Provider",
"numberOfVolumes": "Number of Volumes",
"pages": "Pages",
"place": "Place Published",
"publisher": "Publisher",
"shortTitle": "Short Title",
"url": "URL",
"volume": "Volume",
"attachments": [],
"tags": [
{
"tag": "Keyword1, Keyword2, Keyword3"
},
{
"tag": "Keyword4"
},
{
"tag": "Keyword5"
}
],
"notes": [
{
"note": "<p>Notes</p>"
},
{
"note": "<p>Research Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "document",
"title": "Title",
"creators": [
{
"lastName": "File",
"firstName": "Name of",
"creatorType": "editor"
},
{
"lastName": "By",
"firstName": "Created",
"creatorType": "author"
}
],
"date": "0000 Year Date",
"abstractNote": "Abstract",
"archive": "Name of Database",
"archiveLocation": "Accession Number",
"callNumber": "Call Number",
"extra": "Number",
"language": "Language",
"libraryCatalog": "Database Provider",
"publisher": "Publisher",
"url": "URL",
"attachments": [],
"tags": [
{
"tag": "Keyword1, Keyword2, Keyword3"
},
{
"tag": "Keyword4"
},
{
"tag": "Keyword5"
}
],
"notes": [
{
"note": "<p>Notes</p>"
},
{
"note": "<p>Research Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "artwork",
"title": "Title",
"creators": [
{
"lastName": "By",
"firstName": "Created",
"creatorType": "artist"
}
],
"date": "0000 Year Date",
"abstractNote": "Abstract",
"archive": "Name of Database",
"archiveLocation": "Accession Number",
"artworkMedium": "Type of Image",
"callNumber": "Call Number",
"extra": "Number",
"language": "Language",
"libraryCatalog": "Database Provider",
"url": "URL",
"attachments": [],
"tags": [
{
"tag": "Keyword1, Keyword2, Keyword3"
},
{
"tag": "Keyword4"
},
{
"tag": "Keyword5"
}
],
"notes": [
{
"note": "<p>Notes</p>"
},
{
"note": "<p>Research Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "film",
"title": "Title",
"creators": [
{
"lastName": "Producer",
"creatorType": "producer",
"fieldMode": 1
},
{
"lastName": "Performers",
"creatorType": "contributor",
"fieldMode": 1
},
{
"lastName": "Director",
"creatorType": "director",
"fieldMode": 1
}
],
"date": "0000 Year Date",
"abstractNote": "Synopsis",
"archive": "Name of Database",
"archiveLocation": "Accession Number",
"callNumber": "Call Number",
"distributor": "Distributor",
"genre": "Genre",
"language": "Language",
"libraryCatalog": "Database Provider",
"runningTime": "Running Time",
"shortTitle": "Short Title",
"url": "URL",
"videoRecordingFormat": "Format",
"attachments": [],
"tags": [
{
"tag": "Keyword1, Keyword2, Keyword3"
},
{
"tag": "Keyword4"
},
{
"tag": "Keyword5"
}
],
"notes": [
{
"note": "<p>Notes</p>"
},
{
"note": "<p>Research Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "journalArticle",
"title": "Title",
"creators": [
{
"lastName": "Author",
"firstName": "Secondary",
"creatorType": "editor"
},
{
"lastName": "Author",
"firstName": "Subsidiary",
"creatorType": "translator"
},
{
"lastName": "Name1",
"firstName": "Author",
"creatorType": "author"
},
{
"lastName": "Name2",
"firstName": "Author",
"creatorType": "author"
}
],
"date": "0000 Year Date",
"ISSN": "ISSN/ISBN",
"abstractNote": "Abstract",
"archive": "Name of Database",
"archiveLocation": "Accession Number",
"callNumber": "Call Number",
"issue": "Number",
"journalAbbreviation": "Periodical Title",
"language": "Language",
"libraryCatalog": "Database Provider",
"pages": "Pages",
"publicationTitle": "Secondary Title",
"series": "Tertiary Title",
"shortTitle": "Short Title",
"url": "URL",
"volume": "Volume",
"attachments": [],
"tags": [
{
"tag": "Keyword1, Keyword2, Keyword3"
},
{
"tag": "Keyword4"
},
{
"tag": "Keyword5"
}
],
"notes": [
{
"note": "<p>Notes</p>"
},
{
"note": "<p>Research Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "report",
"title": "Title",
"creators": [
{
"lastName": "Department",
"creatorType": "seriesEditor",
"fieldMode": 1
},
{
"lastName": "Name1",
"firstName": "Author",
"creatorType": "author"
},
{
"lastName": "Name2",
"firstName": "Author",
"creatorType": "author"
}
],
"date": "0000 Year",
"abstractNote": "Abstract",
"archive": "Name of Database",
"archiveLocation": "Accession Number",
"extra": "Number",
"institution": "Publisher",
"language": "Language",
"libraryCatalog": "Database Provider",
"pages": "Pages",
"place": "Place Published",
"reportNumber": "ISSN/ISBN",
"url": "URL",
"attachments": [],
"tags": [
{
"tag": "Keyword1, Keyword2, Keyword3"
},
{
"tag": "Keyword4"
},
{
"tag": "Keyword5"
}
],
"notes": [
{
"note": "<p>Notes</p>"
},
{
"note": "<p>Research Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "journalArticle",
"title": "Title of Grant",
"creators": [
{
"lastName": "Translator",
"creatorType": "translator",
"fieldMode": 1
},
{
"lastName": "Investigators",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "0000 Year Deadline",
"abstractNote": "Abstract",
"archive": "Name of Database",
"archiveLocation": "Accession Number",
"callNumber": "Call Number",
"issue": "Status",
"journalAbbreviation": "Periodical Title",
"language": "Language",
"libraryCatalog": "Database Provider",
"pages": "Pages",
"publicationTitle": "Periodical Title",
"shortTitle": "Short Title",
"url": "URL",
"volume": "Amount Requested",
"attachments": [],
"tags": [
{
"tag": "Keyword1, Keyword2, Keyword3"
},
{
"tag": "Keyword4"
},
{
"tag": "Keyword5"
}
],
"notes": [
{
"note": "<p>Notes</p>"
},
{
"note": "<p>Research Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "hearing",
"title": "Title",
"creators": [],
"date": "0000 Year Date",
"abstractNote": "Abstract",
"committee": "Committee",
"documentNumber": "Document Number",
"history": "History",
"language": "Language",
"legislativeBody": "Legislative Body",
"numberOfVolumes": "Number of Volumes",
"pages": "Pages",
"place": "Place Published",
"publisher": "Publisher",
"session": "Session",
"shortTitle": "Short Title",
"url": "URL",
"attachments": [],
"tags": [
{
"tag": "Keyword1, Keyword2, Keyword3"
},
{
"tag": "Keyword4"
},
{
"tag": "Keyword5"
}
],
"notes": [
{
"note": "<p>Notes</p>"
},
{
"note": "<p>Research Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "journalArticle",
"title": "Title",
"creators": [
{
"lastName": "Name1",
"firstName": "Author",
"creatorType": "author"
},
{
"lastName": "Name2",
"firstName": "Author",
"creatorType": "author"
}
],
"date": "0000 Year Date",
"ISSN": "ISSN",
"abstractNote": "Abstract",
"archive": "Name of Database",
"archiveLocation": "Accession Number",
"callNumber": "Call Number",
"issue": "Issue",
"journalAbbreviation": "Periodical Title",
"language": "Language",
"libraryCatalog": "Database Provider",
"pages": "Pages",
"publicationTitle": "Journal",
"shortTitle": "Short Title",
"url": "URL",
"volume": "Volume",
"attachments": [],
"tags": [],
"notes": [
{
"note": "<p>Research Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "case",
"caseName": "Title",
"creators": [
{
"lastName": "Name1",
"firstName": "Author",
"creatorType": "author"
},
{
"lastName": "Name2",
"firstName": "Author",
"creatorType": "author"
}
],
"dateDecided": "0000 Year Date",
"abstractNote": "Abstract",
"court": "Publisher",
"extra": "Start Page",
"firstPage": "Pages",
"history": "History",
"language": "Language",
"reporter": "Organization, Issuing",
"reporterVolume": "Rule Number",
"url": "URL",
"attachments": [],
"tags": [
{
"tag": "Keyword1, Keyword2, Keyword3"
},
{
"tag": "Keyword4"
},
{
"tag": "Keyword5"
}
],
"notes": [
{
"note": "<p>Notes</p>"
},
{
"note": "<p>Research Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "magazineArticle",
"title": "Title",
"creators": [
{
"lastName": "Name1",
"firstName": "Author",
"creatorType": "author"
},
{
"lastName": "Name2",
"firstName": "Author",
"creatorType": "author"
}
],
"date": "0000 Year Date",
"ISSN": "ISSN",
"abstractNote": "Abstract",
"archive": "Name of Database",
"archiveLocation": "Accession Number",
"callNumber": "Call Number",
"extra": "Issue Number",
"language": "Language",
"libraryCatalog": "Database Provider",
"pages": "Pages",
"publicationTitle": "Magazine",
"shortTitle": "Short Title",
"url": "URL",
"volume": "Volume",
"attachments": [],
"tags": [
{
"tag": "Keyword1, Keyword2, Keyword3"
},
{
"tag": "Keyword4"
},
{
"tag": "Keyword5"
}
],
"notes": [
{
"note": "<p>Notes</p>"
},
{
"note": "<p>Research Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "manuscript",
"title": "Title",
"creators": [
{
"lastName": "Name1",
"firstName": "Author",
"creatorType": "author"
},
{
"lastName": "Name2",
"firstName": "Author",
"creatorType": "author"
}
],
"date": "0000 Year Date",
"abstractNote": "Abstract",
"archive": "Name of Database",
"archiveLocation": "Accession Number",
"callNumber": "Call Number",
"extra": "Folio Number",
"language": "Language",
"libraryCatalog": "Database Provider",
"manuscriptType": "Type of Work",
"numPages": "Pages",
"place": "Place Published",
"shortTitle": "Short Title",
"url": "URL",
"attachments": [],
"tags": [
{
"tag": "Keyword1, Keyword2, Keyword3"
},
{
"tag": "Keyword4"
},
{
"tag": "Keyword5"
}
],
"notes": [
{
"note": "<p>Notes</p>"
},
{
"note": "<p>Research Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "map",
"title": "Title",
"creators": [
{
"lastName": "Cartographer",
"creatorType": "cartographer",
"fieldMode": 1
}
],
"date": "0000 Year Date",
"ISBN": "ISSN/ISBN",
"abstractNote": "Abstract",
"archive": "Name of Database",
"archiveLocation": "Accession Number",
"callNumber": "Call Number",
"edition": "Edition",
"language": "Language",
"libraryCatalog": "Database Provider",
"mapType": "Type",
"place": "Place Published",
"publisher": "Publisher",
"scale": "Scale",
"seriesTitle": "Series Title",
"shortTitle": "Short Title",
"url": "URL",
"attachments": [],
"tags": [
{
"tag": "Keyword1, Keyword2, Keyword3"
},
{
"tag": "Keyword4"
},
{
"tag": "Keyword5"
}
],
"notes": [
{
"note": "<p>Notes</p>"
},
{
"note": "<p>Research Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "audioRecording",
"title": "Title",
"creators": [
{
"lastName": "Editor",
"creatorType": "performer",
"fieldMode": 1
},
{
"lastName": "Producer",
"creatorType": "translator",
"fieldMode": 1
},
{
"lastName": "Composer",
"creatorType": "composer",
"fieldMode": 1
},
{
"lastName": "Target Audience",
"creatorType": "wordsBy",
"fieldMode": 1
}
],
"date": "0000 Year Date",
"ISBN": "ISBN",
"abstractNote": "Abstract",
"archive": "Name of Database",
"archiveLocation": "Accession Number",
"audioRecordingFormat": "Accompanying Matter",
"callNumber": "Call Number",
"label": "Publisher",
"language": "Language",
"libraryCatalog": "Database Provider",
"numberOfVolumes": "Number of Volumes",
"place": "Place Published",
"seriesTitle": "Series Title",
"shortTitle": "Short Title",
"url": "URL",
"volume": "Volume",
"attachments": [],
"tags": [
{
"tag": "Keyword1, Keyword2, Keyword3"
},
{
"tag": "Keyword4"
},
{
"tag": "Keyword5"
}
],
"notes": [
{
"note": "<p>Notes</p>"
},
{
"note": "<p>Research Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "newspaperArticle",
"title": "Title",
"creators": [
{
"lastName": "Reporter",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "0000 Year Issue",
"ISSN": "ISSN",
"abstractNote": "Abstract",
"archive": "Name of Database",
"archiveLocation": "Accession Number",
"callNumber": "Call Number",
"edition": "Edition",
"extra": "Start Page",
"language": "Language",
"libraryCatalog": "Database Provider",
"pages": "Pages",
"place": "Place Published",
"publicationTitle": "Newspaper",
"section": "Section",
"shortTitle": "Short Title",
"url": "URL",
"attachments": [],
"tags": [
{
"tag": "Keyword1, Keyword2, Keyword3"
},
{
"tag": "Keyword4"
},
{
"tag": "Keyword5"
}
],
"notes": [
{
"note": "<p>Notes</p>"
},
{
"note": "<p>Research Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "dataset",
"title": "Title",
"creators": [
{
"lastName": "Name1",
"firstName": "Author",
"creatorType": "author"
},
{
"lastName": "Name2",
"firstName": "Author",
"creatorType": "author"
}
],
"date": "0000 Year Date",
"abstractNote": "Abstract",
"archive": "Name of Database",
"archiveLocation": "Accession Number",
"language": "Language",
"libraryCatalog": "Database Provider",
"repository": "Publisher",
"repositoryLocation": "Place Published",
"url": "URL",
"versionNumber": "Date Published",
"attachments": [],
"tags": [
{
"tag": "Keyword1, Keyword2, Keyword3"
},
{
"tag": "Keyword4"
},
{
"tag": "Keyword5"
}
],
"notes": [
{
"note": "<p>Notes</p>"
},
{
"note": "<p>Research Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "videoRecording",
"title": "Title",
"creators": [
{
"lastName": "By",
"firstName": "Created",
"creatorType": "director"
},
{
"lastName": "Year Cited",
"creatorType": "castMember",
"fieldMode": 1
}
],
"date": "0000 Year Date",
"abstractNote": "Abstract",
"archive": "Name of Database",
"archiveLocation": "Accession Number",
"extra": "Number of Screens",
"language": "Language",
"libraryCatalog": "Database Provider",
"studio": "Distributor",
"url": "URL",
"videoRecordingFormat": "Format/Length",
"attachments": [],
"tags": [
{
"tag": "Keyword1, Keyword2, Keyword3"
},
{
"tag": "Keyword4"
},
{
"tag": "Keyword5"
}
],
"notes": [
{
"note": "<p>Notes</p>"
},
{
"note": "<p>Research Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "manuscript",
"title": "Title",
"creators": [
{
"lastName": "Translator",
"creatorType": "translator",
"fieldMode": 1
},
{
"lastName": "Name1",
"firstName": "Author",
"creatorType": "author"
},
{
"lastName": "Name2",
"firstName": "Author",
"creatorType": "author"
}
],
"date": "0000 Year Date",
"abstractNote": "Abstract",
"archive": "Name of Database",
"archiveLocation": "Accession Number",
"callNumber": "Call Number",
"extra": "Series Volume\nNumber of Pages",
"language": "Language",
"libraryCatalog": "Database Provider",
"manuscriptType": "Type of Work",
"numPages": "Pages",
"place": "Place Published",
"shortTitle": "Short Title",
"url": "URL",
"attachments": [],
"tags": [
{
"tag": "Keyword1, Keyword2, Keyword3"
},
{
"tag": "Keyword4"
},
{
"tag": "Keyword5"
}
],
"notes": [
{
"note": "<p>Notes</p>"
},
{
"note": "<p>Research Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "patent",
"title": "Title",
"creators": [
{
"lastName": "Inventor",
"creatorType": "inventor",
"fieldMode": 1
},
{
"lastName": "Attorney/Agent",
"creatorType": "attorneyAgent",
"fieldMode": 1
}
],
"issueDate": "0000 Year Issue",
"abstractNote": "Abstract",
"applicationNumber": "Application Number",
"assignee": "Assignee",
"country": "Designated States",
"issuingAuthority": "Organization, Issuing",
"language": "Language",
"legalStatus": "Legal Status",
"pages": "Pages",
"patentNumber": "Patent Number",
"place": "Country",
"priorityNumbers": "Priority Numbers",
"references": "References",
"shortTitle": "Short Title",
"url": "URL",
"attachments": [],
"tags": [
{
"tag": "Keyword1, Keyword2, Keyword3"
},
{
"tag": "Keyword4"
},
{
"tag": "Keyword5"
}
],
"notes": [
{
"note": "<p>Notes</p>"
},
{
"note": "<p>Research Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "letter",
"title": "Title",
"creators": [
{
"lastName": "Recipient",
"creatorType": "recipient",
"fieldMode": 1
},
{
"lastName": "Name1",
"firstName": "Author",
"creatorType": "author"
},
{
"lastName": "Name2",
"firstName": "Author",
"creatorType": "author"
}
],
"date": "0000 Year Date",
"abstractNote": "Abstract",
"archive": "Name of Database",
"archiveLocation": "Accession Number",
"callNumber": "Call Number",
"extra": "Folio Number",
"language": "Language",
"letterType": "Type",
"libraryCatalog": "Database Provider",
"shortTitle": "Short Title",
"url": "URL",
"attachments": [],
"tags": [
{
"tag": "Keyword1, Keyword2, Keyword3"
},
{
"tag": "Keyword4"
},
{
"tag": "Keyword5"
}
],
"notes": [
{
"note": "<p>Notes</p>"
},
{
"note": "<p>Research Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "report",
"title": "Title",
"creators": [
{
"lastName": "Editor",
"firstName": "Series",
"creatorType": "seriesEditor"
},
{
"lastName": "Department/Division",
"creatorType": "translator",
"fieldMode": 1
},
{
"lastName": "Name1",
"firstName": "Author",
"creatorType": "author"
},
{
"lastName": "Name2",
"firstName": "Author",
"creatorType": "author"
}
],
"date": "0000 Year Date",
"abstractNote": "Abstract",
"archive": "Name of Database",
"archiveLocation": "Accession Number",
"callNumber": "Call Number",
"extra": "Document Number",
"institution": "Institution",
"language": "Language",
"libraryCatalog": "Database Provider",
"pages": "Pages",
"place": "Place Published",
"reportNumber": "Report Number",
"reportType": "Type",
"seriesTitle": "Series Title",
"shortTitle": "Short Title",
"url": "URL",
"attachments": [],
"tags": [
{
"tag": "Keyword1, Keyword2, Keyword3"
},
{
"tag": "Keyword4"
},
{
"tag": "Keyword5"
}
],
"notes": [
{
"note": "<p>Notes</p>"
},
{
"note": "<p>Research Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "book",
"title": "Title",
"creators": [
{
"lastName": "Editor",
"creatorType": "seriesEditor",
"fieldMode": 1
},
{
"lastName": "Editor",
"firstName": "Series",
"creatorType": "editor"
},
{
"lastName": "Editor",
"firstName": "Volume",
"creatorType": "translator"
},
{
"lastName": "Name1",
"firstName": "Author",
"creatorType": "author"
},
{
"lastName": "Name2",
"firstName": "Author",
"creatorType": "author"
}
],
"date": "0000 Year Date",
"ISBN": "ISBN",
"abstractNote": "Abstract",
"archive": "Name of Database",
"archiveLocation": "Accession Number",
"callNumber": "Call Number",
"edition": "Edition",
"language": "Language",
"libraryCatalog": "Database Provider",
"numPages": "Pages",
"numberOfVolumes": "Number of Volumes",
"place": "Place Published",
"publisher": "Publisher",
"series": "Secondary Title",
"seriesNumber": "Series Volume",
"shortTitle": "Short Title",
"url": "URL",
"volume": "Volume",
"attachments": [],
"tags": [
{
"tag": "Keyword1, Keyword2, Keyword3"
},
{
"tag": "Keyword4"
},
{
"tag": "Keyword5"
}
],
"notes": [
{
"note": "<p>Notes</p>"
},
{
"note": "<p>Research Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "report",
"title": "Title",
"creators": [
{
"lastName": "Institution",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "0000 Year Date",
"abstractNote": "Abstract",
"archive": "Name of Database",
"archiveLocation": "Accession Number",
"callNumber": "Call Number",
"extra": "Start Page",
"institution": "Publisher",
"language": "Language",
"libraryCatalog": "Database Provider",
"pages": "Pages",
"place": "Place Published",
"reportNumber": "Document Number",
"reportType": "Type of Work",
"seriesTitle": "Section Title",
"url": "URL",
"attachments": [],
"tags": [
{
"tag": "Keyword1, Keyword2, Keyword3"
},
{
"tag": "Keyword4"
},
{
"tag": "Keyword5"
}
],
"notes": [
{
"note": "<p>Notes</p>"
},
{
"note": "<p>Research Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "statute",
"nameOfAct": "Short Title",
"creators": [],
"dateEnacted": "0000 Year Date",
"abstractNote": "Abstract",
"code": "Code",
"codeNumber": "Code Number",
"history": "History",
"language": "Language",
"pages": "Pages",
"publicLawNumber": "Public Law Number",
"section": "Sections",
"session": "Session",
"url": "URL",
"attachments": [],
"tags": [
{
"tag": "Keyword1, Keyword2, Keyword3"
},
{
"tag": "Keyword4"
},
{
"tag": "Keyword5"
}
],
"notes": [
{
"note": "<p>Notes</p>"
},
{
"note": "<p>Research Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "thesis",
"title": "Title",
"creators": [
{
"lastName": "Advisor",
"creatorType": "contributor",
"fieldMode": 1
},
{
"lastName": "Name1",
"firstName": "Author",
"creatorType": "author"
},
{
"lastName": "Name2",
"firstName": "Author",
"creatorType": "author"
}
],
"date": "0000 Year Date",
"abstractNote": "Abstract",
"archive": "Name of Database",
"archiveLocation": "Accession Number",
"callNumber": "Call Number",
"extra": "Document Number",
"language": "Language",
"libraryCatalog": "Database Provider",
"numPages": "Number of Pages",
"place": "Place Published",
"shortTitle": "Short Title",
"thesisType": "Thesis Type",
"university": "University",
"url": "URL",
"attachments": [],
"tags": [
{
"tag": "Keyword1, Keyword2, Keyword3"
},
{
"tag": "Keyword4"
},
{
"tag": "Keyword5"
}
],
"notes": [
{
"note": "<p>Notes</p>"
},
{
"note": "<p>Research Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "journalArticle",
"title": "Title of Work",
"creators": [
{
"lastName": "Editor",
"firstName": "Series",
"creatorType": "editor"
},
{
"lastName": "Name1",
"firstName": "Author",
"creatorType": "author"
},
{
"lastName": "Name2",
"firstName": "Author",
"creatorType": "author"
}
],
"date": "0000 Year Date",
"abstractNote": "Abstract",
"archive": "Name of Database",
"issue": "Number",
"journalAbbreviation": "Abbreviation",
"language": "Language",
"libraryCatalog": "Database Provider",
"pages": "Pages",
"publicationTitle": "Series Title",
"series": "Department",
"shortTitle": "Short Title",
"url": "URL",
"attachments": [],
"tags": [
{
"tag": "Keyword1, Keyword2, Keyword3"
},
{
"tag": "Keyword4"
},
{
"tag": "Keyword5"
}
],
"notes": [
{
"note": "<p>Notes</p>"
},
{
"note": "<p>Research Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "webpage",
"title": "Title",
"creators": [
{
"lastName": "Name1",
"firstName": "Author",
"creatorType": "author"
},
{
"lastName": "Name2",
"firstName": "Author",
"creatorType": "author"
}
],
"date": "0000 Year Last",
"abstractNote": "Abstract",
"language": "Language",
"shortTitle": "Short Title",
"url": "URL",
"websiteTitle": "Periodical Title",
"websiteType": "Type of Medium",
"attachments": [],
"tags": [
{
"tag": "Keyword1, Keyword2, Keyword3"
},
{
"tag": "Keyword4"
},
{
"tag": "Keyword5"
}
],
"notes": [
{
"note": "<p>Notes</p>"
},
{
"note": "<p>Research Notes</p>"
}
],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "TY - JOUR\nAB - Optimal integration of next-generation sequencing into mainstream research requires re-evaluation of how problems can be reasonably overcome and what questions can be asked. .... The random sequencing-based approach to identify microsatellites was rapid, cost-effective and identified thousands of useful microsatellite loci in a previously unstudied species.\nAD - Consortium for Comparative Genomics, Department of Biochemistry and Molecular Genetics, University of Colorado School of Medicine, Aurora, CO 80045, USA; Department of Biology, University of Central Florida, 4000 Central Florida Blvd., Orlando, FL 32816, USA; Department of Biology & Amphibian and Reptile Diversity Research Center, The University of Texas at Arlington, Arlington, TX 76019, USA\nAU - CASTOE, TODD A.\nAU - POOLE, ALEXANDER W.\nAU - GU, WANJUN\nAU - KONING, A. P. JASON de\nAU - DAZA, JUAN M.\nAU - SMITH, ERIC N.\nAU - POLLOCK, DAVID D.\nL1 - internal-pdf://2009 Castoe Mol Eco Resources-1114744832/2009 Castoe Mol Eco Resources.pdf\ninternal-pdf://sm001-1634838528/sm001.pdf\ninternal-pdf://sm002-2305927424/sm002.txt\ninternal-pdf://sm003-2624695040/sm003.xls\nM1 - 9999\nN1 - 10.1111/j.1755-0998.2009.02750.x\nPY - 2009\nSN - 1755-0998\nST - Rapid identification of thousands of copperhead snake (Agkistrodon contortrix) microsatellite loci from modest amounts of 454 shotgun genome sequence\nT2 - Molecular Ecology Resources\nTI - Rapid identification of thousands of copperhead snake (Agkistrodon contortrix) microsatellite loci from modest amounts of 454 shotgun genome sequence\nUR - http://dx.doi.org/10.1111/j.1755-0998.2009.02750.x\nVL - 9999\nID - 3\nER -",
"items": [
{
"itemType": "journalArticle",
"title": "Rapid identification of thousands of copperhead snake (Agkistrodon contortrix) microsatellite loci from modest amounts of 454 shotgun genome sequence",
"creators": [
{
"lastName": "CASTOE",
"firstName": "TODD A.",
"creatorType": "author"
},
{
"lastName": "POOLE",
"firstName": "ALEXANDER W.",
"creatorType": "author"
},
{
"lastName": "GU",
"firstName": "WANJUN",
"creatorType": "author"
},
{
"lastName": "KONING",
"firstName": "A. P. JASON de",
"creatorType": "author"
},
{
"lastName": "DAZA",
"firstName": "JUAN M.",
"creatorType": "author"
},
{
"lastName": "SMITH",
"firstName": "ERIC N.",
"creatorType": "author"
},
{
"lastName": "POLLOCK",
"firstName": "DAVID D.",
"creatorType": "author"
}
],
"date": "2009",
"ISSN": "1755-0998",
"abstractNote": "Optimal integration of next-generation sequencing into mainstream research requires re-evaluation of how problems can be reasonably overcome and what questions can be asked. .... The random sequencing-based approach to identify microsatellites was rapid, cost-effective and identified thousands of useful microsatellite loci in a previously unstudied species.",
"issue": "9999",
"publicationTitle": "Molecular Ecology Resources",
"url": "http://dx.doi.org/10.1111/j.1755-0998.2009.02750.x",
"volume": "9999",
"attachments": [
{
"title": "2009 Castoe Mol Eco Resources",
"path": "PDF/2009 Castoe Mol Eco Resources-1114744832/2009 Castoe Mol Eco Resources.pdf"
},
{
"title": "sm001",
"path": "PDF/sm001-1634838528/sm001.pdf"
},
{
"title": "sm002",
"path": "PDF/sm002-2305927424/sm002.txt"
},
{
"title": "sm003",
"path": "PDF/sm003-2624695040/sm003.xls"
}
],
"tags": [],
"notes": [
{
"note": "<p>10.1111/j.1755-0998.2009.02750.x</p>"
}
],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "TY - BILL\nN1 - Record ID: 10\nA1 - Author Name, Author2 Name2\nTI - Act Name\nRP - Reprint Status, Date\nCY - Code\nPY - Date of Code\nY2 - Date\nVL - Bill/Res Number\nSP - Section(s)\nN1 - Histroy: History\nAV - Address/Availability\nUR - Location/URL\nN1 - Notes: Notes\nN2 - Abstract\nN1 - Call Number: Call Number\nKW - Keywords1, Keywords2, Keywords3\nKW - Keywords4\nER - \n\nTY - ART\nN1 - Record ID: 20\nA1 - Author Name, Author2 Name2\nN1 - Artist Role: Artist Role\nT1 - Title/Subject\nM1 - Medium\nN1 - Connective Phrase: Connective Phrase\nN1 - Author, Monographic: Monographic Author\nN1 - Author Role: Author Role\nN1 - Title Monographic: Monographic Title\nRP - Reprint Status, Date\nVL - Edition\nCY - Place of Publication\nPB - Publisher Name\nY1 - Date of Publication\nN1 - Location in Work: Location in Work\nN1 - Size: Size\nN1 - Series Title: Series Title\nN1 - Connective Phrase: Connective Phrase\nAV - Address/Availability\nUR - Location/URL\nN1 - Notes: Notes\nN2 - Abstract\nN1 - Call Number: Call Number\nKW - Keywords1, Keywords2, Keywords3\nKW - Keywords4\nER - \n\n\nTY - ADVS\nN1 - Record ID: 30\nA1 - Author Name, Author2 Name2\nN1 - Author Role: Author Role\nT1 - Analytic Title\nM3 - Medium Designator\nN1 - Connective Phrase: Connective Phrase\nN1 - Author, Monographic: Monographic Author\nN1 - Author Role: Monographic Author Role\nN1 - Title Monographic: Monographic Title\nRP - Reprint Status, Date\nVL - Edition\nN1 - Author, Subsidiary: Subsidiary Author\nN1 - Author Role: Author Role\nCY - Place of Publication\nPB - Publisher Name\nPY - Date of Publication\nIS - Volume ID\nN1 - Location in Work: Location in Work\nN1 - Extent of Work: Extent of Work\nN1 - Packaging Method: Packaging Method\nN1 - Size: Size\nN1 - Series Editor: Series Editor\nN1 - Series Editor Role: Series Editor Role\nN1 - Series Title: Series Title\nN1 - Series Volume ID: Series Volume ID\nN1 - Series Issue ID: Series Issue ID\nN1 - Connective Phrase: Connective Phrase\nAV - Address/Availability\nUR - Location/URL\nSN - ISBN\nN1 - Notes: Notes\nN2 - Abstract\nN1 - Call Number: Call Number\nKW - Keywords1, Keywords2, Keywords3\nKW - Keywords4\nER - \n\nTY - CHAP\nN1 - Record ID: 40\nA1 - Author Name, Author2 Name2\nT1 - Analytic Title\nN1 - Medium Designator: Medium Designator\nN1 - Connective Phrase: Connective Phrase\nA2 - Monographic Author\nN1 - Author Role: Author Role\nT2 - Monographic Title\nRP - Reprint Status, Date\nVL - Edition\nCY - Place of Publication\nPB - Publisher Name\nPY - Date of Publication\nN1 - Volume ID: Volume ID\nN1 - Issue ID: Issue ID\nSP - Page(s)\nA3 - Series Editor\nN1 - Series Editor Role: Series Editor Role\nN1 - Series Title: Series Title\nN1 - Series Volume ID: Series Volume Identification\nN1 - Series Issue ID: Series Issue Identification\nN1 - Connective PhraseConnective Phrase\nAV - Address/Availability\nUR - Location/URL\nN1 - Notes: Notes\nN2 - Abstract\nN1 - Call Number: Call Number\nKW - Keywords1, Keywords2, Keywords3\nKW - Keywords4\nER - \n\nTY - CHAP\nN1 - Record ID: 50\nA1 - Author Name, Author2 Name2\nN1 - Author Role: Author Role\nT1 - Analytic Title\nN1 - Medium Designator: Medium Designator\nN1 - Connective Phrase: Connective Phrase\nA2 - Monographic Author\nN1 - Author Role: Author Role\nT2 - Monographic Title\nRP - Reprint Status, Date\nVL - Edition\nN1 - Author, Subsidiary: Subsidiary Author\nN1 - Author Role: Author Role\nCY - Place of Publication\nPB - Publisher Name\nPY - Date of Publication\nN1 - Date of Copyright: Date of Copyright\nN1 - Volume ID: Volume ID\nN1 - Issue ID: Issue ID\nSP - Page(s)\nN1 - Extent of Work: Extent of Work\nN1 - Packaging Method: Packaging Method\nA3 - Series Editor\nN1 - Series Editor Role: Series Editor Role\nT3 - Series Title\nN1 - Series Volume ID: Series Volume ID\nAV - Address/Availability\nUR - Location/URL\nSN - ISBN\nN1 - Notes: Notes\nN2 - Abstract\nN1 - Call Number: Call Number\nKW - Keywords1, Keywords2, Keywords3\nKW - Keywords4\nER - \n\nTY - ABST\nN1 - Record ID: 180\nA1 - Author Name, Author2 Name2\nT1 - Title\nJF - Journal Title\nRP - Reprint Status, Date\nY1 - Date of Publication\nVL - Volume ID\nIS - Issue ID\nSP - Page(s)\nAD - Address/Availability\nUR - Location/URL\nN1 - Notes: Notes\nN2 - Abstract\nN1 - Call Number: Call Number\nKW - Keywords1, Keywords2, Keywords3\nKW - Keywords4\nER - \n\nTY - BOOK\nN1 - Record ID: 190\nA1 - Monographic Author\nT1 - Monographic Title\nRP - Reprint Status, Date\nCY - Place of Publication\nPB - Publisher Name\nPY - Date of Publication\nAV - Address/Availability\nUR - Location/URL\nSN - ISBN\nN1 - Notes: Notes\nN2 - Abstract\nN1 - Call Number: Call Number\nKW - Keywords1, Keywords2, Keywords3\nKW - Keywords4\nER - \n\nTY - BOOK\nN1 - Record ID: 200\nA1 - Monographic Author\nN1 - Author Role: Author Role\nT1 - Monographic Title\nN1 - Translated Title: Translated Title\nRP - Reprint Status, Date\nVL - Edition\nN1 - Author, Subsidiary: Subsidiary Author\nN1 - Author Role: Author Role\nCY - Place of Publication\nPB - Publisher Name\nPY - Date of Publication\nN1 - Original Pub Date: Original Pub Date\nIS - Volume ID\nN1 - Extent of Work: Extent of Work\nN1 - Packaging Method: Packaging Method\nA3 - Series Editor\nN1 - Series Editor Role: Series Editor Role\nT3 - Series Title\nN1 - Series Volume ID: Series Volume ID\nAV - Address/Availability\nUR - Location/URL\nSN - ISBN\nN1 - Notes: Notes\nN2 - Abstract\nN1 - Call Number: Call Number\nKW - Keywords1, Keywords2, Keywords3\nKW - Keywords4\nER - \n\nTY - CASE\nN1 - Record Number: 210\nA1 - Counsel\nT1 - Case Name\nT2 - Case Name (Abbrev)\nRP - Reprint Status, Date\nCY - Reporter\nPB - Court\nPY - Date Field\nY2 - Date Decided\nN1 - First Page: First Page\nVL - Reporter Number\nSP - Page(s)\nT3 - History\nAV - Address/Availability\nUR - Location/URL\nN1 - Notes: Notes\nN2 - Abstract\nN1 - Call Number: Call Number\nKW - Keywords1, Keywords2, Keywords3\nKW - Keywords4\nER - \n\nTY - COMP\nN1 - Record Number: 220\nT1 - Program Title\nN1 - Computer Program: Computer Program\nN1 - Connective Phrase: Connective Phrase\nA1 - Author/Programmer\nN1 - Author Role: Author Role\nN1 - Title: Title\nRP - Reprint Status, Date\nIS - Version\nCY - Place of Publication\nPB - Publisher Name\nPY - Date of Publication\nN1 - Date of Copyright: Date of Copyright\nN1 - Report Identification: Report ID\nN1 - Extent of Work: Extent of Work\nN1 - Packaging Method: Packaging Method\nN1 - Connective Phrase: Connective Phrase\nAV - Address/Availability\nUR - Location/URL\nSN - ISBN\nN1 - Notes: Notes\nN2 - Abstract\nN1 - Call Number: Call Number\nKW - Keywords1, Keywords2, Keywords3\nKW - Keywords4\nER - \n\nTY - CONF\nN1 - Record Number: 230\nA1 - Author Name, Author2 Name2\nN1 - Author Role: Author Role\nN1 - Author Affiliation, Ana.: Author Affiliation\nT1 - Paper/Section Title\nN1 - Medium Designator: Medium Designator\nN1 - Connective Phrase: Connective Phrase\nA2 - Editor/Compiler\nN1 - Editor/Compiler Role: Editor/Compiler Role\nN1 - Proceedings Title: Proceedings Title\nY2 - Date of Meeting\nN1 - Place of Meeting: Place of Meeting\nCY - Place of Publication\nPB - Publisher Name\nPY - Date of Publication\nN1 - Date of Copyright: Date of Copyright\nVL - Volume ID\nSP - Location in Work\nN1 - Extent of Work: Extent of Work\nN1 - Packaging Method: Packaging Method\nA3 - Series Editor\nN1 - Series Editor Role: Series Editor Role\nT3 - Series Title\nN1 - Series Volume ID: Series Volume ID\nAV - Address/Availability\nUR - Location/URL\nN1 - ISBN: ISBN\nN1 - Notes: Notes\nN2 - Abstract\nN1 - Call Number: Call Number\nKW - Keywords1, Keywords2, Keywords3\nKW - Keywords4\nER - \n\nTY - DATA\nN1 - Record Number: 240\nT1 - Analytic Title\nN1 - Medium (Data File): Medium (Data File)\nN1 - Connective Phrase: Connective Phrase\nA2 - Editor/Compiler\nN1 - Editor/Compiler Role: Editor/Compiler Role\nN1 - Title, Monographic: Monographic Title\nRP - Reprint Status, Date\nIS - Version\nCY - Place of Publication\nPB - Publisher Name\nPY - Date of Publication\nSP - Location in Work\nN1 - Extent of Work: Extent of Work\nN1 - Packaging Method: Packaging Method\nT3 - Series Title\nN1 - Series Volume ID: Series Volume ID\nN1 - Connective Phrase: Connective Phrase\nAV - Address/Availability\nUR - Location/URL\nN1 - Notes: Notes\nN2 - Abstract\nN1 - Call Number: Call Number\nKW - Keywords1, Keywords2, Keywords3\nKW - Keywords4\nER - \n\nTY - THES\nN1 - Record Number: 250\nA1 - Author Name, Author2 Name2\nA3 - Supervisor surname, Supervisor name\nT1 - Analytic Title\nN1 - Medium Designator: Medium Designator\nRP - Reprint Status, Date\nN1 - Place of Publication: Place of Publication\nPB - University\nPY - Date of Publication\nN1 - Date of Copyright: Date of Copyright\nSP - Extent of Work\nN1 - Packaging Method: Packaging Method\nN1 - Connective Phrase: Connective Phrase\nAV - Address/Availability\nUR - Location/URL\nN1 - Notes: Notes\nN2 - Abstract\nN1 - Call Number: Call Number\nKW - Keywords1, Keywords2, Keywords3\nKW - Keywords4\nER - \n\nTY - ELEC\nN1 - Record Number: 260\nA1 - Author Name, Author2 Name2\nT1 - Title\nM1 - Medium\nJO - Source\nRP - Reprint Status, Date\nIS - Edition\nPB - Publisher Name\nPY - Last Update\nY2 - Access Date\nN1 - Volume ID: Volume ID\nSP - Page(s)\nAV - Address/Availability\nUR - Location/URL\nN1 - Notes: Notes\nN2 - Abstract\nN1 - Call Number: Call Number\nKW - Keywords1, Keywords2, Keywords3\nKW - Keywords4\nER - \n\nTY - ICOMM\nN1 - Record Number: 270\nA1 - Author Name, Author2 Name2\nN1 - Author E-mail: Author E-mail\nN1 - Author Affiliation: Author Affiliation\nT1 - Subject\nA2 - Recipient\nN1 - Recipient E-mail: Recipient E-mail\nRP - Reprint Status, Date\nPY - Date of Message\nAV - Address/Availability\nUR - Location/URL\nN1 - Notes: Notes\nN2 - Abstract\nN1 - Call Number: Call Number\nKW - Keywords1, Keywords2, Keywords3\nKW - Keywords4\nER - \n\nTY - GEN\nN1 - Record Number: 280\nA1 - Author Name, Author2 Name2\nT1 - Analytic Title\nA2 - Monographic Author\nT2 - Monographic Title\nJO - Journal Title\nRP - Reprint Status, Date\nCY - Place of Publication\nPB - Publisher Name\nPY - Date of Publication\nY2 - Date of Copyright\nVL - Volume ID\nIS - Issue ID\nSP - Location in Work\nA3 - Series Editor\nT3 - Series Title\nAV - Address/Availability\nUR - Location/URL\nSN - ISSN\nN1 - Notes: Notes\nN2 - Abstract\nN1 - Call Number: Call Number\nKW - Keywords1, Keywords2, Keywords3\nKW - Keywords4\nER - \n\nTY - HEAR\nN1 - Record Number: 290\nA1 - Author Name, Author2 Name2\nN1 - Author Role: Author Role\nN1 - Author Affiliation: Author Affiliation\nT1 - Title\nN1 - Medium Designator: Medium Designator\nRP - Reprint Status, Date\nCY - Committee\nPB - Subcommittee\nPY - Hearing Date\nY2 - Date\nVL - Bill Number\nN1 - Issue ID: Issue ID\nN1 - Location in Work: Location/URL\nAV - Address/Availability\nUR - Location/URL\nN1 - Notes: Notes\nN2 - Abstract\nN1 - Call Number: Call Number\nKW - Keywords1, Keywords2, Keywords3\nKW - Keywords4\nER - \n\nTY - MGZN\nN1 - Record Number: 300\nA1 - Author Name, Author2 Name2\nT1 - Article Title\nJO - Magazine Title\nCY - Place of Publication\nPB - Publisher Name\nPY - Date of Publication\nN1 - Copyright Date: Date of Copyright\nVL - Volume ID\nIS - Issue ID\nSP - Page(s)\nAV - Address/Availability\nUR - Location/URL\nN1 - Notes: Notes\nN2 - Abstract\nN1 - Call Number: Call Number\nKW - Keywords1, Keywords2, Keywords3\nKW - Keywords4\nER - \n\nTY - INPR\nN1 - Record Number: 310\nA1 - Author Name, Author2 Name2\nT1 - Title\nJO - Journal Title\nRP - Reprint Status, Date\nPY - Date of Publication\nN1 - Volume ID: Volume ID\nN1 - Page(s): Page(s)\nAV - Address/Availability\nUR - Location/URL\nN1 - Notes: Notes\nN2 - Abstract\nN1 - Call Number: Call Number\nKW - Keywords1, Keywords2, Keywords3\nKW - Keywords4\nER - \n\nTY - JOUR\nN1 - Record Number: 320\nA1 - Author Name, Author2 Name2\nT1 - Article Title\nN1 - Medium Designator: Medium Designator\nN1 - Connective Phrase: Connective Phrase\nJF - Journal Title\nN1 - Translated Title: Translated Title\nRP - Reprint Status, Date\nPY - Date of Publication\nVL - Volume ID\nIS - Issue ID\nSP - Page(s)\nN1 - Language: Language\nN1 - Connective Phrase: Connective Phrase\nAV - Address/Availability\nUR - Location/URL\nSN - ISSN\nN1 - Notes: Notes\nN2 - Abstract\nN1 - Call Number: Call Number\nKW - Keywords1, Keywords2, Keywords3\nKW - Keywords4\nER - \n\nTY - JOUR\nN1 - Record Number: 330\nA1 - Author Name, Author2 Name2\nN1 - Author Role: Author Role\nN1 - Author Affiliation: Author Affiliation\nT1 - Article Title\nN1 - Medium Designator: Medium Designator\nN1 - Connective Phrase: Connective Phrase\nN1 - Author, Monographic: Monographic Author\nN1 - Author Role: Author Role\nJF - Journal Title\nRP - Reprint Status, Date\nPY - Date of Publication\nVL - Volume ID\nIS - Issue ID\nSP - Page(s)\nAV - Address/Availability\nUR - Location/URL\nN1 - CODEN: CODEN\nSN - ISSN\nN1 - Notes: Notes\nN2 - Abstract\nN1 - Call Number: Call Number\nKW - Keywords1, Keywords2, Keywords3\nKW - Keywords4\nER - \n\nTY - JOUR\nN1 - Record Number: 340\nA1 - Author Name, Author2 Name2\nT1 - Analytic Title\nJF - Journal Title\nRP - Reprint Status, Date\nPY - Date of Publication\nVL - Volume ID\nIS - Issue ID\nSP - Page(s)\nAV - Address/Availability\nUR - Location/URL\nSN - ISSN\nN1 - Notes: Notes\nN2 - Abstract\nN1 - Call Number: Call Number\nKW - Keywords1, Keywords2, Keywords3\nKW - Keywords4\nER - \n\nTY - JFULL\nN1 - Record Number: 350\nN1 - Editor: Editor\nJF - Journal Title\nRP - Reprint Status, Date\nN1 - Medium Designator: Medium Designator\nN1 - Edition: Edition\nN1 - Place of Publication: Place of Publication\nN1 - Publisher Name: Publisher Name\nPY - Date of Publication\nVL - Volume ID\nIS - Issue ID\nSP - Extent of Work\nN1 - Packaging Method: Packaging Method\nN1 - Frequency of Publication: Frequency of Publication\nN1 - Connective Phrase: Connective Phrase\nAV - Address/Availability\nUR - Location/URL\nN1 - CODEN: CODEN\nSN - ISSN\nN1 - Notes: Notes\nN2 - Abstract\nN1 - Call Number: Call Number\nKW - Keywords1, Keywords2, Keywords3\nKW - Keywords4\nER - \n\nTY - PCOMM\nN1 - Record Number: 360\nA1 - Author Name, Author2 Name2\nN1 - Author Affiliation: Author Affiliation\nN1 - Medium Designator: Medium Designator\nA2 - Recipient\nRP - Reprint Status, Date\nN1 - Place of Publication: Place of Publication\nPY - Date of Letter\nN1 - Extent of Letter: Extent of Letter\nN1 - Packaging Method: Packaging Method\nN1 - Connective Phrase: Connective Phrase\nAV - Address/Availability\nUR - Location/URL\nN1 - Notes: Notes\nN2 - Abstract\nN1 - Call Number: Call Number\nKW - Keywords1, Keywords2, Keywords3\nKW - Keywords4\nER - \n\nTY - SER\nN1 - Record Number: 370\nA1 - Author Name, Author2 Name2\nN1 - Author Role: Author Role\nT1 - Analytic Title\nN1 - Medium Designator: Medium Designator\nN1 - Connective Phrase: Connective Phrase\nT3 - Collection Title\nRP - Reprint Status, Date\nPY - Date of Publication\nSP - Location of Work\nN1 - Extent of Work: Extent of Work\nN1 - Packaging Method: Packaging Method\nN1 - Document Type: Document Type\nN1 - Connective Phrase: Connective Phrase\nAV - Address/Availability\nUR - Location/URL\nN1 - Notes: Notes\nN2 - Abstract\nN1 - Call Number: Call Number\nKW - Keywords1, Keywords2, Keywords3\nKW - Keywords4\nER - \n\nTY - MAP\nN1 - Record Number: 380\nT1 - Map Title\nM2 - Map Type\nA1 - Cartographer\nN1 - Cartographer Role: Cartographer Role\nRP - Reprint Status, Date\nM1 - Area\nN1 - Medium Designator: Medium Designator\nVL - Edition\nCY - Place of Publication\nPB - Publisher Name\nPY - Date of Publication\nY2 - Date of Copyright\nN1 - Extent of Work: Extent of Work\nN1 - Packaging Method: Packaging Method\nN1 - Size: Size\nN1 - Scale: Scale\nT3 - Series Title\nN1 - Series Volume ID: Series Volume ID\nN1 - Series Issue ID: Series Issue ID\nN1 - Connective Phrase: Connective Phrase\nAV - Address/Availability\nUR - Location/URL\nN1 - Notes: Notes\nN2 - Abstract\nN1 - Call Number: Call Number\nKW - Keywords1, Keywords2, Keywords3\nKW - Keywords4\nER - \n\nTY - SER\nN1 - Record Number: 390\nA1 - Monographic Author\nN1 - Author Role: Author Role\nT1 - Monographic Title\nRP - Reprint Status, Date\nVL - Edition\nCY - Place of Publication\nPB - Publisher Name\nPY - Date of Publication\nAV - Address/Availability\nUR - Location/URL\nSN - ISBN\nN1 - Notes: Notes\nN2 - Abstract\nN1 - Call Number: Call Number\nKW - Keywords1, Keywords2, Keywords3\nKW - Keywords4\nER - \n\nTY - MUSIC\nN1 - Record Number: 400\nA1 - Composer\nN1 - Composer Role: Composer Role\nT1 - Analytic Title\nN1 - Medium Designator: Medium Designator\nN1 - Connective Phrase: Connective Phrase\nA2 - Editor/Compiler\nN1 - Editor/Compiler Role: Editor/Compiler Role\nN1 - Title, Monographic: Monographic Title\nRP - Reprint Status, Date\nN1 - Medium Designator: Medium Designator\nVL - Edition\nN1 - Author, Subsidiary: Subsidiary Author\nN1 - Author Role: Author Role\nCY - Place of Publication\nPB - Publisher Name\nPY - Date of Publication\nN1 - Copyright Date: Copyright Date\nIS - Volume ID\nN1 - Report Identification: Report ID\nN1 - Plate Number: Plate Number\nN1 - Location in Work: Location in Work\nN1 - Extent of Work: Extent of Work\nN1 - Packaging Method: Packaging Method\nA3 - Series Editor\nN1 - Series Editor Role: Series Editor Role\nT3 - Series Title\nN1 - Series Volume ID: Series Volume ID\nN1 - Series Issue ID: Series Issue ID\nN1 - Connective Phrase: Connective Phrase\nAV - Address/Availability\nUR - Location/URL\nSN - ISBN\nN1 - Notes: Notes\nN2 - Abstract\nN1 - Call Number: Call Number\nKW - Keywords1, Keywords2, Keywords3\nKW - Keywords4\nER - \n\nTY - MPCT\nT1 - Analytic Title\nN1 - Medium Designator: Medium Designator\nN1 - Producer: Producer\nN1 - Producer Role: Producer Role\nRP - Reprint Status, Date\nA1 - Director\nN1 - Director Role: Director Role\nCY - Place of Publication\nU5 - Distributor\nPY - Date of Publication\nM2 - Timing\nN1 - Packaging Method: Packaging Method\nN1 - Size: Size\nT3 - Series Title\nN1 - Connective Phrase: Connective Phrase\nAV - Address/Availability\nUR - Location/URL\nSN - ISBN\nN1 - Notes: Notes\nN2 - Abstract\nN1 - Call Number: Call Number\nKW - Keywords1, Keywords2, Keywords3\nKW - Keywords4\nER - \n\nTY - NEWS\nN1 - Record Number: 420\nA1 - Author Name, Author2 Name2\nN1 - Author Role: Author Role\nT1 - Analytic Title\nN1 - Medium Designator: Medium Designator\nN1 - Connective Phrase: Connective Phrase\nJO - Newspaper Name\nRP - Reprint Status, Date\nCY - Place of Publication\nPB - Publisher Name\nPY - Date of Publication\nM2 - Section\nN1 - Column Number: Column Number\nSP - Page(s)\nAV - Address/Availability\nUR - Location/URL\nN1 - Notes: Notes\nN2 - Abstract\nN1 - Call Number: Call Number\nKW - Keywords1, Keywords2, Keywords3\nKW - Keywords4\nER - \n\n\nTY - PAT\nN1 - Record Number: 430\nA1 - Inventor Name\nN1 - Address: Address\nT1 - Patent Title\nA2 - Assignee\nN1 - Title, Short Form: Title, Short Form\nN1 - Title, Long Form: Title, Long Form\nN1 - Abstract Journal Date: Abstract Journal Date\nCY - Country\nM3 - Document Type\nIS - Patent Number\nN1 - Abstract Journal Title: Abstract Journal Title\nPY - Date of Patent Issue\nVL - Application No./Date\nN1 - Abstract Journal Volume: Abstract Journal Volume\nN1 - Abstract Journal Issue: Abstract Journal Issue\nSP - Abstract Journal Page(s)\nN1 - Extent of Work: Extent of Work\nN1 - Packaging Method: Packaging Method\nN1 - Language: Language\nN1 - Connective Phrase: Connective Phrase\nAV - Address/Availability\nUR - Location/URL\nM2 - Class Code, National\nM1 - Class Code, International\nN1 - Related Document No.: Related Document Number\nN1 - Notes: Notes\nN2 - Abstract\nN1 - Registry Number: Registry Number\nKW - Keywords1, Keywords2, Keywords3\nKW - Keywords4\nER - \n\n\nTY - RPRT\nN1 - Record Number: 440\nA1 - Author Name, Author2 Name2\nN1 - Author Role, Analytic: Author Role\nN1 - Author Affiliation: Author Affiliation\nN1 - Section Title: Section Title\nN1 - Medium Designator: Medium Designator\nN1 - Connective Phrase: Connective Phrase\nA2 - Monographic Author\nN1 - Author Role: Author Role\nT1 - Report Title\nRP - Reprint Status, Date\nN1 - Edition: Edition\nN1 - Author, Subsidiary: Subsidiary Author\nN1 - Author Role: Author Role\nCY - Place of Publication\nPB - Publisher Name\nPY - Date of Publication\nVL - Report ID\nSP - Extent of Work\nN1 - Packaging Method: Packaging Method\nT3 - Series Title\nN1 - Series Volume ID: Series Volume ID\nN1 - Series Issue ID: Series Issue ID\nN1 - Connective Phrase: Connective Phrase\nAV - Address/Availability\nUR - Location/URL\nN1 - CODEN: CODEN\nN1 - Notes: Notes\nN2 - Abstract\nN1 - Call Number: Call Number\nKW - Keywords1, Keywords2, Keywords3\nKW - Keywords4\nER - \n\n\nTY - SOUND\nN1 - Record Number: 450\nA1 - Composer\nN1 - Composer Role: Composer Role\nT1 - Analytic Title\nN1 - Medium Designator: Medium Designator\nN1 - Connective Phrase: Connective Phrase\nN1 - Editor/Compiler: Editor/Compiler\nN1 - Editor/Compiler Role: Editor/Compiler Role\nN1 - Recording Title: Recording Title\nRP - Reprint Status, Date\nN1 - Edition: Edition\nA2 - Performer\nN1 - Performer Role: Performer Role\nCY - Place of Publication\nPB - Publisher Name\nPY - Date of Publication\nN1 - Copyright Date: Date of Copyright\nN1 - Acquisition Number: Acquisition Number\nN1 - Matrix Number: Matrix Number\nN1 - Extent of Work: Extent of Work\nN1 - Packaging Method: Packaging Method\nN1 - Size: Size\nN1 - Reproduction Ratio: Reproduction Ratio\nT3 - Series Title\nAV - Address/Availability\nUR - Location/URL\nSN - ISBN\nN1 - Notes: Notes\nN2 - Abstract\nN1 - Call Number: Call Number\nKW - Keywords1, Keywords2, Keywords3\nKW - Keywords4\nER - \n\n\nTY - STAT\nN1 - Record Number: 460\nA1 - Author Name, Author2 Name2\nT1 - Statute Title\nRP - Reprint Status, Date\nCY - Code\nPY - Date of Publication\nY2 - Date\nVL - Title/Code Number\nSP - Section(s)\nT3 - History\nAV - Address/Availability\nUR - Location/URL\nN1 - Notes: Notes\nN2 - Abstract\nN1 - Call Number: Call Number\nKW - Keywords1, Keywords2, Keywords3\nKW - Keywords4\nER - \n\nTY - CTLG\nN1 - Record Number: 470\nA1 - Author Name, Author2 Name2\nT1 - Catalog Title\nN1 - Medium Designator: Medium Designator\nRP - Reprint Status, Date\nVL - Edition\nCY - Place of Publication\nPB - Publisher Name\nPY - Date of Publication\nIS - Catalog Number\nN1 - Issue Identification: Issue ID\nN1 - Extent of Work: Extent of Work\nN1 - Packaging Method: Packaging Method\nN1 - Connective Phrase: Connective Phrase\nAV - Address/Availability\nUR - Location/URL\nN1 - Notes: Notes\nN2 - Abstract\nN1 - Call Number: Call Number\nKW - Keywords1, Keywords2, Keywords3\nKW - Keywords4\nER - \n\n\nTY - UNBILL\nN1 - Record Number: 480\nA1 - Author Name, Author2 Name2\nT1 - Act Title\nRP - Reprint Status, Date\nCY - Code\nPY - Date of Code\nY2 - Date\nVL - Bill/Res Number\nT3 - History\nAV - Address/Availability\nUR - Location/URL\nN1 - Notes: Notes\nN2 - Abstract\nN1 - Call Number: Call Number\nKW - Keywords1, Keywords2, Keywords3\nKW - Keywords4\nER - \n\nTY - UNPB\nN1 - Record Number: 490\nA1 - Author Name, Author2 Name2\nT1 - Title\nA2 - Editor(s)\nRP - Reprint Status, Date\nPY - Date of Publication\nN1 - Date of Copyright: Date of Copyright\nAV - Address/Availability\nUR - Location/URL\nN1 - Notes: Notes\nN2 - Abstract\nN1 - Call Number: Call Number\nKW - Keywords1, Keywords2, Keywords3\nKW - Keywords4\nER - \n\nTY - VIDEO\nN1 - Record Number: 500\nA1 - Author Name, Author2 Name2\nT1 - Analytic Title\nN1 - Medium Designator: Medium Designator\nN1 - Producer: Producer\nN1 - Producer Role: Producer Role\nRP - Reprint Status, Date\nN1 - Director: Director\nN1 - Director Role: Director Role\nCY - Place of Publication\nPB - Distributor\nPY - Date of Publication\nM2 - Extent of Work\nN1 - Packaging Method: Packaging Method\nN1 - Size: Size\nT3 - Series Title\nN1 - Connective Phrase: Connective Phrase\nAV - Address/Availability\nUR - Location/URL\nSN - ISBN\nN1 - Notes: Notes\nN2 - Abstract\nN1 - Call Number: Call Number\nKW - Keywords1, Keywords2, Keywords3\nKW - Keywords4\nER - \n\n\nTY - ELEC\nN1 - Record Number: 510\nA1 - Author Name, Author2 Name2\nN1 - Author Role: Author Role\nN1 - Author Affiliation: Author Affiliation\nT1 - Title\nRP - Reprint Status, Date\nPY - Date of Publication\nY2 - Date of Access\nAV - Address/Availability\nUR - Location/URL\nN1 - Notes: Notes\nN2 - Abstract\nN1 - Call Number: Call Number\nKW - Keywords1, Keywords2, Keywords3\nKW - Keywords4\nER - \n\n",
"items": [
{
"itemType": "bill",
"title": "Act Name",
"creators": [
{
"lastName": "Author Name",
"firstName": "Author2 Name2",
"creatorType": "author"
}
],
"date": "0000 Date",
"abstractNote": "Abstract",
"billNumber": "Bill/Res Number",
"code": "Code",
"history": "History",
"section": "Section(s)",
"url": "Location/URL",
"attachments": [],
"tags": [
{
"tag": "Keywords1, Keywords2, Keywords3"
},
{
"tag": "Keywords4"
}
],
"notes": [
{
"note": "<p>Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "artwork",
"title": "Title/Subject",
"creators": [
{
"lastName": "Author Name",
"firstName": "Author2 Name2",
"creatorType": "artist"
}
],
"date": "0000 Date",
"abstractNote": "Abstract",
"archiveLocation": "Address/Availability",
"artworkMedium": "Medium",
"artworkSize": "Size",
"callNumber": "Call Number",
"url": "Location/URL",
"attachments": [],
"tags": [
{
"tag": "Keywords1, Keywords2, Keywords3"
},
{
"tag": "Keywords4"
}
],
"notes": [
{
"note": "<p>Artist Role: Artist Role</p>"
},
{
"note": "<p>Connective Phrase: Connective Phrase</p>"
},
{
"note": "<p>Author Role: Author Role</p>"
},
{
"note": "<p>Title Monographic: Monographic Title</p>"
},
{
"note": "<p>Location in Work: Location in Work</p>"
},
{
"note": "<p>Series Title: Series Title</p>"
},
{
"note": "<p>Connective Phrase: Connective Phrase</p>"
},
{
"note": "<p>Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "film",
"title": "Analytic Title",
"creators": [
{
"lastName": "Author Name",
"firstName": "Author2 Name2",
"creatorType": "director"
},
{
"lastName": "Author",
"firstName": "Subsidiary",
"creatorType": "producer"
}
],
"date": "0000 Date",
"abstractNote": "Abstract",
"archiveLocation": "Address/Availability",
"callNumber": "Call Number",
"distributor": "Publisher Name",
"url": "Location/URL",
"attachments": [],
"tags": [
{
"tag": "Keywords1, Keywords2, Keywords3"
},
{
"tag": "Keywords4"
}
],
"notes": [
{
"note": "<p>Author Role: Author Role</p>"
},
{
"note": "<p>Connective Phrase: Connective Phrase</p>"
},
{
"note": "<p>Author Role: Monographic Author Role</p>"
},
{
"note": "<p>Title Monographic: Monographic Title</p>"
},
{
"note": "<p>Author Role: Author Role</p>"
},
{
"note": "<p>Location in Work: Location in Work</p>"
},
{
"note": "<p>Extent of Work: Extent of Work</p>"
},
{
"note": "<p>Packaging Method: Packaging Method</p>"
},
{
"note": "<p>Size: Size</p>"
},
{
"note": "<p>Series Editor: Series Editor</p>"
},
{
"note": "<p>Series Editor Role: Series Editor Role</p>"
},
{
"note": "<p>Series Title: Series Title</p>"
},
{
"note": "<p>Series Volume ID: Series Volume ID</p>"
},
{
"note": "<p>Series Issue ID: Series Issue ID</p>"
},
{
"note": "<p>Connective Phrase: Connective Phrase</p>"
},
{
"note": "<p>Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "bookSection",
"title": "Analytic Title",
"creators": [
{
"lastName": "Author Name",
"firstName": "Author2 Name2",
"creatorType": "author"
},
{
"lastName": "Monographic Author",
"creatorType": "editor",
"fieldMode": 1
},
{
"lastName": "Series Editor",
"creatorType": "seriesEditor",
"fieldMode": 1
}
],
"date": "0000 Date",
"abstractNote": "Abstract",
"archiveLocation": "Address/Availability",
"bookTitle": "Monographic Title",
"callNumber": "Call Number",
"edition": "Edition",
"pages": "Page(s)",
"place": "Place of Publication",
"publisher": "Publisher Name",
"series": "Series Title",
"seriesNumber": "Series Volume Identification",
"url": "Location/URL",
"volume": "Volume ID",
"attachments": [],
"tags": [
{
"tag": "Keywords1, Keywords2, Keywords3"
},
{
"tag": "Keywords4"
}
],
"notes": [
{
"note": "<p>Medium Designator: Medium Designator</p>"
},
{
"note": "<p>Connective Phrase: Connective Phrase</p>"
},
{
"note": "<p>Author Role: Author Role</p>"
},
{
"note": "<p>Issue ID: Issue ID</p>"
},
{
"note": "<p>Series Editor Role: Series Editor Role</p>"
},
{
"note": "<p>Series Issue ID: Series Issue Identification</p>"
},
{
"note": "<p>Connective PhraseConnective Phrase</p>"
},
{
"note": "<p>Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "bookSection",
"title": "Analytic Title",
"creators": [
{
"lastName": "Author Name",
"firstName": "Author2 Name2",
"creatorType": "author"
},
{
"lastName": "Monographic Author",
"creatorType": "editor",
"fieldMode": 1
},
{
"lastName": "Author",
"firstName": "Subsidiary",
"creatorType": "seriesEditor"
},
{
"lastName": "Series Editor",
"creatorType": "seriesEditor",
"fieldMode": 1
}
],
"date": "0000 Date",
"ISBN": "ISBN",
"abstractNote": "Abstract",
"archiveLocation": "Address/Availability",
"bookTitle": "Monographic Title",
"callNumber": "Call Number",
"edition": "Edition",
"pages": "Page(s)",
"place": "Place of Publication",
"publisher": "Publisher Name",
"series": "Series Title",
"seriesNumber": "Series Volume ID",
"url": "Location/URL",
"volume": "Volume ID",
"attachments": [],
"tags": [
{
"tag": "Keywords1, Keywords2, Keywords3"
},
{
"tag": "Keywords4"
}
],
"notes": [
{
"note": "<p>Author Role: Author Role</p>"
},
{
"note": "<p>Medium Designator: Medium Designator</p>"
},
{
"note": "<p>Connective Phrase: Connective Phrase</p>"
},
{
"note": "<p>Author Role: Author Role</p>"
},
{
"note": "<p>Author Role: Author Role</p>"
},
{
"note": "<p>Date of Copyright: Date of Copyright</p>"
},
{
"note": "<p>Issue ID: Issue ID</p>"
},
{
"note": "<p>Extent of Work: Extent of Work</p>"
},
{
"note": "<p>Packaging Method: Packaging Method</p>"
},
{
"note": "<p>Series Editor Role: Series Editor Role</p>"
},
{
"note": "<p>Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "journalArticle",
"title": "Title",
"creators": [
{
"lastName": "Author Name",
"firstName": "Author2 Name2",
"creatorType": "author"
}
],
"date": "0000 Date",
"abstractNote": "Abstract",
"callNumber": "Call Number",
"issue": "Issue ID",
"pages": "Page(s)",
"publicationTitle": "Journal Title",
"url": "Location/URL",
"volume": "Volume ID",
"attachments": [],
"tags": [
{
"tag": "Keywords1, Keywords2, Keywords3"
},
{
"tag": "Keywords4"
}
],
"notes": [
{
"note": "<p>Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "book",
"title": "Monographic Title",
"creators": [
{
"lastName": "Monographic Author",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "0000 Date",
"ISBN": "ISBN",
"abstractNote": "Abstract",
"archiveLocation": "Address/Availability",
"callNumber": "Call Number",
"place": "Place of Publication",
"publisher": "Publisher Name",
"url": "Location/URL",
"attachments": [],
"tags": [
{
"tag": "Keywords1, Keywords2, Keywords3"
},
{
"tag": "Keywords4"
}
],
"notes": [
{
"note": "<p>Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "book",
"title": "Monographic Title",
"creators": [
{
"lastName": "Monographic Author",
"creatorType": "author",
"fieldMode": 1
},
{
"lastName": "Author",
"firstName": "Subsidiary",
"creatorType": "seriesEditor"
},
{
"lastName": "Series Editor",
"creatorType": "editor",
"fieldMode": 1
}
],
"date": "0000 Date",
"ISBN": "ISBN",
"abstractNote": "Abstract",
"archiveLocation": "Address/Availability",
"callNumber": "Call Number",
"edition": "Edition",
"place": "Place of Publication",
"publisher": "Publisher Name",
"series": "Series Title",
"seriesNumber": "Series Volume ID",
"url": "Location/URL",
"volume": "Volume ID",
"attachments": [],
"tags": [
{
"tag": "Keywords1, Keywords2, Keywords3"
},
{
"tag": "Keywords4"
}
],
"notes": [
{
"note": "<p>Author Role: Author Role</p>"
},
{
"note": "<p>Translated Title: Translated Title</p>"
},
{
"note": "<p>Author Role: Author Role</p>"
},
{
"note": "<p>Original Pub Date: Original Pub Date</p>"
},
{
"note": "<p>Extent of Work: Extent of Work</p>"
},
{
"note": "<p>Packaging Method: Packaging Method</p>"
},
{
"note": "<p>Series Editor Role: Series Editor Role</p>"
},
{
"note": "<p>Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "case",
"caseName": "Case Name",
"creators": [
{
"lastName": "Counsel",
"creatorType": "author",
"fieldMode": 1
}
],
"dateDecided": "0000 Date",
"abstractNote": "Abstract",
"court": "Court",
"firstPage": "Page(s)",
"reporterVolume": "Reporter Number",
"url": "Location/URL",
"attachments": [],
"tags": [
{
"tag": "Keywords1, Keywords2, Keywords3"
},
{
"tag": "Keywords4"
}
],
"notes": [
{
"note": "<p>First Page: First Page</p>"
},
{
"note": "<p>Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "computerProgram",
"title": "Program Title",
"creators": [
{
"lastName": "Author/Programmer",
"creatorType": "programmer",
"fieldMode": 1
}
],
"date": "0000 Date",
"ISBN": "ISBN",
"abstractNote": "Abstract",
"archiveLocation": "Address/Availability",
"callNumber": "Call Number",
"company": "Publisher Name",
"place": "Place of Publication",
"url": "Location/URL",
"versionNumber": "Version",
"attachments": [],
"tags": [
{
"tag": "Keywords1, Keywords2, Keywords3"
},
{
"tag": "Keywords4"
}
],
"notes": [
{
"note": "<p>Computer Program: Computer Program</p>"
},
{
"note": "<p>Connective Phrase: Connective Phrase</p>"
},
{
"note": "<p>Author Role: Author Role</p>"
},
{
"note": "<p>Title: Title</p>"
},
{
"note": "<p>Date of Copyright: Date of Copyright</p>"
},
{
"note": "<p>Report Identification: Report ID</p>"
},
{
"note": "<p>Extent of Work: Extent of Work</p>"
},
{
"note": "<p>Packaging Method: Packaging Method</p>"
},
{
"note": "<p>Connective Phrase: Connective Phrase</p>"
},
{
"note": "<p>Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "conferencePaper",
"title": "Paper/Section Title",
"creators": [
{
"lastName": "Author Name",
"firstName": "Author2 Name2",
"creatorType": "author"
},
{
"lastName": "Editor/Compiler",
"creatorType": "editor",
"fieldMode": 1
},
{
"lastName": "Series Editor",
"creatorType": "seriesEditor",
"fieldMode": 1
}
],
"date": "0000 Date",
"ISBN": "ISBN",
"abstractNote": "Abstract",
"archiveLocation": "Address/Availability",
"callNumber": "Call Number",
"pages": "Location in Work",
"place": "Place of Publication",
"proceedingsTitle": "Proceedings Title",
"publisher": "Publisher Name",
"series": "Series Title",
"url": "Location/URL",
"volume": "Volume ID",
"attachments": [],
"tags": [
{
"tag": "Keywords1, Keywords2, Keywords3"
},
{
"tag": "Keywords4"
}
],
"notes": [
{
"note": "<p>Author Role: Author Role</p>"
},
{
"note": "<p>Author Affiliation, Ana.: Author Affiliation</p>"
},
{
"note": "<p>Medium Designator: Medium Designator</p>"
},
{
"note": "<p>Connective Phrase: Connective Phrase</p>"
},
{
"note": "<p>Editor/Compiler Role: Editor/Compiler Role</p>"
},
{
"note": "<p>Place of Meeting: Place of Meeting</p>"
},
{
"note": "<p>Date of Copyright: Date of Copyright</p>"
},
{
"note": "<p>Extent of Work: Extent of Work</p>"
},
{
"note": "<p>Packaging Method: Packaging Method</p>"
},
{
"note": "<p>Series Editor Role: Series Editor Role</p>"
},
{
"note": "<p>Series Volume ID: Series Volume ID</p>"
},
{
"note": "<p>Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "dataset",
"title": "Analytic Title",
"creators": [],
"date": "0000 Date",
"abstractNote": "Abstract",
"archiveLocation": "Address/Availability",
"callNumber": "Call Number",
"repository": "Publisher Name",
"repositoryLocation": "Place of Publication",
"url": "Location/URL",
"versionNumber": "Version",
"attachments": [],
"tags": [
{
"tag": "Keywords1, Keywords2, Keywords3"
},
{
"tag": "Keywords4"
}
],
"notes": [
{
"note": "<p>Medium (Data File): Medium (Data File)</p>"
},
{
"note": "<p>Connective Phrase: Connective Phrase</p>"
},
{
"note": "<p>Editor/Compiler Role: Editor/Compiler Role</p>"
},
{
"note": "<p>Title, Monographic: Monographic Title</p>"
},
{
"note": "<p>Extent of Work: Extent of Work</p>"
},
{
"note": "<p>Packaging Method: Packaging Method</p>"
},
{
"note": "<p>Series Volume ID: Series Volume ID</p>"
},
{
"note": "<p>Connective Phrase: Connective Phrase</p>"
},
{
"note": "<p>Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "thesis",
"title": "Analytic Title",
"creators": [
{
"lastName": "Author Name",
"firstName": "Author2 Name2",
"creatorType": "author"
},
{
"lastName": "Supervisor surname",
"firstName": "Supervisor name",
"creatorType": "contributor"
}
],
"date": "0000 Date",
"abstractNote": "Abstract",
"archiveLocation": "Address/Availability",
"callNumber": "Call Number",
"numPages": "Extent of Work",
"place": "Place of Publication",
"university": "University",
"url": "Location/URL",
"attachments": [],
"tags": [
{
"tag": "Keywords1, Keywords2, Keywords3"
},
{
"tag": "Keywords4"
}
],
"notes": [
{
"note": "<p>Medium Designator: Medium Designator</p>"
},
{
"note": "<p>Date of Copyright: Date of Copyright</p>"
},
{
"note": "<p>Packaging Method: Packaging Method</p>"
},
{
"note": "<p>Connective Phrase: Connective Phrase</p>"
},
{
"note": "<p>Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "webpage",
"title": "Title",
"creators": [
{
"lastName": "Author Name",
"firstName": "Author2 Name2",
"creatorType": "author"
}
],
"date": "0000 Last",
"abstractNote": "Abstract",
"url": "Location/URL",
"websiteTitle": "Source",
"attachments": [],
"tags": [
{
"tag": "Keywords1, Keywords2, Keywords3"
},
{
"tag": "Keywords4"
}
],
"notes": [
{
"note": "<p>Volume ID: Volume ID</p>"
},
{
"note": "<p>Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "email",
"subject": "Subject",
"creators": [
{
"lastName": "Author Name",
"firstName": "Author2 Name2",
"creatorType": "author"
},
{
"lastName": "Recipient",
"creatorType": "recipient",
"fieldMode": 1
}
],
"date": "0000 Date",
"abstractNote": "Abstract",
"url": "Location/URL",
"attachments": [],
"tags": [
{
"tag": "Keywords1, Keywords2, Keywords3"
},
{
"tag": "Keywords4"
}
],
"notes": [
{
"note": "<p>Author E-mail: Author E-mail</p>"
},
{
"note": "<p>Author Affiliation: Author Affiliation</p>"
},
{
"note": "<p>Recipient E-mail: Recipient E-mail</p>"
},
{
"note": "<p>Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "journalArticle",
"title": "Analytic Title",
"creators": [
{
"lastName": "Author Name",
"firstName": "Author2 Name2",
"creatorType": "author"
},
{
"lastName": "Monographic Author",
"creatorType": "editor",
"fieldMode": 1
}
],
"date": "0000 Date",
"ISSN": "ISSN",
"abstractNote": "Abstract",
"archiveLocation": "Address/Availability",
"callNumber": "Call Number",
"issue": "Issue ID",
"journalAbbreviation": "Journal Title",
"pages": "Location in Work",
"publicationTitle": "Monographic Title",
"series": "Series Title",
"url": "Location/URL",
"volume": "Volume ID",
"attachments": [],
"tags": [
{
"tag": "Keywords1, Keywords2, Keywords3"
},
{
"tag": "Keywords4"
}
],
"notes": [
{
"note": "<p>Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "hearing",
"title": "Title",
"creators": [
{
"lastName": "Author Name",
"firstName": "Author2 Name2",
"creatorType": "author"
}
],
"date": "0000 Hearing",
"abstractNote": "Abstract",
"place": "Committee",
"publisher": "Subcommittee",
"url": "Location/URL",
"attachments": [],
"tags": [
{
"tag": "Keywords1, Keywords2, Keywords3"
},
{
"tag": "Keywords4"
}
],
"notes": [
{
"note": "<p>Author Role: Author Role</p>"
},
{
"note": "<p>Author Affiliation: Author Affiliation</p>"
},
{
"note": "<p>Medium Designator: Medium Designator</p>"
},
{
"note": "<p>Location in Work: Location/URL</p>"
},
{
"note": "<p>Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "magazineArticle",
"title": "Article Title",
"creators": [
{
"lastName": "Author Name",
"firstName": "Author2 Name2",
"creatorType": "author"
}
],
"date": "0000 Date",
"abstractNote": "Abstract",
"archiveLocation": "Address/Availability",
"callNumber": "Call Number",
"issue": "Issue ID",
"pages": "Page(s)",
"publicationTitle": "Magazine Title",
"url": "Location/URL",
"volume": "Volume ID",
"attachments": [],
"tags": [
{
"tag": "Keywords1, Keywords2, Keywords3"
},
{
"tag": "Keywords4"
}
],
"notes": [
{
"note": "<p>Copyright Date: Date of Copyright</p>"
},
{
"note": "<p>Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "manuscript",
"title": "Title",
"creators": [
{
"lastName": "Author Name",
"firstName": "Author2 Name2",
"creatorType": "author"
}
],
"date": "0000 Date",
"abstractNote": "Abstract",
"archiveLocation": "Address/Availability",
"callNumber": "Call Number",
"url": "Location/URL",
"attachments": [],
"tags": [
{
"tag": "Keywords1, Keywords2, Keywords3"
},
{
"tag": "Keywords4"
}
],
"notes": [
{
"note": "<p>Page(s): Page(s)</p>"
},
{
"note": "<p>Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "journalArticle",
"title": "Article Title",
"creators": [
{
"lastName": "Author Name",
"firstName": "Author2 Name2",
"creatorType": "author"
}
],
"date": "0000 Date",
"ISSN": "ISSN",
"abstractNote": "Abstract",
"archiveLocation": "Address/Availability",
"callNumber": "Call Number",
"issue": "Issue ID",
"language": "Language",
"pages": "Page(s)",
"publicationTitle": "Journal Title",
"url": "Location/URL",
"volume": "Volume ID",
"attachments": [],
"tags": [
{
"tag": "Keywords1, Keywords2, Keywords3"
},
{
"tag": "Keywords4"
}
],
"notes": [
{
"note": "<p>Medium Designator: Medium Designator</p>"
},
{
"note": "<p>Connective Phrase: Connective Phrase</p>"
},
{
"note": "<p>Translated Title: Translated Title</p>"
},
{
"note": "<p>Connective Phrase: Connective Phrase</p>"
},
{
"note": "<p>Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "journalArticle",
"title": "Article Title",
"creators": [
{
"lastName": "Author Name",
"firstName": "Author2 Name2",
"creatorType": "author"
},
{
"lastName": "Author",
"firstName": "Monographic",
"creatorType": "editor"
}
],
"date": "0000 Date",
"ISSN": "ISSN",
"abstractNote": "Abstract",
"archiveLocation": "Address/Availability",
"callNumber": "Call Number",
"issue": "Issue ID",
"pages": "Page(s)",
"publicationTitle": "Journal Title",
"url": "Location/URL",
"volume": "Volume ID",
"attachments": [],
"tags": [
{
"tag": "Keywords1, Keywords2, Keywords3"
},
{
"tag": "Keywords4"
}
],
"notes": [
{
"note": "<p>Author Role: Author Role</p>"
},
{
"note": "<p>Author Affiliation: Author Affiliation</p>"
},
{
"note": "<p>Medium Designator: Medium Designator</p>"
},
{
"note": "<p>Connective Phrase: Connective Phrase</p>"
},
{
"note": "<p>Author Role: Author Role</p>"
},
{
"note": "<p>CODEN: CODEN</p>"
},
{
"note": "<p>Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "journalArticle",
"title": "Analytic Title",
"creators": [
{
"lastName": "Author Name",
"firstName": "Author2 Name2",
"creatorType": "author"
}
],
"date": "0000 Date",
"ISSN": "ISSN",
"abstractNote": "Abstract",
"archiveLocation": "Address/Availability",
"callNumber": "Call Number",
"issue": "Issue ID",
"pages": "Page(s)",
"publicationTitle": "Journal Title",
"url": "Location/URL",
"volume": "Volume ID",
"attachments": [],
"tags": [
{
"tag": "Keywords1, Keywords2, Keywords3"
},
{
"tag": "Keywords4"
}
],
"notes": [
{
"note": "<p>Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "journalArticle",
"creators": [],
"date": "0000 Date",
"ISSN": "ISSN",
"abstractNote": "Abstract",
"archiveLocation": "Address/Availability",
"callNumber": "Call Number",
"issue": "Issue ID",
"pages": "Extent of Work",
"publicationTitle": "Journal Title",
"url": "Location/URL",
"volume": "Volume ID",
"attachments": [],
"tags": [
{
"tag": "Keywords1, Keywords2, Keywords3"
},
{
"tag": "Keywords4"
}
],
"notes": [
{
"note": "<p>Editor: Editor</p>"
},
{
"note": "<p>Medium Designator: Medium Designator</p>"
},
{
"note": "<p>Packaging Method: Packaging Method</p>"
},
{
"note": "<p>Frequency of Publication: Frequency of Publication</p>"
},
{
"note": "<p>Connective Phrase: Connective Phrase</p>"
},
{
"note": "<p>CODEN: CODEN</p>"
},
{
"note": "<p>Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "letter",
"creators": [
{
"lastName": "Author Name",
"firstName": "Author2 Name2",
"creatorType": "author"
},
{
"lastName": "Recipient",
"creatorType": "recipient",
"fieldMode": 1
}
],
"date": "0000 Date",
"abstractNote": "Abstract",
"archiveLocation": "Address/Availability",
"callNumber": "Call Number",
"url": "Location/URL",
"attachments": [],
"tags": [
{
"tag": "Keywords1, Keywords2, Keywords3"
},
{
"tag": "Keywords4"
}
],
"notes": [
{
"note": "<p>Author Affiliation: Author Affiliation</p>"
},
{
"note": "<p>Medium Designator: Medium Designator</p>"
},
{
"note": "<p>Extent of Letter: Extent of Letter</p>"
},
{
"note": "<p>Packaging Method: Packaging Method</p>"
},
{
"note": "<p>Connective Phrase: Connective Phrase</p>"
},
{
"note": "<p>Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "book",
"title": "Analytic Title",
"creators": [
{
"lastName": "Author Name",
"firstName": "Author2 Name2",
"creatorType": "author"
}
],
"date": "0000 Date",
"abstractNote": "Abstract",
"archiveLocation": "Address/Availability",
"callNumber": "Call Number",
"numPages": "Location of Work",
"series": "Collection Title",
"url": "Location/URL",
"attachments": [],
"tags": [
{
"tag": "Keywords1, Keywords2, Keywords3"
},
{
"tag": "Keywords4"
}
],
"notes": [
{
"note": "<p>Author Role: Author Role</p>"
},
{
"note": "<p>Medium Designator: Medium Designator</p>"
},
{
"note": "<p>Connective Phrase: Connective Phrase</p>"
},
{
"note": "<p>Extent of Work: Extent of Work</p>"
},
{
"note": "<p>Packaging Method: Packaging Method</p>"
},
{
"note": "<p>Document Type: Document Type</p>"
},
{
"note": "<p>Connective Phrase: Connective Phrase</p>"
},
{
"note": "<p>Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "map",
"title": "Map Title",
"creators": [
{
"lastName": "Cartographer",
"creatorType": "cartographer",
"fieldMode": 1
}
],
"date": "0000 Date",
"abstractNote": "Abstract",
"archiveLocation": "Address/Availability",
"callNumber": "Call Number",
"extra": "Map Type\nArea",
"place": "Place of Publication",
"publisher": "Publisher Name",
"scale": "Scale",
"url": "Location/URL",
"attachments": [],
"tags": [
{
"tag": "Keywords1, Keywords2, Keywords3"
},
{
"tag": "Keywords4"
}
],
"notes": [
{
"note": "<p>Cartographer Role: Cartographer Role</p>"
},
{
"note": "<p>Medium Designator: Medium Designator</p>"
},
{
"note": "<p>Extent of Work: Extent of Work</p>"
},
{
"note": "<p>Packaging Method: Packaging Method</p>"
},
{
"note": "<p>Size: Size</p>"
},
{
"note": "<p>Series Volume ID: Series Volume ID</p>"
},
{
"note": "<p>Series Issue ID: Series Issue ID</p>"
},
{
"note": "<p>Connective Phrase: Connective Phrase</p>"
},
{
"note": "<p>Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "book",
"title": "Monographic Title",
"creators": [
{
"lastName": "Monographic Author",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "0000 Date",
"ISBN": "ISBN",
"abstractNote": "Abstract",
"archiveLocation": "Address/Availability",
"callNumber": "Call Number",
"place": "Place of Publication",
"publisher": "Publisher Name",
"url": "Location/URL",
"volume": "Edition",
"attachments": [],
"tags": [
{
"tag": "Keywords1, Keywords2, Keywords3"
},
{
"tag": "Keywords4"
}
],
"notes": [
{
"note": "<p>Author Role: Author Role</p>"
},
{
"note": "<p>Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "audioRecording",
"title": "Analytic Title",
"creators": [
{
"lastName": "Composer",
"creatorType": "composer",
"fieldMode": 1
},
{
"lastName": "Editor/Compiler",
"creatorType": "performer",
"fieldMode": 1
}
],
"date": "0000 Date",
"ISBN": "ISBN",
"abstractNote": "Abstract",
"archiveLocation": "Address/Availability",
"callNumber": "Call Number",
"label": "Publisher Name",
"place": "Place of Publication",
"seriesTitle": "Series Title",
"url": "Location/URL",
"volume": "Edition",
"attachments": [],
"tags": [
{
"tag": "Keywords1, Keywords2, Keywords3"
},
{
"tag": "Keywords4"
}
],
"notes": [
{
"note": "<p>Composer Role: Composer Role</p>"
},
{
"note": "<p>Medium Designator: Medium Designator</p>"
},
{
"note": "<p>Connective Phrase: Connective Phrase</p>"
},
{
"note": "<p>Editor/Compiler Role: Editor/Compiler Role</p>"
},
{
"note": "<p>Title, Monographic: Monographic Title</p>"
},
{
"note": "<p>Medium Designator: Medium Designator</p>"
},
{
"note": "<p>Author Role: Author Role</p>"
},
{
"note": "<p>Copyright Date: Copyright Date</p>"
},
{
"note": "<p>Report Identification: Report ID</p>"
},
{
"note": "<p>Plate Number: Plate Number</p>"
},
{
"note": "<p>Location in Work: Location in Work</p>"
},
{
"note": "<p>Extent of Work: Extent of Work</p>"
},
{
"note": "<p>Packaging Method: Packaging Method</p>"
},
{
"note": "<p>Series Editor Role: Series Editor Role</p>"
},
{
"note": "<p>Series Volume ID: Series Volume ID</p>"
},
{
"note": "<p>Series Issue ID: Series Issue ID</p>"
},
{
"note": "<p>Connective Phrase: Connective Phrase</p>"
},
{
"note": "<p>Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "film",
"title": "Analytic Title",
"creators": [
{
"lastName": "Director",
"creatorType": "director",
"fieldMode": 1
}
],
"date": "0000 Date",
"abstractNote": "Abstract",
"archiveLocation": "Address/Availability",
"callNumber": "Call Number",
"extra": "Timing",
"url": "Location/URL",
"attachments": [],
"tags": [
{
"tag": "Keywords1, Keywords2, Keywords3"
},
{
"tag": "Keywords4"
}
],
"notes": [
{
"note": "<p>Medium Designator: Medium Designator</p>"
},
{
"note": "<p>Producer: Producer</p>"
},
{
"note": "<p>Producer Role: Producer Role</p>"
},
{
"note": "<p>Director Role: Director Role</p>"
},
{
"note": "<p>Packaging Method: Packaging Method</p>"
},
{
"note": "<p>Size: Size</p>"
},
{
"note": "<p>Connective Phrase: Connective Phrase</p>"
},
{
"note": "<p>Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "newspaperArticle",
"title": "Analytic Title",
"creators": [
{
"lastName": "Author Name",
"firstName": "Author2 Name2",
"creatorType": "author"
}
],
"date": "0000 Date",
"abstractNote": "Abstract",
"archiveLocation": "Address/Availability",
"callNumber": "Call Number",
"extra": "Section",
"pages": "Page(s)",
"place": "Place of Publication",
"publicationTitle": "Newspaper Name",
"url": "Location/URL",
"attachments": [],
"tags": [
{
"tag": "Keywords1, Keywords2, Keywords3"
},
{
"tag": "Keywords4"
}
],
"notes": [
{
"note": "<p>Author Role: Author Role</p>"
},
{
"note": "<p>Medium Designator: Medium Designator</p>"
},
{
"note": "<p>Connective Phrase: Connective Phrase</p>"
},
{
"note": "<p>Column Number: Column Number</p>"
},
{
"note": "<p>Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "patent",
"title": "Patent Title",
"creators": [
{
"lastName": "Inventor Name",
"creatorType": "inventor",
"fieldMode": 1
}
],
"issueDate": "0000 Date",
"abstractNote": "Abstract",
"applicationNumber": "Class Code, International",
"extra": "Class Code, National",
"issuingAuthority": "Assignee",
"language": "Language",
"pages": "Abstract Journal Page(s)",
"place": "Country",
"url": "Location/URL",
"attachments": [],
"tags": [
{
"tag": "Keywords1, Keywords2, Keywords3"
},
{
"tag": "Keywords4"
}
],
"notes": [
{
"note": "<p>Address: Address</p>"
},
{
"note": "<p>Title, Short Form: Title, Short Form</p>"
},
{
"note": "<p>Title, Long Form: Title, Long Form</p>"
},
{
"note": "<p>Abstract Journal Date: Abstract Journal Date</p>"
},
{
"note": "<p>Abstract Journal Title: Abstract Journal Title</p>"
},
{
"note": "<p>Abstract Journal Volume: Abstract Journal Volume</p>"
},
{
"note": "<p>Abstract Journal Issue: Abstract Journal Issue</p>"
},
{
"note": "<p>Extent of Work: Extent of Work</p>"
},
{
"note": "<p>Packaging Method: Packaging Method</p>"
},
{
"note": "<p>Connective Phrase: Connective Phrase</p>"
},
{
"note": "<p>Related Document No.: Related Document Number</p>"
},
{
"note": "<p>Notes</p>"
},
{
"note": "<p>Registry Number: Registry Number</p>"
}
],
"seeAlso": []
},
{
"itemType": "report",
"title": "Report Title",
"creators": [
{
"lastName": "Author Name",
"firstName": "Author2 Name2",
"creatorType": "author"
},
{
"lastName": "Monographic Author",
"creatorType": "seriesEditor",
"fieldMode": 1
}
],
"date": "0000 Date",
"abstractNote": "Abstract",
"archiveLocation": "Address/Availability",
"callNumber": "Call Number",
"institution": "Publisher Name",
"pages": "Extent of Work",
"place": "Place of Publication",
"url": "Location/URL",
"attachments": [],
"tags": [
{
"tag": "Keywords1, Keywords2, Keywords3"
},
{
"tag": "Keywords4"
}
],
"notes": [
{
"note": "<p>Author Role, Analytic: Author Role</p>"
},
{
"note": "<p>Author Affiliation: Author Affiliation</p>"
},
{
"note": "<p>Section Title: Section Title</p>"
},
{
"note": "<p>Medium Designator: Medium Designator</p>"
},
{
"note": "<p>Connective Phrase: Connective Phrase</p>"
},
{
"note": "<p>Author Role: Author Role</p>"
},
{
"note": "<p>Author Role: Author Role</p>"
},
{
"note": "<p>Packaging Method: Packaging Method</p>"
},
{
"note": "<p>Series Volume ID: Series Volume ID</p>"
},
{
"note": "<p>Series Issue ID: Series Issue ID</p>"
},
{
"note": "<p>Connective Phrase: Connective Phrase</p>"
},
{
"note": "<p>CODEN: CODEN</p>"
},
{
"note": "<p>Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "audioRecording",
"title": "Analytic Title",
"creators": [
{
"lastName": "Composer",
"creatorType": "composer",
"fieldMode": 1
},
{
"lastName": "Performer",
"creatorType": "performer",
"fieldMode": 1
}
],
"date": "0000 Date",
"ISBN": "ISBN",
"abstractNote": "Abstract",
"archiveLocation": "Address/Availability",
"callNumber": "Call Number",
"label": "Publisher Name",
"place": "Place of Publication",
"seriesTitle": "Series Title",
"url": "Location/URL",
"attachments": [],
"tags": [
{
"tag": "Keywords1, Keywords2, Keywords3"
},
{
"tag": "Keywords4"
}
],
"notes": [
{
"note": "<p>Composer Role: Composer Role</p>"
},
{
"note": "<p>Medium Designator: Medium Designator</p>"
},
{
"note": "<p>Connective Phrase: Connective Phrase</p>"
},
{
"note": "<p>Editor/Compiler: Editor/Compiler</p>"
},
{
"note": "<p>Editor/Compiler Role: Editor/Compiler Role</p>"
},
{
"note": "<p>Recording Title: Recording Title</p>"
},
{
"note": "<p>Performer Role: Performer Role</p>"
},
{
"note": "<p>Copyright Date: Date of Copyright</p>"
},
{
"note": "<p>Acquisition Number: Acquisition Number</p>"
},
{
"note": "<p>Matrix Number: Matrix Number</p>"
},
{
"note": "<p>Extent of Work: Extent of Work</p>"
},
{
"note": "<p>Packaging Method: Packaging Method</p>"
},
{
"note": "<p>Size: Size</p>"
},
{
"note": "<p>Reproduction Ratio: Reproduction Ratio</p>"
},
{
"note": "<p>Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "statute",
"nameOfAct": "Statute Title",
"creators": [
{
"lastName": "Author Name",
"firstName": "Author2 Name2",
"creatorType": "author"
}
],
"dateEnacted": "0000 Date",
"abstractNote": "Abstract",
"codeNumber": "Title/Code Number",
"pages": "Section(s)",
"url": "Location/URL",
"attachments": [],
"tags": [
{
"tag": "Keywords1, Keywords2, Keywords3"
},
{
"tag": "Keywords4"
}
],
"notes": [
{
"note": "<p>Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "magazineArticle",
"title": "Catalog Title",
"creators": [
{
"lastName": "Author Name",
"firstName": "Author2 Name2",
"creatorType": "author"
}
],
"date": "0000 Date",
"abstractNote": "Abstract",
"archiveLocation": "Address/Availability",
"callNumber": "Call Number",
"issue": "Catalog Number",
"url": "Location/URL",
"volume": "Edition",
"attachments": [],
"tags": [
{
"tag": "Keywords1, Keywords2, Keywords3"
},
{
"tag": "Keywords4"
}
],
"notes": [
{
"note": "<p>Medium Designator: Medium Designator</p>"
},
{
"note": "<p>Extent of Work: Extent of Work</p>"
},
{
"note": "<p>Packaging Method: Packaging Method</p>"
},
{
"note": "<p>Connective Phrase: Connective Phrase</p>"
},
{
"note": "<p>Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "manuscript",
"title": "Act Title",
"creators": [
{
"lastName": "Author Name",
"firstName": "Author2 Name2",
"creatorType": "author"
}
],
"date": "0000 Date",
"abstractNote": "Abstract",
"archiveLocation": "Address/Availability",
"callNumber": "Call Number",
"place": "Code",
"url": "Location/URL",
"attachments": [],
"tags": [
{
"tag": "Keywords1, Keywords2, Keywords3"
},
{
"tag": "Keywords4"
}
],
"notes": [
{
"note": "<p>Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "journalArticle",
"title": "Title",
"creators": [
{
"lastName": "Author Name",
"firstName": "Author2 Name2",
"creatorType": "author"
},
{
"lastName": "Editor(s)",
"creatorType": "editor",
"fieldMode": 1
}
],
"date": "0000 Date",
"abstractNote": "Abstract",
"archiveLocation": "Address/Availability",
"callNumber": "Call Number",
"url": "Location/URL",
"attachments": [],
"tags": [
{
"tag": "Keywords1, Keywords2, Keywords3"
},
{
"tag": "Keywords4"
}
],
"notes": [
{
"note": "<p>Date of Copyright: Date of Copyright</p>"
},
{
"note": "<p>Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "videoRecording",
"title": "Analytic Title",
"creators": [
{
"lastName": "Author Name",
"firstName": "Author2 Name2",
"creatorType": "director"
}
],
"date": "0000 Date",
"ISBN": "ISBN",
"abstractNote": "Abstract",
"archiveLocation": "Address/Availability",
"callNumber": "Call Number",
"extra": "Extent of Work",
"place": "Place of Publication",
"studio": "Distributor",
"url": "Location/URL",
"attachments": [],
"tags": [
{
"tag": "Keywords1, Keywords2, Keywords3"
},
{
"tag": "Keywords4"
}
],
"notes": [
{
"note": "<p>Medium Designator: Medium Designator</p>"
},
{
"note": "<p>Producer: Producer</p>"
},
{
"note": "<p>Producer Role: Producer Role</p>"
},
{
"note": "<p>Director: Director</p>"
},
{
"note": "<p>Director Role: Director Role</p>"
},
{
"note": "<p>Packaging Method: Packaging Method</p>"
},
{
"note": "<p>Size: Size</p>"
},
{
"note": "<p>Connective Phrase: Connective Phrase</p>"
},
{
"note": "<p>Notes</p>"
}
],
"seeAlso": []
},
{
"itemType": "webpage",
"title": "Title",
"creators": [
{
"lastName": "Author Name",
"firstName": "Author2 Name2",
"creatorType": "author"
}
],
"date": "0000 Date",
"abstractNote": "Abstract",
"url": "Location/URL",
"attachments": [],
"tags": [
{
"tag": "Keywords1, Keywords2, Keywords3"
},
{
"tag": "Keywords4"
}
],
"notes": [
{
"note": "<p>Author Role: Author Role</p>"
},
{
"note": "<p>Author Affiliation: Author Affiliation</p>"
},
{
"note": "<p>Notes</p>"
}
],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "TY - JOUR\nT1 - From Basic to Applied Research to Improve Outcomes for Individuals Who Require Augmentative and Alternative Communication: \u2028Potential Contributions of Eye Tracking Research Methods\nAU - Light, Janice\nAU - McNaughton, David\nY1 - 2014/06/01\nPY - 2014\nDA - 2014/06/01\nN1 - doi: 10.3109/07434618.2014.906498\nDO - 10.3109/07434618.2014.906498\nT2 - Augmentative and Alternative Communication\nJF - Augmentative and Alternative Communication\nJO - Augment Altern Commun\nSP - 99\nEP - 105\nVL - 30\nIS - 2\nPB - Informa Allied Health\nSN - 0743-4618\nM3 - doi: 10.3109/07434618.2014.906498\nUR - http://dx.doi.org/10.3109/07434618.2014.906498\nY2 - 2014/12/17\nER -",
"items": [
{
"itemType": "journalArticle",
"title": "From Basic to Applied Research to Improve Outcomes for Individuals Who Require Augmentative and Alternative Communication: Potential Contributions of Eye Tracking Research Methods",
"creators": [
{
"lastName": "Light",
"firstName": "Janice",
"creatorType": "author"
},
{
"lastName": "McNaughton",
"firstName": "David",
"creatorType": "author"
}
],
"date": "2014-06-01",
"DOI": "10.3109/07434618.2014.906498",
"ISSN": "0743-4618",
"issue": "2",
"journalAbbreviation": "Augment Altern Commun",
"pages": "99-105",
"publicationTitle": "Augmentative and Alternative Communication",
"url": "http://dx.doi.org/10.3109/07434618.2014.906498",
"volume": "30",
"attachments": [],
"tags": [],
"notes": [
{
"note": "<p>doi: 10.3109/07434618.2014.906498</p>"
}
],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "TY - BOOK\nSN - 9783642002304\nAU - Depenheuer, Otto\nT1 - Eigentumsverfassung und Finanzkrise\nT2 - Bibliothek des Eigentums\nPY - 2009\nCY - Berlin, Heidelberg\nPB - Springer Berlin Heidelberg\nKW - Finanzkrise / Eigentum / Haftung / Ordnungspolitik / Aufsatzsammlung / Online-Publikation\nKW - Constitutional law\nKW - Law\nUR - http://dx.doi.org/10.1007/978-3-642-00230-4\nL1 - doi:10.1007/978-3-642-00230-4\nVL - 7\nAB - In dem Buch befinden sich einzelne Beiträge zu ...\nLA - ger\nH1 - UB Mannheim\nH2 - 300 QN 100 D419\nH1 - UB Leipzig\nH2 - PL 415 D419\nTS - BibTeX\nDO - 10.1007/978-3-642-00230-4\nER -\n\n",
"items": [
{
"itemType": "book",
"title": "Eigentumsverfassung und Finanzkrise",
"creators": [
{
"lastName": "Depenheuer",
"firstName": "Otto",
"creatorType": "author"
}
],
"date": "2009",
"ISBN": "9783642002304",
"abstractNote": "In dem Buch befinden sich einzelne Beiträge zu ...",
"callNumber": "300 QN 100 D419",
"extra": "DOI: 10.1007/978-3-642-00230-4",
"language": "ger",
"libraryCatalog": "UB Mannheim",
"place": "Berlin, Heidelberg",
"publisher": "Springer Berlin Heidelberg",
"series": "Bibliothek des Eigentums",
"url": "http://dx.doi.org/10.1007/978-3-642-00230-4",
"volume": "7",
"attachments": [
{
"title": "Attachment",
"path": "doi:10.1007/978-3-642-00230-4"
}
],
"tags": [
{
"tag": "Constitutional law"
},
{
"tag": "Finanzkrise / Eigentum / Haftung / Ordnungspolitik / Aufsatzsammlung / Online-Publikation"
},
{
"tag": "Law"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "TY - JOUR\nT1 - Deprecated tag test\nN1 - The Y1 date tag is deprecated. Its value should not be used when DA is present, even if Y1 comes first.\nY1 - 1900/01/01\nDA - 1950/01/01\nER - ",
"items": [
{
"itemType": "journalArticle",
"title": "Deprecated tag test",
"creators": [],
"date": "1950-01-01",
"attachments": [],
"tags": [],
"notes": [
{
"note": "<p>The Y1 date tag is deprecated. Its value should not be used when DA is present, even if Y1 comes first.</p>"
}
],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "TY - JOUR\nTI - Mixed author tags\nN1 - A1 should not be treated as deprecated or authors will appear out of order.\nA1 - Georgiev, Danko\nAU - Bello, Leon\nAU - Carmi, Avishy\nAU - Cohen, Eliahu\nER - ",
"items": [
{
"itemType": "journalArticle",
"title": "Mixed author tags",
"creators": [
{
"lastName": "Georgiev",
"firstName": "Danko",
"creatorType": "author"
},
{
"lastName": "Bello",
"firstName": "Leon",
"creatorType": "author"
},
{
"lastName": "Carmi",
"firstName": "Avishy",
"creatorType": "author"
},
{
"lastName": "Cohen",
"firstName": "Eliahu",
"creatorType": "author"
}
],
"attachments": [],
"tags": [],
"notes": [
{
"note": "<p>A1 should not be treated as deprecated or authors will appear out of order.</p>"
}
],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "TY - JOUR\r\nTI - Using focus groups to adapt ethnically appropriate, information-seeking and recruitment messages for a prostate cancer screening program for men at high risk\r\nT2 - Journal of the National Medical Association\r\nVL - 100\r\nIS - 6\r\nSP - 674\r\nEP - 682\r\nPY - 2008\r\nDO - 10.1016/S0027-9684(15)31340-7\r\nAU - Bryan, C.J.\r\nAU - Wetmore-Arkader, L.\r\nAU - Calvano, T.\r\nAU - Deatrick, J.A.\r\nAU - Giri, V.N.\r\nAU - Bruner, D.W.\r\nN1 - Cited By :10\r\nN1 - Export Date: 13 July 2022\r\nER - \r\n\r\nTY - JOUR\r\nT2 - Prostate Cancer Mortality Statistics 2015\r\nPY - 0000\r\nN1 - Cited By :1\r\nN1 - Export Date: 13 July 2022\r\nER - \r\n\r\n",
"items": [
{
"itemType": "journalArticle",
"title": "Using focus groups to adapt ethnically appropriate, information-seeking and recruitment messages for a prostate cancer screening program for men at high risk",
"creators": [
{
"lastName": "Bryan",
"firstName": "C.J.",
"creatorType": "author"
},
{
"lastName": "Wetmore-Arkader",
"firstName": "L.",
"creatorType": "author"
},
{
"lastName": "Calvano",
"firstName": "T.",
"creatorType": "author"
},
{
"lastName": "Deatrick",
"firstName": "J.A.",
"creatorType": "author"
},
{
"lastName": "Giri",
"firstName": "V.N.",
"creatorType": "author"
},
{
"lastName": "Bruner",
"firstName": "D.W.",
"creatorType": "author"
}
],
"date": "2008",
"DOI": "10.1016/S0027-9684(15)31340-7",
"issue": "6",
"pages": "674-682",
"publicationTitle": "Journal of the National Medical Association",
"volume": "100",
"attachments": [],
"tags": [],
"notes": [
{
"note": "<p>Cited By :10</p>"
},
{
"note": "<p>Export Date: 13 July 2022</p>"
}
],
"seeAlso": []
},
{
"itemType": "journalArticle",
"creators": [],
"publicationTitle": "Prostate Cancer Mortality Statistics 2015",
"attachments": [],
"tags": [],
"notes": [
{
"note": "<p>Cited By :1</p>"
},
{
"note": "<p>Export Date: 13 July 2022</p>"
}
],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "TY - DATA\r\nT1 - Moving language: Mothers’ verbs correspond to infants’ real-time locomotion\r\nAU - West, Kelsey Louise\r\nAU - Tamis-LeMonda, Catherine\r\nAU - Adolph, Karen\r\nDO - 10.17910/B7.1322\r\nUR - http://databrary.org/volume/1322\r\nAB - How do infants learn language? Infants can only learn the words that they hear. We tested whether infants’ actions affect the words that caregivers say—specifically whether infant locomotion influences caregivers’ language about locomotion. Compared to crawling infants, walkers travel greater distances (Adolph, et al, 2012). Does enhanced locomotion in walkers influence the verbs that caregivers say? We hypothesized that walking creates new opportunities for verb learning. To disentangle locomotor ability from age, we observed same-aged crawlers and walkers (16 13-month-old crawlers and 16 13-month-old walkers) and an older group of walkers (16 18-month-olds) during two hours of activity at home. Mothers’ language was transcribed verbatim. We then identified each “locomotor verb” (e.g., “come,” “bring”) that mothers said, and each bout of infant crawling and walking. Walkers’ enhanced locomotion indeed opened new opportunities for verb learning. Although mothers’ language overall was more frequent to older compared to younger infants, their locomotor verbs were more frequent to walkers than to crawlers. Preliminary findings show that caregivers directed more utterances to 18-month-olds (M = 2,006.00, SD = 579.02) compared to 13-month-old crawlers (M = 1,553.75, SD = 728.42) and walkers (M = 1,363.50, SD = 619.29), F (2, 31) = 3.23, p = .052. Notably, caregivers directed twice as many locomotor verbs to 13- and 18-month-old walkers (M = 53.13, SD = 15.40; M = 53.00, SD = 25.14, respectively) compared with 13-month-old crawlers (M = 25.25, SD = 12.87), F (2, 31) = 5.46, p = .01. Moreover, mothers’ locomotor verbs were related to infants’ moment-to-moment locomotion: Infants who moved more frequently received more locomotor verbs compared to infants who moved less, r(26) = .42, p = .035. Findings indicate that locomotor development leads to more advanced forms of infant activity, which consequently prompts caregivers to use more advanced language.\r\nPY - 2021\r\nPB - Databrary\r\nER - ",
"items": [
{
"itemType": "dataset",
"title": "Moving language: Mothers’ verbs correspond to infants’ real-time locomotion",
"creators": [
{
"lastName": "West",
"firstName": "Kelsey Louise",
"creatorType": "author"
},
{
"lastName": "Tamis-LeMonda",
"firstName": "Catherine",
"creatorType": "author"
},
{
"lastName": "Adolph",
"firstName": "Karen",
"creatorType": "author"
}
],
"date": "2021",
"DOI": "10.17910/B7.1322",
"abstractNote": "How do infants learn language? Infants can only learn the words that they hear. We tested whether infants’ actions affect the words that caregivers say—specifically whether infant locomotion influences caregivers’ language about locomotion. Compared to crawling infants, walkers travel greater distances (Adolph, et al, 2012). Does enhanced locomotion in walkers influence the verbs that caregivers say? We hypothesized that walking creates new opportunities for verb learning. To disentangle locomotor ability from age, we observed same-aged crawlers and walkers (16 13-month-old crawlers and 16 13-month-old walkers) and an older group of walkers (16 18-month-olds) during two hours of activity at home. Mothers’ language was transcribed verbatim. We then identified each “locomotor verb” (e.g., “come,” “bring”) that mothers said, and each bout of infant crawling and walking. Walkers’ enhanced locomotion indeed opened new opportunities for verb learning. Although mothers’ language overall was more frequent to older compared to younger infants, their locomotor verbs were more frequent to walkers than to crawlers. Preliminary findings show that caregivers directed more utterances to 18-month-olds (M = 2,006.00, SD = 579.02) compared to 13-month-old crawlers (M = 1,553.75, SD = 728.42) and walkers (M = 1,363.50, SD = 619.29), F (2, 31) = 3.23, p = .052. Notably, caregivers directed twice as many locomotor verbs to 13- and 18-month-old walkers (M = 53.13, SD = 15.40; M = 53.00, SD = 25.14, respectively) compared with 13-month-old crawlers (M = 25.25, SD = 12.87), F (2, 31) = 5.46, p = .01. Moreover, mothers’ locomotor verbs were related to infants’ moment-to-moment locomotion: Infants who moved more frequently received more locomotor verbs compared to infants who moved less, r(26) = .42, p = .035. Findings indicate that locomotor development leads to more advanced forms of infant activity, which consequently prompts caregivers to use more advanced language.",
"repository": "Databrary",
"url": "http://databrary.org/volume/1322",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "TY - GEN\nT1 - Citavi Item\nKW - Tag\nH2 - Call Number\nM4 - Citavi\nER -",
"items": [
{
"itemType": "journalArticle",
"title": "Citavi Item",
"creators": [],
"callNumber": "Call Number",
"attachments": [],
"tags": [
{
"tag": "Tag"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Michael Berkowitz, Avram Lyon, and contributorstxt/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2015-2021 Michael Berkowitz, Avram Lyon, and contributors.
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
// Lookup tables
var ITEM_TYPES = {
// PT values
J: "journalArticle",
S: "bookSection", // Not sure
P: "patent",
B: "book",
// DT overrides; not including anything already covered by the above.
// TODO: Add more implementations for DT values as needed.
"PROCEEDINGS PAPER": "conferencePaper",
};
var FIELD_MAP = {
AE: "assignee",
AB: "abstractNote",
AR: "pages", // article number
AW: "url",
BN: "ISBN",
BP: "pages", // start page
CE: "edition",
CL: "place", // conference location
CT: "conferenceName",
// NOTE: CY is conference date, not "issued" (published) date
DI: "DOI",
FN: "libraryCatalog", // almost always the database name
// XXX: what is "GT: Time"?
IO: "issuingAuthority",
IS: "issue",
JI: "journalAbbreviation",
LA: "language",
PA: "place",
PC: "country", // patent country
PD: "date",
PG: "numPages",
PI: "place", // publisher city
PN: "patentNumber",
PS: "pages",
PU: "publisher",
PV: "place", // place of publication
PY: "date", // publication year
UR: "url",
VL: "volume",
VN: "versionNumber", // NOTE: "VR" is the version of the export format
// Title fields,
SE: "seriesTitle",
SO: "publicationTitle",
TI: "title",
};
// Translator detect/do functions
function detectImport() {
// If we don't find item type (PT or DT) within first 10 non-empty lines,
// return false; see also RIS.js.
let line;
let i = 0;
while ((line = Zotero.read()) !== false && i < 10) {
let lineData = splitLine(line);
if (lineData) {
i += 1;
if (["PT", "DT"].includes(lineData[0])) {
return true;
}
}
}
return false;
}
function doImport() {
let map = new ItemMap();
let line;
while (!map.terminate && ((line = Z.read()) !== false)) {
map.scanLine(line);
}
// Try saving any leftover fields as an item; this can happen when the last
// record lacks ER or EF. In that case, we shouldn't throw away the data
// simply because the file didn't properly end.
map.save();
return false;
}
// Utilities
/**
* Utility for mapping tagged data to item fields
*
* @constructor
*/
function ItemMap() {
// Hold the property => value map for an item.
this.records = new Map();
// Cursor to current property
this.currentKey = null;
this.terminate = false;
}
ItemMap.prototype = {
/**
* Validate a line and push it into the item map record if it's valid data
* line, or do an action if it is one of the special tags (ER and EF).
*
* This function is strictly concerned with the form of the lines and
* converting the line data to key-value pairs. It does not apply any
* semantics to the data.
*
* @param {string} line
* @throws {Error} When line fails validation
*/
scanLine: function (line) {
let lineRecord = splitLine(line);
if (!lineRecord) {
return;
}
let [head, content] = lineRecord;
if (head === " ") { // two spaces for line continuation
if (!this.currentKey) {
throw new Error(`Dangling line continuation; the rest of line is ${content}`);
}
let currentValueArray = this.records.get(this.currentKey);
if (!Array.isArray(currentValueArray)) {
// Continued line can be traced to a tag but the tag's field is
// not initialized. This should not happen and is an internal
// error.
throw new Error(`Unexpected uninitialized field at ${this.currentKey} found while handling line continuation`);
}
// Add the continued line, if non-empty, into the container for the
// field value
if (content) {
currentValueArray.push(content);
}
}
else { // Not line continuation; a new tag begins.
if (head === "ER") {
// End of Record; Save this item and reset for any subsequent
// items.
this.save();
this.reset();
return;
}
if (head === "EF") {
// End of File; Simply signal the end of processing.
this.terminate = true;
return;
}
// Double check if there is duplicate tag
if (this.records.has(head)) {
// TODO: should it throw?
Z.debug(`Warning: duplicate tag ${head}; new input field value is ${content}; old value was ${this.records.get(head).toString()}`);
}
// Initialize the tag field with a new array to accommodate
// continued lines
this.records.set(head, content ? [content] : []);
this.currentKey = head;
}
},
/**
* Create a new Zotero item, populate it using this item map after
* normalization, and complete the Zotero item.
*/
save: function () {
this.normalize();
// Pop the type string from the normalized record
let type = this.records.get("DT");
this.records.delete("DT");
let item = new Z.Item(type);
let extra = []; // temporary array for holding lines in the extra
let tagMissed = 0; // number of tags unhandled
for (let [wosTag, tagValueArray] of this.records) {
// The array content concatenated into a single string
let tagValueString = ZU.trimInternal(tagValueArray.join(" "));
switch (wosTag) {
// Main authors. After normalization, AF and AU cannot both
// exist.
case "AF":
case "AU":
addCreator(item, tagValueArray,
type === "patent" ? "inventor" : "author");
break;
// Other types of creators
case "BE": // Book editor
case "ED": // Editors
addCreator(item, tagValueArray, "editor");
break;
case "TR":
addCreator(item, tagValueArray, "translator");
break;
case "AA": // Additional Authors
addCreator(item, tagValueArray, "contributor");
break;
// Keywords, ontology terms, etc. as item tags
case "BD": // broad terms, like DE below
case "DE": // author-defined keywords
case "ID": // keywords
case "IP": // patent category
case "MC": // Major Concepts or Derwent Manual Code(s)
case "MQ": // methods, supplies
case "OR": // organism descriptors
item.tags.push(...tagValueString.split("; "));
break;
// Additional information that becomes lines in the extra field
case "NO":
extra.push(`Comments, Corrections, Erratum: ${tagValueString}`);
break;
case "NT":
extra.push(`Notes: ${tagValueString}`);
break;
case "UT":
extra.push(`Web of Science ID: ${tagValueString}`);
break;
// ISSN
case "SN":
item.ISSN = tagValueArray.join(", ") || undefined;
break;
// Title fields (often in all-caps) are turned into Title Case
// if the pref "capitalizeTitles" is true (default false)
case "SE":
case "SO":
case "TI":
tagValueString = selectiveTitleCase(tagValueString);
item[FIELD_MAP[wosTag]] = tagValueString;
break;
// The following non-title fields are converted to Title Case
case "AE": // patent assignee
case "CT": // conference name
case "PU": // publisher
tagValueString = selectiveTitleCase(tagValueString, true/* force */);
/* NOTE: FALL THROUGH */
default:
{
let itemField = FIELD_MAP[wosTag];
if (!itemField) { // unknown tag
Z.debug(`Unhandled tag ${wosTag} => ${tagValueArray}`);
tagMissed += 1;
}
else {
item[itemField] = tagValueString;
}
}
} // bottom of the switch statement
}
if (tagMissed === this.records.size) { // item is not populated
return;
}
if (extra.length) {
item.extra = extra.join("\n");
}
item.complete();
},
/**
* Reset the internal state of the item map
*/
reset: function () {
this.records.clear();
this.currentKey = null;
this.terminate = false;
},
/**
* Normalize the content of internal records. This must be called only
* after all the fields of an item is populated.
*/
normalize: function () {
let r = this.records; // for ergonomics
// Normalize type. Turn the field value into a Zotero item-type string
// for convenience because it is always used in a special way, unlike
// other tags. DT takes precedence over PT.
// NOTE: After we identify the Zotero type, DT is set and PT deleted.
let wosType = r.get("DT"); // If DT present, begin with it
let zoteroType = wosToZoteroType(wosType, "DT");
if (!zoteroType) {
wosType = r.get("PT"); // Try PT next if DT not useable
zoteroType = wosToZoteroType(wosType, "PT");
}
if (!zoteroType) {
Z.debug("Warning: No type found for item; falling back to journal article");
zoteroType = "journalArticle";
}
// Delete PT and set DT to Zotero type
r.delete("PT");
r.set("DT", zoteroType);
// Authors. Use AF in preference to AU.
if (r.has("AF") && r.has("AU")) {
r.delete("AU");
}
// Normalize pages. If page range present, use it.
if (r.has("PS")) {
r.delete("BP"); // begin page
r.delete("EP"); // end page
}
else { // no page range
let begin = r.get("BP");
let end = r.get("EP");
// If BP exists, try construct a page range like "begin-end" if EP
// exists, or without the "-end" suffix if EP is missing.
if (begin) {
let suffix = (end && end[0]) ? `-${end[0]}` : "";
r.set("PS", [`${begin[0]}${suffix}`]);
r.delete("BP");
r.delete("EP");
}
}
// Most electronic journals use article number (AR), but if both
// article number and pages present, ignore article number.
if (r.has("AR") && (r.has("PS") || r.has("BP"))) {
r.delete("AR");
}
// Normalize dates. PY refers to the year, and PD is the more detailed
// date, like month-day ("JAN 1"), month ("JAN"), season ("SPR"),
// possibly with redundant year.
if (r.has("PY")) { // year
if (!r.has("PD")) { // but without PD
Z.debug(`Using PY ${r.get("PY")} verbatim as date`);
r.set("PD", r.get("PY"));
}
else {
let year = r.get("PY")[0];
let pd = r.get("PD")[0];
if (!pd.includes(year)) { // PD doesn't have redundant year
Z.debug(`Adding PY ${year} to PD ${pd}`);
pd += ` ${year}`;
r.set("PD", [pd]);
}
}
// We have put whatever date details we have into PD, and PY is now
// redundant
r.delete("PY");
}
// Publisher address; don't use full address if PI (city) is available
if (r.has("PI")) {
let city = r.get("PI")[0];
r.set("PI", [ZU.capitalizeTitle(city, true/* force */)]);
r.delete("PA");
}
// ISSN; consolidate EI (eISSN) into SN
let issn = [...(r.get("SN") || []), ...(r.get("EI") || [])]
.filter(Boolean);
if (issn.length) {
r.set("SN", issn);
r.delete("EI");
}
},
};
// split line into an array of [tag, tag value] (the latter optional).
function splitLine(line) {
// First trim line end and strip the line of BOM (U+FEFF) if any, as
// show in a test case
// TODO: Use trimEnd() once Z6 support is dropped
line = line.replace(/\s*$/, '');
line = line.replace(/\uFEFF/g, "");
// skip empty line
if (!line.length) {
return null;
}
// Split line into tag and "content" that comes after the tag.
// NOTE: When the file doesn't use explicit line-continuation (three
// spaces), there's ambiguity when the line meant to be continued data
// happens to match the pattern of a tag-value line.
let m = line.match(/^( {2}|[A-Z][A-Z0-9])( .+)?$/);
if (!m) {
// Z.debug(`Possible continued-line without explicit line continuation: ${line.slice(0, 5)}...`);
return [" "/* two spaces */, line];
}
return [m[1]/* tag */, m[2] && m[2].trim()/* tag content, or undefined */];
}
// Convenience functions
function addCreator(item, authorArray, authorType) {
for (let author of authorArray) {
item.creators.push(stringToCreator(author, authorType));
}
}
function wosToZoteroType(wosType, debugTag) {
let zoteroType;
if (wosType) {
// case-normalized WoS type string
let wosTypeNormalized = wosType[0].toUpperCase();
if (ITEM_TYPES[wosTypeNormalized]) { // value is understood
Z.debug(`Using ${debugTag} ${wosType} for item type`);
zoteroType = ITEM_TYPES[wosTypeNormalized];
}
else {
Z.debug(`Ignoring unimplemented ${debugTag} value ${wosType}`);
}
}
return zoteroType;
}
function stringToCreator(author, type) {
// Strip any parenthesized text
author = author.replace(/\(.*\)/g, "");
if (!author.includes(",")) { // as "LAST F", rather than "Last, F"
author = author.replace(" ", ", "); // replace first space
}
return ZU.cleanAuthor(author, type, true/* useComma */);
}
// like ZU.capitalizeTitle but mindful of some words that are often encountered
// in conference or publisher names. This is most useful for cleaning all-cap
// fields that are not titles.
function selectiveTitleCase(string, force) {
let allCaps = ["ACM", "AIP", "BMC", "BMJ", "CRC"/* CRC Press */, "IEEE", "JAMA", "MDPI", "SAGE", "USA"];
let wordForms = { IOP: "IoP", PEERJ: "PeerJ", PLOS: "PLoS" };
for (let word of allCaps) {
wordForms[word] = word;
}
let cleanInput = ZU.trimInternal(string);
let cleanInputArray = cleanInput.split(" ");
let arrayLocations = new Map();
for (let [word, form] of Object.entries(wordForms)) {
for (let index of indexOfAll(cleanInputArray, word)) {
arrayLocations.set(index, form);
}
}
let outputArray = ZU.capitalizeTitle(cleanInput, force).split(" ");
for (let [index, form] of arrayLocations.entries()) {
outputArray[index] = form;
}
return outputArray.join(" ");
}
// Search array for searchElement. Returns an array of indices where
// searchElement appears, or empty array if searchElement is missing.
function indexOfAll(array, searchElement) {
return array
.map((elem, index) => (elem === searchElement ? index : null))
.filter(x => x !== null);
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "import",
"input": "FN Thomson Reuters Web of Knowledge\nVR 1.0\nPT J\nAU Zelle, Rintze M.\n Harrison, Jacob C.\n Pronk, Jack T.\n van Maris, Antonius J. A.\nTI Anaplerotic Role for Cytosolic Malic Enzyme in Engineered Saccharomyces\n cerevisiae Strains\nSO APPLIED AND ENVIRONMENTAL MICROBIOLOGY\nVL 77\nIS 3\nBP 732\nEP 738\nDI 10.1128/AEM.02132-10\nPD FEB 2011\nPY 2011\nAB Malic enzyme catalyzes the reversible oxidative decarboxylation of\n malate to pyruvate and CO(2). The Saccharomyces cerevisiae MAE1 gene\n encodes a mitochondrial malic enzyme whose proposed physiological roles\n are related to the oxidative, malate-decarboxylating reaction. Hitherto,\n the inability of pyruvate carboxylase-negative (Pyc(-)) S. cerevisiae\n strains to grow on glucose suggested that Mae1p cannot act as a\n pyruvate-carboxylating, anaplerotic enzyme. In this study, relocation of\n malic enzyme to the cytosol and creation of thermodynamically favorable\n conditions for pyruvate carboxylation by metabolic engineering, process\n design, and adaptive evolution, enabled malic enzyme to act as the sole\n anaplerotic enzyme in S. cerevisiae. The Escherichia coli NADH-dependent\n sfcA malic enzyme was expressed in a Pyc(-) S. cerevisiae background.\n When PDC2, a transcriptional regulator of pyruvate decarboxylase genes,\n was deleted to increase intracellular pyruvate levels and cells were\n grown under a CO(2) atmosphere to favor carboxylation, adaptive\n evolution yielded a strain that grew on glucose (specific growth rate,\n 0.06 +/- 0.01 h(-1)). Growth of the evolved strain was enabled by a\n single point mutation (Asp336Gly) that switched the cofactor preference\n of E. coli malic enzyme from NADH to NADPH. Consistently, cytosolic\n relocalization of the native Mae1p, which can use both NADH and NADPH,\n in a pyc1,2 Delta pdc2 Delta strain grown under a CO(2) atmosphere, also\n enabled slow-growth on glucose. Although growth rates of these strains\n are still low, the higher ATP efficiency of carboxylation via malic\n enzyme, compared to the pyruvate carboxylase pathway, may contribute to\n metabolic engineering of S. cerevisiae for anaerobic, high-yield\n C(4)-dicarboxylic acid production.\nTC 0\nZ9 0\nSN 0099-2240\nUT WOS:000286597100004\nER\n\nPT J\nAU Zelle, Rintze M.\n Trueheart, Josh\n Harrison, Jacob C.\n Pronk, Jack T.\n van Maris, Antonius J. A.\nTI Phosphoenolpyruvate Carboxykinase as the Sole Anaplerotic Enzyme in\n Saccharomyces cerevisiae\nSO APPLIED AND ENVIRONMENTAL MICROBIOLOGY\nVL 76\nIS 16\nBP 5383\nEP 5389\nDI 10.1128/AEM.01077-10\nPD AUG 2010\nPY 2010\nAB Pyruvate carboxylase is the sole anaplerotic enzyme in glucose-grown\n cultures of wild-type Saccharomyces cerevisiae. Pyruvate\n carboxylase-negative (Pyc(-)) S. cerevisiae strains cannot grow on\n glucose unless media are supplemented with C(4) compounds, such as\n aspartic acid. In several succinate-producing prokaryotes,\n phosphoenolpyruvate carboxykinase (PEPCK) fulfills this anaplerotic\n role. However, the S. cerevisiae PEPCK encoded by PCK1 is repressed by\n glucose and is considered to have a purely decarboxylating and\n gluconeogenic function. This study investigates whether and under which\n conditions PEPCK can replace the anaplerotic function of pyruvate\n carboxylase in S. cerevisiae. Pyc(-) S. cerevisiae strains\n constitutively overexpressing the PEPCK either from S. cerevisiae or\n from Actinobacillus succinogenes did not grow on glucose as the sole\n carbon source. However, evolutionary engineering yielded mutants able to\n grow on glucose as the sole carbon source at a maximum specific growth\n rate of ca. 0.14 h(-1), one-half that of the (pyruvate\n carboxylase-positive) reference strain grown under the same conditions.\n Growth was dependent on high carbon dioxide concentrations, indicating\n that the reaction catalyzed by PEPCK operates near thermodynamic\n equilibrium. Analysis and reverse engineering of two independently\n evolved strains showed that single point mutations in pyruvate kinase,\n which competes with PEPCK for phosphoenolpyruvate, were sufficient to\n enable the use of PEPCK as the sole anaplerotic enzyme. The PEPCK\n reaction produces one ATP per carboxylation event, whereas the original\n route through pyruvate kinase and pyruvate carboxylase is ATP neutral.\n This increased ATP yield may prove crucial for engineering of efficient\n and low-cost anaerobic production of C(4) dicarboxylic acids in S.\n cerevisiae.\nTC 1\nZ9 1\nSN 0099-2240\nUT WOS:000280633400006\nER\n\nPT J\nAU Zelle, Rintze M.\n De Hulster, Erik\n Kloezen, Wendy\n Pronk, Jack T.\n van Maris, Antonius J. A.\nTI Key Process Conditions for Production of C(4) Dicarboxylic Acids in\n Bioreactor Batch Cultures of an Engineered Saccharomyces cerevisiae\n Strain\nSO APPLIED AND ENVIRONMENTAL MICROBIOLOGY\nVL 76\nIS 3\nBP 744\nEP 750\nDI 10.1128/AEM.02396-09\nPD FEB 2010\nPY 2010\nAB A recent effort to improve malic acid production by Saccharomyces\n cerevisiae by means of metabolic engineering resulted in a strain that\n produced up to 59 g liter(-1) of malate at a yield of 0.42 mol (mol\n glucose)(-1) in calcium carbonate-buffered shake flask cultures. With\n shake flasks, process parameters that are important for scaling up this\n process cannot be controlled independently. In this study, growth and\n product formation by the engineered strain were studied in bioreactors\n in order to separately analyze the effects of pH, calcium, and carbon\n dioxide and oxygen availability. A near-neutral pH, which in shake\n flasks was achieved by adding CaCO(3), was required for efficient C(4)\n dicarboxylic acid production. Increased calcium concentrations, a side\n effect of CaCO(3) dissolution, had a small positive effect on malate\n formation. Carbon dioxide enrichment of the sparging gas (up to 15%\n [vol/vol]) improved production of both malate and succinate. At higher\n concentrations, succinate titers further increased, reaching 0.29 mol\n (mol glucose)(-1), whereas malate formation strongly decreased. Although\n fully aerobic conditions could be achieved, it was found that moderate\n oxygen limitation benefitted malate production. In conclusion, malic\n acid production with the engineered S. cerevisiae strain could be\n successfully transferred from shake flasks to 1-liter batch bioreactors\n by simultaneous optimization of four process parameters (pH and\n concentrations of CO(2), calcium, and O(2)). Under optimized conditions,\n a malate yield of 0.48 +/- 0.01 mol (mol glucose)(-1) was obtained in\n bioreactors, a 19% increase over yields in shake flask experiments.\nTC 2\nZ9 2\nSN 0099-2240\nUT WOS:000274017400015\nER\n\nPT J\nAU Abbott, Derek A.\n Zelle, Rintze M.\n Pronk, Jack T.\n van Maris, Antonius J. A.\nTI Metabolic engineering of Saccharomyces cerevisiae for production of\n carboxylic acids: current status and challenges\nSO FEMS YEAST RESEARCH\nVL 9\nIS 8\nBP 1123\nEP 1136\nDI 10.1111/j.1567-1364.2009.00537.x\nPD DEC 2009\nPY 2009\nAB To meet the demands of future generations for chemicals and energy and\n to reduce the environmental footprint of the chemical industry,\n alternatives for petrochemistry are required. Microbial conversion of\n renewable feedstocks has a huge potential for cleaner, sustainable\n industrial production of fuels and chemicals. Microbial production of\n organic acids is a promising approach for production of chemical\n building blocks that can replace their petrochemically derived\n equivalents. Although Saccharomyces cerevisiae does not naturally\n produce organic acids in large quantities, its robustness, pH tolerance,\n simple nutrient requirements and long history as an industrial workhorse\n make it an excellent candidate biocatalyst for such processes. Genetic\n engineering, along with evolution and selection, has been successfully\n used to divert carbon from ethanol, the natural endproduct of S.\n cerevisiae, to pyruvate. Further engineering, which included expression\n of heterologous enzymes and transporters, yielded strains capable of\n producing lactate and malate from pyruvate. Besides these metabolic\n engineering strategies, this review discusses the impact of transport\n and energetics as well as the tolerance towards these organic acids. In\n addition to recent progress in engineering S. cerevisiae for organic\n acid production, the key limitations and challenges are discussed in the\n context of sustainable industrial production of organic acids from\n renewable feedstocks.\nTC 11\nZ9 11\nSN 1567-1356\nUT WOS:000271264400001\nER\n\nPT J\nAU Zelle, Rintze M.\n de Hulster, Erik\n van Winden, WoUter A.\n de Waard, Pieter\n Dijkema, Cor\n Winkler, Aaron A.\n Geertman, Jan-Maarten A.\n van Dijken, Johannes P.\n Pronk, Jack T.\n van Maris, Antonius J. A.\nTI Malic acid production by Saccharomyces cerevisiae: Engineering of\n pyruvate carboxylation, oxaloacetate reduction, and malate export\nSO APPLIED AND ENVIRONMENTAL MICROBIOLOGY\nVL 74\nIS 9\nBP 2766\nEP 2777\nDI 10.1128/AEM.02591-07\nPD MAY 2008\nPY 2008\nAB Malic acid is a potential biomass-derivable \"building block\" for\n chemical synthesis. Since wild-type Saccharomyces cerevisiae strains\n produce only low levels of malate, metabolic engineering is required to\n achieve efficient malate production with this yeast. A promising pathway\n for malate production from glucose proceeds via carboxylation of\n pyruvate, followed by reduction of oxaloacetate to malate. This redox-\n and ATP-neutral, CO2-fixing pathway has a theoretical maximum yield of 2\n mol malate (mol glucose)(-1). A previously engineered glucose-tolerant,\n C-2-independent pyruvate decarboxylase-negative S. cerevisiae strain was\n used as the platform to evaluate the impact of individual and combined\n introduction of three genetic modifications: (i) overexpression of the\n native pyruvate carboxylase encoded by PYC2, (ii) high-level expression\n of an allele of the MDH3 gene, of which the encoded malate dehydrogenase\n was retargeted to the cytosol by deletion of the C-terminal peroxisomal\n targeting sequence, and (iii) functional expression of the\n Schizosaccharomyces pombe malate transporter gene SpMAE1. While single\n or double modifications improved malate production, the highest malate\n yields and titers were obtained with the simultaneous introduction of\n all three modifications. In glucose-grown batch cultures, the resulting\n engineered strain produced malate at titers of up to 59 g liter(-1) at a\n malate yield of 0.42 mol (mol glucose)(-1). Metabolic flux analysis\n showed that metabolite labeling patterns observed upon nuclear magnetic\n resonance analyses of cultures grown on C-13-labeled glucose were\n consistent with the envisaged nonoxidative, fermentative pathway for\n malate production. The engineered strains still produced substantial\n amounts of pyruvate, indicating that the pathway efficiency can be\n further improved.\nTC 15\nZ9 17\nSN 0099-2240\nUT WOS:000255567900024\nER\n\nEF",
"items": [
{
"itemType": "journalArticle",
"title": "Anaplerotic Role for Cytosolic Malic Enzyme in Engineered Saccharomyces cerevisiae Strains",
"creators": [
{
"firstName": "Rintze M.",
"lastName": "Zelle",
"creatorType": "author"
},
{
"firstName": "Jacob C.",
"lastName": "Harrison",
"creatorType": "author"
},
{
"firstName": "Jack T.",
"lastName": "Pronk",
"creatorType": "author"
},
{
"firstName": "Antonius J. A.",
"lastName": "van Maris",
"creatorType": "author"
}
],
"date": "FEB 2011",
"DOI": "10.1128/AEM.02132-10",
"ISSN": "0099-2240",
"abstractNote": "Malic enzyme catalyzes the reversible oxidative decarboxylation of malate to pyruvate and CO(2). The Saccharomyces cerevisiae MAE1 gene encodes a mitochondrial malic enzyme whose proposed physiological roles are related to the oxidative, malate-decarboxylating reaction. Hitherto, the inability of pyruvate carboxylase-negative (Pyc(-)) S. cerevisiae strains to grow on glucose suggested that Mae1p cannot act as a pyruvate-carboxylating, anaplerotic enzyme. In this study, relocation of malic enzyme to the cytosol and creation of thermodynamically favorable conditions for pyruvate carboxylation by metabolic engineering, process design, and adaptive evolution, enabled malic enzyme to act as the sole anaplerotic enzyme in S. cerevisiae. The Escherichia coli NADH-dependent sfcA malic enzyme was expressed in a Pyc(-) S. cerevisiae background. When PDC2, a transcriptional regulator of pyruvate decarboxylase genes, was deleted to increase intracellular pyruvate levels and cells were grown under a CO(2) atmosphere to favor carboxylation, adaptive evolution yielded a strain that grew on glucose (specific growth rate, 0.06 +/- 0.01 h(-1)). Growth of the evolved strain was enabled by a single point mutation (Asp336Gly) that switched the cofactor preference of E. coli malic enzyme from NADH to NADPH. Consistently, cytosolic relocalization of the native Mae1p, which can use both NADH and NADPH, in a pyc1,2 Delta pdc2 Delta strain grown under a CO(2) atmosphere, also enabled slow-growth on glucose. Although growth rates of these strains are still low, the higher ATP efficiency of carboxylation via malic enzyme, compared to the pyruvate carboxylase pathway, may contribute to metabolic engineering of S. cerevisiae for anaerobic, high-yield C(4)-dicarboxylic acid production.",
"extra": "Web of Science ID: WOS:000286597100004",
"issue": "3",
"libraryCatalog": "Thomson Reuters Web of Knowledge",
"pages": "732-738",
"publicationTitle": "APPLIED AND ENVIRONMENTAL MICROBIOLOGY",
"volume": "77",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
},
{
"itemType": "journalArticle",
"title": "Phosphoenolpyruvate Carboxykinase as the Sole Anaplerotic Enzyme in Saccharomyces cerevisiae",
"creators": [
{
"firstName": "Rintze M.",
"lastName": "Zelle",
"creatorType": "author"
},
{
"firstName": "Josh",
"lastName": "Trueheart",
"creatorType": "author"
},
{
"firstName": "Jacob C.",
"lastName": "Harrison",
"creatorType": "author"
},
{
"firstName": "Jack T.",
"lastName": "Pronk",
"creatorType": "author"
},
{
"firstName": "Antonius J. A.",
"lastName": "van Maris",
"creatorType": "author"
}
],
"date": "AUG 2010",
"DOI": "10.1128/AEM.01077-10",
"ISSN": "0099-2240",
"abstractNote": "Pyruvate carboxylase is the sole anaplerotic enzyme in glucose-grown cultures of wild-type Saccharomyces cerevisiae. Pyruvate carboxylase-negative (Pyc(-)) S. cerevisiae strains cannot grow on glucose unless media are supplemented with C(4) compounds, such as aspartic acid. In several succinate-producing prokaryotes, phosphoenolpyruvate carboxykinase (PEPCK) fulfills this anaplerotic role. However, the S. cerevisiae PEPCK encoded by PCK1 is repressed by glucose and is considered to have a purely decarboxylating and gluconeogenic function. This study investigates whether and under which conditions PEPCK can replace the anaplerotic function of pyruvate carboxylase in S. cerevisiae. Pyc(-) S. cerevisiae strains constitutively overexpressing the PEPCK either from S. cerevisiae or from Actinobacillus succinogenes did not grow on glucose as the sole carbon source. However, evolutionary engineering yielded mutants able to grow on glucose as the sole carbon source at a maximum specific growth rate of ca. 0.14 h(-1), one-half that of the (pyruvate carboxylase-positive) reference strain grown under the same conditions. Growth was dependent on high carbon dioxide concentrations, indicating that the reaction catalyzed by PEPCK operates near thermodynamic equilibrium. Analysis and reverse engineering of two independently evolved strains showed that single point mutations in pyruvate kinase, which competes with PEPCK for phosphoenolpyruvate, were sufficient to enable the use of PEPCK as the sole anaplerotic enzyme. The PEPCK reaction produces one ATP per carboxylation event, whereas the original route through pyruvate kinase and pyruvate carboxylase is ATP neutral. This increased ATP yield may prove crucial for engineering of efficient and low-cost anaerobic production of C(4) dicarboxylic acids in S. cerevisiae.",
"extra": "Web of Science ID: WOS:000280633400006",
"issue": "16",
"pages": "5383-5389",
"publicationTitle": "APPLIED AND ENVIRONMENTAL MICROBIOLOGY",
"volume": "76",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
},
{
"itemType": "journalArticle",
"title": "Key Process Conditions for Production of C(4) Dicarboxylic Acids in Bioreactor Batch Cultures of an Engineered Saccharomyces cerevisiae Strain",
"creators": [
{
"firstName": "Rintze M.",
"lastName": "Zelle",
"creatorType": "author"
},
{
"firstName": "Erik",
"lastName": "De Hulster",
"creatorType": "author"
},
{
"firstName": "Wendy",
"lastName": "Kloezen",
"creatorType": "author"
},
{
"firstName": "Jack T.",
"lastName": "Pronk",
"creatorType": "author"
},
{
"firstName": "Antonius J. A.",
"lastName": "van Maris",
"creatorType": "author"
}
],
"date": "FEB 2010",
"DOI": "10.1128/AEM.02396-09",
"ISSN": "0099-2240",
"abstractNote": "A recent effort to improve malic acid production by Saccharomyces cerevisiae by means of metabolic engineering resulted in a strain that produced up to 59 g liter(-1) of malate at a yield of 0.42 mol (mol glucose)(-1) in calcium carbonate-buffered shake flask cultures. With shake flasks, process parameters that are important for scaling up this process cannot be controlled independently. In this study, growth and product formation by the engineered strain were studied in bioreactors in order to separately analyze the effects of pH, calcium, and carbon dioxide and oxygen availability. A near-neutral pH, which in shake flasks was achieved by adding CaCO(3), was required for efficient C(4) dicarboxylic acid production. Increased calcium concentrations, a side effect of CaCO(3) dissolution, had a small positive effect on malate formation. Carbon dioxide enrichment of the sparging gas (up to 15% [vol/vol]) improved production of both malate and succinate. At higher concentrations, succinate titers further increased, reaching 0.29 mol (mol glucose)(-1), whereas malate formation strongly decreased. Although fully aerobic conditions could be achieved, it was found that moderate oxygen limitation benefitted malate production. In conclusion, malic acid production with the engineered S. cerevisiae strain could be successfully transferred from shake flasks to 1-liter batch bioreactors by simultaneous optimization of four process parameters (pH and concentrations of CO(2), calcium, and O(2)). Under optimized conditions, a malate yield of 0.48 +/- 0.01 mol (mol glucose)(-1) was obtained in bioreactors, a 19% increase over yields in shake flask experiments.",
"extra": "Web of Science ID: WOS:000274017400015",
"issue": "3",
"pages": "744-750",
"publicationTitle": "APPLIED AND ENVIRONMENTAL MICROBIOLOGY",
"volume": "76",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
},
{
"itemType": "journalArticle",
"title": "Metabolic engineering of Saccharomyces cerevisiae for production of carboxylic acids: current status and challenges",
"creators": [
{
"firstName": "Derek A.",
"lastName": "Abbott",
"creatorType": "author"
},
{
"firstName": "Rintze M.",
"lastName": "Zelle",
"creatorType": "author"
},
{
"firstName": "Jack T.",
"lastName": "Pronk",
"creatorType": "author"
},
{
"firstName": "Antonius J. A.",
"lastName": "van Maris",
"creatorType": "author"
}
],
"date": "DEC 2009",
"DOI": "10.1111/j.1567-1364.2009.00537.x",
"ISSN": "1567-1356",
"abstractNote": "To meet the demands of future generations for chemicals and energy and to reduce the environmental footprint of the chemical industry, alternatives for petrochemistry are required. Microbial conversion of renewable feedstocks has a huge potential for cleaner, sustainable industrial production of fuels and chemicals. Microbial production of organic acids is a promising approach for production of chemical building blocks that can replace their petrochemically derived equivalents. Although Saccharomyces cerevisiae does not naturally produce organic acids in large quantities, its robustness, pH tolerance, simple nutrient requirements and long history as an industrial workhorse make it an excellent candidate biocatalyst for such processes. Genetic engineering, along with evolution and selection, has been successfully used to divert carbon from ethanol, the natural endproduct of S. cerevisiae, to pyruvate. Further engineering, which included expression of heterologous enzymes and transporters, yielded strains capable of producing lactate and malate from pyruvate. Besides these metabolic engineering strategies, this review discusses the impact of transport and energetics as well as the tolerance towards these organic acids. In addition to recent progress in engineering S. cerevisiae for organic acid production, the key limitations and challenges are discussed in the context of sustainable industrial production of organic acids from renewable feedstocks.",
"extra": "Web of Science ID: WOS:000271264400001",
"issue": "8",
"pages": "1123-1136",
"publicationTitle": "FEMS YEAST RESEARCH",
"volume": "9",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
},
{
"itemType": "journalArticle",
"title": "Malic acid production by Saccharomyces cerevisiae: Engineering of pyruvate carboxylation, oxaloacetate reduction, and malate export",
"creators": [
{
"firstName": "Rintze M.",
"lastName": "Zelle",
"creatorType": "author"
},
{
"firstName": "Erik",
"lastName": "de Hulster",
"creatorType": "author"
},
{
"firstName": "WoUter A.",
"lastName": "van Winden",
"creatorType": "author"
},
{
"firstName": "Pieter",
"lastName": "de Waard",
"creatorType": "author"
},
{
"firstName": "Cor",
"lastName": "Dijkema",
"creatorType": "author"
},
{
"firstName": "Aaron A.",
"lastName": "Winkler",
"creatorType": "author"
},
{
"firstName": "Jan-Maarten A.",
"lastName": "Geertman",
"creatorType": "author"
},
{
"firstName": "Johannes P.",
"lastName": "van Dijken",
"creatorType": "author"
},
{
"firstName": "Jack T.",
"lastName": "Pronk",
"creatorType": "author"
},
{
"firstName": "Antonius J. A.",
"lastName": "van Maris",
"creatorType": "author"
}
],
"date": "MAY 2008",
"DOI": "10.1128/AEM.02591-07",
"ISSN": "0099-2240",
"abstractNote": "Malic acid is a potential biomass-derivable \"building block\" for chemical synthesis. Since wild-type Saccharomyces cerevisiae strains produce only low levels of malate, metabolic engineering is required to achieve efficient malate production with this yeast. A promising pathway for malate production from glucose proceeds via carboxylation of pyruvate, followed by reduction of oxaloacetate to malate. This redox- and ATP-neutral, CO2-fixing pathway has a theoretical maximum yield of 2 mol malate (mol glucose)(-1). A previously engineered glucose-tolerant, C-2-independent pyruvate decarboxylase-negative S. cerevisiae strain was used as the platform to evaluate the impact of individual and combined introduction of three genetic modifications: (i) overexpression of the native pyruvate carboxylase encoded by PYC2, (ii) high-level expression of an allele of the MDH3 gene, of which the encoded malate dehydrogenase was retargeted to the cytosol by deletion of the C-terminal peroxisomal targeting sequence, and (iii) functional expression of the Schizosaccharomyces pombe malate transporter gene SpMAE1. While single or double modifications improved malate production, the highest malate yields and titers were obtained with the simultaneous introduction of all three modifications. In glucose-grown batch cultures, the resulting engineered strain produced malate at titers of up to 59 g liter(-1) at a malate yield of 0.42 mol (mol glucose)(-1). Metabolic flux analysis showed that metabolite labeling patterns observed upon nuclear magnetic resonance analyses of cultures grown on C-13-labeled glucose were consistent with the envisaged nonoxidative, fermentative pathway for malate production. The engineered strains still produced substantial amounts of pyruvate, indicating that the pathway efficiency can be further improved.",
"extra": "Web of Science ID: WOS:000255567900024",
"issue": "9",
"pages": "2766-2777",
"publicationTitle": "APPLIED AND ENVIRONMENTAL MICROBIOLOGY",
"volume": "74",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "FN Thomson Reuters Web of Knowledge\nVR 1.0\nPT J\nAU Smith, L. J.\n Schwark, W. S.\n Cook, D. R.\n Moon, P. F.\n Erb, H. N.\n Looney, A. L.\nTI Pharmacokinetics of intravenous mivacurium in halothane-anesthetized\n dogs.\nSO Veterinary Surgery\nVL 27\nIS 2\nPS 170\nPY 1998\nUT CABI:19982209000\nDT Abstract only\nLA English\nSN 0161-3499\nCC LL900Animal Toxicology, Poisoning and Pharmacology (Discontinued March\n 2000); LL070Pets and Companion Animals\nCN 151-67-7\nDE anaesthesia; halothane; muscle relaxants; pharmacokinetics\nOR dogs\nBD Canis; Canidae; Fissipeda; carnivores; mammals; vertebrates; Chordata;\n animals; small mammals; eukaryotes\nER\n\nEF",
"items": [
{
"itemType": "journalArticle",
"title": "Pharmacokinetics of intravenous mivacurium in halothane-anesthetized dogs.",
"creators": [
{
"firstName": "L. J.",
"lastName": "Smith",
"creatorType": "author"
},
{
"firstName": "W. S.",
"lastName": "Schwark",
"creatorType": "author"
},
{
"firstName": "D. R.",
"lastName": "Cook",
"creatorType": "author"
},
{
"firstName": "P. F.",
"lastName": "Moon",
"creatorType": "author"
},
{
"firstName": "H. N.",
"lastName": "Erb",
"creatorType": "author"
},
{
"firstName": "A. L.",
"lastName": "Looney",
"creatorType": "author"
}
],
"date": "1998",
"ISSN": "0161-3499",
"extra": "Web of Science ID: CABI:19982209000",
"issue": "2",
"language": "English",
"libraryCatalog": "Thomson Reuters Web of Knowledge",
"pages": "170",
"publicationTitle": "Veterinary Surgery",
"volume": "27",
"attachments": [],
"tags": [
{
"tag": "Canidae"
},
{
"tag": "Canis"
},
{
"tag": "Chordata"
},
{
"tag": "Fissipeda"
},
{
"tag": "anaesthesia"
},
{
"tag": "animals"
},
{
"tag": "carnivores"
},
{
"tag": "dogs"
},
{
"tag": "eukaryotes"
},
{
"tag": "halothane"
},
{
"tag": "mammals"
},
{
"tag": "muscle relaxants"
},
{
"tag": "pharmacokinetics"
},
{
"tag": "small mammals"
},
{
"tag": "vertebrates"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "FN Thomson Reuters Web of Knowledge\nVR 1.0\nPT J\nAU Smith, JM \nAF Smith, J. Mark\nTI Gripewater\nSO FIDDLEHEAD\nLA English \nDT Poetry\nNR 0\nTC 0\nZ9 0\nPU UNIV NEW BRUNSWICK\nPI FREDERICTON\nPA DEPT ENGLISH, CAMPUS HOUSE, PO BOX 4400, FREDERICTON, NB E3B 5A3, CANADA\nSN 0015-0630\nJ9 FIDDLEHEAD\nJI Fiddlehead\nPD SPR\nPY 2011\nIS 247\nBP 82\nEP 82\nPG 1\nWC Literary Reviews\nSC Literature\nGA 757VG\nUT WOS:000290115300030\nER\n\nEF",
"items": [
{
"itemType": "journalArticle",
"title": "Gripewater",
"creators": [
{
"firstName": "J. Mark",
"lastName": "Smith",
"creatorType": "author"
}
],
"date": "SPR 2011",
"ISSN": "0015-0630",
"extra": "Web of Science ID: WOS:000290115300030",
"issue": "247",
"journalAbbreviation": "Fiddlehead",
"language": "English",
"libraryCatalog": "Thomson Reuters Web of Knowledge",
"pages": "82-82",
"publicationTitle": "FIDDLEHEAD",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "FN Thomson Reuters Web of Knowledge\nVR 1.0\nPT S\nAU McCormick, MC\n Litt, JS\n Smith, VC\n Zupancic, JAF\nAF McCormick, Marie C.\n Litt, Jonathan S.\n Smith, Vincent C.\n Zupancic, John A. F.\nBE Fielding, JE\n Brownson, RC\n Green, LW\nTI Prematurity: An Overview and Public Health Implications\nSO ANNUAL REVIEW OF PUBLIC HEALTH, VOL 32\nSE Annual Review of Public Health\nLA English\nDT Review\nDE infant mortality; childhood morbidity; prevention\nID LOW-BIRTH-WEIGHT; NEONATAL INTENSIVE-CARE; QUALITY-OF-LIFE; EXTREMELY\n PRETERM BIRTH; YOUNG-ADULTS BORN; AGE 8 YEARS; CHILDREN BORN;\n BRONCHOPULMONARY DYSPLASIA; LEARNING-DISABILITIES; EXTREME PREMATURITY\nAB The high rate of premature births in the United States remains a public\n health concern. These infants experience substantial morbidity and\n mortality in the newborn period, which translate into significant\n medical costs. In early childhood, survivors are characterized by a\n variety of health problems, including motor delay and/or cerebral palsy,\n lower IQs, behavior problems, and respiratory illness, especially\n asthma. Many experience difficulty with school work, lower\n health-related quality of life, and family stress. Emerging information\n in adolescence and young adulthood paints a more optimistic picture,\n with persistence of many problems but with better adaptation and more\n positive expectations by the young adults. Few opportunities for\n prevention have been identified; therefore, public health approaches to\n prematurity include assurance of delivery in a facility capable of\n managing neonatal complications, quality improvement to minimize\n interinstitutional variations, early developmental support for such\n infants, and attention to related family health issues.\nC1 [McCormick, MC] Harvard Univ, Dept Soc Human Dev & Hlth, Sch Publ Hlth, Boston, MA 02115 USA\n [McCormick, MC; Litt, JS; Smith, VC; Zupancic, JAF] Beth Israel Deaconess Med Ctr, Dept Neonatol, Boston, MA 02215 USA\n [Litt, JS] Childrens Hosp Boston, Div Newborn Med, Boston, MA 02115 USA\nRP McCormick, MC (reprint author), Harvard Univ, Dept Soc Human Dev & Hlth, Sch Publ Hlth, Boston, MA 02115 USA\nEM mmccormi@hsph.harvard.edu\n vsmith1@bidmc.harvard.edu\n jzupanci@bidmc.harvard.edu\n Jonathan.Litt@childrens.harvard.edu\nNR 91\nTC 1\nZ9 1\nPU ANNUAL REVIEWS\nPI PALO ALTO\nPA 4139 EL CAMINO WAY, PO BOX 10139, PALO ALTO, CA 94303-0897 USA\nSN 0163-7525\nBN 978-0-8243-2732-3\nJ9 ANNU REV PUBL HEALTH\nJI Annu. Rev. Public Health\nPY 2011\nVL 32\nBP 367\nEP 379\nDI 10.1146/annurev-publhealth-090810-182459\nPG 13\nGA BUZ33\nUT WOS:000290776200020\nER\n\nEF",
"items": [
{
"itemType": "bookSection",
"title": "Prematurity: An Overview and Public Health Implications",
"creators": [
{
"firstName": "Marie C.",
"lastName": "McCormick",
"creatorType": "author"
},
{
"firstName": "Jonathan S.",
"lastName": "Litt",
"creatorType": "author"
},
{
"firstName": "Vincent C.",
"lastName": "Smith",
"creatorType": "author"
},
{
"firstName": "John A. F.",
"lastName": "Zupancic",
"creatorType": "author"
},
{
"firstName": "J. E.",
"lastName": "Fielding",
"creatorType": "editor"
},
{
"firstName": "R. C.",
"lastName": "Brownson",
"creatorType": "editor"
},
{
"firstName": "L. W.",
"lastName": "Green",
"creatorType": "editor"
}
],
"date": "2011",
"ISBN": "978-0-8243-2732-3",
"abstractNote": "The high rate of premature births in the United States remains a public health concern. These infants experience substantial morbidity and mortality in the newborn period, which translate into significant medical costs. In early childhood, survivors are characterized by a variety of health problems, including motor delay and/or cerebral palsy, lower IQs, behavior problems, and respiratory illness, especially asthma. Many experience difficulty with school work, lower health-related quality of life, and family stress. Emerging information in adolescence and young adulthood paints a more optimistic picture, with persistence of many problems but with better adaptation and more positive expectations by the young adults. Few opportunities for prevention have been identified; therefore, public health approaches to prematurity include assurance of delivery in a facility capable of managing neonatal complications, quality improvement to minimize interinstitutional variations, early developmental support for such infants, and attention to related family health issues.",
"bookTitle": "ANNUAL REVIEW OF PUBLIC HEALTH, VOL 32",
"extra": "Web of Science ID: WOS:000290776200020",
"language": "English",
"libraryCatalog": "Thomson Reuters Web of Knowledge",
"pages": "367-379",
"place": "Palo Alto",
"publisher": "Annual Reviews",
"volume": "32",
"attachments": [],
"tags": [
{
"tag": "AGE 8 YEARS"
},
{
"tag": "BRONCHOPULMONARY DYSPLASIA"
},
{
"tag": "CHILDREN BORN"
},
{
"tag": "EXTREME PREMATURITY"
},
{
"tag": "EXTREMELY PRETERM BIRTH"
},
{
"tag": "LEARNING-DISABILITIES"
},
{
"tag": "LOW-BIRTH-WEIGHT"
},
{
"tag": "NEONATAL INTENSIVE-CARE"
},
{
"tag": "QUALITY-OF-LIFE"
},
{
"tag": "YOUNG-ADULTS BORN"
},
{
"tag": "childhood morbidity"
},
{
"tag": "infant mortality"
},
{
"tag": "prevention"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "FN Thomson Reuters Web of Knowledge\nVR 1.0\nPT P\nUT BIOSIS:PREV201100469175\nDT Patent\nTI Indexing cell delivery catheter\nAU Solar, Matthew S.\n Parmer, Kari\n Smith, Philip\n Murdock, Frank\nPN US 07967789\nAE Medtronic Inc\nDG June 28, 2011\nPC USA\nPL 604-16501\nSO Official Gazette of the United States Patent and Trademark Office\n Patents\nPY 2011\nPD JUN 28 2011\nLA English\nAB An insertion device with an insertion axis includes an axial actuator\n with a first portion and a second portion. The first portion is moveable\n along the insertion axis relative to the second portion. The insertion\n device further includes a first tube coupled to the first portion of the\n axial actuator, and the first tube is movable along the insertion axis\n in response to movement of the first portion relative to the second\n portion. The device further includes a second tube having a radially\n biased distal end. The distal end is substantially contained within the\n first tube in a first state, and the second tube is rotatable with\n respect to the first tube. Also, the second tube is axially movable to a\n second state, and a portion of a distal end of the second tube is\n exposed from a distal end of the first tube in the second state.\nC1 Indialantic, FL USA\nSN 0098-1133\nMC Human Medicine (Medical Sciences); Equipment Apparatus Devices and\n Instrumentation\nCC 12502, Pathology - General\nMQ indexing cell delivery catheter; medical supplies\nER\n\nEF",
"items": [
{
"itemType": "patent",
"title": "Indexing cell delivery catheter",
"creators": [
{
"firstName": "Matthew S.",
"lastName": "Solar",
"creatorType": "inventor"
},
{
"firstName": "Kari",
"lastName": "Parmer",
"creatorType": "inventor"
},
{
"firstName": "Philip",
"lastName": "Smith",
"creatorType": "inventor"
},
{
"firstName": "Frank",
"lastName": "Murdock",
"creatorType": "inventor"
}
],
"issueDate": "JUN 28 2011",
"abstractNote": "An insertion device with an insertion axis includes an axial actuator with a first portion and a second portion. The first portion is moveable along the insertion axis relative to the second portion. The insertion device further includes a first tube coupled to the first portion of the axial actuator, and the first tube is movable along the insertion axis in response to movement of the first portion relative to the second portion. The device further includes a second tube having a radially biased distal end. The distal end is substantially contained within the first tube in a first state, and the second tube is rotatable with respect to the first tube. Also, the second tube is axially movable to a second state, and a portion of a distal end of the second tube is exposed from a distal end of the first tube in the second state.",
"assignee": "Medtronic Inc",
"country": "USA",
"extra": "Web of Science ID: BIOSIS:PREV201100469175",
"language": "English",
"patentNumber": "US 07967789",
"attachments": [],
"tags": [
{
"tag": "Equipment Apparatus Devices and Instrumentation"
},
{
"tag": "Human Medicine (Medical Sciences)"
},
{
"tag": "indexing cell delivery catheter"
},
{
"tag": "medical supplies"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "FN Thomson Reuters Web of Knowledge\nVR 1.0\nPT B\nAU Smith, W. G.\nTI Ecological anthropology of households in East Madura, Indonesia.\nSO Ecological anthropology of households in East Madura, Indonesia\nPD 2011\nPY 2011\nZ9 0\nBN 978-90-8585933-8\nUT CABI:20113178956\nER\n\nPT J\nAU Smith, S. A.\nTI Production and characterization of polyclonal antibodies to\n hexanal-lysine adducts for use in an ELISA to monitor lipid oxidation in\n a meat model system.\nSO Dissertation Abstracts International, B\nVL 58\nIS 9\nPD 1998, thesis publ. 1997\nPY 1998\nZ9 0\nSN 0419-4217\nUT FSTA:1998-09-Sn1570\nER\n\nPT J\nAU Smith, E. H.\nTI The enzymic oxidation of linoleic and linolenic acid.\nSO Dissertation Abstracts International, B\nVL 49\nIS 4\nBP BRD\nPD 1988\nPY 1988\nZ9 0\nSN 0419-4217\nUT FSTA:1989-04-N-0004\nER\n\nPT J\nAU Smith, C. S.\nTI The syneresis of renneted milk gels.\nSO Dissertation Abstracts International. B, Sciences and Engineering\nVL 49\nIS 5\nBP 1459\nPD 1988\nPY 1988\nZ9 0\nSN 0419-4217\nUT CABI:19910448509\nER\n\nEF",
"items": [
{
"itemType": "book",
"title": "Ecological anthropology of households in East Madura, Indonesia.",
"creators": [
{
"firstName": "W. G.",
"lastName": "Smith",
"creatorType": "author"
}
],
"date": "2011",
"ISBN": "978-90-8585933-8",
"extra": "Web of Science ID: CABI:20113178956",
"libraryCatalog": "Thomson Reuters Web of Knowledge",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
},
{
"itemType": "journalArticle",
"title": "Production and characterization of polyclonal antibodies to hexanal-lysine adducts for use in an ELISA to monitor lipid oxidation in a meat model system.",
"creators": [
{
"firstName": "S. A.",
"lastName": "Smith",
"creatorType": "author"
}
],
"date": "1998, thesis publ. 1997",
"ISSN": "0419-4217",
"extra": "Web of Science ID: FSTA:1998-09-Sn1570",
"issue": "9",
"publicationTitle": "Dissertation Abstracts International, B",
"volume": "58",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
},
{
"itemType": "journalArticle",
"title": "The enzymic oxidation of linoleic and linolenic acid.",
"creators": [
{
"firstName": "E. H.",
"lastName": "Smith",
"creatorType": "author"
}
],
"date": "1988",
"ISSN": "0419-4217",
"extra": "Web of Science ID: FSTA:1989-04-N-0004",
"issue": "4",
"pages": "BRD",
"publicationTitle": "Dissertation Abstracts International, B",
"volume": "49",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
},
{
"itemType": "journalArticle",
"title": "The syneresis of renneted milk gels.",
"creators": [
{
"firstName": "C. S.",
"lastName": "Smith",
"creatorType": "author"
}
],
"date": "1988",
"ISSN": "0419-4217",
"extra": "Web of Science ID: CABI:19910448509",
"issue": "5",
"pages": "1459",
"publicationTitle": "Dissertation Abstracts International. B, Sciences and Engineering",
"volume": "49",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "FN Thomson Reuters Web of Knowledge\nVR 1.0\nPT J\nUT BCI:BCI201300112663\nTI Importance of methane-derived carbon as a basal resource for two benthic\nconsumers in arctic lakes\nAU Medvedeff, Cassandra A. (medvedeff22@ufl.edu)\nHershey, Anne E.\nSO Hydrobiologia\nPY 2013\nPD JAN 2013\nVL 700\nIS 1\nPS 221-230\nBP 221\nEP 230\nAB Microbial processing of detritus is known to be important to benthic\ninvertebrate nutrition, but the role of dissolved (DOC) versus\nparticulate organic carbon (POC), and pathways by which those resources\nare obtained, are poorly understood. We used stable isotopes to\ndetermine the importance of DOC, POC, and CH4-derived carbon to benthic\ninvertebrate consumers from arctic Alaskan Lakes. Intact sediment cores\nfrom Lake GTH 112 were enriched with C-13-labeled organic matter,\nincluding algal detritus, algal-derived DOC, methyl-labeled acetate, and\ncarboxyl-labeled acetate, and incubated for 1 month with either\ncaddisflies (Grensia praeterita ) or fingernail clams (Sphaerium\nnitidum), two invertebrate species that are important to fish nutrition.\nBoth species used basal resources derived from POC and DOC. Results\ngenerally suggest greater reliance on POC. Differential assimilation\nfrom acetate treatments suggests Sphaerium assimilated CH4-derived\ncarbon, which likely occurred through deposit-feeding. Grensia\nassimilated some microbially processed acetate, although its\nsurvivorship was poor in acetate treatments. Our data extend previous\nstudies reporting use of CH4-derived carbon by Chironomidae and\noligochaetes. Taken together, these results suggest that the use of\nCH4-derived carbon is common among deposit-feeding benthic\ninvertebrates.\nTC 0\nZ9 0\nSN 0018-8158\nEI 1573-5117\nDI 10.1007/s10750-012-1232-8\nER\n\nEF\n",
"items": [
{
"itemType": "journalArticle",
"title": "Importance of methane-derived carbon as a basal resource for two benthic consumers in arctic lakes",
"creators": [
{
"firstName": "Cassandra A.",
"lastName": "Medvedeff",
"creatorType": "author"
},
{
"firstName": "Anne E.",
"lastName": "Hershey",
"creatorType": "author"
}
],
"date": "JAN 2013",
"DOI": "10.1007/s10750-012-1232-8",
"ISSN": "0018-8158, 1573-5117",
"abstractNote": "Microbial processing of detritus is known to be important to benthic invertebrate nutrition, but the role of dissolved (DOC) versus particulate organic carbon (POC), and pathways by which those resources are obtained, are poorly understood. We used stable isotopes to determine the importance of DOC, POC, and CH4-derived carbon to benthic invertebrate consumers from arctic Alaskan Lakes. Intact sediment cores from Lake GTH 112 were enriched with C-13-labeled organic matter, including algal detritus, algal-derived DOC, methyl-labeled acetate, and carboxyl-labeled acetate, and incubated for 1 month with either caddisflies (Grensia praeterita ) or fingernail clams (Sphaerium nitidum), two invertebrate species that are important to fish nutrition. Both species used basal resources derived from POC and DOC. Results generally suggest greater reliance on POC. Differential assimilation from acetate treatments suggests Sphaerium assimilated CH4-derived carbon, which likely occurred through deposit-feeding. Grensia assimilated some microbially processed acetate, although its survivorship was poor in acetate treatments. Our data extend previous studies reporting use of CH4-derived carbon by Chironomidae and oligochaetes. Taken together, these results suggest that the use of CH4-derived carbon is common among deposit-feeding benthic invertebrates.",
"extra": "Web of Science ID: BCI:BCI201300112663",
"issue": "1",
"libraryCatalog": "Thomson Reuters Web of Knowledge",
"pages": "221-230",
"publicationTitle": "Hydrobiologia",
"volume": "700",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "FN Clarivate Analytics Web of Science\nVR 1.0\nPT P\nAU YANG Y\n LI W\nTI Use of reagent for detecting syntaxin 12 protein autoantibodies in\n preparation of lung cancer screening kit\nPN CN110836969-A\nAE UNIV SICHUAN WEST CHINA HOSPITAL\nAB \n NOVELTY - Use of reagent for detecting syntaxin 12 (STX12) protein\n autoantibodies, is claimed in preparation of a lung cancer screening\n kit.\n USE - The reagent for detecting STX12 protein autoantibodies is useful\n in preparation of a lung cancer screening kit (claimed).\n ADVANTAGE - The reagent realizes effective screening of lung cancer and\n detects that the autoantibody level of the STX12 protein in the serum of\n lung cancer patients is significantly lower than that of healthy\n patients.\nZ9 0\nUT DIIDW:202018799C\nER\n\nEF",
"items": [
{
"itemType": "patent",
"title": "Use of reagent for detecting syntaxin 12 protein autoantibodies in preparation of lung cancer screening kit",
"creators": [
{
"firstName": "Y.",
"lastName": "YANG",
"creatorType": "inventor"
},
{
"firstName": "W.",
"lastName": "LI",
"creatorType": "inventor"
}
],
"abstractNote": "NOVELTY - Use of reagent for detecting syntaxin 12 (STX12) protein autoantibodies, is claimed in preparation of a lung cancer screening kit. USE - The reagent for detecting STX12 protein autoantibodies is useful in preparation of a lung cancer screening kit (claimed). ADVANTAGE - The reagent realizes effective screening of lung cancer and detects that the autoantibody level of the STX12 protein in the serum of lung cancer patients is significantly lower than that of healthy patients.",
"assignee": "Univ Sichuan West China Hospital",
"extra": "Web of Science ID: DIIDW:202018799C",
"patentNumber": "CN110836969-A",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "FN Clarivate Analytics Web of Science\nVR 1.0\nPT B\nAU Chen, L\nAF Chen, L\nGP IEEE\nTI A conference control protocol for small scale video conferencing system\nSO 7TH INTERNATIONAL CONFERENCE ON ADVANCED COMMUNICATION TECHNOLOGY, VOLS\n 1 AND 2, PROCEEDINGS\nLA English\nDT Proceedings Paper\nCT 7th International Conference on Advanced Communication Technology\nCY FEB 21-23, 2005\nCL Phoenix Pk, SOUTH KOREA\nSP Minist Informat & Commun, NCA, ETRI, Nida, IEEE Commun Soc Tech, Osia, KICS, KIF, IEEK ComSoc\nDE video conferencing; full mesh; loosely coupled; conference control\n protocol\nAB Increased speeds of PCs and networks have made video conferencing systems possible in Internet. The proposed conference control protocol suits small scale video conferencing systems which employ full mesh conferencing architecture and loosely coupled conferencing mode. The protocol can ensure the number of conference member is less than the maximum value. Instant message services are used to do member authentication and notification. The protocol is verified in 32 concurrent conferencing scenarios and implemented in DigiParty which is a small scale video conferencing add-in application for MSN Messenger.\nC1 Zhejiang Univ, Coll Comp Sci, Hangzhou 310027, Peoples R China.\nRP Chen, L (corresponding author), Zhejiang Univ, Coll Comp Sci, Hangzhou 310027, Peoples R China.\nEM lingchen@cs.zju.edu.cn\nRI Chen, Ling/AAY-3744-2020\nNR 7\nTC 0\nZ9 0\nU1 0\nU2 3\nPU IEEE\nPI NEW YORK\nPA 345 E 47TH ST, NEW YORK, NY 10017 USA\nPY 2005\nBP 532\nEP 537\nDI 10.1109/ICACT.2005.245926\nPG 6\nWC Computer Science, Artificial Intelligence; Computer Science, Information\n Systems; Telecommunications\nSC Computer Science; Telecommunications\nGA BCO79\nUT WOS:000230445900101\nDA 2021-07-21\nER\n\nEF",
"items": [
{
"itemType": "conferencePaper",
"title": "A conference control protocol for small scale video conferencing system",
"creators": [
{
"firstName": "L.",
"lastName": "Chen",
"creatorType": "author"
}
],
"date": "2005",
"DOI": "10.1109/ICACT.2005.245926",
"abstractNote": "Increased speeds of PCs and networks have made video conferencing systems possible in Internet. The proposed conference control protocol suits small scale video conferencing systems which employ full mesh conferencing architecture and loosely coupled conferencing mode. The protocol can ensure the number of conference member is less than the maximum value. Instant message services are used to do member authentication and notification. The protocol is verified in 32 concurrent conferencing scenarios and implemented in DigiParty which is a small scale video conferencing add-in application for MSN Messenger.",
"conferenceName": "7th International Conference on Advanced Communication Technology",
"extra": "Web of Science ID: WOS:000230445900101",
"language": "English",
"libraryCatalog": "Clarivate Analytics Web of Science",
"pages": "532-537",
"place": "New York",
"proceedingsTitle": "7TH INTERNATIONAL CONFERENCE ON ADVANCED COMMUNICATION TECHNOLOGY, VOLS 1 AND 2, PROCEEDINGS",
"publisher": "IEEE",
"attachments": [],
"tags": [
{
"tag": "conference control protocol"
},
{
"tag": "full mesh"
},
{
"tag": "loosely coupled"
},
{
"tag": "video conferencing"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Michael Berkowitz and Abe Jellinek^https?://(www\.)?(news|theaustralian|couriermail|adelaidenow|heraldsun|dailytelegraph|goldcoastbulletin|themercury|dailymercury|ntnews|northshoretimes|geelongadvertiser|townsvillebulletin|cairnspost|themorningbulletin|gladstoneobserver|sunshinecoastdaily|qt|thechronicle)\.com\.au//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek and contributors
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
let jsonSelector = 'script[type="application/ld+json"]';
function detectWeb(doc, url) {
if ((url.includes('/news-story/') || url.includes('/news/')) && doc.querySelector(jsonSelector)) {
return "newspaperArticle";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('h3.story-block__heading a');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
let meta = JSON.parse(text(doc, jsonSelector));
let item = new Zotero.Item('newspaperArticle');
// Prefer the title on the page over metadata, because the latter may be a
// different title made for social media / SEO
item.title = text(doc, "#story-headline, .story-headline__title, .long-headline") || meta.headline;
item.date = ZU.strToISO(meta.datePublished);
item.abstractNote = meta.description;
item.creators = getAuthors(meta.author, doc);
// Get rid of trailing strings inserted after publisher name for SEO
// purposes
item.publicationTitle = meta.publisher.name.match(/^(.+?)(?:[—|].*)?$/)[1].trim();
item.section = getSection(doc);
if (meta.mainEntityOfPage["@type"] === "WebPage"
&& /^https?:\/\//.test(meta.mainEntityOfPage["@id"])) {
// Page URL from JSON-LD should be less prone to line noise
item.url = meta.mainEntityOfPage["@id"];
}
if (!item.url) {
item.url = url;
}
item.libraryCatalog = '';
item.attachments.push({
title: "Snapshot",
url: item.url,
mimeType: 'text/html',
snapshot: true
});
item.complete();
}
function getAuthors(authorFromJSON, doc) {
let byline = authorFromJSON;
if (byline) {
// The author field may be an array (multiple authors) or an atom
// object (one author)
if (!Array.isArray(byline)) {
byline = [byline];
}
}
else {
// Fallback to scraping
byline = doc.querySelectorAll("meta[name='article:author']");
if (!byline) {
return null;
}
byline = Array.from(byline);
}
// The "author" field may be malformed (not an array, but the "name" field
// is a string with separators between author names). Deal with "," and
// "and" as separator.
return byline.flatMap(obj => obj.name
.split(/, |and /i)
.map(str => str.trim())
.filter(Boolean)
.map(str => ZU.cleanAuthor(str, "author", false))
);
}
function getSection(doc) {
let breadCrumbItems = doc.querySelectorAll(".breadcrumbs__item, .breadcrumbs_li");
if (breadCrumbItems.length < 2) {
// we want to return null, not '', if we can't find a section tag
return text(doc, '.tg-tlc-storyheader_sectiontag') || null;
}
return ZU.capitalizeTitle(breadCrumbItems[breadCrumbItems.length - 1].innerText, true);
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.theaustralian.com.au/breaking-news/all-eyes-on-australias-debate-over-net-zero-emissions-by-2050/news-story/ba601f16b82a9bec3b899be8a3d21566",
"items": [
{
"itemType": "newspaperArticle",
"title": "All eyes on Australia’s debate over net zero emissions by 2050",
"creators": [
{
"firstName": "Jade",
"lastName": "Gailberger",
"creatorType": "author"
}
],
"date": "2021-04-20",
"abstractNote": "Scott Morrison is attempting to divide Australians over climate policies, opposition energy spokesman Chris Bowen says.",
"publicationTitle": "The Australian",
"section": "Breaking News",
"url": "https://www.theaustralian.com.au/breaking-news/all-eyes-on-australias-debate-over-net-zero-emissions-by-2050/news-story/ba601f16b82a9bec3b899be8a3d21566",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html",
"snapshot": true
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.theaustralian.com.au/business/margin-call/sezzle-founders-set-for-11m-payday/news-story/d8e94aa1b86abd41bb14fced6117340e",
"items": [
{
"itemType": "newspaperArticle",
"title": "Sezzle founders set for $11m payday",
"creators": [
{
"firstName": "Melissa",
"lastName": "Yeo",
"creatorType": "author"
},
{
"firstName": "Christine",
"lastName": "Lacy",
"creatorType": "author"
}
],
"date": "2021-05-21",
"publicationTitle": "The Australian",
"section": "Margin Call",
"url": "https://www.theaustralian.com.au/business/margin-call/sezzle-founders-set-for-11m-payday/news-story/d8e94aa1b86abd41bb14fced6117340e",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html",
"snapshot": true
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.news.com.au/lifestyle/real-life/news-life/degustation-menu-american-baffled-by-aussie-dinner-item/news-story/d6fa0985cfae88e47ea91412ae7a0e2c",
"items": [
{
"itemType": "newspaperArticle",
"title": "Degustation menu: American baffled by Aussie dinner item",
"creators": [
{
"firstName": "Rebekah",
"lastName": "Scanlan",
"creatorType": "author"
}
],
"date": "2021-05-25",
"abstractNote": "Degustation menu: American baffled by Aussie dinner item",
"publicationTitle": "news.com.au",
"section": "News Life",
"shortTitle": "Degustation menu",
"url": "https://www.news.com.au/lifestyle/real-life/news-life/degustation-menu-american-baffled-by-aussie-dinner-item/news-story/d6fa0985cfae88e47ea91412ae7a0e2c",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html",
"snapshot": true
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Brendan O'Connell^https?://(www\.)?perlego\.com/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2023 Brendan O'Connell
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/book/')) {
return 'book';
}
else if (url.includes("/browse/") || url.includes("/search?") || url.includes("/publisher/") || url.includes("/reading-list/")) {
if (getSearchResults(doc, true)) {
return 'multiple';
}
}
Z.monitorDOMChanges(doc.querySelector('div#root'), { childList: true, subtree: true });
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
// limitation: this selector works well for /search?, /browse/, and /publisher/ pages, but doesn't work
// for /reading-list/, e.g. https://www.perlego.com/reading-list/86/introduction-to-social-movements?queryID=21da233727a255f6d709ad565bddc362
var rows = doc.querySelectorAll('a[href*="/book/"]');
for (let row of rows) {
var href = row.href;
// for non-logged in users, row.href sometimes contains /null/ so user sees a 404 error instead of the book
// remove this so we get to the correct URL
if (href.includes("null/")) {
href = href.replace("null/", "");
}
let title = text(row, 'span');
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
async function doWeb(doc, url) {
if (detectWeb(doc, url) == 'multiple') {
let items = await Zotero.selectItems(getSearchResults(doc, false));
if (!items) return;
for (let url of Object.keys(items)) {
await scrape(await requestDocument(url));
}
}
else {
await scrape(doc, url);
}
}
async function scrape(doc, url = doc.location.href) {
let item = new Zotero.Item('book');
const id = url.match(/\/book\/(\d+)/)[1];
let apiUrl = "https://api.perlego.com/metadata/v2/metadata/books/" + id;
var apiJson = await requestJSON(apiUrl);
var metadata = apiJson.data.results[0];
if (metadata.subtitle) {
item.title = metadata.title + ": " + metadata.subtitle;
}
else {
item.title = metadata.title;
}
item.shortTitle = metadata.title;
item.ISBN = ZU.cleanISBN(metadata.isbn13);
// multiple authors are entered in a single field in JSON, separated by comma or ampersand
let authors = metadata.author.split(/[,&]/);
for (let author of authors) {
item.creators.push(ZU.cleanAuthor(author, 'author'));
}
item.abstractNote = ZU.cleanTags(metadata.description);
let dateString = metadata.date;
let formattedDate = dateString.replace(/(\d{4})(\d{2})(\d{2})/, "$1-$2-$3");
item.date = formattedDate;
item.place = metadata.publication_city;
item.edition = metadata.edition_number;
item.publisher = metadata.publisher_name;
item.language = metadata.language;
item.url = url;
if (metadata.subject[0].subject_name) {
item.tags.push(metadata.subject[0].subject_name);
}
if (metadata.topics[0].topic_name) {
item.tags.push(metadata.topics[0].topic_name);
}
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.perlego.com/book/781635/unshakeable-your-guide-to-financial-freedom-pdf",
"detectedItemType": "book",
"items": [
{
"itemType": "book",
"title": "Unshakeable: Your Guide to Financial Freedom",
"creators": [
{
"firstName": "Tony",
"lastName": "Robbins",
"creatorType": "author"
},
{
"firstName": "Peter",
"lastName": "Mallouk",
"creatorType": "author"
}
],
"date": "2017-02-28",
"ISBN": "9781471164941",
"abstractNote": "*THE NEW YORK TIMES BESTSELLER* Tony Robbins, arguably the most recognizable life and business strategist and guru, is back with a timely, unique follow-up to his smash New York Times bestseller Money: Master the Game.\n Market corrections are as constant as seasons are in nature. There have been 30 such corrections in the past 30 years, yet there's never been an action plan for how not only to survive, but thrive through each change in the stock market.\n Building upon the principles in Money: Master the Game, Robbins offers the reader specific steps they can implement to protect their investments while maximizing their wealth. It's a detailed guidedesigned for investors, articulated in the common-sense, practical manner that the millions of loyal Robbins fans and students have come to expect and rely upon.\n Few have navigated the turbulence of the stock market as adeptly and successfully as Tony Robbins. His proven, consistent success over decades makes him singularly qualified to help investors (both seasoned and first-timers alike) preserve and add to their investments. 'Tony's power is super-human' Oprah Winfrey\n 'He has a great gift. He has the gift to inspire' Bill Clinton\n 'Tony Robbins needs no introduction. He is committed to helping make life better for every investor' Carl Icahn\n 'The high priest of human potential. The world can't get enough of Anthony Robbins' The New York Times",
"language": "English",
"libraryCatalog": "Perlego",
"publisher": "Simon & Schuster UK",
"shortTitle": "Unshakeable",
"url": "https://www.perlego.com/book/781635/unshakeable-your-guide-to-financial-freedom-pdf",
"attachments": [],
"tags": [
{
"tag": "Business"
},
{
"tag": "Business General"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.perlego.com/book/2997236/operations-management-an-international-perspective-pdf",
"items": [
{
"itemType": "book",
"title": "Operations Management: An International Perspective",
"creators": [
{
"firstName": "David",
"lastName": "Barnes",
"creatorType": "author"
}
],
"date": "2018-01-30",
"ISBN": "9781350305212",
"abstractNote": "This fascinating new core textbook, authored by a highly respected academic with over a decade of industry experience, takes a global and strategic approach to the important topic of operations management (OM). Integrating contemporary and traditional theories the text covers everything a student needs to understand the reality of operations in the modern world and combines the latest cutting-edge thinking with innovative learning features. Written in a concise and engaging style and based on up-to-date research in the field, the book provides a range of international case studies and examples that help students to apply theoretical knowledge to real-world practice. This is a must-have textbook for students studying operations management modules on undergraduate, postgraduate and MBA programmes. In addition, this is an ideal textbook to accompany modules on operations strategy, production management and services management.",
"edition": "1",
"language": "English",
"libraryCatalog": "Perlego",
"publisher": "Bloomsbury Academic",
"shortTitle": "Operations Management",
"url": "https://www.perlego.com/book/2997236/operations-management-an-international-perspective-pdf",
"attachments": [],
"tags": [
{
"tag": "Business"
},
{
"tag": "Operations"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.perlego.com/book/2306297/mathematics-n1-students-book-tvet-first-pdf",
"items": [
{
"itemType": "book",
"title": "Mathematics N1 Student's Book: TVET FIRST",
"creators": [
{
"firstName": "MJJ van",
"lastName": "Rensburg",
"creatorType": "author"
}
],
"date": "2014-01-01",
"ISBN": "9781430804017",
"abstractNote": "A top-rated series of textbooks designed to help students reach their highest potential. Easy to follow with logical sequencing and a step-by-step approach to problem-solving. Comprehensive module summaries, detailed worked examples and plenty of activities to prepare students for exams. Lots of typical exam-type questions so students understand what is expected of them. Simple defi niti ons for new terms to remove language barriers.",
"language": "English",
"libraryCatalog": "Perlego",
"publisher": "Troupant",
"shortTitle": "Mathematics N1 Student's Book",
"url": "https://www.perlego.com/book/2306297/mathematics-n1-students-book-tvet-first-pdf",
"attachments": [],
"tags": [
{
"tag": "Engineering General"
},
{
"tag": "Technology & Engineering"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.perlego.com/book/862303/designing-experiences-pdf",
"items": [
{
"itemType": "book",
"title": "Designing Experiences",
"creators": [
{
"firstName": "J. Robert",
"lastName": "Rossman",
"creatorType": "author"
},
{
"firstName": "Mathew D.",
"lastName": "Duerden",
"creatorType": "author"
}
],
"date": "2019-07-23",
"ISBN": "9780231549516",
"abstractNote": "In an increasingly experience-driven economy, companies that deliver great experiences thrive, and those that do not die. Yet many organizations face difficulties implementing a vision of delivering experiences beyond the provision of goods and services while students and aspiring professionals struggle to piece together the principles of experience design from disparate, often disconnected disciplines and approaches.In this book, J. Robert Rossman and Mathew D. Duerden present a comprehensive and accessible introduction to experience design. They synthesize the fundamental theories and methods from multiple disciplines and lay out a process for designing experiences from start to finish. Rossman and Duerden challenge us to reflect on what makes a great experience from the user's perspective, drawing attention to both the macro and micro levels. They present interdisciplinary research underlying key concepts such as memory, intentionality, and dramatic structure in a down-to-earth style. Designing Experiences features detailed instructions and numerous real-world examples that clarify theoretical principles, making it useful for students and professionals. An invaluable overview of a growing field, the book provides readers with the tools they need to design innovative and indelible experiences.",
"language": "English",
"libraryCatalog": "Perlego",
"publisher": "Columbia University Press",
"url": "https://www.perlego.com/book/862303/designing-experiences-pdf",
"attachments": [],
"tags": [
{
"tag": "Business"
},
{
"tag": "Management"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.perlego.com/book/1809187/war-and-peace-pdf",
"items": [
{
"itemType": "book",
"title": "War and Peace",
"creators": [
{
"firstName": "Leo",
"lastName": "Tolstoy",
"creatorType": "author"
}
],
"date": "2020-09-08",
"ISBN": "9781528791342",
"abstractNote": "One of the most famous examples of classic world literature, Tolstoy's \"War and Peace\" is an epic chronicle of France's invasion of Russia and the aftermath of the Napoleonic era on Russian society as experienced by five families belonging to the aristocracy. Originally released in serial form in \"The Russian Messenger\" between 1865 and 1867, \"War and Peace\" is considered to be among Tolstoy's greatest literary works and constitutes an absolute must-read for all literature lovers. Count Lev Nikolayevich Tolstoy (1828–1910), also known in English as Leo Tolstoy, was a Russian writer. Generally considered to be one among the greatest novel writers of all time, he was nominated for the Nobel Prize in literature each year between 1902 and 1906; as well as the Nobel Peace Prize in 1901, 1902, and 1910. Other notable works by this author include: \"Anna Karenina\" (1877), \"The Cossacks\" (1863), and \"Resurrection\" (1899). Read & Co. Classics is proudly republishing this classic novel now in a new edition complete with a specially-commissioned new biography of the author.",
"language": "English",
"libraryCatalog": "Perlego",
"publisher": "Read & Co. Classics",
"url": "https://www.perlego.com/book/1809187/war-and-peace-pdf",
"attachments": [],
"tags": [
{
"tag": "Classics"
},
{
"tag": "Literature"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.perlego.com/browse/literature?language=All&publicationDate=&publisher=&author=&format=&tab=books&page=1",
"defer": true,
"detectedItemType": "multiple",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.perlego.com/book/2179957/chor-und-theorie-zeitgenssische-theatertexte-von-heiner-mller-bis-ren-pollesch-pdf",
"detectedItemType": "book",
"items": [
{
"itemType": "book",
"title": "Chor und Theorie: Zeitgenössische Theatertexte von Heiner Müller bis René Pollesch",
"creators": [
{
"firstName": "Maria",
"lastName": "Kuberg",
"creatorType": "author"
}
],
"date": "2021-02-22",
"ISBN": "9783835397361",
"abstractNote": "Nicht nur zwischen Heimat und Fremde steht der Chor im Theater, sondern auch zwischen selbstständigem Handeln und Abhängigkeit, zwischen Menschen und Göttern und schließlich zwischen der dargestellten Welt und der Realität der Rezipienten. Am Chor entzündet sich die Frage, wie die Gemeinschaft auftritt.Maria Kuberg untersucht in detaillierten Lektüren chorischer Theaterstücke von Heiner Müller, Botho Strauß, Elfriede Jelinek, Tankred Dorst, Ewald Palmetshofer, Rainald Goetz, Gert Jonke und René Pollesch, wie der Chor in zeitgenössischen deutschsprachigen Theatertexten zur Sprache kommt. Welche Formen nimmt die Chor-Gemeinschaft dabei im Text an? Und wie korrespondieren diese mit der dramatischen Gattung, die doch grundsätzlich die Handlungen Einzelner vorführt? Das sind die leitenden Fragen dieser erhellenden Erkundung des Theaters der Gegenwart, die es als Reflexion über Gemeinschaft profiliert.Dabei operiert die Untersuchung auf drei historischen Ebenen: Chorische Theatertexte aus dem späten 20. und frühen 21. Jahrhundert werden mit einer theatralen Tradition konfrontiert, die bis in die griechische Antike zurückreicht. Zwischen den antiken und den aktuellen Texten vermittelt die philosophisch-ästhetische Auseinandersetzung mit dem Chor, wie sie im 19. Jahrhundert Schiller, A. W. und F. Schlegel, Hegel und Nietzsche führen. Im Zusammenspiel dieser drei Ebenen wird so eine Theorie des Chorischen entwickelt, die Gattungsaspekte und Gemeinschaftstheorien gleichermaßen berücksichtigt und die das ästhetische wie auch das politische Potenzial der untersuchten Texte erschließt.",
"language": "German",
"libraryCatalog": "Perlego",
"publisher": "Konstanz University Press",
"shortTitle": "Chor und Theorie",
"url": "https://www.perlego.com/book/2179957/chor-und-theorie-zeitgenssische-theatertexte-von-heiner-mller-bis-ren-pollesch-pdf",
"attachments": [],
"tags": [
{
"tag": "Literary Criticism for Comparative Literature"
},
{
"tag": "Literature"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.perlego.com/browse/social-sciences/social-science-research-methodology?language=All&publicationDate=&publisher=&author=&format=&page=1",
"defer": true,
"detectedItemType": "multiple",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.perlego.com/book/1/sheri-khan-tarakai-and-early-village-life-in-the-borderlands-of-northwest-pakistan-bannu-archaeological-project-surveys-and-excavations-19852001-pdf",
"detectedItemType": "book",
"items": [
{
"itemType": "book",
"title": "Sheri Khan Tarakai and Early Village Life in the Borderlands of North-West Pakistan: Bannu Archaeological Project Surveys and Excavations 1985-2001",
"creators": [
{
"firstName": "Cameron A.",
"lastName": "Petrie",
"creatorType": "author"
},
{
"firstName": "Farid",
"lastName": "Khan",
"creatorType": "author"
},
{
"firstName": "J. R.",
"lastName": "Knox",
"creatorType": "author"
}
],
"date": "2010-05-10",
"ISBN": "9781842177358",
"abstractNote": "Between 1985 and 2001, the collaborative research initiative known as the Bannu Archaeological Project conducted archaeological explorations and excavations in the Bannu region, in what was then the North West Frontier Province (NWFP) of Pakistan, now Khyber-Pakhtunkhwa. The Project involves scholars from the Pakistan Heritage Society, the British Museum, the Institute of Archaeology (UCL), Bryn Mawr College and the University of Cambridge. This is the first in a series of volumes that present the final reports of the exploration and excavations carried out by the Bannu Archaeological Project. It marks the first attempt to contextualise the earliest village settlements in northwest Pakistan, along with those situated in other parts of the borderlands zone at the western margins of South Asia. An extensive range of archaeological data from the Bannu Archaeological Project excavations at Sheri Khan Tarakai, including stratigraphic, architectural, ceramic, lithic, small find and bioarchaeological elements, are presented, along with the results of surveys and excavations at several other sites in the Bannu Basin and the adjacent Gomal Plain. The work establishes the nature of the relationships between these sites and other early villages elsewhere in South, central and greater West Asia.",
"language": "English",
"libraryCatalog": "Perlego",
"place": "Havertown",
"publisher": "Oxbow Books",
"shortTitle": "Sheri Khan Tarakai and Early Village Life in the Borderlands of North-West Pakistan",
"url": "https://www.perlego.com/book/1/sheri-khan-tarakai-and-early-village-life-in-the-borderlands-of-northwest-pakistan-bannu-archaeological-project-surveys-and-excavations-19852001-pdf",
"attachments": [],
"tags": [
{
"tag": "Asian History"
},
{
"tag": "History"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Sebastian Karcher^https://(hal\.archives-ouvertes\.fr|hal\.science)\b/*
***** BEGIN LICENSE BLOCK *****
HAL translator
Copyright © 2012-2014 Sebastian Karcher and contributors
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (/\/search\/index\//.test(url)) return "multiple";
if (/\/hal-\d+/.test(url)) return findItemType(doc, url);
return false;
}
function findItemType(doc, url) {
var itemType = text(doc, '.typdoc')
// do some preliminary cleaning
.split("(")[0].trim() // discard parenthesized text
.split(", ")[0].trim() // simplify "Pré-publication, Document de travail" and " Preprints, Working Papers, ..."
.toLowerCase();
var typeMap = {
/* eslint-disable quote-props */
"books": "book",
"ouvrages": "book",
"book sections": "bookSection",
"chapitre d'ouvrage": "bookSection",
"conference papers": "conferencePaper",
"communication dans un congrès": "conferencePaper",
"directions of work or proceedings": "book",
"direction d'ouvrage": "book",
"journal articles": "journalArticle",
"article dans une revue": "journalArticle",
"lectures": "presentation",
"cours": "presentation",
"other publications": "book", // this could also be report, not sure here but bibtex guesses book
"autre publication scientifique": "book", // this could also be report, not sure here but bibtex guesses book
"patents": "patent",
"brevet": "patent",
"preprints": "preprint",
"pré-publication": "preprint",
"reports": "report",
"rapport": "report",
"scientific blog post": "blogPost",
"article de blog scientifique": "blogPost",
"theses": "thesis",
"thèse": "thesis",
"poster communications": "presentation",
"poster de conférence": "presentation",
/* eslint-enable quote-props */
};
if (typeMap[itemType]) return typeMap[itemType];
else if (url.includes("medihal-")) return "artwork";
else return "journalArticle";
}
function doWeb(doc, url) {
var articles = [];
if (detectWeb(doc, url) == "multiple") {
var items = {};
var titles = doc.evaluate('//strong/a[@data-original-title="Display the resource" or @data-original-title="Voir la ressource"]', doc, null, XPathResult.ANY_TYPE, null);
var title;
while ((title = titles.iterateNext())/* assignment */) {
items[title.href] = title.textContent;
}
Zotero.selectItems(items, function (items) {
if (!items) {
return true;
}
for (var i in items) {
articles.push(i);
}
Zotero.Utilities.processDocuments(articles, scrape);
return true;
});
}
else if (/\/document$/.test(url)) { // work on PDF pages
var articleURL = url.replace(/\/document$/, "");
// Z.debug(articleURL)
ZU.processDocuments(articleURL, scrape);
}
else scrape(doc, url);
}
function scrape(doc, url) {
var bibtexUrl = url.replace(/#.+|\/$/, "") + "/bibtex";
var abstract = text(doc, '.abstract-content');
var pdfUrl = attr(doc, "#viewer-detailed a[download]", "href");
// Z.debug("pdfURL " + pdfUrl)
ZU.doGet(bibtexUrl, function (bibtex) {
// Z.debug(bibtex)
var translator = Zotero.loadTranslator("import");
translator.setTranslator("9cb70025-a888-4a29-a210-93ec52da40d4");
translator.setString(bibtex);
translator.setHandler("itemDone", function (obj, item) {
if (abstract) {
item.abstractNote = abstract.replace(/^(Abstract|Résumé)\s*:/, "");
}
if (pdfUrl) {
item.attachments = [{
url: pdfUrl,
title: "HAL PDF Full Text",
mimeType: "application/pdf"
}];
}
else {
item.attachments = [{
document: doc,
title: "HAL Snapshot",
mimeType: "text/html"
}];
}
let detectedType = detectWeb(doc, url);
if (detectedType == "artwork" || detectedType == "presentation") {
item.itemType = detectedType;
}
if (detectedType == 'presentation' && text(doc, 'div.label-POSTER')) {
item.presentationType = 'Poster';
}
item.complete();
});
translator.translate();
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://hal.archives-ouvertes.fr/hal-00328427",
"items": [
{
"itemType": "journalArticle",
"title": "Tropopause referenced ozone climatology and inter-annual variability (1994–2003) from the MOZAIC programme",
"creators": [
{
"firstName": "V.",
"lastName": "Thouret",
"creatorType": "author"
},
{
"firstName": "Jean-Pierre",
"lastName": "Cammas",
"creatorType": "author"
},
{
"firstName": "B.",
"lastName": "Sauvage",
"creatorType": "author"
},
{
"firstName": "G.",
"lastName": "Athier",
"creatorType": "author"
},
{
"firstName": "R.",
"lastName": "Zbinden",
"creatorType": "author"
},
{
"firstName": "P.",
"lastName": "Nédélec",
"creatorType": "author"
},
{
"firstName": "P.",
"lastName": "Simon",
"creatorType": "author"
},
{
"firstName": "F.",
"lastName": "Karcher",
"creatorType": "author"
}
],
"date": "March 2006",
"abstractNote": "The MOZAIC programme collects ozone and water vapour data using automatic equipment installed on board five long-range Airbus A340 aircraft flying regularly all over the world since August 1994. Those measurements made between September 1994 and August 1996 allowed the first accurate ozone climatology at 9–12 km altitude to be generated. The seasonal variability of the tropopause height has always provided a problem when constructing climatologies in this region. To remove any signal from the seasonal and synoptic scale variability in tropopause height we have chosen in this further study of these and subsequent data to reference our climatology to the altitude of the tropopause. We define the tropopause as a mixing zone 30 hPa thick across the 2 pvu potential vorticity surface. A new ozone climatology is now available for levels characteristic of the upper troposphere (UT) and the lower stratosphere (LS) regardless of the seasonal variations of the tropopause over the period 1994–2003. Moreover, this new presentation has allowed an estimation of the monthly mean climatological ozone concentration at the tropopause showing a sine seasonal variation with a maximum in May (120 ppbv) and a minimum in November (65 ppbv). Besides, we present a first assessment of the inter-annual variability of ozone in this particular critical region. The overall increase in the UTLS is about 1%/yr for the 9 years sampled. However, enhanced concentrations about 10–15 % higher than the other years were recorded in 1998 and 1999 in both the UT and the LS. This so-called \"1998–1999 anomaly\" may be attributed to a combination of different processes involving large scale modes of atmospheric variability, circulation features and local or global pollution, but the most dominant one seems to involve the variability of the North Atlantic Oscillation (NAO) as we find a strong positive correlation (above 0.60) between ozone recorded in the upper troposphere and the NAO index. A strong anti-correlation is also found between ozone and the extremes of the Northern Annular Mode (NAM) index, attributing the lower stratospheric variability to dynamical anomalies. Finally this analysis highlights the coupling between the troposphere, at least the upper one, and the stratosphere, at least the lower one.",
"issue": "4",
"itemID": "thouret:hal-00328427",
"libraryCatalog": "HAL Archives Ouvertes",
"pages": "1051",
"publicationTitle": "Atmospheric Chemistry and Physics",
"url": "https://hal.archives-ouvertes.fr/hal-00328427",
"volume": "6",
"attachments": [
{
"title": "HAL PDF Full Text",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://hal.archives-ouvertes.fr/hal-00472553v1",
"items": [
{
"itemType": "book",
"title": "Les sites préhistoriques de la région de Fejej, Sud-Omo, Éthiopie, dans leur contexte stratigraphique et paléontologique.",
"creators": [
{
"firstName": "Henry",
"lastName": "De Lumley",
"creatorType": "author"
},
{
"firstName": "Beyene",
"lastName": "Yonas",
"creatorType": "author"
}
],
"date": "2004",
"abstractNote": "Parmi les nombreux sites paléontologiques et préhistoriques de la région de Fejej, dans la région Sud-Omo, en Éthiopie, le site FJ-1, situé à seulement 5 km au nord de la frontière avec le Kenya et daté de 1,96 Ma, parfaitement en place, très riche en faune et en industrie, étudié avec une approche interdisciplinaire, apporte des informations exceptionnelles pour reconstituer l'habitat, le comportement et le mode de vie, ainsi que les paléoenvironnements des premiers hommes. Des Homo habilis s'étaient installés sur un bourrelet de sables fluviatiles, grossier et meuble, bordé par un dénivelé de 50 cm de hauteur, à proximité de la berge d'une rivière, pendant une période d'étiage, et au coeur d'une plaine d'inondation. Peu de temps sans doute après leur départ, en période de pluie une remontée des eaux de la rivière a provoqué l'enfouissement du sol d'occupation par de nouveaux dépôt de sables qui ont protégé l'ensemble sans le déplacer. La bonne conservation du matériel archéologique et paléontologique, l'enfouissement rapide et le maintien des objets en place, les nombreux remontages effectués, que ce soit en ce qui concerne las artefacts lithiques ou les reste fauniques, les traces de fracturations anthropiques et la non-intervention d'autres prédateurs carnivores, sont, entre autre les conditions exceptionnelles de mise en place et d'étude de ce gisement, qui nous apporte autant de renseignements rares et précieux sur un épisode de la vie des hominidés d'il y a presque 2 millions d'années.",
"itemID": "delumley:hal-00472553",
"libraryCatalog": "HAL Archives Ouvertes",
"numPages": "637 p.",
"publisher": "Éditions Recherche sur les Civilisations",
"url": "https://hal.archives-ouvertes.fr/hal-00472553",
"attachments": [
{
"title": "HAL Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://hal.archives-ouvertes.fr/hal-00973502",
"items": [
{
"itemType": "report",
"title": "Learning Centre de l'UHA : comment accompagner son ouverture et inciter les futurs usagers à exploiter ce nouveau centre de ressources ?",
"creators": [
{
"firstName": "Bernard",
"lastName": "Coulibaly",
"creatorType": "author"
},
{
"firstName": "Hélène",
"lastName": "Hermann",
"creatorType": "author"
}
],
"date": "March 2014",
"itemID": "coulibaly:hal-00973502",
"libraryCatalog": "HAL Archives Ouvertes",
"shortTitle": "Learning Centre de l'UHA",
"url": "https://hal.archives-ouvertes.fr/hal-00973502",
"attachments": [
{
"title": "HAL PDF Full Text",
"mimeType": "application/pdf"
}
],
"tags": [
"Bibliothèque universitaire",
"ICT appropriation",
"Learning Centre",
"Pedagogy",
"University Library",
"appropriation TICE",
"innovation",
"pédagogie universitaire"
],
"notes": [
{
"note": "<p>140 pages</p>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://hal.archives-ouvertes.fr/medihal-00772952v1",
"items": [
{
"itemType": "artwork",
"title": "Children playing in a park",
"creators": [
{
"firstName": "François",
"lastName": "Gipouloux",
"creatorType": "author"
}
],
"date": "March 2012",
"abstractNote": "Description : Children performing for a crowd of passersby in a park in Kunming. (Enfants jouant dans un parc à Kunming Photo d'enfants jouant dans un parc à Kunming",
"itemID": "gipouloux:medihal-00772952",
"libraryCatalog": "HAL Archives Ouvertes",
"url": "https://medihal.archives-ouvertes.fr/medihal-00772952",
"attachments": [
{
"title": "HAL PDF Full Text",
"mimeType": "application/pdf"
}
],
"tags": [
"China",
"Kunming",
"children",
"park",
"town"
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://hal.archives-ouvertes.fr/search/index/q/%2A/docType_s/THESE/",
"items": "multiple"
},
{
"type": "web",
"url": "https://hal.archives-ouvertes.fr/hal-01600136v1",
"items": [
{
"itemType": "presentation",
"title": "First results about in vitro bud neoformation on haploid apple leaves",
"creators": [
{
"firstName": "Michel",
"lastName": "Duron",
"creatorType": "author"
}
],
"date": "1989-06",
"abstractNote": "First results about[i] in vitro[/i] bud neoformation on haploid apple leaves. The impact of biotechnology in agriculture. The meeting point between fundamental and applied in vitro culture research",
"extra": "Published: The impact of biotechnology in agriculture. The meeting point between fundamental and applied in vitro culture research",
"itemID": "duron:hal-01600136",
"presentationType": "Poster",
"url": "https://hal.archives-ouvertes.fr/hal-01600136",
"attachments": [
{
"title": "HAL PDF Full Text",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "apple tree"
},
{
"tag": "bourgeon"
},
{
"tag": "budwood"
},
{
"tag": "culture in vitro"
},
{
"tag": "diffusion des résultats"
},
{
"tag": "haploid"
},
{
"tag": "haploïdie"
},
{
"tag": "in vitro culture"
},
{
"tag": "plant leaf"
},
{
"tag": "plante néoformee"
},
{
"tag": "pommier"
},
{
"tag": "système foliaire"
}
],
"notes": [
{
"note": "<p>Poster</p>"
}
],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Philipp Zumsteinjson/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2019 Philipp Zumstein
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
const datasetType = ZU.fieldIsValidForType('title', 'dataset')
? 'dataset'
: 'document';
// copied from CSL JSON
function parseInput() {
var str, json = "";
// Read in the whole file at once, since we can't easily parse a JSON stream. The
// chunk size here is pretty arbitrary, although larger chunk sizes may be marginally
// faster. We set it to 1MB.
while ((str = Z.read(1048576)) !== false) json += str;
try {
return JSON.parse(json);
}
catch (e) {
Zotero.debug(e);
return false;
}
}
function detectImport() {
var parsedData = parseInput();
if (parsedData && parsedData.schemaVersion && parsedData.schemaVersion.startsWith("http://datacite.org/schema/")) {
return true;
}
return false;
}
/* eslint-disable camelcase*/
var mappingTypes = {
book: "book",
chapter: "bookSection",
"article-journal": "journalArticle",
"article-magazine": "magazineArticle",
"article-newspaper": "newspaperArticle",
thesis: "thesis",
"entry-encyclopedia": "encyclopediaArticle",
"entry-dictionary": "dictionaryEntry",
"paper-conference": "conferencePaper",
personal_communication: "letter",
manuscript: "manuscript",
interview: "interview",
motion_picture: "film",
graphic: "artwork",
webpage: "webpage",
report: "report",
bill: "bill",
legal_case: "case",
patent: "patent",
legislation: "statute",
map: "map",
"post-weblog": "blogPost",
post: "forumPost",
song: "audioRecording",
speech: "presentation",
broadcast: "radioBroadcast",
dataset: "dataset"
};
/* eslint-enable camelcase*/
// pre-6.0.26 releases don't have a dataset item type
if (datasetType == "document") {
mappingTypes.dataset = 'document';
}
function doImport() {
var data = parseInput();
var type = "journalArticle";
if (data.types.citeproc && mappingTypes[data.types.citeproc]) {
type = mappingTypes[data.types.citeproc];
}
if (["softwaresourcecode", "softwareapplication", "mobileapplication", "videogame", "webapplication"].includes(data.types.schemaOrg.toLowerCase())) {
type = "computerProgram";
}
var item = new Zotero.Item(type);
if (data.types.citeproc == "dataset" && datasetType == "document") {
item.extra = "Type: dataset";
}
var title = "";
for (let titleElement of data.titles) {
if (!titleElement.title) {
continue;
}
if (!titleElement.titleType) {
title = titleElement.title + title;
}
else if (titleElement.titleType.toLowerCase() == "subtitle") {
title = title + ": " + titleElement.title;
}
}
item.title = title;
if (data.creators) {
for (let creator of data.creators) {
if (creator.familyName && creator.givenName) {
item.creators.push({
lastName: creator.familyName,
firstName: creator.givenName,
creatorType: "author"
});
}
else if (creator.nameType == "Personal") {
item.creators.push(ZU.cleanAuthor(creator.name, "author", true));
}
else {
item.creators.push({ lastName: creator.name, creatorType: "author", fieldMode: 1 });
}
}
}
if (data.contributors) {
for (let contributor of data.contributors) {
let role = "contributor";
if (contributor.contributorRole) {
switch (contributor.contributorRole.toLowerCase()) {
case "editor":
role = "editor";
break;
case "producer":
role = "producer";
break;
default:
// use the already assigned value
}
}
if (contributor.familyName && contributor.givenName) {
item.creators.push({
lastName: contributor.familyName,
firstName: contributor.givenName,
creatorType: role
});
}
else if (contributor.nameType == "Personal") {
item.creators.push(ZU.cleanAuthor(contributor.name, role));
}
else {
item.creators.push({ lastName: contributor.name, creatorType: role, fieldMode: 1 });
}
}
}
item.publisher = data.publisher;
let dates = {};
if (data.dates) {
for (let date of data.dates) {
dates[date.dateType] = date.date;
}
item.date = dates.Issued || dates.Updated || dates.Available || dates.Accepted || dates.Submitted || dates.Created || data.publicationYear;
}
item.DOI = data.doi;
//add DOI to extra for unsupported items
if (item.DOI && !ZU.fieldIsValidForType("DOI", item.itemType)) {
if (item.extra) {
item.extra += "\nDOI: " + item.DOI;
}
else {
item.extra = "DOI: " + item.DOI;
}
}
item.url = data.url;
item.language = data.language;
if (data.subjects) {
for (let subject of data.subjects) {
item.tags.push(subject.subject);
}
}
if (data.formats) {
item.medium = data.formats.join();
}
if (data.sizes) {
item.pages = item.artworkSize = data.sizes.join(", ");
}
item.versionNumber = data.version;
if (data.rightsList) {
item.rights = data.rightsList.map(x => x.rights).join(", ");
}
var descriptionNote = "";
if (data.descriptions) {
for (let description of data.descriptions) {
if (description.descriptionType == "Abstract") {
item.abstractNote = description.description;
}
else {
descriptionNote += "<h2>" + description.descriptionType + "</h2>\n" + description.description;
}
}
}
if (descriptionNote !== "") {
item.notes.push({ note: descriptionNote });
}
if (data.container) {
if (data.container.type == "Series") {
item.publicationTitle = data.container.title;
item.volume = data.container.volume;
var pages = (data.container.firstPage || "") + (data.container.lastPage || "");
if (!item.pages && pages !== "") {
item.pages = pages;
}
}
if (data.container.identifier && data.container.identifierType) {
if (data.container.identifierType == "ISSN") {
item.ISSN = data.container.identifier;
}
if (data.container.identifierType == "ISBN") {
item.ISBN = data.container.identifier;
}
}
}
if (data.relatedIdentifiers) {
for (let relates of data.relatedIdentifiers) {
if (!item.ISSN && relates.relatedIdentifierType == "ISSN") {
item.ISSN = relates.relatedIdentifier;
}
if (!item.ISBN && relates.relatedIdentifierType == "ISBN") {
item.ISBN = relates.relatedIdentifier;
}
}
}
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "import",
"input": "{\n \"id\": \"https://doi.org/10.5281/zenodo.2548653\",\n \"doi\": \"10.5281/zenodo.2548653\",\n \"url\": \"https://zenodo.org/record/2548653\",\n \"types\": {\n \"resourceTypeGeneral\": \"Text\",\n \"resourceType\": \"Journal article\",\n \"schemaOrg\": \"ScholarlyArticle\",\n \"citeproc\": \"article-journal\",\n \"bibtex\": \"article\",\n \"ris\": \"RPRT\"\n },\n \"creators\": [\n {\n \"nameType\": \"Personal\",\n \"name\": \"Dube, Zenzo Lusaba\",\n \"givenName\": \"Zenzo Lusaba\",\n \"familyName\": \"Dube\",\n \"affiliation\": \"National University of Science and Technology, Zimbabwe\"\n },\n {\n \"nameType\": \"Personal\",\n \"name\": \"Murahwe, Gloria Rosi\",\n \"givenName\": \"Gloria Rosi\",\n \"familyName\": \"Murahwe\",\n \"affiliation\": \"Reserve Bank of Zimbabwe\"\n }\n ],\n \"titles\": [\n {\n \"title\": \"An analysis of corporate governance practices in government controlled versus private banking institutions in Zimbabwe\"\n }\n ],\n \"publisher\": \"Zenodo\",\n \"container\": {\n \"type\": \"Series\",\n \"identifier\": \"https://zenodo.org/communities/nustlibrary44\",\n \"identifierType\": \"URL\"\n },\n \"subjects\": [\n {\n \"subject\": \"corporate governance\"\n },\n {\n \"subject\": \"private banking\"\n }\n ],\n \"contributors\": [\n\n ],\n \"dates\": [\n {\n \"date\": \"2015-01-01\",\n \"dateType\": \"Issued\"\n }\n ],\n \"publicationYear\": \"2015\",\n \"language\": \"en\",\n \"identifiers\": [\n {\n \"identifierType\": \"DOI\",\n \"identifier\": \"https://doi.org/10.5281/zenodo.2548653\"\n },\n {\n \"identifierType\": \"URL\",\n \"identifier\": \"https://zenodo.org/record/2548653\"\n }\n ],\n \"sizes\": [\n\n ],\n \"formats\": [\n\n ],\n \"rightsList\": [\n {\n \"rights\": \"Creative Commons Attribution 4.0 International\",\n \"rightsUri\": \"http://creativecommons.org/licenses/by/4.0/legalcode\"\n },\n {\n \"rights\": \"Open Access\",\n \"rightsUri\": \"info:eu-repo/semantics/openAccess\"\n }\n ],\n \"descriptions\": [\n {\n \"description\": \"The significance of good corporate governance practices is of paramount importance. It can be posited that the Zimbabwean banking sector crisis of the period 2003 to 2004 was largely due to poor corporate governance practices. Most of the banking institutions that faced closure in that era were of domestic origin. This crisis however did not affect the Government owned banks. This was a paradox as private banks are seen as profitable compared to Government owned banks. The paper sought to ascertain who between the government and private banks better adhered to corporate governance principles. Twenty one banks were involved in this study. A total of 39 questionnaires were sent, three per bank. Ten face to face interviews were conducted with the banks' directors and managers. The paper unearthed that corporate governance practices are observed by both private banks and government controlled banks; however private banks appear to have a slighter edge. Government owned banks do have good corporate practices in place\",\n \"descriptionType\": \"Abstract\"\n },\n {\n \"description\": \"This is an open access article distributed under the Creative Commons Attribution License, which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.\",\n \"descriptionType\": \"Other\"\n }\n ],\n \"geoLocations\": [\n\n ],\n \"fundingReferences\": [\n\n ],\n \"relatedIdentifiers\": [\n {\n \"relatedIdentifier\": \"10.5281/zenodo.2548652\",\n \"relatedIdentifierType\": \"DOI\",\n \"relationType\": \"IsVersionOf\"\n },\n {\n \"relatedIdentifier\": \"https://zenodo.org/communities/nustlibrary44\",\n \"relatedIdentifierType\": \"URL\",\n \"relationType\": \"IsPartOf\"\n }\n ],\n \"schemaVersion\": \"http://datacite.org/schema/kernel-4\",\n \"providerId\": \"cern\",\n \"clientId\": \"cern.zenodo\",\n \"agency\": \"DataCite\",\n \"state\": \"findable\"\n}",
"items": [
{
"itemType": "journalArticle",
"title": "An analysis of corporate governance practices in government controlled versus private banking institutions in Zimbabwe",
"creators": [
{
"lastName": "Dube",
"firstName": "Zenzo Lusaba",
"creatorType": "author"
},
{
"lastName": "Murahwe",
"firstName": "Gloria Rosi",
"creatorType": "author"
}
],
"date": "2015-01-01",
"DOI": "10.5281/zenodo.2548653",
"abstractNote": "The significance of good corporate governance practices is of paramount importance. It can be posited that the Zimbabwean banking sector crisis of the period 2003 to 2004 was largely due to poor corporate governance practices. Most of the banking institutions that faced closure in that era were of domestic origin. This crisis however did not affect the Government owned banks. This was a paradox as private banks are seen as profitable compared to Government owned banks. The paper sought to ascertain who between the government and private banks better adhered to corporate governance principles. Twenty one banks were involved in this study. A total of 39 questionnaires were sent, three per bank. Ten face to face interviews were conducted with the banks' directors and managers. The paper unearthed that corporate governance practices are observed by both private banks and government controlled banks; however private banks appear to have a slighter edge. Government owned banks do have good corporate practices in place",
"language": "en",
"rights": "Creative Commons Attribution 4.0 International, Open Access",
"url": "https://zenodo.org/record/2548653",
"attachments": [],
"tags": [
{
"tag": "corporate governance"
},
{
"tag": "private banking"
}
],
"notes": [
{
"note": "<h2>Other</h2>\nThis is an open access article distributed under the Creative Commons Attribution License, which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited."
}
],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "{\n \"id\": \"https://doi.org/10.5438/n138-z3mk\",\n \"doi\": \"10.5438/n138-z3mk\",\n \"url\": \"https://github.com/datacite/bolognese\",\n \"types\": {\n \"resourceTypeGeneral\": \"Software\",\n \"resourceType\": \"SoftwareSourceCode\",\n \"schemaOrg\": \"SoftwareSourceCode\",\n \"citeproc\": \"article\",\n \"bibtex\": \"misc\",\n \"ris\": \"COMP\"\n },\n \"creators\": [\n {\n \"nameType\": \"Personal\",\n \"name\": \"Fenner, Martin\",\n \"givenName\": \"Martin\",\n \"familyName\": \"Fenner\",\n \"nameIdentifiers\": [\n {\n \"nameIdentifier\": \"https://orcid.org/0000-0003-0077-4738\",\n \"nameIdentifierScheme\": \"ORCID\"\n }\n ]\n }\n ],\n \"titles\": [\n {\n \"title\": \"Bolognese: a Ruby library for conversion of DOI Metadata\"\n }\n ],\n \"publisher\": \"DataCite\",\n \"container\": {\n },\n \"subjects\": [\n {\n \"subject\": \"doi\"\n },\n {\n \"subject\": \"metadata\"\n },\n {\n \"subject\": \"crossref\"\n },\n {\n \"subject\": \"datacite\"\n },\n {\n \"subject\": \"schema.org\"\n },\n {\n \"subject\": \"bibtex\"\n },\n {\n \"subject\": \"codemeta\"\n }\n ],\n \"contributors\": [\n\n ],\n \"dates\": [\n {\n \"date\": \"2017-02-13\",\n \"dateType\": \"Created\"\n },\n {\n \"date\": \"2017-02-25\",\n \"dateType\": \"Issued\"\n },\n {\n \"date\": \"2017-02-25\",\n \"dateType\": \"Updated\"\n }\n ],\n \"publicationYear\": \"2017\",\n \"identifiers\": [\n {\n \"identifierType\": \"DOI\",\n \"identifier\": \"https://doi.org/10.5438/n138-z3mk\"\n }\n ],\n \"sizes\": [\n\n ],\n \"formats\": [\n\n ],\n \"rightsList\": [\n\n ],\n \"descriptions\": [\n {\n \"description\": \"Ruby gem and command-line utility for conversion of DOI metadata from and to different metadata formats, including schema.org.\",\n \"descriptionType\": \"Abstract\"\n }\n ],\n \"geoLocations\": [\n\n ],\n \"fundingReferences\": [\n\n ],\n \"relatedIdentifiers\": [\n\n ],\n \"schemaVersion\": \"http://datacite.org/schema/kernel-4\",\n \"providerId\": \"datacite\",\n \"clientId\": \"datacite.datacite\",\n \"agency\": \"DataCite\",\n \"state\": \"findable\"\n}",
"items": [
{
"itemType": "computerProgram",
"title": "Bolognese: a Ruby library for conversion of DOI Metadata",
"creators": [
{
"lastName": "Fenner",
"firstName": "Martin",
"creatorType": "author"
}
],
"date": "2017-02-25",
"abstractNote": "Ruby gem and command-line utility for conversion of DOI metadata from and to different metadata formats, including schema.org.",
"company": "DataCite",
"extra": "DOI: 10.5438/n138-z3mk",
"url": "https://github.com/datacite/bolognese",
"attachments": [],
"tags": [
{
"tag": "bibtex"
},
{
"tag": "codemeta"
},
{
"tag": "crossref"
},
{
"tag": "datacite"
},
{
"tag": "doi"
},
{
"tag": "metadata"
},
{
"tag": "schema.org"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "{\n \"id\": \"https://doi.org/10.3205/mbi000337\",\n \"doi\": \"10.3205/mbi000337\",\n \"url\": \"http://www.egms.de/en/journals/mbi/2015-15/mbi000337.shtml\",\n \"types\": {\n \"resourceTypeGeneral\": \"Text\",\n \"resourceType\": \"Journal Article\",\n \"schemaOrg\": \"ScholarlyArticle\",\n \"citeproc\": \"article-journal\",\n \"bibtex\": \"article\",\n \"ris\": \"RPRT\"\n },\n \"creators\": [\n {\n \"nameType\": \"Personal\",\n \"name\": \"Miljković, Natascha\",\n \"givenName\": \"Natascha\",\n \"familyName\": \"Miljković\",\n \"affiliation\": \"Zitier-Weise, Agentur für Plagiatprävention e.U., Wien, Österreich\"\n }\n ],\n \"titles\": [\n {\n \"title\": \"Mehr Schaden als Nutzen? Problematischer Einsatz von Textvergleichsprogrammen zur vermeintlichen Plagiatsvermeidung\",\n \"lang\": \"de\"\n },\n {\n \"title\": \"Doing more harm than good? Disputable use of text matching software as assumed plagiarism prevention method\",\n \"titleType\": \"TranslatedTitle\",\n \"lang\": \"en\"\n }\n ],\n \"publisher\": \"German Medical Science GMS Publishing House\",\n \"container\": {\n \"type\": \"Series\",\n \"identifier\": \"1865-066X\",\n \"identifierType\": \"ISSN\",\n \"title\": \"GMS Medizin - Bibliothek - Information; 15(1-2):Doc10\"\n },\n \"subjects\": [\n {\n \"subject\": \"plagiarism detection\",\n \"lang\": \"en\"\n },\n {\n \"subject\": \"plagiarism detection software\",\n \"lang\": \"en\"\n },\n {\n \"subject\": \"text matching analysis\",\n \"lang\": \"en\"\n },\n {\n \"subject\": \"scientific writing\",\n \"lang\": \"en\"\n },\n {\n \"subject\": \"forms of plagiarism\",\n \"lang\": \"en\"\n },\n {\n \"subject\": \"misconceptions\",\n \"lang\": \"en\"\n },\n {\n \"subject\": \"Plagiatsprüfung\",\n \"lang\": \"de\"\n },\n {\n \"subject\": \"Plagiatsprüfprogramme\",\n \"lang\": \"de\"\n },\n {\n \"subject\": \"Textvergleichsanalysen\",\n \"lang\": \"de\"\n },\n {\n \"subject\": \"wissenschaftlich Schreiben\",\n \"lang\": \"de\"\n },\n {\n \"subject\": \"Plagiatsformen\",\n \"lang\": \"de\"\n },\n {\n \"subject\": \"Falschannahmen\",\n \"lang\": \"de\"\n },\n {\n \"subject\": \"610 Medical sciences; Medicine\",\n \"subjectScheme\": \"DDC\"\n }\n ],\n \"contributors\": [\n\n ],\n \"dates\": [\n {\n \"date\": \"2015-08-12\",\n \"dateType\": \"Issued\"\n }\n ],\n \"publicationYear\": \"2015\",\n \"language\": \"de\",\n \"identifiers\": [\n {\n \"identifierType\": \"DOI\",\n \"identifier\": \"https://doi.org/10.3205/mbi000337\"\n },\n {\n \"identifierType\": \"URN\",\n \"identifier\": \"urn:nbn:de:0183-mbi0003372\"\n },\n {\n \"identifierType\": \"Doc\",\n \"identifier\": \"mbi000337\"\n }\n ],\n \"sizes\": [\n\n ],\n \"formats\": [\n \"text/html\"\n ],\n \"rightsList\": [\n {\n \"rights\": \"Dieser Artikel ist ein Open-Access-Artikel und steht unter den Lizenzbedingungen der Creative Commons Attribution 4.0 License (Namensnennung).\",\n \"rightsUri\": \"http://creativecommons.org/licenses/by/4.0\"\n }\n ],\n \"descriptions\": [\n {\n \"description\": \"The number of so called plagiarism detection software is ever-growing, though hardly any of those products are really useful as marketed. Especially since their producers force-fed the term plagiarism detection – in stark contrast to the only function they have, which is text matching – to their customers, several misconceptions have established, which keep circulating within higher education institutions rather persistently, thus even hindering the establishment of efficient prevention strategies within. By all means are those products not sufficient enough as sole preventing method against plagiarism and will never be technically mature enough to find all forms of scientifically unethical writing methods.\",\n \"descriptionType\": \"Abstract\",\n \"lang\": \"en\"\n },\n {\n \"description\": \"Die Liste an selbst ernannten Plagiatsprüfprogrammen ist lang und wächst ständig, brauchbar wie propagiert sind jedoch nur wenige davon. Besonders durch die gezielte Werbung der ProgrammherstellerInnen mit dem Begriff Plagiatsdetektion – im Gegensatz zu ihrer einzigen tatsächlichen Funktionsweise, dem bloßen Textvergleich –, haben sich einige falsche Annahmen zu diesen Produkten ergeben, die sich im universitären Bereich leider sehr hartnäckig halten und bei der Konzeptionierung effizienter Präventionsmaßnahmen sogar hinderlich sein können. Als einzige eingesetzte präventive Maßnahme (im weitesten Sinne) sind diese Programme völlig unzureichend und können technisch zudem ohnedies nicht alle Formen von unwissenschaftlichen Schreibverhalten finden.\",\n \"descriptionType\": \"Abstract\",\n \"lang\": \"de\"\n },\n {\n \"description\": \"GMS Medizin - Bibliothek - Information; 15(1-2):Doc10\",\n \"descriptionType\": \"SeriesInformation\"\n }\n ],\n \"geoLocations\": [\n\n ],\n \"fundingReferences\": [\n\n ],\n \"relatedIdentifiers\": [\n {\n \"relatedIdentifier\": \"1865-066X\",\n \"relatedIdentifierType\": \"ISSN\",\n \"relationType\": \"IsPartOf\"\n }\n ],\n \"schemaVersion\": \"http://datacite.org/schema/kernel-3\",\n \"providerId\": \"zbmed\",\n \"clientId\": \"zbmed.gms\",\n \"agency\": \"DataCite\",\n \"state\": \"findable\"\n}",
"items": [
{
"itemType": "journalArticle",
"title": "Mehr Schaden als Nutzen? Problematischer Einsatz von Textvergleichsprogrammen zur vermeintlichen Plagiatsvermeidung",
"creators": [
{
"lastName": "Miljković",
"firstName": "Natascha",
"creatorType": "author"
}
],
"date": "2015-08-12",
"DOI": "10.3205/mbi000337",
"ISSN": "1865-066X",
"abstractNote": "Die Liste an selbst ernannten Plagiatsprüfprogrammen ist lang und wächst ständig, brauchbar wie propagiert sind jedoch nur wenige davon. Besonders durch die gezielte Werbung der ProgrammherstellerInnen mit dem Begriff Plagiatsdetektion – im Gegensatz zu ihrer einzigen tatsächlichen Funktionsweise, dem bloßen Textvergleich –, haben sich einige falsche Annahmen zu diesen Produkten ergeben, die sich im universitären Bereich leider sehr hartnäckig halten und bei der Konzeptionierung effizienter Präventionsmaßnahmen sogar hinderlich sein können. Als einzige eingesetzte präventive Maßnahme (im weitesten Sinne) sind diese Programme völlig unzureichend und können technisch zudem ohnedies nicht alle Formen von unwissenschaftlichen Schreibverhalten finden.",
"language": "de",
"publicationTitle": "GMS Medizin - Bibliothek - Information; 15(1-2):Doc10",
"rights": "Dieser Artikel ist ein Open-Access-Artikel und steht unter den Lizenzbedingungen der Creative Commons Attribution 4.0 License (Namensnennung).",
"url": "http://www.egms.de/en/journals/mbi/2015-15/mbi000337.shtml",
"attachments": [],
"tags": [
{
"tag": "610 Medical sciences; Medicine"
},
{
"tag": "Falschannahmen"
},
{
"tag": "Plagiatsformen"
},
{
"tag": "Plagiatsprüfprogramme"
},
{
"tag": "Plagiatsprüfung"
},
{
"tag": "Textvergleichsanalysen"
},
{
"tag": "forms of plagiarism"
},
{
"tag": "misconceptions"
},
{
"tag": "plagiarism detection"
},
{
"tag": "plagiarism detection software"
},
{
"tag": "scientific writing"
},
{
"tag": "text matching analysis"
},
{
"tag": "wissenschaftlich Schreiben"
}
],
"notes": [
{
"note": "<h2>SeriesInformation</h2>\nGMS Medizin - Bibliothek - Information; 15(1-2):Doc10"
}
],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "{\n \"id\": \"https://doi.org/10.17171/2-3-12-1\",\n \"doi\": \"10.17171/2-3-12-1\",\n \"url\": \"http://repository.edition-topoi.org/collection/MAGN/single/0012/0\",\n \"types\": {\n \"resourceTypeGeneral\": \"Dataset\",\n \"resourceType\": \"3D Data\",\n \"schemaOrg\": \"Dataset\",\n \"citeproc\": \"dataset\",\n \"bibtex\": \"misc\",\n \"ris\": \"DATA\"\n },\n \"creators\": [\n {\n \"nameType\": \"Personal\",\n \"name\": \"Fritsch, Bernhard\",\n \"givenName\": \"Bernhard\",\n \"familyName\": \"Fritsch\"\n }\n ],\n \"titles\": [\n {\n \"title\": \"3D model of object V 1.2-71\"\n },\n {\n \"title\": \"Structured-light Scan, Staatliche Museen zu Berlin - Antikensammlung\",\n \"titleType\": \"Subtitle\"\n }\n ],\n \"publisher\": \"Edition Topoi\",\n \"container\": {\n \"type\": \"DataRepository\",\n \"identifier\": \"10.17171/2-3-1\",\n \"identifierType\": \"DOI\",\n \"title\": \"Architectural Fragments from Magnesia on the Maeander\"\n },\n \"subjects\": [\n {\n \"subject\": \"101 Ancient Cultures\"\n },\n {\n \"subject\": \"410-01 Building and Construction History\"\n }\n ],\n \"contributors\": [\n\n ],\n \"dates\": [\n {\n \"date\": \"2016\",\n \"dateType\": \"Updated\"\n },\n {\n \"date\": \"2016\",\n \"dateType\": \"Issued\"\n }\n ],\n \"publicationYear\": \"2016\",\n \"identifiers\": [\n {\n \"identifierType\": \"DOI\",\n \"identifier\": \"https://doi.org/10.17171/2-3-12-1\"\n }\n ],\n \"sizes\": [\n\n ],\n \"formats\": [\n \"nxs\"\n ],\n \"rightsList\": [\n\n ],\n \"descriptions\": [\n {\n \"description\": \"Architectural Fragments from Magnesia on the Maeander\",\n \"descriptionType\": \"SeriesInformation\"\n }\n ],\n \"geoLocations\": [\n\n ],\n \"fundingReferences\": [\n\n ],\n \"relatedIdentifiers\": [\n {\n \"relatedIdentifier\": \"10.17171/2-3-1\",\n \"relatedIdentifierType\": \"DOI\",\n \"relationType\": \"IsPartOf\"\n },\n {\n \"relatedIdentifier\": \"10.17171/2-3\",\n \"relatedIdentifierType\": \"DOI\",\n \"relationType\": \"IsPartOf\"\n }\n ],\n \"schemaVersion\": \"http://datacite.org/schema/kernel-3\",\n \"providerId\": \"tib\",\n \"clientId\": \"tib.topoi\",\n \"agency\": \"DataCite\",\n \"state\": \"findable\"\n}",
"items": [
{
"itemType": "dataset",
"title": "3D model of object V 1.2-71: Structured-light Scan, Staatliche Museen zu Berlin - Antikensammlung",
"creators": [
{
"lastName": "Fritsch",
"firstName": "Bernhard",
"creatorType": "author"
}
],
"date": "2016",
"DOI": "10.17171/2-3-12-1",
"format": "nxs",
"repository": "Edition Topoi",
"url": "http://repository.edition-topoi.org/collection/MAGN/single/0012/0",
"attachments": [],
"tags": [
{
"tag": "101 Ancient Cultures"
},
{
"tag": "410-01 Building and Construction History"
}
],
"notes": [
{
"note": "<h2>SeriesInformation</h2>\nArchitectural Fragments from Magnesia on the Maeander"
}
],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "{\n \"id\": \"https://doi.org/10.21248/jfml.2018.6\",\n \"doi\": \"10.21248/jfml.2018.6\",\n \"url\": \"https://jfml.org/article/view/6\",\n \"types\": {\n \"resourceTypeGeneral\": \"Text\",\n \"resourceType\": \"Article\",\n \"schemaOrg\": \"ScholarlyArticle\",\n \"citeproc\": \"article-journal\",\n \"bibtex\": \"article\",\n \"ris\": \"RPRT\"\n },\n \"creators\": [\n {\n \"nameType\": \"Personal\",\n \"name\": \"Mostovaia, Irina\",\n \"givenName\": \"Irina\",\n \"familyName\": \"Mostovaia\"\n }\n ],\n \"titles\": [\n {\n \"title\": \"Nonverbale graphische Ressourcen bei Reparaturen in der interaktionalen informellen Schriftlichkeit am Beispiel der deutschen Chat-Kommunikation via IRC-Chat und WhatsApp\"\n }\n ],\n \"publisher\": \"Journal für Medienlinguistik\",\n \"container\": {\n \"type\": \"Series\",\n \"title\": \"Journal für Medienlinguistik\",\n \"firstPage\": \"Bd. 1 Nr. 1 (2018)\"\n },\n \"subjects\": [\n\n ],\n \"contributors\": [\n\n ],\n \"dates\": [\n {\n \"date\": \"2018-06-18\",\n \"dateType\": \"Submitted\"\n },\n {\n \"date\": \"2018-11-22\",\n \"dateType\": \"Accepted\"\n },\n {\n \"date\": \"2018-12-04\",\n \"dateType\": \"Updated\"\n },\n {\n \"date\": \"2018-12-04\",\n \"dateType\": \"Issued\"\n }\n ],\n \"publicationYear\": \"2018\",\n \"language\": \"de\",\n \"identifiers\": [\n {\n \"identifierType\": \"DOI\",\n \"identifier\": \"https://doi.org/10.21248/jfml.2018.6\"\n },\n {\n \"identifierType\": \"publisherId\",\n \"identifier\": \"1-3-6\"\n }\n ],\n \"sizes\": [\n \"42-79 Seiten\"\n ],\n \"formats\": [\n\n ],\n \"rightsList\": [\n {\n \"rights\": \"Dieses Werk steht unter der Lizenz Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 4.0 International.\",\n \"rightsUri\": \"http://creativecommons.org/licenses/by-sa/4.0\"\n }\n ],\n \"descriptions\": [\n {\n \"description\": \"The aim of this paper is to present the results of an empirical analysis of the use of non-alphabetic graphic signs (e.g. asterisks, slashes, plus signs etc.) in the context of repairs in Russian and German informal electronic communication. The data for the analysis were taken from the “Mobile Communication Database MoCoDa” (https://www.uni-due.de/~hg0263/SMSDB), which contains Russian and German private electronic communication via SMS, WhatsApp and other short message services, and the “Dortmunder Chat-Korpus” (http://www.chatkorpus.tu-dortmund.de/korpora.html). This paper describes the functions of various graphic resources in the context of repairs in both data collections and compares the occurrences of these functions in current Russian and German computer-mediated communication. It concludes that particular signs in both data sets share the same subset of functions, but they differ in terms of how frequently these resources occur in each form of communication.\",\n \"descriptionType\": \"Abstract\"\n },\n {\n \"description\": \"Journal für Medienlinguistik, Bd. 1 Nr. 1 (2018)\",\n \"descriptionType\": \"SeriesInformation\"\n }\n ],\n \"geoLocations\": [\n\n ],\n \"fundingReferences\": [\n\n ],\n \"relatedIdentifiers\": [\n\n ],\n \"schemaVersion\": \"http://datacite.org/schema/kernel-4\",\n \"providerId\": \"gesis\",\n \"clientId\": \"gesis.ubjcs\",\n \"agency\": \"DataCite\",\n \"state\": \"findable\"\n}",
"items": [
{
"itemType": "journalArticle",
"title": "Nonverbale graphische Ressourcen bei Reparaturen in der interaktionalen informellen Schriftlichkeit am Beispiel der deutschen Chat-Kommunikation via IRC-Chat und WhatsApp",
"creators": [
{
"lastName": "Mostovaia",
"firstName": "Irina",
"creatorType": "author"
}
],
"date": "2018-12-04",
"DOI": "10.21248/jfml.2018.6",
"abstractNote": "The aim of this paper is to present the results of an empirical analysis of the use of non-alphabetic graphic signs (e.g. asterisks, slashes, plus signs etc.) in the context of repairs in Russian and German informal electronic communication. The data for the analysis were taken from the “Mobile Communication Database MoCoDa” (https://www.uni-due.de/~hg0263/SMSDB), which contains Russian and German private electronic communication via SMS, WhatsApp and other short message services, and the “Dortmunder Chat-Korpus” (http://www.chatkorpus.tu-dortmund.de/korpora.html). This paper describes the functions of various graphic resources in the context of repairs in both data collections and compares the occurrences of these functions in current Russian and German computer-mediated communication. It concludes that particular signs in both data sets share the same subset of functions, but they differ in terms of how frequently these resources occur in each form of communication.",
"language": "de",
"pages": "42-79 Seiten",
"publicationTitle": "Journal für Medienlinguistik",
"rights": "Dieses Werk steht unter der Lizenz Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 4.0 International.",
"url": "https://jfml.org/article/view/6",
"attachments": [],
"tags": [],
"notes": [
{
"note": "<h2>SeriesInformation</h2>\nJournal für Medienlinguistik, Bd. 1 Nr. 1 (2018)"
}
],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "{\n \"id\": \"https://doi.org/10.17885/heiup.jts.2018.1-2.23812\",\n \"doi\": \"10.17885/heiup.jts.2018.1-2.23812\",\n \"url\": \"https://heiup.uni-heidelberg.de/journals/index.php/transcultural/article/view/23812\",\n \"types\": {\n \"resourceTypeGeneral\": \"Text\",\n \"resourceType\": \"Article\",\n \"schemaOrg\": \"ScholarlyArticle\",\n \"citeproc\": \"article-journal\",\n \"bibtex\": \"article\",\n \"ris\": \"RPRT\"\n },\n \"creators\": [\n {\n \"nameType\": \"Personal\",\n \"name\": \"Gadkar-Wilcox, Wynn\",\n \"givenName\": \"Wynn\",\n \"familyName\": \"Gadkar-Wilcox\"\n }\n ],\n \"titles\": [\n {\n \"title\": \"Universality, Modernity and Cultural Borrowing Among Vietnamese Intellectuals, 1877–1919\"\n }\n ],\n \"publisher\": \"The Journal of Transcultural Studies\",\n \"container\": {\n \"type\": \"Series\",\n \"title\": \"The Journal of Transcultural Studies\",\n \"firstPage\": \"No 1\",\n \"lastPage\": \"2 (2018)\"\n },\n \"subjects\": [\n\n ],\n \"contributors\": [\n\n ],\n \"dates\": [\n {\n \"date\": \"2018-07-16\",\n \"dateType\": \"Submitted\"\n },\n {\n \"date\": \"2018-09-27\",\n \"dateType\": \"Accepted\"\n },\n {\n \"date\": \"2019-01-16\",\n \"dateType\": \"Updated\"\n },\n {\n \"date\": \"2018-12-20\",\n \"dateType\": \"Issued\"\n }\n ],\n \"publicationYear\": \"2018\",\n \"language\": \"en\",\n \"identifiers\": [\n {\n \"identifierType\": \"DOI\",\n \"identifier\": \"https://doi.org/10.17885/heiup.jts.2018.1-2.23812\"\n },\n {\n \"identifierType\": \"publisherId\",\n \"identifier\": \"22-2384-23812\"\n }\n ],\n \"sizes\": [\n \"33–52 Pages\"\n ],\n \"formats\": [\n\n ],\n \"rightsList\": [\n {\n \"rights\": \"This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.\",\n \"rightsUri\": \"http://creativecommons.org/licenses/by-nc/4.0\"\n }\n ],\n \"descriptions\": [\n {\n \"description\": \"After 1897, as the power of the Nguyen Monarchy was increasingly restricted by a centralizing administration in French Indochina, it sought to retain its relevance by grappling with reformist ideas, especially those associated with Xu Jiyu, Tan Sitong, and Liang Qichao. This paper examines the influence of those thinkers on the policy questions of 1877, 1904, and 1919 and proposes that even when the monarchy was defending more traditional ideas against reform, these new conceptions were fundamentally transforming the thinking of even more conservative elites.\",\n \"descriptionType\": \"Abstract\"\n },\n {\n \"description\": \"The Journal of Transcultural Studies, No 1-2 (2018)\",\n \"descriptionType\": \"SeriesInformation\"\n }\n ],\n \"geoLocations\": [\n\n ],\n \"fundingReferences\": [\n\n ],\n \"relatedIdentifiers\": [\n\n ],\n \"schemaVersion\": \"http://datacite.org/schema/kernel-4\",\n \"providerId\": \"gesis\",\n \"clientId\": \"gesis.ubhd\",\n \"agency\": \"DataCite\",\n \"state\": \"findable\"\n}",
"items": [
{
"itemType": "journalArticle",
"title": "Universality, Modernity and Cultural Borrowing Among Vietnamese Intellectuals, 1877–1919",
"creators": [
{
"lastName": "Gadkar-Wilcox",
"firstName": "Wynn",
"creatorType": "author"
}
],
"date": "2018-12-20",
"DOI": "10.17885/heiup.jts.2018.1-2.23812",
"abstractNote": "After 1897, as the power of the Nguyen Monarchy was increasingly restricted by a centralizing administration in French Indochina, it sought to retain its relevance by grappling with reformist ideas, especially those associated with Xu Jiyu, Tan Sitong, and Liang Qichao. This paper examines the influence of those thinkers on the policy questions of 1877, 1904, and 1919 and proposes that even when the monarchy was defending more traditional ideas against reform, these new conceptions were fundamentally transforming the thinking of even more conservative elites.",
"language": "en",
"pages": "33–52 Pages",
"publicationTitle": "The Journal of Transcultural Studies",
"rights": "This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.",
"url": "https://heiup.uni-heidelberg.de/journals/index.php/transcultural/article/view/23812",
"attachments": [],
"tags": [],
"notes": [
{
"note": "<h2>SeriesInformation</h2>\nThe Journal of Transcultural Studies, No 1-2 (2018)"
}
],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "{\n \"id\": \"https://doi.org/10.7916/d8959hr1\",\n \"doi\": \"10.7916/D8959HR1\",\n \"url\": \"https://tremorjournal.org/index.php/tremor/article/view/413\",\n \"types\": {\n \"ris\": \"RPRT\",\n \"bibtex\": \"article\",\n \"citeproc\": \"article-journal\",\n \"schemaOrg\": \"ScholarlyArticle\",\n \"resourceType\": \"Article\",\n \"resourceTypeGeneral\": \"Text\"\n },\n \"creators\": [\n {\n \"name\": \"Hogg, Elliot\",\n \"nameType\": \"Personal\",\n \"givenName\": \"Elliot\",\n \"familyName\": \"Hogg\",\n \"affiliation\": []\n },\n {\n \"name\": \"Tagliati, Michele\",\n \"nameType\": \"Personal\",\n \"givenName\": \"Michele\",\n \"familyName\": \"Tagliati\",\n \"affiliation\": []\n }\n ],\n \"titles\": [\n {\n \"title\": \"Overuse Cervical Dystonia: A Case Report and Literature Review\"\n }\n ],\n \"publisher\": \"Tremor and Other Hyperkinetic Movements\",\n \"container\": {\n \"type\": \"Series\",\n \"title\": \"Tremor and Other Hyperkinetic Movements\",\n \"firstPage\": \"Tremor and Other Hyperkinetic Movements\"\n },\n \"contributors\": [],\n \"dates\": [\n {\n \"date\": \"2016-06-28\",\n \"dateType\": \"Submitted\"\n },\n {\n \"date\": \"2016-08-22\",\n \"dateType\": \"Accepted\"\n },\n {\n \"date\": \"2019-02-06\",\n \"dateType\": \"Updated\"\n },\n {\n \"date\": \"2016-09-14\",\n \"dateType\": \"Issued\"\n }\n ],\n \"publicationYear\": 2016,\n \"language\": \"en\",\n \"identifiers\": [\n {\n \"identifier\": \"https://doi.org/10.7916/d8959hr1\",\n \"identifierType\": \"DOI\"\n },\n {\n \"identifier\": \"1-2-413\",\n \"identifierType\": \"publisherId\"\n }\n ],\n \"descriptions\": [\n {\n \"description\": \"Background: Overuse or task-specific dystonia has been described in a number of professions characterized by repetitive actions, typically affecting the upper extremities. Cervical dystonia (CD), however, has rarely been associated with overuse. Case Report: We present a case report of typical CD that developed in the context of chronic repetitive movements associated with the patient’s professional occupation as an office manager who spent many hours per day holding a phone to his ear. Discussion: Overuse CD should be suspected when typical symptoms and signs of CD develop in the context of chronic repetitive use or overuse of cervical muscles, especially where exacerbating tasks involve asymmetric postures.\",\n \"descriptionType\": \"Abstract\"\n },\n {\n \"description\": \"Tremor and Other Hyperkinetic Movements, Tremor and Other Hyperkinetic Movements\",\n \"descriptionType\": \"SeriesInformation\"\n }\n ],\n \"providerId\": \"cul\",\n \"clientId\": \"cul.columbia\",\n \"agency\": \"DataCite\",\n \"state\": \"findable\"\n}",
"items": [
{
"itemType": "journalArticle",
"title": "Overuse Cervical Dystonia: A Case Report and Literature Review",
"creators": [
{
"lastName": "Hogg",
"firstName": "Elliot",
"creatorType": "author"
},
{
"lastName": "Tagliati",
"firstName": "Michele",
"creatorType": "author"
}
],
"date": "2016-09-14",
"DOI": "10.7916/D8959HR1",
"abstractNote": "Background: Overuse or task-specific dystonia has been described in a number of professions characterized by repetitive actions, typically affecting the upper extremities. Cervical dystonia (CD), however, has rarely been associated with overuse. Case Report: We present a case report of typical CD that developed in the context of chronic repetitive movements associated with the patient’s professional occupation as an office manager who spent many hours per day holding a phone to his ear. Discussion: Overuse CD should be suspected when typical symptoms and signs of CD develop in the context of chronic repetitive use or overuse of cervical muscles, especially where exacerbating tasks involve asymmetric postures.",
"language": "en",
"pages": "Tremor and Other Hyperkinetic Movements",
"publicationTitle": "Tremor and Other Hyperkinetic Movements",
"url": "https://tremorjournal.org/index.php/tremor/article/view/413",
"attachments": [],
"tags": [],
"notes": [
{
"note": "<h2>SeriesInformation</h2>\nTremor and Other Hyperkinetic Movements, Tremor and Other Hyperkinetic Movements"
}
],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Avram Lyon^https?://(www\.)?elibrary\.ru//*
***** BEGIN LICENSE BLOCK *****
eLibrary.ru Translator
Copyright © 2010-2011 Avram Lyon, ajlyon@gmail.com
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.match(/\/item.asp/)) {
return getDocType(doc);
}
else if (url.match(/\/(query_results|contents|org_items|itembox_items)\.asp/)) {
return "multiple";
}
return false;
}
function doWeb(doc, url) {
var articles = [];
if (detectWeb(doc, url) == "multiple") {
var results = ZU.xpath(doc, '//table[@id="restab"]/tbody/tr[starts-with(@id, "arw")]/td[2]');
// Zotero.debug('results.length: ' + results.length);
var items = {};
for (let i = 0; i < results.length; i++) {
// Zotero.debug('result [' + i + '] text: ' + results[i].textContent);
var title = ZU.xpathText(results[i], './a');
var uri = ZU.xpathText(results[i], ' ./a/@href');
if (!title || !uri) continue;
items[uri] = fixCasing(title);
}
Zotero.selectItems(items, function (items) {
if (!items) {
return;
}
for (let i in items) {
articles.push(i);
}
Zotero.Utilities.processDocuments(articles, scrape);
});
}
else {
scrape(doc, url);
}
}
function fixCasing(string) {
if (string && string == string.toUpperCase()) {
return ZU.capitalizeTitle(string, true);
}
else return string;
}
function getDocType(doc) {
var docType = ZU.xpathText(doc, '//tr/td/text()[contains(., "Тип:")]/following-sibling::*[1]');
var itemType;
switch (docType) {
case "обзорная статья":
case "статья в журнале - научная статья":
case "научная статья":
case "статья в журнале":
case "статья в открытом архиве":
itemType = "journalArticle";
break;
case "статья в сборнике трудов конференции":
itemType = "conferencePaper";
break;
case "учебное пособие":
case "монография":
itemType = "book";
break;
case "публикация в сборнике трудов конференции":
itemType = "conferencePaper";
break;
default:
Zotero.debug("Unknown type: " + docType + ". Using 'journalArticle'");
itemType = "journalArticle";
break;
}
return itemType;
}
function scrape(doc, url) {
var item = new Zotero.Item();
item.itemType = getDocType(doc);
item.title = fixCasing(doc.title);
item.url = url;
var rightPart = doc.getElementById("leftcol").nextSibling;
var centralColumn = ZU.xpath(rightPart, './table/tbody/tr[2]/td[@align="left"]');
var datablock = ZU.xpath(centralColumn, './div[1]');
var authors = ZU.xpath(datablock, './/table[1]//b');
// Zotero.debug('authors.length: ' + authors.length);
for (let i = 0; i < authors.length; i++) {
var dirty = authors[i].textContent;
// Zotero.debug('author[' + i + '] text: ' + dirty);
/* Common author field formats are:
(1) "LAST FIRST PATRONIMIC"
(2) "LAST F. P." || "LAST F.P." || "LAST F.P" || "LAST F."
In all these cases, we put comma after LAST for `ZU.cleanAuthor()` to work.
Other formats are rare, but possible, e.g. "ВАН ДЕ КЕРЧОВЕ Р." == "Van de Kerchove R.".
They go to single-field mode (assuming they got no comma). */
var nameFormat1RE = new ZU.XRegExp("^\\p{Letter}+\\s\\p{Letter}+\\s\\p{Letter}+$");
var nameFormat2RE = new ZU.XRegExp("^\\p{Letter}+\\s\\p{Letter}\\.(\\s?\\p{Letter}\\.?)?$");
var isFormat1 = ZU.XRegExp.test(dirty, nameFormat1RE);
var isFormat2 = ZU.XRegExp.test(dirty, nameFormat2RE);
if (isFormat1 || isFormat2) {
// add comma before the first space
dirty = dirty.replace(/^([^\s]*)(\s)/, '$1, ');
}
var cleaned = ZU.cleanAuthor(dirty, "author", true);
/* Now `cleaned.firstName` is:
(1) "FIRST PATRONIMIC"
(2) "F. P." || "F."
The `fixCasing()` makes 2nd letter lowercase sometimes,
for example, "S. V." -> "S. v.", but "S. K." -> "S. K.".
Thus, we can only apply it to Format1 . */
if (isFormat1) {
// "FIRST PATRONIMIC" -> "First Patronimic"
cleaned.firstName = fixCasing(cleaned.firstName);
}
if (cleaned.firstName === undefined) {
// Unable to parse. Restore punctuation.
cleaned.fieldMode = true;
cleaned.lastName = dirty;
}
cleaned.lastName = fixCasing(cleaned.lastName, true);
// Skip entries with an @ sign-- email addresses slip in otherwise
if (!cleaned.lastName.includes("@")) item.creators.push(cleaned);
}
var mapping = {
Издательство: "publisher",
"Дата депонирования": "date",
"Год издания": "date",
Год: "date",
Том: "volume",
Номер: "issue",
ISSN: "ISSN",
"Число страниц": "pages", // e.g. "83"
Язык: "language",
"Место издания": "place"
};
for (let key in mapping) {
var t = ZU.xpathText(datablock, './/tr/td/text()[contains(., "' + key + ':")]/following-sibling::*[1]');
if (t) {
item[mapping[key]] = t;
}
}
var pages = ZU.xpathText(datablock, '//tr/td/div/text()[contains(., "Страницы")]/following-sibling::*[1]');
if (pages) item.pages = pages;
/*
// Times-cited in Russian-Science-Citation-Index.
// This value is hardly useful for most users, would just clutter "extra" field.
// Keeping this code just-in-case.
var rsci = ZU.xpathText(doc, '//tr/td/text()[contains(., "Цитирований в РИНЦ")]/following-sibling::*[2]');
Zotero.debug("Russian Science Citation Index: " + rsci);
if (rsci) item.extra = "Цитируемость в РИНЦ: " + rsci;
*/
var journalBlock = ZU.xpath(datablock, './table/tbody[tr[1]/td/font[contains(text(), "ЖУРНАЛ:")]]/tr[2]/td[2]');
if (!item.publicationTitle) item.publicationTitle = ZU.xpathText(journalBlock, ".//a[1]");
item.publicationTitle = fixCasing(item.publicationTitle);
var tags = ZU.xpath(datablock, './table[tbody/tr/td/font[contains(text(), "КЛЮЧЕВЫЕ СЛОВА:")]]//tr[2]/td/a');
for (let j = 0; j < tags.length; j++) {
item.tags.push(fixCasing(tags[j].textContent));
}
item.abstractNote = ZU.xpathText(datablock, './table/tbody/tr[td/font[text() = "АННОТАЦИЯ:"]]/following-sibling::*[1]');
// Language to RFC-4646 code
switch (item.language) {
case "русский":
item.language = "ru";
break;
case "английский":
item.language = "en";
break;
default:
Zotero.debug("Unknown language: " + item.language + " - keeping as-is.");
break;
}
item.DOI = ZU.xpathText(doc, '/html/head/meta[@name="doi"]/@content');
/* var pdf = false;
// Now see if we have a free PDF to download
var pdfImage = doc.evaluate('//a/img[@src="/images/pdf_green.gif"]', doc, null,XPathResult.ANY_TYPE, null).iterateNext();
if (pdfImage) {
// A green PDF is a free one. We need to construct the POST request
var postData = [], postField;
var postNode = doc.evaluate('//form[@name="results"]/input', doc, null,XPathResult.ANY_TYPE, null);
while ((postField = postNode.iterateNext()) !== null) {
postData.push(postField.name + "=" +postField.value);
}
postData = postData.join("&");
Zotero.debug(postData + postNode.iterateNext());
Zotero.Utilities.HTTP.doPost('http://elibrary.ru/full_text.asp', postData, function(text) {
var href = text.match(/http:\/\/elibrary.ru\/download\/.*?\.pdf/)[0];
pdf = {url:href, title:"eLibrary.ru полный текст", mimeType:"application/pdf"};
});
}*/
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://elibrary.ru/org_items.asp?orgsid=3326",
"items": "multiple"
},
{
"type": "web",
"url": "https://elibrary.ru/item.asp?id=9541154",
"items": [
{
"itemType": "journalArticle",
"title": "Иноязычные заимствования в художественной прозе на иврите в XX в",
"creators": [
{
"firstName": "М. В.",
"lastName": "Свет",
"creatorType": "author"
}
],
"date": "2007",
"ISSN": "0320-8095",
"issue": "1",
"language": "ru",
"libraryCatalog": "eLibrary.ru",
"pages": "40-58",
"publicationTitle": "Вестник Московского Университета. Серия 13: Востоковедение",
"url": "https://elibrary.ru/item.asp?id=9541154",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.elibrary.ru/item.asp?id=17339044",
"items": [
{
"itemType": "journalArticle",
"title": "Использование Молекулярно-Генетических Методов Установления Закономерностей Наследования Для Выявления Доноров Значимых Признаков Яблони",
"creators": [
{
"firstName": "Иван Иванович",
"lastName": "Супрун",
"creatorType": "author"
},
{
"firstName": "Елена Владимировна",
"lastName": "Ульяновская",
"creatorType": "author"
},
{
"firstName": "Евгений Николаевич",
"lastName": "Седов",
"creatorType": "author"
},
{
"firstName": "Галина Алексеевна",
"lastName": "Седышева",
"creatorType": "author"
},
{
"firstName": "Зоя Михайловна",
"lastName": "Серова",
"creatorType": "author"
}
],
"date": "2012",
"ISSN": "2219-5335",
"abstractNote": "На основе полученных новых знаний по формированию и проявлению ценных селекционных признаков выделены новые доноры и комплексные доноры значимых признаков яблони.",
"issue": "13 (1)",
"language": "ru",
"libraryCatalog": "eLibrary.ru",
"pages": "1-10",
"publicationTitle": "Плодоводство И Виноградарство Юга России",
"url": "https://www.elibrary.ru/item.asp?id=17339044",
"attachments": [],
"tags": [
{
"tag": "Иммунитет"
},
{
"tag": "Парша"
},
{
"tag": "Сорт"
},
{
"tag": "Яблоня"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.elibrary.ru/item.asp?id=21640363",
"items": [
{
"itemType": "journalArticle",
"title": "На пути к верификации C программ. Часть 3. Перевод из языка C-light в язык C-light-kernel и его формальное обоснование",
"creators": [
{
"firstName": "В. А.",
"lastName": "Непомнящий",
"creatorType": "author"
},
{
"firstName": "И. С.",
"lastName": "Ануреев",
"creatorType": "author"
},
{
"firstName": "И. Н.",
"lastName": "Михайлов",
"creatorType": "author"
},
{
"firstName": "А. В.",
"lastName": "Промский",
"creatorType": "author"
}
],
"date": "14.06.2002",
"abstractNote": "Описаны правила перевода из языка C-light в язык C-light-kernel, являющиеся основой двухуровневой схемы верификации C-программ. Для языка C-light предложена модифицированная операционная семантика. Модификация позволяет упростить как описание семантики сложных конструкций языка C-light, так и доказательство непротиворечивости аксиоматической семантики языка C-light-kernel. Определено понятие семантического расширения и проведено формальное обоснование корректности перевода. Предполагается реализовать правила перевода в системе верификации программ.",
"issue": "097",
"language": "ru",
"libraryCatalog": "eLibrary.ru",
"pages": "83",
"url": "https://www.elibrary.ru/item.asp?id=21640363",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://elibrary.ru/item.asp?id=21665052",
"items": [
{
"itemType": "journalArticle",
"title": "Информационно-поисковая полнотекстовая система \"Боярские списки XVIII века\"",
"creators": [
{
"firstName": "А. В.",
"lastName": "Захаров",
"creatorType": "author"
}
],
"date": "08.04.2005",
"abstractNote": "В полнотекстовой электронной публикации (со статусом препринта), основанной по технологии реляционных баз данных, представлены боярские списки из коллекции документов Российского государственного архива древних актов и научной библиотеки Казанского федерального университета. Публикуемые документы составлялись Разрядным приказом и Сенатом для пофамильного учета думных и московских чинов (\"царедворцев\"). Ключевая археографическая проблема проектирования базы данных состоит в максимально адекватном отображении структуры и текстовых данных источника с возможностью поиска информации по нескольким параметрам. База данных \"Боярские списки XVIII века\" доступна в сети Интернет с 2003 г. Зарегистрирована ФГУП \"Информрегистр\" в 2005 г. Сфера применения: исследования по генеалогии, биографике, археографии, история России, преподавание исторической информатики. К настоящему времени в базе данных размещены полные тексты 14 боярских и чиновных списков 1700-1721 гг.",
"issue": "0220510249",
"language": "ru",
"libraryCatalog": "eLibrary.ru",
"url": "https://elibrary.ru/item.asp?id=21665052",
"attachments": [],
"tags": [
{
"tag": "Археография"
},
{
"tag": "Боярские Списки"
},
{
"tag": "Информационная Система"
},
{
"tag": "Источниковедение"
},
{
"tag": "Московские Чины"
},
{
"tag": "Петр I"
},
{
"tag": "Полнотекстовая База Данных"
},
{
"tag": "Разрядный Приказ"
},
{
"tag": "Царедворцы"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://elibrary.ru/item.asp?id=20028198",
"items": [
{
"itemType": "book",
"title": "Аппарат издания и правила оформления",
"creators": [
{
"firstName": "Людмила Павловна",
"lastName": "Стычишина",
"creatorType": "author"
},
{
"firstName": "А. В.",
"lastName": "Хохлов",
"creatorType": "author"
}
],
"language": "ru",
"libraryCatalog": "eLibrary.ru",
"publisher": "Изд-во Политехнического университета",
"url": "https://elibrary.ru/item.asp?id=20028198",
"attachments": [],
"tags": [
{
"tag": "Аппарат Издания"
},
{
"tag": "Издательское Дело"
},
{
"tag": "Культура. Наука. Просвещение"
},
{
"tag": "Оформление Изданий"
},
{
"tag": "Оформление Книги"
},
{
"tag": "Печать"
},
{
"tag": "Подготовка Рукописи И Графических Материалов К Изданию"
},
{
"tag": "Редакционно-Издательский Процесс"
},
{
"tag": "Российская Федерация"
},
{
"tag": "Теория И Практика Издательского Дела"
},
{
"tag": "Техническое Оформление"
},
{
"tag": "Учебное Пособие Для Высшей Школы"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://elibrary.ru/item.asp?id=38164350",
"items": [
{
"itemType": "journalArticle",
"title": "Графики негладких контактных отображений на группах карно с сублоренцевой структурой",
"creators": [
{
"firstName": "М. Б.",
"lastName": "Карманова",
"creatorType": "author"
}
],
"date": "2019",
"DOI": "10.31857/S0869-56524863275-279",
"ISSN": "0869-5652",
"abstractNote": "Для классов графиков -отображений нильпотентных градуированных групп доказана формула площади на сублоренцевых структурах произвольной глубины с многомерным временем.",
"issue": "3",
"language": "ru",
"libraryCatalog": "eLibrary.ru",
"pages": "275-279",
"publicationTitle": "Доклады Академии Наук",
"url": "https://elibrary.ru/item.asp?id=38164350",
"volume": "486",
"attachments": [],
"tags": [
{
"tag": "Contact Mapping"
},
{
"tag": "Graph-Mapping"
},
{
"tag": "Intrinsic Basis"
},
{
"tag": "Multidimensional Time"
},
{
"tag": "Nilpotent Graded Group"
},
{
"tag": "Sub-Lorentzian Structure"
},
{
"tag": "Surface Area"
},
{
"tag": "Внутренний Базис"
},
{
"tag": "Контактное Отображение"
},
{
"tag": "Многомерное Время"
},
{
"tag": "Нильпотентная Градуированная Группа"
},
{
"tag": "Отображение-График"
},
{
"tag": "Площадь Поверхности"
},
{
"tag": "Сублоренцева Структура"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://elibrary.ru/item.asp?id=30694319",
"items": [
{
"itemType": "conferencePaper",
"title": "Intellectual Differentiation in the Structure of Students' Civil Identity",
"creators": [
{
"firstName": "M. K.",
"lastName": "Akimova",
"creatorType": "author"
},
{
"firstName": "E. I.",
"lastName": "Gorbacheva",
"creatorType": "author"
},
{
"firstName": "S. V.",
"lastName": "Persiyantseva",
"creatorType": "author"
},
{
"firstName": "S. V.",
"lastName": "Yaroshevskaya",
"creatorType": "author"
}
],
"date": "2017",
"DOI": "10.15405/epsbs.2017.12.1",
"language": "en",
"libraryCatalog": "eLibrary.ru",
"pages": "1-7",
"url": "https://elibrary.ru/item.asp?id=30694319",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.elibrary.ru/item.asp?id=18310800",
"items": [
{
"itemType": "journalArticle",
"title": "Обзор И Инвентаризация Археологических Раскопок В Долине Каракол (парк Уч-Энмек). Доклад Бельгийско-Российской Экспедиции В Алтайские Горы (2007-2008)",
"creators": [
{
"firstName": "Й.",
"lastName": "Боургеоис",
"creatorType": "author"
},
{
"firstName": "Щ.",
"lastName": "Гхеыле",
"creatorType": "author"
},
{
"firstName": "Р.",
"lastName": "Гооссенс",
"creatorType": "author"
},
{
"lastName": "Де Щулф А.",
"creatorType": "author"
},
{
"firstName": "Е.",
"lastName": "Дворников",
"creatorType": "author"
},
{
"firstName": "А. В.",
"lastName": "Ебел",
"creatorType": "author"
},
{
"lastName": "Ван Хооф Л.",
"creatorType": "author"
},
{
"firstName": "С.",
"lastName": "Лоуте",
"creatorType": "author"
},
{
"lastName": "Де Лангхе К.",
"creatorType": "author"
},
{
"firstName": "А.",
"lastName": "Малмендиер",
"creatorType": "author"
},
{
"lastName": "Ван Де Керчове Р.",
"creatorType": "author"
},
{
"firstName": "Р.",
"lastName": "Цаппелле",
"creatorType": "author"
},
{
"lastName": "Те Киефте Д.",
"creatorType": "author"
}
],
"date": "2009",
"abstractNote": "О результатах совместной бельгийско-российской археологической экспедиции в Парке Уч-Энмек (Горный Алтай) (2007-2008), занимавшейся изучением могил скифской культуры.",
"issue": "1 (4)",
"language": "ru",
"libraryCatalog": "eLibrary.ru",
"pages": "10-20",
"publicationTitle": "Мир Евразии",
"url": "https://www.elibrary.ru/item.asp?id=18310800",
"attachments": [],
"tags": [
{
"tag": "Бельгийско-Русская Экспедиция"
},
{
"tag": "Каракол"
},
{
"tag": "Парк Уч-Энмек"
},
{
"tag": "Скифская Культура"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.elibrary.ru/item.asp?id=22208210",
"items": [
{
"itemType": "journalArticle",
"title": "Biological and cognitive correlates of murder and attempted murder in the italian regions",
"creators": [
{
"firstName": "D. I.",
"lastName": "Templer",
"creatorType": "author"
}
],
"date": "2013",
"ISSN": "0025-2344",
"issue": "1",
"language": "en",
"libraryCatalog": "eLibrary.ru",
"pages": "26-48",
"publicationTitle": "Mankind Quarterly",
"url": "https://www.elibrary.ru/item.asp?id=22208210",
"volume": "54",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://elibrary.ru/item.asp?id=35209757",
"items": [
{
"itemType": "journalArticle",
"title": "Факторы Патогенности Недифтерийных Коринебактерий, Выделенных От Больных С Патологией Респираторного Тракта",
"creators": [
{
"firstName": "А. А.",
"lastName": "Алиева",
"creatorType": "author"
},
{
"firstName": "Галина Георгиевна",
"lastName": "Харсеева",
"creatorType": "author"
},
{
"firstName": "Э. О.",
"lastName": "Мангутов",
"creatorType": "author"
},
{
"firstName": "С. Н.",
"lastName": "Головин",
"creatorType": "author"
}
],
"date": "2018",
"DOI": "10.18821/0869-2084-2018-63-6-375-378",
"ISSN": "0869-2084, 2412-1320",
"abstractNote": "Недифтерийные коринебактерии штаммов C. pseudodiphtheriticum, несмотря на отсутствие способности продуцировать токсин, могут быть связаны с развитием воспалительных заболеваний респираторного и урогенитального тракта, кожи, гнойно-септических процессов различной локализации и др. Это свидетельствует о наличии у них факторов патогенности, помимо токсина, которые могут обусловливать адгезивную и инвазивную активность. Цель исследования - характеристика факторов патогенности (адгезивности, инвазивности) недифтерийных коринебактерий, выделенных от больных с патологией респираторного тракта. Исследованы штаммы недифтерийных коринебактерий (n = 38), выделенные из верхних дыхательных путей от больных с хроническим тонзиллитом (C. pseudodiphtheriticum, n = 9 ), ангинами (C. pseudodiphtheriticum, n = 14), практически здоровых обследованных (C. Pseudodiphtheriticum, n = 15). Способность к адгезии и инвазии коринебактерий исследовали на культуре клеток карциномы фарингеального эпителия Hep-2...\n\nНедифтерийные коринебактерии штаммов C. pseudodiphtheriticum, несмотря на отсутствие способности продуцировать токсин, могут быть связаны с развитием воспалительных заболеваний респираторного и урогенитального тракта, кожи, гнойно-септических процессов различной локализации и др. Это свидетельствует о наличии у них факторов патогенности, помимо токсина, которые могут обусловливать адгезивную и инвазивную активность. Цель исследования - характеристика факторов патогенности (адгезивности, инвазивности) недифтерийных коринебактерий, выделенных от больных с патологией респираторного тракта. Исследованы штаммы недифтерийных коринебактерий (n = 38), выделенные из верхних дыхательных путей от больных с хроническим тонзиллитом (C. pseudodiphtheriticum, n = 9 ), ангинами (C. pseudodiphtheriticum, n = 14), практически здоровых обследованных (C. Pseudodiphtheriticum, n = 15). Способность к адгезии и инвазии коринебактерий исследовали на культуре клеток карциномы фарингеального эпителия Hep-2. Количество коринебактерий, адгезированных и инвазированных на клетках Нер-2, определяли путём высева смыва на 20%-ный сывороточный агар с последующим подсчётом среднего количества колониеобразующих единиц (КОЕ) в 1 мл. Электронно-микроскопическое исследование адгезии и инвазии коринебактерий на культуре клеток Нер-2 проводили методом трансмиссионной электронной микроскопии. У выделенных от практически здоровых лиц штаммов C. pseudodiphtheriticum адгезивность была ниже (р ≤ 0,05), чем у всех исследованных штаммов недифтерийных коринебактерий, выделенных от больных с патологией респираторного тракта. Наиболее выраженные адгезивные свойства (238,3 ± 6,5 КОЕ/мл) обнаружены у штаммов C. pseudodiphtheriticum, выделенных от больных ангинами, по сравнению с таковыми, выделенными от больных хроническим тонзиллитом. Адгезивность и инвазивность у всех исследованных штаммов имели положительную коррелятивную связь. При электронно-микроскопическом исследовании видны коринебактерии, как адгезированные на поверхности клеток Нер-2 и накопившие контрастное вещество, так и инвазированные, электронно-прозрачные. Недифтерийные коринебактерии штаммов С. pseudodiphtheriticum, выделенных от больных с патологией респираторного тракта (ангина, хронический тонзиллит), обладали более высокой способностью к адгезии и инвазии по сравнению со штаммами С. pseudodiphtheriticum, изолированными от практически здоровых лиц. Выраженная способность к адгезии и инвазии, рассматриваемым как факторы патогенности С.pseudodiphtheriticum, позволяет им реализовывать свой патогенный потенциал, защищая от действия иммунной системы хозяина и антибактериальных препаратов.\n\nfunction show_abstract() {\n $('#abstract1').hide();\n $('#abstract2').show();\n $('#abstract_expand').hide();\n}\n\n▼Показать полностью",
"issue": "6",
"language": "ru",
"libraryCatalog": "eLibrary.ru",
"pages": "375-378",
"publicationTitle": "Клиническая Лабораторная Диагностика",
"url": "https://elibrary.ru/item.asp?id=35209757",
"volume": "63",
"attachments": [],
"tags": [
{
"tag": "Адгезия"
},
{
"tag": "Инвазия"
},
{
"tag": "Факторы Патогенности"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Martijn Staal^https?://www\.nrc\.nl/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2023 Martijn Staal
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/nieuws/')) {
return "newspaperArticle";
}
else if ((url.endsWith(".nl/") || url.endsWith(".nl") || url.includes("/index/") || url.includes("/search/")) && getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll("a.nmt-item__link");
var isSearchPage = false;
if (rows.length == 0) {
// We are probably not in an index page, but in a search results page.
rows = doc.querySelectorAll("div.search-results__item");
isSearchPage = true;
}
for (let row of rows) {
var href;
var title;
if (isSearchPage) {
href = row.getAttribute("data-article-url");
title = row.getAttribute("data-headline");
}
else {
href = row.href;
if (row.textContent.includes(">")) {
title = ZU.trimInternal(row.textContent.split(">")[1]);
}
else {
title = ZU.trimInternal(row.textContent);
}
}
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
async function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
let items = await Zotero.selectItems(getSearchResults(doc, false));
if (!items) return;
for (let url of Object.keys(items)) {
await scrape(await requestDocument(url));
}
}
else {
await scrape(doc, url);
}
}
async function scrape(doc, url = doc.location.href) {
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
item.language = "nl-NL";
var authors = Array.from(doc.querySelectorAll("a[rel='author']")).map(a => a.textContent);
item.creators = authors.map(a => ZU.cleanAuthor(a, 'author', false));
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.itemType = "newspaperArticle";
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.nrc.nl/nieuws/2023/06/15/lot-van-natuurherstelwet-timmermans-blijft-erg-onzeker-na-belangrijke-stemming-a4167267",
"detectedItemType": "newspaperArticle",
"items": [
{
"itemType": "newspaperArticle",
"title": "Lot van natuurherstelwet Timmermans blijft erg onzeker na belangrijke stemming",
"creators": [
{
"firstName": "Clara van de",
"lastName": "Wiel",
"creatorType": "author"
}
],
"date": "2023-06-15",
"abstractNote": "Natuurherstel: Een aanzienlijke groep in het Europees Parlement is bereid om natuurplannen van Frans Timmermans de nek om te draaien, zo bleek donderdag.",
"language": "nl-NL",
"libraryCatalog": "www.nrc.nl",
"publicationTitle": "NRC",
"rights": "Copyright Mediahuis NRC BV",
"url": "https://www.nrc.nl/nieuws/2023/06/15/lot-van-natuurherstelwet-timmermans-blijft-erg-onzeker-na-belangrijke-stemming-a4167267",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.nrc.nl/nieuws/1987/06/13/reagan-vraagt-russen-de-muur-af-te-breken-kb_000035184-a3528803?t=1686835084",
"detectedItemType": "newspaperArticle",
"items": [
{
"itemType": "newspaperArticle",
"title": "Reagan vraagt Russen de Muur af te breken",
"creators": [],
"date": "1987-06-13",
"abstractNote": "Door onze correspondent ROB MEINES BERLIJN, 13 juni - In zijn toespraak aan de Berlijnse Muur bij de Brandenburger Poort heeft president Ronald Reagan gisteren Sovjet-leider…",
"language": "nl-NL",
"libraryCatalog": "www.nrc.nl",
"publicationTitle": "NRC",
"rights": "Copyright Mediahuis NRC BV",
"url": "https://www.nrc.nl/nieuws/1987/06/13/reagan-vraagt-russen-de-muur-af-te-breken-kb_000035184-a3528803",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.nrc.nl/nieuws/2022/12/03/wikipedia-wordt-onbetrouwbaar-alweer-a4150299",
"detectedItemType": "newspaperArticle",
"items": [
{
"itemType": "newspaperArticle",
"title": "Column | Wikipedia wordt onbetrouwbaar. Alweer",
"creators": [
{
"firstName": "Maxim",
"lastName": "Februari",
"creatorType": "author"
}
],
"date": "2022-12-03",
"abstractNote": "Column:Maxim Februari",
"language": "nl-NL",
"libraryCatalog": "www.nrc.nl",
"publicationTitle": "NRC",
"rights": "Copyright Mediahuis NRC BV",
"url": "https://www.nrc.nl/nieuws/2022/12/03/wikipedia-wordt-onbetrouwbaar-alweer-a4150299",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.nrc.nl/index/economie/",
"detectedItemType": "multiple",
"items": "multiple"
}
]
/** END TEST CASES **/
100Sebastian Karchertxt/*
***** BEGIN LICENSE BLOCK *****
MEDLINE/nbib import translator
(Based on http://www.nlm.nih.gov/bsd/mms/medlineelements.html)
Copyright © 2014-15 Sebastian Karcher
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectImport() {
var line;
var i = 0;
while ((line = Zotero.read()) !== false) {
line = line.replace(/^\s+/, "");
if (line != "") {
// Actual MEDLINE format starts with PMID
// ERIC .nbib starts with "OWN - ERIC"
if (line.substr(0, 6).match(/^PMID( {1, 2})?- /) || line.includes("OWN - ERIC")) {
return true;
}
else if (i++ > 3) {
return false;
}
}
}
return false;
}
var fieldMap = {
TI: "title",
VI: "volume",
IP: "issue",
PL: "place",
PB: "publisher", // not in the specs, but is used
BTI: "bookTitle",
JT: "publicationTitle",
TA: "journalAbbreviation",
PG: "pages",
CI: "rights",
ISBN: "ISBN",
ISSN: "ISSN",
LA: "language",
EN: "edition",
AB: "abstractNote"
};
// Only the most basic types. Most official MEDLINE types make little sense as item types
var inputTypeMap = {
Book: "book",
Books: "book", // ERIC
"Book Chapter": "bookSection", // can't find in specs, but is used.
"Case Reports": "journalArticle", // Case reports in medicine are basically always in journals
"Case Report": "journalArticle",
"Journal Article": "journalArticle",
"Newspaper Article": "newspaperArticle",
"Video-Audio Media": "videoRecording",
"Technical Report": "report",
"Legal Case": "case",
Preprint: "preprint",
Legislation: "statute"
};
function processTag(item, tag, value) {
value = Zotero.Utilities.trim(value);
var type;
if (fieldMap[tag]) {
item[fieldMap[tag]] = value;
}
else if (tag == "PT") {
if (inputTypeMap[value]) { // first check inputTypeMap
item.itemType = inputTypeMap[value];
}
else if (value.includes("Dissertation")) {
item.itemType = "thesis";
}
else if (value.includes("Report")) {
// ERIC nbib has multiple PT tags; Reports can also be other item types
// so we're only using this as a fallback
item.itemTypeBackup = "report";
}
}
else if (tag == "FAU" || tag == "FED") {
if (tag == "FAU") {
type = "author";
}
else if (tag == "FED") {
type = "editor";
}
item.creators.push(Zotero.Utilities.cleanAuthor(value, type, value.includes(",")));
}
else if (tag == "AU" || tag == "ED") { // save normal author tags as fallback
if (tag == "AU") {
type = "author";
}
else if (tag == "ED") {
type = "editor";
}
value = value.replace(/\s([A-Z]+)$/, ", $1");
item.creatorsBackup.push(Zotero.Utilities.cleanAuthor(value, type, value.includes(",")));
}
else if (tag == "OID" && /E[JD]\d+/.test(value)) {
item.extra = "ERIC Number: " + value;
}
else if (tag == "PMID") {
item.extra = "PMID: " + value;
}
else if (tag == "PMC") {
item.extra += " \nPMCID: " + value;
}
else if (tag == "IS") {
if (ZU.cleanISSN(value)) {
if (!item.ISSN) {
item.ISSN = ZU.cleanISSN(value);
}
else {
item.ISSN += " " + ZU.cleanISSN(value);
}
}
else if (ZU.cleanISBN(value)) {
if (!item.ISBN) {
item.ISBN = ZU.cleanISBN(value);
}
else {
item.ISBN += " " + ZU.cleanISBN(value);
}
}
}
else if (tag == "AID") {
if (value.includes("[doi]")) item.DOI = value.replace(/\s*\[doi\]/, "");
}
else if (tag == "DP") {
item.date = value;
}
else if (tag == "SO") {
item.citation = value;
}
// Save link to attached link
else if (tag == "LID") {
// Pubmed adds all sorts of different IDs in here, so make sure these are URLs
if (value.startsWith("http")) {
item.attachments.push({ url: value, title: "Catalog Link", snapshot: false });
// If the value is tagged as a PII, we can use this as a page number if we have not previously managed to extract one
}
else if (value.includes("[pii]")) item.pagesBackup = value.replace(/\s*\[pii\]/, "");
}
else if (tag == "MH" || tag == "OT" || tag == "KW") { // KoreaMed uses KW
item.tags.push(value);
}
}
function doImport() {
var line = true;
var tag = false;
var data = false;
do { // first valid line is type
Zotero.debug("ignoring " + line);
line = Zotero.read();
} while (line !== false && !(/^[A-Z0-9]+\s*-/.test(line)));
var item = new Zotero.Item();
item.creatorsBackup = [];
tag = line.match(/^[A-Z0-9]+/)[0];
data = line.substr(line.indexOf("-") + 1);
while ((line = Zotero.read()) !== false) { // until EOF
if (!line) {
if (tag) {
processTag(item, tag, data);
// unset info
tag = data = false;
// new item
finalizeItem(item);
item = new Zotero.Item();
item.creatorsBackup = [];
}
}
else if (/^[A-Z0-9]+\s*-/.test(line)) {
// if this line is a tag, take a look at the previous line to map
// its tag
if (tag) {
processTag(item, tag, data);
}
// then fetch the tag and data from this line
tag = line.match(/^[A-Z0-9]+/)[0];
data = line.substr(line.indexOf("-") + 1).trim();
}
else if (tag) {
// otherwise, assume this is data from the previous line continued
data += " " + line.replace(/^\s+/, "");
}
}
if (tag) { // save any unprocessed tags
processTag(item, tag, data);
// and finalize with some post-processing
finalizeItem(item);
}
}
function finalizeItem(item) {
// if we didn't get full authors (included post 2002, sub in the basic authors)
if (item.creators.length == 0 && item.creatorsBackup.length > 0) {
item.creators = item.creatorsBackup;
}
delete item.creatorsBackup;
if (item.pages) {
// where page ranges are given in an abbreviated format, convert to full
// taken verbatim from NCBI Pubmed translator
var pageRangeRE = /(\d+)-(\d+)/g;
pageRangeRE.lastIndex = 0;
var range;
while (range = pageRangeRE.exec(item.pages)) { // eslint-disable-line no-cond-assign
var pageRangeStart = range[1];
var pageRangeEnd = range[2];
var diff = pageRangeStart.length - pageRangeEnd.length;
if (diff > 0) {
pageRangeEnd = pageRangeStart.substring(0, diff) + pageRangeEnd;
var newRange = pageRangeStart + "-" + pageRangeEnd;
var fullPageRange = item.pages.substring(0, range.index) // everything before current range
+ newRange // insert the new range
+ item.pages.substring(range.index + range[0].length); // everything after the old range
// adjust RE index
pageRangeRE.lastIndex += newRange.length - range[0].length;
}
}
if (fullPageRange) {
item.pages = fullPageRange;
}
// If there is not an explicitly defined page range, try and use the value extracted from the LID field
}
else if (item.pagesBackup) item.pages = item.pagesBackup;
delete item.pagesBackup;
// check for and remove duplicate ISSNs
if (item.ISSN && item.ISSN.includes(" ")) {
let ISSN = item.ISSN.split(/\s/);
// convert to Set and back
ISSN = [...new Set(ISSN)];
item.ISSN = ISSN.join(" ");
}
else if (item.ISSN) {
item.ISSN = ZU.cleanISSN(item.ISSN.replace(/E?ISSN-/, ""));
}
if (item.ISBN) {
item.ISBN = ZU.cleanISBN(item.ISBN.replace("ISBN-", ""));
}
if (item.itemType == "book") {
item.publisher = item.publicationTitle;
delete item.publicationTitle;
}
else if (item.itemType == "thesis") {
if (item.citation && /,[^,]+ University/.test(item.citation)) {
// Get the University as good as we can
item.university = item.citation.match(/,\s*([^,]+ University)/)[1];
}
item.archive = item.publicationTitle; // Typically ProQuest here
delete item.publicationTitle;
}
else if (!item.itemType) {
if (item.itemTypeBackup && (!item.extra || !item.extra.includes("ERIC Number: EJ"))) {
item.itemType = item.itemTypeBackup; // using report from above
item.institution = item.publicationTitle;
delete item.publicationTitle;
}
else {
item.itemType = "journalArticle"; // journal article is the fallback item type
}
}
delete item.citation;
delete item.itemTypeBackup;
// titles for books are mapped to bookTitle
if (item.itemType == "book") item.title = item.bookTitle;
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "import",
"input": "PMID- 000000000000\nOWN - NLM\nSTAT- In-Process\nLR - 20200715\nTI - Mickey Mouse had an \n O-some day!\nAB - Mickey Mouse had a quiet day until something happened and\n SAMD9L was caught in the end. \nFAU - Mouse, Mickey\nAU - Mouse M",
"items": [
{
"itemType": "journalArticle",
"title": "Mickey Mouse had an O-some day!",
"creators": [
{
"firstName": "Mickey",
"lastName": "Mouse",
"creatorType": "author"
}
],
"abstractNote": "Mickey Mouse had a quiet day until something happened and SAMD9L was caught in the end.",
"extra": "PMID: 000000000000",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "PMID- 8692918\nOWN - NLM\nSTAT- MEDLINE\nDA - 19960829\nDCOM- 19960829\nLR - 20131121\nIS - 0027-8424 (Print)\nIS - 0027-8424 (Linking)\nVI - 93\nIP - 14\nDP - 1996 Jul 9\nTI - The structure of bovine F1-ATPase complexed with the antibiotic inhibitor\n aurovertin B.\nPG - 6913-7\nAB - In the structure of bovine mitochondrial F1-ATPase that was previously determined\n with crystals grown in the presence of adenylyl-imidodiphosphate (AMP-PNP) and\n ADP, the three catalytic beta-subunits have different conformations and\n nucleotide occupancies. Adenylyl-imidodiphosphate is bound to one beta-subunit\n (betaTP), ADP is bound to the second (betaDP), and no nucleotide is bound to the \n third (betaE). Here we show that the uncompetitive inhibitor aurovertin B binds\n to bovine F1 at two equivalent sites in betaTP and betaE, in a cleft between the \n nucleotide binding and C-terminal domains. In betaDP, the aurovertin B pocket is \n incomplete and is inaccessible to the inhibitor. The aurovertin B bound to betaTP\n interacts with alpha-Glu399 in the adjacent alphaTP subunit, whereas the\n aurovertin B bound to betaE is too distant from alphaE to make an equivalent\n interaction. Both sites encompass betaArg-412, which was shown by mutational\n studies to be involved in binding aurovertin. Except for minor changes around the\n aurovertin pockets, the structure of bovine F1-ATPase is the same as determined\n previously. Aurovertin B appears to act by preventing closure of the catalytic\n interfaces, which is essential for a catalytic mechanism involving cyclic\n interconversion of catalytic sites.\nFAU - van Raaij, M J\nAU - van Raaij MJ\nAD - Medical Research Council Laboratory of Molecular Biology, Cambridge, United\n Kingdom.\nFAU - Abrahams, J P\nAU - Abrahams JP\nFAU - Leslie, A G\nAU - Leslie AG\nFAU - Walker, J E\nAU - Walker JE\nLA - eng\nPT - Journal Article\nPT - Research Support, Non-U.S. Gov't\nPL - UNITED STATES\nTA - Proc Natl Acad Sci U S A\nJT - Proceedings of the National Academy of Sciences of the United States of America\nJID - 7505876\nRN - 0 (Aurovertins)\nRN - 0 (Enzyme Inhibitors)\nRN - 0 (Macromolecular Substances)\nRN - 25612-73-1 (Adenylyl Imidodiphosphate)\nRN - 3KX376GY7L (Glutamic Acid)\nRN - 55350-03-3 (aurovertin B)\nRN - 94ZLA3W45F (Arginine)\nRN - EC 3.6.3.14 (Proton-Translocating ATPases)\nSB - IM\nMH - Adenylyl Imidodiphosphate/pharmacology\nMH - Animals\nMH - Arginine\nMH - Aurovertins/*chemistry/*metabolism\nMH - Binding Sites\nMH - Cattle\nMH - Crystallography, X-Ray\nMH - Enzyme Inhibitors/chemistry/metabolism\nMH - Glutamic Acid\nMH - Macromolecular Substances\nMH - Models, Molecular\nMH - Molecular Structure\nMH - Myocardium/enzymology\nMH - *Protein Structure, Secondary\nMH - Proton-Translocating ATPases/*chemistry/*metabolism\nPMC - PMC38908\nOID - NLM: PMC38908\nEDAT- 1996/07/09\nMHDA- 1996/07/09 00:01\nCRDT- 1996/07/09 00:00\nPST - ppublish\nSO - Proc Natl Acad Sci U S A. 1996 Jul 9;93(14):6913-7.\n\nPMID- 21249755\nSTAT- Publisher\nDA - 20110121\nDRDT- 20080809\nCTDT- 20080718\nPB - National Center for Biotechnology Information (US)\nDP - 2009\nTI - Peutz-Jeghers Syndrome\nBTI - Cancer Syndromes\nAB - PJS is a rare disease. (\"Peutz-Jeghers syndrome is no frequent nosological unit\".\n (1)) There are no high-quality estimates of the prevalence or incidence of PJS.\n Estimates have included 1 in 8,500 to 23,000 live births (2), 1 in 50,000 to 1 in\n 100,000 in Finland (3), and 1 in 200,000 (4). A report on the incidence of PJS is\n available at www.peutz-jeghers.com. At Mayo Clinic from 1945 to 1996 the\n incidence of PJS was 0.9 PJS patients per 100,000 patients. PJS has been reported\n in Western Europeans (5), African Americans (5), Nigerians (6), Japanese (7),\n Chinese (8, 9), Indians (10, 11), and other populations (12-15). PJS occurs\n equally in males and females (7).\nCI - Copyright (c) 2009-, Douglas L Riegert-Johnson\nFED - Riegert-Johnson, Douglas L\nED - Riegert-Johnson DL\nFED - Boardman, Lisa A\nED - Boardman LA\nFED - Hefferon, Timothy\nED - Hefferon T\nFED - Roberts, Maegan\nED - Roberts M\nFAU - Riegert-Johnson, Douglas\nAU - Riegert-Johnson D\nFAU - Gleeson, Ferga C.\nAU - Gleeson FC\nFAU - Westra, Wytske\nAU - Westra W\nFAU - Hefferon, Timothy\nAU - Hefferon T\nFAU - Wong Kee Song, Louis M.\nAU - Wong Kee Song LM\nFAU - Spurck, Lauren\nAU - Spurck L\nFAU - Boardman, Lisa A.\nAU - Boardman LA\nLA - eng\nPT - Book Chapter\nPL - Bethesda (MD)\nEDAT- 2011/01/21 06:00\nMHDA- 2011/01/21 06:00\nCDAT- 2011/01/21 06:00\nAID - NBK1826 [bookaccession]\n\n",
"items": [
{
"itemType": "journalArticle",
"title": "The structure of bovine F1-ATPase complexed with the antibiotic inhibitor aurovertin B.",
"creators": [
{
"firstName": "M. J.",
"lastName": "van Raaij",
"creatorType": "author"
},
{
"firstName": "J. P.",
"lastName": "Abrahams",
"creatorType": "author"
},
{
"firstName": "A. G.",
"lastName": "Leslie",
"creatorType": "author"
},
{
"firstName": "J. E.",
"lastName": "Walker",
"creatorType": "author"
}
],
"date": "1996 Jul 9",
"ISSN": "0027-8424",
"abstractNote": "In the structure of bovine mitochondrial F1-ATPase that was previously determined with crystals grown in the presence of adenylyl-imidodiphosphate (AMP-PNP) and ADP, the three catalytic beta-subunits have different conformations and nucleotide occupancies. Adenylyl-imidodiphosphate is bound to one beta-subunit (betaTP), ADP is bound to the second (betaDP), and no nucleotide is bound to the third (betaE). Here we show that the uncompetitive inhibitor aurovertin B binds to bovine F1 at two equivalent sites in betaTP and betaE, in a cleft between the nucleotide binding and C-terminal domains. In betaDP, the aurovertin B pocket is incomplete and is inaccessible to the inhibitor. The aurovertin B bound to betaTP interacts with alpha-Glu399 in the adjacent alphaTP subunit, whereas the aurovertin B bound to betaE is too distant from alphaE to make an equivalent interaction. Both sites encompass betaArg-412, which was shown by mutational studies to be involved in binding aurovertin. Except for minor changes around the aurovertin pockets, the structure of bovine F1-ATPase is the same as determined previously. Aurovertin B appears to act by preventing closure of the catalytic interfaces, which is essential for a catalytic mechanism involving cyclic interconversion of catalytic sites.",
"extra": "PMID: 8692918 \nPMCID: PMC38908",
"issue": "14",
"journalAbbreviation": "Proc Natl Acad Sci U S A",
"language": "eng",
"pages": "6913-6917",
"publicationTitle": "Proceedings of the National Academy of Sciences of the United States of America",
"volume": "93",
"attachments": [],
"tags": [
{
"tag": "*Protein Structure, Secondary"
},
{
"tag": "Adenylyl Imidodiphosphate/pharmacology"
},
{
"tag": "Animals"
},
{
"tag": "Arginine"
},
{
"tag": "Aurovertins/*chemistry/*metabolism"
},
{
"tag": "Binding Sites"
},
{
"tag": "Cattle"
},
{
"tag": "Crystallography, X-Ray"
},
{
"tag": "Enzyme Inhibitors/chemistry/metabolism"
},
{
"tag": "Glutamic Acid"
},
{
"tag": "Macromolecular Substances"
},
{
"tag": "Models, Molecular"
},
{
"tag": "Molecular Structure"
},
{
"tag": "Myocardium/enzymology"
},
{
"tag": "Proton-Translocating ATPases/*chemistry/*metabolism"
}
],
"notes": [],
"seeAlso": []
},
{
"itemType": "bookSection",
"title": "Peutz-Jeghers Syndrome",
"creators": [
{
"firstName": "Douglas L.",
"lastName": "Riegert-Johnson",
"creatorType": "editor"
},
{
"firstName": "Lisa A.",
"lastName": "Boardman",
"creatorType": "editor"
},
{
"firstName": "Timothy",
"lastName": "Hefferon",
"creatorType": "editor"
},
{
"firstName": "Maegan",
"lastName": "Roberts",
"creatorType": "editor"
},
{
"firstName": "Douglas",
"lastName": "Riegert-Johnson",
"creatorType": "author"
},
{
"firstName": "Ferga C.",
"lastName": "Gleeson",
"creatorType": "author"
},
{
"firstName": "Wytske",
"lastName": "Westra",
"creatorType": "author"
},
{
"firstName": "Timothy",
"lastName": "Hefferon",
"creatorType": "author"
},
{
"firstName": "Louis M.",
"lastName": "Wong Kee Song",
"creatorType": "author"
},
{
"firstName": "Lauren",
"lastName": "Spurck",
"creatorType": "author"
},
{
"firstName": "Lisa A.",
"lastName": "Boardman",
"creatorType": "author"
}
],
"date": "2009",
"abstractNote": "PJS is a rare disease. (\"Peutz-Jeghers syndrome is no frequent nosological unit\". (1)) There are no high-quality estimates of the prevalence or incidence of PJS. Estimates have included 1 in 8,500 to 23,000 live births (2), 1 in 50,000 to 1 in 100,000 in Finland (3), and 1 in 200,000 (4). A report on the incidence of PJS is available at www.peutz-jeghers.com. At Mayo Clinic from 1945 to 1996 the incidence of PJS was 0.9 PJS patients per 100,000 patients. PJS has been reported in Western Europeans (5), African Americans (5), Nigerians (6), Japanese (7), Chinese (8, 9), Indians (10, 11), and other populations (12-15). PJS occurs equally in males and females (7).",
"bookTitle": "Cancer Syndromes",
"extra": "PMID: 21249755",
"language": "eng",
"place": "Bethesda (MD)",
"publisher": "National Center for Biotechnology Information (US)",
"rights": "Copyright (c) 2009-, Douglas L Riegert-Johnson",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "\nPMID- 8402898\nOWN - NLM\nSTAT- MEDLINE\nDA - 19931118\nDCOM- 19931118\nLR - 20061115\nIS - 0092-8674 (Print)\nIS - 0092-8674 (Linking)\nVI - 75\nIP - 1\nDP - 1993 Oct 8\nTI - The GTPase dynamin binds to and is activated by a subset of SH3 domains.\nPG - 25-36\nAB - Src homology 3 (SH3) domains have been implicated in mediating protein-protein\n interactions in receptor signaling processes; however, the precise role of this\n domain remains unclear. In this report, affinity purification techniques were\n used to identify the GTPase dynamin as an SH3 domain-binding protein. Selective\n binding to a subset of 15 different recombinant SH3 domains occurs through\n proline-rich sequence motifs similar to those that mediate the interaction of the\n SH3 domains of Grb2 and Abl proteins to the guanine nucleotide exchange protein, \n Sos, and to the 3BP1 protein, respectively. Dynamin GTPase activity is stimulated\n by several of the bound SH3 domains, suggesting that the function of the SH3\n module is not restricted to protein-protein interactions but may also include the\n interactive regulation of GTP-binding proteins.\nFAU - Gout, I\nAU - Gout I\nAD - Ludwig Institute for Cancer Research, London, England.\nFAU - Dhand, R\nAU - Dhand R\nFAU - Hiles, I D\nAU - Hiles ID\nFAU - Fry, M J\nAU - Fry MJ\nFAU - Panayotou, G\nAU - Panayotou G\nFAU - Das, P\nAU - Das P\nFAU - Truong, O\nAU - Truong O\nFAU - Totty, N F\nAU - Totty NF\nFAU - Hsuan, J\nAU - Hsuan J\nFAU - Booker, G W\nAU - Booker GW\nAU - et al.\nLA - eng\nPT - Comparative Study\nPT - Journal Article\nPT - Research Support, Non-U.S. Gov't\nPL - UNITED STATES\nTA - Cell\nJT - Cell\nJID - 0413066\nRN - 0 (Recombinant Fusion Proteins)\nRN - 0 (Recombinant Proteins)\nRN - EC 2.5.1.18 (Glutathione Transferase)\nRN - EC 3.6.1.- (GTP Phosphohydrolases)\nRN - EC 3.6.5.5 (Dynamins)\nSB - IM\nMH - Amino Acid Sequence\nMH - Animals\nMH - Binding Sites\nMH - Brain/*enzymology\nMH - Drosophila/genetics\nMH - Dynamins\nMH - Enzyme Activation\nMH - GTP Phosphohydrolases/isolation & purification/*metabolism\nMH - Glutathione Transferase/metabolism\nMH - Humans\nMH - Kinetics\nMH - Mice\nMH - Molecular Sequence Data\nMH - Rats\nMH - Recombinant Fusion Proteins/metabolism\nMH - Recombinant Proteins/isolation & purification/metabolism\nMH - Sequence Homology, Amino Acid\nMH - Signal Transduction\nEDAT- 1993/10/08\nMHDA- 1993/10/08 00:01\nCRDT- 1993/10/08 00:00\nAID - 0092-8674(93)90676-H [pii]\nPST - ppublish\nSO - Cell. 1993 Oct 8;75(1):25-36.",
"items": [
{
"itemType": "journalArticle",
"title": "The GTPase dynamin binds to and is activated by a subset of SH3 domains.",
"creators": [
{
"firstName": "I.",
"lastName": "Gout",
"creatorType": "author"
},
{
"firstName": "R.",
"lastName": "Dhand",
"creatorType": "author"
},
{
"firstName": "I. D.",
"lastName": "Hiles",
"creatorType": "author"
},
{
"firstName": "M. J.",
"lastName": "Fry",
"creatorType": "author"
},
{
"firstName": "G.",
"lastName": "Panayotou",
"creatorType": "author"
},
{
"firstName": "P.",
"lastName": "Das",
"creatorType": "author"
},
{
"firstName": "O.",
"lastName": "Truong",
"creatorType": "author"
},
{
"firstName": "N. F.",
"lastName": "Totty",
"creatorType": "author"
},
{
"firstName": "J.",
"lastName": "Hsuan",
"creatorType": "author"
},
{
"firstName": "G. W.",
"lastName": "Booker",
"creatorType": "author"
}
],
"date": "1993 Oct 8",
"ISSN": "0092-8674",
"abstractNote": "Src homology 3 (SH3) domains have been implicated in mediating protein-protein interactions in receptor signaling processes; however, the precise role of this domain remains unclear. In this report, affinity purification techniques were used to identify the GTPase dynamin as an SH3 domain-binding protein. Selective binding to a subset of 15 different recombinant SH3 domains occurs through proline-rich sequence motifs similar to those that mediate the interaction of the SH3 domains of Grb2 and Abl proteins to the guanine nucleotide exchange protein, Sos, and to the 3BP1 protein, respectively. Dynamin GTPase activity is stimulated by several of the bound SH3 domains, suggesting that the function of the SH3 module is not restricted to protein-protein interactions but may also include the interactive regulation of GTP-binding proteins.",
"extra": "PMID: 8402898",
"issue": "1",
"journalAbbreviation": "Cell",
"language": "eng",
"pages": "25-36",
"publicationTitle": "Cell",
"volume": "75",
"attachments": [],
"tags": [
{
"tag": "Amino Acid Sequence"
},
{
"tag": "Animals"
},
{
"tag": "Binding Sites"
},
{
"tag": "Brain/*enzymology"
},
{
"tag": "Drosophila/genetics"
},
{
"tag": "Dynamins"
},
{
"tag": "Enzyme Activation"
},
{
"tag": "GTP Phosphohydrolases/isolation & purification/*metabolism"
},
{
"tag": "Glutathione Transferase/metabolism"
},
{
"tag": "Humans"
},
{
"tag": "Kinetics"
},
{
"tag": "Mice"
},
{
"tag": "Molecular Sequence Data"
},
{
"tag": "Rats"
},
{
"tag": "Recombinant Fusion Proteins/metabolism"
},
{
"tag": "Recombinant Proteins/isolation & purification/metabolism"
},
{
"tag": "Sequence Homology, Amino Acid"
},
{
"tag": "Signal Transduction"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "PMID- 25744111\nOWN - NLM\nSTAT- MEDLINE\nDA - 20150525\nDCOM- 20150819\nIS - 1476-5616 (Electronic)\nIS - 0033-3506 (Linking)\nVI - 129\nIP - 5\nDP - 2015 May\nTI - Effectiveness of public health practices against shaken baby syndrome/abusive\n head trauma in Japan.\nPG - 475-82\nLID - 10.1016/j.puhe.2015.01.018 [doi]\nLID - S0033-3506(15)00037-2 [pii]\nAB - OBJECTIVES: Previous studies have demonstrated the effectiveness of educational\n materials on infant crying to change caregivers' knowledge and behaviours related\n to shaken baby syndrome or abusive head trauma (SBS/AHT) using selected samples\n in randomized controlled trials. This study investigated the impact of public\n health practices to prevent SBS/AHT in Japan through the use of educational\n materials. STUDY DESIGN: Cross-sectional study. METHODS: The intervention was\n comprised of two parts: (1) the screening of an educational DVD at a prenatal\n class; and (2) the distribution of a public health pamphlet at a postnatal home\n visit. Expectant parents watched a DVD (The Period of PURPLE Crying) about the\n features of infant crying and recommended behaviours (walking away if frustrated \n in the event of unsoothable crying, sharing information on crying with other\n caregivers) at a preterm parenting class held at eight months' gestation. A\n postnatal home-visit service was implemented in which a maternity nurse\n distributed a pamphlet to explain information about infant crying. Before the\n four-month health check-up, a self-administered questionnaire was distributed to \n assess exposure to these public health practices and outcome variables (i.e.\n infant crying knowledge, walk-away and information-sharing behaviours), and\n responses were collected at the four-month health check-up (n = 1316). The\n impacts of these interventions on outcome variables were analysed by comparing\n those exposed to both interventions, either intervention and neither intervention\n after adjusting for covariates. RESULTS: Crying and shaking knowledge were\n significantly higher among women exposed to the public health practices, with a\n dose-response relationship (both P < 0.001). Further, walk-away behaviour during \n periods of unsoothable crying was higher among the intervention group. However,\n sharing information about infant crying with other caregivers was less likely\n among the intervention group. CONCLUSIONS: The impact of educational materials in\n public health practice on knowledge of crying and shaking, and walk-away\n behaviour in Japan had a dose-response relationship; however, an increase in\n sharing information with other caregivers was not observed.\nCI - Copyright (c) 2015 The Royal Society for Public Health. Published by Elsevier\n Ltd. All rights reserved.\nFAU - Fujiwara, T\nAU - Fujiwara T\nAD - Department of Social Medicine, National Research Institute for Child Health and\n Development, Okura, Setagaya-ku, Tokyo, Japan. Electronic address:\n fujiwara-tk@ncchd.go.jp.\nLA - eng\nPT - Evaluation Studies\nPT - Journal Article\nPT - Research Support, Non-U.S. Gov't\nDEP - 20150303\nPL - Netherlands\nTA - Public Health\nJT - Public health\nJID - 0376507\nSB - IM\nMH - Adolescent\nMH - Adult\nMH - Caregivers/*education/psychology/statistics & numerical data\nMH - Child Abuse/*prevention & control\nMH - Craniocerebral Trauma/*prevention & control\nMH - Cross-Sectional Studies\nMH - Crying/psychology\nMH - Female\nMH - Follow-Up Studies\nMH - *Health Knowledge, Attitudes, Practice\nMH - Humans\nMH - Infant\nMH - Infant, Newborn\nMH - Japan\nMH - Male\nMH - Pamphlets\nMH - Parents/*education/psychology\nMH - Program Evaluation\nMH - *Public Health Practice\nMH - Questionnaires\nMH - Shaken Baby Syndrome/*prevention & control\nMH - Videodisc Recording\nMH - Young Adult\nOTO - NOTNLM\nOT - Abusive head trauma\nOT - Crying\nOT - Intervention\nOT - Japan\nOT - Public health\nOT - Shaken baby syndrome\nEDAT- 2015/03/07 06:00\nMHDA- 2015/08/20 06:00\nCRDT- 2015/03/07 06:00\nPHST- 2014/05/29 [received]\nPHST- 2014/11/26 [revised]\nPHST- 2015/01/20 [accepted]\nPHST- 2015/03/03 [aheadofprint]\nAID - S0033-3506(15)00037-2 [pii]\nAID - 10.1016/j.puhe.2015.01.018 [doi]\nPST - ppublish\nSO - Public Health. 2015 May;129(5):475-82. doi: 10.1016/j.puhe.2015.01.018. Epub 2015\n Mar 3.",
"items": [
{
"itemType": "journalArticle",
"title": "Effectiveness of public health practices against shaken baby syndrome/abusive head trauma in Japan.",
"creators": [
{
"firstName": "T.",
"lastName": "Fujiwara",
"creatorType": "author"
}
],
"date": "2015 May",
"DOI": "10.1016/j.puhe.2015.01.018",
"ISSN": "1476-5616 0033-3506",
"abstractNote": "OBJECTIVES: Previous studies have demonstrated the effectiveness of educational materials on infant crying to change caregivers' knowledge and behaviours related to shaken baby syndrome or abusive head trauma (SBS/AHT) using selected samples in randomized controlled trials. This study investigated the impact of public health practices to prevent SBS/AHT in Japan through the use of educational materials. STUDY DESIGN: Cross-sectional study. METHODS: The intervention was comprised of two parts: (1) the screening of an educational DVD at a prenatal class; and (2) the distribution of a public health pamphlet at a postnatal home visit. Expectant parents watched a DVD (The Period of PURPLE Crying) about the features of infant crying and recommended behaviours (walking away if frustrated in the event of unsoothable crying, sharing information on crying with other caregivers) at a preterm parenting class held at eight months' gestation. A postnatal home-visit service was implemented in which a maternity nurse distributed a pamphlet to explain information about infant crying. Before the four-month health check-up, a self-administered questionnaire was distributed to assess exposure to these public health practices and outcome variables (i.e. infant crying knowledge, walk-away and information-sharing behaviours), and responses were collected at the four-month health check-up (n = 1316). The impacts of these interventions on outcome variables were analysed by comparing those exposed to both interventions, either intervention and neither intervention after adjusting for covariates. RESULTS: Crying and shaking knowledge were significantly higher among women exposed to the public health practices, with a dose-response relationship (both P < 0.001). Further, walk-away behaviour during periods of unsoothable crying was higher among the intervention group. However, sharing information about infant crying with other caregivers was less likely among the intervention group. CONCLUSIONS: The impact of educational materials in public health practice on knowledge of crying and shaking, and walk-away behaviour in Japan had a dose-response relationship; however, an increase in sharing information with other caregivers was not observed.",
"extra": "PMID: 25744111",
"issue": "5",
"journalAbbreviation": "Public Health",
"language": "eng",
"pages": "475-482",
"publicationTitle": "Public health",
"rights": "Copyright (c) 2015 The Royal Society for Public Health. Published by Elsevier Ltd. All rights reserved.",
"volume": "129",
"attachments": [],
"tags": [
{
"tag": "*Health Knowledge, Attitudes, Practice"
},
{
"tag": "*Public Health Practice"
},
{
"tag": "Abusive head trauma"
},
{
"tag": "Adolescent"
},
{
"tag": "Adult"
},
{
"tag": "Caregivers/*education/psychology/statistics & numerical data"
},
{
"tag": "Child Abuse/*prevention & control"
},
{
"tag": "Craniocerebral Trauma/*prevention & control"
},
{
"tag": "Cross-Sectional Studies"
},
{
"tag": "Crying"
},
{
"tag": "Crying/psychology"
},
{
"tag": "Female"
},
{
"tag": "Follow-Up Studies"
},
{
"tag": "Humans"
},
{
"tag": "Infant"
},
{
"tag": "Infant, Newborn"
},
{
"tag": "Intervention"
},
{
"tag": "Japan"
},
{
"tag": "Japan"
},
{
"tag": "Male"
},
{
"tag": "Pamphlets"
},
{
"tag": "Parents/*education/psychology"
},
{
"tag": "Program Evaluation"
},
{
"tag": "Public health"
},
{
"tag": "Questionnaires"
},
{
"tag": "Shaken Baby Syndrome/*prevention & control"
},
{
"tag": "Shaken baby syndrome"
},
{
"tag": "Videodisc Recording"
},
{
"tag": "Young Adult"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "\nOWN - ERIC\nTI - Educational Test Approaches: The Suitability of Computer-Based Test Types for Assessment and Evaluation in Formative and Summative Contexts\nAU - van Groen, Maaike M.\nAU - Eggen, Theo J. H. M.\nOT - Computer Assisted Testing\nOT - Formative Evaluation\nOT - Summative Evaluation\nOT - Adaptive Testing\nOT - Educational Games\nOT - Computer Simulation\nOT - Automation\nOT - Educational Testing\nJT - Journal of Applied Testing Technology\nSO - v21 n1 p12-24 2020\nAID - http://www.jattjournal.com/index.php/atp/article/view/146484\nOID - EJ1227990\nVI - 21\nIP - 1\nPG - 12-24\nDP - 2020\nLID - http://eric.ed.gov/?id=EJ1227990\nAB - When developing a digital test, one of the first decisions that need to be made is which type of Computer-Based Test (CBT) to develop. Six different CBT types are considered here: linear tests, automatically generated tests, computerized adaptive tests, adaptive learning environments, educational simulations, and educational games. The selection of a CBT type needs to be guided by the intended purposes of the test. The test approach determines which purposes can be achieved by using a particular test. Four different test approaches are discussed here: formative assessment, formative evaluation, summative assessment, and summative evaluation. The suitability of each CBT type to measure performance for the different test approaches is evaluated based on four test characteristics: test purpose, test length, level of interest for measurement (student, class, school, system), and test report. This article aims to provide some guidance in the selection of the most appropriate type of CBT.\nISSN - EISSN-2375-5636\nLA - English\nPT - Journal Articles\nPT - Reports - Research\n\nOWN - ERIC\nTI - Test-Taker Perception of and Test Performance on Computer-Delivered Speaking Tests: The Mediational Role of Test-Taking Motivation\nAU - Zhou, Yujia\nAU - Yoshitomi, Asako\nOT - Computer Literacy\nOT - Computer Assisted Testing\nOT - College Students\nOT - Language Tests\nOT - English (Second Language)\nOT - Second Language Learning\nOT - Speech Communication\nOT - Test Validity\nOT - Foreign Countries\nOT - Student Attitudes\nOT - Correlation\nOT - Test Construction\nOT - Student Motivation\nJT - Language Testing in Asia\nSO - v9 Article 10 2019\nAID - http://dx.doi.org/10.1186/s40468-019-0086-7\nOID - EJ1245375\nVI - 9\nDP - Article 10 2019\nLID - http://eric.ed.gov/?id=EJ1245375\nAB - Background: Research on the test-taker perception of assessments has been conducted under the assumption that negative test-taker perception may influence test performance by decreasing test-taking motivation. This assumption, however, has not been verified in the field of language testing. Building on expectancy-value theory, this study explored the relationships between test-taker perception, test-taking motivation, and test performance in the context of a computer-delivered speaking test. Methods: Sixty-four Japanese university students took the TOEIC Speaking test and completed a questionnaire that included statements about their test perception, test-taking motivation, and self-perceived test performance. Five students participated in follow-up interviews. Results: Questionnaire results showed that students regarded the TOEIC Speaking test positively in terms of test validity but showed reservations about computer delivery, and that they felt sufficiently motivated during the test. Interview results revealed various reasons for their reservations about computer delivery and factors that distracted them during the test. According to correlation analysis, the effects of test-taker perception and test-taking motivation seemed to be minimal on test performance, and participants' perception of computer delivery was directly related to test-taking effort, but their perception of test validity seemed to be related to test-taking effort only indirectly through the mediation of perceived test importance. Conclusion: Our findings not only provide empirical evidence for the relationship between test-taker perception and test performance but also highlight the importance of considering test-taker reactions in developing tests.\nISSN - EISSN-2229-0443\nLA - English\nPT - Journal Articles\nPT - Reports - Research\n\nOWN - ERIC\nTI - College Entrance Exams: How Does Test Preparation Affect Retest Scores? Research Report 2019-2\nAU - Moore, Raeal\nAU - Sanchez, Edgar\nAU - San Pedro, Sweet\nOT - College Entrance Examinations\nOT - Test Preparation\nOT - Scores\nOT - Achievement Gains\nOT - Pretests Posttests\nOT - Tutoring\nOT - High School Students\nOT - Outcomes of Education\nJT - ACT, Inc.\nOID - ED602023\nDP - 2019\nLID - http://eric.ed.gov/?id=ED602023\nAB - As test preparation becomes widely accessible through different delivery systems, large-scale studies of test preparation efficacy that involve a variety of test preparation activities become more important to understanding the value and impact of test preparation activities on both the ACT and SAT. In this paper, the authors examine the impact of participating in test preparation prior to retaking the ACT test. The study focused on addressing three questions: (1) Using a pretest-posttest design, do students who participate in test preparation have larger score gains relative to students who did not participate in test preparation; does the test preparation effect depend on students' pretest scores?; (2) Among students who participated in test preparation, is the number of hours spent participating in each of 10 test preparation activities related to retest scores?; and (3) Among students who participated in test preparation, do their own beliefs that they might have been ill-prepared to take the test, regardless of the test preparation activities they engaged in, impact retest scores? The study findings showed that test preparation improved students' retest scores, and this effect did not differ depending on students' first ACT score. Among specific test prep activities, only the number of hours using a private tutor resulted in increased score gains above the overall effect of test prep. Students who reported feeling inadequately prepared for the second test had ACT Composite scores that were lower than those students who felt adequately prepared.\nPT - Reports - Research",
"items": [
{
"itemType": "journalArticle",
"title": "Educational Test Approaches: The Suitability of Computer-Based Test Types for Assessment and Evaluation in Formative and Summative Contexts",
"creators": [
{
"firstName": "Maaike M.",
"lastName": "van Groen",
"creatorType": "author"
},
{
"firstName": "Theo J. H. M.",
"lastName": "Eggen",
"creatorType": "author"
}
],
"date": "2020",
"ISSN": "2375-5636",
"abstractNote": "When developing a digital test, one of the first decisions that need to be made is which type of Computer-Based Test (CBT) to develop. Six different CBT types are considered here: linear tests, automatically generated tests, computerized adaptive tests, adaptive learning environments, educational simulations, and educational games. The selection of a CBT type needs to be guided by the intended purposes of the test. The test approach determines which purposes can be achieved by using a particular test. Four different test approaches are discussed here: formative assessment, formative evaluation, summative assessment, and summative evaluation. The suitability of each CBT type to measure performance for the different test approaches is evaluated based on four test characteristics: test purpose, test length, level of interest for measurement (student, class, school, system), and test report. This article aims to provide some guidance in the selection of the most appropriate type of CBT.",
"extra": "ERIC Number: EJ1227990",
"issue": "1",
"language": "English",
"pages": "12-24",
"publicationTitle": "Journal of Applied Testing Technology",
"volume": "21",
"attachments": [
{
"title": "Catalog Link",
"snapshot": false
}
],
"tags": [
{
"tag": "Adaptive Testing"
},
{
"tag": "Automation"
},
{
"tag": "Computer Assisted Testing"
},
{
"tag": "Computer Simulation"
},
{
"tag": "Educational Games"
},
{
"tag": "Educational Testing"
},
{
"tag": "Formative Evaluation"
},
{
"tag": "Summative Evaluation"
}
],
"notes": [],
"seeAlso": []
},
{
"itemType": "journalArticle",
"title": "Test-Taker Perception of and Test Performance on Computer-Delivered Speaking Tests: The Mediational Role of Test-Taking Motivation",
"creators": [
{
"firstName": "Yujia",
"lastName": "Zhou",
"creatorType": "author"
},
{
"firstName": "Asako",
"lastName": "Yoshitomi",
"creatorType": "author"
}
],
"date": "Article 10 2019",
"ISSN": "2229-0443",
"abstractNote": "Background: Research on the test-taker perception of assessments has been conducted under the assumption that negative test-taker perception may influence test performance by decreasing test-taking motivation. This assumption, however, has not been verified in the field of language testing. Building on expectancy-value theory, this study explored the relationships between test-taker perception, test-taking motivation, and test performance in the context of a computer-delivered speaking test. Methods: Sixty-four Japanese university students took the TOEIC Speaking test and completed a questionnaire that included statements about their test perception, test-taking motivation, and self-perceived test performance. Five students participated in follow-up interviews. Results: Questionnaire results showed that students regarded the TOEIC Speaking test positively in terms of test validity but showed reservations about computer delivery, and that they felt sufficiently motivated during the test. Interview results revealed various reasons for their reservations about computer delivery and factors that distracted them during the test. According to correlation analysis, the effects of test-taker perception and test-taking motivation seemed to be minimal on test performance, and participants' perception of computer delivery was directly related to test-taking effort, but their perception of test validity seemed to be related to test-taking effort only indirectly through the mediation of perceived test importance. Conclusion: Our findings not only provide empirical evidence for the relationship between test-taker perception and test performance but also highlight the importance of considering test-taker reactions in developing tests.",
"extra": "ERIC Number: EJ1245375",
"language": "English",
"publicationTitle": "Language Testing in Asia",
"volume": "9",
"attachments": [
{
"title": "Catalog Link",
"snapshot": false
}
],
"tags": [
{
"tag": "College Students"
},
{
"tag": "Computer Assisted Testing"
},
{
"tag": "Computer Literacy"
},
{
"tag": "Correlation"
},
{
"tag": "English (Second Language)"
},
{
"tag": "Foreign Countries"
},
{
"tag": "Language Tests"
},
{
"tag": "Second Language Learning"
},
{
"tag": "Speech Communication"
},
{
"tag": "Student Attitudes"
},
{
"tag": "Student Motivation"
},
{
"tag": "Test Construction"
},
{
"tag": "Test Validity"
}
],
"notes": [],
"seeAlso": []
},
{
"itemType": "report",
"title": "College Entrance Exams: How Does Test Preparation Affect Retest Scores? Research Report 2019-2",
"creators": [
{
"firstName": "Raeal",
"lastName": "Moore",
"creatorType": "author"
},
{
"firstName": "Edgar",
"lastName": "Sanchez",
"creatorType": "author"
},
{
"firstName": "Sweet",
"lastName": "San Pedro",
"creatorType": "author"
}
],
"date": "2019",
"abstractNote": "As test preparation becomes widely accessible through different delivery systems, large-scale studies of test preparation efficacy that involve a variety of test preparation activities become more important to understanding the value and impact of test preparation activities on both the ACT and SAT. In this paper, the authors examine the impact of participating in test preparation prior to retaking the ACT test. The study focused on addressing three questions: (1) Using a pretest-posttest design, do students who participate in test preparation have larger score gains relative to students who did not participate in test preparation; does the test preparation effect depend on students' pretest scores?; (2) Among students who participated in test preparation, is the number of hours spent participating in each of 10 test preparation activities related to retest scores?; and (3) Among students who participated in test preparation, do their own beliefs that they might have been ill-prepared to take the test, regardless of the test preparation activities they engaged in, impact retest scores? The study findings showed that test preparation improved students' retest scores, and this effect did not differ depending on students' first ACT score. Among specific test prep activities, only the number of hours using a private tutor resulted in increased score gains above the overall effect of test prep. Students who reported feeling inadequately prepared for the second test had ACT Composite scores that were lower than those students who felt adequately prepared.",
"extra": "ERIC Number: ED602023",
"institution": "ACT, Inc.",
"attachments": [
{
"title": "Catalog Link",
"snapshot": false
}
],
"tags": [
{
"tag": "Achievement Gains"
},
{
"tag": "College Entrance Examinations"
},
{
"tag": "High School Students"
},
{
"tag": "Outcomes of Education"
},
{
"tag": "Pretests Posttests"
},
{
"tag": "Scores"
},
{
"tag": "Test Preparation"
},
{
"tag": "Tutoring"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "PMID- 35128459\nOWN - NLM\nSTAT- PubMed-not-MEDLINE\nLR - 20220208\nIS - 2641-9157 (Electronic)\nIS - 2641-9157 (Linking)\nVI - 4\nIP - 1\nDP - 2021\nTI - Slow Burns: A Qualitative Study of Burn Pit and Toxic Exposures Among Military \n Veterans Serving in Afghanistan, Iraq and Throughout the Middle East.\nLID - 1042 [pii]\nAB - During deployment to the Persian Gulf War and Southwest Asia theatre of operations, \n Veterans often experienced various hazards, foremost being open-air burn pits and \n oil well fires. While over 23 presumptive conditions (ranging from brain cancer, \n interstitial lung disease, and lymphomas to sleep/mood disorders, depression, and \n cognitive impairment) have been studied in connection with their military-related \n exposures, there is a paucity of qualitative research on this topic. This is \n especially true in the context of explanatory models and health belief systems, \n vis-à-vis underlying social and cultural factors. The current paper provides a \n balanced conceptual framework (summarizing causal virtues and shortcomings) about \n the challenges that Veterans encounter when seeking medical care, screening \n assessments and subsequent treatments.\nFAU - Bith-Melander, Pollie\nAU - Bith-Melander P\nAD - Department of Social Work, California State University, Stanislaus, Turlock, CA, \n USA.\nFAU - Ratliff, Jack\nAU - Ratliff J\nAD - Department of Medical-Surgical Oncology, James A Haley Veterans Affairs Hospital, \n Tampa, FL, USA.\nAD - Military Exposures Team, HunterSeven Foundation, Providence, RI, USA.\nFAU - Poisson, Chelsey\nAU - Poisson C\nAD - Military Exposures Team, HunterSeven Foundation, Providence, RI, USA.\nFAU - Jindal, Charulata\nAU - Jindal C\nAD - Harvard Medical School, Harvard University, Boston, USA.\nFAU - Ming Choi, Yuk\nAU - Ming Choi Y\nAD - Signify Health, Dallas, TX, 75244, USA.\nFAU - Efird, Jimmy T\nAU - Efird JT\nAD - Cooperative Studies Program Epidemiology Center, Health Services Research and \n Development, DVAHCS, Durham, USA.\nLA - eng\nPT - Journal Article\nDEP - 20211227\nTA - Ann Psychiatry Clin Neurosci\nJT - Annals of psychiatry and clinical neuroscience\nJID - 9918334788106676\nPMC - PMC8816568\nMID - NIHMS1773706\nOTO - NOTNLM\nOT - Burn pits\nOT - Deployment anthropology\nOT - Explanatory models\nOT - Military exposures\nOT - Oil well fires\nOT - Qualitative analysis\nEDAT- 2022/02/08 06:00\nMHDA- 2022/02/08 06:01\nCRDT- 2022/02/07 05:37\nPHST- 2022/02/07 05:37 [entrez]\nPHST- 2022/02/08 06:00 [pubmed]\nPHST- 2022/02/08 06:01 [medline]\nAID - 1042 [pii]\nPST - ppublish\nSO - Ann Psychiatry Clin Neurosci. 2021;4(1):1042. Epub 2021 Dec 27.\n",
"items": [
{
"itemType": "journalArticle",
"title": "Slow Burns: A Qualitative Study of Burn Pit and Toxic Exposures Among Military Veterans Serving in Afghanistan, Iraq and Throughout the Middle East.",
"creators": [
{
"firstName": "Pollie",
"lastName": "Bith-Melander",
"creatorType": "author"
},
{
"firstName": "Jack",
"lastName": "Ratliff",
"creatorType": "author"
},
{
"firstName": "Chelsey",
"lastName": "Poisson",
"creatorType": "author"
},
{
"firstName": "Charulata",
"lastName": "Jindal",
"creatorType": "author"
},
{
"firstName": "Yuk",
"lastName": "Ming Choi",
"creatorType": "author"
},
{
"firstName": "Jimmy T.",
"lastName": "Efird",
"creatorType": "author"
}
],
"date": "2021",
"ISSN": "2641-9157",
"abstractNote": "During deployment to the Persian Gulf War and Southwest Asia theatre of operations, Veterans often experienced various hazards, foremost being open-air burn pits and oil well fires. While over 23 presumptive conditions (ranging from brain cancer, interstitial lung disease, and lymphomas to sleep/mood disorders, depression, and cognitive impairment) have been studied in connection with their military-related exposures, there is a paucity of qualitative research on this topic. This is especially true in the context of explanatory models and health belief systems, vis-à-vis underlying social and cultural factors. The current paper provides a balanced conceptual framework (summarizing causal virtues and shortcomings) about the challenges that Veterans encounter when seeking medical care, screening assessments and subsequent treatments.",
"extra": "PMID: 35128459 \nPMCID: PMC8816568",
"issue": "1",
"journalAbbreviation": "Ann Psychiatry Clin Neurosci",
"language": "eng",
"pages": "1042",
"publicationTitle": "Annals of psychiatry and clinical neuroscience",
"volume": "4",
"attachments": [],
"tags": [
{
"tag": "Burn pits"
},
{
"tag": "Deployment anthropology"
},
{
"tag": "Explanatory models"
},
{
"tag": "Military exposures"
},
{
"tag": "Oil well fires"
},
{
"tag": "Qualitative analysis"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "\r\nOWN - ERIC\r\nTI - Findings from the PISA for Development Field Trial of the School-Based Assessment. PISA for Development Brief 16\r\nOT - International Assessment\r\nOT - Secondary School Students\r\nOT - Foreign Countries\r\nOT - Achievement Tests\r\nOT - Field Tests\r\nOT - Educational Assessment\r\nOT - Cognitive Tests\r\nOT - Reading Tests\r\nOT - Mathematics Tests\r\nOT - Science Tests\r\nOT - Developing Nations\r\nJT - OECD Publishing\r\nAID - www.oecd.org/pisa/pisa-for-development/16-Findings-from-in-school-FT.pdf\r\nOID - ED576982\r\nDP - 2017\r\nLID - http://eric.ed.gov/?id=ED576982\r\nAB - The PISA for Development (PISA-D) project aims to make PISA more accessible and relevant to middle- and low-income countries by introducing new features to the assessment, including tests that are specially designed to measure lower levels of performance, contextual questionnaires that better reflect the situations of 15-year-olds across a diverse group of countries, and approaches to include out-of-school youth. The PISA-D school-based tests and contextual questionnaires are being piloted in eight countries: Bhutan, Cambodia, Ecuador, Guatemala, Honduras, Paraguay, Senegal, and Zambia. The field trial of the school-based assessment instruments took place from August to December 2016 in seven countries. Based on results of the field trial, the instruments and survey operations were modified as necessary for the main study. The PISA-D school-based assessment field trial reveals that the instruments work as intended. Findings from the analysis of the PISA-D cognitive test field trial data are organised around three major goals and are summarised in the table provided. The test covers reading, mathematics and science. Findings include: (1) The results of the field trial of the PISA for Development (PISA-D) school-based component confirm that the initiative is on track to deliver an assessment that is more relevant to middleand low-income countries; (2) PISA-D instruments work: they capture a wider range of student performance and the diverse contexts found in middle- and low-income countries while ensuring that results are comparable to those of the main PISA test; and (3) Lessons from the field trial are used to inform preparations for the main data collection, which will take place from August to December 2017.\r\nPT - Reports - Research\r\nPT - Reports - Evaluative\r\n\r\nOWN - ERIC\r\nTI - From Here to There! Elementary: A Game-Based Approach to Developing Number Sense and Early Algebraic Understanding\r\nAU - Hulse, Taylyn\r\nAU - Daigle, Maria\r\nAU - Manzo, Daniel\r\nAU - Braith, Lindsay\r\nAU - Harrison, Avery\r\nAU - Ottmar, Erin\r\nOT - Mathematics Instruction\r\nOT - Educational Technology\r\nOT - Technology Uses in Education\r\nOT - Algebra\r\nOT - Mathematical Concepts\r\nOT - Concept Formation\r\nOT - Educational Games\r\nOT - Interaction\r\nOT - Problem Solving\r\nOT - Student Behavior\r\nOT - Teaching Methods\r\nOT - Instructional Effectiveness\r\nOT - Mathematics Achievement\r\nJT - Educational Technology Research and Development\r\nSO - v67 n2 p423-441 Apr 2019\r\nAID - http://dx.doi.org/10.1007/s11423-019-09653-8\r\nOID - EJ1208101\r\nVI - 67\r\nIP - 2\r\nPG - 423-441\r\nDP - Apr 2019\r\nLID - http://eric.ed.gov/?id=EJ1208101\r\nAB - This paper examines whether using \"From Here to There!\" (FH2T:E), a dynamic game-based mathematics learning technology relates to improved early algebraic understanding. We use student log files within FH2T to explore the possible benefits of student behaviors and gamification on learning gains. Using in app measures of student interactions (mouse clicks, resets, errors, problem solving steps, and completions), 19 variables were identified to summarize overall problem solving processes. An exploratory factor analysis identified five clear factors including engagement in problem solving, progress, strategic flexibility, strategic efficiency, and speed. Regression analyses reveal that after accounting for behavior within the app, playing the gamified version of the app contributed to higher learning gains than playing a nongamified version. Next, completing more problems within the game related to higher achievement on the post-test. Third, two significant interactions were found between progress and prior knowledge and engagement in problem solving and prior knowledge, where low performing students gained more when they completed more problems and engaged more with those problems.\r\nISSN - ISSN-1042-1629\r\nLA - English\r\nPT - Reports - Research\r\nPT - Reports - Evaluative\r\n\r\nOWN - ERIC\r\nTI - International Comparative Assessments: Broadening the Interpretability, Application and Relevance to the United States. Research in Review 2012-5\r\nAU - Di Giacomo, F. Tony\r\nAU - Fishbein, Bethany G.\r\nAU - Buckley, Vanessa W.\r\nOT - Comparative Testing\r\nOT - International Assessment\r\nOT - Relevance (Education)\r\nOT - Testing Programs\r\nOT - Program Descriptions\r\nOT - Best Practices\r\nOT - Adoption (Ideas)\r\nOT - Technology Transfer\r\nOT - Economic Impact\r\nOT - Academic Achievement\r\nOT - Educational Assessment\r\nOT - Educational Indicators\r\nOT - Comparative Education\r\nOT - Comparative Analysis\r\nOT - Common Core State Standards\r\nOT - Educational Policy\r\nOT - Tables (Data)\r\nOT - Educational Change\r\nOT - Educational Practices\r\nOT - National Competency Tests\r\nOT - Foreign Countries\r\nOT - Mathematics Tests\r\nOT - Science Tests\r\nOT - Mathematics Achievement\r\nOT - Elementary Secondary Education\r\nOT - Science Achievement\r\nOT - Reading Tests\r\nOT - Achievement Tests\r\nOT - Reading Achievement\r\nOT - Grade 4\r\nJT - College Board\r\nOID - ED562752\r\nDP - 2013\r\nLID - http://eric.ed.gov/?id=ED562752\r\nAB - Many articles and reports have reviewed, researched, and commented on international assessments from the perspective of exploring what is relevant for the United States' education systems. Researchers make claims about whether the top-performing systems have transferable practices or policies that could be applied to the United States. However, looking only at top-performing education systems may omit important knowledge that could be applied from countries with similar demographic, geographic, linguistic, or economic characteristics--even if these countries do not perform highly on comparative assessments. Moreover, by exploring only the top performers, a presumption exists that these international assessments are in alignment with a country's curricular, pedagogic, political, and economic goals, which may falsely lead to the conclusion that by copying top performers, test scores would invariably increase and also meet the nation's needs. While international comparative assessments can be valuable when developing national or state policies, the way in which they are interpreted can be broadened cautiously to better inform their interpretability, relevance, and application to countries such as the United States--all while considering the purpose of each international assessment in the context of a nation's priorities. Ultimately, this report serves as a reference guide for various international assessments, as well as a review of literature that explores a possible relationship between national economies and international assessment performance. In addition, this review will discuss how policymakers might use international assessment results from various systems to adapt successful policies in the United States. Tables are appended.\r\nPT - Reports - Evaluative\r\nPT - Information Analyses\r\nPT - Reports - Research\r\n\r\nOWN - ERIC\r\nTI - A Test of the Test of Problem Solving (TOPS).\r\nAU - Bernhardt, Barbara\r\nOT - Content Validity\r\nOT - Elementary Education\r\nOT - Language Handicaps\r\nOT - Language Tests\r\nOT - Linguistics\r\nOT - Problem Solving\r\nOT - Semantics\r\nOT - Speech Therapy\r\nOT - Test Validity\r\nOT - Thinking Skills\r\nJT - Language, Speech, and Hearing Services in Schools\r\nSO - v21 n2 p98-101 Apr 1990\r\nOID - EJ410320\r\nVI - 21\r\nIP - 2\r\nPG - 98-101\r\nDP - Apr 1990\r\nLID - http://eric.ed.gov/?id=EJ410320\r\nAB - The Test of Problem Solving (TOPS) was evaluated by 20 speech-language clinicians based on designer claims that the test assesses integration of semantic, linguistic, and reasoning ability and taps skills needed for academic and social acceptance. Results challenged the content validity of the test. (Author/DB)\r\nPT - Journal Articles\r\nPT - Reports - Research\r\nPT - Reports - Evaluative\r\n\r\n",
"items": [
{
"itemType": "report",
"title": "Findings from the PISA for Development Field Trial of the School-Based Assessment. PISA for Development Brief 16",
"creators": [],
"date": "2017",
"abstractNote": "The PISA for Development (PISA-D) project aims to make PISA more accessible and relevant to middle- and low-income countries by introducing new features to the assessment, including tests that are specially designed to measure lower levels of performance, contextual questionnaires that better reflect the situations of 15-year-olds across a diverse group of countries, and approaches to include out-of-school youth. The PISA-D school-based tests and contextual questionnaires are being piloted in eight countries: Bhutan, Cambodia, Ecuador, Guatemala, Honduras, Paraguay, Senegal, and Zambia. The field trial of the school-based assessment instruments took place from August to December 2016 in seven countries. Based on results of the field trial, the instruments and survey operations were modified as necessary for the main study. The PISA-D school-based assessment field trial reveals that the instruments work as intended. Findings from the analysis of the PISA-D cognitive test field trial data are organised around three major goals and are summarised in the table provided. The test covers reading, mathematics and science. Findings include: (1) The results of the field trial of the PISA for Development (PISA-D) school-based component confirm that the initiative is on track to deliver an assessment that is more relevant to middleand low-income countries; (2) PISA-D instruments work: they capture a wider range of student performance and the diverse contexts found in middle- and low-income countries while ensuring that results are comparable to those of the main PISA test; and (3) Lessons from the field trial are used to inform preparations for the main data collection, which will take place from August to December 2017.",
"extra": "ERIC Number: ED576982",
"institution": "OECD Publishing",
"attachments": [
{
"title": "Catalog Link",
"snapshot": false
}
],
"tags": [
{
"tag": "Achievement Tests"
},
{
"tag": "Cognitive Tests"
},
{
"tag": "Developing Nations"
},
{
"tag": "Educational Assessment"
},
{
"tag": "Field Tests"
},
{
"tag": "Foreign Countries"
},
{
"tag": "International Assessment"
},
{
"tag": "Mathematics Tests"
},
{
"tag": "Reading Tests"
},
{
"tag": "Science Tests"
},
{
"tag": "Secondary School Students"
}
],
"notes": [],
"seeAlso": []
},
{
"itemType": "journalArticle",
"title": "From Here to There! Elementary: A Game-Based Approach to Developing Number Sense and Early Algebraic Understanding",
"creators": [
{
"firstName": "Taylyn",
"lastName": "Hulse",
"creatorType": "author"
},
{
"firstName": "Maria",
"lastName": "Daigle",
"creatorType": "author"
},
{
"firstName": "Daniel",
"lastName": "Manzo",
"creatorType": "author"
},
{
"firstName": "Lindsay",
"lastName": "Braith",
"creatorType": "author"
},
{
"firstName": "Avery",
"lastName": "Harrison",
"creatorType": "author"
},
{
"firstName": "Erin",
"lastName": "Ottmar",
"creatorType": "author"
}
],
"date": "Apr 2019",
"ISSN": "1042-1629",
"abstractNote": "This paper examines whether using \"From Here to There!\" (FH2T:E), a dynamic game-based mathematics learning technology relates to improved early algebraic understanding. We use student log files within FH2T to explore the possible benefits of student behaviors and gamification on learning gains. Using in app measures of student interactions (mouse clicks, resets, errors, problem solving steps, and completions), 19 variables were identified to summarize overall problem solving processes. An exploratory factor analysis identified five clear factors including engagement in problem solving, progress, strategic flexibility, strategic efficiency, and speed. Regression analyses reveal that after accounting for behavior within the app, playing the gamified version of the app contributed to higher learning gains than playing a nongamified version. Next, completing more problems within the game related to higher achievement on the post-test. Third, two significant interactions were found between progress and prior knowledge and engagement in problem solving and prior knowledge, where low performing students gained more when they completed more problems and engaged more with those problems.",
"extra": "ERIC Number: EJ1208101",
"issue": "2",
"language": "English",
"pages": "423-441",
"publicationTitle": "Educational Technology Research and Development",
"volume": "67",
"attachments": [
{
"title": "Catalog Link",
"snapshot": false
}
],
"tags": [
{
"tag": "Algebra"
},
{
"tag": "Concept Formation"
},
{
"tag": "Educational Games"
},
{
"tag": "Educational Technology"
},
{
"tag": "Instructional Effectiveness"
},
{
"tag": "Interaction"
},
{
"tag": "Mathematical Concepts"
},
{
"tag": "Mathematics Achievement"
},
{
"tag": "Mathematics Instruction"
},
{
"tag": "Problem Solving"
},
{
"tag": "Student Behavior"
},
{
"tag": "Teaching Methods"
},
{
"tag": "Technology Uses in Education"
}
],
"notes": [],
"seeAlso": []
},
{
"itemType": "report",
"title": "International Comparative Assessments: Broadening the Interpretability, Application and Relevance to the United States. Research in Review 2012-5",
"creators": [
{
"firstName": "F. Tony",
"lastName": "Di Giacomo",
"creatorType": "author"
},
{
"firstName": "Bethany G.",
"lastName": "Fishbein",
"creatorType": "author"
},
{
"firstName": "Vanessa W.",
"lastName": "Buckley",
"creatorType": "author"
}
],
"date": "2013",
"abstractNote": "Many articles and reports have reviewed, researched, and commented on international assessments from the perspective of exploring what is relevant for the United States' education systems. Researchers make claims about whether the top-performing systems have transferable practices or policies that could be applied to the United States. However, looking only at top-performing education systems may omit important knowledge that could be applied from countries with similar demographic, geographic, linguistic, or economic characteristics--even if these countries do not perform highly on comparative assessments. Moreover, by exploring only the top performers, a presumption exists that these international assessments are in alignment with a country's curricular, pedagogic, political, and economic goals, which may falsely lead to the conclusion that by copying top performers, test scores would invariably increase and also meet the nation's needs. While international comparative assessments can be valuable when developing national or state policies, the way in which they are interpreted can be broadened cautiously to better inform their interpretability, relevance, and application to countries such as the United States--all while considering the purpose of each international assessment in the context of a nation's priorities. Ultimately, this report serves as a reference guide for various international assessments, as well as a review of literature that explores a possible relationship between national economies and international assessment performance. In addition, this review will discuss how policymakers might use international assessment results from various systems to adapt successful policies in the United States. Tables are appended.",
"extra": "ERIC Number: ED562752",
"institution": "College Board",
"attachments": [
{
"title": "Catalog Link",
"snapshot": false
}
],
"tags": [
{
"tag": "Academic Achievement"
},
{
"tag": "Achievement Tests"
},
{
"tag": "Adoption (Ideas)"
},
{
"tag": "Best Practices"
},
{
"tag": "Common Core State Standards"
},
{
"tag": "Comparative Analysis"
},
{
"tag": "Comparative Education"
},
{
"tag": "Comparative Testing"
},
{
"tag": "Economic Impact"
},
{
"tag": "Educational Assessment"
},
{
"tag": "Educational Change"
},
{
"tag": "Educational Indicators"
},
{
"tag": "Educational Policy"
},
{
"tag": "Educational Practices"
},
{
"tag": "Elementary Secondary Education"
},
{
"tag": "Foreign Countries"
},
{
"tag": "Grade 4"
},
{
"tag": "International Assessment"
},
{
"tag": "Mathematics Achievement"
},
{
"tag": "Mathematics Tests"
},
{
"tag": "National Competency Tests"
},
{
"tag": "Program Descriptions"
},
{
"tag": "Reading Achievement"
},
{
"tag": "Reading Tests"
},
{
"tag": "Relevance (Education)"
},
{
"tag": "Science Achievement"
},
{
"tag": "Science Tests"
},
{
"tag": "Tables (Data)"
},
{
"tag": "Technology Transfer"
},
{
"tag": "Testing Programs"
}
],
"notes": [],
"seeAlso": []
},
{
"itemType": "journalArticle",
"title": "A Test of the Test of Problem Solving (TOPS).",
"creators": [
{
"firstName": "Barbara",
"lastName": "Bernhardt",
"creatorType": "author"
}
],
"date": "Apr 1990",
"abstractNote": "The Test of Problem Solving (TOPS) was evaluated by 20 speech-language clinicians based on designer claims that the test assesses integration of semantic, linguistic, and reasoning ability and taps skills needed for academic and social acceptance. Results challenged the content validity of the test. (Author/DB)",
"extra": "ERIC Number: EJ410320",
"issue": "2",
"pages": "98-101",
"publicationTitle": "Language, Speech, and Hearing Services in Schools",
"volume": "21",
"attachments": [
{
"title": "Catalog Link",
"snapshot": false
}
],
"tags": [
{
"tag": "Content Validity"
},
{
"tag": "Elementary Education"
},
{
"tag": "Language Handicaps"
},
{
"tag": "Language Tests"
},
{
"tag": "Linguistics"
},
{
"tag": "Problem Solving"
},
{
"tag": "Semantics"
},
{
"tag": "Speech Therapy"
},
{
"tag": "Test Validity"
},
{
"tag": "Thinking Skills"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "OWN - ERIC\r\nTI - Tests of Robustness in Peer Review\r\nAU - Leipzig, Jeremy\r\nOT - Robustness (Statistics)\r\nOT - Peer Evaluation\r\nOT - Data Analysis\r\nOT - Computer Software\r\nOT - Evaluation Methods\r\nOT - Research Methodology\r\nJT - ProQuest LLC\r\nSO - Ph.D. Dissertation, Drexel University\r\nAID - http://gateway.proquest.com/openurl?url_ver=Z39.88-2004&rft_val_fmt=info:ofi/fmt:kev:mtx:dissertation&res_dat=xri:pqm&rft_dat=xri:pqdiss:28967820\r\nOID - ED620611\r\nDP - 2021\r\nLID - http://eric.ed.gov/?id=ED620611\r\nAB - Purpose: The purpose of this dissertation is to investigate the feasibility of using tests of robustness in peer review. This study involved selecting three high-impact papers which featured open data and utilized bioinformatic analyses but provided no source code and refactoring these to allow external survey participants to swap tools, parameters, and data subsets to evaluate the robustness and underlying validity of these analyses. Technical advances that have taken place in recent years--scientific computing infrastructure has matured to support the distribution of reproducible computational analyses--enable this approach. These advances, along with cultural shifts encompassing open data and open code initiatives, promise to address technical stumbling blocks that have contributed to the \"reproducibility crisis.\" To take full advantage of these developments toward improving scientific quality, authors, reviewers, and publishers must integrate reproducible analysis into the peer review process. Seven existing major case study types - reproduction, replication, refactor, robustness test, survey, census, and case narrative - have been invaluable toward establishing reproducibility as a serious and independent area of research. Of particular interest are refactors, in which an existing analysis with abstract methods is reimplemented by a third party, and robustness tests, which involve the manipulation of tools, parameters, and data to assess the scientific validity of an analysis. This thesis describes efforts to test the feasibility of robustness testing in the context of in silico peer review. The contributions described are complemented with extensive source code. Design and Methods: A multi-method approach was employed for this study consisting of user surveys and tests of robustness--hands-on, self-directed software development exercises. Three high-impact genomics publications with open data, but no source code, were selected, refactored, and distributed to active study participants who acted as quasi-external reviewers. The process of the refactor was used to evaluate the limitations of reproducibility using conventional tools and to study how best to present analyses for peer review, and the tests of robustness were employed under the hypothesis this practice would help to evaluate the underlying validity of an analysis. Three different approaches were taken in these tests of robustness--a faithful reproduction of the original manuscript into a framework that could be manipulated by participants, a workflow-library approach in which participants were encouraged to employ modern \"off-the-shelf\" pre-built pipelines to triangulate tests, and an advisor-led approach in which senior experts suggested alternate tools to be implemented and I generated a report for their evaluation. Findings: The refactors and tests of robustness produced numerous discoveries both in terms of the underlying scientific content and, more importantly, into the strengths and weakness of the three robustness approaches (faithful/workflow-library/advisor-led) and pain points in the analytic stack, which may be addressed with appropriate software and metadata. The principal findings are that the faithful approach may often discourage aggressive robustness testing because of the inertia imposed by the existing framework, the workflow-library approach is efficient but can prove inconclusive, and the advisor-led approach may be most practical for journals but requires a higher level of communication to be effective. The vast majority of time in all these refactors was spent on sample metadata management, particularly organizing sample groups of biological and technical replicates to produce the numerous and varied tool input manifests. Practical Implications: Reproducibility-enabled in silico peer review is substantially more time-consuming than traditional manuscript peer review and will require economic, cultural, and technical change to bring to reality. The work presented here could contribute to developing new models to minimize the increased effort of this type of peer review while incentivizing reproducibility. Value: This study provides practical guidance toward designing the future of reproducibility-enabled in silico peer review, which is a logical extension of the computational reproducibility afforded by technical advances in dependency management, containerization, pipeline frameworks, and notebooks. [The dissertation citations contained here are published with the permission of ProQuest LLC. Further reproduction is prohibited without permission. Copies of dissertations may be obtained by Telephone (800) 1-800-521-0600. Web page: http://www.proquest.com/en-US/products/dissertations/individuals.shtml.]\r\nISBN - 979-8-2098-8762-1\r\nISSN - EISSN-\r\nLA - English\r\nPT - Dissertations/Theses - Doctoral Dissertations\r\n\r\n\r\n\r\nOWN - ERIC\r\nTI - Evidence-Based Instructional Strategies for Transition. Brookes Transition to Adulthood Series\r\nAU - Test, David W.\r\nOT - Adolescents\r\nOT - Young Adults\r\nOT - Disabilities\r\nOT - Transitional Programs\r\nOT - Special Education Teachers\r\nOT - School Counselors\r\nOT - Specialists\r\nOT - Related Services (Special Education)\r\nOT - Alignment (Education)\r\nOT - Student Needs\r\nOT - Student Interests\r\nOT - Informal Assessment\r\nOT - Educational Objectives\r\nOT - Skill Development\r\nOT - Job Application\r\nOT - Interpersonal Competence\r\nOT - Instructional Effectiveness\r\nOT - Educational Strategies\r\nOT - Family Involvement\r\nOT - Evidence\r\nJT - Brookes Publishing Company\r\nAID - http://www.brookespublishing.com/store/books/test-71929/index.htm\r\nOID - ED529121\r\nDP - 2012\r\nLID - http://eric.ed.gov/?id=ED529121\r\nAB - To meet the high-stakes requirements of IDEA's Indicator 13, professionals need proven and practical ways to support successful transitions for young adults with significant disabilities. Now there's a single guidebook to help them meet that critical goal--straight from David Test, one of today's most highly respected authorities on transitions to adulthood. Packed with down-to-earth, immediately useful transition strategies, this book has the evidence-based guidance readers need to help students with moderate and severe disabilities prepare for every aspect of adult life, from applying for a job to improving social skills. Special educators, transition specialists, guidance counselors, and other professionals will discover how to: (1) align instruction with IDEA requirements; (2) pinpoint student needs and interests with formal and informal assessment strategies; (3) strengthen IEPs with measurable, relevant, and specific postsecondary goals; (4) teach students the skills needed to succeed; (5) use the most effective instructional strategies, such as mnemonics, response prompting, peer assistance, visual displays, and computer-assisted instruction; (6) assess effectiveness of instruction; (7) increase student and family involvement in transition planning--the best way to ensure positive outcomes that reflect a student's individual choices. Readers will help make transition as seamless as possible with practical materials that guide the planning process, including IEP templates and worksheets, checklists and key questions, thumbnails of key research studies, and sample scenarios that show teaching strategies in action. An essential road map for all professionals involved in transition planning, this book will help ensure that students with moderate and severe disabilities reach their destination: a successful adult life that reflects their goals and dreams. Contents of this book include: (1) Transition-Focused Education (David W. Test); (2) Transition Assessment for Instruction (Dawn A. Rowe, Larry Kortering, and David W. Test); (3) Teaching Strategies (Sharon M. Richter, April L. Mustian, and David W. Test); (4) Data Collection Strategies (Valerie L. Mazzotti and David W. Test); (5) Student-Focused Planning (Nicole Uphold and Melissa Hudson); (6) Student Development: Employment Skills (Allison Walker and Audrey Bartholomew); (7) Bound for Success: Teaching Life Skills (April L. Mustian and Sharon L. Richter); and (8) Strategies for Teaching Academic Skills (Allison Walker and Kelly Kelley). An index is included.\r\nISBN - ISBN-978-1-5985-7192-9\r\nPT - Books\r\nPT - Collected Works - General",
"items": [
{
"itemType": "thesis",
"title": "Tests of Robustness in Peer Review",
"creators": [
{
"firstName": "Jeremy",
"lastName": "Leipzig",
"creatorType": "author"
}
],
"date": "2021",
"abstractNote": "Purpose: The purpose of this dissertation is to investigate the feasibility of using tests of robustness in peer review. This study involved selecting three high-impact papers which featured open data and utilized bioinformatic analyses but provided no source code and refactoring these to allow external survey participants to swap tools, parameters, and data subsets to evaluate the robustness and underlying validity of these analyses. Technical advances that have taken place in recent years--scientific computing infrastructure has matured to support the distribution of reproducible computational analyses--enable this approach. These advances, along with cultural shifts encompassing open data and open code initiatives, promise to address technical stumbling blocks that have contributed to the \"reproducibility crisis.\" To take full advantage of these developments toward improving scientific quality, authors, reviewers, and publishers must integrate reproducible analysis into the peer review process. Seven existing major case study types - reproduction, replication, refactor, robustness test, survey, census, and case narrative - have been invaluable toward establishing reproducibility as a serious and independent area of research. Of particular interest are refactors, in which an existing analysis with abstract methods is reimplemented by a third party, and robustness tests, which involve the manipulation of tools, parameters, and data to assess the scientific validity of an analysis. This thesis describes efforts to test the feasibility of robustness testing in the context of in silico peer review. The contributions described are complemented with extensive source code. Design and Methods: A multi-method approach was employed for this study consisting of user surveys and tests of robustness--hands-on, self-directed software development exercises. Three high-impact genomics publications with open data, but no source code, were selected, refactored, and distributed to active study participants who acted as quasi-external reviewers. The process of the refactor was used to evaluate the limitations of reproducibility using conventional tools and to study how best to present analyses for peer review, and the tests of robustness were employed under the hypothesis this practice would help to evaluate the underlying validity of an analysis. Three different approaches were taken in these tests of robustness--a faithful reproduction of the original manuscript into a framework that could be manipulated by participants, a workflow-library approach in which participants were encouraged to employ modern \"off-the-shelf\" pre-built pipelines to triangulate tests, and an advisor-led approach in which senior experts suggested alternate tools to be implemented and I generated a report for their evaluation. Findings: The refactors and tests of robustness produced numerous discoveries both in terms of the underlying scientific content and, more importantly, into the strengths and weakness of the three robustness approaches (faithful/workflow-library/advisor-led) and pain points in the analytic stack, which may be addressed with appropriate software and metadata. The principal findings are that the faithful approach may often discourage aggressive robustness testing because of the inertia imposed by the existing framework, the workflow-library approach is efficient but can prove inconclusive, and the advisor-led approach may be most practical for journals but requires a higher level of communication to be effective. The vast majority of time in all these refactors was spent on sample metadata management, particularly organizing sample groups of biological and technical replicates to produce the numerous and varied tool input manifests. Practical Implications: Reproducibility-enabled in silico peer review is substantially more time-consuming than traditional manuscript peer review and will require economic, cultural, and technical change to bring to reality. The work presented here could contribute to developing new models to minimize the increased effort of this type of peer review while incentivizing reproducibility. Value: This study provides practical guidance toward designing the future of reproducibility-enabled in silico peer review, which is a logical extension of the computational reproducibility afforded by technical advances in dependency management, containerization, pipeline frameworks, and notebooks. [The dissertation citations contained here are published with the permission of ProQuest LLC. Further reproduction is prohibited without permission. Copies of dissertations may be obtained by Telephone (800) 1-800-521-0600. Web page: http://www.proquest.com/en-US/products/dissertations/individuals.shtml.]",
"archive": "ProQuest LLC",
"extra": "ERIC Number: ED620611",
"language": "English",
"university": "Drexel University",
"attachments": [
{
"title": "Catalog Link",
"snapshot": false
}
],
"tags": [
{
"tag": "Computer Software"
},
{
"tag": "Data Analysis"
},
{
"tag": "Evaluation Methods"
},
{
"tag": "Peer Evaluation"
},
{
"tag": "Research Methodology"
},
{
"tag": "Robustness (Statistics)"
}
],
"notes": [],
"seeAlso": []
},
{
"itemType": "book",
"creators": [
{
"firstName": "David W.",
"lastName": "Test",
"creatorType": "author"
}
],
"date": "2012",
"ISBN": "9781598571929",
"abstractNote": "To meet the high-stakes requirements of IDEA's Indicator 13, professionals need proven and practical ways to support successful transitions for young adults with significant disabilities. Now there's a single guidebook to help them meet that critical goal--straight from David Test, one of today's most highly respected authorities on transitions to adulthood. Packed with down-to-earth, immediately useful transition strategies, this book has the evidence-based guidance readers need to help students with moderate and severe disabilities prepare for every aspect of adult life, from applying for a job to improving social skills. Special educators, transition specialists, guidance counselors, and other professionals will discover how to: (1) align instruction with IDEA requirements; (2) pinpoint student needs and interests with formal and informal assessment strategies; (3) strengthen IEPs with measurable, relevant, and specific postsecondary goals; (4) teach students the skills needed to succeed; (5) use the most effective instructional strategies, such as mnemonics, response prompting, peer assistance, visual displays, and computer-assisted instruction; (6) assess effectiveness of instruction; (7) increase student and family involvement in transition planning--the best way to ensure positive outcomes that reflect a student's individual choices. Readers will help make transition as seamless as possible with practical materials that guide the planning process, including IEP templates and worksheets, checklists and key questions, thumbnails of key research studies, and sample scenarios that show teaching strategies in action. An essential road map for all professionals involved in transition planning, this book will help ensure that students with moderate and severe disabilities reach their destination: a successful adult life that reflects their goals and dreams. Contents of this book include: (1) Transition-Focused Education (David W. Test); (2) Transition Assessment for Instruction (Dawn A. Rowe, Larry Kortering, and David W. Test); (3) Teaching Strategies (Sharon M. Richter, April L. Mustian, and David W. Test); (4) Data Collection Strategies (Valerie L. Mazzotti and David W. Test); (5) Student-Focused Planning (Nicole Uphold and Melissa Hudson); (6) Student Development: Employment Skills (Allison Walker and Audrey Bartholomew); (7) Bound for Success: Teaching Life Skills (April L. Mustian and Sharon L. Richter); and (8) Strategies for Teaching Academic Skills (Allison Walker and Kelly Kelley). An index is included.",
"extra": "ERIC Number: ED529121",
"publisher": "Brookes Publishing Company",
"attachments": [
{
"title": "Catalog Link",
"snapshot": false
}
],
"tags": [
{
"tag": "Adolescents"
},
{
"tag": "Alignment (Education)"
},
{
"tag": "Disabilities"
},
{
"tag": "Educational Objectives"
},
{
"tag": "Educational Strategies"
},
{
"tag": "Evidence"
},
{
"tag": "Family Involvement"
},
{
"tag": "Informal Assessment"
},
{
"tag": "Instructional Effectiveness"
},
{
"tag": "Interpersonal Competence"
},
{
"tag": "Job Application"
},
{
"tag": "Related Services (Special Education)"
},
{
"tag": "School Counselors"
},
{
"tag": "Skill Development"
},
{
"tag": "Special Education Teachers"
},
{
"tag": "Specialists"
},
{
"tag": "Student Interests"
},
{
"tag": "Student Needs"
},
{
"tag": "Transitional Programs"
},
{
"tag": "Young Adults"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "PMID- 36216673\r\nOWN - NLM\r\nSTAT- Publisher\r\nLR - 20221010\r\nIS - 1545-1534 (Electronic)\r\nIS - 1080-6032 (Linking)\r\nDP - 2022 Oct 7\r\nTI - Lichtenberg Figures: How a Cutaneous Sign Can Solve Suspicious Death Cases.\r\nLID - S1080-6032(22)00139-9 [pii]\r\nLID - 10.1016/j.wem.2022.07.008 [doi]\r\nAB - Lightning is a natural weather phenomenon that occurs most commonly during the \r\n summer months in the afternoon or early evening. Lightning strikes can cause \r\n accidental deaths. In developed countries, lightning fatalities occur almost \r\n exclusively outdoors. Deaths from lightning may be in remote places with no \r\n witnesses. Forensic pathologists may not be able to reach the scene of death \r\n because it is too hazardous or inaccessible. Bodies may have neither evidence of \r\n skin burns nor torn areas on their clothes. The presumption of accidental death \r\n may be difficult to prove. We present 3 cases in which neither the examination of \r\n the death scene nor the examination of the bodies by those who attested to the \r\n death were performed. The bodies were transported to the morgue for a forensic \r\n autopsy because the deaths were considered suspicious. Physicians who attest to \r\n death in open spaces during weather that could produce lightning should actively \r\n search for Lichtenberg figures, which are considered irrefutable proof of fatal \r\n lightning in such settings. They should also photograph them and submit them as \r\n evidence. Nevertheless, physicians should keep in mind that Lichtenberg figures \r\n are not considered pathognomonic of lightning because some skin manifestations \r\n may mimic them.\r\nCI - Copyright © 2022 Wilderness Medical Society. Published by Elsevier Inc. All \r\n rights reserved.\r\nFAU - Manoubi, Syrine Azza\r\nAU - Manoubi SA\r\nAD - Universite de Tunis El Manar Faculte de Medecine de Tunis, Tunis, Tunisia. \r\n Electronic address: syrine.manoubi.lajmi@gmail.com.\r\nFAU - Shimi, Maha\r\nAU - Shimi M\r\nAD - Universite de Tunis El Manar Faculte de Medecine de Tunis, Tunis, Tunisia.\r\nFAU - Gharbaoui, Meriem\r\nAU - Gharbaoui M\r\nAD - Universite de Tunis El Manar Faculte de Medecine de Tunis, Tunis, Tunisia.\r\nFAU - Allouche, Mohamed\r\nAU - Allouche M\r\nAD - Universite de Tunis El Manar Faculte de Medecine de Tunis, Tunis, Tunisia.\r\nLA - eng\r\nPT - Case Reports\r\nDEP - 20221007\r\nPL - United States\r\nTA - Wilderness Environ Med\r\nJT - Wilderness & environmental medicine\r\nJID - 9505185\r\nSB - IM\r\nOTO - NOTNLM\r\nOT - autopsy\r\nOT - forensic pathology\r\nOT - lightning injury\r\nOT - natural disaster\r\nOT - skin manifestation\r\nEDAT- 2022/10/11 06:00\r\nMHDA- 2022/10/11 06:00\r\nCRDT- 2022/10/10 22:05\r\nPHST- 2022/03/21 00:00 [received]\r\nPHST- 2022/07/02 00:00 [revised]\r\nPHST- 2022/07/14 00:00 [accepted]\r\nPHST- 2022/10/10 22:05 [entrez]\r\nPHST- 2022/10/11 06:00 [pubmed]\r\nPHST- 2022/10/11 06:00 [medline]\r\nAID - S1080-6032(22)00139-9 [pii]\r\nAID - 10.1016/j.wem.2022.07.008 [doi]\r\nPST - aheadofprint\r\nSO - Wilderness Environ Med. 2022 Oct 7:S1080-6032(22)00139-9. doi: \r\n 10.1016/j.wem.2022.07.008.\r\n",
"items": [
{
"itemType": "journalArticle",
"title": "Lichtenberg Figures: How a Cutaneous Sign Can Solve Suspicious Death Cases.",
"creators": [
{
"firstName": "Syrine Azza",
"lastName": "Manoubi",
"creatorType": "author"
},
{
"firstName": "Maha",
"lastName": "Shimi",
"creatorType": "author"
},
{
"firstName": "Meriem",
"lastName": "Gharbaoui",
"creatorType": "author"
},
{
"firstName": "Mohamed",
"lastName": "Allouche",
"creatorType": "author"
}
],
"date": "2022 Oct 7",
"DOI": "10.1016/j.wem.2022.07.008",
"ISSN": "1545-1534 1080-6032",
"abstractNote": "Lightning is a natural weather phenomenon that occurs most commonly during the summer months in the afternoon or early evening. Lightning strikes can cause accidental deaths. In developed countries, lightning fatalities occur almost exclusively outdoors. Deaths from lightning may be in remote places with no witnesses. Forensic pathologists may not be able to reach the scene of death because it is too hazardous or inaccessible. Bodies may have neither evidence of skin burns nor torn areas on their clothes. The presumption of accidental death may be difficult to prove. We present 3 cases in which neither the examination of the death scene nor the examination of the bodies by those who attested to the death were performed. The bodies were transported to the morgue for a forensic autopsy because the deaths were considered suspicious. Physicians who attest to death in open spaces during weather that could produce lightning should actively search for Lichtenberg figures, which are considered irrefutable proof of fatal lightning in such settings. They should also photograph them and submit them as evidence. Nevertheless, physicians should keep in mind that Lichtenberg figures are not considered pathognomonic of lightning because some skin manifestations may mimic them.",
"extra": "PMID: 36216673",
"journalAbbreviation": "Wilderness Environ Med",
"language": "eng",
"pages": "S1080-6032(22)00139-9",
"publicationTitle": "Wilderness & environmental medicine",
"rights": "Copyright © 2022 Wilderness Medical Society. Published by Elsevier Inc. All rights reserved.",
"attachments": [],
"tags": [
{
"tag": "autopsy"
},
{
"tag": "forensic pathology"
},
{
"tag": "lightning injury"
},
{
"tag": "natural disaster"
},
{
"tag": "skin manifestation"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Sebastian Karcher^https?://journals\.sagepub\.com(/doi/((abs|full|pdf)/)?10\.|/action/doSearch\?|/toc/)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2016 Philipp Zumstein
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
// SAGE uses Atypon, but as of now this is too distinct from any existing Atypon sites to make sense in the same translator.
function detectWeb(doc, url) {
let articleMatch = /(abs|full|pdf|doi)\/10\./;
if (articleMatch.test(url)) {
return "journalArticle";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = ZU.xpath(doc, '//*[contains(@class, "item__title")]/a[contains(@href, "/doi/full/10.") or contains(@href, "/doi/abs/10.") or contains(@href, "/doi/pdf/10.")][1]');
for (var i = 0; i < rows.length; i++) {
var href = rows[i].href;
var title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
href = href.replace("/doi/pdf/", "/doi/abs/");
items[href] = title;
}
return found ? items : false;
}
async function doWeb(doc, url) {
if (detectWeb(doc, url) == 'multiple') {
let items = await Zotero.selectItems(getSearchResults(doc, false));
if (!items) return;
for (let url of Object.keys(items)) {
await scrape(await requestDocument(url));
}
}
else {
await scrape(doc, url);
}
}
async function scrape(doc, url) {
let risURL = "//journals.sagepub.com/action/downloadCitation";
let doi = ZU.xpathText(doc, '//meta[@name="dc.Identifier" and @scheme="doi"]/@content');
if (!doi) {
doi = url.match(/10\.[^?#]+/)[0];
}
let post = "doi=" + encodeURIComponent(doi) + "&include=abs&format=ris&direct=false&submit=Download+Citation";
let pdfurl = "//" + doc.location.host + "/doi/pdf/" + doi;
let tags = doc.querySelectorAll('div.abstractKeywords a');
// Z.debug(pdfurl);
// Z.debug(post);
let options = { method: "POST", body: post };
let text = await requestText(risURL, options);
// The publication date is saved in DA and the date first
// appeared online is in Y1. Thus, we want to prefer DA over T1
// and will therefore simply delete the later in cases both
// dates are present.
// Z.debug(text);
if (text.includes("DA - ")) {
text = text.replace(/Y1[ ]{2}- .*\r?\n/, '');
}
let translator = Zotero.loadTranslator("import");
translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7");
translator.setString(text);
translator.setHandler("itemDone", (_obj, item) => {
// The subtitle will be neglected in RIS and is only present in
// the website itself. Moreover, there can be problems with
// encodings of apostrophs.
let subtitle = ZU.xpathText(doc, '//div[contains(@class, "publicationContentSubTitle")]/h1');
let title = ZU.xpathText(doc, '//div[contains(@class, "publicationContentTitle")]/h1');
if (title) {
item.title = title.trim();
if (subtitle) {
item.title += ': ' + subtitle.trim();
}
}
// The encoding of apostrophs in the RIS are incorrect and
// therefore we extract the abstract again from the website.
let abstract = doc.querySelector("#abstract");
if (abstract) {
item.abstractNote = abstract.innerText.replace(/^Abstract/, "").replace(/:\n/g, ": ").trim();
}
for (let tag of tags) {
item.tags.push(tag.textContent);
}
// Workaround while Sage hopefully fixes RIS for authors
for (let i = 0; i < item.creators.length; i++) {
if (!item.creators[i].firstName) {
let type = item.creators[i].creatorType;
let comma = item.creators[i].lastName.includes(",");
item.creators[i] = ZU.cleanAuthor(item.creators[i].lastName, type, comma);
}
}
item.notes = [];
item.language = ZU.xpathText(doc, '//meta[@name="dc.Language"]/@content');
item.attachments.push({
url: pdfurl,
title: "SAGE PDF Full Text",
mimeType: "application/pdf"
});
item.complete();
});
await translator.translate();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://journals.sagepub.com/doi/abs/10.1177/1754073910380971",
"detectedItemType": "journalArticle",
"items": [
{
"itemType": "journalArticle",
"title": "Emotion and Regulation are One!",
"creators": [
{
"lastName": "Kappas",
"firstName": "Arvid",
"creatorType": "author"
}
],
"date": "2011-01-01",
"DOI": "10.1177/1754073910380971",
"ISSN": "1754-0739",
"abstractNote": "Emotions are foremost self-regulating processes that permit rapid responses and adaptations to situations of personal concern. They have biological bases and are shaped ontogenetically via learning and experience. Many situations and events of personal concern are social in nature. Thus, social exchanges play an important role in learning about rules and norms that shape regulation processes. I argue that (a) emotions often are actively auto-regulating—the behavior implied by the emotional reaction bias to the eliciting event or situation modifies or terminates the situation; (b) certain emotion components are likely to habituate dynamically, modifying the emotional states; (c) emotions are typically intra- and interpersonal processes at the same time, and modulating forces at these different levels interact; (d) emotions are not just regulated—they regulate. Important conclusions of my arguments are that the scientific analysis of emotion should not exclude regulatory processes, and that effortful emotion regulation should be seen relative to a backdrop of auto-regulation and habituation, and not the ideal notion of a neutral baseline. For all practical purposes unregulated emotion is not a realistic concept.",
"issue": "1",
"language": "en",
"libraryCatalog": "SAGE Journals",
"pages": "17-25",
"publicationTitle": "Emotion Review",
"url": "https://doi.org/10.1177/1754073910380971",
"volume": "3",
"attachments": [
{
"title": "SAGE PDF Full Text",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://journals.sagepub.com/toc/rera/86/3",
"items": "multiple"
},
{
"type": "web",
"url": "https://journals.sagepub.com/doi/full/10.1177/0954408914525387",
"items": [
{
"itemType": "journalArticle",
"title": "Brookfield powder flow tester – Results of round robin tests with CRM-116 limestone powder",
"creators": [
{
"lastName": "Berry",
"firstName": "RJ",
"creatorType": "author"
},
{
"lastName": "Bradley",
"firstName": "MSA",
"creatorType": "author"
},
{
"lastName": "McGregor",
"firstName": "RG",
"creatorType": "author"
}
],
"date": "August 1, 2015",
"DOI": "10.1177/0954408914525387",
"ISSN": "0954-4089",
"abstractNote": "A low cost powder flowability tester for industry has been developed at The Wolfson Centre for Bulk Solids Handling Technology, University of Greenwich in collaboration with Brookfield Engineering and four food manufacturers: Cadbury, Kerry Ingredients, GSK and United Biscuits. Anticipated uses of the tester are primarily for quality control and new product development, but it can also be used for storage vessel design., This paper presents the preliminary results from ‘round robin’ trials undertaken with the powder flow tester using the BCR limestone (CRM-116) standard test material. The mean flow properties have been compared to published data found in the literature for the other shear testers.",
"issue": "3",
"journalAbbreviation": "Proceedings of the Institution of Mechanical Engineers, Part E: Journal of Process Mechanical Engineering",
"language": "en",
"libraryCatalog": "SAGE Journals",
"pages": "215-230",
"publicationTitle": "Proceedings of the Institution of Mechanical Engineers, Part E: Journal of Process Mechanical Engineering",
"url": "https://doi.org/10.1177/0954408914525387",
"volume": "229",
"attachments": [
{
"title": "SAGE PDF Full Text",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "BCR limestone powder (CRM-116)"
},
{
"tag": "Brookfield powder flow tester"
},
{
"tag": "Jenike shear cell"
},
{
"tag": "Schulze ring shear tester"
},
{
"tag": "Shear cell"
},
{
"tag": "characterizing powder flowability"
},
{
"tag": "flow function"
},
{
"tag": "reproducibility"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://journals.sagepub.com/action/doSearch?AllField=test",
"items": "multiple"
},
{
"type": "web",
"url": "https://journals.sagepub.com/doi/full/10.1177/1541204015581389",
"items": [
{
"itemType": "journalArticle",
"title": "Moffitt’s Developmental Taxonomy and Gang Membership: An Alternative Test of the Snares Hypothesis",
"creators": [
{
"lastName": "Petkovsek",
"firstName": "Melissa A.",
"creatorType": "author"
},
{
"lastName": "Boutwell",
"firstName": "Brian B.",
"creatorType": "author"
},
{
"lastName": "Barnes",
"firstName": "J. C.",
"creatorType": "author"
},
{
"lastName": "Beaver",
"firstName": "Kevin M.",
"creatorType": "author"
}
],
"date": "October 1, 2016",
"DOI": "10.1177/1541204015581389",
"ISSN": "1541-2040",
"abstractNote": "Moffitt’s taxonomy remains an influential theoretical framework within criminology. Despite much empirical scrutiny, comparatively less time has been spent testing the snares component of Moffitt’s work. Specifically, are there factors that might engender continued criminal involvement for individuals otherwise likely to desist? The current study tested whether gang membership increased the odds of contact with the justice system for each of the offender groups specified in Moffitt’s original developmental taxonomy. Our findings provided little evidence that gang membership increased the odds of either adolescence-limited or life-course persistent offenders being processed through the criminal justice system. Moving forward, scholars may wish to shift attention to alternative variables—beyond gang membership—when testing the snares hypothesis.",
"issue": "4",
"journalAbbreviation": "Youth Violence and Juvenile Justice",
"language": "en",
"libraryCatalog": "SAGE Journals",
"pages": "335-349",
"publicationTitle": "Youth Violence and Juvenile Justice",
"shortTitle": "Moffitt’s Developmental Taxonomy and Gang Membership",
"url": "https://doi.org/10.1177/1541204015581389",
"volume": "14",
"attachments": [
{
"title": "SAGE PDF Full Text",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Moffitt’s developmental taxonomy"
},
{
"tag": "delinquency"
},
{
"tag": "gang membership"
},
{
"tag": "snares"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://journals.sagepub.com/doi/10.1177/0263276404046059",
"detectedItemType": "journalArticle",
"items": [
{
"itemType": "journalArticle",
"title": "The ‘System’ of Automobility",
"creators": [
{
"lastName": "Urry",
"firstName": "John",
"creatorType": "author"
}
],
"date": "2004-10-01",
"DOI": "10.1177/0263276404046059",
"ISSN": "0263-2764",
"abstractNote": "This article is concerned with how to conceptualize and theorize the nature of the ‘car system’ that is a particularly key, if surprisingly neglected, element in ‘globalization’. The article deploys the notion of systems as self-reproducing or autopoietic. This notion is used to understand the origins of the 20th-century car system and especially how its awesome pattern of path dependency was established and exerted a particularly powerful and self-expanding pattern of domination across the globe. The article further considers whether and how the 20th-century car system may be transcended. It elaborates a number of small changes that are now occurring in various test sites, factories, ITC sites, cities and societies. The article briefly considers whether these small changes may in their contingent ordering end this current car system. The article assesses whether such a new system could emerge well before the end of this century, whether in other words some small changes now may produce the very large effect of a new post-car system that would have great implications for urban life, for mobility and for limiting projected climate change.",
"issue": "4-5",
"language": "en",
"libraryCatalog": "SAGE Journals",
"pages": "25-39",
"publicationTitle": "Theory, Culture & Society",
"url": "https://doi.org/10.1177/0263276404046059",
"volume": "21",
"attachments": [
{
"title": "SAGE PDF Full Text",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://journals.sagepub.com/doi/10.1177/1071181322661302",
"detectedItemType": "journalArticle",
"items": [
{
"itemType": "journalArticle",
"title": "Deidentification of Drivers’ Face Videos: Scope and Challenges in Human Factors Research",
"creators": [
{
"lastName": "Thapa",
"firstName": "Surendrabikram",
"creatorType": "author"
},
{
"lastName": "Cook",
"firstName": "Julie",
"creatorType": "author"
},
{
"lastName": "Sarkar",
"firstName": "Abhijit",
"creatorType": "author"
}
],
"date": "2022-09-01",
"DOI": "10.1177/1071181322661302",
"ISSN": "2169-5067",
"abstractNote": "Data sharing across disciplines helps to build collaboration, and advance research. With recent development in data-driven models, there is an unprecedented need for data. However, data collected from human research subjects are required to follow proper ethical guidelines. Researchers have an obligation to protect the privacy of research participants and address ethical and safety concerns when data contains personally identifying information (PII). This paper addresses this problem with a focus on sharing drivers’ face videos for transportation research. The paper first gives an overview of the multitude of problems that are associated with sharing drivers’ videos. Then it demonstrates the possible directions for data sharing by de-identifying drivers’ faces using artificial intelligence-based techniques. The results achieved through the proposed techniques were evaluated qualitatively and quantitatively to prove the validity of the suggested methods. We specifically demonstrated how face-swapping algorithms can effectively de-identify faces while still preserving important attributes related to human factor research including eye movements, head movements, mouth movements, etc. Finally, we discuss possible measures to share such de-identified videos with the greater research community.",
"issue": "1",
"language": "en",
"libraryCatalog": "SAGE Journals",
"pages": "1509-1513",
"publicationTitle": "Proceedings of the Human Factors and Ergonomics Society Annual Meeting",
"shortTitle": "Deidentification of Drivers’ Face Videos",
"url": "https://doi.org/10.1177/1071181322661302",
"volume": "66",
"attachments": [
{
"title": "SAGE PDF Full Text",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Abe Jellinek/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
const preprintType = ZU.fieldIsValidForType('title', 'preprint')
? 'preprint'
: 'report';
// https://github.com/yymao/adstex/blob/64989c9e75d7401ea2b33b546664cbc34cce6a27/adstex.py
const bibcodeRe = /^\d{4}\D\S{13}[A-Z.:]$/;
function detectSearch(items) {
return !!filterQuery(items).length;
}
function doSearch(items) {
let bibcodes = filterQuery(items);
if (!bibcodes.length) return;
scrape(bibcodes);
}
function filterQuery(items) {
if (!items) return [];
if (!items.length) items = [items];
// filter out invalid queries
let bibcodes = [];
for (let item of items) {
if (item.adsBibcode && typeof item.adsBibcode == 'string') {
let bibcode = item.adsBibcode.trim();
if (bibcodeRe.test(bibcode)) {
bibcodes.push(bibcode);
}
}
}
return bibcodes;
}
function extractId(url) {
return /\/abs\/([^/]+)/.exec(url)[1];
}
function getTypeFromId(id) {
// bibcodes always start with 4 digit year, then bibstem
const bibstem = id.slice(4);
if (bibstem.startsWith("MsT") || bibstem.startsWith("PhDT")) {
return "thesis";
}
else if (bibstem.startsWith("arXiv")) {
return preprintType;
}
else {
// now scan past the bibstem and find the volume number/type abbrev.
const volume = bibstem.substring(5, 9);
if (volume == "conf" || volume == "meet" || volume == "coll"
|| volume == "proc" || volume == "book") {
return "book";
}
else if (volume == "rept") {
return "report";
}
}
return "journalArticle";
}
function makePdfUrl(id) {
return "https://ui.adsabs.harvard.edu/link_gateway/" + id + "/ARTICLE";
}
function scrape(ids) {
ZU.doGet('https://api.adsabs.harvard.edu/v1/accounts/bootstrap', function (respText) {
let json = JSON.parse(respText);
let token = json.access_token;
let exportUrl = "https://ui.adsabs.harvard.edu/v1/export/ris";
let body = JSON.stringify({
bibcode: ids,
sort: ['date desc, bibcode desc']
});
ZU.doPost(exportUrl, body, function (respText) {
let json = JSON.parse(respText);
const translator = Zotero.loadTranslator("import");
translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7"); // RIS
translator.setString(json.export);
translator.setHandler("itemDone", function (obj, item) {
const id = extractId(item.url);
let detectedType = getTypeFromId(id);
if (detectedType != item.itemType) {
Z.debug(`Changing item type: ${item.itemType} -> ${detectedType}`);
item.itemType = detectedType;
}
item.extra = (item.extra || '') + `\nADS Bibcode: ${id}`;
if (id.slice(4).startsWith('arXiv')) {
if (preprintType == "report") {
item.extra += '\nType: article'; // will map to preprint
}
}
if (item.pages && item.pages.startsWith('arXiv:')) {
// not sure why this ends up in the SP tag
delete item.pages;
}
item.attachments.push({
url: makePdfUrl(id),
title: "Full Text PDF",
mimeType: "application/pdf"
});
if (item.journalAbbreviation == item.publicationTitle) {
item.journalAbbreviation = '';
}
if (item.date) {
item.date = ZU.strToISO(item.date);
}
item.libraryCatalog = 'NASA ADS';
item.complete();
});
translator.translate();
}, { Authorization: 'Bearer:' + token });
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "search",
"input": {
"adsBibcode": "2022MSSP..16208070W"
},
"items": [
{
"itemType": "journalArticle",
"title": "Research and application of neural network for tread wear prediction and optimization",
"creators": [
{
"lastName": "Wang",
"firstName": "Meiqi",
"creatorType": "author"
},
{
"lastName": "Jia",
"firstName": "Sixian",
"creatorType": "author"
},
{
"lastName": "Chen",
"firstName": "Enli",
"creatorType": "author"
},
{
"lastName": "Yang",
"firstName": "Shaopu",
"creatorType": "author"
},
{
"lastName": "Liu",
"firstName": "Pengfei",
"creatorType": "author"
},
{
"lastName": "Qi",
"firstName": "Zhuang",
"creatorType": "author"
}
],
"date": "2022-01-01",
"DOI": "10.1016/j.ymssp.2021.108070",
"ISSN": "0888-3270",
"abstractNote": "The wheel tread wear of heavy haul freight car in operation leads to shortened wheel turning period, reduced operation life, and poor train operation performance. In addition, wheel rail wear is a complex non-linear problem that integrates multiple disciplines. Thus, using a single physical or mathematical model to accurately describe and predict it is difficult. How to establish a model that could accurately predict wheel tread wear is an urgent problem and challenge that needs to be solved. In this paper, a tread wear prediction and optimization method based on chaotic quantum particle swarm optimization (CQPSO)-optimized derived extreme learning machine (DELM), namely CQPSO-DELM, is proposed to overcome this problem. First, an extreme learning machine model with derivative characteristics is proposed (DELM). Next, the chaos algorithm is introduced into the quantum particle swarm optimization algorithm to optimize the parameters of DELM. Then, through the CQPSO-DELM prediction model, the vehicle dynamics model simulates the maximum wheel tread wear under different test parameters to train and predict. Results show that the error performance index of the CQPSO-DELM prediction model is smaller than that of other algorithms. Thus, it could better reflect the influence of different parameters on the value of wheel tread wear. CQPSO is used to optimize the tread coordinates to obtain a wheel profile with low wear. The optimized wheel profile is fitted and reconstructed by the cubic non-uniform rational B-spline (NURBS) theory, and the optimized wear value of the tread is compared with the original wear value. The optimized wear value is less than the original wear value, thus verifying the effectiveness of the optimization model. The CQPSO-DELM model proposed in this paper could predict the wear value of different working conditions and tree shapes and solve the problem that different operating conditions and complex environment could have a considerable effect on the prediction of tread wear value. The optimization of wheel tread and the wear prediction of different tread shapes are realized from the angle of artificial intelligence for the first time.",
"extra": "ADS Bibcode: 2022MSSP..16208070W",
"libraryCatalog": "NASA ADS",
"pages": "108070",
"publicationTitle": "Mechanical Systems and Signal Processing",
"url": "https://ui.adsabs.harvard.edu/abs/2022MSSP..16208070W",
"volume": "162",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "00-01"
},
{
"tag": "99-00"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "search",
"input": {
"adsBibcode": "2021PhDT.........5C"
},
"items": [
{
"itemType": "thesis",
"title": "Searching for the Astrophysical Gravitational-Wave Background and Prompt Radio Emission from Compact Binaries",
"creators": [
{
"lastName": "Callister",
"firstName": "Thomas A.",
"creatorType": "author"
}
],
"date": "2021-06-01",
"abstractNote": "Gravitational-wave astronomy is now a reality. During my time at Caltech, the Advanced LIGO and Virgo observatories have detected gravitational waves from dozens of compact binary coalescences. All of these gravitational-wave events occurred in the relatively local Universe. In the first part of this thesis, I will instead look towards the remote Universe, investigating what LIGO and Virgo may be able to learn about cosmologically-distant compact binaries via observation of the stochastic gravitational-wave background. The stochastic gravitational-wave background is composed of the incoherent superposition of all distant, individually-unresolvable gravitational-wave sources. I explore what we learn from study of the gravitational-wave background, both about the astrophysics of compact binaries and the fundamental nature of gravitational waves. Of course, before we can study the gravitational-wave background we must first detect it. I therefore present searches for the gravitational-wave background using data from Advanced LIGO's first two observing runs, obtaining the most stringent upper limits to date on strength of the stochastic background. Finally, I consider how one might validate an apparent detection of the gravitational-wave background, confidently distinguishing a true astrophysical signal from spurious terrestrial artifacts. The second part of this thesis concerns the search for electromagnetic counterparts to gravitational-wave events. The binary neutron star merger GW170817 was accompanied by a rich set of electromagnetic counterparts spanning nearly the entire electromagnetic spectrum. Beyond these counterparts, compact binaries may additionally generate powerful radio transients at or near their time of merger. First, I consider whether there is a plausible connection between this so-called \"prompt radio emission\" and fast radio bursts — enigmatic radio transients of unknown origin. Next, I present the first direct search for prompt radio emission from a compact binary merger using the Owens Valley Radio Observatory Long Wavelength Array (OVRO-LWA). While no plausible candidates are identified, this effort successfully demonstrates the prompt radio follow-up of a gravitational-wave source, providing a blueprint for LIGO and Virgo follow-up in their O3 observing run and beyond.",
"extra": "ADS Bibcode: 2021PhDT.........5C",
"libraryCatalog": "NASA ADS",
"url": "https://ui.adsabs.harvard.edu/abs/2021PhDT.........5C",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "search",
"input": {
"adsBibcode": "2021wfc..rept....8D"
},
"items": [
{
"itemType": "report",
"title": "WFC3 IR Blob Classification with Machine Learning",
"creators": [
{
"lastName": "Dauphin",
"firstName": "F.",
"creatorType": "author"
},
{
"lastName": "Medina",
"firstName": "J. V.",
"creatorType": "author"
},
{
"lastName": "McCullough",
"firstName": "P. R.",
"creatorType": "author"
}
],
"date": "2021-06-01",
"abstractNote": "IR blobs are small, circular, dark artifacts in WFC3 IR images caused by particulates that occasionally are deposited on a flat mirror that is nearly optically conjugate to the IR detector. Machine learning can potentially reduce the effort currently devoted to visually inspecting blobs. We describe how machine learning (ML) techniques have been implemented to develop software that will automatically find new IR blobs and notify the WFC3 Quicklook team. This report describes the data preparation, development of the ML model, and criteria for success. The results of our latest test cases demonstrate that the model finds blobs reliably, with the model correctly classifying blob and non-blob images 94% and 88% of the time, respectively. We also report tips and lessons learned from our experience in machine learning as a result of this project.",
"extra": "ADS Bibcode: 2021wfc..rept....8D",
"libraryCatalog": "NASA ADS",
"pages": "8",
"url": "https://ui.adsabs.harvard.edu/abs/2021wfc..rept....8D",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Blobs"
},
{
"tag": "Convolutional Neural Networks"
},
{
"tag": "HST"
},
{
"tag": "Hubble Space Telescope"
},
{
"tag": "IR"
},
{
"tag": "Machine Learning"
},
{
"tag": "STScI"
},
{
"tag": "Space Telescope Science Institute"
},
{
"tag": "WFC3"
},
{
"tag": "Wide Field Camera 3"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "search",
"input": {
"adsBibcode": "2021sti..book.....P"
},
"items": [
{
"itemType": "book",
"title": "Stochastic Thermodynamics: An Introduction",
"creators": [
{
"lastName": "Peliti",
"firstName": "Luca",
"creatorType": "author"
},
{
"lastName": "Pigolotti",
"firstName": "Simone",
"creatorType": "author"
}
],
"date": "2021-07-01",
"abstractNote": "The first comprehensive graduate-level introduction to stochastic thermodynamics. Stochastic thermodynamics is a well-defined subfield of statistical physics that aims to interpret thermodynamic concepts for systems ranging in size from a few to hundreds of nanometers, the behavior of which is inherently random due to thermal fluctuations. This growing field therefore describes the nonequilibrium dynamics of small systems, such as artificial nanodevices and biological molecular machines, which are of increasing scientific and technological relevance. This textbook provides an up-to-date pedagogical introduction to stochastic thermodynamics, guiding readers from basic concepts in statistical physics, probability theory, and thermodynamics to the most recent developments in the field. Gradually building up to more advanced material, the authors consistently prioritize simplicity and clarity over exhaustiveness and focus on the development of readers' physical insight over mathematical formalism. This approach allows the reader to grow as the book proceeds, helping interested young scientists to enter the field with less effort and to contribute to its ongoing vibrant development. Chapters provide exercises to complement and reinforce learning. Appropriate for graduate students in physics and biophysics, as well as researchers, Stochastic Thermodynamics serves as an excellent initiation to this rapidly evolving field. Emphasizes a pedagogical approach to the subject Highlights connections with the thermodynamics of information Pays special attention to molecular biophysics applications Privileges physical intuition over mathematical formalism Solutions manual available on request for instructors adopting the book in a course",
"extra": "ADS Bibcode: 2021sti..book.....P",
"libraryCatalog": "NASA ADS",
"shortTitle": "Stochastic Thermodynamics",
"url": "https://ui.adsabs.harvard.edu/abs/2021sti..book.....P",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "search",
"input": {
"adsBibcode": "2020jsrs.conf.....B"
},
"items": [
{
"itemType": "book",
"title": "Proceedings of the Journées Systèmes de Référence Spatio-temporels 2019 \"Astrometry, Earth Rotation and Reference System in the Gaia era\"",
"creators": [
{
"lastName": "Bizouard",
"firstName": "Christian",
"creatorType": "author"
}
],
"date": "2020-09-01",
"extra": "ADS Bibcode: 2020jsrs.conf.....B",
"libraryCatalog": "NASA ADS",
"url": "https://ui.adsabs.harvard.edu/abs/2020jsrs.conf.....B",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "search",
"input": {
"adsBibcode": "2023arXiv230604024S"
},
"items": [
{
"itemType": "preprint",
"title": "The FLAMINGO project: cosmological hydrodynamical simulations for large-scale structure and galaxy cluster surveys",
"creators": [
{
"lastName": "Schaye",
"firstName": "Joop",
"creatorType": "author"
},
{
"lastName": "Kugel",
"firstName": "Roi",
"creatorType": "author"
},
{
"lastName": "Schaller",
"firstName": "Matthieu",
"creatorType": "author"
},
{
"lastName": "Helly",
"firstName": "John C.",
"creatorType": "author"
},
{
"lastName": "Braspenning",
"firstName": "Joey",
"creatorType": "author"
},
{
"lastName": "Elbers",
"firstName": "Willem",
"creatorType": "author"
},
{
"lastName": "McCarthy",
"firstName": "Ian G.",
"creatorType": "author"
},
{
"lastName": "van Daalen",
"firstName": "Marcel P.",
"creatorType": "author"
},
{
"lastName": "Vandenbroucke",
"firstName": "Bert",
"creatorType": "author"
},
{
"lastName": "Frenk",
"firstName": "Carlos S.",
"creatorType": "author"
},
{
"lastName": "Kwan",
"firstName": "Juliana",
"creatorType": "author"
},
{
"lastName": "Salcido",
"firstName": "Jaime",
"creatorType": "author"
},
{
"lastName": "Bahé",
"firstName": "Yannick M.",
"creatorType": "author"
},
{
"lastName": "Borrow",
"firstName": "Josh",
"creatorType": "author"
},
{
"lastName": "Chaikin",
"firstName": "Evgenii",
"creatorType": "author"
},
{
"lastName": "Hahn",
"firstName": "Oliver",
"creatorType": "author"
},
{
"lastName": "Huško",
"firstName": "Filip",
"creatorType": "author"
},
{
"lastName": "Jenkins",
"firstName": "Adrian",
"creatorType": "author"
},
{
"lastName": "Lacey",
"firstName": "Cedric G.",
"creatorType": "author"
},
{
"lastName": "Nobels",
"firstName": "Folkert S. J.",
"creatorType": "author"
}
],
"date": "2023-06-01",
"DOI": "10.48550/arXiv.2306.04024",
"abstractNote": "We introduce the Virgo Consortium's FLAMINGO suite of hydrodynamical simulations for cosmology and galaxy cluster physics. To ensure the simulations are sufficiently realistic for studies of large-scale structure, the subgrid prescriptions for stellar and AGN feedback are calibrated to the observed low-redshift galaxy stellar mass function and cluster gas fractions. The calibration is performed using machine learning, separately for three resolutions. This approach enables specification of the model by the observables to which they are calibrated. The calibration accounts for a number of potential observational biases and for random errors in the observed stellar masses. The two most demanding simulations have box sizes of 1.0 and 2.8 Gpc and baryonic particle masses of $1\\times10^8$ and $1\\times10^9 \\text{M}_\\odot$, respectively. For the latter resolution the suite includes 12 model variations in a 1 Gpc box. There are 8 variations at fixed cosmology, including shifts in the stellar mass function and/or the cluster gas fractions to which we calibrate, and two alternative implementations of AGN feedback (thermal or jets). The remaining 4 variations use the unmodified calibration data but different cosmologies, including different neutrino masses. The 2.8 Gpc simulation follows $3\\times10^{11}$ particles, making it the largest ever hydrodynamical simulation run to $z=0$. Lightcone output is produced on-the-fly for up to 8 different observers. We investigate numerical convergence, show that the simulations reproduce the calibration data, and compare with a number of galaxy, cluster, and large-scale structure observations, finding very good agreement with the data for converged predictions. Finally, by comparing hydrodynamical and `dark-matter-only' simulations, we confirm that baryonic effects can suppress the halo mass function and the matter power spectrum by up to $\\approx20$ per cent.",
"extra": "ADS Bibcode: 2023arXiv230604024S",
"libraryCatalog": "NASA ADS",
"shortTitle": "The FLAMINGO project",
"url": "https://ui.adsabs.harvard.edu/abs/2023arXiv230604024S",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Astrophysics - Astrophysics of Galaxies"
},
{
"tag": "Astrophysics - Cosmology and Nongalactic Astrophysics"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Tim Hostetler, Abe Jellinek, and Zoë C. Ma^https://ui\.adsabs\.harvard\.edu/(search|abs)//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2019-2021 Tim Hostetler and Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
const preprintType = ZU.fieldIsValidForType('title', 'preprint')
? 'preprint'
: 'report';
function getSearchResults(doc) {
const results = doc.querySelectorAll("a[href$=abstract]");
const entries = {};
for (let el of results) {
const titleEl = el.querySelector(":scope h3");
if (!titleEl) {
continue;
}
const hrefParts = el.getAttribute("href").split("/");
if (hrefParts.length > 2) {
const identifier = hrefParts[hrefParts.length - 2];
entries[identifier] = ZU.trimInternal(titleEl.textContent);
}
}
return entries;
}
function extractId(url) {
return decodeURIComponent(/\/abs\/([^/]+)/.exec(url)[1]);
}
function getTypeFromId(id) {
// bibcodes always start with 4 digit year, then bibstem
const bibstem = id.slice(4);
if (bibstem.startsWith("MsT") || bibstem.startsWith("PhDT")) {
return "thesis";
}
else if (bibstem.startsWith("arXiv")) {
return preprintType;
}
else {
// now scan past the bibstem and find the volume number/type abbrev.
const volume = bibstem.substring(5, 9);
if (volume == "conf" || volume == "meet" || volume == "coll"
|| volume == "proc" || volume == "book") {
return "book";
}
else if (volume == "rept") {
return "report";
}
}
return "journalArticle";
}
function detectWeb(doc, url) {
if (url.includes("/search/")) {
return "multiple";
}
else if (url.includes("/abs/")) {
return getTypeFromId(extractId(url));
}
return false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) === "multiple") {
Zotero.selectItems(getSearchResults(doc), function (items) {
if (!items) return true;
return scrape(Object.keys(items));
});
}
else {
scrape([extractId(url)]);
}
}
function scrape(ids) {
let trans = Zotero.loadTranslator('search');
trans.setTranslator('09bd8037-a9bb-4f9a-b3b9-d18b2564b49e');
trans.setSearch(ids.map(id => ({ adsBibcode: id })));
trans.translate();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://ui.adsabs.harvard.edu/search/p_=0&q=star&sort=date%20desc%2C%20bibcode%20desc",
"defer": true,
"items": "multiple"
},
{
"type": "web",
"url": "https://ui.adsabs.harvard.edu/abs/2020CNSNS..8205014M/abstract",
"items": [
{
"itemType": "journalArticle",
"title": "Modeling excitability in cerebellar stellate cells: Temporal changes in threshold, latency and frequency of firing",
"creators": [
{
"lastName": "Mitry",
"firstName": "John",
"creatorType": "author"
},
{
"lastName": "Alexander",
"firstName": "Ryan P. D.",
"creatorType": "author"
},
{
"lastName": "Farjami",
"firstName": "Saeed",
"creatorType": "author"
},
{
"lastName": "Bowie",
"firstName": "Derek",
"creatorType": "author"
},
{
"lastName": "Khadra",
"firstName": "Anmar",
"creatorType": "author"
}
],
"date": "2020-03-01",
"DOI": "10.1016/j.cnsns.2019.105014",
"ISSN": "1007-5704",
"abstractNote": "Cerebellar stellate cells are inhibitory molecular interneurons that regulate the firing properties of Purkinje cells, the sole output of cerebellar cortex. Recent evidence suggests that these cells exhibit temporal increase in excitability during whole-cell patch-clamp configuration in a phenomenon termed runup. They also exhibit a non-monotonic first-spike latency profile as a function of the holding potential in response to a fixed step-current. In this study, we use modeling approaches to unravel the dynamics of runup and categorize the firing behavior of cerebellar stellate cells as either type I or type II oscillators. We then extend this analysis to investigate how the non-monotonic latency profile manifests itself during runup. We employ a previously developed, but revised, Hodgkin-Huxley type model to show that stellate cells are indeed type I oscillators possessing a saddle node on an invariant cycle (SNIC) bifurcation. The SNIC in the model acts as a \"threshold\" for tonic firing and produces a slow region in the phase space called the ghost of the SNIC. The model reveals that (i) the SNIC gets left-shifted during runup with respect to Iapp =Itest in the current-step protocol, and (ii) both the distance from the stable limit cycle along with the slow region produce the non-monotonic latency profile as a function of holding potential. Using the model, we elucidate how latency can be made arbitrarily large for a specific range of holding potentials close to the SNIC during pre-runup (post-runup). We also demonstrate that the model can produce transient single spikes in response to step-currents entirely below ISNIC, and that a pair of dynamic inhibitory and excitatory post-synaptic inputs can robustly evoke action potentials, provided that the magnitude of the inhibition is either low or high but not intermediate. Our results show that the topology of the SNIC is the key to explaining such behaviors.",
"extra": "ADS Bibcode: 2020CNSNS..8205014M",
"libraryCatalog": "NASA ADS",
"pages": "105014",
"publicationTitle": "Communications in Nonlinear Science and Numerical Simulations",
"shortTitle": "Modeling excitability in cerebellar stellate cells",
"url": "https://ui.adsabs.harvard.edu/abs/2020CNSNS..8205014M",
"volume": "82",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Non-monotonic first-spike latency"
},
{
"tag": "Runup"
},
{
"tag": "Transient single spiking"
},
{
"tag": "Type I oscillator with a SNIC"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://ui.adsabs.harvard.edu/abs/2019MsT.........15M/abstract",
"items": [
{
"itemType": "thesis",
"title": "Autonomous quantum Maxwell's demon using superconducting devices",
"creators": [
{
"lastName": "Martins",
"firstName": "Gabriela Fernandes",
"creatorType": "author"
}
],
"date": "2019-07-01",
"abstractNote": "During the last years, with the evolution of technology enabling the control of nano-mesoscopic systems, the possibility of experimentally implementing a Maxwell's demon has aroused much interest. Its classical version has already been implemented, in photonic and electronic systems, and currently its quantum version is being broadly studied. In this context, the purpose of this work is the development of a protocol for the implementation of the quantum version of an autonomous Maxwell's demon in a system of superconducting qubits. The system is composed of an Asymmetrical Single-Cooper-Pair Transistor, ASCPT, which has its extremities in contact with heat baths, such that the left one has a lower temperature than the right one. And of a device of two interacting Cooper-Pair Boxes, CPB's, named as an ECPB, for Extended Cooper-Pair Box. The ECPB is also in contact with a heat bath and possess a genuine quantum feature, entanglement, being described by its antisymmetric and symmetric states, that couple capacitively to the ASCPT with different strengths. A specific operating regime was found where the spontaneous dynamics of the tunneling of Cooper pairs through the ASCPT, will led to a heat transport from the bath in contact with the left extremity of the ASCPT to the bath at the right. And so, as in Maxwell's original thought experiment, the demon, which is composed by the ECPB and the island of the ASCPT, mediates a heat flux from a cold to a hot bath, without the expense of work. However as expected, the violation of the 2nd law of thermodynamics does not occur, as during the dynamics heat is also released to the bath in contact with the ECPB, compensating the decrease of entropy that occurs in the baths in contact with the ASCPT.",
"extra": "ADS Bibcode: 2019MsT.........15M",
"libraryCatalog": "NASA ADS",
"url": "https://ui.adsabs.harvard.edu/abs/2019MsT.........15M",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://ui.adsabs.harvard.edu/abs/2019PhDT........69B/abstract",
"items": [
{
"itemType": "thesis",
"title": "Cosmology on the Edge of Lambda-Cold Dark Matter",
"creators": [
{
"lastName": "Bernal",
"firstName": "Jose Luis",
"creatorType": "author"
}
],
"date": "2019-09-01",
"abstractNote": "Cosmology is the science that studies the Universe as whole, aiming to understand its origin, composition and evolution. During the last decades, cosmology has transitioned from a \"data staved\" to a \"data driven\" science, inaugurating what is known as precision cosmology. This huge observational effort has confirmed and fostered theoretical research, and established the standard model of cosmology: Lambda-Cold Dark Matter (LCDM). This model successfully reproduces most of the observations. However, there are some persistent tensions between experiments that might be smoking guns of new physics beyond this model. Anyways, there is a difference between modeling and understanding, and LCDM is a phenomenological model that, for instance, does not describe the nature of the dark matter or dark energy. This thesis collects part of my research focused on pushing the limits of the standard cosmological model and its assumptions, regarding also existing tensions between experiments. New strategies to optimize the performance of future experiments are also proposed and discussed. The largest existing tension is between the direct measurements of the Hubble constant using the distance ladder in the local Universe and the inferred value obtained from observations of the Cosmic Microwave Background when LCDM is assumed. A model independent reconstruction of the late-time expansion history of the Universe is carried out, which allows us to identify possible sources and solutions of the tension. We also introduce the concept of the low redshift standard ruler, and measure it in a model independent way. Finally, we introduce a statistical methodology to analyze several data sets in a conservative way, no matter the level of discrepancy between them, accounting for the potential presence of systematic errors. The role of primordial black holes as candidates for dark matter is addressed in this thesis, too. Concretely, the impact of an abundant population of primordial black holes in the rest of cosmological parameters is discussed, considering also populations with extended mass distributions. In addition, massive primordial black holes might be the seeds that are needed to explain the origin of the supermassive black holes located in the center of the galaxies. We predict the contribution of a population of massive primordial black holes to the 21 cm radiation from the dark ages. This way, observations of the 21 cm intensity mapping observations of the dark ages could be used to ascertain if the seeds of the supermassive black holes are primordial. Finally, we estimate the potential of radio-continuum galaxy surveys to constrain LCDM. These kind of experiments can survey the sky quicker than spectroscopic and optical photometric surveys and cover much larger volumes. Therefore, they will be specially powerful to constrain physics which has impact on the largest observable scales, such as primordial non Gaussianity. On the other hand, intensity mapping experiments can reach higher redshifts than galaxy surveys, but the cosmological information of this signal is coupled with astrophysics. We propose a methodology to disentangle astrophysics and optimally extract cosmological information from the intensity mapping spectrum. Thanks to this methodology, intensity mapping will constrain the expansion history of the Universe up to reionization, as shown in this thesis.",
"extra": "ADS Bibcode: 2019PhDT........69B",
"libraryCatalog": "NASA ADS",
"url": "https://ui.adsabs.harvard.edu/abs/2019PhDT........69B",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://ui.adsabs.harvard.edu/abs/2022MSSP..16208010Y/abstract",
"items": [
{
"itemType": "journalArticle",
"title": "Bio-inspired toe-like structure for low-frequency vibration isolation",
"creators": [
{
"lastName": "Yan",
"firstName": "Ge",
"creatorType": "author"
},
{
"lastName": "Zou",
"firstName": "Hong-Xiang",
"creatorType": "author"
},
{
"lastName": "Wang",
"firstName": "Sen",
"creatorType": "author"
},
{
"lastName": "Zhao",
"firstName": "Lin-Chuan",
"creatorType": "author"
},
{
"lastName": "Wu",
"firstName": "Zhi-Yuan",
"creatorType": "author"
},
{
"lastName": "Zhang",
"firstName": "Wen-Ming",
"creatorType": "author"
}
],
"date": "2022-01-01",
"DOI": "10.1016/j.ymssp.2021.108010",
"ISSN": "0888-3270",
"abstractNote": "Inspired by the cushioning effect of the felid paws in contact with the ground, a novel bio-inspired toe-like structure (TLS) is developed and systematically studied for low-frequency vibration isolation. The TLS consists of two rods with different length (as phalanxes) and a linear spring (as muscle). Based on Hamiltonian principle, the dynamic model is established considering spring deformation and joint rotation damping. The derived equivalent stiffness reveals that the proposed TLS possesses favorable high static and low dynamic stiffness (HSLDS) characteristics in a wide displacement range. Besides, displacement transmissibility suggests that the proposed TLS isolator has low resonance frequency and can effectively isolate base excitation at low frequencies. Comprehensive parameter analysis shows that the inherent nonlinearities in stiffness and damping is conductive to vibration isolation and can be designed/adjusted on demand by selecting suitable structural parameters. This flexibility gives TLS advantages and great potential in extensive engineering applications when subjected to variable vibration loads. A prototype is fabricated and tested for a comprehensive recognize of its advantageous vibration isolation performance in low frequency band. The vibration with excitation frequency higher than 3 Hz can be effectively isolated. This novel bio-inspired TLS provides a feasible approach to passive vibration control and isolation in low frequency band.",
"extra": "ADS Bibcode: 2022MSSP..16208010Y",
"libraryCatalog": "NASA ADS",
"pages": "108010",
"publicationTitle": "Mechanical Systems and Signal Processing",
"url": "https://ui.adsabs.harvard.edu/abs/2022MSSP..16208010Y",
"volume": "162",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Bio-inspired structure"
},
{
"tag": "Low-frequency vibration"
},
{
"tag": "Nonlinear dynamics"
},
{
"tag": "Vibration isolation"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://ui.adsabs.harvard.edu/abs/2020arXiv201207436Z/abstract",
"items": [
{
"itemType": "preprint",
"title": "Informer: Beyond Efficient Transformer for Long Sequence Time-Series Forecasting",
"creators": [
{
"lastName": "Zhou",
"firstName": "Haoyi",
"creatorType": "author"
},
{
"lastName": "Zhang",
"firstName": "Shanghang",
"creatorType": "author"
},
{
"lastName": "Peng",
"firstName": "Jieqi",
"creatorType": "author"
},
{
"lastName": "Zhang",
"firstName": "Shuai",
"creatorType": "author"
},
{
"lastName": "Li",
"firstName": "Jianxin",
"creatorType": "author"
},
{
"lastName": "Xiong",
"firstName": "Hui",
"creatorType": "author"
},
{
"lastName": "Zhang",
"firstName": "Wancai",
"creatorType": "author"
}
],
"date": "2020-12-01",
"DOI": "10.48550/arXiv.2012.07436",
"abstractNote": "Many real-world applications require the prediction of long sequence time-series, such as electricity consumption planning. Long sequence time-series forecasting (LSTF) demands a high prediction capacity of the model, which is the ability to capture precise long-range dependency coupling between output and input efficiently. Recent studies have shown the potential of Transformer to increase the prediction capacity. However, there are several severe issues with Transformer that prevent it from being directly applicable to LSTF, including quadratic time complexity, high memory usage, and inherent limitation of the encoder-decoder architecture. To address these issues, we design an efficient transformer-based model for LSTF, named Informer, with three distinctive characteristics: (i) a $ProbSparse$ self-attention mechanism, which achieves $O(L \\log L)$ in time complexity and memory usage, and has comparable performance on sequences' dependency alignment. (ii) the self-attention distilling highlights dominating attention by halving cascading layer input, and efficiently handles extreme long input sequences. (iii) the generative style decoder, while conceptually simple, predicts the long time-series sequences at one forward operation rather than a step-by-step way, which drastically improves the inference speed of long-sequence predictions. Extensive experiments on four large-scale datasets demonstrate that Informer significantly outperforms existing methods and provides a new solution to the LSTF problem.",
"extra": "ADS Bibcode: 2020arXiv201207436Z",
"libraryCatalog": "NASA ADS",
"shortTitle": "Informer",
"url": "https://ui.adsabs.harvard.edu/abs/2020arXiv201207436Z",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Computer Science - Artificial Intelligence"
},
{
"tag": "Computer Science - Information Retrieval"
},
{
"tag": "Computer Science - Machine Learning"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://ui.adsabs.harvard.edu/abs/2023A%26ARv..31....1A/abstract",
"items": [
{
"itemType": "journalArticle",
"title": "Origin of the elements",
"creators": [
{
"lastName": "Arcones",
"firstName": "Almudena",
"creatorType": "author"
},
{
"lastName": "Thielemann",
"firstName": "Friedrich-Karl",
"creatorType": "author"
}
],
"date": "2023-12-01",
"DOI": "10.1007/s00159-022-00146-x",
"ISSN": "0935-4956",
"abstractNote": "What is the origin of the oxygen we breathe, the hydrogen and oxygen (in form of water H2O) in rivers and oceans, the carbon in all organic compounds, the silicon in electronic hardware, the calcium in our bones, the iron in steel, silver and gold in jewels, the rare earths utilized, e.g. in magnets or lasers, lead or lithium in batteries, and also of naturally occurring uranium and plutonium? The answer lies in the skies. Astrophysical environments from the Big Bang to stars and stellar explosions are the cauldrons where all these elements are made. The papers by Burbidge (Rev Mod Phys 29:547-650, 1957) and Cameron (Publ Astron Soc Pac 69:201, 1957), as well as precursors by Bethe, von Weizsäcker, Hoyle, Gamow, and Suess and Urey provided a very basic understanding of the nucleosynthesis processes responsible for their production, combined with nuclear physics input and required environment conditions such as temperature, density and the overall neutron/proton ratio in seed material. Since then a steady stream of nuclear experiments and nuclear structure theory, astrophysical models of the early universe as well as stars and stellar explosions in single and binary stellar systems has led to a deeper understanding. This involved improvements in stellar models, the composition of stellar wind ejecta, the mechanism of core-collapse supernovae as final fate of massive stars, and the transition (as a function of initial stellar mass) from core-collapse supernovae to hypernovae and long duration gamma-ray bursts (accompanied by the formation of a black hole) in case of single star progenitors. Binary stellar systems give rise to nova explosions, X-ray bursts, type Ia supernovae, neutron star, and neutron star-black hole mergers. All of these events (possibly with the exception of X-ray bursts) eject material with an abundance composition unique to the specific event and lead over time to the evolution of elemental (and isotopic) abundances in the galactic gas and their imprint on the next generation of stars. In the present review, we want to give a modern overview of the nucleosynthesis processes involved, their astrophysical sites, and their impact on the evolution of galaxies.",
"extra": "ADS Bibcode: 2023A&ARv..31....1A",
"libraryCatalog": "NASA ADS",
"pages": "1",
"publicationTitle": "Astronomy and Astrophysics Review",
"url": "https://ui.adsabs.harvard.edu/abs/2023A&ARv..31....1A",
"volume": "31",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Big Bang nucleosynthesis"
},
{
"tag": "Compact binary mergers"
},
{
"tag": "Core collapse"
},
{
"tag": "Element abundance"
},
{
"tag": "Galactic evolution"
},
{
"tag": "Stellar evolution"
},
{
"tag": "Supernovae"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Abe Jellinek^https://www\.webofscience\.com//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/full-record/') && getItemID(url)) {
let docType = text(doc, '#FullRTa-doctype-0').trim().toLowerCase();
if (docType == 'proceedings paper') {
return "conferencePaper";
}
else if (docType == "book") {
return "book";
}
else if (docType == "data set") {
return "document"; //change to dataset
}
else if (text(doc, '#FullRTa-patentNumber-0')) {
return "patent";
}
else {
return "journalArticle";
}
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
Z.monitorDOMChanges(doc.querySelector('app-wos'));
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('app-article-metadata a[href*="/WOS:"], app-summary-title a[href*="/WOS:"]');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
function processTaggedData(text) {
let importer = Zotero.loadTranslator("import");
// Web of Science Tagged
importer.setTranslator("594ebe3c-90a0-4830-83bc-9502825a6810");
importer.setString(text);
importer.setHandler('itemDone', function (obj, item) {
if (item.title.toUpperCase() == item.title) {
item.title = ZU.capitalizeTitle(item.title, true);
}
for (let creator of item.creators) {
if (creator.firstName.toUpperCase() == creator.firstName) {
creator.firstName = ZU.capitalizeTitle(creator.firstName, true);
}
if (creator.lastName.toUpperCase() == creator.lastName) {
creator.lastName = ZU.capitalizeTitle(creator.lastName, true);
}
}
if (item.url) {
item.complete();
return;
}
let gatewayURL = attr(doc, 'a#FRLinkTa-link-1', 'href');
resolveGateway(gatewayURL, (url) => {
item.url = url;
item.complete();
});
});
importer.translate();
}
let id = getItemID(url);
getSessionID(doc, (sessionID) => {
let postData = {
action: 'saveToFieldTagged',
colName: 'WOS',
displayCitedRefs: 'true',
displayTimesCited: 'true',
displayUsageInfo: 'true',
fileOpt: 'othersoftware',
filters: 'fullRecord',
product: 'UA',
view: 'fullrec',
ids: [id]
};
ZU.doPost(
'/api/wosnx/indic/export/saveToFile',
JSON.stringify(postData),
processTaggedData,
{ 'X-1P-WOS-SID': sessionID }
);
});
}
function getItemID(url) {
let idInURL = url.match(/((?:WOS|RSCI|KJD|DIIDW|MEDLINE|DRCI|BCI|SCIELO|ZOOREC|CCC):[^/?&(]+)/);
// Z.debug(idInURL)
return idInURL && idInURL[1];
}
function getSessionID(doc, callback) {
const sidRegex = /(?:sid=|"SID":")([a-zA-Z0-9]+)/i;
// session ID is embedded in the static page inside an inline <script>
// if you have the right HttpOnly cookie set. if we can't find it, we
// initialize our session as the web app does
for (let scriptTag of doc.querySelectorAll('script')) {
let sid = scriptTag.textContent.match(sidRegex);
if (sid) {
callback(sid[1]);
return;
}
}
resolveGateway('https://www.webofknowledge.com/?mode=Nextgen&action=transfer&path=%2F',
function (url) {
let sid = url.match(sidRegex);
if (sid) {
callback(sid[1]);
}
else {
callback(null);
}
});
}
function resolveGateway(gatewayURL, callback) {
ZU.doGet(gatewayURL, function (_, xhr) {
callback(xhr.responseURL || gatewayURL);
}, null, null, null, false);
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.webofscience.com/wos/woscc/full-record/WOS:000454372400003",
"items": [
{
"itemType": "journalArticle",
"title": "Histopathology of Alcohol-Related Liver Diseases",
"creators": [
{
"firstName": "Nitzan C.",
"lastName": "Roth",
"creatorType": "author"
},
{
"firstName": "Jia",
"lastName": "Qin",
"creatorType": "author"
}
],
"date": "FEB 2019",
"DOI": "10.1016/j.cld.2018.09.001",
"ISSN": "1089-3261",
"abstractNote": "Excessive alcohol consumption can lead to a spectrum of liver histopathology, including steatosis, steatohepatitis, foamy degeneration, fatty liver with cholestasis, and cirrhosis. Although variability in sampling and pathologist interpretation are of some concern, liver biopsy remains the gold standard for distinguishing between steatohepatitis and noninflammatory histologic patterns of injury that can also cause the clinical syndrome of alcohol-related hepatitis. Liver biopsy is not routinely recommended to ascertain a diagnosis of alcohol-related liver disease in patients with an uncertain alcohol history, because the histologic features of alcohol-related liver diseases can be found in other diseases, including nonalcoholic steatohepatitis and drug-induced liver injury.",
"extra": "WOS:000454372400003",
"issue": "1",
"journalAbbreviation": "Clin. Liver Dis.",
"language": "English",
"libraryCatalog": "Web of Science Nextgen",
"pages": "11-+",
"publicationTitle": "Clinics in Liver Disease",
"url": "https://www.webofscience.com/wos/woscc/full-record/WOS:000454372400003",
"volume": "23",
"attachments": [],
"tags": [
{
"tag": "Alcohol-related liver disease"
},
{
"tag": "Alcoholic steatohepatitis"
},
{
"tag": "Alcoholic fatty liver with cholestasis"
},
{
"tag": "Alcoholic foamy degeneration"
},
{
"tag": "Alcoholic hepatitis"
},
{
"tag": "Histology"
},
{
"tag": "Liver biopsy"
},
{
"tag": "biopsy"
},
{
"tag": "clinical-trials"
},
{
"tag": "diagnosis"
},
{
"tag": "failure"
},
{
"tag": "fatty liver"
},
{
"tag": "foamy degeneration"
},
{
"tag": "prognosis"
},
{
"tag": "sampling variability"
},
{
"tag": "scoring system"
},
{
"tag": "steatohepatitis"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.webofscience.com/wos/woscc/full-record/WOS:A1957WH65000008",
"items": [
{
"itemType": "journalArticle",
"title": "Superfluidity and Superconductivity",
"creators": [
{
"firstName": "Rp",
"lastName": "Feynman",
"creatorType": "author"
}
],
"date": "1957",
"DOI": "10.1103/RevModPhys.29.205",
"ISSN": "0034-6861",
"extra": "WOS:A1957WH65000008",
"issue": "2",
"journalAbbreviation": "Rev. Mod. Phys.",
"language": "English",
"libraryCatalog": "Web of Science Nextgen",
"pages": "205-212",
"publicationTitle": "Reviews of Modern Physics",
"url": "https://journals.aps.org/rmp/abstract/10.1103/RevModPhys.29.205",
"volume": "29",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.webofscience.com/wos/author/record/483204",
"defer": true,
"items": "multiple"
},
{
"type": "web",
"url": "https://www.webofscience.com/wos/woscc/full-record/WOS:000230445900101",
"defer": true,
"items": [
{
"itemType": "conferencePaper",
"title": "A conference control protocol for small scale video conferencing system",
"creators": [
{
"firstName": "L.",
"lastName": "Chen",
"creatorType": "author"
}
],
"date": "2005",
"DOI": "10.1109/ICACT.2005.245926",
"abstractNote": "Increased speeds of PCs and networks have made video conferencing systems possible in Internet. The proposed conference control protocol suits small scale video conferencing systems which employ full mesh conferencing architecture and loosely coupled conferencing mode. The protocol can ensure the number of conference member is less than the maximum value. Instant message services are used to do member authentication and notification. The protocol is verified in 32 concurrent conferencing scenarios and implemented in DigiParty which is a small scale video conferencing add-in application for MSN Messenger.",
"extra": "WOS:000230445900101",
"language": "English",
"libraryCatalog": "Web of Science Nextgen",
"pages": "532-537",
"place": "New York",
"proceedingsTitle": "7th International Conference on Advanced Communication Technology, Vols 1 and 2, Proceedings",
"publisher": "Ieee",
"url": "https://ieeexplore.ieee.org/document/1461931/",
"attachments": [],
"tags": [
{
"tag": "conference control protocol"
},
{
"tag": "full mesh"
},
{
"tag": "loosely coupled"
},
{
"tag": "video conferencing"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.webofscience.com/wos/alldb/full-record/DIIDW:202205717D",
"items": [
{
"itemType": "patent",
"title": "Preparing fibrous distillation membrane useful for anti-scaling pleated membrane distillation comprises preparing super-hydrophobic layer casting film liquid and base film by electrostatic spinning, spraying, cutting, and heating",
"creators": [],
"language": "English",
"url": "https://www.webofscience.com/wos/alldb/full-record/DIIDW:202205717D",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Tim Sherratt and Abe Jellinek^https?://trove\.nla\.gov\.au/(?:newspaper|gazette|work|book|article|picture|music|map|collection|search)//*
Trove Translator
Copyright (C) 2016-2021 Tim Sherratt (tim@discontents.com.au, @wragge)
and Abe Jellinek
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
function detectWeb(doc, url) {
if (url.includes('/search/') || url.includes('/newspaper/page')) {
return getSearchResults(doc, url, true) ? 'multiple' : false;
}
else if (url.includes('/newspaper/article')) {
return "newspaperArticle";
}
else if (url.includes('/work/')) {
let formatContainer = doc.querySelector('#workContainer .format');
if (!formatContainer) {
if (doc.querySelector('.versions')) {
return "multiple";
}
else {
// monitoring the entire body feels like overkill, but no other
// selector works. we just monitor until the page is built and
// we can detect a type.
Zotero.monitorDOMChanges(doc.body);
return false;
}
}
return checkType(formatContainer.innerText);
}
return false;
}
function getSearchResults(doc, url, checkOnly) {
var items = {};
var urls = [];
var titles = [];
var found = false;
if (url.includes('/search/')) {
for (let container of doc.querySelectorAll('.result')) {
let link = container.querySelector('.title a');
urls.push(link.href);
titles.push(link.textContent);
}
}
else if (url.includes('/work/')) {
for (let container of doc.querySelectorAll('.version-container')) {
urls.push(attr(container, 'a', 'href'));
// titles are usually the same, so we'll disambiguate using the publication year
titles.push(text(container, '.year') + ': ' + text(container, '.title'));
}
}
else {
for (let container of doc.querySelectorAll('ol.articles li a.link')) {
urls.push(container.href);
titles.push(container.textContent);
}
}
for (var i = 0; i < urls.length; i++) {
var link = urls[i];
var title = ZU.trimInternal(titles[i]);
if (!title || !link) continue;
if (checkOnly) return true;
found = true;
items[link] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, url), function (items) {
if (!items) return;
for (var i in items) {
// Pass the current document as context for cookie
// retrieval and API-key computation.
scrape(null, i, doc/* docContext */);
}
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url, docContext = doc) {
if (url.includes('/newspaper/article/')) {
scrapeNewspaper(doc, url);
}
else {
scrapeWork(doc, url, docContext);
}
}
function scrapeNewspaper(doc, url) {
var articleID = url.match(/newspaper\/article\/(\d+)/)[1];
var bibtexURL = "http://trove.nla.gov.au/newspaper/citations/bibtex-article-" + articleID + ".bibtex";
ZU.HTTP.doGet(bibtexURL, function (bibtex) {
var translator = Zotero.loadTranslator("import");
translator.setTranslator("9cb70025-a888-4a29-a210-93ec52da40d4");
translator.setString(bibtex);
// Clean up the BibTex results and add some extra stuff.
translator.setHandler("itemDone", function (obj, item) {
item.itemType = 'newspaperArticle';
item.pages = item.numPages;
item.publicationTitle = cleanPublicationTitle(item.publicationTitle);
item.place = cleanPlace(item.place);
delete item.numPages;
delete item.type;
delete item.itemID;
// doc is null during multiple call
if (doc) {
item.abstractNote = ZU.xpathText(doc, "//meta[@property='og:description']/@content");
// Add tags
var tags = ZU.xpath(doc, "//ul[contains(@class,'nlaTagContainer')]/li");
for (let tag of tags) {
tag = ZU.xpathText(tag, "div/a[not(contains(@class,'anno-remove'))]");
item.tags.push(tag);
}
}
// I've created a proxy server to generate the PDF and return the URL without locking up the browser.
var proxyURL = "https://trove-proxy.herokuapp.com/pdf/" + articleID;
ZU.doGet(proxyURL, function (pdfURL) {
// With the last argument 'false' passed to doGet
// we allow all status codes to continue and reach
// the item.complete() command.
if (pdfURL.startsWith('http')) {
item.attachments.push({
url: pdfURL,
title: 'Trove newspaper PDF',
mimeType: 'application/pdf'
});
}
else {
Zotero.debug("No PDF because unexpected return from trove-proxy " + proxyURL);
Zotero.debug(pdfURL);
}
// Get the OCRd text and save in a note.
var textURL = "http://trove.nla.gov.au/newspaper/rendition/nla.news-article" + articleID + ".txt";
ZU.HTTP.doGet(textURL, function (text) {
item.notes.push({
note: text.trim()
});
item.complete();
});
}, null, null, null, false);
});
translator.translate();
});
}
function cleanPublicationTitle(pubTitle) {
if (!pubTitle) return pubTitle;
// Australian Worker (Sydney, NSW : 1913 - 1950) -> Australian Worker
// the place info is duplicated in the place field
return pubTitle.replace(/\([^)]+\)/, '');
}
function cleanPlace(place) {
if (!place) return place;
let replacements = {
'Vic.': 'Victoria',
'Qld.': 'Queensland',
SA: 'South Australia',
'S.A.': 'South Australia',
'S.Aust.': 'South Australia',
'Tas.': 'Tasmania',
WA: 'Western Australia',
'W.A.': 'Western Australia',
NSW: 'New South Wales',
'N.S.W.': 'New South Wales',
ACT: 'Australian Capital Territory',
'A.C.T.': 'Australian Capital Territory',
NT: 'Northern Territory',
'N.T.': 'Northern Territory'
};
for (let [from, to] of Object.entries(replacements)) {
place = place.replace(from, to);
}
return place;
}
var troveTypes = {
Book: "book",
"Article/Book chapter": "bookSection",
Thesis: "thesis",
"Archived website": "webpage",
"Conference Proceedings": "book",
"Audio book": "book",
Article: "journalArticle",
"Article/Journal or magazine article": "journalArticle",
"Article/Conference paper": "conferencePaper",
"Article/Report": "report",
Map: "map",
"Map/Aerial photograph; Photograph": "map",
Photograph: "artwork",
"Poster, chart, other": "artwork",
"Art work": "artwork",
Object: "artwork",
Sound: "audioRecording",
Video: "videoRecording",
"Printed music": "book",
Unpublished: "manuscript",
Published: "document"
};
// Map a semicolon-separated Trove item type string to one Zotero item type
function checkType(string) {
for (let [trove, zotero] of Object.entries(troveTypes)) {
if (string.endsWith(trove)) {
return zotero;
}
}
let lastSemicolon = string.lastIndexOf('; ');
if (lastSemicolon != -1) {
return checkType(string.substring(0, lastSemicolon));
}
else {
return 'book';
}
}
// Sometimes authors are a little messy and we need to clean them
// e.g. author = { Bayley, William A. (William Alan), 1910-1981 },
// results in
// "firstName": "1910-1981, William A. (William Alan)",
// "lastName": "Bayley"
// Trove occasionally gives us author strings like "Australian Institute of
// Health and Welfare" that the BibTeX translator will split, but there's not
// much we can do, because that's the correct behavior. we could try to compare
// BibTeX authors to the HTML, but that won't work for multiples.
function cleanCreators(creators) {
for (let creator of creators) {
if (creator.fieldMode || !creator.firstName) continue;
var name = creator.firstName;
name = name.replace(/\(?\d{4}-\d{0,4}\)?,?/, "").trim();
var posParenthesis = name.indexOf("(");
if (posParenthesis > -1) {
var first = name.substr(0, posParenthesis);
var second = name.substr(posParenthesis + 1, name.length - posParenthesis - 2);
if (second.includes(first.replace('.', '').trim())) {
name = second;
}
else {
name = first;
}
}
creator.firstName = name.trim();
}
return creators;
}
function cleanPublisher(publisher) {
if (!publisher) return publisher;
let parts = publisher.split(':').map(s => s.trim());
if (parts.length == 2) {
return { place: cleanPlace(parts[0]), publisher: parts[1] };
}
else {
return { place: parts[0] };
}
}
function cleanEdition(text) {
if (!text) return text;
// from Taylor & Francis eBooks translator, slightly adapted
const ordinals = {
first: "1",
second: "2",
third: "3",
fourth: "4",
fifth: "5",
sixth: "6",
seventh: "7",
eighth: "8",
ninth: "9",
tenth: "10"
};
text = ZU.trimInternal(text).replace(/[[\]]/g, '');
// this somewhat complicated regex tries to isolate the number (spelled out
// or not) and make sure that it isn't followed by any extra info
let matches = text
.match(/^(?:(?:([0-9]+)(?:st|nd|rd|th)?)|(first|second|third|fourth|fifth|sixth|seventh|eighth|ninth|tenth))(?:\s?ed?\.?|\sedition)?$/i);
if (matches) {
let edition = matches[1] || matches[2];
edition = ordinals[edition.toLowerCase()] || edition;
return edition == "1" ? null : edition;
}
else {
return text;
}
}
function scrapeWork(doc, url, docContext) {
var thumbnailURL;
var workID = url.match(/\/work\/([0-9]+)/)[1];
// version ID seems to always be undefined now
var bibtexURL = `https://trove.nla.gov.au/api/citation/work/${workID}?version=undefined`;
if (doc) {
thumbnailURL = attr(doc, '.thumbnail img', 'src');
}
// Get the BibTex and feed it to the translator.
ZU.HTTP.doGet(bibtexURL, function (respText) {
// bibtex puts tags in the wrong field, but it's alright, they're mostly... bad
// we should restore if we can come up with a good cleaning method
// (exclude dates, tags that are the same as the item title or author,
// approximate duplicates, ...)
var bibtex = JSON.parse(respText).bibtex;
var translator = Zotero.loadTranslator("import");
translator.setTranslator("9cb70025-a888-4a29-a210-93ec52da40d4");
translator.setString(bibtex);
translator.setHandler("itemDone", function (obj, item) {
item.itemType = checkType(item.type);
item.creators = cleanCreators(item.creators);
item.edition = cleanEdition(item.edition);
Object.assign(item, cleanPublisher(item.publisher));
if (item.itemType == 'artwork' && item.type) {
item.artworkMedium = item.type;
delete item.type;
}
if (item.notes && item.notes.length == 1) {
// abstract goes into a note, but we want it in abstractNote
// (with HTML tags removed)
item.abstractNote = ZU.cleanTags(item.notes.pop().note);
}
// Attach a link to the contributing repository if available
if (item.url) {
item.attachments.push({
title: "Record from contributing repository",
url: item.url,
mimeType: 'text/html',
snapshot: false
});
}
if (thumbnailURL) {
item.attachments.push({
url: thumbnailURL,
title: 'Trove thumbnail image',
mimeType: 'image/jpeg'
});
}
item.complete();
});
translator.translate();
}, null, null, {
Referer: 'https://trove.nla.gov.au/',
apikey: apiKeyGen(doc || docContext)
});
}
// Get a cookie's value by key from the document.
function getCookie(doc, key) {
let field = doc.cookie.split("; ").find(row => row.startsWith(`${key}=`));
return field ? field.split("=")[1] : undefined;
}
// Compute the API key using cookie info.
// See the source under Webpack path trove-vue/src/service/services.js
function apiKeyGen(doc) {
let xctx = getCookie(doc, "x-ctx");
if (typeof xctx === "undefined") {
return "";
}
return md5("Wonder" + xctx).replace(/^0+/, "");
}
// Minfied MD5 digest function.
// See https://pajhome.org.uk/crypt/md5/md5.html
/* eslint-disable */
function md5(d){function rstr2hex(d){for(var _,m="0123456789abcdef",f="",r=0;r<d.length;r++)_=d.charCodeAt(r),f+=m.charAt(_>>>4&15)+m.charAt(15&_);return f}function rstr2binl(d){for(var _=Array(d.length>>2),m=0;m<_.length;m++)_[m]=0;for(m=0;m<8*d.length;m+=8)_[m>>5]|=(255&d.charCodeAt(m/8))<<m%32;return _}function binl2rstr(d){for(var _="",m=0;m<32*d.length;m+=8)_+=String.fromCharCode(d[m>>5]>>>m%32&255);return _}function binl_md5(d,_){d[_>>5]|=128<<_%32,d[14+(_+64>>>9<<4)]=_;for(var m=1732584193,f=-271733879,r=-1732584194,i=271733878,n=0;n<d.length;n+=16){var h=m,t=f,g=r,e=i;f=md5_ii(f=md5_ii(f=md5_ii(f=md5_ii(f=md5_hh(f=md5_hh(f=md5_hh(f=md5_hh(f=md5_gg(f=md5_gg(f=md5_gg(f=md5_gg(f=md5_ff(f=md5_ff(f=md5_ff(f=md5_ff(f,r=md5_ff(r,i=md5_ff(i,m=md5_ff(m,f,r,i,d[n+0],7,-680876936),f,r,d[n+1],12,-389564586),m,f,d[n+2],17,606105819),i,m,d[n+3],22,-1044525330),r=md5_ff(r,i=md5_ff(i,m=md5_ff(m,f,r,i,d[n+4],7,-176418897),f,r,d[n+5],12,1200080426),m,f,d[n+6],17,-1473231341),i,m,d[n+7],22,-45705983),r=md5_ff(r,i=md5_ff(i,m=md5_ff(m,f,r,i,d[n+8],7,1770035416),f,r,d[n+9],12,-1958414417),m,f,d[n+10],17,-42063),i,m,d[n+11],22,-1990404162),r=md5_ff(r,i=md5_ff(i,m=md5_ff(m,f,r,i,d[n+12],7,1804603682),f,r,d[n+13],12,-40341101),m,f,d[n+14],17,-1502002290),i,m,d[n+15],22,1236535329),r=md5_gg(r,i=md5_gg(i,m=md5_gg(m,f,r,i,d[n+1],5,-165796510),f,r,d[n+6],9,-1069501632),m,f,d[n+11],14,643717713),i,m,d[n+0],20,-373897302),r=md5_gg(r,i=md5_gg(i,m=md5_gg(m,f,r,i,d[n+5],5,-701558691),f,r,d[n+10],9,38016083),m,f,d[n+15],14,-660478335),i,m,d[n+4],20,-405537848),r=md5_gg(r,i=md5_gg(i,m=md5_gg(m,f,r,i,d[n+9],5,568446438),f,r,d[n+14],9,-1019803690),m,f,d[n+3],14,-187363961),i,m,d[n+8],20,1163531501),r=md5_gg(r,i=md5_gg(i,m=md5_gg(m,f,r,i,d[n+13],5,-1444681467),f,r,d[n+2],9,-51403784),m,f,d[n+7],14,1735328473),i,m,d[n+12],20,-1926607734),r=md5_hh(r,i=md5_hh(i,m=md5_hh(m,f,r,i,d[n+5],4,-378558),f,r,d[n+8],11,-2022574463),m,f,d[n+11],16,1839030562),i,m,d[n+14],23,-35309556),r=md5_hh(r,i=md5_hh(i,m=md5_hh(m,f,r,i,d[n+1],4,-1530992060),f,r,d[n+4],11,1272893353),m,f,d[n+7],16,-155497632),i,m,d[n+10],23,-1094730640),r=md5_hh(r,i=md5_hh(i,m=md5_hh(m,f,r,i,d[n+13],4,681279174),f,r,d[n+0],11,-358537222),m,f,d[n+3],16,-722521979),i,m,d[n+6],23,76029189),r=md5_hh(r,i=md5_hh(i,m=md5_hh(m,f,r,i,d[n+9],4,-640364487),f,r,d[n+12],11,-421815835),m,f,d[n+15],16,530742520),i,m,d[n+2],23,-995338651),r=md5_ii(r,i=md5_ii(i,m=md5_ii(m,f,r,i,d[n+0],6,-198630844),f,r,d[n+7],10,1126891415),m,f,d[n+14],15,-1416354905),i,m,d[n+5],21,-57434055),r=md5_ii(r,i=md5_ii(i,m=md5_ii(m,f,r,i,d[n+12],6,1700485571),f,r,d[n+3],10,-1894986606),m,f,d[n+10],15,-1051523),i,m,d[n+1],21,-2054922799),r=md5_ii(r,i=md5_ii(i,m=md5_ii(m,f,r,i,d[n+8],6,1873313359),f,r,d[n+15],10,-30611744),m,f,d[n+6],15,-1560198380),i,m,d[n+13],21,1309151649),r=md5_ii(r,i=md5_ii(i,m=md5_ii(m,f,r,i,d[n+4],6,-145523070),f,r,d[n+11],10,-1120210379),m,f,d[n+2],15,718787259),i,m,d[n+9],21,-343485551),m=safe_add(m,h),f=safe_add(f,t),r=safe_add(r,g),i=safe_add(i,e)}return Array(m,f,r,i)}function md5_cmn(d,_,m,f,r,i){return safe_add(bit_rol(safe_add(safe_add(_,d),safe_add(f,i)),r),m)}function md5_ff(d,_,m,f,r,i,n){return md5_cmn(_&m|~_&f,d,_,r,i,n)}function md5_gg(d,_,m,f,r,i,n){return md5_cmn(_&f|m&~f,d,_,r,i,n)}function md5_hh(d,_,m,f,r,i,n){return md5_cmn(_^m^f,d,_,r,i,n)}function md5_ii(d,_,m,f,r,i,n){return md5_cmn(m^(_|~f),d,_,r,i,n)}function safe_add(d,_){var m=(65535&d)+(65535&_);return(d>>16)+(_>>16)+(m>>16)<<16|65535&m}function bit_rol(d,_){return d<<_|d>>>32-_}return rstr2hex(binl2rstr(binl_md5(rstr2binl(d),8*d.length)))}
/* eslint-enable */
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://trove.nla.gov.au/work/9958833",
"defer": true,
"items": [
{
"itemType": "book",
"title": "Experiences of a meteorologist in South Australia",
"creators": [
{
"firstName": "Clement Lindley",
"lastName": "Wragge",
"creatorType": "author"
}
],
"date": "1980",
"ISBN": "9780908065073",
"abstractNote": "Reprinted from Good words for 1887/ edited by Donald Macleod, published: London: Isbister and Co",
"itemID": "trove.nla.gov.au/work/9958833",
"language": "English",
"libraryCatalog": "Trove",
"place": "Warradale, South Australia",
"publisher": "Pioneer Books",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://trove.nla.gov.au/newspaper/article/70068753",
"defer": true,
"items": [
{
"itemType": "newspaperArticle",
"title": "'WRAGGE.'",
"creators": [],
"date": "7 Feb 1903",
"abstractNote": "We have received a copy of the above which is a journal devoted chiefly to the science of meteorology. It is owned and conducted by Mr. Clement ...",
"libraryCatalog": "Trove",
"place": "Victoria",
"publicationTitle": "Sunbury News",
"url": "http://nla.gov.au/nla.news-article70068753",
"attachments": [
{
"title": "Trove newspaper PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Meteorology Journal - Clement Wragge"
}
],
"notes": [
{
"note": "<html>\n <head>\n <title>07 Feb 1903 - 'WRAGGE.'</title>\n </head>\n <body>\n <p>Sunbury News (Vic. : 1900 - 1927), Saturday 7 February 1903, page 4</p>\n <hr/>\n <div class='zone'><p>'WRAGGE' - we have received a copy of the above, which is a journal devoted chiefly to the science of meteorology. It is owned and conducted by Mr. Clement Wragge. </p></div>\n </body>\n</html>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://trove.nla.gov.au/search/advanced/category/newspapers?l-artType=newspapers&l-australian=y&keyword=wragge",
"defer": true,
"items": "multiple"
},
{
"type": "web",
"url": "https://trove.nla.gov.au/search/category/books?keyword=wragge",
"defer": true,
"items": "multiple"
},
{
"type": "web",
"url": "https://trove.nla.gov.au/newspaper/page/7013947",
"defer": true,
"items": "multiple"
},
{
"type": "web",
"url": "https://trove.nla.gov.au/work/9531118?q&sort=holdings+desc&_=1483112824975&versionId=14744047",
"defer": true,
"items": "multiple"
},
{
"type": "web",
"url": "https://trove.nla.gov.au/work/208456891",
"defer": true,
"items": [
{
"itemType": "artwork",
"title": "Walter Wragge",
"creators": [],
"date": "1912",
"artworkMedium": "Photograph",
"itemID": "trove.nla.gov.au/work/208456891",
"language": "en",
"libraryCatalog": "Trove",
"url": "http://collections.slsa.sa.gov.au/resource/B+49301",
"attachments": [
{
"title": "Record from contributing repository",
"mimeType": "text/html",
"snapshot": false
},
{
"title": "Trove thumbnail image",
"mimeType": "image/jpeg"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://trove.nla.gov.au/work/11424419/version/264796991%20264796992",
"defer": true,
"items": [
{
"itemType": "journalArticle",
"title": "AUSTRALIA'S WELFARE 1993 Services and Assistance (30 June 1994)",
"creators": [
{
"firstName": "Australian Institute of",
"lastName": "Health",
"creatorType": "author"
},
{
"lastName": "Welfare",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "1994-06-30",
"ISSN": "1321-1455",
"issue": "14 of 1994",
"itemID": "trove.nla.gov.au/work/11424419",
"language": "English",
"libraryCatalog": "Trove",
"publicationTitle": "Australia's welfare : services and assistance",
"attachments": [
{
"title": "Trove thumbnail image",
"mimeType": "image/jpeg"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://trove.nla.gov.au/work/245696250",
"defer": true,
"items": [
{
"itemType": "bookSection",
"title": "Conducting a systematic review : a practical guide",
"creators": [
{
"firstName": "Freya",
"lastName": "MacMillan",
"creatorType": "author"
},
{
"firstName": "Kate A.",
"lastName": "McBride",
"creatorType": "author"
},
{
"firstName": "Emma S.",
"lastName": "George",
"creatorType": "author"
},
{
"firstName": "Genevieve Z.",
"lastName": "Steiner",
"creatorType": "author"
}
],
"date": "2018",
"itemID": "trove.nla.gov.au/work/245696250",
"language": "eng",
"libraryCatalog": "Trove",
"place": "Singapore, Springer",
"publisher": "Singapore, Springer",
"shortTitle": "Conducting a systematic review",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100bfahrenfort^https?://plus\.lexis\..*//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2023 Brandon Fahrenfort
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, _url) {
if (doc.title.includes("results")) {
return "multiple";
}
else if (/[a-zA-Z. ]+\s§\s\d+/.test(doc.title)
|| /\W(acts?)(\W|$)/i.test(doc.title) // Match: The Airports Acts, Civil Rights Act of 1865
|| /p\.l\./i.test(doc.title)) { // Match: ... Tex. Bus. & Com. Code § 26.01 ...
return "statute";
}
else if (/\d+\s[a-zA-Z0-9. ]+\s\d+/.test(doc.title)) { // Match: ... 5 U.S. 137 ...
return "case";
}
// TODO secondary sources
return false;
}
function getSearchResults(doc, url) {
var items = {};
var nextTitle;
if (detectWeb(doc, url) == "multiple") {
// TODO check what type of element it is (currently only working for 'cases' searches)
let titles = doc.querySelectorAll('a.titleLink');
let dates = doc.querySelectorAll('span.metaDataItem'); // Not technically only dates, but that's all I use it for atm
var nextDate;
var dateOffset = 1;
// dates[0] is first court name
nextDate = dates[dateOffset];
dateOffset += 3;
// dates[2] is first citation
for (var i = 0; i < titles.length; i++) {
nextTitle = titles[i];
items[nextTitle.href] = nextTitle.textContent + "(" + nextDate.textContent + ")";
// dates[0] is court name
nextDate = dates[dateOffset];
// dates[2] is a citation
}
return items;
}
return false;
}
async function doWeb(doc, url) {
if (detectWeb(doc, url) == 'multiple') {
let items = await Zotero.selectItems(getSearchResults(doc, url));
if (!items) return;
for (let url of Object.keys(items)) {
await scrape(await requestDocument(url));
}
}
else {
await scrape(doc, url);
}
}
async function scrape(doc, url) {
var title = text(doc, 'h1#SS_DocumentTitle');
if (detectWeb(doc, url) == "case") {
var newCase = new Zotero.Item("case");
//newCase.url = doc.location.href; // Disabled for style reasons
newCase.title = title;
newCase.notes.push({ note: "Snapshot: " + newCase.title + doc.getElementById('document-content').innerHTML });
let citation = text(doc, 'span.active-reporter');
newCase.reporterVolume = citation.substring(0, citation.indexOf(' '));
newCase.reporter = citation.substring(citation.indexOf(' ') + 1, citation.lastIndexOf(' '));
newCase.firstPage = citation.substring(citation.lastIndexOf(' ') + 1);
newCase.court = text(doc, 'p.SS_DocumentInfo', 0);
newCase.dateDecided = text(doc, 'span.date');
let docket = text(doc, 'p.SS_DocumentInfo', 2);
if (/^no\./i.test(docket)
|| /^\d+/.test(docket)
|| /^case no\./i.test(docket)) {
newCase.docketNumber = docket; // This won't be in perfect cite form, shouldn't be a hassle unless you're citing dozens of memorandum opinions
}
newCase.complete();
}
else if (detectWeb(doc, url) == "statute") {
var newStatute = new Zotero.Item("statute");
//newStatute.url = doc.location.href; // Disabled for style reasons
newStatute.title = title;
newStatute.notes.push({ note: "Snapshot: " + newStatute.title + doc.getElementById('document-content').innerHTML });
let info = text(doc, 'p.SS_DocumentInfo');
let isolation = info.substring(info.search(
/\b(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|Jun(?:e)?|Jul(?:y)?|Aug(?:ust)?|Sep(?:tember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)/i
)); // isolate date on the frontend
newStatute.dateEnacted = isolation.substring(0, isolation.search(/[1-2][0-9][0-9][0-9]/) + 4);
if (/act/i.test(title)
|| /of\s[1-2][0-9][0-9][0-9]/i.test(title)) { // Session law, or act, not codified statute
// BB 21st ed. requires parallel cite to Pub. L. No. and Stat. for session laws
// Title formatting
// TODO ZU's capitalizer is good, but doesn't work with closed-up abbreviations like P.L. or U.S.
// This could break titles in future. I do remove P.L. below though.
if (title === title.toUpperCase()) title = ZU.capitalizeTitle(title.toLowerCase(), true); // Some acts are capitalized
// Remove some unnecessary information
var cleanedTitle = title;
let pLCite = title.match(/(\d+ p\.l\. \d+)/i);
let statCite = title.match(/(\d+ stat\. \d+)/i);
let enactedCite = title.match(/\d+ enacted [a-zA-Z0-9.]+ \d+/gi);
let part = title.match(/(part \d+(?: of \d+)?)/i);
if (pLCite) cleanedTitle = cleanedTitle.replace(pLCite[1], '');
if (statCite) cleanedTitle = cleanedTitle.replace(statCite[1], '');
if (part) cleanedTitle = cleanedTitle.replace(part[1], '');
if (enactedCite) {
// Remove every enacted cite
for (var value of Object.values(enactedCite)) {
cleanedTitle = cleanedTitle.replace(value, '');
}
}
cleanedTitle = cleanedTitle.replace(/(^\s*,)|(,\s*$)/g, ''); // Trim commas and whitespace
cleanedTitle = cleanedTitle.replace(/(^\s*,)|(,\s*$)/g, ''); // Another one
if (ZU.trim(cleanedTitle) === "") { // If the title's empty now, put it as the highest precedence citation in the title
if (pLCite) cleanedTitle = pLCite[1];
else if (statCite) cleanedTitle = statCite[1];
else if (enactedCite) {
cleanedTitle = enactedCite[0] + " & " + (Object.keys(enactedCite).length - 1) + " more";
}
}
newStatute.title = cleanedTitle;
// Reporter & citation formatting
var statutesAtLarge, publicLawNo;
let potentialReporter = text(doc, 'a.SS_ActiveRptr');
if (potentialReporter) { // Sometimes Lexis is weird and doesn't give an ActiveRptr
if (/stat\./i.test(potentialReporter)) statutesAtLarge = potentialReporter;
else if (/pub\./i.test(potentialReporter)
|| /p\.l\./i.test(potentialReporter)) {
publicLawNo = potentialReporter;
}
}
let otherReporters = doc.querySelectorAll('span.SS_NonPaginatedRptr');
for (var i = 0; i < otherReporters.length; i++) {
var nextReporter = otherReporters[i].textContent;
if (/stat\./i.test(nextReporter)) statutesAtLarge = nextReporter;
else if (/pub\./i.test(nextReporter)
|| /p\.l\./i.test(nextReporter)) {
publicLawNo = nextReporter;
}
}
// Turn publicLawNo into the public law fields
if (/\d+-\d+/.test(publicLawNo)) { // Ex. P.L. 115-164
let numPos = publicLawNo.search(/\d+-\d+/);
newStatute.publicLawNumber = publicLawNo.substring(numPos, publicLawNo.substring(numPos + 1).indexOf(' ')); // Gets 115-164
newStatute.session = newStatute.publicLawNumber.substring(0, newStatute.publicLawNumber.indexOf('-'));
}
else { // Ex. 115 P.L. 164
let pLNumbers = publicLawNo.match(/(\d+) p\.l\. (\d+)/i);
newStatute.session = pLNumbers[1];
newStatute.publicLawNumber = pLNumbers[1] + '-' + pLNumbers[2];
}
// Turn statutesAtLarge into the code#/code/section fields
// TODO in styles, check for "Stat." as the code, and if so, don't append a section symbol
let statNumbers = statutesAtLarge.match(/(\d+) stat\. (\d+)/i);
newStatute.codeNumber = statNumbers[1];
newStatute.code = "Stat.";
newStatute.section = statNumbers[2];
}
else { // Codified statute
// Title & citation formatting
if (title.match(/^\d+/)) { // Starts with digit, organized by title, ex. 47 U.S.C.S. § 230
// Sadly, named groups aren't working
let groups = title.match(/^(\d+)\s([a-zA-Z0-9. ]+) § ([0-9.()a-zA-Z]+)/);
newStatute.codeNumber = groups[1];
newStatute.code = groups[2];
newStatute.section = groups[3];
}
else { // Starts with letter, organized by code, ex. Tex. Bus. & Com. Code § 26.01
let groups = title.match(/^([a-zA-Z&. ]+) § ([0-9.()a-zA-Z]+)/);
newStatute.code = groups[1];
newStatute.section = groups[2];
}
// Reporter formatting, theoretically unnecessary but nice to have if it's there
/*
* Matches:
* P.L. 117-327
* Pub. L. 117-327
* Pub. Law 117-327
* Pub. L. No. 117-327
* Pub. Law No. 117-327
* Public Law 117-327
* Public Law Number 117-327
* Public Law No. 117-327
*/
let pL = info.match(/(p\.l\.|pub\. l(?:aw|\.)(?: no\.)?|public law(?: number| no\.)?)\s(\d+-\d+)/i);
if (pL) newStatute.publicLawNumber = pL[2];
if (newStatute.publicLawNumber) newStatute.session = newStatute.publicLawNumber.substring(0, newStatute.publicLawNumber.indexOf('-'));
}
newStatute.notes.push({ note: "Document Info: " + info }); // Since the info section is all over the place, just dump the whole thing in for manual cite checks
newStatute.complete();
}
}
/** BEGIN TEST CASES **/
var testCases = [
]
/** END TEST CASES **/
100Sebastian Karchercff/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2023 Sebastian Karcher
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function writeKeywords(tags) {
if (!tags.length) return false;
let keywords = "\n";
for (let tag of tags) {
keywords += " - " + tag.tag + "\n";
}
return keywords.replace(/\\n$/, "");
}
function writeDOI(itemDOI) {
if (!itemDOI) return false;
let doi = "\n - type: doi\n value: " + itemDOI + "\n";
return doi;
}
function writeAuthors(itemCreators) {
let itemAuthors = [];
for (let creator of itemCreators) {
if (creator.creatorType == "author" || creator.creatorType == "programmer") {
itemAuthors.push(creator);
}
}
if (!itemAuthors.length) return false;
let authors = "\n";
for (let author of itemAuthors) {
authors += " - family-names: " + author.lastName + "\n";
if (author.firstName) {
authors += " given-names: " + author.firstName + "\n";
}
}
return authors;
}
function doExport() {
var item;
Zotero.write('# This CITATION.cff file was generated with Zotero.\n');
// eslint-disable-next-line no-cond-assign
while (item = Zotero.nextItem()) {
// Only use for dataset and software
if (item.itemType != "dataset" && item.itemType != "computerProgram") {
continue;
}
var cff = {};
cff.title = " >-\n " + item.title;
cff.abstract = item.abstractNote;
cff.type = item.itemType == 'dataset' ? 'dataset' : 'software';
cff.license = item.rights;
cff.version = item.versionNumber;
cff.url = item.url;
cff.keywords = writeKeywords(item.tags);
cff.authors = writeAuthors(item.creators);
if (item.date) {
cff["date-released"] = ZU.strToISO(item.date);
}
// get DOI from Extra for software; this will stop running automatically once software supports DOI
if (!ZU.fieldIsValidForType('DOI', item.itemType) && /^doi:/i.test(item.extra)) {
item.DOI = ZU.cleanDOI(item.extra);
}
cff.identifiers = writeDOI(item.DOI);
Zotero.write(`\ncff-version: 1.2.0\nmessage: >-\n If you use this ${cff.type}, please cite it using the metadata from this file.\n`);
for (let field in cff) {
if (!cff[field]) continue;
if (field == "authors" || field == "keywords") {
Zotero.write(field + ": " + cff[field]);
}
else {
Zotero.write(field + ": " + cff[field] + "\n");
}
}
}
}
/** BEGIN TEST CASES **/
var testCases = [
]
/** END TEST CASES **/
100Sebastian Karcher^https?://plato\.stanford\.edu/(archives/[a-z]{3}\d{4}/)?(entries|search)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2011-2023 Sebastian Karcher and Zotero
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes("/search/") && getSearchResults(doc, true)) return "multiple";
else if (url.includes("/entries/")) return "bookSection";
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('div.result_title > a');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
async function doWeb(doc, url) {
if (detectWeb(doc, url) == 'multiple') {
let items = await Zotero.selectItems(getSearchResults(doc, false));
if (!items) return;
for (let url of Object.keys(items)) {
await scrape(await requestDocument(url));
}
}
else {
await scrape(doc, url);
}
}
async function scrape(doc, url = doc.location.href) {
//get abstract and tags from article plage
var abs = text(doc, 'div#preamble>p').replace(/\n/g, "");
var tags = text(doc, 'div#related-entries >p');
// Z.debug(tags);
if (tags) tags = tags.replace(/\n/g, "").split(/\|/);
for (let i = 0; i < tags.length; i++) {
tags[i] = ZU.trimInternal(tags[i]);
}
//get BibTex Link
var bibtexUrl = url.replace(/entries\//, "cgi-bin/encyclopedia/archinfo.cgi?entry=").replace(/\/(index\.html)?(#.+)?$/, "");
if (bibtexUrl.includes("/archives/")) {
// we're on archive page
let archive = bibtexUrl.match(/\/(archives\/[a-z]{3}\d{4})/)[1];
bibtexUrl = bibtexUrl.replace(archive, "/") + "&" + archive.replace("s/", "=");
// Z.debug(bibtexUrl);
}
// Z.debug(bibtexUrl)
let bibtex = await requestText(bibtexUrl);
// remove line breaks, then match match the bibtex, then remove the odd /t in it.
bibtex = bibtex.replace(/\n/g, "").match(/<pre>.+<\/pre>/)[0].replace(/\/t/g, "");
// Zotero.debug(bibtex)
var translator = Zotero.loadTranslator("import");
translator.setTranslator("9cb70025-a888-4a29-a210-93ec52da40d4");
translator.setString(bibtex);
translator.setHandler("itemDone", (_obj, item) => {
if (abs) item.abstractNote = abs;
if (tags) item.tags = tags;
item.attachments = [{ document: doc, title: "SEP - Snapshot", mimeType: "text/html" }];
item.complete();
});
await translator.translate();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://plato.stanford.edu/search/searcher.py?query=epistemology",
"items": "multiple"
},
{
"type": "web",
"url": "https://plato.stanford.edu/entries/plato/",
"items": [
{
"itemType": "bookSection",
"title": "Plato",
"creators": [
{
"firstName": "Richard",
"lastName": "Kraut",
"creatorType": "author"
},
{
"firstName": "Edward N.",
"lastName": "Zalta",
"creatorType": "editor"
}
],
"date": "2022",
"abstractNote": "Plato (429?–347 B.C.E.) is, by any reckoning, one of the mostdazzling writers in the Western literary tradition and one of the mostpenetrating, wide-ranging, and influential authors in the history ofphilosophy. An Athenian citizen of high status, he displays in hisworks his absorption in the political events and intellectualmovements of his time, but the questions he raises are so profound andthe strategies he uses for tackling them so richly suggestive andprovocative that educated readers of nearly every period have in someway been influenced by him, and in practically every age there havebeen philosophers who count themselves Platonists in some importantrespects. He was not the first thinker or writer to whom the word“philosopher” should be applied. But he was soself-conscious about how philosophy should be conceived, and what itsscope and ambitions properly are, and he so transformed theintellectual currents with which he grappled, that the subject ofphilosophy, as it is often conceived—a rigorous and systematicexamination of ethical, political, metaphysical, and epistemologicalissues, armed with a distinctive method—can be called hisinvention. Few other authors in the history of Western philosophyapproximate him in depth and range: perhaps only Aristotle (whostudied with him), Aquinas, and Kant would be generally agreed to beof the same rank.",
"bookTitle": "The Stanford Encyclopedia of Philosophy",
"edition": "Spring 2022",
"itemID": "sep-plato",
"libraryCatalog": "Stanford Encyclopedia of Philosophy",
"publisher": "Metaphysics Research Lab, Stanford University",
"url": "https://plato.stanford.edu/archives/spr2022/entries/plato/",
"attachments": [
{
"title": "SEP - Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Aristotle"
},
{
"tag": "Plato: ethics and politics in The Republic"
},
{
"tag": "Socrates"
},
{
"tag": "Socratic Dialogues"
},
{
"tag": "abstract objects"
},
{
"tag": "education, philosophy of"
},
{
"tag": "epistemology"
},
{
"tag": "metaphysics"
},
{
"tag": "religion: and morality"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://plato.stanford.edu/archives/win2022/entries/logic-classical/",
"items": [
{
"itemType": "bookSection",
"title": "Classical Logic",
"creators": [
{
"firstName": "Stewart",
"lastName": "Shapiro",
"creatorType": "author"
},
{
"firstName": "Teresa",
"lastName": "Kouri Kissel",
"creatorType": "author"
},
{
"firstName": "Edward N.",
"lastName": "Zalta",
"creatorType": "editor"
},
{
"firstName": "Uri",
"lastName": "Nodelman",
"creatorType": "editor"
}
],
"date": "2022",
"abstractNote": "Typically, a logic consists of a formal or informal languagetogether with a deductive system and/or a model-theoretic semantics.The language has components that correspond to a part of a naturallanguage like English or Greek. The deductive system is to capture,codify, or simply record arguments that are validfor the given language, and the semantics is to capture, codify, orrecord the meanings, or truth-conditions for at least part of thelanguage.",
"bookTitle": "The Stanford Encyclopedia of Philosophy",
"edition": "Winter 2022",
"itemID": "sep-logic-classical",
"libraryCatalog": "Stanford Encyclopedia of Philosophy",
"publisher": "Metaphysics Research Lab, Stanford University",
"url": "https://plato.stanford.edu/archives/win2022/entries/logic-classical/",
"attachments": [
{
"title": "SEP - Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "logic: free"
},
{
"tag": "logic: infinitary"
},
{
"tag": "logic: intuitionistic"
},
{
"tag": "logic: linear"
},
{
"tag": "logic: modal"
},
{
"tag": "logic: paraconsistent"
},
{
"tag": "logic: relevance"
},
{
"tag": "logic: second-order and higher-order"
},
{
"tag": "logic: substructural"
},
{
"tag": "logic: temporal"
},
{
"tag": "logical consequence"
},
{
"tag": "logical form"
},
{
"tag": "logical truth"
},
{
"tag": "model theory"
},
{
"tag": "model theory: first-order"
},
{
"tag": "paradox: Skolem’s"
},
{
"tag": "proof theory: development of"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
{"async":true,"dataMode":"rdf\/xml"}100Simon Kornblithrdf/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2011 Center for History and New Media
George Mason University, Fairfax, Virginia, USA
http://zotero.org
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
const datasetType = ZU.fieldIsValidForType('title', 'dataset')
? 'dataset'
: 'document';
function detectImport() {
// Make sure there are actually nodes
var nodes = Zotero.RDF.getAllResources();
if (nodes) {
return true;
}
return false;
}
var rdf = "http://www.w3.org/1999/02/22-rdf-syntax-ns#";
var n = {
bib: "http://purl.org/net/biblio#",
bibo: "http://purl.org/ontology/bibo/",
dc1_0: "http://purl.org/dc/elements/1.0/", // eslint-disable-line camelcase
dc: "http://purl.org/dc/elements/1.1/",
dcterms: "http://purl.org/dc/terms/",
prism: "http://prismstandard.org/namespaces/1.2/basic/",
prism2_0: "http://prismstandard.org/namespaces/basic/2.0/", // eslint-disable-line camelcase
prism2_1: "http://prismstandard.org/namespaces/basic/2.1/", // eslint-disable-line camelcase
foaf: "http://xmlns.com/foaf/0.1/",
vcard: "http://nwalsh.com/rdf/vCard#",
vcard2: "http://www.w3.org/2006/vcard/ns#", // currently used only for NSF, but is probably
// very similar to the nwalsh vcard ontology in a
// different namespace
link: "http://purl.org/rss/1.0/modules/link/",
z: "http://www.zotero.org/namespaces/export#",
eprints: "http://purl.org/eprint/terms/",
og: "http://ogp.me/ns#", // Used for Facebook's OpenGraph Protocol
article: "http://ogp.me/ns/article#",
book: "http://ogp.me/ns/book#",
music: "http://ogp.me/ns/music#",
video: "http://ogp.me/ns/video#",
so: "http://schema.org/",
codemeta: "https://codemeta.github.io/terms/"
};
var callNumberTypes = [n.dcterms + "LCC", n.dcterms + "DDC", n.dcterms + "UDC"];
// gets the first result set for a property that can be encoded in multiple
// ontologies
function getFirstResults(nodes, properties, onlyOneString) {
if (!nodes.length) nodes = [nodes];
for (let node of nodes) {
for (let i = 0; i < properties.length; i++) {
var result = Zotero.RDF.getTargets(node, properties[i]);
if (result) {
if (onlyOneString) {
// onlyOneString means we won't return nsIRDFResources, only
// actual literals
if (typeof (result[0]) != "object") {
return result[0];
}
else {
return Zotero.RDF.getResourceURI(result[0]);
}
}
else {
return result;
}
}
}
}
return undefined; // return undefined on failure
}
// adds creators to an item given a list of creator nodes
/** TODO: PRISM 2.0 roles for DC creator/contributor*/
function handleCreators(newItem, creators, creatorType) {
if (!creators) {
return;
}
if (typeof (creators[0]) != "string") { // see if creators are in a container
let c;
try {
c = Zotero.RDF.getContainerElements(creators[0]);
}
catch (e) {}
if (c && c.length) {
creators = c;
}
}
for (let c of creators) {
let info = extractCreatorInfo(c);
if (info) newItem.creators.push(info);
}
function extractCreatorInfo(obj) {
if (typeof obj == "string") {
// Use comma to split if present
return ZU.cleanAuthor(obj, creatorType, obj.includes(','));
}
else {
let c = { creatorType: creatorType };
c.lastName = getFirstResults(obj,
[n.foaf + "familyName",
n.foaf + "lastName",
n.foaf + "surname",
n.foaf + "family_name",
n.so + "familyName"], true);
c.firstName = getFirstResults(obj,
[n.foaf + "givenName",
n.foaf + "firstName",
n.foaf + "givenname",
n.so + "givenName"], true);
if (!c.firstName) c.fieldMode = 1;
if (c.firstName || c.lastName) return c;
c = getFirstResults(obj, [n.so + "name"], true);
if (c) return ZU.cleanAuthor(c, creatorType, c.includes(','));
}
return false;
}
}
// processes collections recursively
function processCollection(node, collection) {
if (!collection) {
collection = [];
}
collection.type = "collection";
collection.name = getFirstResults(node, [n.dc + "title", n.dc1_0 + "title", n.dcterms + "title"], true);
collection.children = [];
// check for children
var children = getFirstResults(node, [n.dcterms + "hasPart"]);
if (children) {
for (let i = 0; i < children.length; i++) {
var child = children[i];
let type = Zotero.RDF.getTargets(child, rdf + "type");
if (type) {
type = Zotero.RDF.getResourceURI(type[0]);
}
if (type == n.bib + "Collection" || type == n.z + "Collection") {
// for collections, process recursively
collection.children.push(processCollection(child));
}
else {
if (isPart(child)) {
Zotero.debug("Not adding child item <" + Zotero.RDF.getResourceURI(child) + "> to collection", 2);
continue;
}
// all other items are added by ID
collection.children.push({ id: Zotero.RDF.getResourceURI(child), type: "item" });
}
}
}
return collection;
}
function processSeeAlso(node, newItem) {
var relations = getFirstResults(node, [n.dc + "relation", n.dc1_0 + "relation", n.dcterms + "relation"]);
newItem.itemID = Zotero.RDF.getResourceURI(node);
newItem.seeAlso = [];
if (relations) {
for (let i = 0; i < relations.length; i++) {
newItem.seeAlso.push(Zotero.RDF.getResourceURI(relations[i]));
}
}
}
function processTags(node, newItem) {
var subjects = getFirstResults(node, [n.dc + "subject", n.dc1_0 + "subject", n.dcterms + "subject"]);
newItem.tags = [];
if (subjects) {
for (let i = 0; i < subjects.length; i++) {
var subject = subjects[i];
if (typeof (subject) == "string") { // a regular tag
newItem.tags.push(subject);
}
else {
// a call number
let type = Zotero.RDF.getTargets(subject, rdf + "type");
if (type) {
type = Zotero.RDF.getResourceURI(type[0]);
if (type == n.z + "AutomaticTag") {
newItem.tags.push({ tag: getFirstResults(subject, [rdf + "value"], true), type: 1 });
}
}
}
}
}
}
// gets the node with a given type from an array
function getNodeByType(nodes, type) {
if (!nodes) {
return false;
}
if (typeof (type) == "string") {
type = [type];
}
for (let i = 0; i < nodes.length; i++) {
var node = nodes[i];
var nodeType = Zotero.RDF.getTargets(node, rdf + "type");
if (nodeType) {
nodeType = Zotero.RDF.getResourceURI(nodeType[0]);
if (type.includes(nodeType)) { // we have a node of the correct type
return node;
}
}
}
return false;
}
// returns true if this resource is part of another (related by any arc besides
// dc:relation or dcterms:hasPart)
//
// used to differentiate independent notes and files
function isPart(node) {
var arcs = Zotero.RDF.getArcsIn(node);
var skip = false;
for (let i = 0; i < arcs.length; i++) {
var arc = arcs[i];
arc = Zotero.RDF.getResourceURI(arc);
if (arc != n.dc + "relation" && arc != n.dc1_0 + "relation"
&& arc != n.dcterms + "relation" && arc != n.dcterms + "hasPart") {
// related to another item by some arc besides see also
skip = true;
}
}
return skip;
}
function detectType(newItem, node, ret) {
if (!node) return false;
// also deal with type detection based on parts, so we can differentiate
// magazine and journal articles, and find container elements
var isPartOf = getFirstResults(node, [n.dcterms + "isPartOf", n.so + "isPartOf"]);
// get parts of parts, because parts are sections of wholes.
if (isPartOf) {
// keep track of processed parts, so we don't end up in an infinite loop
var processedParts = [];
for (let i = 0; i < isPartOf.length; i++) {
if (processedParts.includes(isPartOf[i])) continue;
var subParts = getFirstResults(isPartOf[i], [n.dcterms + "isPartOf", n.so + "isPartOf"]);
if (subParts) {
isPartOf = isPartOf.concat(subParts);
}
processedParts.push(isPartOf[i]);
}
// remove self from parts
for (let i = 0; i < isPartOf.length; i++) {
if (Zotero.RDF.getResourceURI(isPartOf[i]) == Zotero.RDF.getResourceURI(node)) {
isPartOf.splice(i, 1);
i--;
}
}
}
var container;
// for schema.org we need several containers
var containerPeriodical;
var containerPublicationVolume;
var containerPublicationIssue;
var t = {};
// rdf:type
let type = getFirstResults(node, [rdf + "type"], true);
if (type) {
var pref = '';
if (type.substr(0, n.bib.length) == n.bib) {
pref = n.bib;
}
else if (type.substr(0, n.bibo.length) == n.bibo) {
pref = n.bibo;
}
else if (type.substr(0, n.so.length) == n.so) {
pref = n.so;
}
else if (type == n.z + "Attachment") {
pref = n.z;
}
type = type.substr(pref.length).toLowerCase();
switch (type) {
case "book":
case "thesis":
case "letter":
case "manuscript":
case "interview":
case "report":
case "patent":
case "map":
// these are the same as zotero types,
// just start with lower case
if (pref == n.bib || pref == n.bibo) t.bib = type;
if (pref == n.z) t.z = type;
if (pref == n.so) t.so = type;
break;
// bib, bibo types
case "booksection":
t.bib = 'bookSection';
container = getNodeByType(isPartOf, n.bib + "Book");
break;
case "motionpicture":
t.bib = "film";
break;
case "image":
case "illustration":
t.bib = "artwork";
break;
case "legislation":
t.bib = "statute";
break;
case "recording":
t.bib = "audioRecording";
break;
case "memo":
t.bib = "note";
break;
case "document":
container = getNodeByType(isPartOf, [n.bib + "CourtReporter", n.bibo + "CourtReporter"]);
if (container) {
t.bib = "case";
}
else if (getFirstResults(node, [n.bibo + "isbn10", n.bibo + "isbn13"], true)) {
t.bib = "book";
}
else {
t.bib = "webpage";
}
break;
// schema.org types
// subtypes of http://schema.org/CreativeWork and https://bib.schema.org/
case 'newsarticle':
case 'analysisnewsarticle':
case 'backgroundnewsarticle':
case 'opinionNewsarticle':
case 'reportagenewsarticle':
case 'reviewnewsarticle':
t.so = 'newspaperArticle'; break;
case 'scholarlyarticle':
case 'medicalscholarlyarticle':
t.so = 'journalArticle';
containerPublicationIssue = getNodeByType(isPartOf, [n.so + "PublicationIssue"]);
containerPublicationVolume = getNodeByType(isPartOf, [n.so + "PublicationVolume"]);
containerPeriodical = getNodeByType(isPartOf, [n.so + "Periodical"]);
container = getNodeByType(isPartOf, [n.so + "PublicationIssue", n.so + "PublicationVolume", n.so + "Periodical"]);
break;
case 'chapter':
t.so = 'bookSection';
container = getNodeByType(isPartOf, [n.so + "Book"]);
break;
case 'socialmediaposting':
case 'blogposting':
case 'liveblogposting':
t.so = 'blogPost';
break;
case 'discussionforumposting':
t.so = 'forumPost'; break;
case 'techarticle':
case 'apireference':
t.soGuess = 'report'; break;
case 'clip':
case 'movieclip':
case 'videogameclip':
t.soGuess = 'videoRecording'; break;
case 'tvclip':
case 'tvepisode':
t.so = 'tvBroadcast'; break;
case 'tvseries':
case 'episode':
t.soGuess = 'tvBroadcast'; break;
case 'radioclip':
case 'radioepisode':
t.so = 'radioBroadcast'; break;
case 'radioseries':
t.soGuess = 'radioBroadcast'; break;
case 'presentationdigitaldocument':
t.soGuess = 'presentation'; break;
case 'message':
case 'emailmessage':
t.so = 'email'; break;
case 'movie':
t.so = 'film'; break;
case 'musicrecording':
case 'musicalbum':
case 'audiobook':
case 'audioobject':
t.so = 'audioRecording'; break;
case 'softwareapplication':
case 'mobileapplication':
case 'videogame':
case 'webapplication':
case 'softwaresourcecode':
t.so = 'computerProgram'; break;
case 'painting':
case 'photograph':
case 'visualartwork':
case 'sculpture':
t.so = 'artwork'; break;
case 'datacatalog':
case 'dataset':
t.so = datasetType; break;
// specials cases
case "article":
// choose between journal, newspaper, and magazine articles
container = getNodeByType(isPartOf, [n.bib + "Journal", n.bibo + "Journal"]);
if (container) {
t.bib = "journalArticle";
break;
}
container = getNodeByType(isPartOf, [n.bib + "Periodical", n.bibo + "Periodical"]);
if (container) {
t.bib = "magazineArticle";
break;
}
container = getNodeByType(isPartOf, [n.bib + "Newspaper", n.bibo + "Newspaper"]);
if (container) {
t.bib = "newspaperArticle";
break;
}
if (pref == n.so) {
container = getNodeByType(isPartOf, [n.so + "PublicationIssue", n.so + "PublicationVolume"]);
if (container) {
t.so = "journalArticle";
}
else {
t.soGuess = 'magazineArticle';
}
}
break;
// zotero
case "attachment":
// unless processing of independent attachment is intended, don't
// process
// process as file
t.zotero = "attachment";
var path = getFirstResults(node, [rdf + "resource"]);
if (path) {
newItem.path = Zotero.RDF.getResourceURI(path[0]);
}
newItem.charset = getFirstResults(node, [n.link + "charset"], true);
newItem.mimeType = getFirstResults(node, [n.link + "type"], true);
}
}
// zotero:itemType, zotero:type
type = getFirstResults(node, [n.z + "itemType", n.z + "type"], true);
if (type && isNaN(parseInt(type)) // itemTypeExists also takes item type IDs. We don't want to consider those
&& ZU.itemTypeExists(type)
) {
t.zotero = type;
if (type == "encyclopediaArticle" || type == "dictionaryEntry") {
container = getNodeByType(isPartOf, n.bib + "Book");
}
else if (type == "conferencePaper") {
container = getNodeByType(isPartOf, n.bib + "Journal");
}
}
// dc:type, dcterms:type
type = getFirstResults(node, [n.dc + "type", n.dc1_0 + "type", n.dcterms + "type"], true);
if (type) {
if (isNaN(parseInt(type)) && ZU.itemTypeExists(type)) {
t.dc = type;
}
else {
// on eprints the type fields are often in the form "Journal Article", "Conference Item" etc.
type = type.toLowerCase().replace(/\s/g, "");
switch (type) {
// eprints
// from http://www.ukoln.ac.uk/repositories/digirep/index/Eprints_Type_Vocabulary_Encoding_Scheme
case 'book':
case 'patent':
case 'report':
case 'thesis':
t.dc = type;
break;
case 'bookitem':
t.dc = 'bookSection';
break;
// case 'bookreview':
case 'conferenceitem':
case 'conferencepaper':
case 'conferenceposter':
t.dc = 'conferencePaper';
break;
case 'dataset':
t.dc = datasetType;
break;
case 'article': // from http://www.idealliance.org/specifications/prism/specifications/prism-controlled-vocabularies/prism-12-controlled-vocabularies
case 'journalitem':
case 'journalarticle':
case 'submittedjournalarticle':
case 'text.serial.journal':
t.dc = 'journalArticle';
break;
case 'newsitem':
t.dc = 'newspaperArticle';
break;
case 'scholarlytext':
t.dc = 'journalArticle';
break;
case 'workingpaper':
t.dc = 'report';
break;
// via examples from oro.open.ac.uk, http://eprints.soton.ac.uk/
case 'musicitem':
t.dcGuess = 'audioRecording';
break;
case 'artdesignitem':
t.dcGuess = 'artwork`';
break;
case 'authoredbook':
t.dc = 'book';
break;
case 'bookchapter':
t.dc = 'bookSection';
break;
// via examples from https://edoc.hu-berlin.de/
case 'bachelorthesis':
case 'masterthesis':
case 'doctoralthesis':
t.dc = 'thesis';
break;
// from http://www.idealliance.org/specifications/prism/specifications/prism-controlled-vocabularies/prism-12-controlled-vocabularies
// some are the same as eprints and are handled above
case 'electronicbook':
t.dc = 'book';
break;
case 'homepage':
case 'webpage':
t.dc = 'webpage';
break;
case 'illustration':
t.dc = 'artwork';
break;
case 'map':
t.dc = 'map';
break;
// from http://dublincore.org/documents/dcmi-type-vocabulary/
// this vocabulary is much broader
case 'event':
// very broad, but has an associated location
t.dcGuess = 'presentation';
break;
case 'image':
// this includes almost any graphic, moving or not
t.dcGuess = 'artwork';
break;
case 'movingimage':
// could be either film, tvBroadcast, or videoRecording
t.dcGuess = 'videoRecording';
break;
case 'software':
t.dcGuess = 'computerProgram';
break;
case 'sound':
// could be podcast, radioBroadcast, or audioRecording
t.dcGuess = 'audioRecording';
break;
case 'stillimage':
// could be map or artwork
t.dcGuess = 'artwork';
break;
case 'text':
// very broad
t.dcGuess = 'journalArticle';
break;
// collection, interactiveresource, physicalobject,
// service
}
}
}
type = getFirstResults(node, [n.eprints + "type"], true);
if (type) {
switch (type) {
// eprints
// from http://www.ukoln.ac.uk/repositories/digirep/index/Eprints_Type_Vocabulary_Encoding_Scheme
case 'book':
case 'patent':
case 'report':
case 'thesis':
t.eprints = type;
break;
case 'bookitem':
t.eprints = 'bookSection';
break;
// case 'bookreview':
case 'conferenceitem':
case 'conferencepaper':
case 'conferenceposter':
t.eprints = 'conferencePaper';
break;
case 'dataset':
t.eprints = datasetType;
break;
case 'journalitem':
case 'journalarticle':
case 'submittedjournalarticle':
case 'article':
t.eprints = 'journalArticle';
break;
case 'newsitem':
t.eprints = 'newspaperArticle';
break;
case 'scholarlytext':
t.eprints = 'journalArticle';
break;
case 'workingpaper':
t.eprints = 'report';
break;
// from samples at http://oro.open.ac.uk, http://eprints.soton.ac.uk/, http://eprints.biblio.unitn.it
case 'techreport':
t.eprints = 'report';
break;
case 'bookedit':
case 'proceedings':
t.eprints = 'book';
break;
case 'book_section':
t.eprints = 'bookSection';
break;
case 'ad_item':
t.eprints = 'artwork';
break;
case 'mu_item':
t.eprints = 'audioRecording';
break;
case 'confpaper':
case 'conference_item':
if (getFirstResults(node, [n.eprints + "ispublished"], true) == "unpub") {
t.eprints = 'presentation';
}
else t.eprints = 'conferencePaper';
break;
}
}
// og:type
type = getFirstResults(node, [n.og + "type"], true);
switch (type) {
case "video.movie":
case "video.episode":
case "video.tv_show":
case "video.other":
t.og = "videoRecording";
break;
case "article":
t.ogGuess = "journalArticle";
break;
case "book":
t.og = "book";
break;
case "music.song":
case "music.album":
t.og = "audioRecording";
break;
case "website":
t.og = "webpage";
break;
}
// PRISM:aggregationtype
/** is this actually inside container?*/
type = getFirstResults(node, [n.prism + "aggregationtype",
n.prism2_0 + "aggregationtype",
n.prism2_1 + "aggregationtype"]);
switch (type) {
case 'book':
t.prism = 'bookSection';
break;
case 'feed':
// could also be email
t.prismGuess = 'blogPost';
break;
case 'journal':
t.prism = 'journalArticle';
break;
case 'magazine':
t.prism = 'magazineArticle';
break;
case 'newsletter':
t.prism = 'newspaperArticle';
break;
// pamphlet, other, manual, catalog
}
// PRISM:genre
type = getFirstResults(node, [n.prism + "genre",
n.prism2_0 + "genre",
n.prism2_1 + "genre"]);
switch (type) {
case 'abstract':
case 'acknowledgements':
case 'authorbio':
case 'bibliography':
case 'index':
case 'tableofcontents':
t.prism = 'bookSection';
break;
case 'autobiography':
case 'biography':
t.prism = 'book';
break;
case 'blogentry':
t.prism = 'blogPost';
break;
case 'homepage':
case 'webliography':
t.prism = 'webpage';
break;
case 'interview':
t.prism = 'interview';
break;
case 'letters':
t.prism = 'letter';
break;
case 'adaptation':
case 'analysis':
t.prismGuess = 'journalArticle';
break;
case 'column':
case 'newsbulletin':
case 'opinion':
// magazine or newspaper
t.prismGuess = 'newspaperArticle';
break;
case 'coverstory':
case 'essay':
case 'feature':
case 'insidecover':
// journal or magazine
t.prismGuess = 'magazineArticle';
break;
// advertorial; advertisement; brief; chronology; classifiedad;
// correction; cover; coverpackage; electionresults; eventscalendar;
// excerpt; photoshoot; featurepackage; financialstatement;
// interactivecontent; legaldocument; masthead; notice; obituary;
// photoessay; poem; poll; pressrelease; productdescription; profile;
// quotation; ranking; recipe; reprint; response; review; schedule;
// sidebar; stockquote; sectiontableofcontents; transcript; wirestory
}
// PRISM:platform
type = getFirstResults(node, [n.prism + "platform",
n.prism2_0 + "platform",
n.prism2_1 + "platform"]);
switch (type) {
case 'broadcast':
t.prismGuess = 'tvBroadcast';
break;
case 'web':
t.prismGuess = 'webpage';
break;
}
var itemType = t.zotero || t.bib || t.prism || t.eprints || t.og || t.dc
|| t.so
|| exports.defaultUnknownType || t.zoteroGuess || t.bibGuess
|| t.prismGuess || t.ogGuess || t.dcGuess || t.soGuess;
// Z.debug(t);
// in case we still don't have a container, double-check
// some are copied from above
if (!container) {
switch (itemType) {
case "blogPost":
container = getNodeByType(isPartOf, n.z + "Blog");
break;
case "forumPost":
container = getNodeByType(isPartOf, n.z + "Forum");
break;
case "webpage":
container = getNodeByType(isPartOf, n.z + "Website");
break;
case "bookSection":
container = getNodeByType(isPartOf, n.bib + "Book");
break;
case "case":
container = getNodeByType(isPartOf, [n.bib + "CourtReporter", n.bibo + "CourtReporter"]);
break;
case "journalArticle":
container = getNodeByType(isPartOf, [n.bib + "Journal", n.bibo + "Journal"]);
break;
case "magazineArticle":
container = getNodeByType(isPartOf, [n.bib + "Periodical", n.bibo + "Periodical", n.so + "Periodical"]);
break;
case "newspaperArticle":
container = getNodeByType(isPartOf, [n.bib + "Newspaper", n.bibo + "Newspaper"]);
break;
}
}
// fill return object which is passed as an argument
ret.container = container;
ret.containerPeriodical = containerPeriodical;
ret.containerPublicationVolume = containerPublicationVolume;
ret.containerPublicationIssue = containerPublicationIssue;
ret.isPartOf = isPartOf;
return itemType;
}
function importItem(newItem, node) {
var ret = {};
var itemType = detectType(newItem, node, ret);
var isZoteroRDF = false;
if (getFirstResults(node, [n.z + "itemType", n.z + "type"], true)) {
isZoteroRDF = true;
}
newItem.itemType = exports.itemType || itemType;
var container = ret.container;
var containerPeriodical = ret.containerPeriodical;
var containerPublicationVolume = ret.containerPublicationVolume;
// var containerPublicationIssue = ret.containerPublicationIssue;
var isPartOf = ret.isPartOf;
// title
newItem.title = getFirstResults(node, [n.dc + "title",
n.dc1_0 + "title",
n.dcterms + "title",
n.eprints + "title",
n.vcard2 + "fn",
n.og + "title",
n.so + "headline"], true);
if (!newItem.itemType) {
if (!newItem.title) { // require the title
// (if not a known type)
return false;
}
else {
// default to journalArticle
newItem.itemType = "journalArticle";
}
}
else if (!newItem.title) {
// name is a generic property and not only for titles
newItem.title = getFirstResults(node, [n.so + "name"], true);
}
// regular author-type creators
var possibleCreatorTypes = Zotero.Utilities.getCreatorsForType(newItem.itemType);
var creators;
for (let i = 0; i < possibleCreatorTypes.length; i++) {
var creatorType = possibleCreatorTypes[i];
if (creatorType == "author") {
creators = getFirstResults(node, [n.bib + "authors",
n.so + "author",
n.so + "creator",
n.dc + "creator",
n.dc + "creator.PersonalName",
n.dc1_0 + "creator",
n.dcterms + "creator",
n.eprints + "creators_name",
n.dc + "contributor",
n.dc1_0 + "contributor",
n.dcterms + "contributor"]);
}
else if (creatorType == "editor" || creatorType == "contributor") {
creators = getFirstResults(node, [n.bib + creatorType + "s",
n.eprints + creatorType + "s_name",
n.so + creatorType]);
// get presenters in unpublished conference papers on eprints
}
else if (creatorType == "presenter") {
creators = getFirstResults(node, [n.z + creatorType + "s", n.eprints + "creators_name"]);
}
else if (creatorType == "castMember") {
creators = getFirstResults(node, [n.video + "actor"]);
}
else if (creatorType == "scriptwriter") {
creators = getFirstResults(node, [n.video + "writer"]);
}
else if (creatorType == "producer") {
creators = getFirstResults(node, [n.so + "producer"]);
}
else if (creatorType == "programmer") {
creators = getFirstResults(node, [n.z + "programmers", n.so + "author", n.codemeta + "maintainer"]);
}
else {
creators = getFirstResults(node, [n.z + creatorType + "s"]);
}
if (creators) handleCreators(newItem, creators, creatorType);
}
// publicationTitle -- first try PRISM, then DC
newItem.publicationTitle = getFirstResults(node, [n.prism + "publicationName",
n.prism2_0 + "publicationName",
n.prism2_1 + "publicationName",
n.eprints + "publication",
n.eprints + "book_title",
n.dc + "source",
n.dc1_0 + "source",
n.dcterms + "source"], true);
if (container) {
newItem.publicationTitle = getFirstResults(container, [n.dc + "title", n.dc1_0 + "title", n.dcterms + "title", n.so + "name"], true);
// these fields mean the same thing
newItem.reporter = newItem.publicationTitle;
}
if (containerPeriodical) {
newItem.publicationTitle = getFirstResults([containerPeriodical, containerPublicationVolume], [n.so + "name"], true);
}
var siteName = getFirstResults(node, [n.og + "site_name"], true);
if (siteName && !newItem.publicationTitle && (newItem.itemType == "blogPost" || newItem.itemType == "webpage" || newItem.itemType == "newspaperArticle")) {
newItem.publicationTitle = siteName;
}
// rights
newItem.rights = getFirstResults(node, [n.prism + "copyright", n.prism2_0 + "copyright", n.prism2_1 + "copyright", n.dc + "rights", n.dc1_0 + "rights", n.dcterms + "rights", n.so + "license"], true);
// section
var section = getNodeByType(isPartOf, n.bib + "Part");
if (section) {
newItem.section = getFirstResults(section, [n.dc + "title", n.dc1_0 + "title", n.dcterms + "title"], true);
}
if (!section) {
newItem.section = getFirstResults(node, [n.article + "section", n.so + "genre"], true);
}
// series
var series = getNodeByType(isPartOf, n.bib + "Series");
if (series) {
newItem.series = getFirstResults(series, [n.dc + "title", n.dc1_0 + "title", n.dcterms + "title"], true);
newItem.seriesTitle = getFirstResults(series, [n.dcterms + "alternative"], true);
newItem.seriesText = getFirstResults(series, [n.dc + "description", n.dc1_0 + "description", n.dcterms + "description"], true);
newItem.seriesNumber = getFirstResults(series, [n.dc + "identifier", n.dc1_0 + "identifier", n.dcterms + "description"], true);
}
// volume
newItem.volume = getFirstResults([container, node, containerPublicationVolume, containerPeriodical], [n.prism + "volume",
n.prism2_0 + "volume",
n.prism2_1 + "volume",
n.eprints + "volume",
n.bibo + "volume",
n.dc + "source.Volume",
n.dcterms + "citation.volume",
n.so + "volumeNumber"], true);
// issue
var issueNodes = [node];
if (container) {
issueNodes.unshift(container);
}
newItem.issue = getFirstResults(issueNodes, [n.prism + "number",
n.prism2_0 + "number",
n.prism2_1 + "number",
n.eprints + "number",
n.bibo + "issue",
n.dc + "source.Issue",
n.dcterms + "citation.issue",
n.so + "issueNumber"], true);
// number means the same thing as issue
// and will automatically then also map
// to patentNumber or reportNumber
newItem.number = newItem.issue;
// edition
newItem.edition = getFirstResults(node, [n.prism + "edition", n.prism2_0 + "edition", n.prism2_1 + "edition", n.bibo + "edition", n.so + "bookEdition", n.so + "version"], true);
// these fields mean the same thing
newItem.versionNumber = newItem.edition;
// pages
newItem.pages = getFirstResults(node, [n.bib + "pages", n.eprints + "pagerange", n.prism2_0 + "pageRange", n.prism2_1 + "pageRange", n.bibo + "pages", n.dc + "identifier.pageNumber", n.so + "pagination"], true);
if (!newItem.pages) {
var pages = [];
var spage = getFirstResults(node, [n.prism + "startingPage", n.prism2_0 + "startingPage", n.prism2_1 + "startingPage", n.bibo + "pageStart", n.dcterms + "relation.spage", n.so + "pageStart"], true),
epage = getFirstResults(node, [n.prism + "endingPage", n.prism2_0 + "endingPage", n.prism2_1 + "endingPage", n.bibo + "pageEnd", n.dcterms + "relation.epage", n.so + "pageEnd"], true);
if (spage) pages.push(spage);
if (epage) pages.push(epage);
if (pages.length) newItem.pages = pages.join("-");
}
// numPages
newItem.numPages = getFirstResults(node, [n.bibo + "numPages", n.eprints + "pages", n.so + "numberOfPages"], true);
// numberOfVolumes
newItem.numberOfVolumes = getFirstResults(node, [n.bibo + "numVolumes"], true);
// short title
newItem.shortTitle = getFirstResults(node, [n.bibo + "shortTitle"], true);
// mediums
newItem.artworkMedium = newItem.interviewMedium = getFirstResults(node, [n.dcterms + "medium"], true);
// programmingLanguage
newItem.programmingLanguage = getFirstResults(node, [n.so + "programmingLanguage"], true);
// system
newItem.system = getFirstResults(node, [n.so + "operatingSystem"], true);
// publisher
var publisher = getFirstResults([node, containerPeriodical, containerPublicationVolume], [n.dc + "publisher",
n.dc1_0 + "publisher",
n.dcterms + "publisher",
n.vcard2 + "org",
n.eprints + "institution",
n.so + "publisher",
n.so + "publishedBy"]);
if (publisher) {
if (typeof (publisher[0]) == "string") {
newItem.publisher = publisher[0];
}
else {
let type = Zotero.RDF.getTargets(publisher[0], rdf + "type");
if (type) {
type = Zotero.RDF.getResourceURI(type[0]);
switch (type) {
case n.foaf + "Organization":
case n.foaf + "Agent":
newItem.publisher = getFirstResults(publisher[0], [n.foaf + "name"], true);
var place = getFirstResults(publisher[0], [n.vcard + "adr"]);
if (place) {
newItem.place = getFirstResults(place[0], [n.vcard + "locality"]);
}
break;
case n.vcard2 + "Organization":
newItem.publisher = getFirstResults(publisher[0], [n.vcard2 + "organization-name"], true);
break;
default:
newItem.publisher = getFirstResults(publisher[0], [n.so + "name"], true);
newItem.place = getFirstResults(publisher[0], [n.so + "location"], true);
break;
}
}
}
}
// place
if (!newItem.place) {
// Prefer place of publication to conference location
newItem.place = getFirstResults(node, [n.eprints + "place_of_pub", n.eprints + "event_location"], true);
}
// these fields mean the same thing
newItem.distributor = newItem.label = newItem.company = newItem.institution = newItem.publisher;
// date
newItem.date = getFirstResults(node, [n.eprints + "date",
n.prism + "publicationDate",
n.prism2_0 + "publicationDate",
n.prism2_1 + "publicationDate",
n.og + "published_time",
n.article + "published_time",
n.book + "release_date",
n.music + "release_date",
n.video + "release_date",
n.dc + "date.issued",
n.dcterms + "date.issued",
n.dcterms + "issued",
n.dc + "date",
n.dc1_0 + "date",
n.dcterms + "date",
n.dcterms + "dateSubmitted",
n.eprints + "datestamp",
n.so + "datePublished"], true);
// accessDate
newItem.accessDate = getFirstResults(node, [n.dcterms + "dateSubmitted"], true);
// lastModified
newItem.lastModified = getFirstResults(node, [n.dcterms + "modified",
n.so + "dateModified"], true);
// identifier
var identifiers = getFirstResults(node, [n.dc + "identifier", n.dc1_0 + "identifier", n.dcterms + "identifier"]);
if (container) {
var containerIdentifiers = getFirstResults(container, [n.dc + "identifier", n.dc1_0 + "identifier", n.dcterms + "identifier"]);
// concatenate sets of identifiers
if (containerIdentifiers) {
if (identifiers) {
identifiers = identifiers.concat(containerIdentifiers);
}
else {
identifiers = containerIdentifiers;
}
}
}
if (identifiers) {
for (var i in identifiers) {
if (typeof (identifiers[i]) == "string") {
// grab other things
var beforeSpace = identifiers[i].substr(0, identifiers[i].indexOf(" ")).toUpperCase();
// Attempt to determine type of identifier by prefix label
if (beforeSpace == "ISBN") {
newItem.ISBN = identifiers[i].substr(5).toUpperCase();
}
else if (beforeSpace == "ISSN") {
newItem.ISSN = identifiers[i].substr(5).toUpperCase();
}
else if (beforeSpace == "DOI") {
newItem.DOI = identifiers[i].substr(4);
}
// Or just try parsing values
else if (ZU.cleanISBN(identifiers[i])) {
newItem.ISBN = ZU.cleanISBN(identifiers[i]);
}
else if (ZU.cleanISSN(identifiers[i])) {
newItem.ISSN = ZU.cleanISSN(identifiers[i]);
}
else if (ZU.cleanDOI(identifiers[i])) {
newItem.DOI = ZU.cleanDOI(identifiers[i]);
}
}
else {
// grab URLs
let type = Zotero.RDF.getTargets(identifiers[i], rdf + "type");
if (type && (type = Zotero.RDF.getResourceURI(type[0])) && type == n.dcterms + "URI") {
newItem.url = getFirstResults(identifiers[i], [rdf + "value"], true);
}
}
}
}
// ISSN, if encoded per PRISM
newItem.ISSN = getFirstResults([container, node, containerPeriodical, containerPublicationVolume], [n.prism + "issn",
n.prism2_0 + "issn",
n.prism2_1 + "issn",
n.eprints + "issn",
n.bibo + "issn",
n.dc + "source.ISSN",
n.prism + "eIssn",
n.prism2_0 + "eIssn",
n.prism2_1 + "eIssn",
n.bibo + "eissn",
n.so + "issn"], true) || newItem.ISSN;
// ISBN from PRISM or OG
newItem.ISBN = getFirstResults((container ? container : node), [n.prism2_1 + "isbn", n.bibo + "isbn", n.bibo + "isbn13", n.bibo + "isbn10", n.book + "isbn", n.so + "isbn"], true) || newItem.ISBN;
// ISBN from eprints
newItem.ISBN = getFirstResults(node, [n.eprints + "isbn"], true) || newItem.ISBN;
// DOI from nonstandard DC, PRISM, or BIBO
newItem.DOI = getFirstResults(node, [n.dc + "identifier.DOI", n.prism2_0 + "doi", n.prism2_1 + "doi", n.bibo + "doi"], true) || newItem.DOI;
if (!newItem.url) {
var url = getFirstResults(node, [n.eprints + "official_url",
n.vcard2 + "url",
n.og + "url",
n.prism2_0 + "url",
n.prism2_1 + "url",
n.bibo + "uri",
n.so + "url",
n.so + "sameAs"]);
if (url) {
newItem.url = Zotero.RDF.getResourceURI(url[0]);
}
}
// archiveLocation
newItem.archiveLocation = getFirstResults(node, [n.dc + "coverage", n.dc1_0 + "coverage", n.dcterms + "coverage"], true);
// abstract
newItem.abstractNote = getFirstResults(node, [n.eprints + "abstract",
n.prism + "teaser",
n.prism2_0 + "teaser",
n.prism2_1 + "teaser",
n.og + "description",
n.bibo + "abstract",
n.dcterms + "abstract",
n.dc + "description.abstract",
n.dcterms + "description.abstract",
n.dc1_0 + "description",
n.so + "description"], true);
// type
let type = getFirstResults(node, [n.dc + "type", n.dc1_0 + "type", n.dcterms + "type"], true);
/** CUSTOM ITEM TYPE -- Keeping for <6.0.24 clients w/o dataset support **/
if (datasetType != "dataset" && type && (type.toLowerCase() == "dataset" || type.toLowerCase() == "datacatalog")) {
if (newItem.extra) {
newItem.extra += "\nType: dataset";
}
else newItem.extra = "Type: dataset";
}
// these all mean the same thing
var typeProperties = ["reportType",
"letterType",
"manuscriptType",
"mapType",
"thesisType",
"websiteType",
"presentationType",
"postType",
"audioFileType"];
for (let i = 0; i < typeProperties.length; i++) {
newItem[typeProperties[i]] = type;
}
// thesis type from eprints
if (newItem.itemType == "thesis") {
newItem.thesisType = getFirstResults(node, [n.eprints + "thesis_type"], true) || newItem.thesisType;
}
// presentation type from eprints
if (newItem.itemType == "presentation") {
newItem.presentationType = getFirstResults(node, [n.eprints + "event_type"], true) || newItem.presentationType;
}
// conferenceName
var conference = getFirstResults(node, [n.bib + "presentedAt"]);
if (conference) {
conference = conference[0];
if (typeof (conference) == "string") {
newItem.conferenceName = conference;
}
else {
newItem.conferenceName = getFirstResults(conference, [n.dc + "title", n.dc1_0 + "title", n.dcterms + "title"], true);
}
}
// from eprints
if (!newItem.conferenceName) {
newItem.conferenceName = getFirstResults(node, [n.eprints + "event_title"]);
}
// conference and meeting name are the same
newItem.meetingName = newItem.conferenceName;
// journalAbbreviation
newItem.journalAbbreviation = getFirstResults((container ? container : node), [n.dcterms + "alternative"], true);
// running Time
newItem.runningTime = getFirstResults(node, [n.video + "duration", n.song + "duration", n.so + "duration"], true);
// address
var adr = getFirstResults(node, [n.vcard2 + "adr"]);
if (adr) {
newItem.address = getFirstResults(adr[0], [n.vcard2 + "label"], true);
}
// telephone
newItem.telephone = getFirstResults(node, [n.vcard2 + "tel"], true);
// email
newItem.email = getFirstResults(node, [n.vcard2 + "email"], true);
// accepted
newItem.accepted = getFirstResults(node, [n.dcterms + "dateAccepted"], true);
// language
newItem.language = getFirstResults(node, [n.dc + "language", n.dc1_0 + "language", n.dcterms + "language", n.so + "inLanguage"], true);
// see also
processSeeAlso(node, newItem);
// description/attachment note
if (newItem.itemType == "attachment") {
newItem.note = getFirstResults(node, [n.dc + "description", n.dc1_0 + "description", n.dcterms + "description"], true);
}
// extra for Zotero RDF
else if (isZoteroRDF) {
newItem.extra = getFirstResults(node, [n.dc + "description"], true);
}
else if (!newItem.abstractNote) {
newItem.abstractNote = getFirstResults(node, [n.dc + "description", n.dcterms + "description"], true);
}
/** NOTES **/
var referencedBy = Zotero.RDF.getTargets(node, n.dcterms + "isReferencedBy");
for (let i = 0; i < referencedBy.length; i++) {
var referentNode = referencedBy[i];
let type = Zotero.RDF.getTargets(referentNode, rdf + "type");
if (type && Zotero.RDF.getResourceURI(type[0]) == n.bib + "Memo") {
// if this is a memo
let note = {};
note.note = getFirstResults(referentNode, [rdf + "value", n.dc + "description", n.dc1_0 + "description", n.dcterms + "description"], true);
if (note.note != undefined) {
// handle see also
processSeeAlso(referentNode, note);
processTags(referentNode, note);
// add note
newItem.notes.push(note);
}
}
}
if (newItem.itemType == "note") {
// add note for standalone
let note = getFirstResults(node, [rdf + "value", n.dc + "description", n.dc1_0 + "description", n.dcterms + "description"], true);
// temporary fix for Zotero 3.0.7: set note to " " if it would otherwise be
// empty to avoid an error
newItem.note = note ? note : " ";
}
/** TAGS **/
var subjects = getFirstResults(node, [n.dc + "subject",
n.dc1_0 + "subject",
n.dcterms + "subject",
n.article + "tag",
n.prism2_0 + "keyword",
n.prism2_1 + "keyword",
n.prism2_0 + "object",
n.prism2_1 + "object",
n.prism2_0 + "organization",
n.prism2_1 + "organization",
n.prism2_0 + "person",
n.prism2_1 + "person",
n.so + "keywords",
n.so + "about"]);
if (subjects) {
for (let i = 0; i < subjects.length; i++) {
var subject = subjects[i];
if (typeof (subject) == "string") { // a regular tag
newItem.tags.push(subject);
}
else { // a call number or automatic tag
let type = Zotero.RDF.getTargets(subject, rdf + "type");
if (type) {
type = Zotero.RDF.getResourceURI(type[0]);
if (callNumberTypes.includes(type)) {
newItem.callNumber = getFirstResults(subject, [rdf + "value"], true);
}
else if (type == n.z + "AutomaticTag") {
newItem.tags.push({ tag: getFirstResults(subject, [rdf + "value"], true), type: 1 });
}
}
}
}
}
/** ATTACHMENTS **/
var relations = getFirstResults(node, [n.link + "link"]);
if (relations) {
for (let i = 0; i < relations.length; i++) {
var relation = relations[i];
let type = Zotero.RDF.getTargets(relation, rdf + "type");
if (Zotero.RDF.getResourceURI(type[0]) == n.z + "Attachment") {
var attachment = new Zotero.Item();
newItem.attachments.push(attachment);
importItem(attachment, relation, n.z + "Attachment");
}
}
}
var pdfURL = getFirstResults(node, [n.eprints + "document_url"]);
if (pdfURL) {
newItem.attachments.push({
title: "Full Text PDF",
mimeType: "application/pdf",
path: pdfURL[0]
});
}
/** OTHER FIELDS **/
var arcs = Zotero.RDF.getArcsOut(node);
for (let i = 0; i < arcs.length; i++) {
var uri = Zotero.RDF.getResourceURI(arcs[i]);
if (uri.substr(0, n.z.length) == n.z) {
var property = uri.substr(n.z.length);
newItem[property] = Zotero.RDF.getTargets(node, n.z + property)[0];
}
}
return true;
}
function getNodes(skipCollections) {
var nodes = Zotero.RDF.getAllResources();
var goodNodes = [];
for (let i = 0; i < nodes.length; i++) {
var node = nodes[i];
// figure out if this is a part of another resource, or a linked
// attachment, or a creator
if (Zotero.RDF.getSources(node, n.dcterms + "isPartOf")
|| Zotero.RDF.getSources(node, n.bib + "presentedAt")
|| Zotero.RDF.getSources(node, n.link + "link")
|| Zotero.RDF.getSources(node, n.dcterms + "creator")) {
continue;
}
// type
let type = Zotero.RDF.getTargets(node, rdf + "type");
if (type) {
type = Zotero.RDF.getResourceURI(type[0]);
// skip if this is not an independent attachment,
if ((type == n.z + "Attachment" || type == n.bib + "Memo") && isPart(node)) {
continue;
}
else if (skipCollections
&& (type == n.bib + "Collection" || type == n.z + "Collection")) {
continue;
}
}
goodNodes.push(node);
}
return goodNodes;
}
function doImport() {
if (typeof Promise == 'undefined') {
startImport(
function () {},
function (e) {
throw e;
}
);
return false;
}
return new Promise(function (resolve, reject) {
startImport(resolve, reject);
});
}
function startImport(resolve, reject) {
try {
Zotero.setProgress(null);
var nodes = getNodes();
if (!nodes.length) {
resolve();
return;
}
// keep track of collections while we're looping through
var collections = [];
importNext(nodes, 0, collections, resolve, reject);
}
catch (e) {
reject(e);
}
}
function importNext(nodes, index, collections, resolve, reject) {
try {
for (let i = index; i < nodes.length; i++) {
var node = nodes[i];
// type
let type = Zotero.RDF.getTargets(node, rdf + "type");
if (type) {
type = Zotero.RDF.getResourceURI(type[0]);
// skip if this is not an independent attachment,
if ((type == n.z + "Attachment" || type == n.bib + "Memo") && isPart(node)) {
continue;
}
// skip collections until all the items are done
if (type == n.bib + "Collection" || type == n.z + "Collection") {
collections.push(node);
continue;
}
}
var newItem = new Zotero.Item();
newItem.itemID = Zotero.RDF.getResourceURI(node);
if (importItem(newItem, node)) {
var maybePromise = newItem.complete();
if (maybePromise) {
maybePromise.then(function () {
importNext(nodes, i + 1, collections, resolve, reject);
});
return;
}
}
Zotero.setProgress((i + 1) / nodes.length * 100);
}
// Collections
for (let i = 0; i < collections.length; i++) {
var collection = collections[i];
if (!Zotero.RDF.getArcsIn(collection)) {
var newCollection = new Zotero.Collection();
processCollection(collection, newCollection);
newCollection.complete();
}
}
}
catch (e) {
reject(e);
}
resolve();
}
/**
* Export doImport and defaultUnknownType to other translators
*/
var exports = {
doImport: doImport,
detectType: detectType,
getNodes: getNodes,
defaultUnknownType: false,
itemType: false
};
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "import",
"input": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"\n xmlns:rdfs=\"http://www.w3.org/2000/01/rdf-schema#\"\n xmlns:bibo=\"http://purl.org/ontology/bibo/\"\n xmlns:dc=\"http://purl.org/dc/terms/\"\n xmlns:owl=\"http://www.w3.org/2002/07/owl#\"\n xmlns:dc11=\"http://purl.org/dc/elements/1.1/\"\n xmlns:ns0=\"http://rdaregistry.info/Elements/u/\"\n xmlns:ns1=\"http://iflastandards.info/ns/isbd/elements/\"\n xmlns:foaf=\"http://xmlns.com/foaf/0.1/\">\n\n <bibo:Book rdf:about=\"http://d-nb.info/1054873992\">\n <dc:medium rdf:resource=\"http://rdaregistry.info/termList/RDACarrierType/1044\"/>\n <owl:sameAs rdf:resource=\"http://hub.culturegraph.org/resource/DNB-1054873992\"/>\n <dc11:identifier>(DE-101)1054873992</dc11:identifier>\n <dc11:identifier>(OCoLC)888461076</dc11:identifier>\n <bibo:isbn13>9783658060268</bibo:isbn13>\n <ns0:P60521>kart. : ca. EUR 39.99 (DE), ca. EUR 41.11 (AT), ca. sfr 50.00 (freier Pr.)</ns0:P60521>\n <bibo:isbn10>3658060263</bibo:isbn10>\n <bibo:gtin14>9783658060268</bibo:gtin14>\n <dc:language rdf:resource=\"http://id.loc.gov/vocabulary/iso639-2/ger\"/>\n <dc11:title>Das Adam-Smith-Projekt</dc11:title>\n <dc:creator rdf:resource=\"http://d-nb.info/gnd/136486045\"/>\n <dc11:publisher>Springer VS</dc11:publisher>\n <ns0:P60163>Wiesbaden</ns0:P60163>\n <ns0:P60333>Wiesbaden : Springer VS</ns0:P60333>\n <ns1:P1053>447 S.</ns1:P1053>\n <dc:isPartOf>Edition Theorie und Kritik</dc:isPartOf>\n <ns0:P60489>Zugl. leicht überarb. Fassung von: Berlin, Freie Univ., Diss., 2012</ns0:P60489>\n <dc:relation rdf:resource=\"http://d-nb.info/1064805604\"/>\n <dc:subject>Smith, Adam</dc:subject>\n <dc:subject>Liberalismus</dc:subject>\n <dc:subject>Rechtsordnung</dc:subject>\n <dc:subject>Foucault, Michel</dc:subject>\n <dc:subject>Macht</dc:subject>\n <dc:subject>Politische Philosophie</dc:subject>\n <dc:subject rdf:resource=\"http://dewey.info/class/320.512092/e22/\"/>\n <dc:tableOfContents rdf:resource=\"http://d-nb.info/1054873992/04\"/>\n <dc:issued>2015</dc:issued>\n <ns0:P60493>zur Genealogie der liberalen Gouvernementalität</ns0:P60493>\n </bibo:Book>\n \n <foaf:Person rdf:about=\"http://d-nb.info/gnd/136486045\">\n <foaf:familyName>Ronge</foaf:familyName>\n <foaf:givenName>Bastian</foaf:givenName>\n </foaf:Person>\n \n\n</rdf:RDF>",
"items": [
{
"itemType": "book",
"title": "Das Adam-Smith-Projekt",
"creators": [
{
"creatorType": "author",
"lastName": "Ronge",
"firstName": "Bastian"
}
],
"date": "2015",
"ISBN": "9783658060268",
"itemID": "http://d-nb.info/1054873992",
"language": "http://id.loc.gov/vocabulary/iso639-2/ger",
"publisher": "Springer VS",
"attachments": [],
"tags": [
{
"tag": "Foucault, Michel"
},
{
"tag": "Liberalismus"
},
{
"tag": "Macht"
},
{
"tag": "Politische Philosophie"
},
{
"tag": "Rechtsordnung"
},
{
"tag": "Smith, Adam"
}
],
"notes": [],
"seeAlso": [
"http://d-nb.info/1064805604"
]
}
]
},
{
"type": "import",
"input": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<rdf:RDF\n xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"\n xmlns:schema=\"http://schema.org/\"\n>\n <schema:ScholarlyArticle rdf:nodeID=\"N523cd27ac2f84bbca7fe726b027db6d2\">\n <schema:pageStart>360</schema:pageStart>\n <schema:isPartOf rdf:resource=\"http://schema.org/Article#bib-2/issue\"/>\n <schema:about>Catalog</schema:about>\n <schema:about>Works</schema:about>\n <schema:pageEnd>368</schema:pageEnd>\n <schema:author>Smiraglia, Richard P.</schema:author>\n <schema:name>Be Careful What You Wish For: FRBR, Some Lacunae, A Review</schema:name>\n <schema:sameAs rdf:resource=\"http://dx.doi.org/10.1080/01639374.2012.682254\"/>\n <schema:description>The library catalog as a catalog of works was an infectious idea, which together with research led to reconceptualization in the form of the FRBR conceptual model. Two categories of lacunae emerge--the expression entity, and gaps in the model such as aggregates and dynamic documents. Evidence needed to extend the FRBR model is available in contemporary research on instantiation. The challenge for the bibliographic community is to begin to think of FRBR as a form of knowledge organization system, adding a final dimension to classification. The articles in the present special issue offer a compendium of the promise of the FRBR model.</schema:description>\n </schema:ScholarlyArticle>\n <schema:PublicationIssue rdf:about=\"http://schema.org/Article#bib-2/issue\">\n <schema:isPartOf>\n <schema:Periodical rdf:about=\"http://schema.org/Article#bib-2/periodical\">\n <schema:volumeNumber>50</schema:volumeNumber>\n <schema:publisher>Taylor & Francis Group</schema:publisher>\n <schema:issn>1544-4554</schema:issn>\n <schema:issn>0163-9374</schema:issn>\n <schema:name>Cataloging & Classification Quarterly</schema:name>\n <rdf:type rdf:resource=\"http://schema.org/PublicationVolume\"/>\n </schema:Periodical>\n </schema:isPartOf>\n <schema:issueNumber>5</schema:issueNumber>\n <schema:datePublished rdf:datatype=\"http://schema.org/Date\">2012</schema:datePublished>\n </schema:PublicationIssue>\n</rdf:RDF>",
"items": [
{
"itemType": "journalArticle",
"title": "Be Careful What You Wish For: FRBR, Some Lacunae, A Review",
"creators": [
{
"firstName": "Richard P.",
"lastName": "Smiraglia",
"creatorType": "author"
}
],
"ISSN": "1544-4554",
"abstractNote": "The library catalog as a catalog of works was an infectious idea, which together with research led to reconceptualization in the form of the FRBR conceptual model. Two categories of lacunae emerge--the expression entity, and gaps in the model such as aggregates and dynamic documents. Evidence needed to extend the FRBR model is available in contemporary research on instantiation. The challenge for the bibliographic community is to begin to think of FRBR as a form of knowledge organization system, adding a final dimension to classification. The articles in the present special issue offer a compendium of the promise of the FRBR model.",
"issue": "5",
"itemID": "_:n82",
"pages": "360-368",
"publicationTitle": "Cataloging & Classification Quarterly",
"url": "http://dx.doi.org/10.1080/01639374.2012.682254",
"volume": "50",
"attachments": [],
"tags": [
{
"tag": "Catalog"
},
{
"tag": "Works"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<rdf:RDF\n xmlns:codemeta=\"https://codemeta.github.io/terms/\"\n xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"\n xmlns:schema=\"http://schema.org/\"\n>\n <schema:SoftwareSourceCode rdf:nodeID=\"N7272101842f544e2a9a7508327eb329b\">\n <schema:name>CodeMeta: Minimal metadata schemas for science software and code, in JSON-LD</schema:name>\n <schema:description>CodeMeta is a concept vocabulary that can be used to standardize the exchange of software metadata across repositories and organizations.</schema:description>\n <schema:dateCreated rdf:datatype=\"http://schema.org/Date\">2017-06-05</schema:dateCreated>\n <schema:datePublished rdf:datatype=\"http://schema.org/Date\">2017-06-05</schema:datePublished>\n <schema:version>2.0</schema:version>\n <schema:softwareVersion>2.0</schema:softwareVersion>\n <schema:programmingLanguage>JSON-LD</schema:programmingLanguage>\n <schema:license rdf:resource=\"https://spdx.org/licenses/Apache-2.0\"/>\n <codemeta:developmentStatus rdf:resource=\"file:///base/data/home/apps/s%7Erdf-translator/2.408516547054015808/active\"/>\n <codemeta:funding>National Science Foundation Award #1549758; Codemeta: A Rosetta Stone for Metadata in Scientific Software</codemeta:funding>\n <schema:codeRepository rdf:resource=\"https://github.com/codemeta/codemeta\"/>\n <schema:downloadUrl rdf:resource=\"https://github.com/codemeta/codemeta/archive/2.0.zip\"/>\n <codemeta:contIntegration rdf:resource=\"https://travis-ci.org/codemeta/codemeta\"/>\n <schema:identifier rdf:resource=\"file:///base/data/home/apps/s%7Erdf-translator/2.408516547054015808/CodeMeta\"/>\n <codemeta:issueTracker rdf:resource=\"https://github.com/codemeta/codemeta/issues\"/>\n <schema:keywords>software</schema:keywords>\n <schema:keywords>metadata</schema:keywords>\n <codemeta:maintainer rdf:resource=\"http://orcid.org/0000-0002-1642-628X\"/>\n <schema:author rdf:resource=\"http://orcid.org/0000-0002-1642-628X\"/>\n <schema:author rdf:resource=\"http://orcid.org/0000-0003-0077-4738\"/>\n <schema:contributor rdf:resource=\"http://orcid.org/0000-0003-4925-7248\"/>\n <schema:contributor rdf:resource=\"http://orcid.org/0000-0001-5636-0433\"/>\n <schema:contributor rdf:resource=\"http://orcid.org/0000-0002-9300-5278\"/>\n <schema:contributor rdf:resource=\"http://orcid.org/0000-0003-1419-2405\"/>\n <schema:contributor rdf:resource=\"http://orcid.org/0000-0002-8876-7606\"/>\n <schema:contributor rdf:resource=\"N99ac8e31c13d4ae5994cbc8669e01866\"/>\n <schema:contributor rdf:resource=\"http://orcid.org/0000-0001-8465-8341\"/>\n <schema:contributor rdf:resource=\"http://orcid.org/0000-0003-4741-0309\"/>\n <schema:contributor rdf:resource=\"http://orcid.org/0000-0003-2720-0339\"/>\n <schema:contributor rdf:resource=\"http://orcid.org/0000-0002-1642-628X\"/>\n <schema:contributor rdf:resource=\"http://orcid.org/0000-0003-1219-2137\"/>\n <schema:contributor rdf:resource=\"http://orcid.org/0000-0002-3957-2474\"/>\n <schema:contributor rdf:resource=\"http://orcid.org/0000-0003-3477-2845\"/>\n <schema:contributor rdf:resource=\"Nefd7fe71736c433db9ada28e54018b34\"/>\n <schema:contributor rdf:resource=\"http://orcid.org/0000-0003-1304-1939\"/>\n <schema:contributor rdf:resource=\"Nc65fe076896346a9a8859f25f5e3bca9\"/>\n <schema:contributor rdf:resource=\"http://orcid.org/0000-0003-4425-7097\"/>\n <schema:contributor rdf:resource=\"http://orcid.org/0000-0002-2192-403X\"/>\n </schema:SoftwareSourceCode>\n \n <schema:Person rdf:about=\"http://orcid.org/0000-0003-4925-7248\">\n <schema:familyName>Druskat</schema:familyName>\n <schema:email>mail@sdruskat.net</schema:email>\n <schema:givenName>Stephan</schema:givenName>\n </schema:Person>\n <schema:Person rdf:about=\"http://orcid.org/0000-0001-5636-0433\">\n <schema:givenName>Ashley</schema:givenName>\n <schema:familyName>Sands</schema:familyName>\n </schema:Person>\n <schema:Person rdf:about=\"http://orcid.org/0000-0002-9300-5278\">\n <schema:givenName>Patricia</schema:givenName>\n <schema:familyName>Cruse</schema:familyName>\n </schema:Person>\n <schema:Person rdf:about=\"http://orcid.org/0000-0003-1419-2405\">\n <schema:givenName>Martin</schema:givenName>\n <schema:familyName>Fenner</schema:familyName>\n </schema:Person>\n <schema:Person rdf:about=\"http://orcid.org/0000-0002-8876-7606\">\n <schema:givenName>Neil</schema:givenName>\n <schema:familyName>Chue Hong</schema:familyName>\n <schema:email>n.chuehong@epcc.ed.ac.uk</schema:email>\n </schema:Person>\n <schema:Person rdf:nodeID=\"N99ac8e31c13d4ae5994cbc8669e01866\">\n <schema:familyName>Nowak</schema:familyName>\n <schema:givenName>Krzysztof</schema:givenName>\n </schema:Person>\n <schema:Person rdf:about=\"http://orcid.org/0000-0001-8465-8341\">\n <schema:familyName>Gil</schema:familyName>\n <schema:email>GIL@ISI.EDU</schema:email>\n <schema:givenName>Yolanda</schema:givenName>\n </schema:Person>\n <schema:Person rdf:about=\"http://orcid.org/0000-0003-4741-0309\">\n <schema:familyName>Hahnel</schema:familyName>\n <schema:givenName>Mark</schema:givenName>\n </schema:Person>\n <schema:Person rdf:about=\"http://orcid.org/0000-0003-2720-0339\">\n <schema:email>dskatz@illinois.edu</schema:email>\n <schema:givenName>Dan</schema:givenName>\n <schema:familyName>Katz</schema:familyName>\n </schema:Person>\n <schema:Person rdf:about=\"http://orcid.org/0000-0002-1642-628X\">\n <schema:givenName>Carl</schema:givenName>\n <schema:familyName>Boettiger</schema:familyName>\n <schema:email>cboettig@gmail.com</schema:email>\n </schema:Person>\n <schema:Person rdf:about=\"http://orcid.org/0000-0003-1219-2137\">\n <schema:email>carole.goble@manchester.ac.uk</schema:email>\n <schema:familyName>Goble</schema:familyName>\n <schema:givenName>Carole</schema:givenName>\n </schema:Person>\n <schema:Person rdf:about=\"http://orcid.org/0000-0002-3957-2474\">\n <schema:familyName>Smith</schema:familyName>\n <schema:givenName>Arfon</schema:givenName>\n <schema:email>arfon.smith@gmail.com</schema:email>\n </schema:Person>\n <schema:Person rdf:about=\"http://orcid.org/0000-0003-3477-2845\">\n <schema:givenName>Alice</schema:givenName>\n <schema:email>aallen@ascl.net</schema:email>\n <schema:familyName>Allen</schema:familyName>\n </schema:Person>\n <schema:Person rdf:nodeID=\"Nefd7fe71736c433db9ada28e54018b34\">\n <schema:email>abbycabs@gmail.com</schema:email>\n <schema:givenName>Abby Cabunoc</schema:givenName>\n <schema:familyName>Mayes</schema:familyName>\n </schema:Person>\n <schema:Person rdf:about=\"http://orcid.org/0000-0003-1304-1939\">\n <schema:givenName>Mercè</schema:givenName>\n <schema:familyName>Crosas</schema:familyName>\n </schema:Person>\n <schema:Person rdf:about=\"Nc65fe076896346a9a8859f25f5e3bca9\">\n <schema:email>luke.coy@rit.edu</schema:email>\n <schema:familyName>Coy</schema:familyName>\n <schema:givenName>Luke</schema:givenName>\n </schema:Person>\n <schema:Person rdf:about=\"http://orcid.org/0000-0003-4425-7097\">\n <schema:givenName>Kyle</schema:givenName>\n <schema:email>Kyle.Niemeyer@oregonstate.edu</schema:email>\n <schema:familyName>Niemeyer</schema:familyName>\n </schema:Person>\n <schema:Person rdf:about=\"http://orcid.org/0000-0002-2192-403X\">\n <schema:givenName>Peter</schema:givenName>\n <schema:email>slaughter@nceas.ucsb.edu</schema:email>\n <schema:familyName>Slaughter</schema:familyName>\n </schema:Person>\n <schema:Person rdf:about=\"http://orcid.org/0000-0003-0077-4738\">\n <schema:givenName>Matthew B.</schema:givenName>\n <schema:familyName>Jones</schema:familyName>\n <schema:email>jones@nceas.ucsb.edu</schema:email>\n </schema:Person>\n</rdf:RDF>",
"items": [
{
"itemType": "computerProgram",
"title": "CodeMeta: Minimal metadata schemas for science software and code, in JSON-LD",
"creators": [
{
"creatorType": "programmer",
"lastName": "Boettiger",
"firstName": "Carl"
},
{
"creatorType": "programmer",
"lastName": "Jones",
"firstName": "Matthew B."
},
{
"creatorType": "contributor",
"lastName": "Druskat",
"firstName": "Stephan"
},
{
"creatorType": "contributor",
"lastName": "Sands",
"firstName": "Ashley"
},
{
"creatorType": "contributor",
"lastName": "Cruse",
"firstName": "Patricia"
},
{
"creatorType": "contributor",
"lastName": "Fenner",
"firstName": "Martin"
},
{
"creatorType": "contributor",
"lastName": "Chue Hong",
"firstName": "Neil"
},
{
"creatorType": "contributor",
"lastName": "Gil",
"firstName": "Yolanda"
},
{
"creatorType": "contributor",
"lastName": "Hahnel",
"firstName": "Mark"
},
{
"creatorType": "contributor",
"lastName": "Katz",
"firstName": "Dan"
},
{
"creatorType": "contributor",
"lastName": "Boettiger",
"firstName": "Carl"
},
{
"creatorType": "contributor",
"lastName": "Goble",
"firstName": "Carole"
},
{
"creatorType": "contributor",
"lastName": "Smith",
"firstName": "Arfon"
},
{
"creatorType": "contributor",
"lastName": "Allen",
"firstName": "Alice"
},
{
"creatorType": "contributor",
"lastName": "Crosas",
"firstName": "Mercè"
},
{
"creatorType": "contributor",
"lastName": "Coy",
"firstName": "Luke"
},
{
"creatorType": "contributor",
"lastName": "Niemeyer",
"firstName": "Kyle"
},
{
"creatorType": "contributor",
"lastName": "Slaughter",
"firstName": "Peter"
}
],
"date": "2017-06-05",
"abstractNote": "CodeMeta is a concept vocabulary that can be used to standardize the exchange of software metadata across repositories and organizations.",
"itemID": "_:n79",
"programmingLanguage": "JSON-LD",
"rights": "https://spdx.org/licenses/Apache-2.0",
"versionNumber": "2.0",
"attachments": [],
"tags": [
{
"tag": "metadata"
},
{
"tag": "software"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "<rdf:RDF\n xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"\n xmlns:z=\"http://www.zotero.org/namespaces/export#\"\n xmlns:link=\"http://purl.org/rss/1.0/modules/link/\"\n xmlns:dc=\"http://purl.org/dc/elements/1.1/\"\n xmlns:dcterms=\"http://purl.org/dc/terms/\"\n xmlns:prism=\"http://prismstandard.org/namespaces/1.2/basic/\"\n xmlns:bib=\"http://purl.org/net/biblio#\">\n <bib:Report rdf:about=\"#test-report\">\n <z:itemType>report</z:itemType>\n <prism:number>NLR-TP-96-464</prism:number>\n <dc:title>Test</dc:title>\n </bib:Report>\n</rdf:RDF>\n",
"items": [
{
"itemType": "report",
"title": "Test",
"creators": [],
"itemID": "#test-report",
"reportNumber": "NLR-TP-96-464",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Sebastian Karcher^https?://nyu\.databrary\.org/(volume|search)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2023 Sebastian Karcher
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
const datasetType = ZU.fieldIsValidForType('title', 'dataset')
? 'dataset'
: 'document';
function detectWeb(doc, url) {
if (url.includes('/volume/')) {
return datasetType;
}
else if (url.includes("/search?q=")) {
Z.monitorDOMChanges(doc.querySelector('body'));
if (getSearchResults(doc, true)) return 'multiple';
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('h3.search-volume-result-title>a');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
async function doWeb(doc, url) {
if (detectWeb(doc, url) == 'multiple') {
let items = await Zotero.selectItems(getSearchResults(doc, false));
if (!items) return;
for (let url of Object.keys(items)) {
// page loads via javascript, so geting the object wont' work
url = url.replace("https://nyu.databrary.org/volume", "https://nyu.databrary.org/api/volume");
await scrapeJSON(await requestText(url));
}
}
else {
await scrape(doc, url);
}
}
async function scrapeJSON(text) {
var dbJSON = JSON.parse(text);
let doi = dbJSON.doi;
let risURL = `https://data.datacite.org/application/x-research-info-systems/${doi}`;
let id = dbJSON.id;
let risText = await requestText(risURL);
let translator = Zotero.loadTranslator('import');
translator.setTranslator('32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7'); // RIS
translator.setString(risText);
translator.setHandler('itemDone', (_obj, item) => {
item.itemType = "dataset";
item.attachments.push({
title: 'Snapshot',
url: `http://databrary.org/volume/${id}`,
mimeType: 'text/html'
});
item.complete();
});
await translator.translate();
}
async function scrape(doc) {
let DOI = attr(doc, 'p.panel-overview-volume-citation>a', 'href');
DOI = DOI.replace(/https?:\/\/doi.org/, "");
let risURL = `https://data.datacite.org/application/x-research-info-systems/${DOI}`;
// Z.debug(risURL)
let risText = await requestText(risURL);
// Z.debug(risText);
let translator = Zotero.loadTranslator('import');
translator.setTranslator('32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7'); // RIS
translator.setString(risText);
translator.setHandler('itemDone', (_obj, item) => {
item.attachments.push({
title: 'Snapshot',
document: doc
});
item.complete();
});
await translator.translate();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://nyu.databrary.org/volume/1322",
"defer": true,
"detectedItemType": "dataset",
"items": [
{
"itemType": "dataset",
"title": "Moving language: Mothers’ verbs correspond to infants’ real-time locomotion",
"creators": [
{
"lastName": "West",
"firstName": "Kelsey Louise",
"creatorType": "author"
},
{
"lastName": "Tamis-LeMonda",
"firstName": "Catherine",
"creatorType": "author"
},
{
"lastName": "Adolph",
"firstName": "Karen",
"creatorType": "author"
}
],
"date": "2021",
"DOI": "10.17910/B7.1322",
"abstractNote": "How do infants learn language? Infants can only learn the words that they hear. We tested whether infants’ actions affect the words that caregivers say—specifically whether infant locomotion influences caregivers’ language about locomotion. Compared to crawling infants, walkers travel greater distances (Adolph, et al, 2012). Does enhanced locomotion in walkers influence the verbs that caregivers say? We hypothesized that walking creates new opportunities for verb learning. To disentangle locomotor ability from age, we observed same-aged crawlers and walkers (16 13-month-old crawlers and 16 13-month-old walkers) and an older group of walkers (16 18-month-olds) during two hours of activity at home. Mothers’ language was transcribed verbatim. We then identified each “locomotor verb” (e.g., “come,” “bring”) that mothers said, and each bout of infant crawling and walking. Walkers’ enhanced locomotion indeed opened new opportunities for verb learning. Although mothers’ language overall was more frequent to older compared to younger infants, their locomotor verbs were more frequent to walkers than to crawlers. Preliminary findings show that caregivers directed more utterances to 18-month-olds (M = 2,006.00, SD = 579.02) compared to 13-month-old crawlers (M = 1,553.75, SD = 728.42) and walkers (M = 1,363.50, SD = 619.29), F (2, 31) = 3.23, p = .052. Notably, caregivers directed twice as many locomotor verbs to 13- and 18-month-old walkers (M = 53.13, SD = 15.40; M = 53.00, SD = 25.14, respectively) compared with 13-month-old crawlers (M = 25.25, SD = 12.87), F (2, 31) = 5.46, p = .01. Moreover, mothers’ locomotor verbs were related to infants’ moment-to-moment locomotion: Infants who moved more frequently received more locomotor verbs compared to infants who moved less, r(26) = .42, p = .035. Findings indicate that locomotor development leads to more advanced forms of infant activity, which consequently prompts caregivers to use more advanced language.",
"libraryCatalog": "Databrary",
"repository": "Databrary",
"shortTitle": "Moving language",
"url": "http://databrary.org/volume/1322",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://nyu.databrary.org/search?q=mothers",
"defer": true,
"detectedItemType": "multiple",
"items": "multiple"
}
]
/** END TEST CASES **/
100Abe Jellinek, Sebastian Karcher^https?://(www\.)?((open|research-?|hei|planetary-|osna|in|bonn|borealis|lida\.|archaeology\.|entrepot\.recherche\.|archive\.|redape\.)?(data|e?da[td]os)|dvn|sodha\.be|repositorio(\.|dedados|pesquisas)|abacus\.library\.ubc\.ca|dorel\.univ-lorraine\.fr|darus\.uni-stuttgart\.de|dunas\.ua\.pt|edmond\.mpdl\.mpg\.de|keen\.zih\.tu-dresden\.de|rdr\.kuleuven\.be|portal\.odissei\.nl)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2023 Abe Jellinek & Sebastian Karcher
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
const datasetType = ZU.fieldIsValidForType('title', 'dataset')
? 'dataset'
: 'document';
function detectWeb(doc, url) {
if (!doc.querySelector('#dataverseHeader')) {
return false;
}
if (url.includes('/dataset.xhtml')) {
return datasetType;
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.datasetResult a[href*="/dataset.xhtml"]');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
async function doWeb(doc, url) {
if (detectWeb(doc, url) == 'multiple') {
let items = await Zotero.selectItems(getSearchResults(doc, false));
if (!items) return;
for (let url of Object.keys(items)) {
await scrape(await requestDocument(url));
}
}
else {
await scrape(doc, url);
}
}
async function scrape(doc, url = doc.location.href) {
let jsonLD = text(doc, 'script[type="application/ld+json"]');
// Z.debug(jsonLD)
let schema = JSON.parse(jsonLD);
let license = schema.license;
let abstract = schema.description;
// License can be stored as a string or an object (should be a string)
if (typeof (license) == "object") {
license = schema.license.text;
}
let version = schema.version;
let translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', (_obj, item) => {
item.libraryCatalog = text(doc, '#breadcrumbLnk0');
// we commonly have two colons in titles. The first one just labels the data as data
if (/^(Replication )?[Dd]ata for:/.test(item.title)) {
item.shortTitle = item.title.match(/(^(Replication )?[Dd]ata for:.*?)(:|$)/)[1];
}
if (license) {
item.rights = ZU.cleanTags(license).trim();
}
if (abstract) {
item.abstractNote = abstract;
}
if (version && version > 1) item.versionNumber = version;
item.complete();
});
let em = await translator.getTranslatorObject();
em.itemType = datasetType;
await em.doWeb(doc, url);
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://dataverse.harvard.edu/dataset.xhtml?persistentId=doi:10.7910/DVN/3OUPKS",
"items": [
{
"itemType": "dataset",
"title": "Survey seed production and seed contract",
"creators": [
{
"firstName": "Prakashan",
"lastName": "Veettil",
"creatorType": "author"
}
],
"date": "2021-08-04",
"DOI": "10.7910/DVN/3OUPKS",
"abstractNote": "The data is collected as part of a seed contract experiment conducted in Telengana state, India",
"language": "en",
"libraryCatalog": "Harvard Dataverse",
"repository": "Harvard Dataverse",
"rights": "CC0",
"url": "https://dataverse.harvard.edu/dataset.xhtml?persistentId=doi:10.7910/DVN/3OUPKS",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Agricultural Sciences"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://dataverse.harvard.edu/dataverse/harvard?q=chocolate",
"items": "multiple"
},
{
"type": "web",
"url": "https://datos.uchile.cl/dataset.xhtml?persistentId=doi:10.34691/FK2/UMWJDU",
"detectedItemType": "dataset",
"items": [
{
"itemType": "dataset",
"title": "Replicar los datos para: Genetic diversity in a restricted-dispersal kissing bug: The Center-Periphery Hypothesis halfway",
"creators": [
{
"firstName": "Esteban",
"lastName": "San Juan",
"creatorType": "author"
},
{
"firstName": "Raul",
"lastName": "Araya-Donoso",
"creatorType": "author"
},
{
"firstName": "David",
"lastName": "Veliz",
"creatorType": "author"
},
{
"firstName": "Nicol",
"lastName": "Quiroga",
"creatorType": "author"
},
{
"firstName": "Carezza",
"lastName": "Botto-Mahan",
"creatorType": "author"
}
],
"date": "2021-07-19",
"DOI": "10.34691/FK2/UMWJDU",
"abstractNote": "The center-periphery hypothesis (CPH) postulates that populations close to the center of a species’ distribution will exhibit higher genetic diversity and lower genetic differentiation than populations located at the edge of the distribution. The center of a species distribution might represent an optimum for the environmental factors influencing the species absolute fitness and therefore, genetic diversity. In species with wide distribution, the geographical variation of biotic and abiotic variables is crucial to understand the underlying mechanisms of the CPH. We evaluated the CPH and specifically tested which environmental variables better explained the patterns of genetic diversity in the kissing-bug Mepraia spinolai, one of the main wild vectors of Chagas disease in southern South America, distributing across three Mediterranean climatic ecoregions in Chile. We analyzed 2380 neutral Single Nucleotide Polymorphisms (SNP) to estimate genetic diversity. The mean winter temperature, the mean summer temperature, vegetation cover, population abundance, proportion of winged individuals and female abdomen area were measured for each kissing bug population to construct a model. Lower genetic diversity was detected in populations at the edge of the distribution compared to those in the center. However, genetic differentiation was not higher in the periphery. Genetic diversity was related to climatic and biological variables; there was a positive relationship with mean winter temperature and a negative association with mean summer temperature and body size. These results partially support the CPH and identify biotic (abdomen area) and abiotic (winter/summer temperatures) factors that would affect genetic diversity in this restricted-dispersal species of epidemiological relevance.",
"extra": "Type: dataset",
"language": "en",
"libraryCatalog": "Repositorio de datos de investigación de la Universidad de Chile",
"repository": "Repositorio de datos de investigación de la Universidad de Chile",
"rights": "CC0",
"shortTitle": "Replicar los datos para",
"url": "https://datos.uchile.cl/dataset.xhtml?persistentId=doi:10.34691/FK2/UMWJDU",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Ciencias de la Tierra y Medioambiente"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://datos.uchile.cl/dataverse/uchile?q=santiago",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.sodha.be/dataset.xhtml?persistentId=doi:10.34934/DVN/HEABHJ",
"items": [
{
"itemType": "dataset",
"title": "World Value Surveys 1981",
"creators": [
{
"firstName": "Ronald",
"lastName": "Inglehart",
"creatorType": "author"
}
],
"date": "2021-07-30",
"DOI": "10.34934/DVN/HEABHJ",
"abstractNote": "The series is designed to enable a crossnational comparison of values and norms on a wide variety of topics and to monitor changes in values and attitudes across the world in 1981.",
"extra": "Type: dataset",
"language": "en",
"libraryCatalog": "Social Sciences and Digital Humanities Archive – SODHA",
"repository": "Social Sciences and Digital Humanities Archive – SODHA",
"rights": "This work is licensed under a Creative Commons Attribution 4.0 International License (CC-BY).",
"url": "https://www.sodha.be/dataset.xhtml?persistentId=doi:10.34934/DVN/HEABHJ",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Social Sciences"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://data.worldagroforestry.org/dataset.xhtml?persistentId=doi:10.34725/DVN/NGGXCZ",
"items": [
{
"itemType": "dataset",
"title": "Replication Data for: Agroforestry governance for operationalising the landscape approach: connecting conservation and farming actors",
"creators": [
{
"firstName": "Yves",
"lastName": "Zinngrebe",
"creatorType": "author"
},
{
"firstName": "Elena",
"lastName": "Borasino",
"creatorType": "author"
},
{
"firstName": "Brian",
"lastName": "Chiputwa",
"creatorType": "author"
},
{
"firstName": "Philip",
"lastName": "Dobie",
"creatorType": "author"
},
{
"firstName": "Edwin",
"lastName": "Garcia",
"creatorType": "author"
},
{
"firstName": "Anja",
"lastName": "Gassner",
"creatorType": "author"
},
{
"firstName": "Heru",
"lastName": "Komarudin",
"creatorType": "author"
},
{
"firstName": "Nining",
"lastName": "Liswanti",
"creatorType": "author"
},
{
"firstName": "Parmutia",
"lastName": "Makui",
"creatorType": "author"
},
{
"firstName": "Tobias",
"lastName": "Plieninger",
"creatorType": "author"
},
{
"firstName": "Ettie",
"lastName": "Winter",
"creatorType": "author"
},
{
"firstName": "Jennifer",
"lastName": "Hauck",
"creatorType": "author"
}
],
"date": "2021-08-05",
"DOI": "10.34725/DVN/NGGXCZ",
"abstractNote": "The expansion and intensifcation of agriculture as well as the associated land clearing are threatening both biodiversity and human wellbeing in tr...",
"language": "en",
"libraryCatalog": "World Agroforestry - Research Data Repository",
"repository": "World Agroforestry - Research Data Repository",
"rights": "This dataset is made available under the Creative Commons Attribution 4.0 International (CC-BY-4.0). The license allows you, the user, to copy and redistribute the material in any medium or format and/or transform, and build upon the material\r\nfor any purpose, even commercially.",
"shortTitle": "Replication Data for",
"url": "https://data.worldagroforestry.org/dataset.xhtml?persistentId=doi:10.34725/DVN/NGGXCZ",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Agricultural Sciences"
},
{
"tag": "Social Sciences"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://dataverse.no/dataset.xhtml?persistentId=doi:10.18710/GUX2O8",
"detectedItemType": "dataset",
"items": [
{
"itemType": "dataset",
"title": "Replication Data for: Spatial changes in gas transport and sediment stiffness influenced by regional stress: observations from piezometer data along the Vestnesa Ridge, eastern Fram Strait",
"creators": [
{
"firstName": "Andreia",
"lastName": "Plaza-Faverola",
"creatorType": "author"
},
{
"firstName": "Nabil",
"lastName": "Sultan",
"creatorType": "author"
}
],
"date": "2023-04-11",
"DOI": "10.18710/GUX2O8",
"abstractNote": "This database comprises piezometer pore-pressure and temperature data, analyses from Calypso sediment cores (grain sizes and logs) and results from...",
"extra": "Type: dataset",
"language": "en",
"libraryCatalog": "DataverseNO",
"repository": "DataverseNO",
"rights": "http://creativecommons.org/publicdomain/zero/1.0",
"shortTitle": "Replication Data for",
"url": "https://dataverse.no/dataset.xhtml?persistentId=doi:10.18710/GUX2O8",
"versionNumber": "2",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Earth and Environmental Sciences"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
101Aurimas Vinckevicius^https?://www\.lulu\.com/shop/function getSearchResults(doc) {
return ZU.xpath(doc, '//div[@class="middle-column"]/div[@class="products"]/div//a[@class="title" and @href]');
}
function detectWeb(doc, url) {
if (url.search(/\/product-\d+\.html/) != -1) {
return 'book';
}
if (url.indexOf('/search.ep?') != -1
&& getSearchResults(doc).length) {
return 'multiple';
}
}
function doWeb(doc, url) {
var results = getSearchResults(doc);
if (results.length) {
var items = {};
for (var i=0, n=results.length; i<n; i++) {
items[results[i].href] = ZU.trimInternal(results[i].textContent);
}
Z.selectItems(items, function(selectedItems) {
if (!selectedItems) return true;
var urls = [];
for (var i in selectedItems) {
urls.push(i);
}
ZU.processDocuments(urls, scrape);
})
} else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var item = makeItem(doc, url);
item.complete();
}
function makeItem(doc, url) {
var item = new Zotero.Item('book');
item.title = ZU.capitalizeTitle(
ZU.trimInternal(ZU.xpathText(doc, '//div[@class="product-information"]/h2[1]')),
true
);
var authors = ZU.xpath(doc, '//div[@class="product-information"]//span[@class="authors"]/a/span');
for (var i=0, n=authors.length; i<n; i++) {
var name = ZU.trimInternal(authors[i].textContent).replace(/^(?:Dr|Prof)\.?\s|\s(?:M.?A|Ph\.?D|B\.?S|B\.?A|M\.?D(?:\.?\sPh\.?D)?)\.?$/gi, '');
item.creators.push(ZU.cleanAuthor(ZU.capitalizeTitle(name, true), 'author'));
}
var description = doc.getElementsByClassName('description')[0];
if (description.getElementsByClassName('expandable-text').length) {
description = ZU.xpathText(description, './span/text()[1]')
+ ' ' + ZU.xpathText(description, './span/span[@class="more-text"]/text()[1]');
} else {
description = description.textContent;
if (ZU.trimInternal(description) == 'No description supplied') {
description = false;
}
}
if (description) {
item.abstractNote = description.trim().replace(/ +/, ' ');
}
var productDetails = doc.getElementsByClassName('product-details')[0];
item.ISBN = ZU.cleanISBN(ZU.xpathText(productDetails, './dd[@class="isbn"]') || '', true);
item.publisher = ZU.trimInternal(ZU.xpathText(productDetails, './dd[@class="publisher"]') || '');
item.rights = ZU.trimInternal(ZU.xpathText(productDetails, './dd[@class="copyright-info"]') || '');
item.language = ZU.trimInternal(ZU.xpathText(productDetails, './dd[@class="language"]') || '');
item.date = ZU.strToISO(ZU.xpathText(productDetails, './dd[@class="publication-date"]') || '');
item.numPages = ZU.trimInternal(ZU.xpathText(productDetails, './dd[@class="pages"]') || '');
item.attachments.push({
title: "Lulu Link",
url: url,
mimeType: 'text/html',
snapshot: false
})
return item;
}
function detectSearch(items) {
// Disabled -- no longer working
return false;
if (items.ISBN) return true;
if (!items.length) return;
for (var i=0, n=items.length; i<n; i++) {
if (items[i].ISBN && ZU.cleanISBN('' + items[i].ISBN)) {
return true;
}
}
}
function doSearch(items) {
if (!items.length) items = [items];
var query = [];
for (var i=0, n=items.length; i<n; i++) {
var isbn;
if (items[i].ISBN && (isbn = ZU.cleanISBN('' + items[i].ISBN))) {
(function(item, isbn) {
ZU.processDocuments('https://www.lulu.com/shop/search.ep?keyWords=' + isbn, function(doc, url) {
var results = getSearchResults(doc);
if (!results.length) {
if (item.complete) item.complete();
return;
}
ZU.processDocuments(results[0].href, function(doc, url) {
var newItem = makeItem(doc, url);
if (newItem.ISBN == isbn) {
newItem.complete();
} else {
if (item.complete) item.complete();
}
});
})
})(items[i], isbn);
} else if (items[i].complete) {
items[i].complete();
}
}
}/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://www.lulu.com/shop/dr-r-selvakumar/diseases-of-plantation-crops/ebook/product-17472985.html",
"items": [
{
"itemType": "book",
"creators": [
{
"firstName": "R.",
"lastName": "Selvakumar",
"creatorType": "author"
}
],
"notes": [],
"tags": [],
"seeAlso": [],
"attachments": [
{
"title": "Lulu Link",
"mimeType": "text/html",
"snapshot": false
}
],
"title": "Diseases of Plantation Crops",
"publisher": "Dr.SELVAKUMAR RAJAN",
"rights": "selvakumar (Standard Copyright License)",
"language": "English",
"date": "2011-09-30",
"numPages": "15",
"libraryCatalog": "Lulu"
}
]
},
{
"type": "web",
"url": "http://www.lulu.com/shop/search.ep?keyWords=zotero",
"items": "multiple"
},
{
"type": "web",
"url": "http://www.lulu.com/shop/daniel-segars-and-kelli-segars/4-week-fat-loss-program-for-busy-people/ebook/product-21169392.html",
"items": [
{
"itemType": "book",
"creators": [
{
"firstName": "Daniel",
"lastName": "Segars",
"creatorType": "author"
},
{
"firstName": "Kelli",
"lastName": "Segars",
"creatorType": "author"
}
],
"notes": [],
"tags": [],
"seeAlso": [],
"attachments": [
{
"title": "Lulu Link",
"mimeType": "text/html",
"snapshot": false
}
],
"title": "4 Week Fat Loss Program for Busy People",
"abstractNote": "Fitness Blender's 4 Week Fat Loss Program for Busy People features workouts that are 30 minutes or less, combining fat blasting HIIT with metabolism boosting strength training to bring about incredible results quickly. This challenging home workout program only requires dumbbells. The detailed, day-by-day plan uses Fitness Blender's free online workout videos to challenge & change your body fast. HIIT, cardio, strength training, circuit training, supersets, plyometrics, Pilates, yoga, & kettlebell training (dumbbells are an ample substitute) come together to create the ideal workout program. Many people who complete these programs see weight loss - often 8-12 lbs in just 1 month - reduced body fat, drastic improvements in body tone, endurance, strength, & flexibility gains. Each day you get a Calorie Burn estimate & we include a brief but effective Nutrition section to give you the essentials on how to properly nourish yourself during the program. 30 Minutes is 1/48th of your day; no more excuses.",
"publisher": "Fitness Blender",
"rights": "Standard Copyright License",
"language": "English",
"date": "2013-08-21",
"numPages": "63",
"libraryCatalog": "Lulu"
}
]
},
{
"type": "search",
"input": {
"ISBN": "9780951470329"
},
"items": [
{
"itemType": "book",
"creators": [
{
"firstName": "Stephen Skelton",
"lastName": "MW",
"creatorType": "author"
}
],
"notes": [],
"tags": [],
"seeAlso": [],
"attachments": [
{
"title": "Lulu Link",
"mimeType": "text/html",
"snapshot": false
}
],
"abstractNote": "ALL YOU NEED TO KNOW ABOUT GROWING VINES IN 123 PAGES. \n\nThis book is a basic introduction to growing grapes and aimed at the serious student in the wine trade, WSET Diploma student or Master of Wine candidate. It is also very useful for those thinking of setting up vineyards as it answers a lot of the basic questions. \n\nHas sold over 3,500 copies now and received LOTS of emails saying how helpful it has been. \n\n\"Couldn't have become an MW without your book\" was the latest endorsement!",
"ISBN": "9780951470329",
"rights": "Stephen Skelton (Standard Copyright License)",
"language": "English",
"numPages": "146",
"libraryCatalog": "Lulu",
"title": "Viticulture - An Introduction to Commercial Grape Growing for Wine Production",
"publisher": "Stephen Skelton",
"date": "2017-03-06"
}
]
}
]
/** END TEST CASES **/
100Sebastian Karcher, Philipp Zumstein, and Abe Jellinek^https?://(www\.)?(dblp\d?(\.org|\.uni-trier\.de/|\.dagstuhl\.de/))/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2011-2021 Sebastian Karcher, Philipp Zumstein, and Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (doc.querySelector('#bibtex-section')) {
if (url.includes('journals')) {
return "journalArticle";
}
else if (url.includes('conf')) {
return "conferencePaper";
}
else if (url.includes('series') || url.includes('reference')) {
return "bookSection";
}
else if (url.includes('books')) {
return "book";
}
else if (url.includes('phd')) {
return "thesis";
}
else { // generic fallback
return "journalArticle";
}
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function scrape(doc, _url) {
let allData = doc.querySelectorAll('#bibtex-section > pre');
let firstData = allData[0];
var firstDataText = firstData.textContent.replace(/ ee\s*=/, " url ="); // e.g. ee = {http://dx.doi.org/10.1007/978-3-319-00035-0_37},
// conferencePapers and bookSections are linked in DBLP
// with the crossref field to the second BibTeX entry
// for the proceeding or book. In these cases the following
// lines (if-part) are handling the second entry and extracting
// relevant fields and save it (later) to the main entry.
var secondData = allData[1];
if (secondData) {
var secondDataText = secondData.textContent;
var trans = Zotero.loadTranslator('import');
trans.setTranslator('9cb70025-a888-4a29-a210-93ec52da40d4');// https://github.com/zotero/translators/blob/master/BibTeX.js
trans.setString(secondDataText);
trans.setHandler('itemDone', function (obj, item) {
scrapeMainPart(firstDataText, item);
});
trans.translate();
}
else { // if there are no secondData: scrape without additional data
scrapeMainPart(firstDataText, null);
}
}
function scrapeMainPart(firstDataText, secondDataItem) {
// scrape from the firstDataText and if secondDataItem
// is not null, add/update these information
var trans = Zotero.loadTranslator('import');
trans.setTranslator('9cb70025-a888-4a29-a210-93ec52da40d4');// https://github.com/zotero/translators/blob/master/BibTeX.js
trans.setString(firstDataText);
trans.setHandler('itemDone', function (obj, item) {
if (secondDataItem) {
if (secondDataItem.title && item.itemType == "conferencePaper") item.proceedingsTitle = secondDataItem.title;
if (secondDataItem.title && item.itemType == "bookSection") item.bookTitle = secondDataItem.title;
if (secondDataItem.creators && secondDataItem.creators.length > 0) item.creators = item.creators.concat(secondDataItem.creators);
if (secondDataItem.publisher && !item.publisher) item.publisher = secondDataItem.publisher;
if (secondDataItem.series && !item.series) item.series = secondDataItem.series;
if (secondDataItem.volume && !item.volume) item.volume = secondDataItem.volume;
if (secondDataItem.ISBN && !item.ISBN) item.ISBN = secondDataItem.ISBN;
}
// Assume that the url contains an doi. If the item does not
// yet contain a doi, then save the doi and delete the url.
// If the item contains the doi corresponding to the url
// then just delete the url and keep the doi.
if (item.url && /^https?:\/\/(?:dx\.)?doi\.org\/10\./i.test(item.url)) {
var doi = ZU.cleanDOI(item.url);
if (doi && (!item.DOI || item.DOI == doi)) {
item.DOI = doi;
delete item.url;
}
}
item.complete();
});
trans.translate();
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.entry');
for (let row of rows) {
let href = attr(row, 'a[href*="view=bibtex"]', 'href');
let title = text(row, '.title');
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://dblp.org/rec/journals/cssc/XuY12.html?view=bibtex",
"items": [
{
"itemType": "journalArticle",
"title": "On the Preliminary Test Backfitting and Speckman Estimators in Partially Linear Models and Numerical Comparisons",
"creators": [
{
"firstName": "Jianwen",
"lastName": "Xu",
"creatorType": "author"
},
{
"firstName": "Hu",
"lastName": "Yang",
"creatorType": "author"
}
],
"date": "2012",
"DOI": "10.1080/03610918.2011.588356",
"issue": "3",
"itemID": "DBLP:journals/cssc/XuY12",
"libraryCatalog": "DBLP Computer Science Bibliography",
"pages": "327–341",
"publicationTitle": "Commun. Stat. Simul. Comput.",
"volume": "41",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://dblp.org/rec/conf/ats/KochteZBIWHCP10.html?view=bibtex",
"items": [
{
"itemType": "conferencePaper",
"title": "Efficient Simulation of Structural Faults for the Reliability Evaluation at System-Level",
"creators": [
{
"firstName": "Michael A.",
"lastName": "Kochte",
"creatorType": "author"
},
{
"firstName": "Christian G.",
"lastName": "Zoellin",
"creatorType": "author"
},
{
"firstName": "Rafal",
"lastName": "Baranowski",
"creatorType": "author"
},
{
"firstName": "Michael E.",
"lastName": "Imhof",
"creatorType": "author"
},
{
"firstName": "Hans-Joachim",
"lastName": "Wunderlich",
"creatorType": "author"
},
{
"firstName": "Nadereh",
"lastName": "Hatami",
"creatorType": "author"
},
{
"firstName": "Stefano Di",
"lastName": "Carlo",
"creatorType": "author"
},
{
"firstName": "Paolo",
"lastName": "Prinetto",
"creatorType": "author"
}
],
"date": "2010",
"DOI": "10.1109/ATS.2010.10",
"itemID": "DBLP:conf/ats/KochteZBIWHCP10",
"libraryCatalog": "DBLP Computer Science Bibliography",
"pages": "3–8",
"proceedingsTitle": "Proceedings of the 19th IEEE Asian Test Symposium, ATS 2010, 1-4 December 2010, Shanghai, China",
"publisher": "IEEE Computer Society",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://dblp1.uni-trier.de/db/journals/tois/tois25.html",
"items": "multiple"
},
{
"type": "web",
"url": "https://dblp.uni-trier.de/db/journals/tods/tods31.html",
"items": "multiple"
},
{
"type": "web",
"url": "https://dblp.dagstuhl.de/pid/k/DonaldEKnuth.html",
"items": "multiple"
},
{
"type": "web",
"url": "https://dblp.uni-trier.de/rec/conf/approx/SchederT13.html?view=bibtex",
"items": [
{
"itemType": "conferencePaper",
"title": "On the Average Sensitivity and Density of k-CNF Formulas",
"creators": [
{
"firstName": "Dominik",
"lastName": "Scheder",
"creatorType": "author"
},
{
"firstName": "Li-Yang",
"lastName": "Tan",
"creatorType": "author"
},
{
"firstName": "Prasad",
"lastName": "Raghavendra",
"creatorType": "editor"
},
{
"firstName": "Sofya",
"lastName": "Raskhodnikova",
"creatorType": "editor"
},
{
"firstName": "Klaus",
"lastName": "Jansen",
"creatorType": "editor"
},
{
"firstName": "José D. P.",
"lastName": "Rolim",
"creatorType": "editor"
}
],
"date": "2013",
"DOI": "10.1007/978-3-642-40328-6_47",
"itemID": "DBLP:conf/approx/SchederT13",
"libraryCatalog": "DBLP Computer Science Bibliography",
"pages": "683–698",
"proceedingsTitle": "Approximation, Randomization, and Combinatorial Optimization. Algorithms and Techniques - 16th International Workshop, APPROX 2013, and 17th International Workshop, RANDOM 2013, Berkeley, CA, USA, August 21-23, 2013. Proceedings",
"publisher": "Springer",
"series": "Lecture Notes in Computer Science",
"url": "https://doi.org/10.1007/978-3-642-40328-6\\_47",
"volume": "8096",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://dblp.org/rec/conf/iclr/DasMYTM19.html",
"items": "multiple"
},
{
"type": "web",
"url": "https://dblp.org/search?q=zotero",
"items": "multiple"
},
{
"type": "web",
"url": "https://dblp.org/db/series/ceurws/ceurws2600-2699.html",
"items": "multiple"
},
{
"type": "web",
"url": "https://dblp.org/db/conf/ircdl/viperc2020.html",
"items": "multiple"
},
{
"type": "web",
"url": "https://dblp.org/rec/conf/iclr/DasMYTM19.html",
"items": "multiple"
},
{
"type": "web",
"url": "https://dblp.org/rec/conf/iclr/DasMYTM19.html?view=bibtex",
"items": [
{
"itemType": "conferencePaper",
"title": "Building Dynamic Knowledge Graphs from Text using Machine Reading Comprehension",
"creators": [
{
"firstName": "Rajarshi",
"lastName": "Das",
"creatorType": "author"
},
{
"firstName": "Tsendsuren",
"lastName": "Munkhdalai",
"creatorType": "author"
},
{
"firstName": "Xingdi",
"lastName": "Yuan",
"creatorType": "author"
},
{
"firstName": "Adam",
"lastName": "Trischler",
"creatorType": "author"
},
{
"firstName": "Andrew",
"lastName": "McCallum",
"creatorType": "author"
}
],
"date": "2019",
"itemID": "DBLP:conf/iclr/DasMYTM19",
"libraryCatalog": "DBLP Computer Science Bibliography",
"proceedingsTitle": "7th International Conference on Learning Representations, ICLR 2019, New Orleans, LA, USA, May 6-9, 2019",
"publisher": "OpenReview.net",
"url": "https://openreview.net/forum?id=S1lhbnRqF7",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://dblp.org/rec/reference/choice/LangX16.html?view=bibtex¶m=2",
"detectedItemType": "bookSection",
"items": [
{
"itemType": "bookSection",
"title": "Voting in Combinatorial Domains",
"creators": [
{
"firstName": "Jérôme",
"lastName": "Lang",
"creatorType": "author"
},
{
"firstName": "Lirong",
"lastName": "Xia",
"creatorType": "author"
},
{
"firstName": "Felix",
"lastName": "Brandt",
"creatorType": "editor"
},
{
"firstName": "Vincent",
"lastName": "Conitzer",
"creatorType": "editor"
},
{
"firstName": "Ulle",
"lastName": "Endriss",
"creatorType": "editor"
},
{
"firstName": "Jérôme",
"lastName": "Lang",
"creatorType": "editor"
},
{
"firstName": "Ariel D.",
"lastName": "Procaccia",
"creatorType": "editor"
}
],
"date": "2016",
"ISBN": "9781107446984",
"bookTitle": "Handbook of Computational Social Choice",
"extra": "DOI: 10.1017/CBO9781107446984.010",
"itemID": "DBLP:reference/choice/LangX16",
"libraryCatalog": "DBLP Computer Science Bibliography",
"pages": "197–222",
"publisher": "Cambridge University Press",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Sebastian Karcherxml/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2012 Sebastian Karcher
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectImport() {
var line;
var i = 0;
while ((line = Zotero.read()) !== false) {
if (line !== "") {
if (line.match(/xmlns(:marc)?="http:\/\/www\.loc\.gov\/MARC21\/slim"/)) {
return true;
}
else if (i++ > 5) {
return false;
}
}
}
return false;
}
function doImport() {
// call MARC translator
var translator = Zotero.loadTranslator("import");
translator.setTranslator("a6ee60df-1ddc-4aae-bb25-45e0537be973");
translator.getTranslatorObject(function (marc) {
var xml = Zotero.getXML();
// define the marc namespace
var ns = {
marc: "http://www.loc.gov/MARC21/slim"
};
var records = ZU.xpath(xml, '//marc:record', ns);
for (let rec of records) {
if (!ZU.xpath(rec, "./marc:datafield", ns).length) {
Zotero.debug('Skipping empty record');
continue;
}
// create one new item per record
var record = new marc.record();
var newItem = new Zotero.Item();
record.leader = ZU.xpathText(rec, "./marc:leader", ns);
var fields = ZU.xpath(rec, "./marc:datafield", ns);
for (let field of fields) {
// go through every datafield (corresponds to a MARC field)
var subfields = ZU.xpath(field, "./marc:subfield", ns);
var tag = "";
for (let subfield of subfields) {
// get the subfields and their codes...
var code = ZU.xpathText(subfield, "./@code", ns);
var sf = ZU.xpathText(subfield, "./text()", ns);
// delete non-sorting symbols
// e.g. ˜Dasœ Adam-Smith-Projekt
if (sf) {
sf = sf.replace(/[\x80-\x9F]/g, "");
// concat all subfields in one datafield, with subfield delimiter and code between them
tag = tag + marc.subfieldDelimiter + code + sf;
}
}
record.addField(ZU.xpathText(field, "./@tag", ns), ZU.xpathText(field, "./@ind1", ns) + ZU.xpathText(field, "./@ind2"), tag);
}
record.translate(newItem);
newItem.complete();
}
}); // get Translator end
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "import",
"input": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- edited with XML Spy v4.3 U (http://www.xmlspy.com) by Morgan Cundiff (Library of Congress) -->\n<marc:collection xmlns:marc=\"http://www.loc.gov/MARC21/slim\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.loc.gov/MARC21/slim\nhttp://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd\">\n <marc:record>\n\t\t<marc:leader>00925njm 22002777a 4500</marc:leader>\n\t\t<marc:controlfield tag=\"001\">5637241</marc:controlfield>\n\t\t<marc:controlfield tag=\"003\">DLC</marc:controlfield>\n\t\t<marc:controlfield tag=\"005\">19920826084036.0</marc:controlfield>\n\t\t<marc:controlfield tag=\"007\">sdubumennmplu</marc:controlfield>\n\t\t<marc:controlfield tag=\"008\">910926s1957 nyuuun eng </marc:controlfield>\n\t\t<marc:datafield tag=\"010\" ind1=\" \" ind2=\" \">\n\t\t\t<marc:subfield code=\"a\"> 91758335 </marc:subfield>\n\t\t</marc:datafield>\n\t\t<marc:datafield tag=\"028\" ind1=\"0\" ind2=\"0\">\n\t\t\t<marc:subfield code=\"a\">1259</marc:subfield>\n\t\t\t<marc:subfield code=\"b\">Atlantic</marc:subfield>\n\t\t</marc:datafield>\n\t\t<marc:datafield tag=\"040\" ind1=\" \" ind2=\" \">\n\t\t\t<marc:subfield code=\"a\">DLC</marc:subfield>\n\t\t\t<marc:subfield code=\"c\">DLC</marc:subfield>\n\t\t</marc:datafield>\n\t\t<marc:datafield tag=\"050\" ind1=\"0\" ind2=\"0\">\n\t\t\t<marc:subfield code=\"a\">Atlantic 1259</marc:subfield>\n\t\t</marc:datafield>\n\t\t<marc:datafield tag=\"245\" ind1=\"0\" ind2=\"4\">\n\t\t\t<marc:subfield code=\"a\">The Great Ray Charles</marc:subfield>\n\t\t\t<marc:subfield code=\"h\">[sound recording].</marc:subfield>\n\t\t</marc:datafield>\n\t\t<marc:datafield tag=\"260\" ind1=\" \" ind2=\" \">\n\t\t\t<marc:subfield code=\"a\">New York, N.Y. :</marc:subfield>\n\t\t\t<marc:subfield code=\"b\">Atlantic,</marc:subfield>\n\t\t\t<marc:subfield code=\"c\">[1957?]</marc:subfield>\n\t\t</marc:datafield>\n\t\t<marc:datafield tag=\"300\" ind1=\" \" ind2=\" \">\n\t\t\t<marc:subfield code=\"a\">1 sound disc :</marc:subfield>\n\t\t\t<marc:subfield code=\"b\">analog, 33 1/3 rpm ;</marc:subfield>\n\t\t\t<marc:subfield code=\"c\">12 in.</marc:subfield>\n\t\t</marc:datafield>\n\t\t<marc:datafield tag=\"511\" ind1=\"0\" ind2=\" \">\n\t\t\t<marc:subfield code=\"a\">Ray Charles, piano & celeste.</marc:subfield>\n\t\t</marc:datafield>\n\t\t<marc:datafield tag=\"505\" ind1=\"0\" ind2=\" \">\n\t\t\t<marc:subfield code=\"a\">The Ray -- My melancholy baby -- Black coffee -- There's no you -- Doodlin' -- Sweet sixteen bars -- I surrender dear -- Undecided.</marc:subfield>\n\t\t</marc:datafield>\n\t\t<marc:datafield tag=\"500\" ind1=\" \" ind2=\" \">\n\t\t\t<marc:subfield code=\"a\">Brief record.</marc:subfield>\n\t\t</marc:datafield>\n\t\t<marc:datafield tag=\"650\" ind1=\" \" ind2=\"0\">\n\t\t\t<marc:subfield code=\"a\">Jazz</marc:subfield>\n\t\t\t<marc:subfield code=\"y\">1951-1960.</marc:subfield>\n\t\t</marc:datafield>\n\t\t<marc:datafield tag=\"650\" ind1=\" \" ind2=\"0\">\n\t\t\t<marc:subfield code=\"a\">Piano with jazz ensemble.</marc:subfield>\n\t\t</marc:datafield>\n\t\t<marc:datafield tag=\"700\" ind1=\"1\" ind2=\" \">\n\t\t\t<marc:subfield code=\"a\">Charles, Ray,</marc:subfield>\n\t\t\t<marc:subfield code=\"d\">1930-</marc:subfield>\n\t\t\t<marc:subfield code=\"4\">prf</marc:subfield>\n\t\t</marc:datafield>\n\t</marc:record>\n\t<marc:record>\n\t\t<marc:leader>01832cmma 2200349 a 4500</marc:leader>\n\t\t<marc:controlfield tag=\"001\">12149120</marc:controlfield>\n\t\t<marc:controlfield tag=\"005\">20001005175443.0</marc:controlfield>\n\t\t<marc:controlfield tag=\"007\">cr |||</marc:controlfield>\n\t\t<marc:controlfield tag=\"008\">000407m19949999dcu g m eng d</marc:controlfield>\n\t\t<marc:datafield tag=\"906\" ind1=\" \" ind2=\" \">\n\t\t\t<marc:subfield code=\"a\">0</marc:subfield>\n\t\t\t<marc:subfield code=\"b\">ibc</marc:subfield>\n\t\t\t<marc:subfield code=\"c\">copycat</marc:subfield>\n\t\t\t<marc:subfield code=\"d\">1</marc:subfield>\n\t\t\t<marc:subfield code=\"e\">ncip</marc:subfield>\n\t\t\t<marc:subfield code=\"f\">20</marc:subfield>\n\t\t\t<marc:subfield code=\"g\">y-gencompf</marc:subfield>\n\t\t</marc:datafield>\n\t\t<marc:datafield tag=\"925\" ind1=\"0\" ind2=\" \">\n\t\t\t<marc:subfield code=\"a\">undetermined</marc:subfield>\n\t\t\t<marc:subfield code=\"x\">web preservation project (wpp)</marc:subfield>\n\t\t</marc:datafield>\n\t\t<marc:datafield tag=\"955\" ind1=\" \" ind2=\" \">\n\t\t\t<marc:subfield code=\"a\">vb07 (stars done) 08-19-00 to HLCD lk00; AA3s lk29 received for subject Aug 25, 2000; to DEWEY 08-25-00; aa11 08-28-00</marc:subfield>\n\t\t</marc:datafield>\n\t\t<marc:datafield tag=\"010\" ind1=\" \" ind2=\" \">\n\t\t\t<marc:subfield code=\"a\"> 00530046 </marc:subfield>\n\t\t</marc:datafield>\n\t\t<marc:datafield tag=\"035\" ind1=\" \" ind2=\" \">\n\t\t\t<marc:subfield code=\"a\">(OCoLC)ocm44279786</marc:subfield>\n\t\t</marc:datafield>\n\t\t<marc:datafield tag=\"040\" ind1=\" \" ind2=\" \">\n\t\t\t<marc:subfield code=\"a\">IEU</marc:subfield>\n\t\t\t<marc:subfield code=\"c\">IEU</marc:subfield>\n\t\t\t<marc:subfield code=\"d\">N@F</marc:subfield>\n\t\t\t<marc:subfield code=\"d\">DLC</marc:subfield>\n\t\t</marc:datafield>\n\t\t<marc:datafield tag=\"042\" ind1=\" \" ind2=\" \">\n\t\t\t<marc:subfield code=\"a\">lccopycat</marc:subfield>\n\t\t</marc:datafield>\n\t\t<marc:datafield tag=\"043\" ind1=\" \" ind2=\" \">\n\t\t\t<marc:subfield code=\"a\">n-us-dc</marc:subfield>\n\t\t\t<marc:subfield code=\"a\">n-us---</marc:subfield>\n\t\t</marc:datafield>\n\t\t<marc:datafield tag=\"050\" ind1=\"0\" ind2=\"0\">\n\t\t\t<marc:subfield code=\"a\">F204.W5</marc:subfield>\n\t\t</marc:datafield>\n\t\t<marc:datafield tag=\"082\" ind1=\"1\" ind2=\"0\">\n\t\t\t<marc:subfield code=\"a\">975.3</marc:subfield>\n\t\t\t<marc:subfield code=\"2\">13</marc:subfield>\n\t\t</marc:datafield>\n\t\t<marc:datafield tag=\"245\" ind1=\"0\" ind2=\"4\">\n\t\t\t<marc:subfield code=\"a\">The White House</marc:subfield>\n\t\t\t<marc:subfield code=\"h\">[computer file].</marc:subfield>\n\t\t</marc:datafield>\n\t\t<marc:datafield tag=\"256\" ind1=\" \" ind2=\" \">\n\t\t\t<marc:subfield code=\"a\">Computer data.</marc:subfield>\n\t\t</marc:datafield>\n\t\t<marc:datafield tag=\"260\" ind1=\" \" ind2=\" \">\n\t\t\t<marc:subfield code=\"a\">Washington, D.C. :</marc:subfield>\n\t\t\t<marc:subfield code=\"b\">White House Web Team,</marc:subfield>\n\t\t\t<marc:subfield code=\"c\">1994-</marc:subfield>\n\t\t</marc:datafield>\n\t\t<marc:datafield tag=\"538\" ind1=\" \" ind2=\" \">\n\t\t\t<marc:subfield code=\"a\">Mode of access: Internet.</marc:subfield>\n\t\t</marc:datafield>\n\t\t<marc:datafield tag=\"500\" ind1=\" \" ind2=\" \">\n\t\t\t<marc:subfield code=\"a\">Title from home page as viewed on Aug. 19, 2000.</marc:subfield>\n\t\t</marc:datafield>\n\t\t<marc:datafield tag=\"520\" ind1=\"8\" ind2=\" \">\n\t\t\t<marc:subfield code=\"a\">Features the White House. Highlights the Executive Office of the President, which includes senior policy advisors and offices responsible for the President's correspondence and communications, the Office of the Vice President, and the Office of the First Lady. Posts contact information via mailing address, telephone and fax numbers, and e-mail. Contains the Interactive Citizens' Handbook with information on health, travel and tourism, education and training, and housing. Provides a tour and the history of the White House. Links to White House for Kids.</marc:subfield>\n\t\t</marc:datafield>\n\t\t<marc:datafield tag=\"610\" ind1=\"2\" ind2=\"0\">\n\t\t\t<marc:subfield code=\"a\">White House (Washington, D.C.)</marc:subfield>\n\t\t</marc:datafield>\n\t\t<marc:datafield tag=\"610\" ind1=\"1\" ind2=\"0\">\n\t\t\t<marc:subfield code=\"a\">United States.</marc:subfield>\n\t\t\t<marc:subfield code=\"b\">Executive Office of the President.</marc:subfield>\n\t\t</marc:datafield>\n\t\t<marc:datafield tag=\"610\" ind1=\"1\" ind2=\"0\">\n\t\t\t<marc:subfield code=\"a\">United States.</marc:subfield>\n\t\t\t<marc:subfield code=\"b\">Office of the Vice President.</marc:subfield>\n\t\t</marc:datafield>\n\t\t<marc:datafield tag=\"610\" ind1=\"1\" ind2=\"0\">\n\t\t\t<marc:subfield code=\"a\">United States.</marc:subfield>\n\t\t\t<marc:subfield code=\"b\">Office of the First Lady.</marc:subfield>\n\t\t</marc:datafield>\n\t\t<marc:datafield tag=\"710\" ind1=\"2\" ind2=\" \">\n\t\t\t<marc:subfield code=\"a\">White House Web Team.</marc:subfield>\n\t\t</marc:datafield>\n\t\t<marc:datafield tag=\"856\" ind1=\"4\" ind2=\"0\">\n\t\t\t<marc:subfield code=\"u\">http://www.whitehouse.gov</marc:subfield>\n\t\t</marc:datafield>\n\t\t<marc:datafield tag=\"856\" ind1=\"4\" ind2=\"0\">\n\t\t\t<marc:subfield code=\"u\">http://lcweb.loc.gov/staff/wpp/whitehouse.html</marc:subfield>\n\t\t\t<marc:subfield code=\"z\">Web site archive</marc:subfield>\n\t\t</marc:datafield>\n\t</marc:record>\n</marc:collection>",
"items": [
{
"itemType": "audioRecording",
"title": "The Great Ray Charles",
"creators": [
{
"firstName": "Ray",
"lastName": "Charles",
"creatorType": "performer"
}
],
"date": "1957",
"audioRecordingFormat": "sound recording",
"callNumber": "Atlantic 1259",
"label": "Atlantic",
"place": "New York, N.Y",
"attachments": [],
"tags": [
{
"tag": "1951-1960"
},
{
"tag": "Jazz"
},
{
"tag": "Piano with jazz ensemble"
}
],
"notes": [
{
"note": "Brief record"
},
{
"note": "The Ray -- My melancholy baby -- Black coffee -- There's no you -- Doodlin' -- Sweet sixteen bars -- I surrender dear -- Undecided"
}
],
"seeAlso": []
},
{
"itemType": "book",
"title": "The White House",
"creators": [
{
"lastName": "White House Web Team",
"creatorType": "editor",
"fieldMode": true
}
],
"date": "1994",
"abstractNote": "Features the White House. Highlights the Executive Office of the President, which includes senior policy advisors and offices responsible for the President's correspondence and communications, the Office of the Vice President, and the Office of the First Lady. Posts contact information via mailing address, telephone and fax numbers, and e-mail. Contains the Interactive Citizens' Handbook with information on health, travel and tourism, education and training, and housing. Provides a tour and the history of the White House. Links to White House for Kids",
"callNumber": "F204.W5",
"extra": "OCLC: ocm44279786",
"place": "Washington, D.C",
"publisher": "White House Web Team",
"attachments": [],
"tags": [
{
"tag": "Executive Office of the President"
},
{
"tag": "Office of the First Lady"
},
{
"tag": "Office of the Vice President"
},
{
"tag": "United States"
},
{
"tag": "United States"
},
{
"tag": "United States"
},
{
"tag": "White House (Washington, D.C.)"
}
],
"notes": [
{
"note": "Title from home page as viewed on Aug. 19, 2000"
}
],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<collection xmlns=\"http://www.loc.gov/MARC21/slim\">\n<record>\n <controlfield tag=\"001\">441828</controlfield>\n <datafield tag=\"020\" ind1=\" \" ind2=\" \">\n <subfield code=\"a\">9789279215070</subfield>\n </datafield>\n <datafield tag=\"035\" ind1=\" \" ind2=\" \">\n <subfield code=\"a\">468303</subfield>\n </datafield>\n <datafield tag=\"040\" ind1=\" \" ind2=\" \">\n <subfield code=\"a\">ILO</subfield>\n <subfield code=\"c\">ILO</subfield>\n </datafield>\n <datafield tag=\"072\" ind1=\" \" ind2=\"7\">\n <subfield code=\"a\">14.07.1</subfield>\n <subfield code=\"2\">ilot</subfield>\n </datafield>\n <datafield tag=\"099\" ind1=\" \" ind2=\"9\">\n <subfield code=\"a\">WWW ACCESS ONLY</subfield>\n </datafield>\n <datafield tag=\"245\" ind1=\"1\" ind2=\"0\">\n <subfield code=\"a\">Active ageing and solidarity between generations</subfield>\n <subfield code=\"h\">[electronic resource] :</subfield>\n <subfield code=\"b\">a statistical portrait of the European Union 2012 /</subfield>\n <subfield code=\"c\">European Commission, Eurostat.</subfield>\n </datafield>\n <datafield tag=\"250\" ind1=\" \" ind2=\" \">\n <subfield code=\"a\">2012 ed.</subfield>\n </datafield>\n <datafield tag=\"260\" ind1=\" \" ind2=\" \">\n <subfield code=\"a\">Luxembourg :</subfield>\n <subfield code=\"b\">Publications Office of the European Union,</subfield>\n <subfield code=\"c\">2012.</subfield>\n </datafield>\n <datafield tag=\"300\" ind1=\" \" ind2=\" \">\n <subfield code=\"a\">141 p. :</subfield>\n <subfield code=\"b\">statistics</subfield>\n </datafield>\n <datafield tag=\"490\" ind1=\"0\" ind2=\" \">\n <subfield code=\"a\">Statistical books</subfield>\n </datafield>\n <datafield tag=\"500\" ind1=\" \" ind2=\" \">\n <subfield code=\"a\">Theme: Population and social conditions</subfield>\n </datafield>\n <datafield tag=\"500\" ind1=\" \" ind2=\" \">\n <subfield code=\"a\">Mode of access : World Wide Web (available in electronic format only).</subfield>\n </datafield>\n <datafield tag=\"500\" ind1=\" \" ind2=\" \">\n <subfield code=\"a\">Description based on the Internet version on the World Wide Web.</subfield>\n </datafield>\n <datafield tag=\"504\" ind1=\" \" ind2=\" \">\n <subfield code=\"a\">References.</subfield>\n </datafield>\n <datafield tag=\"520\" ind1=\"8\" ind2=\" \">\n <subfield code=\"a\">Provides details in relation to population ageing and setting the scene as regards the dynamics of demographic change, and details the past, present and projected future structure of the EU's population. Presents information in relation to the demand for healthcare services, as well as the budgetary implications facing governments as their populations continue to age. Contains information relating to the active participation of older generations within society, with a particular focus on inter-generational issues and also includes information on the leisure pursuits and social activities undertaken by older persons.</subfield>\n </datafield>\n <datafield tag=\"650\" ind1=\"1\" ind2=\"7\">\n <subfield code=\"a\">older people</subfield>\n <subfield code=\"2\">ilot</subfield>\n </datafield>\n <datafield tag=\"650\" ind1=\"1\" ind2=\"7\">\n <subfield code=\"a\">older worker</subfield>\n <subfield code=\"2\">ilot</subfield>\n </datafield>\n <datafield tag=\"650\" ind1=\"1\" ind2=\"7\">\n <subfield code=\"a\">retired worker</subfield>\n <subfield code=\"2\">ilot</subfield>\n </datafield>\n <datafield tag=\"650\" ind1=\"1\" ind2=\"7\">\n <subfield code=\"a\">ageing population</subfield>\n <subfield code=\"2\">ilot</subfield>\n </datafield>\n <datafield tag=\"650\" ind1=\"1\" ind2=\"7\">\n <subfield code=\"a\">employment opportunity</subfield>\n <subfield code=\"2\">ilot</subfield>\n </datafield>\n <datafield tag=\"650\" ind1=\"1\" ind2=\"7\">\n <subfield code=\"a\">social security</subfield>\n <subfield code=\"2\">ilot</subfield>\n </datafield>\n <datafield tag=\"650\" ind1=\"1\" ind2=\"7\">\n <subfield code=\"a\">quality of life</subfield>\n <subfield code=\"2\">ilot</subfield>\n </datafield>\n <datafield tag=\"650\" ind1=\"1\" ind2=\"7\">\n <subfield code=\"a\">EU countries</subfield>\n <subfield code=\"2\">ilot</subfield>\n </datafield>\n <datafield tag=\"655\" ind1=\" \" ind2=\"7\">\n <subfield code=\"a\">statistical table</subfield>\n <subfield code=\"2\">ilot</subfield>\n </datafield>\n <datafield tag=\"655\" ind1=\" \" ind2=\"7\">\n <subfield code=\"a\">EU pub</subfield>\n <subfield code=\"2\">ilot</subfield>\n </datafield>\n <datafield tag=\"650\" ind1=\"1\" ind2=\"7\">\n <subfield code=\"a\">personnes âgées</subfield>\n <subfield code=\"2\">tbit</subfield>\n </datafield>\n <datafield tag=\"650\" ind1=\"1\" ind2=\"7\">\n <subfield code=\"a\">travailleur âgé</subfield>\n <subfield code=\"2\">tbit</subfield>\n </datafield>\n <datafield tag=\"650\" ind1=\"1\" ind2=\"7\">\n <subfield code=\"a\">travailleur retraité</subfield>\n <subfield code=\"2\">tbit</subfield>\n </datafield>\n <datafield tag=\"650\" ind1=\"1\" ind2=\"7\">\n <subfield code=\"a\">vieillissement de la population</subfield>\n <subfield code=\"2\">tbit</subfield>\n </datafield>\n <datafield tag=\"650\" ind1=\"1\" ind2=\"7\">\n <subfield code=\"a\">possibilités d'emploi</subfield>\n <subfield code=\"2\">tbit</subfield>\n </datafield>\n <datafield tag=\"650\" ind1=\"1\" ind2=\"7\">\n <subfield code=\"a\">sécurité sociale</subfield>\n <subfield code=\"2\">tbit</subfield>\n </datafield>\n <datafield tag=\"650\" ind1=\"1\" ind2=\"7\">\n <subfield code=\"a\">qualité de la vie</subfield>\n <subfield code=\"2\">tbit</subfield>\n </datafield>\n <datafield tag=\"650\" ind1=\"1\" ind2=\"7\">\n <subfield code=\"a\">pays de l'UE</subfield>\n <subfield code=\"2\">tbit</subfield>\n </datafield>\n <datafield tag=\"655\" ind1=\" \" ind2=\"7\">\n <subfield code=\"a\">tableau statistique</subfield>\n <subfield code=\"2\">tbit</subfield>\n </datafield>\n <datafield tag=\"655\" ind1=\" \" ind2=\"7\">\n <subfield code=\"a\">pub UE</subfield>\n <subfield code=\"2\">tbit</subfield>\n </datafield>\n <datafield tag=\"650\" ind1=\"1\" ind2=\"7\">\n <subfield code=\"a\">personas de edad avanzada</subfield>\n <subfield code=\"2\">toit</subfield>\n </datafield>\n <datafield tag=\"650\" ind1=\"1\" ind2=\"7\">\n <subfield code=\"a\">trabajador de edad avanzada</subfield>\n <subfield code=\"2\">toit</subfield>\n </datafield>\n <datafield tag=\"650\" ind1=\"1\" ind2=\"7\">\n <subfield code=\"a\">jubilado</subfield>\n <subfield code=\"2\">toit</subfield>\n </datafield>\n <datafield tag=\"650\" ind1=\"1\" ind2=\"7\">\n <subfield code=\"a\">envejecimiento de la población</subfield>\n <subfield code=\"2\">toit</subfield>\n </datafield>\n <datafield tag=\"650\" ind1=\"1\" ind2=\"7\">\n <subfield code=\"a\">oportunidades de empleo</subfield>\n <subfield code=\"2\">toit</subfield>\n </datafield>\n <datafield tag=\"650\" ind1=\"1\" ind2=\"7\">\n <subfield code=\"a\">seguridad social</subfield>\n <subfield code=\"2\">toit</subfield>\n </datafield>\n <datafield tag=\"650\" ind1=\"1\" ind2=\"7\">\n <subfield code=\"a\">calidad de la vida</subfield>\n <subfield code=\"2\">toit</subfield>\n </datafield>\n <datafield tag=\"650\" ind1=\"1\" ind2=\"7\">\n <subfield code=\"a\">países de la UE</subfield>\n <subfield code=\"2\">toit</subfield>\n </datafield>\n <datafield tag=\"655\" ind1=\" \" ind2=\"7\">\n <subfield code=\"a\">cuadros estadísticos</subfield>\n <subfield code=\"2\">toit</subfield>\n </datafield>\n <datafield tag=\"655\" ind1=\" \" ind2=\"7\">\n <subfield code=\"a\">pub UE</subfield>\n <subfield code=\"2\">toit</subfield>\n </datafield>\n <datafield tag=\"710\" ind1=\"2\" ind2=\" \">\n <subfield code=\"a\">Statistical Office of the European Communities.</subfield>\n </datafield>\n <datafield tag=\"856\" ind1=\"4\" ind2=\" \">\n <subfield code=\"3\">Full text</subfield>\n <subfield code=\"u\">http://www.ilo.org/public/libdoc/igo/2011/468303.pdf</subfield>\n </datafield>\n <datafield tag=\"900\" ind1=\" \" ind2=\" \">\n <subfield code=\"a\">statistical table</subfield>\n </datafield>\n <datafield tag=\"900\" ind1=\" \" ind2=\" \">\n <subfield code=\"a\">EU pub</subfield>\n </datafield>\n <datafield tag=\"901\" ind1=\" \" ind2=\" \">\n <subfield code=\"a\">tableau statistique</subfield>\n </datafield>\n <datafield tag=\"901\" ind1=\" \" ind2=\" \">\n <subfield code=\"a\">pub UE</subfield>\n </datafield>\n <datafield tag=\"902\" ind1=\" \" ind2=\" \">\n <subfield code=\"a\">cuadros estadísticos</subfield>\n </datafield>\n <datafield tag=\"902\" ind1=\" \" ind2=\" \">\n <subfield code=\"a\">pub UE</subfield>\n </datafield>\n <datafield tag=\"905\" ind1=\"1\" ind2=\" \">\n <subfield code=\"a\">older people</subfield>\n </datafield>\n <datafield tag=\"905\" ind1=\"1\" ind2=\" \">\n <subfield code=\"a\">older worker</subfield>\n </datafield>\n <datafield tag=\"905\" ind1=\"1\" ind2=\" \">\n <subfield code=\"a\">retired worker</subfield>\n </datafield>\n <datafield tag=\"905\" ind1=\"1\" ind2=\" \">\n <subfield code=\"a\">ageing population</subfield>\n </datafield>\n <datafield tag=\"905\" ind1=\"1\" ind2=\" \">\n <subfield code=\"a\">employment opportunity</subfield>\n </datafield>\n <datafield tag=\"905\" ind1=\"1\" ind2=\" \">\n <subfield code=\"a\">social security</subfield>\n </datafield>\n <datafield tag=\"905\" ind1=\"1\" ind2=\" \">\n <subfield code=\"a\">quality of life</subfield>\n </datafield>\n <datafield tag=\"905\" ind1=\"1\" ind2=\" \">\n <subfield code=\"a\">EU countries</subfield>\n </datafield>\n <datafield tag=\"906\" ind1=\"1\" ind2=\" \">\n <subfield code=\"a\">personnes âgées</subfield>\n </datafield>\n <datafield tag=\"906\" ind1=\"1\" ind2=\" \">\n <subfield code=\"a\">travailleur âgé</subfield>\n </datafield>\n <datafield tag=\"906\" ind1=\"1\" ind2=\" \">\n <subfield code=\"a\">travailleur retraité</subfield>\n </datafield>\n <datafield tag=\"906\" ind1=\"1\" ind2=\" \">\n <subfield code=\"a\">vieillissement de la population</subfield>\n </datafield>\n <datafield tag=\"906\" ind1=\"1\" ind2=\" \">\n <subfield code=\"a\">possibilités d'emploi</subfield>\n </datafield>\n <datafield tag=\"906\" ind1=\"1\" ind2=\" \">\n <subfield code=\"a\">sécurité sociale</subfield>\n </datafield>\n <datafield tag=\"906\" ind1=\"1\" ind2=\" \">\n <subfield code=\"a\">qualité de la vie</subfield>\n </datafield>\n <datafield tag=\"906\" ind1=\"1\" ind2=\" \">\n <subfield code=\"a\">pays de l'UE</subfield>\n </datafield>\n <datafield tag=\"907\" ind1=\"1\" ind2=\" \">\n <subfield code=\"a\">personas de edad avanzada</subfield>\n </datafield>\n <datafield tag=\"907\" ind1=\"1\" ind2=\" \">\n <subfield code=\"a\">trabajador de edad avanzada</subfield>\n </datafield>\n <datafield tag=\"907\" ind1=\"1\" ind2=\" \">\n <subfield code=\"a\">jubilado</subfield>\n </datafield>\n <datafield tag=\"907\" ind1=\"1\" ind2=\" \">\n <subfield code=\"a\">envejecimiento de la población</subfield>\n </datafield>\n <datafield tag=\"907\" ind1=\"1\" ind2=\" \">\n <subfield code=\"a\">oportunidades de empleo</subfield>\n </datafield>\n <datafield tag=\"907\" ind1=\"1\" ind2=\" \">\n <subfield code=\"a\">seguridad social</subfield>\n </datafield>\n <datafield tag=\"907\" ind1=\"1\" ind2=\" \">\n <subfield code=\"a\">calidad de la vida</subfield>\n </datafield>\n <datafield tag=\"907\" ind1=\"1\" ind2=\" \">\n <subfield code=\"a\">países de la UE</subfield>\n </datafield>\n <datafield tag=\"915\" ind1=\"1\" ind2=\" \">\n <subfield code=\"a\">EU countries</subfield>\n </datafield>\n <datafield tag=\"920\" ind1=\" \" ind2=\" \">\n <subfield code=\"a\">biblio</subfield>\n <subfield code=\"d\">2012-02-20</subfield>\n </datafield>\n <datafield tag=\"925\" ind1=\" \" ind2=\" \">\n <subfield code=\"a\">cdc</subfield>\n </datafield>\n <datafield tag=\"946\" ind1=\" \" ind2=\" \">\n <subfield code=\"a\">cs</subfield>\n <subfield code=\"d\">2012-02-02</subfield>\n </datafield>\n <datafield tag=\"964\" ind1=\" \" ind2=\" \">\n <subfield code=\"a\">M680057</subfield>\n <subfield code=\"d\">nocirc</subfield>\n <subfield code=\"e\">WWW ACCESS ONLY</subfield>\n <subfield code=\"m\">Electronic documents</subfield>\n <subfield code=\"p\">HQ Library - Geneva</subfield>\n </datafield>\n <datafield tag=\"970\" ind1=\" \" ind2=\" \">\n <subfield code=\"a\">LABORDOC-468303</subfield>\n </datafield>\n <datafield tag=\"993\" ind1=\" \" ind2=\" \">\n <subfield code=\"a\">04089cam a2201045 a 4500</subfield>\n </datafield>\n <datafield tag=\"994\" ind1=\" \" ind2=\" \">\n <subfield code=\"a\">20120220060113.0</subfield>\n </datafield>\n <datafield tag=\"995\" ind1=\" \" ind2=\" \">\n <subfield code=\"a\">120119s2012 lu d sb 000 0 eng d</subfield>\n </datafield>\n <datafield tag=\"996\" ind1=\" \" ind2=\" \">\n <subfield code=\"a\">am</subfield>\n </datafield>\n <datafield tag=\"997\" ind1=\" \" ind2=\" \">\n <subfield code=\"a\">2012</subfield>\n </datafield>\n <datafield tag=\"998\" ind1=\" \" ind2=\" \">\n <subfield code=\"a\">eng</subfield>\n </datafield>\n</record>\n</collection>",
"items": [
{
"itemType": "book",
"title": "Active ageing and solidarity between generations: a statistical portrait of the European Union 2012",
"creators": [
{
"lastName": "Statistical Office of the European Communities",
"creatorType": "editor",
"fieldMode": true
}
],
"date": "2012",
"ISBN": "9789279215070",
"abstractNote": "Provides details in relation to population ageing and setting the scene as regards the dynamics of demographic change, and details the past, present and projected future structure of the EU's population. Presents information in relation to the demand for healthcare services, as well as the budgetary implications facing governments as their populations continue to age. Contains information relating to the active participation of older generations within society, with a particular focus on inter-generational issues and also includes information on the leisure pursuits and social activities undertaken by older persons",
"callNumber": "WWW ACCESS ONLY",
"edition": "2012 ed",
"numPages": "141",
"place": "Luxembourg",
"publisher": "Publications Office of the European Union",
"series": "Statistical books",
"url": "http://www.ilo.org/public/libdoc/igo/2011/468303.pdf",
"attachments": [],
"tags": [
"EU countries",
"EU pub",
"ageing population",
"calidad de la vida",
"cuadros estadísticos",
"employment opportunity",
"envejecimiento de la población",
"jubilado",
"older people",
"older worker",
"oportunidades de empleo",
"países de la UE",
"pays de l'UE",
"personas de edad avanzada",
"personnes âgées",
"possibilités d'emploi",
"pub UE",
"pub UE",
"qualité de la vie",
"quality of life",
"retired worker",
"seguridad social",
"sécurité sociale",
"social security",
"statistical table",
"tableau statistique",
"trabajador de edad avanzada",
"travailleur âgé",
"travailleur retraité",
"vieillissement de la population"
],
"notes": [
{
"note": "Theme: Population and social conditions Mode of access : World Wide Web (available in electronic format only) Description based on the Internet version on the World Wide Web"
}
],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <record xmlns=\"http://www.loc.gov/MARC21/slim\" type=\"Bibliographic\">\n <leader>00000pam a2200000 c 4500</leader>\n <controlfield tag=\"001\">1112218955</controlfield>\n <controlfield tag=\"003\">DE-101</controlfield>\n <controlfield tag=\"005\">20161020223122.0</controlfield>\n <controlfield tag=\"007\">tu</controlfield>\n <controlfield tag=\"008\">160824s2016 gw ||||| |||| 10||||ger </controlfield>\n <datafield tag=\"015\" ind1=\" \" ind2=\" \">\n <subfield code=\"a\">16,A43</subfield>\n <subfield code=\"z\">16,N35</subfield>\n <subfield code=\"2\">dnb</subfield>\n </datafield>\n <datafield tag=\"016\" ind1=\"7\" ind2=\" \">\n <subfield code=\"2\">DE-101</subfield>\n <subfield code=\"a\">1112218955</subfield>\n </datafield>\n <datafield tag=\"020\" ind1=\" \" ind2=\" \">\n <subfield code=\"a\">9783781521230</subfield>\n <subfield code=\"c\">Broschur : EUR 27.90 (DE), EUR 28.70 (AT)</subfield>\n <subfield code=\"9\">978-3-7815-2123-0</subfield>\n </datafield>\n <datafield tag=\"020\" ind1=\" \" ind2=\" \">\n <subfield code=\"a\">3781521230</subfield>\n <subfield code=\"9\">3-7815-2123-0</subfield>\n </datafield>\n <datafield tag=\"024\" ind1=\"3\" ind2=\" \">\n <subfield code=\"a\">9783781521230</subfield>\n </datafield>\n <datafield tag=\"035\" ind1=\" \" ind2=\" \">\n <subfield code=\"a\">(DE-599)DNB1112218955</subfield>\n </datafield>\n <datafield tag=\"035\" ind1=\" \" ind2=\" \">\n <subfield code=\"a\">(OCoLC)958469418</subfield>\n </datafield>\n <datafield tag=\"040\" ind1=\" \" ind2=\" \">\n <subfield code=\"a\">1245</subfield>\n <subfield code=\"b\">ger</subfield>\n <subfield code=\"c\">DE-101</subfield>\n <subfield code=\"d\">9999</subfield>\n <subfield code=\"e\">rda</subfield>\n </datafield>\n <datafield tag=\"041\" ind1=\" \" ind2=\" \">\n <subfield code=\"a\">ger</subfield>\n </datafield>\n <datafield tag=\"044\" ind1=\" \" ind2=\" \">\n <subfield code=\"c\">XA-DE-BY</subfield>\n </datafield>\n <datafield tag=\"082\" ind1=\"0\" ind2=\"4\">\n <subfield code=\"8\">1\\x</subfield>\n <subfield code=\"a\">371.9046</subfield>\n <subfield code=\"q\">DE-101</subfield>\n <subfield code=\"2\">22/ger</subfield>\n </datafield>\n <datafield tag=\"083\" ind1=\"7\" ind2=\" \">\n <subfield code=\"a\">370</subfield>\n <subfield code=\"q\">DE-101</subfield>\n <subfield code=\"2\">23sdnb</subfield>\n </datafield>\n <datafield tag=\"084\" ind1=\" \" ind2=\" \">\n <subfield code=\"a\">370</subfield>\n <subfield code=\"q\">DE-101</subfield>\n <subfield code=\"2\">sdnb</subfield>\n </datafield>\n <datafield tag=\"085\" ind1=\" \" ind2=\" \">\n <subfield code=\"8\">1\\x</subfield>\n <subfield code=\"b\">371.9046</subfield>\n </datafield>\n <datafield tag=\"090\" ind1=\" \" ind2=\" \">\n <subfield code=\"a\">b</subfield>\n </datafield>\n <datafield tag=\"111\" ind1=\"2\" ind2=\" \">\n <subfield code=\"0\">(DE-588)1115266640</subfield>\n <subfield code=\"0\">(uri)http://d-nb.info/gnd/1115266640</subfield>\n <subfield code=\"0\">(DE-101)1115266640</subfield>\n <subfield code=\"a\">Deutsche Gesellschaft für Erziehungswissenschaft</subfield>\n <subfield code=\"e\">Sektion Sonderpädagogik</subfield>\n <subfield code=\"e\">Jahrestagung</subfield>\n <subfield code=\"n\">50.</subfield>\n <subfield code=\"d\">2015</subfield>\n <subfield code=\"c\">Basel</subfield>\n <subfield code=\"j\">Verfasser</subfield>\n <subfield code=\"4\">aut</subfield>\n </datafield>\n <datafield tag=\"245\" ind1=\"0\" ind2=\"0\">\n <subfield code=\"a\">Bildungs- und Erziehungsorganisatonen im Spannungsfeld von Inklusion und Ökonomisierung</subfield>\n <subfield code=\"c\">Tanja Sturm, Andreas Köpfer, Benjamin Wagener (Hrsg.)</subfield>\n </datafield>\n <datafield tag=\"264\" ind1=\" \" ind2=\"1\">\n <subfield code=\"a\">Bad Heilbrunn</subfield>\n <subfield code=\"b\">Verlag Julius Klinkhardt</subfield>\n <subfield code=\"c\">2016</subfield>\n </datafield>\n <datafield tag=\"300\" ind1=\" \" ind2=\" \">\n <subfield code=\"a\">417 Seiten</subfield>\n <subfield code=\"b\">Illustrationen</subfield>\n <subfield code=\"c\">21 cm</subfield>\n </datafield>\n <datafield tag=\"336\" ind1=\" \" ind2=\" \">\n <subfield code=\"a\">Text</subfield>\n <subfield code=\"b\">txt</subfield>\n <subfield code=\"2\">rdacontent</subfield>\n </datafield>\n <datafield tag=\"337\" ind1=\" \" ind2=\" \">\n <subfield code=\"a\">ohne Hilfsmittel zu benutzen</subfield>\n <subfield code=\"b\">n</subfield>\n <subfield code=\"2\">rdamedia</subfield>\n </datafield>\n <datafield tag=\"338\" ind1=\" \" ind2=\" \">\n <subfield code=\"a\">Band</subfield>\n <subfield code=\"b\">nc</subfield>\n <subfield code=\"2\">rdacarrier</subfield>\n </datafield>\n <datafield tag=\"490\" ind1=\"0\" ind2=\" \">\n <subfield code=\"a\">Perspektiven sonderpädagogischer Forschung</subfield>\n </datafield>\n <datafield tag=\"500\" ind1=\" \" ind2=\" \">\n <subfield code=\"a\">Tagungsband zur 50. Jahrestagung der DGfE-Sektion Sonderpädagogik 2015 in Basel (Vorwort)</subfield>\n </datafield>\n <datafield tag=\"650\" ind1=\" \" ind2=\"7\">\n <subfield code=\"0\">(DE-588)7693876-1</subfield>\n <subfield code=\"0\">(uri)http://d-nb.info/gnd/7693876-1</subfield>\n <subfield code=\"0\">(DE-101)100072185X</subfield>\n <subfield code=\"a\">Inklusive Pädagogik</subfield>\n <subfield code=\"2\">gnd</subfield>\n </datafield>\n <datafield tag=\"650\" ind1=\" \" ind2=\"7\">\n <subfield code=\"0\">(DE-588)4126892-1</subfield>\n <subfield code=\"0\">(uri)http://d-nb.info/gnd/4126892-1</subfield>\n <subfield code=\"0\">(DE-101)04126892X</subfield>\n <subfield code=\"a\">Schulentwicklung</subfield>\n <subfield code=\"2\">gnd</subfield>\n </datafield>\n <datafield tag=\"650\" ind1=\" \" ind2=\"7\">\n <subfield code=\"0\">(DE-588)4035093-9</subfield>\n <subfield code=\"0\">(uri)http://d-nb.info/gnd/4035093-9</subfield>\n <subfield code=\"0\">(DE-101)040350932</subfield>\n <subfield code=\"a\">Lehrerbildung</subfield>\n <subfield code=\"2\">gnd</subfield>\n </datafield>\n <datafield tag=\"650\" ind1=\" \" ind2=\"7\">\n <subfield code=\"0\">(DE-588)4047376-4</subfield>\n <subfield code=\"0\">(uri)http://d-nb.info/gnd/4047376-4</subfield>\n <subfield code=\"0\">(DE-101)040473767</subfield>\n <subfield code=\"a\">Professionalisierung</subfield>\n <subfield code=\"2\">gnd</subfield>\n </datafield>\n <datafield tag=\"653\" ind1=\" \" ind2=\" \">\n <subfield code=\"a\">(Produktform)Book</subfield>\n </datafield>\n <datafield tag=\"653\" ind1=\" \" ind2=\" \">\n <subfield code=\"a\">Inklusion</subfield>\n </datafield>\n <datafield tag=\"653\" ind1=\" \" ind2=\" \">\n <subfield code=\"a\">Lehrerbildung</subfield>\n </datafield>\n <datafield tag=\"653\" ind1=\" \" ind2=\" \">\n <subfield code=\"a\">Sonderpädagogik</subfield>\n </datafield>\n <datafield tag=\"653\" ind1=\" \" ind2=\" \">\n <subfield code=\"a\">UN-Behindertenrechtskonvention</subfield>\n </datafield>\n <datafield tag=\"653\" ind1=\" \" ind2=\" \">\n <subfield code=\"a\">(VLB-WN)1572: Hardcover, Softcover / Pädagogik/Bildungswesen</subfield>\n </datafield>\n <datafield tag=\"655\" ind1=\" \" ind2=\"7\">\n <subfield code=\"0\">(DE-588)1071861417</subfield>\n <subfield code=\"0\">(uri)http://d-nb.info/gnd/1071861417</subfield>\n <subfield code=\"0\">(DE-101)1071861417</subfield>\n <subfield code=\"a\">Konferenzschrift</subfield>\n <subfield code=\"y\">2015</subfield>\n <subfield code=\"z\">Basel</subfield>\n <subfield code=\"2\">gnd-content</subfield>\n </datafield>\n <datafield tag=\"689\" ind1=\"0\" ind2=\"0\">\n <subfield code=\"0\">(DE-588)7693876-1</subfield>\n <subfield code=\"0\">(uri)http://d-nb.info/gnd/7693876-1</subfield>\n <subfield code=\"0\">(DE-101)100072185X</subfield>\n <subfield code=\"D\">s</subfield>\n <subfield code=\"a\">Inklusive Pädagogik</subfield>\n </datafield>\n <datafield tag=\"689\" ind1=\"0\" ind2=\"1\">\n <subfield code=\"0\">(DE-588)4126892-1</subfield>\n <subfield code=\"0\">(uri)http://d-nb.info/gnd/4126892-1</subfield>\n <subfield code=\"0\">(DE-101)04126892X</subfield>\n <subfield code=\"D\">s</subfield>\n <subfield code=\"a\">Schulentwicklung</subfield>\n </datafield>\n <datafield tag=\"689\" ind1=\"0\" ind2=\"2\">\n <subfield code=\"0\">(DE-588)4035093-9</subfield>\n <subfield code=\"0\">(uri)http://d-nb.info/gnd/4035093-9</subfield>\n <subfield code=\"0\">(DE-101)040350932</subfield>\n <subfield code=\"D\">s</subfield>\n <subfield code=\"a\">Lehrerbildung</subfield>\n </datafield>\n <datafield tag=\"689\" ind1=\"0\" ind2=\"3\">\n <subfield code=\"0\">(DE-588)4047376-4</subfield>\n <subfield code=\"0\">(uri)http://d-nb.info/gnd/4047376-4</subfield>\n <subfield code=\"0\">(DE-101)040473767</subfield>\n <subfield code=\"D\">s</subfield>\n <subfield code=\"a\">Professionalisierung</subfield>\n </datafield>\n <datafield tag=\"689\" ind1=\"0\" ind2=\" \">\n <subfield code=\"5\">DE-101</subfield>\n <subfield code=\"5\">DE-101</subfield>\n </datafield>\n <datafield tag=\"700\" ind1=\"1\" ind2=\" \">\n <subfield code=\"0\">(DE-588)1027192416</subfield>\n <subfield code=\"0\">(uri)http://d-nb.info/gnd/1027192416</subfield>\n <subfield code=\"0\">(DE-101)1027192416</subfield>\n <subfield code=\"a\">Sturm, Tanja</subfield>\n <subfield code=\"d\">1975-</subfield>\n <subfield code=\"e\">Herausgeber</subfield>\n <subfield code=\"4\">edt</subfield>\n </datafield>\n <datafield tag=\"700\" ind1=\"1\" ind2=\" \">\n <subfield code=\"a\">Köpfer, Andreas</subfield>\n <subfield code=\"e\">Herausgeber</subfield>\n <subfield code=\"4\">edt</subfield>\n </datafield>\n <datafield tag=\"700\" ind1=\"1\" ind2=\" \">\n <subfield code=\"a\">Wagener, Benjamin</subfield>\n <subfield code=\"e\">Herausgeber</subfield>\n <subfield code=\"4\">edt</subfield>\n </datafield>\n <datafield tag=\"710\" ind1=\"2\" ind2=\" \">\n <subfield code=\"0\">(DE-588)2016917-6</subfield>\n <subfield code=\"0\">(uri)http://d-nb.info/gnd/2016917-6</subfield>\n <subfield code=\"0\">(DE-101)004754522</subfield>\n <subfield code=\"a\">Verlag Julius Klinkhardt</subfield>\n <subfield code=\"4\">pbl</subfield>\n </datafield>\n <datafield tag=\"850\" ind1=\" \" ind2=\" \">\n <subfield code=\"a\">DE-101a</subfield>\n <subfield code=\"a\">DE-101b</subfield>\n </datafield>\n <datafield tag=\"856\" ind1=\"4\" ind2=\"2\">\n <subfield code=\"m\">B:DE-101</subfield>\n <subfield code=\"q\">application/pdf</subfield>\n <subfield code=\"u\">http://d-nb.info/1112218955/04</subfield>\n <subfield code=\"3\">Inhaltsverzeichnis</subfield>\n </datafield>\n <datafield tag=\"925\" ind1=\"r\" ind2=\" \">\n <subfield code=\"a\">ra</subfield>\n </datafield>\n <datafield tag=\"926\" ind1=\"1\" ind2=\" \">\n <subfield code=\"a\">JNS</subfield>\n <subfield code=\"o\">93</subfield>\n <subfield code=\"q\">Publisher</subfield>\n <subfield code=\"v\">1.1</subfield>\n <subfield code=\"x\">Sonderpädagogik</subfield>\n </datafield>\n <datafield tag=\"926\" ind1=\"2\" ind2=\" \">\n <subfield code=\"a\">JNK</subfield>\n <subfield code=\"o\">93</subfield>\n <subfield code=\"q\">Publisher</subfield>\n <subfield code=\"v\">1.1</subfield>\n <subfield code=\"x\">Bildungswesen: Organisation und Verwaltung</subfield>\n </datafield>\n </record>\n",
"items": [
{
"itemType": "book",
"title": "Bildungs- und Erziehungsorganisatonen im Spannungsfeld von Inklusion und Ökonomisierung",
"creators": [
{
"firstName": "Tanja",
"lastName": "Sturm",
"creatorType": "editor"
},
{
"firstName": "Andreas",
"lastName": "Köpfer",
"creatorType": "editor"
},
{
"firstName": "Benjamin",
"lastName": "Wagener",
"creatorType": "editor"
}
],
"date": "2016",
"ISBN": "9783781521230 3781521230",
"callNumber": "b",
"language": "ger",
"numPages": "417",
"place": "Bad Heilbrunn",
"publisher": "Verlag Julius Klinkhardt",
"series": "Perspektiven sonderpädagogischer Forschung",
"attachments": [],
"tags": [
{
"tag": "(Produktform)Book"
},
{
"tag": "(VLB-WN)1572: Hardcover, Softcover / Pädagogik/Bildungswesen"
},
{
"tag": "2015"
},
{
"tag": "Basel"
},
{
"tag": "Inklusion"
},
{
"tag": "Inklusive Pädagogik"
},
{
"tag": "Konferenzschrift"
},
{
"tag": "Lehrerbildung"
},
{
"tag": "Lehrerbildung"
},
{
"tag": "Professionalisierung"
},
{
"tag": "Schulentwicklung"
},
{
"tag": "Sonderpädagogik"
},
{
"tag": "UN-Behindertenrechtskonvention"
}
],
"notes": [
{
"note": "Tagungsband zur 50. Jahrestagung der DGfE-Sektion Sonderpädagogik 2015 in Basel (Vorwort)"
}
],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <marc:record xmlns:marc=\"http://www.loc.gov/MARC21/slim\">\n \t<marc:leader>nm 22 uu 4500</marc:leader>\n \t<marc:controlfield tag=\"008\">s ||||||||||||||||||||||</marc:controlfield>\n <marc:datafield tag=\"041\" ind1=\"0\" ind2=\"7\">\n \t\t<marc:subfield code=\"a\"></marc:subfield>\n \t <marc:subfield code=\"2\">rfc3066</marc:subfield>\n \t</marc:datafield>\n \t<marc:datafield tag=\"245\" ind1=\"1\" ind2=\"0\">\n \t<marc:subfield code=\"a\">Adaptation: the Continuing Evolution of the New York Public Library’s Digital Design System</marc:subfield>\n \t</marc:datafield>\n \t<marc:datafield tag=\"260\" ind1=\"\" ind2=\"\">\n \t\t<marc:subfield code=\"b\">The Code4Lib Journal</marc:subfield>\n \t\t<marc:subfield code=\"c\">Fri, 17 Aug 2018 08:14:38 +0000</marc:subfield>\n \t</marc:datafield>\n \t<marc:datafield tag=\"520\" ind1=\"\" ind2=\"\">\n <marc:subfield code=\"a\">'A design system is crucial for sustaining both the continuity and the advancement of a website's design. But it's hard to create such a system when content, technology, and staff are constantly changing. This is the situation faced by the Digital team at the New York Public Library. When those are the conditions of the problem, the design system needs to be modular, distributed, and standardized, so that it can withstand constant change and provide a reliable foundation. NYPL's design system has gone through three major iterations, each a step towards the best way to manage design principles across an abundance of heterogeneous content and many contributors who brought different skills to the team and department at different times. Starting from an abstracted framework that provided a template for future systems, then a specific component system for a new project, and finally a system of interoperable components and layouts, NYPL's Digital team continues to grow and adapt its digital design resource.'</marc:subfield>\n \t</marc:datafield>\n \t<marc:datafield tag=\"650\" ind1=\"1\" ind2=\"\">\n <marc:subfield code=\"a\">Issue 41</marc:subfield>\n </marc:datafield>\n <marc:datafield tag=\"700\" ind1=\"1\" ind2=\"\">\n \t<marc:subfield code=\"a\">Jennifer L. Anderson & Edwin Guzman</marc:subfield>\n \t</marc:datafield>\n \t<marc:datafield tag=\"856\" ind1=\"\" ind2=\"\">\n \t\t<marc:subfield code=\"u\">https://journal.code4lib.org/articles/13657</marc:subfield>\n \t</marc:datafield>\n </marc:record>",
"items": [
{
"itemType": "book",
"title": "Adaptation: the Continuing Evolution of the New York Public Library’s Digital Design System",
"creators": [
{
"lastName": "Jennifer L. Anderson & Edwin Guzman",
"creatorType": "editor"
}
],
"date": "17",
"abstractNote": "'A design system is crucial for sustaining both the continuity and the advancement of a website's design. But it's hard to create such a system when content, technology, and staff are constantly changing. This is the situation faced by the Digital team at the New York Public Library. When those are the conditions of the problem, the design system needs to be modular, distributed, and standardized, so that it can withstand constant change and provide a reliable foundation. NYPL's design system has gone through three major iterations, each a step towards the best way to manage design principles across an abundance of heterogeneous content and many contributors who brought different skills to the team and department at different times. Starting from an abstracted framework that provided a template for future systems, then a specific component system for a new project, and finally a system of interoperable components and layouts, NYPL's Digital team continues to grow and adapt its digital design resource.'",
"publisher": "The Code4Lib Journal",
"attachments": [],
"tags": [
{
"tag": "Issue 41"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<record xmlns=\"http://www.loc.gov/MARC21/slim\">\n<recordSchema>MARC21-xml</recordSchema>\n<recordPacking>xml</recordPacking>\n<recordData>\n<record type=\"Bibliographic\">\n<leader>00000pam a2200000 cc4500</leader>\n<controlfield tag=\"001\">1242883924</controlfield>\n<controlfield tag=\"003\">DE-101</controlfield>\n<controlfield tag=\"005\">20230125220155.0</controlfield>\n<controlfield tag=\"007\">tu</controlfield>\n<controlfield tag=\"008\">211010s2023 gw ||||| |||| 00||||ger </controlfield>\n<datafield tag=\"015\" ind1=\" \" ind2=\" \">\n<subfield code=\"a\">23,A04</subfield>\n<subfield code=\"z\">21,N41</subfield>\n<subfield code=\"2\">dnb</subfield>\n</datafield>\n<datafield tag=\"016\" ind1=\"7\" ind2=\" \">\n<subfield code=\"2\">DE-101</subfield>\n<subfield code=\"a\">1242883924</subfield>\n</datafield>\n<datafield tag=\"020\" ind1=\" \" ind2=\" \">\n<subfield code=\"a\">9783525560624</subfield>\n<subfield code=\"c\">Festeinband : EUR 85.00 (DE), EUR 88.00 (AT)</subfield>\n<subfield code=\"9\">978-3-525-56062-4</subfield>\n</datafield>\n<datafield tag=\"020\" ind1=\" \" ind2=\" \">\n<subfield code=\"a\">3525560621</subfield>\n<subfield code=\"9\">3-525-56062-1</subfield>\n</datafield>\n<datafield tag=\"024\" ind1=\"3\" ind2=\" \">\n<subfield code=\"a\">9783525560624</subfield>\n</datafield>\n<datafield tag=\"028\" ind1=\"5\" ind2=\"2\">\n<subfield code=\"a\">Bestellnummer: VUR0008785</subfield>\n</datafield>\n<datafield tag=\"035\" ind1=\" \" ind2=\" \">\n<subfield code=\"a\">(DE-599)DNB1242883924</subfield>\n</datafield>\n<datafield tag=\"035\" ind1=\" \" ind2=\" \">\n<subfield code=\"a\">(OCoLC)1365383776</subfield>\n</datafield>\n<datafield tag=\"035\" ind1=\" \" ind2=\" \">\n<subfield code=\"a\">(OCoLC)1275381065</subfield>\n</datafield>\n<datafield tag=\"040\" ind1=\" \" ind2=\" \">\n<subfield code=\"a\">1245</subfield>\n<subfield code=\"b\">ger</subfield>\n<subfield code=\"c\">DE-101</subfield>\n<subfield code=\"d\">9999</subfield>\n<subfield code=\"e\">rda</subfield>\n</datafield>\n<datafield tag=\"041\" ind1=\" \" ind2=\" \">\n<subfield code=\"a\">ger</subfield>\n</datafield>\n<datafield tag=\"044\" ind1=\" \" ind2=\" \">\n<subfield code=\"c\">XA-DE</subfield>\n</datafield>\n<datafield tag=\"082\" ind1=\"7\" ind2=\"4\">\n<subfield code=\"a\">230</subfield>\n<subfield code=\"a\">943</subfield>\n<subfield code=\"q\">DE-101</subfield>\n<subfield code=\"2\">23sdnb</subfield>\n</datafield>\n<datafield tag=\"100\" ind1=\"1\" ind2=\" \">\n<subfield code=\"0\">(DE-588)111415403</subfield>\n<subfield code=\"0\">https://d-nb.info/gnd/111415403</subfield>\n<subfield code=\"0\">(DE-101)111415403</subfield>\n<subfield code=\"a\">Erhart, Hannelore</subfield>\n<subfield code=\"d\">1927-2013</subfield>\n<subfield code=\"e\">Verfasser</subfield>\n<subfield code=\"4\">aut</subfield>\n<subfield code=\"2\">gnd</subfield>\n</datafield>\n<datafield tag=\"245\" ind1=\"1\" ind2=\"0\">\n<subfield code=\"a\">Katharina Staritz</subfield>\n<subfield code=\"n\">Band 2.</subfield>\n<subfield code=\"p\">\n1903-1953 / Ilse Meseberg-Haubold, Dietgard Meyer ; unter Mitarbeit von Hannelore Erhart †\n</subfield>\n<subfield code=\"c\">\nHannelore Erhart ; Ilse Meseberg-Haubold ; Dietgard Meyer. Mit einem Exkurs Elisabeth Schmitz\n</subfield>\n</datafield>\n<datafield tag=\"264\" ind1=\"3\" ind2=\"1\">\n<subfield code=\"a\">Göttingen</subfield>\n<subfield code=\"b\">Vandenhoeck & Ruprecht</subfield>\n<subfield code=\"c\">[2023]</subfield>\n</datafield>\n<datafield tag=\"300\" ind1=\" \" ind2=\" \">\n<subfield code=\"a\">XV, 629 Seiten</subfield>\n<subfield code=\"b\">Illustrationen</subfield>\n<subfield code=\"c\">1094 g</subfield>\n</datafield>\n<datafield tag=\"336\" ind1=\" \" ind2=\" \">\n<subfield code=\"a\">Text</subfield>\n<subfield code=\"b\">txt</subfield>\n<subfield code=\"2\">rdacontent</subfield>\n</datafield>\n<datafield tag=\"337\" ind1=\" \" ind2=\" \">\n<subfield code=\"a\">ohne Hilfsmittel zu benutzen</subfield>\n<subfield code=\"b\">n</subfield>\n<subfield code=\"2\">rdamedia</subfield>\n</datafield>\n<datafield tag=\"338\" ind1=\" \" ind2=\" \">\n<subfield code=\"a\">Band</subfield>\n<subfield code=\"b\">nc</subfield>\n<subfield code=\"2\">rdacarrier</subfield>\n</datafield>\n</record>\n</recordData>\n<recordPosition>2</recordPosition>\n</record>",
"items": [
{
"itemType": "book",
"title": "Katharina Staritz. Band 2: 1903-1953 / Ilse Meseberg-Haubold, Dietgard Meyer ; unter Mitarbeit von Hannelore Erhart †",
"creators": [
{
"firstName": "Hannelore",
"lastName": "Erhart",
"creatorType": "author"
}
],
"date": "2023",
"ISBN": "9783525560624 3525560621",
"callNumber": "230 943",
"language": "ger",
"numPages": "629",
"place": "Göttingen",
"publisher": "Vandenhoeck & Ruprecht",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Sebastian Karcher^https?://cds\.cern\.ch/(search\?|collection/|record/)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2023 Sebastian Karcher
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/record/')) {
return getItemType(doc);
}
else if (getSearchResults(doc, true)) {
return 'multiple';
}
return false;
}
function getItemType(doc) {
var type = text(doc, '.formatRecordHeader').trim();
// These are the most important one, but could probably be expanded further
switch (type) {
case "Article":
return "journalArticle";
case "Thesis":
return "thesis";
case "Report":
return "report";
case "Book":
case "Books":
return "book";
case "Preprint":
return "preprint";
case "Talks":
return "presentation";
default:
return "document";
}
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('strong>a.titlelink');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
async function doWeb(doc, url) {
if (detectWeb(doc, url) == 'multiple') {
let items = await Zotero.selectItems(getSearchResults(doc, false));
if (!items) return;
for (let url of Object.keys(items)) {
await scrape(await requestDocument(url));
}
}
else {
await scrape(doc, url);
}
}
async function scrape(doc, url = doc.location.href) {
var pdfUrl = attr(doc, '#detailedrecordminipanelfile a[href*=".pdf"]', 'href');
var abstract = attr(doc, 'meta[property="og:description"]', 'content');
var thesisUniversity = attr(doc, 'meta[name="citation_dissertation_institution"]', 'content');
// Z.debug(pdfUrl);
let bibUrl = url.replace(/[#?].*/, "") + '/export/hx?ln=en';
let bibText = await requestText(bibUrl);
bibText = bibText.match(/<pre>([\s\S]+?)<\/pre>/)[1];
// Z.debug(bibText)
let translator = Zotero.loadTranslator("import");
translator.setTranslator('9cb70025-a888-4a29-a210-93ec52da40d4');
translator.setString(bibText);
translator.setHandler('itemDone', (_obj, item) => {
if (pdfUrl) {
item.attachments.push({ url: pdfUrl, title: "Full Text PDF", mimeType: "application/pdf" });
}
delete item.itemID;
if (item.itemType == "thesis" && !item.university) {
item.university = thesisUniversity;
}
item.abstractNote = abstract;
item.itemType = getItemType(doc);
item.extra = "";
item.complete();
});
await translator.translate();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://cds.cern.ch/search?ln=en&sc=1&p=testing&action_search=Search&op1=a&m1=a&p1=&f1=&c=Articles+%26+Preprints&c=Books+%26+Proceedings&c=Presentations+%26+Talks&c=Periodicals+%26+Progress+Reports&c=Multimedia+%26+Outreach&c=International+Collaborations",
"detectedItemType": "multiple",
"items": "multiple"
},
{
"type": "web",
"url": "https://cds.cern.ch/record/2855572?ln=en",
"detectedItemType": "preprint",
"items": [
{
"itemType": "preprint",
"title": "A short history of Internet protocols at CERN",
"creators": [
{
"firstName": "Ben",
"lastName": "Segal",
"creatorType": "author"
}
],
"date": "1995",
"libraryCatalog": "CERN Document Server",
"place": "Geneva",
"repository": "CERN",
"url": "https://cds.cern.ch/record/2855572",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://cds.cern.ch/collection/Published%20Articles?ln=en",
"detectedItemType": "multiple",
"items": "multiple"
},
{
"type": "web",
"url": "https://cds.cern.ch/record/2855446?ln=de",
"detectedItemType": "journalArticle",
"items": [
{
"itemType": "journalArticle",
"title": "Production of Σ⁰ Hyperon and Search of Σ⁰ Hypernuclei at LHC with ALICE",
"creators": [
{
"firstName": "Alexander",
"lastName": "Borissov",
"creatorType": "author"
},
{
"firstName": "Sergei",
"lastName": "Solokhin",
"creatorType": "author"
}
],
"date": "2023",
"DOI": "10.1134/S1063778823010131",
"abstractNote": "The first measurements of the transverse momentum ($p_{{{T}}}$) spectra and integrated yields and mean $p_{{T}}$ of $\\Sigma^{0}$ and $\\overline{\\Sigma}^{0}$ hyperons in $pp$ collisions at $\\sqrt{s}=7$ TeV at the LHC are presented. The $\\Sigma^{0}$($\\overline{\\Sigma}^{0}$) is reconstructed via its electromagnetic decay channel $\\Lambda$($\\overline{\\Lambda})+\\gamma$. The $\\Lambda$ ($\\overline{\\Lambda}$) baryon is reconstructed via its decay into $p+\\pi^{-}$ ($\\overline{{{p}}}+\\pi^{+}$), while the photon is detected by exploiting the unique capability of the ALICE detector to measure low-energy photons via conversion into $e^{+}e^{-}$ pairs in the detector material. The yield of $\\Sigma^{0}$ is compared to that of the $\\Lambda$ baryon, which has the same quark content but different isospin. These data contribute to the understanding of hadron production mechanisms and provide a reference for constraining QCD-inspired models and tuning Monte Carlo event generators such as PYTHIA. In addition, the feasibility of a search for a bound state of proton, neutron and $\\Sigma^{0}$($\\Sigma^{0}$ hypernuclei ${}^{3}_{\\Sigma^{0}}$H) is presented, based on the luminosities foreseen for the LHC Runs 3 and 4.",
"issue": "6",
"libraryCatalog": "CERN Document Server",
"pages": "970-975",
"publicationTitle": "Phys. At. Nucl.",
"url": "https://cds.cern.ch/record/2855446",
"volume": "85",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://cds.cern.ch/record/2854594?ln=en",
"detectedItemType": "report",
"items": [
{
"itemType": "report",
"title": "Notes on the machine studies team informal seminars on transitional phenomena",
"creators": [
{
"firstName": "O",
"lastName": "Barbalat",
"creatorType": "author"
}
],
"date": "1968",
"institution": "CERN",
"libraryCatalog": "CERN Document Server",
"place": "Geneva",
"url": "https://cds.cern.ch/record/2854594",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://cds.cern.ch/record/2854931?ln=en",
"detectedItemType": "thesis",
"items": [
{
"itemType": "thesis",
"title": "Pathlength-dependent jet quenching in the quark–gluon plasma at ALICE",
"creators": [
{
"firstName": "Caitlin",
"lastName": "Beattie",
"creatorType": "author"
}
],
"date": "2023",
"abstractNote": "At extremely high temperatures, the quarks and gluons that compose the fundamental building blocks of our universe undergo a phase transition from stable hadronic matter to become a deconfined quark--gluon plasma (QGP). One way to study this medium is through collisions of heavy ions, where extraordinarily high energy densities produce just such a deconfined state. Of particular interest are jets, collimated showers of hadrons that originate early in the collision and undergo modification as they traverse the QGP, thus probing the medium's properties and enabling the study of quantum chromodynamics at multiple scales. Notably, jets lose energy as they propagate through the medium, the pathlength dependence of which remains an open question. The answer is of significant interest, however, given that quantitative constraints on this dependence are closely related to the underlying mechanisms that drive jet quenching phenomena. This thesis will discuss the first measurement of jets using a technique known as event-shape engineering (ESE), a measurement made in an effort to constrain the pathlength dependence of jet energy loss. For this thesis, charged jets were measured in Pb--Pb collisions using the ALICE detector at the CERN Large Hadron Collider. These jets were then classified according to their angle with respect to the event plane, as well as the shape of the event that they traversed. No sensitivity of the jet spectra to the event shape was observed; however, the yields were seen to be dependent on the event-plane angle. Moreover, this dependence was stronger for highly-elliptical events and weaker for highly-isotropic events. Such results are consistent with descriptions of pathlength distributions that were studied in Trajectum and the assumption that jets lose energy in a pathlength-dependent manner. Further theoretical models are required to extract quantitative constraints from this study.",
"libraryCatalog": "CERN Document Server",
"university": "Yale University (US)",
"url": "https://cds.cern.ch/record/2854931",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [
{
"note": "<p>Presented 07 Mar 2023</p>"
}
],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
99Philipp Zumstein/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2015 Philipp Zumstein
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectSearch(item) {
return !!item.ISBN;
}
function doSearch(item) {
//K10plus is the merged catalog of GBV and SWB
//search the ISBN or text over the SRU of K10plus, and take the result it as MARCXML
//documentation: https://wiki.k10plus.de/display/K10PLUS/SRU
let url;
if (item.ISBN) {
var queryISBN = ZU.cleanISBN(item.ISBN);
url = "https://sru.k10plus.de/opac-de-627?version=1.1&operation=searchRetrieve&query=pica.isb=" + queryISBN + " AND pica.mat%3DB&maximumRecords=1";
}
else if (item.query) {
url = "https://sru.k10plus.de/opac-de-627?version=1.1&operation=searchRetrieve&query=" + encodeURIComponent(item.query) + "&maximumRecords=50";
}
//Z.debug(url);
ZU.doGet(url, function (text) {
//Z.debug(text);
var translator = Zotero.loadTranslator("import");
translator.setTranslator("edd87d07-9194-42f8-b2ad-997c4c7deefd");
translator.setString(text);
translator.setHandler("itemDone", function (obj, item) {
// Table of Contents = Inhaltsverzeichnis
/* e.g.
<datafield tag="856" ind1="4" ind2="2">
<subfield code="u">http://d-nb.info/1054452857/04</subfield>
<subfield code="m">DE-101</subfield>
<subfield code="3">Inhaltsverzeichnis</subfield>
</datafield>
*/
var parser = new DOMParser();
var xml = parser.parseFromString(text, "application/xml");
var ns = {
"marc": "http://www.loc.gov/MARC21/slim"
};
var tocURL = ZU.xpath(xml, '//marc:datafield[@tag="856"][ marc:subfield[text()="Inhaltsverzeichnis"] ]/marc:subfield[@code="u"]', ns);
if (tocURL.length) {
//Z.debug(tocURL[0].textContent);
let url = tocURL[0].textContent;
// Force all PDF URLs to HTTPS -- any domains specified in MARC records likely
// support HTTPS (e.g., www.gbv.de and d-nb.info)
if (url.startsWith("http://")) {
Z.debug(`Forcing HTTPS for ${url}`);
url = url.replace(/^http:\/\//, "https://");
}
item.attachments = [{
url,
title: "Table of Contents PDF",
mimeType: "application/pdf"
}];
}
//delete [u.a.] from place
if (item.place) {
item.place = item.place.replace(/\[?u\.[\s\u00A0]?a\.\]?\s*$/, '');
}
//DDC is not the callNumber in Germany
item.callNumber = "";
//place the queried ISBN as the first ISBN in the list (dublicates will be removed later)
item.ISBN = queryISBN + " " + item.ISBN;
//delete German tags
item.tags = [];
item.complete();
});
translator.translate();
});
}
// Testing locally in
// chrome://zotero/content/tools/testTranslators/testTranslators.html
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "search",
"input": {
"ISBN": "9783830931492"
},
"items": [
{
"itemType": "book",
"title": "Evaluation in Deutschland und Österreich: Stand und Entwicklungsperspektiven in den Arbeitsfeldern der DeGEval - Gesellschaft für Evaluation",
"creators": [
{
"lastName": "Böttcher",
"firstName": "Wolfgang",
"creatorType": "editor"
},
{
"lastName": "DeGEval - Gesellschaft für Evaluation",
"creatorType": "editor",
"fieldMode": true
}
],
"date": "2014",
"ISBN": "9783830931492",
"extra": "OCLC: 885612607",
"language": "ger",
"libraryCatalog": "K10plus ISBN",
"numPages": "219",
"place": "Münster",
"publisher": "Waxmann",
"shortTitle": "Evaluation in Deutschland und Österreich",
"attachments": [
{
"title": "Table of Contents PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [
{
"note": "Literaturangaben"
}
],
"seeAlso": []
}
]
},
{
"type": "search",
"input": {
"ISBN": "3-86688-240-8"
},
"items": [
{
"itemType": "book",
"title": "Bilinguale Lexik: nicht materieller lexikalischer Transfer als Folge der aktuellen russisch-deutschen Zweisprachigkeit",
"creators": [
{
"firstName": "Katrin Bente",
"lastName": "Karl",
"creatorType": "author"
}
],
"date": "2012",
"ISBN": "9783866882409 9783866882416",
"extra": "OCLC: 795769702",
"language": "ger",
"libraryCatalog": "K10plus ISBN",
"numPages": "387",
"place": "München",
"publisher": "Sagner",
"series": "Slavolinguistica",
"seriesNumber": "15",
"shortTitle": "Bilinguale Lexik",
"attachments": [
{
"title": "Table of Contents PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [
{
"note": "Literaturverz. S. [373] - 387 Die CD-ROM enth. einen Anh. mit Dokumenten zur Sprachproduktion und Sprachbewertung"
},
{
"note": "Teilw. zugl.: Hamburg, Univ., FB SLM, Diss., 2011 u.d.T.: Karl, Katrin Bente: Nicht materieller lexikalischer Transfer als Folge der aktuellen russisch-deutschen Zweisprachigkeit"
}
],
"seeAlso": []
}
]
},
{
"type": "search",
"input": {
"ISBN": "978-1-4073-0412-0"
},
"items": [
{
"itemType": "book",
"title": "The harbour of Sebastos (Caesarea Maritima) in its Roman Mediterranean context",
"creators": [
{
"firstName": "Avnēr",
"lastName": "Rabbān",
"creatorType": "author"
},
{
"firstName": "Michal",
"lastName": "Artzy",
"creatorType": "author"
}
],
"date": "2009",
"ISBN": "9781407304120",
"extra": "OCLC: 320755805",
"language": "eng",
"libraryCatalog": "K10plus ISBN",
"numPages": "222",
"place": "Oxford",
"publisher": "Archaeopress",
"series": "BAR International series",
"seriesNumber": "1930",
"attachments": [
{
"title": "Table of Contents PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "search",
"input": {
"ISBN": "978-1-4912-5316-8"
},
"items": [
{
"itemType": "book",
"title": "Classroom activities for the busy teacher: EV3: A 10 week plan for teaching robotics using the LEGO Education EV3 Core Set (45544)",
"creators": [
{
"firstName": "Damien",
"lastName": "Kee",
"creatorType": "editor"
}
],
"date": "2013",
"ISBN": "9781491253168",
"abstractNote": "Introduction -- RileyRover basics -- Keeping track -- What is a robot? -- Flowcharting -- How far? -- How fast? -- That bot has personality! -- How many sides? -- Help, I'm stuck! -- Let's go prospecting! -- Stay away from the edge -- Prospecting and staying safe -- Going up and going down -- Cargo delivery -- Prepare the landing zone -- Meet your adoring public! -- As seen on TV! -- Mini-golf -- Dancing robots -- Robot wave -- Robot butler -- Student worksheets -- Building instructions. - \"A guide for teachers implementing a robotics unit in the classroom ... aimed at middle years schooling (ages 9-15) ... [and] based around a single robot, the RileyRover\"--page 1",
"extra": "OCLC: 860902984",
"language": "eng",
"libraryCatalog": "K10plus ISBN",
"numPages": "93",
"place": "Lexington, KY",
"publisher": "CreateSpace",
"shortTitle": "Classroom activities for the busy teacher",
"attachments": [],
"tags": [],
"notes": [
{
"note": "Place of publication information from back of book. Publisher information provided by Amazon"
}
],
"seeAlso": []
}
]
},
{
"type": "search",
"input": {
"ISBN": "9780754671275"
},
"items": [
{
"itemType": "book",
"title": "Remaining sensitive to the possibility of failure: second Resilience Engineering Symposium that was held November 8 - 10, 2007 in Juan-les-Pins",
"creators": [
{
"firstName": "Erik",
"lastName": "Hollnagel",
"creatorType": "editor"
},
{
"firstName": "Christopher P.",
"lastName": "Nemeth",
"creatorType": "editor"
},
{
"firstName": "Sidney",
"lastName": "Dekker",
"creatorType": "editor"
}
],
"date": "2008",
"ISBN": "9780754671275",
"language": "eng",
"libraryCatalog": "K10plus ISBN",
"numPages": "332",
"place": "Aldershot, Hampshire",
"publisher": "Ashgate",
"series": "Resilience engineering perspectives",
"seriesNumber": "1",
"shortTitle": "Remaining sensitive to the possibility of failure",
"attachments": [
{
"title": "Table of Contents PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [
{
"note": "Many of the papers are based on presentations made at the Second Resilience Engineering Symposium that was held November 8 - 10 2007 in Juan-les-Pins, France. - Complete proceedings from this symposium are availabe for download at http://www.resilience-engineering.org Includes bibliographical references and index"
}
],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Zoë C. Ma^https?://www\.laphamsquarterly\.org//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2023 Zoë C. Ma
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
const urlObj = new URL(url);
// About pages, legal notes, content listings, event notices... or
// content pages without identifiable author, or fragmentary quotations of
// historical materials.
const skipPath = /^\/(about|legal|issues|archive|contributors|conversations|lq-interactives|outreach|programs|events|world-in-time|deja-vu)/;
if (urlObj.pathname.match(skipPath)) {
return false;
}
// Also skip pages from magazine sections that has no usable author
// info. (Maps, Miscellany, charts and graphs, etc.).
const skipSection = /^\/.+\/(maps|miscellany|charts-graphs)\/.+/;
if (urlObj.pathname.match(skipSection)) {
return false;
}
// Also skip the individual issue pages. This can only be done by
// inspecting the document.
if (doc.querySelector("body.node-type-issue")) {
return false;
}
if (urlObj.pathname.match(/^\/search\/node\/.+/)) {
// Search results.
if (getSearchResults(doc, true)) {
return "multiple";
}
else {
return false;
}
}
if (doc.querySelector("body.node-type-podcast")) {
return "podcast";
}
if (doc.querySelector("body.section-roundtable")) {
return "blogPost";
}
return "magazineArticle";
}
async function doWeb(doc, url) {
if (detectWeb(doc, url) == 'multiple') {
const items = await Z.selectItems(getSearchResults(doc, false));
if (!items) return;
for (const url of Object.keys(items)) {
await scrape(await requestDocument(url));
}
}
else {
await scrape(doc, url);
}
}
function getSearchResults(doc, checkOnly = false) {
const resultElems = doc.querySelectorAll(".search-results .search-result"); // Lovely semantics!
if (!resultElems.length) return false;
// Title string -> array of URLs.
const titleMap = new Map();
// While collecting title -> URL mapping for possible duplicate titles,
// check for duplicate URLs too, though this is unlikely. If it does
// happen, the first one in the document order takes precedence.
const hrefsSeen = new Set();
for (const elem of resultElems) {
const href = attr(elem, "h3 > a", "href");
const title = text(elem, "h3 > a");
if (href && !hrefsSeen.has(href) && title) {
if (checkOnly) return true;
hrefsSeen.add(href);
// Title may contain duplicates even if the links are
// unique. In other words, one title may be associated with
// multiple (i.e. an array of) URLs.
if (!titleMap.has(title)) {
titleMap.set(title, []);
}
titleMap.get(title).push(href);
}
}
// If the same title text is associated with multiple URLs, add a
// parenthesized number showing the order of the title's appearance in the
// search results.
const items = {};
// Map conveniently maintains insertion order.
for (const [title, hrefArray] of titleMap) {
const hasDup = hrefArray.length > 1;
for (const [i, href] of hrefArray.entries()) {
items[href] = !hasDup
? title
: `${title} (${i + 1}, URL: ${(new URL(href)).pathname})`;
}
}
return hrefsSeen.size && items;
}
async function scrape(doc, url = doc.location.href) {
const type = detectWeb(doc, url);
if (!type) {
// This could happen if the user selects an item from the
// multiple, but that item happens to be something we cannot
// exclude based on URL/title alone.
Z.debug(`scrape function encountered mismatched type ${type} for ${url}`);
return;
}
const item = new Z.Item(type);
item.url = url;
item.language = attr(doc, "html", "lang");
item.attachments = [];
switch (type) {
case "magazineArticle":
await applyMagazine(doc, item);
break;
case "blogPost":
applyBlog(doc, item);
break;
case "podcast":
applyPodcast(doc, item);
break;
}
item.attachments.push({
document: doc,
title: "Snapshot",
mimeType: "text/html"
});
item.complete();
}
// Magazine articles. This will always be async even if the async task is not
// performed, in the (unlikely) case when the issue-info URL to be scraped is
// not found on the article page.
async function applyMagazine(doc, item) {
item.ISSN = "1935-7494";
item.publicationTitle = "Lapham’s Quarterly";
item.title = text(doc, "#page-title");
item.creators = parseAuthors(getArticleAuthorText(doc));
const excerpt = text(doc, ".excerpt");
if (excerpt) item.abstractNote = excerpt;
if (doc.querySelector("body.node-type-voices-in-time")) {
// Voices in Time
let tmp = ZU.trimInternal(text(doc, ".title .date")); // Original date
if (tmp) {
item.originalDate = tmp;
}
tmp = getVITRightsTrans(doc); // Rights and translators
if (tmp) {
if (tmp.rights) {
item.rights = tmp.rights;
}
if (tmp.translators) { // could be undefined
item.creators.push(...tmp.translators);
}
}
tmp = getVITAboutText(doc); // "About the text" or brief bio of author
if (tmp) {
item.notes = [tmp];
}
}
const issueRelURL = attr(doc, ".sticky-content > a", "href");
if (!issueRelURL) {
Z.debug(`Article at ${item.url} missing the link to its issue.`);
return undefined;
}
const issueURL = (new URL(issueRelURL, doc.location)).href;
return setIssueDate(issueURL, item);
}
// Cache for the issue info. Keys are the permalinks to the issue-page URLs,
// and values are the corresponding issue info returned by
// fetchIssueDateInfo(). This is to avoid repeated network requests for the
// same document when saving multiple items.
const _issueCache = new Map();
async function setIssueDate(url, item) {
let value;
if (_issueCache.has(url)) {
value = _issueCache.get(url);
}
else {
value = await fetchIssueDateInfo(url);
if (value) {
_issueCache.set(url, value);
}
}
Object.assign(item, value);
}
async function fetchIssueDateInfo(url) {
let doc;
try {
doc = await requestDocument(url);
}
catch (err) {
Z.debug(`Failed to request ${url} for issue/date info.`);
return null;
}
let dateText = text(doc, "p.date");
if (!dateText) {
Z.debug(`Issue/date info unexpectedly missing at ${url}`);
return null;
}
dateText = ZU.trimInternal(dateText);
// dateText should look like the following:
// "Volume XIV, Number 4 | [season/month-range] 2022".
// Convert it into array like ["XIV", "4", "2022"]
const [volume, number, year] = dateText.split(/[,|]/)
.map(x => x.trim().split(" ")[1]);
return {
volume: romanToInt(volume),
issue: parseInt(number),
date: parseInt(year)
};
}
// Get the rights and translator info for Voices in Time if any.
function getVITRightsTrans(doc) {
const paragraphs = doc.querySelectorAll(".content-wrapper > p");
if (!paragraphs.length) {
return false;
}
const str
= ZU.trimInternal(paragraphs.item(paragraphs.length - 1).textContent);
if (str) {
const infoObj = {};
// . [optional words ](C) yyyy[ by name] ... (full stop)
let match = str.match(/(?:^|\.\s+)((?:\w+\s+)*©\s+\d+.+?\.)/im);
if (match) {
infoObj.rights = match[1];
}
// Translator. "Translated by ... [stop or semicolon]"
match = str.match(/(?:^|\.\s+)translated by (.+?)[.;]/i);
if (match) {
const transArray = parseAuthors(match[1], "translator");
if (transArray.length) {
infoObj.translators = transArray;
}
}
return infoObj;
}
return false;
}
// Get the text block under "About this text" for Voices in Time. The block is
// present even if the text has no identifiable author.
function getVITAboutText(doc) {
const paragraphs = doc.querySelectorAll(".bio-block > p");
if (!paragraphs.length) {
return "";
}
const output = [];
for (const paragraph of paragraphs.values()) {
output.push(ZU.trimInternal(paragraph.textContent.trim()));
}
// Re-inserting paragraph-ending line breaks and add extra line break
// between paragraphs.
return output.join("\n\n");
}
// Blog articles.
function applyBlog(doc, item) {
// Blog-article title proper
item.title = text(doc, ".title > h2");
item.creators = parseAuthors(getArticleAuthorText(doc));
item.date = getBlogPostDate(doc);
// blogTitle refers to the name of the blog hosted by Lapham's.
item.blogTitle = text(doc, "#page-title");
}
function getBlogPostDate(doc) {
const dateText = text(doc, ".pub-date");
return !!dateText && (new Date(dateText)).toISOString();
}
// Returns the author string (for magazine article or blog post).
function getArticleAuthorText(doc) {
// Take the author's byline from the "Contributor" block, which is more
// cumbersome but also more reliable than the byline at ".title .author".
let byline = text(doc,
'.banner-block a[href^="/contributors/"]' // usual place
+ ', .bio-heading a[href^="/contributors/"]' // "voices in time"
);
if (!byline) {
// Just in case the above didn't work, try this more obvious but less
// generic one.
byline = text(doc, ".title .author"); // Could be p or h2 element.
// NOTE: failure mode: None of the selectors can locate the element.
if (!byline) return "";
// Remove any initial "By ..."
byline = byline.replace(/^(By\s+)?/i, "");
}
const authorText = ZU.trimInternal(byline);
if (authorText === "Lapham’s Quarterly") {
// Skip adding author info when the "author" is the same as the
// publisher.
return "";
}
return authorText;
}
// Podcasts
function applyPodcast(doc, item) {
const podPublication = text(doc, ".title > h1");
item.seriesTitle = podPublication;
// Date text uses the same DOM element as it is on blog articles.
item.date = getBlogPostDate(doc);
let t = getPodDuration(doc);
if (!Number.isNaN(t)) {
item.runningTime = t;
}
const mainAudioSelector = ".top-image-block audio > source";
const epURL = attr(doc, mainAudioSelector, "src");
item.audioFileType = attr(doc, mainAudioSelector, "type");
item.abstractNote = attr(doc, "meta[name='description']", "content");
const headingText = text(doc, ".title > h2");
if (podPublication.toLowerCase() === "the world in time") {
// The EiC's own podcast.
item.creators = [ZU.cleanAuthor("Lewis H. Lapham", "author")];
item.title = headingText;
// Extract episode number
const epMatch = epURL.match(/episode-(\d+)-/i);
if (epMatch) {
item.episodeNumber = parseInt(epMatch[1]);
}
const guestName = inferEiCPodGuest(doc, headingText, epURL);
if (guestName) {
item.creators.push(ZU.cleanAuthor(guestName, "guest"));
}
}
else if (podPublication.toLowerCase() === "lq podcast") {
// The metadata for "LQ Podcast" is more difficult to obtain. The
// naming scheme is more diverse, and even if we're tempted to parse
// the audio filename for author info, see this for how it may not
// work: https://www.laphamsquarterly.org/content/poes-terror-soul
const [, ep, title] = headingText.match(/#(\d+)\s+(.+)/i);
item.episodeNumber = parseInt(ep);
item.title = title;
}
item.attachments.push({
title: "Audio",
mimeType: item.audioFileType,
url: epURL,
});
}
// Get the duration of episode as a string. This can return NaN if the duration
// cannot be scraped from the doc.
function getPodDuration(doc) {
const currTime = text(doc, ".jp-current-time");
const remainTime = text(doc, ".jp-duration"); // Negative value.
return timeToDuration(parseTime(currTime) - parseTime(remainTime));
}
// Parse mm:ss time duration string as number of seconds. Returns NaN if the
// input string does not match the expected format.
function parseTime(str) {
const strTimeMatch = str.match(/(-?\d+):(\d+)/);
if (!strTimeMatch) {
return NaN;
}
let [, m, s] = strTimeMatch;
s = parseInt(s);
let t = parseInt(m) * 60;
t += t > 0 ? s : -s;
return t;
}
// Convert number of seconds to duration string in h:mm:ss format.
function timeToDuration(s) {
let h = 0;
let m = Math.floor(s / 60);
s %= 60;
if (m > 59) {
h = Math.floor(m / 60);
m %= 60;
}
m = zeroPad(m, 2);
s = zeroPad(s, 2);
return h > 0 ? `${h}:${m}:${s}` : `${m}:${s}`;
}
// Zero-pad an integer up to length.
function zeroPad(num, length) {
return ZU.lpad(`${num}`, "0", length);
}
// Find the name of the guest in Lewis Lapham's podcast episode.
// NOTE: Usually the title is the guest's name, but not always.
// See: https://www.laphamsquarterly.org/content/vicars-christ, where the title
// is "Vicars of Christ".
// Therefore we try to infer the name using heuristics:
// 1. "The name often appears in the main-content paragraphs containing the
// words '[Lewis H.] Lapham (verb, speaks/talks) with [title] NAME [punct or
// 'about', but also possibly more noisy words]"
// 2. "It is very likely to be in the title."
// 3. "But if not 2, the name may also appear in the audio source file's name
// in the URL."
function inferEiCPodGuest(doc, headingText, epURL) {
// Take the basename of the episode audio without the last file extension.
// .../url/path/to/(basename).ext?query#frag
let [, epSource] = epURL.match(/^(?:.+\/)(.+)(?:\..+)$/);
// Try to find name candidate by parsing the paragraph text.
const paragraphs = doc.querySelectorAll(".jp-jplayer ~ p");
let nameCandidate;
if (paragraphs) {
const textString = Array.from(paragraphs)
.map(x => ZU.trimInternal(x.textContent.trim()))
.join(" ");
// [Lewis[ H.] ]Lapham [verb] with (noisy name candidate)[, or about ]
// Note here "noisy name candidate" matches leniently, but
// non-greedily. Otherwise the group will match all the way to the last
// comma punct or "about".
const nameMatch = textString
.match(/(?:Lewis(?: H\.)? )Lapham \S+ with ([\S ]+?)(?:,| about)/);
if (nameMatch) {
nameCandidate = nameMatch[1];
}
}
// If no useful name candidate is extracted, here's our last ditch effort:
// fall back to using the episode file name alone (this is the case for
// some old episodes).
if (!nameCandidate) {
return epSource.replace(/_/g, " ");
}
if (nameCandidate.toLowerCase().includes(headingText.toLowerCase())) {
// Name candidate (possibly surrounded by noise) is in title: This
// means the title can be taken to be the guest's name with high
// confidence.
return headingText;
}
else {
// Name candidate found but not in title. In this case, use to the
// audio file's name as a filter to clean up name candidate.
// So we need to case-normalize the episode filename.
epSource = epSource.toLowerCase();
// Generate "token stream" from name candidate, e.g.
// "Johann Sebastian Bach" -> ["Johann", "Sebastian", "Bach"]
// "Vita Sackerville-West" -> ["Vita", "Sackerville-West"]
const tokens = nameCandidate.split(" ");
const filteredTokens = []; // output
for (const token of tokens) {
// Token may contain punct such as period or comma as "noise"
// around the word, and apostrophe as internal "noise", but careful
// not to overgeneralize (TODO: replace any dash with one single
// minus-sign-hyphen (0x2D)?). Also, need to normalize and remove
// the diacritics.
const cleanToken
= token
.normalize("NFD")
.replace(/[\u0300-\u036F]/g, "") // Most of diacritics
.toLowerCase()
.split("") // to remove noisy puncts
.filter(x => !(x === "." || x === ","
|| x === "'" || x === "’"))
.join("");
// Note that we use clean token for logic but original token
// for output.
if (epSource.includes(cleanToken)) {
filteredTokens.push(token);
}
}
return filteredTokens.join(" ");
}
}
// Utility functions
// Process author. Parse it as "[possibly Oxford] comma-separated, possibly
// with the word 'and'".
function parseAuthors(str, authorType = "author") {
return str.split(/(?:,|\s+and\s+)/)
.map(s => s.trim())
.filter(Boolean)
.map(s => ZU.cleanAuthor(s, authorType));
}
// Convert from Roman numeral to integer. Note that the function assumes a
// correctly formed Roman numeral using letters up to C.
const ROMAN_NUMERAL = {
I: 1,
V: 5,
X: 10,
L: 50,
C: 100 // "D" and "M" unlikely to be encountered any time soon.
};
function romanToInt(str) {
return str.split("")
.map(i => ROMAN_NUMERAL[i.toUpperCase()])
.reduce((sum, curValue, cur, arr) => {
const prev = cur - 1;
const trySum = sum + curValue;
if (cur > 0 && arr[prev] < curValue) {
// Should subtract instead of add.
return trySum - arr[prev] * 2;
}
return trySum;
}, 0);
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.laphamsquarterly.org/search/node/mesopotamian",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.laphamsquarterly.org/education/schoolboy-where-are-you-going",
"items": [
{
"itemType": "magazineArticle",
"title": "Schoolboy, Where Are You Going?",
"creators": [
{
"firstName": "Moudhy",
"lastName": "Al-Rashid",
"creatorType": "author"
}
],
"date": 2022,
"ISSN": "1935-7494",
"abstractNote": "Scribal education in the ancient Mesopotamian tablet house.",
"issue": 4,
"language": "en",
"libraryCatalog": "Lapham's Quarterly",
"publicationTitle": "Lapham’s Quarterly",
"url": "https://www.laphamsquarterly.org/education/schoolboy-where-are-you-going",
"volume": 14,
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.laphamsquarterly.org/roundtable/double-vision",
"items": [
{
"itemType": "blogPost",
"title": "Double Vision",
"creators": [
{
"firstName": "Frank",
"lastName": "Gonzalez-Crussi",
"creatorType": "author"
}
],
"date": "2023-03-14T16:00:00.000Z",
"blogTitle": "Roundtable",
"language": "en",
"url": "https://www.laphamsquarterly.org/roundtable/double-vision",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.laphamsquarterly.org/roundtable/ancient-mesopotamian-tablet-cookbook",
"items": [
{
"itemType": "blogPost",
"title": "The Ancient Mesopotamian Tablet as Cookbook",
"creators": [
{
"firstName": "Gojko",
"lastName": "Barjamovic",
"creatorType": "author"
},
{
"firstName": "Patricia Jurado",
"lastName": "Gonzalez",
"creatorType": "author"
},
{
"firstName": "Chelsea A.",
"lastName": "Graham",
"creatorType": "author"
},
{
"firstName": "Agnete W.",
"lastName": "Lassen",
"creatorType": "author"
},
{
"firstName": "Nawal",
"lastName": "Nasrallah",
"creatorType": "author"
},
{
"firstName": "Pia M.",
"lastName": "Sörensen",
"creatorType": "author"
}
],
"date": "2019-06-10T16:00:00.000Z",
"blogTitle": "Roundtable",
"language": "en",
"url": "https://www.laphamsquarterly.org/roundtable/ancient-mesopotamian-tablet-cookbook",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.laphamsquarterly.org/content/peter-s-goodman",
"items": [
{
"itemType": "podcast",
"title": "Peter S. Goodman",
"creators": [
{
"firstName": "Lewis H.",
"lastName": "Lapham",
"creatorType": "author"
},
{
"firstName": "Peter S.",
"lastName": "Goodman",
"creatorType": "guest"
}
],
"abstractNote": "“Davos Man’s domination of the gains of globalization,” journalist Peter S. Goodman writes in Davos Man: How the Billionaires Devoured the World, “is how the United States found itself led by a patently unqualified casino developer as it grappled with a public health emergency that killed more Americans than those who died in World War I, World War II, and the Vietnam War",
"audioFileType": "audio/mpeg",
"episodeNumber": 87,
"language": "en",
"runningTime": "35:51",
"seriesTitle": "The World in Time",
"url": "https://www.laphamsquarterly.org/content/peter-s-goodman",
"attachments": [
{
"title": "Audio",
"mimeType": "audio/mpeg"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.laphamsquarterly.org/content/soviets-spies",
"items": [
{
"itemType": "podcast",
"title": "Soviets & Spies",
"creators": [],
"abstractNote": "Did an Englishman assist in the murder of Rasputin? Did a man knowns as the “Ace of Spies” almost carry off the assassination of the entire Bolshevik power structure? Did British agents really use semen as an invisible ink? Giles Milton, author of Russian Roulette: How British Spies Thwarted Lenin's Plot for Global Revolution, has the answers.",
"audioFileType": "audio/mpeg",
"episodeNumber": 61,
"language": "en",
"runningTime": "43:42",
"seriesTitle": "LQ Podcast",
"url": "https://www.laphamsquarterly.org/content/soviets-spies",
"attachments": [
{
"title": "Audio",
"mimeType": "audio/mpeg"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.laphamsquarterly.org/content/paradise-city",
"items": [
{
"itemType": "podcast",
"title": "To the Paradise City",
"creators": [
{
"firstName": "Lewis H.",
"lastName": "Lapham",
"creatorType": "author"
},
{
"firstName": "Brook",
"lastName": "Wilensky-Lanford",
"creatorType": "guest"
}
],
"abstractNote": "Lewis Lapham talks with author Brook Wilensky-Lanford about the search for Adam and Eve’s hometown.",
"audioFileType": "audio/mpeg",
"language": "en",
"runningTime": "16:27",
"seriesTitle": "The World in Time",
"url": "https://www.laphamsquarterly.org/content/paradise-city",
"attachments": [
{
"title": "Audio",
"mimeType": "audio/mpeg"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.laphamsquarterly.org/content/death-nothing-us",
"items": [
{
"itemType": "podcast",
"title": "Death Is Nothing to Us",
"creators": [
{
"firstName": "Lewis H.",
"lastName": "Lapham",
"creatorType": "author"
},
{
"firstName": "Stephen",
"lastName": "Greenblatt",
"creatorType": "guest"
}
],
"abstractNote": "Historian Stephen Greenblatt writes of “the concentrated force of the buried past” in The Swerve, his 2011 National Book Award winner in nonfiction.",
"audioFileType": "audio/mpeg",
"language": "en",
"runningTime": "20:05",
"seriesTitle": "The World in Time",
"url": "https://www.laphamsquarterly.org/content/death-nothing-us",
"attachments": [
{
"title": "Audio",
"mimeType": "audio/mpeg"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.laphamsquarterly.org/content/roosevelt-montas",
"items": [
{
"itemType": "podcast",
"title": "Roosevelt Montás",
"creators": [
{
"firstName": "Lewis H.",
"lastName": "Lapham",
"creatorType": "author"
},
{
"firstName": "Roosevelt",
"lastName": "Montás",
"creatorType": "guest"
}
],
"abstractNote": "“In my sophomore year of high school, I came upon a remarkable book in a garbage pile next to the house where we rented an apartment in Queens,” scholar Roosevelt Montás writes at the beginning of Rescuing Socrates: How the Great Books Changed My Life and Why They Matter for a New Generation. “It was the second volume of the pretentiously bound Harvard Classics series, and it",
"audioFileType": "audio/mpeg",
"episodeNumber": 85,
"language": "en",
"runningTime": "32:19",
"seriesTitle": "The World in Time",
"url": "https://www.laphamsquarterly.org/content/roosevelt-montas",
"attachments": [
{
"title": "Audio",
"mimeType": "audio/mpeg"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.laphamsquarterly.org/content/andrew-j-oshaughnessy",
"items": [
{
"itemType": "podcast",
"title": "Andrew J. O’Shaughnessy",
"creators": [
{
"firstName": "Lewis H.",
"lastName": "Lapham",
"creatorType": "author"
},
{
"firstName": "Andrew J.",
"lastName": "O’Shaughnessy",
"creatorType": "guest"
}
],
"abstractNote": "“Existing biographies of Thomas Jefferson,” the historian Andrew J. O’Shaughnessy writes in The Illimitable Freedom of the Human Mind: Thomas Jefferson’s Idea of a University, treat the retired president’s singular founding of a university “as merely an epilogue, while institutional histories give little consideration to the biographical context…Beginning at the age of",
"audioFileType": "audio/mpeg",
"episodeNumber": 84,
"language": "en",
"runningTime": "32:41",
"seriesTitle": "The World in Time",
"url": "https://www.laphamsquarterly.org/content/andrew-j-oshaughnessy",
"attachments": [
{
"title": "Audio",
"mimeType": "audio/mpeg"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.laphamsquarterly.org/freedom/andrey-kurkov-picks-his-pen",
"items": [
{
"itemType": "magazineArticle",
"title": "Andrey Kurkov Picks Up His Pen",
"creators": [
{
"firstName": "Andrey",
"lastName": "Kurkov",
"creatorType": "author"
}
],
"date": 2023,
"ISSN": "1935-7494",
"abstractNote": "On the freedom to write in Ukraine.",
"issue": 1,
"language": "en",
"libraryCatalog": "Lapham's Quarterly",
"publicationTitle": "Lapham’s Quarterly",
"rights": "Copyright © 2022 by Andrey Kurkov.",
"url": "https://www.laphamsquarterly.org/freedom/andrey-kurkov-picks-his-pen",
"volume": 15,
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [
"From a speech delivered at the PEN World Voices Festival. The son of a doctor and a pilot, Kurkov trained as a Japanese translator and began writing novels while serving as a prison guard in Odesa. His novel Grey Bees, which he wrote after meeting refugees in Kyiv who made regular trips to the Donbas to deliver medicine, depicts the 2014 war through the perspective of a beekeeper. “For Ukrainians, freedom is more important than stability,” Kurkov said in a March 2022 interview. “For Russians, it is the opposite. Ukrainians change their presidents at each election, Russians keep their tsar until the tsar is dead.”"
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.laphamsquarterly.org/freedom/we-refuse-logic",
"items": [
{
"itemType": "magazineArticle",
"title": "We Refuse This Logic",
"creators": [
{
"firstName": "Arlen",
"lastName": "Austin",
"creatorType": "translator"
}
],
"date": 2023,
"ISSN": "1935-7494",
"abstractNote": "The problem is not abortion.",
"issue": 1,
"language": "en",
"libraryCatalog": "Lapham's Quarterly",
"publicationTitle": "Lapham’s Quarterly",
"rights": "Translation copyright © 2022 by Arlen Austin.",
"url": "https://www.laphamsquarterly.org/freedom/we-refuse-logic",
"volume": 15,
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [
"Movimento di Lotta Femminile di Padova, from “Pregnancy and Abortion.” In June 1971 Mariarosa Dalla Costa, who had been active in the Italian workers’ movement, convened a meeting in Padua to discuss demanding wages for housework. The meeting led to the formation of what came to be called Lotta Femminista, which produced pamphlets, conducted studies, and documented its militant activity. This manifesto was later published in Dalla Costa and Selma James’ book The Power of Women and the Subversion of the Community."
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.laphamsquarterly.org/youth/sweet-and-cold",
"items": [
{
"itemType": "magazineArticle",
"title": "Sweet and Cold",
"creators": [
{
"firstName": "Xu",
"lastName": "Wei",
"creatorType": "author"
},
{
"firstName": "Jonathan",
"lastName": "Chaves",
"creatorType": "translator"
}
],
"date": 2014,
"ISSN": "1935-7494",
"abstractNote": "What a shame that I have carried a boy, as he ate some candy, to his death.",
"issue": 3,
"language": "en",
"libraryCatalog": "Lapham's Quarterly",
"publicationTitle": "Lapham’s Quarterly",
"rights": "© 1986, Columbia University Press.",
"url": "https://www.laphamsquarterly.org/youth/sweet-and-cold",
"volume": 7,
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [
"“A Kite.” After failing the civil-service examination on eight occasions, Xu became the personal secretary to a military commander in 1558 and assisted in defending his hometown from the attacks of Japanese pirates. After his patron’s downfall and death, he was faced with serious professional difficulties and, either insane or faking it effectively, attempted suicide by pushing an awl through his ear and pounding his testicles with a hammer. Later, he killed his third wife and went to prison but won release after seven years."
],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://inspirehep\.net//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/literature')) {
if (doc.querySelector('meta[name="citation_title"]')) {
return "journalArticle";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
else {
Z.monitorDOMChanges(doc.querySelector('#root'));
}
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('a.result-item-title[href*="/literature"]');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var bibUrl = url.replace('/literature/', '/api/literature/');
ZU.doGet(bibUrl, function (ris) {
let translator = Zotero.loadTranslator("import");
translator.setTranslator("9cb70025-a888-4a29-a210-93ec52da40d4");
translator.setString(ris);
translator.setHandler("itemDone", function (obj, item) {
for (let tag of doc.querySelectorAll('.ant-tag')) {
item.tags.push({ tag: tag.textContent.trim() });
}
for (let action of doc.querySelectorAll('.__UserAction__ a')) {
if (/\bpdf\b/i.test(action.textContent)) {
item.attachments.push({
title: 'Full Text PDF',
mimeType: 'application/pdf',
url: action.href
});
}
}
item.complete();
});
translator.translate();
}, null, null, { Accept: 'application/x-bibtex' });
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://inspirehep.net/literature?sort=mostrecent&size=25&page=1&q=find%20plasma%20light",
"defer": true,
"items": "multiple"
},
{
"type": "web",
"url": "https://inspirehep.net/literature/1284987",
"defer": true,
"items": [
{
"itemType": "journalArticle",
"title": "Electromagnetic Radiation in Hot QCD Matter: Rates, Electric Conductivity, Flavor Susceptibility and Diffusion",
"creators": [
{
"firstName": "Chang-Hwan",
"lastName": "Lee",
"creatorType": "author"
},
{
"firstName": "Ismail",
"lastName": "Zahed",
"creatorType": "author"
}
],
"date": "2014",
"DOI": "10.1103/PhysRevC.90.025204",
"issue": "2",
"itemID": "Lee:2014pwa",
"libraryCatalog": "INSPIRE",
"pages": "025204",
"publicationTitle": "Phys. Rev. C",
"shortTitle": "Electromagnetic Radiation in Hot QCD Matter",
"volume": "90",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "25.75.Cj"
},
{
"tag": "25.75.Dw"
},
{
"tag": "25.75.Gz"
},
{
"tag": "25.75.Nq"
},
{
"tag": "conductivity: electric"
},
{
"tag": "quantum chromodynamics: matter"
},
{
"tag": "quark gluon: interaction"
},
{
"tag": "quark gluon: plasma"
},
{
"tag": "radiation: electromagnetic"
},
{
"tag": "symmetry: chiral"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://inspirehep.net/literature/1282171",
"defer": true,
"items": [
{
"itemType": "journalArticle",
"title": "Relativistically induced transparency acceleration of light ions by an ultrashort laser pulse interacting with a heavy-ion-plasma density gradient",
"creators": [
{
"firstName": "Aakash A.",
"lastName": "Sahai",
"creatorType": "author"
},
{
"firstName": "F. S.",
"lastName": "Tsung",
"creatorType": "author"
},
{
"firstName": "A. R.",
"lastName": "Tableman",
"creatorType": "author"
},
{
"firstName": "W. B.",
"lastName": "Mori",
"creatorType": "author"
},
{
"firstName": "T. C.",
"lastName": "Katsouleas",
"creatorType": "author"
}
],
"date": "2013",
"DOI": "10.1103/PhysRevE.88.043105",
"issue": "4",
"itemID": "Sahai:2013tih",
"libraryCatalog": "INSPIRE",
"pages": "043105",
"publicationTitle": "Phys. Rev. E",
"volume": "88",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "52.38.Kd"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Peter Binkley^https?://[^/]+\.newspapers\.com/(clip|article)//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2017-2019 Peter Binkley
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(_doc, _url) {
return "newspaperArticle";
}
function doWeb(doc, url) {
if (url.includes('/clip/')) {
scrapeClip(doc, url);
}
else {
scrapeArticle(doc, url);
}
}
function scrapeClip(doc, url) {
var newItem = new Zotero.Item("newspaperArticle");
var metaArr = {};
var metaTags = doc.getElementsByTagName("meta");
for (let metaTag of metaTags) {
if (metaTag.getAttribute("property")) {
metaArr[metaTag.getAttribute("property")] = metaTag.getAttribute("content");
}
}
newItem.title = text(doc, '#mainContent h1') || text(doc, '[itemprop="about"]');
// remove the unnecessary xid param
newItem.url = attr(doc, 'link[rel="canonical"]', 'href');
/*
The user can append the author to the title with a forward slash
e.g. "My Day / Eleanor Roosevelt"
*/
if (newItem.title.includes('/')) {
var tokens = newItem.title.split("/");
var authorString = tokens[1];
newItem.title = tokens[0].trim();
// multiple authors are separated with semicolons
var authors = authorString.split("; ");
for (let author of authors) {
newItem.creators.push(Zotero.Utilities.cleanAuthor(author, "author"));
}
}
newItem.publicationTitle = text(doc, '[itemprop="name"]');
// details["source"]["title"] gives a string like
// "Newspapers.com - The Akron Beacon Journal - 1939-10-30 - Page Page 15"
newItem.pages = text(doc, '[itemprop="position"]').replace(/Page/g, '');
newItem.date = ZU.strToISO(text(doc, '[itemprop="dateCreated"]'));
newItem.place = text(doc, '[itemprop="locationCreated"]');
newItem.attachments.push(makeImageAttachment(url));
newItem.attachments.push(makePDFAttachment(url));
// handle empty title
if (newItem.title === "") {
newItem.title = "Article clipped from <i>" + newItem.publicationTitle + "</i>";
}
newItem.complete();
}
function scrapeArticle(doc, url) {
let item = new Zotero.Item('newspaperArticle');
let json = JSON.parse(text(doc, 'script[type="application/ld+json"]'));
item.publicationTitle = json.publisher && ZU.unescapeHTML(json.publisher.legalName);
item.title = ZU.trimInternal(ZU.unescapeHTML(json.about))
|| 'Article clipped from <i>' + item.publicationTitle + '</i>';
item.abstractNote = ZU.unescapeHTML(json.text);
item.place = ZU.unescapeHTML(json.locationCreated);
item.date = json.datePublished;
item.pages = json.pageStart && ZU.unescapeHTML(json.pageStart.replace('Page', ''));
item.url = attr(doc, 'link[rel="canonical"]', 'href');
item.attachments.push(makeImageAttachment(url));
item.attachments.push(makePDFAttachment(url));
item.complete();
}
function getID(url) {
return url.match(/\/(\d+)/)[1];
}
function makePDFAttachment(url) {
return {
title: 'Full Text PDF',
mimeType: 'application/pdf',
url: 'https://www.newspapers.com/clippings/download/?id=' + getID(url)
};
}
function makeImageAttachment(url) {
return {
title: 'Image',
mimeType: 'image/jpeg',
url: 'https://img.newspapers.com/img/img?clippingId=' + getID(url)
};
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.newspapers.com/clip/7960447/my-day-eleanor-roosevelt/",
"detectedItemType": "newspaperArticle",
"items": [
{
"itemType": "newspaperArticle",
"title": "My Day",
"creators": [
{
"firstName": "Eleanor",
"lastName": "Roosevelt",
"creatorType": "author"
}
],
"date": "1939-10-30",
"libraryCatalog": "newspapers.com",
"pages": "15",
"place": "Akron, Ohio",
"publicationTitle": "The Akron Beacon Journal",
"url": "https://www.newspapers.com/clip/7960447/my-day-eleanor-roosevelt/",
"attachments": [
{
"title": "Image",
"mimeType": "image/jpeg"
},
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.newspapers.com/clip/18535448/the-sunday-leader/",
"detectedItemType": "newspaperArticle",
"items": [
{
"itemType": "newspaperArticle",
"title": "Article clipped from <i>The Sunday Leader</i>",
"creators": [],
"date": "1887-07-17",
"libraryCatalog": "newspapers.com",
"pages": "5",
"place": "Wilkes-Barre, Pennsylvania",
"publicationTitle": "The Sunday Leader",
"url": "https://www.newspapers.com/clip/18535448/the-sunday-leader/",
"attachments": [
{
"title": "Image",
"mimeType": "image/jpeg"
},
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.newspapers.com/clip/31333699/driven-from-governors-office-ohio/",
"detectedItemType": "newspaperArticle",
"items": [
{
"itemType": "newspaperArticle",
"title": "Driven from Governor's Office, Ohio Relief Seekers Occupy a Church Today; Remain Defiant",
"creators": [],
"date": "1937-04-10",
"libraryCatalog": "newspapers.com",
"pages": "1",
"place": "Rushville, Indiana",
"publicationTitle": "Rushville Republican",
"url": "https://www.newspapers.com/clip/31333699/driven-from-governors-office-ohio/",
"attachments": [
{
"title": "Image",
"mimeType": "image/jpeg"
},
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.newspapers.com/article/the-times-picayune-telegraphed-to-the-ne/120087578/",
"detectedItemType": "newspaperArticle",
"items": [
{
"itemType": "newspaperArticle",
"title": "Telegraphed to the New Orleans Picayune. Latest from Charleston. Fort Sumter Returns Fire",
"creators": [],
"date": "1861-04-13",
"abstractNote": "Telegraphed to the New Orleans Picayune. LATEST FROM CHARLESTON. FORT SUMTER RETflUS FIRE. SULLI VAN12AND MORRIS ISLAND BATTERIES AT WORK. BREACH MADE IN FORT SUMTER. War Vessels Reported Outside. By the Southwestern Line. Charleston, April 12. The batteries of Sullivan's Island, Morris Island and other points opened fire on Fort Sumter at half - past four o'clock this morning. Fort Sumter returned the fire. A brisk cannonading is being kept up. There is no infoimation from the seaboard. The military are under arms. The whole population is on the streets, and the harbor is filled with anxious spectators. SECONB DISPATCH. The Moating battery is doing good service. Up to eleven o clock there has been no loea on our side. Fort Sumter replied at 7 o'clock this morning, and has kept up an astonishing fire ever since. Stevens's battery is slightly injured. Three sbejls are fired per minute. Four hundred, in all, have fallen. A breach is expected to be made in Fort Sumter to - morrow. Major Anderson's fire is principally directed I against the floating battery. j War vessels are reported outside the harbor. Only two soldiers are wounded on Salli - ! van's Island. The range is more perfect from the land batteries. Every shot tells. It ia thought from Mnjor Anderson's fire thai he haa more men than was supposed. Fort Sumter will succumb by to - morrow. It is raining at Charleston, but there - is no cessation of the batteries. A continuous steady fire on both sides is beinc kept up. The cutter Harriet Lane, and the steam gnu boat Crntader, are reported olf the bar, but have not entered the harbor. The War Department have as yet no official diepatches. (Jen. Beauregard was at the batteries all day. , The Government expects Fort Sumter to succumb to - morrow. third dispatch The firing continued all day. Two of Fort Sumter's guns are silenced, and it is reported a breach has been made through the southeast wall. No casualty has yet happened to any of the forces. Only seven of the nineteen batteries have opened fire on Fort Sumter. The remainder are held ready for the expected fleet. Two thousand men reached the city this morning and immediately embarked for Morris Island. FOURTH DI fAT H. Charleston, April 10, 11 P. M. Tne bombardment of Fort Saniter is going on every twenty minutes from the mortars It is supposed Major Anderson is resting his men for the night. Three vessels of war are reported outside tho bar. They cannot get in on account of the roughness of the sea. No one has as yet received any injury. The floating battery works admirably well. Every inlet to the harbor is well guarded. Our forces are having a lively time of it.",
"libraryCatalog": "newspapers.com",
"pages": "4",
"place": "New Orleans, Louisiana",
"publicationTitle": "The Times-Picayune",
"url": "https://www.newspapers.com/article/the-times-picayune-telegraphed-to-the-ne/120087578/",
"attachments": [
{
"title": "Image",
"mimeType": "image/jpeg"
},
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://nydailynews.newspapers.com/article/daily-news/121098969/",
"detectedItemType": "newspaperArticle",
"items": [
{
"itemType": "newspaperArticle",
"title": "Article clipped from <i>Daily News</i>",
"creators": [],
"date": "1965-02-26",
"abstractNote": "Donavena 8-5 Choice; Can He Kayo Folley? By Jim McCulIey Professional oddsmakers, otherwise referred to as bookies, evidently are counting on Oscar (Ringo) Bona- vena to flatten Zora Folley the Garden. Otherwise, why young thumper from Argentina an 8-5 favorite over the ringwise No. 5 heavyweight contender from Arizona? Only two fighters in Folley's 13-year career have outpointed him England's Henry Cooper, in London, and big Ernie Terrell, in New York. Five men have stopped Zora, however. IT DOESN'T SEEM possible Bonavena, with only eight pro fights under his belt, could win a decision over tonight's 32-year-old opponent. Oscar has stopped seven of his eight opponents, however, and, of course, does have a powerful body and a punishing punch in either mitt. The fight mob is really puzzled over this fight. Some of those well versed in fisticuffs can't understand how the odds-bodkins can make 22-year-old Bonavena such a big favorite. Some 10,000 fans are expected to come see for themselves and put another $40,- 000 into the current boxing revival. \"I KNOW FOLLEY dogs it at times,\" said a former heavyweight contender, who did not want to be named because he is now an official with the boxing commission. ''But Bonavena is a real novice compared to Zora. It seems to me Folley should be a big favorite, but then the kid does have a punch and he is game. It's possible he can reach Folley and knock him out.\" The price, for Folley backers, Is most enticing. \"I CAN'T RESIST the price,\" said a knowledgeable fight man who has been known to wager a bob now and then when the figures are right. \"Know something, 1 think it will be down close to pick 'em before they get into the ring.\" One thing is certain. Folley can't lose another fight in New York at this time, or he is through as a top contender. He is going for a payday on the gamble that he can go the distance with Oscar; and there is a chance he might stop the young man, too, though nobody has done that yet. RIGHT NOW, FOLLEY is unbeaten in hi3 last six bouts since losing to Terrell here July 27, '63. In that span he has whipped George Chuvalo, easily, and has recorded a draw with European champion Karl Maldenbfrger in Germany. Zora's overall record stands 68-7-4, for 79 professional fights, and includes 38 knockouts, some proof that he can punch as well as box. Only opponent to go the route (10 rounds) with Bonavena was Dick Wipperman, last Nov. 13 here. Oscar came back to the Garden a month later and knocked out Billy Stephan in six. The South American still is unranked among the big boys, but a win tonight will put him up there where he can start hollering. History shows heavyweights do mature a lot quicker than the lighter men, and Oscar may ev.en. be an unusual young fighter, v . . ( . r in 10 rounds or less tonight at would they continue to list the - Vlsic lliv ;.. Vnn-t ST!rt -. lM. FEB. 26, 1958 ZDhe BOSTON CELTICS WOM THEIR SECOMt STRAIGHT N.&.A. EASTERN CROWN BY DOWNING DETROIT, 106-99, AS &1LL RUSSELL COUTftOLU&THE BOARDS. BOBCOUSYAN& BILL SHAfeMAH EACH SCORED 18 POIWTS. Lincoln Downs Results 1ST Clmp.: 4-np: 5 f.: off 1:33. Ravenala Prince (Garry)5.ti0 4i 2 SO Mission Bound (Parker) 6.10 .'i.8'1 Favorite Act (Bradley) K.MI T-l:02, Also Lord Culpeper. Your Reporter, Deacon Shnne. Prmrie Rose. Rinsr Shut, Fearless Leader, ilaryg Gilt. Soft Glance. 2D Clmg-.; 4-np: 7 f.: off 2:00. Idle Threats (Allan) 4 no 2 SO Grey Whirl (Giovanni) 3.40 3.00 Good Effort (Maeda) B.20 T-1:32t4. Also Greek Paire. Inquisition. Frozen North, Fast Bid. Foxy Sway. (Daily Double. 8-1, Paid :!.\". liOl 3D Clm?:3yrs:mdns:5 f :off 2 :2!) . Dogrwood Pateh(MaRia)7.ai) o.no 4.20 I.L Abie K. t Bradley) 13. NO U.KO Peaceful T. (Donahue) H.uO T.-l:t)3. Also Doe I.ark. AlHnx. Miss Pilot. Sum Bomb. Fast Bell. Greek Action, Win Joe. Dont Btatne Babe. 4TH Clmar.: 4-up; 7 t.: off 2:58. Irish Dotty (Bradley) 4.4D 3.20 2. SO Sibling- (Allan) 9.80 6.20 Brimstone Road (Row an 6. Of) T.-l :35 . Also Stahlstown. Emerson Hill. Patti Dowd. Ou The Lawn. Sieve H.. Game Start. Set. 5TH Clma:.: 3-up: 8 t.; off 3:254. Ancient Queen (Lamonte)-4.80 3. no 2.40 Wlwndilly (Merrier) 3 20 2 .So Lady Mink (Bradley) 2.80 T-l:02. Alio Mandolas. Lady Rhody. O. K. Debbie. Jury Verdict. Swift Salonga. Mix n Match. La Calvados. 6TH Clm?: 3-4 yrs; 5 f: off 3:52. Tessie Tansor(Davern)12.60 o.BO 5.00 French Line (Myers) 4.80 5 40 Captain Bronze (Allan) 10. hi) T.-l:02 9i. Alyso Rosie Anirel. Lony-bridge Lu Lu. Star Status, Toute Ma Vie. Tompkins County. 7TH Alw.: 3-4-yos.: 5 fur. off 4:20. Lories Honey (Hole) 24.20 20 3.8\" Rndoon (Clinch) 2.40 2.40 Presta Sun (Gamb'della) 5.00 T.-l:03. Also Green Toea. Anthony Scarfo. Prince O Morn. Captain Lockitup. Caronia. 8TH Clmr.: 4-up: 1 m.: off 4:48. ratcount (Alberts) 13.HO 5 HO 4.20 Lone Peak (Rodriguez) 5.60 3 flu Kilda (Ledezma) 3.40 T-l:48Si. Also Hue or Spank. Carb-anrel, Whitey. Wild Desire. 9TH Clmg-: 41iip: 1 m: off 5:16. Oportscaster (Allan) 20.80 8.KO 7.20 Waste Of Time(Miller) 49.20 2B.20 Da.vFromDallas(G's'do) 20.40 T.-1:5H4. Also Symboleer, Dandy Randy. Sea Tread. My Buyer. Cosmic Rule. Busted Budeet. Another Take, Presented. (Twin Double 8-1 8-3 Paid $3.51 1.20) , Att, 4,744. Handle $364,968. ' r think ( ConraoLf) THEY'LL 7t1-fT EVER SvSXv. ' C COME J uAV' BE A LOHG JfeTV",
"libraryCatalog": "newspapers.com",
"pages": "60",
"place": "New York, New York",
"publicationTitle": "Daily News",
"url": "https://www.newspapers.com/article/daily-news/121098969/",
"attachments": [
{
"title": "Image",
"mimeType": "image/jpeg"
},
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Bin Liu <lieubean@gmail.com>^https?://www\.fao\.org/(publications|documents)//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2017 Bin Liu
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
// Just differentiate single and multiple.
if (url.includes('/card/')) {
let isConferencePaper = false;
let confMetaName = ['اسم الاجتماع', '会议名称', 'Meeting Name', 'Nom de la réunion', 'Название мероприятия', 'Nombre de la reunión'];
let labelArray = [];
if (url.includes('/publications/')) {
labelArray = doc.querySelectorAll('.fdr_label'); // Identify item type (book or conferencePaper) based on "fdr_label" class.
}
else if (url.includes('/documents/')) {
labelArray = doc.querySelectorAll('.fw-bold'); // Identify item type (book or conferencePaper) based on "fw-bold" class.
// Page layout for meeting documents is not functioning properly at "documents" pages (e.g. https://www.fao.org/documents/card/en/c/ND423EN/ and http://www.fao.org/documents/card/zh/c/mw246ZH/ ). Keep the code for now because it doesn't interfere with books and meeting documents are very few.
}
for (let i = 0; i < labelArray.length; i++) {
for (let j = 0; j < confMetaName.length; j++) {
isConferencePaper = labelArray[i].innerText.includes(confMetaName[j]);
if (isConferencePaper) {
break;
}
}
if (isConferencePaper) {
break;
}
}
if (isConferencePaper) {
return 'conferencePaper';
}
else {
return 'book';
}
}
/* Multiples currently don't load properly
else if (getSearchResults(doc, true)) {
return 'multiple';
}
*/
return false;
}
function cleanMetaPub(str) {
// clean meta fields obtained from page for "publications" pages
if (str.includes(';') === false) {
return str.slice(str.indexOf(':') + 2);
}
else {
let strArray = str.slice(str.indexOf(':') + 2).split(';');
return strArray;
}
}
function cleanMetaDoc(str) {
// clean meta fields obtained from page for "documents" pages
if (str.includes(';') === false) {
return str;
}
else {
let strArray = str.split(';').filter(String); // split by semicolon and remove empty elements
return strArray;
}
}
function getLang(str) {
// language: 2 or 3 letters following ISO 639
// indicated by the last 1-3 letters in PDF file name (langCode)
// One good example is the various language versions of http://www.fao.org/publications/card/en/c/I2801E
let langCode, lang = '';
let matches = str.match(/([a-z]+)\.pdf$/i);
if (matches) {
langCode = matches[1];
}
// In the new PDF naming scheme, langCode follows ISO 639.
if (langCode.length > 1) {
lang = langCode.toLowerCase();
}
// In the old PDF naming scheme, langCode is one lower/upper case letter and only differentiates between the 6 UN languages.
else if ((langCode == 'a') || (langCode == 'A')) {
lang = 'ar';
}
else if ((langCode == 'c') || (langCode == 'C')) {
lang = 'zh';
}
else if ((langCode == 'e') || (langCode == 'E')) {
lang = 'en';
}
else if ((langCode == 'f') || (langCode == 'F')) {
lang = 'fr';
}
else if ((langCode == 'r') || (langCode == 'R')) {
lang = 'ru';
}
else if ((langCode == 's') || (langCode == 'S')) {
lang = 'es';
}
else { // Other languages are usually designated 'o'. Using 'else' just to be safe.
lang = 'other';
}
return lang;
}
function scrape(doc, url) {
var newItem = new Z.Item();
var abs, existingMeta = {};
var textVariable = { // declarations for metadata names as appeared in document pages in different languages
date: ['سنة النشر', '出版年份', 'Year of publication', 'Année de publication', 'Год издания', 'Fecha de publicación'],
publisher: ['الناشر', '出版方', 'Publisher', 'Éditeur', 'Издатель', 'Editor'],
place: ['مكان النشر', '出版地点', 'Place of publication', 'Lieu de publication', 'Место публикации', 'Lugar de publicacion'],
pages: ['الصفحات', '页数', 'Pages', 'Страницы', 'Páginas'],
ISBN: ['الرقم الدولي الموحد للكتاب', 'ISBN'],
author: ['الكاتب', '作者', 'Author', 'Auteur', 'Автор', 'Autor'],
seriesTitle: ['العنوان التسلسي', '系列标题', 'Serial Title', 'Titre de la série', 'Название серии', 'Título de la serie'],
seriesNumber: ['رقم المسلسل', '系列号码', 'Series number', 'Numéro de série', 'Серийный номер', 'Número de serie'],
conference: ['اسم الاجتماع', '会议名称', 'Meeting Name', 'Nom de la réunion', 'Название мероприятия', 'Nombre de la reunión']
};
var metaText = [];
var DOIMatch, pdfUrl, mainTitle, subTitle, metaResult, conferenceWeb = '';
var DOILead = 'https://doi.org/';
if (url.includes('/card/')) {
// attach document card URL and snapshot
// TEMP: Disable at least until we have post-JS snapshots
/* newItem.attachments.push({
url: url,
title: 'FAO Document Record Snapshot',
mimeType: 'text/html',
snapshot: true
}); */
if (url.includes('/publications/')) {
//* ********* Begin fixed-location variables **********
// Some variables always appear and appear at the same location in all document pages.
// abstract
abs = doc.getElementById("mainContentN0");
// The childrens of `abs` are the label "Abstract:" in a strong-tag,
// the abstract in several p-tags or text nodes directly, and possibly
// a note about other languages which begins also with a strong-tag.
if (abs) {
let children = abs.childNodes;
let abstractFound = false;
for (let child of children) {
if (child.tagName == "STRONG" || (child.nodeType == Node.ELEMENT_NODE && text(child, 'strong'))) {
if (abstractFound) {
break; // stop when another strong tag is found
}
else {
abstractFound = true;
continue; // exclude the label "Abstract"
}
}
if (newItem.abstractNote) {
if (newItem.abstractNote.slice(-1) !== "\n") {
newItem.abstractNote += "\n\n";
}
newItem.abstractNote += child.textContent;
}
else {
newItem.abstractNote = child.textContent;
}
}
// DOI: Some docs contain DOI as a separate paragraph in abs field
if (abs.innerText.includes(DOILead)) {
DOIMatch = abs.innerText.match(/https:\/\/doi\.org\/(.+)/i);
newItem.DOI = DOIMatch[1];
}
}
// attach PDF: PDF link in innerHTML of "dynafef_det" class.
pdfUrl = attr(doc, '.dynafef_det a[href$=".pdf"]', 'href');
newItem.attachments.push({
url: pdfUrl,
title: 'Full Text PDF',
mimeType: 'application/pdf'
});
// url
newItem.url = url;
//language
newItem.language = getLang(pdfUrl);
// title: use colon to connect main title and subtitle (if subtitle exists)
mainTitle = text(doc, '#headerN0 > h1');
subTitle = text(doc, 'h4.csc-firstHeader');
if (!subTitle) {
newItem.title = mainTitle;
}
else if ((newItem.language == 'zh') || (newItem.language == 'ja')) {
newItem.title = mainTitle + ':' + subTitle;
}
else {
newItem.title = mainTitle + ': ' + subTitle;
}
//* ********* End fixed-location variables **********
//* ********* Begin dynamic-location variables **********
// Variables that appear neither in all document pages nor at same positions in the pages.
// scrape text of meta area and split into an array based on line breaks.
metaText = text(doc, '#fdr_label').split('\n');
// get what variables are listed in the page, save to object existingMeta
for (let i = 0; i < metaText.length; i++) {
for (let key in textVariable) {
for (let j = 0; j < textVariable[key].length; j++) {
if (metaText[i].includes(textVariable[key][j])) {
existingMeta[key] = metaText[i];
}
}
}
}
for (let key in existingMeta) {
metaResult = cleanMetaPub(existingMeta[key]);
// date
if (key.includes('date')) {
newItem.date = metaResult;
}
// publisher
if (key.includes('publisher')) {
newItem.publisher = metaResult;
}
// place
if (key.includes('place')) {
newItem.place = metaResult;
}
// number of pages
if (key.includes('pages')) {
newItem.numPages = metaResult.match(/\d+/)[0];
}
// ISBN
if (key.includes('ISBN')) {
newItem.ISBN = ZU.cleanISBN(metaResult, false);
}
// author(s): whether there is one or more authors; whether last and first name are separated by ',' (if not, use single-field mode).
if (key.includes('author')) {
if (Array.isArray(metaResult)) { // If there are more than 1 authors, metaResult returns an array.
for (let i = 0; i < metaResult.length; i++) {
if (metaResult[i].includes(',')) {
newItem.creators.push(ZU.cleanAuthor(metaResult[i], 'author', true));
}
else {
newItem.creators.push({
lastName: metaResult[i],
creatorType: 'author',
fieldMode: 1
});
}
}
}
else if (metaResult.includes(',')) {
newItem.creators.push(ZU.cleanAuthor(metaResult, 'author', true));
}
else {
newItem.creators.push({
lastName: metaResult,
creatorType: 'author',
fieldMode: 1
});
}
}
// tag (Agrovoc)
if (key.includes('tags')) {
for (var i = 0; i < metaResult.length; i++) {
newItem.tags[i] = metaResult[i].trim();
}
}
// seriesTitle
if (key.includes('seriesTitle')) {
newItem.series = metaResult;
}
// seriesNumber
if (key.includes('seriesNumber')) {
newItem.seriesNumber = metaResult;
}
// conferenceName: save for later conditions.
if (key.includes('conference')) {
conferenceWeb = metaResult[0];
newItem.conferenceName = conferenceWeb;
}
}
// If there's no publisher, use 'FAO' as publisher.
if (!newItem.publisher) {
newItem.publisher = 'FAO';
}
// If there's no place, use 'Rome, Italy' as place.
if (!newItem.place) {
newItem.place = 'Rome, Italy';
}
// If there's no author, use 'FAO' as author.
if (!newItem.creators.length) {
newItem.creators.push({
lastName: 'FAO',
creatorType: 'author',
fieldMode: 1
});
}
// If conference exists in document page, the itemType is 'conferencePaper'; otherwise it's 'book'.
if (conferenceWeb) {
newItem.itemType = 'conferencePaper';
}
else {
newItem.itemType = 'book';
}
//* ********* End dynamic-location variables **********
}
if (url.includes('documents')) {
//* ********* Begin fixed-location variables **********
// Some variables always appear and appear at the same location in all document pages.
// abstract
abs = doc.getElementsByClassName("_card-body-info-center")[0];
// abstractNote should be all text before the class "others-info". See example: https://www.fao.org/documents/card/en/c/ca8466en
var otherInfo = abs.querySelectorAll(".others-info")[0];
var keywords = abs.querySelectorAll(".tags-list")[0]; // "KEYWORDS:" + tags
newItem.abstractNote = (abs.innerText.replace(otherInfo.innerText, '').replace(keywords.innerText, '')).trim();
// tags: class="badge" within abs
var tags = abs.querySelectorAll(".badge");
for (let i = 0; i < tags.length; i++) {
newItem.tags[i] = tags[i].innerText.trim();
}
// attach PDF: PDF link in innerHTML of "_card-buttons-downloads" class.
pdfUrl = (doc.getElementsByClassName("_card-buttons-downloads")[0].innerHTML).match(/http\S*\.pdf/gi)[0];
newItem.attachments.push({
url: pdfUrl,
title: 'Full Text PDF',
mimeType: 'application/pdf'
});
// url
newItem.url = url;
// language: 2 or 3 letters following ISO 639
newItem.language = getLang(pdfUrl);
// title: use colon to connect main title and subtitle (if subtitle exists)
mainTitle = doc.getElementsByClassName("page-title")[0].innerText;
var subTitleElement = doc.getElementsByClassName("sub-title");
if (subTitleElement.length == '0') { // If there's no sub-title class in the web page, subTitleElement is an empty HTMLCollection with “0” (string, not number) as the length attribute.
newItem.title = mainTitle;
}
else if ((newItem.language == 'zh') || (newItem.language == 'ja')) {
newItem.title = mainTitle + ':' + subTitleElement[0].innerText;
}
else {
newItem.title = mainTitle + ': ' + subTitleElement[0].innerText;
}
//* ********* End fixed-location variables **********
//* ********* Begin dynamic-location variables **********
// Variables that appear neither in all document pages nor at same positions in the pages.
metaText = doc.getElementsByClassName("_card-body-info-left")[0].innerText;
// DOI
if (metaText.includes(DOILead)) {
DOIMatch = metaText.match(/https:\/\/doi\.org\/(.+)/i);
newItem.DOI = DOIMatch[1];
}
// scrape text of meta area and split into an array based on line breaks.
var metaTextArr = metaText.split('\n');
// get what variables are listed in the page, save to object existingMeta
for (let i = 0; i < metaTextArr.length; i++) {
for (let key in textVariable) {
for (let j = 0; j < textVariable[key].length; j++) {
if (metaTextArr[i].includes(textVariable[key][j])) {
existingMeta[key] = metaTextArr[i + 1]; // In metaTextArr, the value of a meta field always appears at the next element of the meta.
}
}
}
}
for (let key in existingMeta) {
metaResult = cleanMetaDoc(existingMeta[key]);
// date
if (key.includes('date')) {
newItem.date = metaResult;
}
// publisher
if (key.includes('publisher')) {
if (Array.isArray(metaResult)) { // differentiate between multiple (array) and single (string)
newItem.publisher = metaResult.join(', ');
}
else {
newItem.publisher = metaResult;
}
}
// place
if (key.includes('place')) { // differentiate between multiple (array) and single (string)
if (Array.isArray(metaResult)) {
newItem.publisher = metaResult.join(', ');
}
else {
newItem.publisher = metaResult;
}
}
// number of pages
if (key.includes('pages')) {
newItem.numPages = metaResult.match(/\d+/)[0];
}
// ISBN
if (key.includes('ISBN')) {
newItem.ISBN = ZU.cleanISBN(metaResult, false);
}
// author(s): whether there is one or more authors; whether last and first name are separated by ',' (if not, use single-field mode).
if (key.includes('author')) {
if (Array.isArray(metaResult)) { // If there are more than 1 authors, metaResult returns an array.
for (let i = 0; i < metaResult.length; i++) {
if (metaResult[i].includes(',')) {
newItem.creators.push(ZU.cleanAuthor(metaResult[i], 'author', true));
}
else {
newItem.creators.push({
lastName: metaResult[i],
creatorType: 'author',
fieldMode: 1
});
}
}
}
else if (metaResult.includes(',')) {
newItem.creators.push(ZU.cleanAuthor(metaResult, 'author', true));
}
else {
newItem.creators.push({
lastName: metaResult,
creatorType: 'author',
fieldMode: 1
});
}
}
// seriesTitle
if (key.includes('seriesTitle')) {
newItem.series = metaResult;
}
// seriesNumber
if (key.includes('seriesNumber')) {
newItem.seriesNumber = metaResult;
}
// conferenceName
if (key.includes('conference')) {
newItem.conferenceName = metaResult[0];
}
}
// If there's no publisher, use 'FAO' as publisher.
if (!newItem.publisher) {
newItem.publisher = 'FAO';
}
// If there's no place, use 'Rome, Italy' as place.
if (!newItem.place) {
newItem.place = 'Rome, Italy';
}
// If there's no author, use 'FAO' as author.
if (!newItem.creators.length) {
newItem.creators.push({
lastName: 'FAO',
creatorType: 'author',
fieldMode: 1
});
}
// If conference exists in document page, the itemType is 'conferencePaper'; otherwise it's 'book'.
if (newItem.conferenceName) {
newItem.itemType = 'conferencePaper';
}
else {
newItem.itemType = 'book';
}
//* ********* End dynamic-location variables **********
}
}
newItem.complete();
}
// get items from a multiple-item page
// Multiple-item searching is no longer provided.
/*function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = ZU.xpath(doc, '//*[@class="item-image"]');
for (var i = 0; i < rows.length; i++) {
var href = rows[i].href;
var title = ZU.trimInternal(rows[i].text);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}*/
function doWeb(doc, url) {
// if (detectWeb(doc, url) == "multiple") {
// Z.selectItems(getSearchResults(doc, false), function (items) {
// if (!items) {
// return;
// }
// var articles = [];
// for (var i in items) {// articles.push(i);
// }
// ZU.processDocuments(articles, scrape);
// });
// }
// else {
scrape(doc, url);
// }
}
// Note on test cases: Because the pages use dynamic elements (which is also why the translator doesn't work for multiple item pages), automatic test in Scaffold doesn't work. Every time a test is needed, use "New Web" to manually add it.
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.fao.org/documents/card/en?details=cc0461en",
"defer": true,
"items": [
{
"itemType": "book",
"title": "The State of World Fisheries and Aquaculture 2022: Towards Blue Transformation",
"creators": [
{
"lastName": "FAO",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "2022",
"ISBN": "9789251363645",
"abstractNote": "The 2022 edition of The State of World Fisheries and Aquaculture coincides with the launch of the Decade of Action to deliver the Global Goals, the United Nations Decade of Ocean Science for Sustainable Development and the United Nations Decade on Ecosystem Restoration. It presents how these and other equally important United Nations events, such as the International Year of Artisanal Fisheries and Aquaculture (IYAFA 2022), are being integrated and supported through Blue Transformation, a priority area of FAO’s new Strategic Framework 2022–2031 designed to accelerate achievement of the 2030 Agenda for Sustainable Development in food and agriculture.\n\nThe concept of Blue Transformation emerged from the Thirty-fourth Session of the FAO Committee on Fisheries in February 2021, and in particular the Declaration for Sustainable Fisheries and Aquaculture, which was negotiated and endorsed by all FAO Members. The Declaration calls for support for “an evolving and positive vision for fisheries and aquaculture in the twenty first century, where the sector is fully recognized for its contribution to fighting poverty, hunger and malnutrition.” In this context, Part 1 of this edition of The State of World Fisheries and Aquaculture reviews the world status of fisheries and aquaculture, while Parts 2 and 3 are devoted to Blue Transformation and its pillars on intensifying and expanding aquaculture, improving fisheries management and innovating fisheries and aquaculture value chains. Blue Transformation emphasizes the need for forward-looking and bold actions to be launched or accelerated in coming years to achieve the objectives of the Declaration and in support of the 2030 Agenda. Part 4 covers current and high-impact emerging issues – COVID-19, climate change and gender equality – that require thorough consideration for transformative steps and preparedness to secure sustainable, efficient and equitable fisheries and aquaculture, and finally draws some outlook on future trends based on projections.\n\nThe State of World Fisheries and Aquaculture aims to provide objective, reliable and up-to-date information to a wide audience – policymakers, managers, scientists, stakeholders and indeed everyone interested in the fisheries and aquaculture sector.",
"language": "en",
"libraryCatalog": "FAO Publications",
"numPages": "266",
"place": "Rome, Italy",
"publisher": "FAO",
"series": "The State of World Fisheries and Aquaculture (SOFIA)",
"seriesNumber": "2022",
"shortTitle": "The State of World Fisheries and Aquaculture 2022",
"url": "https://www.fao.org/documents/card/en?details=cc0461en",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "aquaculture production"
},
{
"tag": "climate change adaptation"
},
{
"tag": "fish trade"
},
{
"tag": "fishery management"
},
{
"tag": "fishery production"
},
{
"tag": "fishery resources"
},
{
"tag": "gender equality"
},
{
"tag": "sustainable fisheries"
},
{
"tag": "value chains"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.fao.org/publications/card/en?details=cc0461en",
"defer": true,
"items": [
{
"itemType": "book",
"title": "The State of World Fisheries and Aquaculture 2022: Towards Blue Transformation",
"creators": [
{
"lastName": "FAO",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "2022",
"ISBN": "9789251363645",
"abstractNote": "The 2022 edition of The State of World Fisheries and Aquaculture coincides with the launch of the Decade of Action to deliver the Global Goals, the United Nations Decade of Ocean Science for Sustainable Development and the United Nations Decade on Ecosystem Restoration. It presents how these and other equally important United Nations events, such as the International Year of Artisanal Fisheries and Aquaculture (IYAFA 2022), are being integrated and supported through Blue Transformation, a priority area of FAO’s new Strategic Framework 2022–2031 designed to accelerate achievement of the 2030 Agenda for Sustainable Development in food and agriculture. \n\nThe concept of Blue Transformation emerged from the Thirty-fourth Session of the FAO Committee on Fisheries in February 2021, and in particular the Declaration for Sustainable Fisheries and Aquaculture, which was negotiated and endorsed by all FAO Members. The Declaration calls for support for “an evolving and positive vision for fisheries and aquaculture in the twenty first century, where the sector is fully recognized for its contribution to fighting poverty, hunger and malnutrition.” In this context, Part 1 of this edition of The State of World Fisheries and Aquaculture reviews the world status of fisheries and aquaculture, while Parts 2 and 3 are devoted to Blue Transformation and its pillars on intensifying and expanding aquaculture, improving fisheries management and innovating fisheries and aquaculture value chains. Blue Transformation emphasizes the need for forward-looking and bold actions to be launched or accelerated in coming years to achieve the objectives of the Declaration and in support of the 2030 Agenda. Part 4 covers current and high-impact emerging issues – COVID-19, climate change and gender equality – that require thorough consideration for transformative steps and preparedness to secure sustainable, efficient and equitable fisheries and aquaculture, and finally draws some outlook on future trends based on projections. \n\nThe State of World Fisheries and Aquaculture aims to provide objective, reliable and up-to-date information to a wide audience – policymakers, managers, scientists, stakeholders and indeed everyone interested in the fisheries and aquaculture sector.\n\nThe following complementary information is available:\n\nRead online the full digital reportSee the interactive storyRead the In Brief\n\nHelp us improve your reading experience\n\nLast updated date 19/08/2022",
"language": "other",
"libraryCatalog": "FAO Publications",
"numPages": "266",
"place": "Rome, Italy",
"publisher": "FAO",
"series": "The State of World Fisheries and Aquaculture (SOFIA)",
"seriesNumber": "2022",
"shortTitle": "The State of World Fisheries and Aquaculture 2022",
"url": "https://www.fao.org/publications/card/en?details=cc0461en",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "aquaculture production"
},
{
"tag": "climate change adaptation"
},
{
"tag": "fish trade"
},
{
"tag": "fishery management"
},
{
"tag": "fishery production"
},
{
"tag": "fishery resources"
},
{
"tag": "gender equality"
},
{
"tag": "sustainable fisheries"
},
{
"tag": "value chains"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.fao.org/documents/card/en/c/ca8466en",
"defer": true,
"items": [
{
"itemType": "book",
"title": "Responding to the impact of the COVID-19 outbreak on food value chains through efficient logistics",
"creators": [
{
"lastName": "FAO",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "2020",
"ISBN": "9789251323717",
"abstractNote": "Measures implemented around the world to contain the COVID-19 pandemic have entailed a severe reduction not only in the transportation of goods and services that rely on transport, but also in the migration of labour domestically and internationally. Workers are less available reflecting both disruptions in transportation systems and restrictions to stop the transmission of the disease, within and across borders.\n\nThe Food and Agriculture Organization of the United Nations (FAO) urges countries to maintain functioning food value chains to avoid food shortages, following practices that are being proven to work. This note summarizes some practices that could be useful for governments and the private sector to maintain critical logistical elements in food value chain.",
"language": "en",
"libraryCatalog": "FAO Publications",
"numPages": "4",
"place": "Rome, Italy",
"publisher": "FAO",
"url": "https://www.fao.org/documents/card/en/c/ca8466en",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Coronavirus"
},
{
"tag": "agrifood sector"
},
{
"tag": "infectious diseases"
},
{
"tag": "logistics"
},
{
"tag": "value chains"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.fao.org/documents/card/en/c/ca8751en/",
"defer": true,
"items": [
{
"itemType": "book",
"title": "Blockchain application in seafood value chains",
"creators": [
{
"firstName": "F.",
"lastName": "Blaha",
"creatorType": "author"
},
{
"firstName": "K.",
"lastName": "Katafono",
"creatorType": "author"
}
],
"date": "2020",
"ISBN": "9789251324530",
"abstractNote": "Innovation through information and communication technologies is a key enabler in transforming food systems and holds great potential to achieve the Sustainable Development Goals. Recent developments, such as mobile technologies, smart networks, drones, remote-sensing, distributed computing, as well as disruptive technologies, such as blockchain, the Internet of things and artificial intelligence, are serving as the premise for a “digital revolution” whereby management of resources can potentially be highly optimized, intelligent and anticipatory. This publication establishes chain traceability as the substrate over which digital solutions need to operate. It provides a comprehensive introduction to blockchain, and covers smart contracts, explores how they relate to blockchain with an example of their use in seafood value chains, and then examines major development and operational considerations for blockchain applications. The publication also analyses the seafood supply chain with considerations on flag, coastal, port, processing and market States. It identifies general control elements (critical tracking events and corresponding key data elements) that form the basis for traceability monitoring and acquisition, and summarizes suitability for blockchain. It also investigates considerations for legality, transparency, species fraud and food safety.",
"language": "en",
"libraryCatalog": "FAO Publications",
"numPages": "56",
"place": "Rome, Italy",
"publisher": "FAO",
"series": "FAO Fisheries and Aquaculture Circular",
"seriesNumber": "No. 1207",
"url": "https://www.fao.org/documents/card/en/c/ca8751en/",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "analysis"
},
{
"tag": "blockchain technology"
},
{
"tag": "fisheries"
},
{
"tag": "food production"
},
{
"tag": "food systems"
},
{
"tag": "traceability"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.fao.org/documents/card/en/c/ca7988en/",
"defer": true,
"items": [
{
"itemType": "book",
"title": "FAO publications catalogue 2020: March",
"creators": [
{
"lastName": "FAO",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "2020",
"ISBN": "9789251322550",
"abstractNote": "This catalogue aims to improve the dissemination and outreach of FAO’s knowledge products and overall publishing programme. By providing information on its key publications in every area of FAO’s work, and catering to a range of audiences, it thereby contributes to all organizational outcomes.\n\nFrom statistical analysis to specialized manuals to children’s books, FAO publications cater to a diverse range of audiences. This catalogue presents a selection of FAO’s main publications, produced in 2020 or earlier, ranging from its global reports and general interest publications to numerous specialized titles. In addition to the major themes of agriculture, forestry and fisheries, it also includes thematic sections on climate change, economic and social development, and food safety and nutrition.",
"language": "en",
"libraryCatalog": "FAO Publications",
"numPages": "114",
"place": "Rome, Italy",
"publisher": "FAO",
"shortTitle": "FAO publications catalogue 2020",
"url": "https://www.fao.org/documents/card/en/c/ca7988en/",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "FAO"
},
{
"tag": "cataloguing"
},
{
"tag": "information dissemination"
},
{
"tag": "publications"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.fao.org/documents/card/fr/c/77dbd058-8dd4-4295-af77-23f6b28cc683/",
"defer": true,
"items": [
{
"itemType": "book",
"title": "Vivre et se nourir de la forêt en Afrique centrale",
"creators": [
{
"firstName": "O.",
"lastName": "Ndoye",
"creatorType": "author"
},
{
"firstName": "P.",
"lastName": "Vantomme",
"creatorType": "author"
}
],
"date": "2016",
"ISBN": "9789252094890",
"abstractNote": "Ce livre nous emmène au cœur des zones de forêts denses et sahéliennes de l’Afrique centrale, un écosystème précieux et essentiel à la vie quotidienne de ses habitants, représentant l’un des trois principaux ensembles boisés tropicaux de la planète. Dix pays (Burundi, Cameroun, Congo, Gabon, Guinée Equatoriale, République Centrafricaine, République Démocratique du Congo, Rwanda, Sao Tomé & Principe, Tchad) abritent ces forêts et savanes, riches d’importantes ressources naturelles. Ils ont en com mun une longue histoire liée à la colonisation, suivie d'une expérience de coopération multiforme depuis les indépendances qui évolue incontestablement vers une intégration économique et monétaire. De nos jours, alors que les équilibres séculaires entre l’homme et la nature semblent ébranlés, que la sécurité alimentaire, la lutte contre la pauvreté et la préservation de la biodiversité et des ressources forestières sont devenus des enjeux mondiaux ; à l’heure où la croissance démographique non m aîtrisée fragilise le maintien des écosystèmes forestiers tout en accentuant les conflits liés à la recherche d’espace vital, le phénomène des changements climatiques vient davantage sonder le génie créateur des populations forestières dans la préservation et la gestion durable de la forêt et des produits forestiers non ligneux (PFNL) qui en sont issus. Cette publication est l’œuvre du personnel technique de la FAO, avec la contribution des partenaires internationaux et locaux engagés dans l’évo lution des PFNL. Elle est un document précieux consacré au développement des peuples par la promotion des PFNL en Afrique centrale en vue du renforcement de la sécurité alimentaire et la lutte contre la pauvreté.\n\nVoir aussi la sommaire en version anglais",
"language": "fr",
"libraryCatalog": "FAO Publications",
"numPages": "251",
"place": "Rome, Italy",
"publisher": "FAO",
"series": "Produits Forestiers Non-Ligneux",
"seriesNumber": "No. 21",
"url": "https://www.fao.org/documents/card/fr/c/77dbd058-8dd4-4295-af77-23f6b28cc683/",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Afrique centrale"
},
{
"tag": "Commerce international"
},
{
"tag": "Communauté rurale"
},
{
"tag": "Connaissance indigène"
},
{
"tag": "Nouvelle technologie"
},
{
"tag": "Petite entreprise"
},
{
"tag": "Politique forestière"
},
{
"tag": "Produit forestier non ligneux"
},
{
"tag": "Ressource forestière"
},
{
"tag": "Sécurité alimentaire"
},
{
"tag": "Valeur économique"
},
{
"tag": "sustainable forest management"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.fao.org/publications/card/zh/c/mw246ZH/",
"defer": true,
"items": [
{
"itemType": "conferencePaper",
"title": "亚太区域可持续粮食系统 促进健康膳食和营养改善专题讨论会成果报告",
"creators": [
{
"firstName": "X.",
"lastName": "Yao",
"creatorType": "author"
}
],
"date": "2018",
"abstractNote": "联合国粮食及农业组织(粮农组织)亚洲及太平洋区域办事处(亚太区域办),与世界卫生组织(世卫组织)、世界粮食计划署(粮食署)、联合国儿童基金会(儿基会)以及世界银行南亚粮食和营养安全举措(世行南亚举措)合作,组织了“亚太区域可持续粮食系统促进健康膳食和营养改善专题讨论会”。讨论会的组织是对2016年12月在罗马粮农组织总部就同一主题召开的粮农组织/世卫组织国际研讨会采取的一项区域后续行动。会议目的是就具有促成积极营养成果潜力的农业和粮食系统政策及行动交流经验和证据。\n\n讨论会呼吁所有利益相关方在相关政策框架中说明的全球、区域、国家行动中形成合力,其中包括可持续发展目标、第二届国际营养大会行动框架、联合国营养问题行动十年,以及相关的国家多部门行动计划和非传染性疾病工作计划。讨论会还呼吁联合国机构联合采取具体行动,支持各国实现其粮食安全和营养议程。\n\n本情况说明对审议结果做了总结。",
"conferenceName": "FAO Regional Conference for Asia and the Pacific (APRC)",
"language": "zh",
"libraryCatalog": "FAO Publications",
"place": "Rome, Italy",
"publisher": "FAO",
"url": "https://www.fao.org/publications/card/zh/c/mw246ZH/",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "meetings"
},
{
"tag": "traditional foods"
},
{
"tag": "亚太"
},
{
"tag": "人体营养"
},
{
"tag": "粮食供给"
},
{
"tag": "联合国粮农组织"
},
{
"tag": "营养不良"
},
{
"tag": "营养政策"
},
{
"tag": "营养教育"
},
{
"tag": "营养状况调查"
},
{
"tag": "营养监督"
},
{
"tag": "进食"
},
{
"tag": "食品供应链"
},
{
"tag": "食品工业"
},
{
"tag": "食物政策"
},
{
"tag": "食物的获得"
},
{
"tag": "食物链"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.fao.org/documents/card/ar/c/c6c2c8d7-3683-53a7-ab58-ce480c65f36c/",
"defer": true,
"items": [
{
"itemType": "book",
"title": "الخطوط التوجيهية الطوعية بشأن الحوكمة المسؤولة لحيازة الأراضي ومصايد الأسماك والغابات في سياق الأمن الغذائي الوطني",
"creators": [
{
"lastName": "FAO",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "2012",
"ISBN": "9789256072771",
"abstractNote": "هذه الخطوط التوجيهية هي أول صكّ عالمي شامل خاص بالحيازات وإدارتها يُعدّ من خلال مفاوضات حكومية دولية. وتضع هذه الخطوط التوجيهية مبادئ ومعايير مقبولة دولياً للممارسات المسؤولة لاستخدام الأراضي ومصايد الأسماك والغابات وللتحكّم بها. وهي تعطي توجيهات لتحسين الأطر القانونية والتنظيمية والمتصلة بالسياسات التي تنظّم حقوق الحيازة ولزيادة شفافية نظم الحيازة وإدارتها ولتعزيز القدرات والإجراءات التي تتخذها الأجهزة العامة ومؤسسات القطاع الخاص ومنظمات المجتمع المدني وجميع المعنيين بالحيازات وإد ارتها. وتُدرج هذه الخطوط التوجيهية إدارة الحيازات ضمن السياق الوطني للأمن الغذائي وهي تسعى إلى المساهمة في الإعمال المطرد للحق في غذاء كافٍ والقضاء على الفقر وحماية البيئة وتحقيق التنمية الاجتماعية والاقتصادية المستدامة.",
"language": "ar",
"libraryCatalog": "FAO Publications",
"numPages": "40",
"place": "Rome, Italy",
"publisher": "FAO",
"url": "https://www.fao.org/documents/card/ar/c/c6c2c8d7-3683-53a7-ab58-ce480c65f36c/",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "guidelines"
},
{
"tag": "أمن غذائي"
},
{
"tag": "إقتصاديات الغابة"
},
{
"tag": "اقتصاد الصيد"
},
{
"tag": "الحكم"
},
{
"tag": "النوع الاجتماعي"
},
{
"tag": "حيازة الأراضي"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.fao.org/documents/card/en/c/5014f143-be17-4b58-b90e-f1c6bef344a0/",
"defer": true,
"items": [
{
"itemType": "book",
"title": "Climate-Smart Agriculture: A Call for Action: Synthesis of the Asia-Pacific Regional Workshop Bangkok, Thailand, 18 to 20 June 2015",
"creators": [
{
"lastName": "FAO",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "2015",
"ISBN": "9789251088630",
"abstractNote": "This publication is a summary of the workshop held in Bangkok, Thailand from 18 to 20 June 2015 to promote the mainstreaming and up-scaling of Climate-Smart Agriculture in the region. Included in the report are successful case studies that agriculturists have been practicing as a means to address food security under adverse circumstances.",
"language": "en",
"libraryCatalog": "FAO Publications",
"numPages": "106",
"place": "Rome, Italy",
"publisher": "FAO Regional Office for Asia and the Pacific",
"series": "RAP Publication",
"shortTitle": "Climate-Smart Agriculture",
"url": "https://www.fao.org/documents/card/en/c/5014f143-be17-4b58-b90e-f1c6bef344a0/",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "climate-smart agriculture"
},
{
"tag": "forestry"
},
{
"tag": "market gardens"
},
{
"tag": "meetings"
},
{
"tag": "sustainable agriculture"
},
{
"tag": "sustainable development"
},
{
"tag": "urban farmers"
},
{
"tag": "water harvesting"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Philipp Zumstien and Abe Jellinek^https?://www\.imdb\.com//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Philipp Zumstein and Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/title/tt') && doc.querySelector('script[type="application/ld+json"]')) {
let json = JSON.parse(text(doc, 'script[type="application/ld+json"]'));
if (json['@type'] == 'TVEpisode') {
return 'tvBroadcast';
}
else {
return "film";
}
}
else if (url.includes('/find?') && getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = ZU.xpath(doc, '//td[contains(@class, "result_text")]');
for (let i = 0; i < rows.length; i++) {
var href = ZU.xpathText(rows[i], './a/@href');
var title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) {
return;
}
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, _url) {
let json = JSON.parse(text(doc, 'script[type="application/ld+json"]'));
var item = new Zotero.Item(
json['@type'] == 'TVEpisode'
? 'tvBroadcast'
: 'film');
let title = json.name;
if (title.includes("'")) {
title = title.replace("'", "'");
}
item.title = title; // note that json only has the original title
var transTitle = ZU.trimInternal(ZU.xpathText(doc, "//h1//text()"));
if (transTitle && transTitle !== item.title) addExtra(item, "Translated title: " + transTitle);
item.programTitle = doc.title.match(/(?:"([^"]+)")?/)[1];
let episodeNumberParts = doc.querySelectorAll('[class*="EpisodeNavigationForTVEpisode__SeasonEpisodeNumbersItem"]');
item.episodeNumber = [...episodeNumberParts].map(el => el.textContent.trim()).join(' ');
item.date = json.datePublished;
item.runningTime = "duration" in json ? json.duration.replace("PT", "").toLowerCase() : "";
item.genre = Array.isArray(json.genre) ? json.genre.join(", ") : json.genre;
item.abstractNote = json.description;
var creatorsMapping = {
director: "director",
creator: "scriptwriter",
actor: ZU.fieldIsValidForType("castMember", item.itemType)
? "castMember"
: "contributor"
};
for (var role in creatorsMapping) {
if (!json[role]) continue;
var creators = json[role];
if (!Array.isArray(creators)) {
item.creators.push(ZU.cleanAuthor(creators.name, creatorsMapping[role]));
}
else {
for (var i = 0; i < creators.length; i++) {
if (creators[i]["@type"] == "Person") item.creators.push(ZU.cleanAuthor(creators[i].name, creatorsMapping[role]));
}
}
}
let companyNodes = doc.querySelectorAll('a[href*="/company/"]');
let companies = [];
for (let company of companyNodes) {
companies.push(company.textContent);
}
item.distributor = companies.join(', ');
var pageId = attr(doc, 'meta[property="imdb:pageConst"]', 'content');
if (pageId) {
addExtra(item, "IMDb ID: " + pageId);
}
let locationLinks = doc.querySelectorAll('a[href*="title/?country_of_origin"]');
addExtra(item, "event-location: "
+ [...locationLinks].map(a => a.innerText).join(', '));
item.tags = "keywords" in json ? json.keywords.split(",") : [];
item.complete();
}
function addExtra(item, value) {
if (!item.extra) {
item.extra = '';
}
else {
item.extra += "\n";
}
item.extra += value;
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.imdb.com/title/tt0089276/",
"items": [
{
"itemType": "film",
"title": "La historia oficial",
"creators": [
{
"firstName": "Luis",
"lastName": "Puenzo",
"creatorType": "director"
},
{
"firstName": "Aída",
"lastName": "Bortnik",
"creatorType": "scriptwriter"
},
{
"firstName": "Luis",
"lastName": "Puenzo",
"creatorType": "scriptwriter"
},
{
"firstName": "Norma",
"lastName": "Aleandro",
"creatorType": "contributor"
},
{
"firstName": "Héctor",
"lastName": "Alterio",
"creatorType": "contributor"
},
{
"firstName": "Chunchuna",
"lastName": "Villafañe",
"creatorType": "contributor"
}
],
"date": "1985-11-08",
"abstractNote": "During the final months of Argentinian Military Dictatorship in 1983, a high school teacher sets out to find out who the mother of her adopted daughter is.",
"distributor": "Historias Cinematograficas, Progress Communications",
"extra": "Translated title: The Official Story\nIMDb ID: tt0089276\nevent-location: Argentina",
"genre": "Drama, History",
"libraryCatalog": "IMDb",
"runningTime": "1h52m",
"attachments": [],
"tags": [
{
"tag": "bigotry"
},
{
"tag": "military"
},
{
"tag": "military junta"
},
{
"tag": "teacher"
},
{
"tag": "torture victim"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.imdb.com/find?q=shakespeare&s=tt",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.imdb.com/title/tt0060613/",
"items": [
{
"itemType": "film",
"title": "Käpy selän alla",
"creators": [
{
"firstName": "Mikko",
"lastName": "Niskanen",
"creatorType": "director"
},
{
"firstName": "Robert",
"lastName": "Alfthan",
"creatorType": "scriptwriter"
},
{
"firstName": "Marja-Leena",
"lastName": "Mikkola",
"creatorType": "scriptwriter"
},
{
"firstName": "Eero",
"lastName": "Melasniemi",
"creatorType": "contributor"
},
{
"firstName": "Kristiina",
"lastName": "Halkola",
"creatorType": "contributor"
},
{
"firstName": "Pekka",
"lastName": "Autiovuori",
"creatorType": "contributor"
}
],
"date": "1966-10-21",
"abstractNote": "Two student couples go camping in the Finnish countryside; partner swapping and interpersonal dynamics - with a touch of their philosophy - between them all arise.",
"distributor": "FJ-Filmi",
"extra": "IMDb ID: tt0060613\nevent-location: Finland",
"genre": "Drama",
"libraryCatalog": "IMDb",
"runningTime": "1h29m",
"attachments": [],
"tags": [
{
"tag": "countryside"
},
{
"tag": "dance"
},
{
"tag": "female topless nudity"
},
{
"tag": "film star"
},
{
"tag": "snakebite"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.imdb.com/title/tt6142646/",
"items": [
{
"itemType": "tvBroadcast",
"title": "Islands",
"creators": [
{
"firstName": "Elizabeth",
"lastName": "White",
"creatorType": "director"
},
{
"firstName": "David",
"lastName": "Attenborough",
"creatorType": "contributor"
},
{
"firstName": "Pete",
"lastName": "McCowen",
"creatorType": "contributor"
},
{
"firstName": "Jerome",
"lastName": "Poncet",
"creatorType": "contributor"
}
],
"date": "2017-02-18",
"abstractNote": "Wildlife documentary series with David Attenborough, beginning with a look at the remote islands which offer sanctuary to some of the planet's rarest creatures.",
"extra": "IMDb ID: tt6142646\nevent-location: United Kingdom",
"libraryCatalog": "IMDb",
"programTitle": "Planet Earth II",
"runningTime": "51m",
"attachments": [],
"tags": [
{
"tag": "documentary episode"
},
{
"tag": "earth"
},
{
"tag": "impossible"
},
{
"tag": "impressed"
},
{
"tag": "planet"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.imdb.com/title/tt9060452/?ref_=ttep_ep7",
"items": [
{
"itemType": "tvBroadcast",
"title": "That's a Wrap",
"creators": [
{
"firstName": "Alex",
"lastName": "Hall",
"creatorType": "director"
},
{
"firstName": "George",
"lastName": "Pelecanos",
"creatorType": "scriptwriter"
},
{
"firstName": "David",
"lastName": "Simon",
"creatorType": "scriptwriter"
},
{
"firstName": "Will",
"lastName": "Ralston",
"creatorType": "scriptwriter"
},
{
"firstName": "James",
"lastName": "Franco",
"creatorType": "contributor"
},
{
"firstName": "Maggie",
"lastName": "Gyllenhaal",
"creatorType": "contributor"
},
{
"firstName": "Chris",
"lastName": "Bauer",
"creatorType": "contributor"
}
],
"date": "2019-10-21",
"abstractNote": "A struggling Lori turns to Candy for help before revisiting The Deuce; Candy makes a deal to secure funding for her film; Abby takes a stand against the latest phase of Midtown redevelopment; Tommy explains the new world order to ...",
"extra": "IMDb ID: tt9060452\nevent-location: United States",
"libraryCatalog": "IMDb",
"programTitle": "The Deuce",
"runningTime": "1h5m",
"attachments": [],
"tags": [
{
"tag": "greyhound bus"
},
{
"tag": "minneapolis saint paul minnesota"
},
{
"tag": "redevelopment"
},
{
"tag": "twin cities minnesota"
},
{
"tag": "yellow cab"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.imdb.com/title/tt0759475/?ref_=fn_al_tt_5",
"items": [
{
"itemType": "film",
"title": "'Til Death",
"creators": [
{
"firstName": "Josh",
"lastName": "Goldsmith",
"creatorType": "scriptwriter"
},
{
"firstName": "Cathy",
"lastName": "Yuspa",
"creatorType": "scriptwriter"
},
{
"firstName": "Brad",
"lastName": "Garrett",
"creatorType": "contributor"
},
{
"firstName": "Joely",
"lastName": "Fisher",
"creatorType": "contributor"
},
{
"firstName": "Kat",
"lastName": "Foster",
"creatorType": "contributor"
}
],
"date": "2006-09-07",
"abstractNote": "A pair of newlyweds move in next door to a veteran married couple of 25 years.",
"distributor": "Impact Zone Productions, Sony Pictures Television",
"extra": "IMDb ID: tt0759475\nevent-location: United States",
"genre": "Comedy, Romance",
"libraryCatalog": "IMDb",
"attachments": [],
"tags": [
{
"tag": "big breasts"
},
{
"tag": "breast"
},
{
"tag": "brother brother relationship"
},
{
"tag": "columbia tristar"
},
{
"tag": "death in title"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.imdb.com/title/tt0759475/?ref_=fn_al_tt_5",
"items": [
{
"itemType": "film",
"title": "'Til Death",
"creators": [
{
"firstName": "Josh",
"lastName": "Goldsmith",
"creatorType": "scriptwriter"
},
{
"firstName": "Cathy",
"lastName": "Yuspa",
"creatorType": "scriptwriter"
},
{
"firstName": "Brad",
"lastName": "Garrett",
"creatorType": "contributor"
},
{
"firstName": "Joely",
"lastName": "Fisher",
"creatorType": "contributor"
},
{
"firstName": "Kat",
"lastName": "Foster",
"creatorType": "contributor"
}
],
"date": "2006-09-07",
"abstractNote": "A pair of newlyweds move in next door to a veteran married couple of 25 years.",
"distributor": "Impact Zone Productions, Sony Pictures Television",
"extra": "IMDb ID: tt0759475\nevent-location: United States",
"genre": "Comedy, Romance",
"libraryCatalog": "IMDb",
"attachments": [],
"tags": [
{
"tag": "big breasts"
},
{
"tag": "breast"
},
{
"tag": "brother brother relationship"
},
{
"tag": "columbia tristar"
},
{
"tag": "death in title"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.imdb.com/title/tt19402762/?ref_=tt_eps_top",
"items": [
{
"itemType": "tvBroadcast",
"title": "Seventeen Seconds",
"creators": [
{
"firstName": "Jonathan",
"lastName": "Frakes",
"creatorType": "director"
},
{
"firstName": "Jane",
"lastName": "Maggs",
"creatorType": "scriptwriter"
},
{
"firstName": "Cindy",
"lastName": "Appel",
"creatorType": "scriptwriter"
},
{
"firstName": "Akiva",
"lastName": "Goldsman",
"creatorType": "scriptwriter"
},
{
"firstName": "Patrick",
"lastName": "Stewart",
"creatorType": "contributor"
},
{
"firstName": "Jeri",
"lastName": "Ryan",
"creatorType": "contributor"
},
{
"firstName": "Michelle",
"lastName": "Hurd",
"creatorType": "contributor"
}
],
"date": "2023-03-02",
"abstractNote": "Picard grapples with a life-altering revelation as the crew of the Titan attempt to outmaneuver Vadic, while Raffi and Worf uncover a plot by a vengeful enemy.",
"extra": "IMDb ID: tt19402762\nevent-location:",
"libraryCatalog": "IMDb",
"programTitle": "Star Trek: Picard",
"runningTime": "56m",
"attachments": [],
"tags": [
{
"tag": "bar"
},
{
"tag": "female medical doctor"
},
{
"tag": "human in outer space"
},
{
"tag": "nebula"
},
{
"tag": "starship"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Sebastian Karcher and Abe Jellinek^https?://www\.ft\.com/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/content/')) {
return "newspaperArticle";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('a.js-teaser-heading-link');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(_doc, url) {
// amp.ft.com/<path> now redirects to www.ft.com/<path>, and there appears
// to be no other way to get AMP versions of Financial Times articles,
// but we'll keep the current code structure for now, just in case.
ZU.processDocuments(url.replace('www.ft.com/', 'amp.ft.com/'), scrapeAmp);
}
function scrapeAmp(doc, url) {
let item = new Zotero.Item('newspaperArticle');
let meta = [...doc.querySelectorAll('script[type="application/ld+json"]')]
.map(elem => JSON.parse(elem.textContent))
.find(json => json['@type'] != 'WebSite'
&& json['@type'] != 'BreadcrumbList');
if (!meta) {
throw new Error("No article metadata (probably hit paywall)");
}
item.title = meta.headline;
item.date = ZU.strToISO(meta.datePublished);
item.abstractNote = meta.description
|| text('.article-standfirst');
item.creators = meta.author
.map(obj => ZU.cleanAuthor(obj.name, 'author', false));
item.publicationTitle = 'Financial Times';
item.section = text('a[data-trackable="primary-brand"]')
|| text('a[data-trackable="primary-theme"]');
item.url = attr('link[rel="canonical"]', 'href');
item.libraryCatalog = '';
item.attachments.push({
title: "Snapshot",
url: item.url,
mimeType: 'text/html',
snapshot: true
});
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.ft.com/content/e57c04ba-c88a-4694-86b8-373c6393bf88",
"items": [
{
"itemType": "newspaperArticle",
"title": "Vonovia and Deutsche Wohnen to combine in €18bn real estate deal",
"creators": [
{
"firstName": "Olaf",
"lastName": "Storbeck",
"creatorType": "author"
},
{
"firstName": "Erika",
"lastName": "Solomon",
"creatorType": "author"
}
],
"date": "2021-05-25",
"abstractNote": "Group will own more than 500,000 flats in Germany as well as property in Sweden and Austria",
"publicationTitle": "Financial Times",
"url": "https://www.ft.com/content/e57c04ba-c88a-4694-86b8-373c6393bf88",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html",
"snapshot": true
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.ft.com/content/08b9f78f-9436-3d59-8c4a-05b67cc3b706",
"items": [
{
"itemType": "newspaperArticle",
"title": "Coinbase wants to be “too big to fail”, lol",
"creators": [
{
"firstName": "Jemima",
"lastName": "Kelly",
"creatorType": "author"
}
],
"date": "2018-10-03",
"publicationTitle": "Financial Times",
"url": "https://www.ft.com/content/08b9f78f-9436-3d59-8c4a-05b67cc3b706",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html",
"snapshot": true
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.ft.com/search?q=apple",
"items": "multiple"
}
]
/** END TEST CASES **/
100Guy Aglionby^https://dl\.acm\.org/(doi|do|profile|toc|topic|keyword|action/doSearch|acmbooks|browse)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2019 Guy Aglionby
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (isContentUrl(url)) {
let subtypeMatch = getItemSubtype(doc);
if (!subtypeMatch) {
return 'journalArticle';
}
let subtype = subtypeMatch[1].toLowerCase();
if (subtype == 'conference') {
return 'conferencePaper';
}
else if (subtype == 'journal' || subtype == 'periodical' || subtype == 'magazine' || subtype == 'newsletter') {
return 'journalArticle';
}
else if (subtype == 'report' || subtype == 'rfc') {
return 'report';
}
else if (subtype == 'thesis') {
return 'thesis';
}
else if (subtype == 'software') {
return 'computerProgram';
}
else if (subtype == 'dataset') {
return 'document';
}
else if (subtype == 'book') {
let bookTypeRegex = /page:string:([\w ]+)/;
let extractedContext = attr(doc, 'meta[name=pbContext]', 'content');
let bookType = extractedContext.match(bookTypeRegex);
if (bookType && bookType[1].toLowerCase() == 'book page') {
return 'book';
}
else {
return 'bookSection';
}
}
return 'journalArticle';
}
else if (getSearchResults(doc, false)) {
return 'multiple';
}
return false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == 'multiple') {
Zotero.selectItems(getSearchResults(doc), function (selected) {
if (selected) {
ZU.processDocuments(Object.keys(selected), scrape);
}
});
}
else {
scrape(doc);
}
}
function getItemSubtype(doc) {
let extractedContext = attr(doc, 'meta[name=pbContext]', 'content');
let subtypeRegex = /csubtype:string:(\w+)/;
return extractedContext.match(subtypeRegex);
}
function isContentUrl(url) {
return (url.includes('/doi/') || url.includes('/do/')) && !url.includes('/doi/proceedings');
}
function getSearchResults(doc, checkOnly) {
let items = {};
let found = false;
let results = doc.querySelectorAll('h5.issue-item__title a');
for (let i = 0; i < results.length; i++) {
let url = results[i].href;
let title = ZU.trimInternal(results[i].textContent);
if (!title || !url) {
continue;
}
if (!isContentUrl(url)) {
continue;
}
if (checkOnly) {
return true;
}
found = true;
items[url] = title;
}
return found ? items : false;
}
function scrape(doc) {
let doi = attr(doc, 'input[name=doiVal]', 'value');
let lookupEndpoint = 'https://dl.acm.org/action/exportCiteProcCitation';
let postBody = 'targetFile=custom-bibtex&format=bibTex&dois=' + encodeURIComponent(doi);
ZU.doPost(lookupEndpoint, postBody, function (returnedText) {
let json = JSON.parse(returnedText);
let cslItem = json.items[0][doi];
cslItem.type = cslItem.type.toLowerCase().replace('_', '-');
// Some pages use ARTICLE rather than ARTICLE_JOURNAL
// https://github.com/zotero/translators/issues/2162
if (cslItem.type == 'article') {
cslItem.type = 'article-journal';
}
else if (cslItem.type == 'thesis') {
// The advisor is indicated as an editor in CSL which
// ZU.itemFromCSLJSON incorrectly extracts as an author.
delete cslItem.editor;
// The (co-)chair(s) or supervisor(s) are included in CSL as additional authors.
cslItem.author.splice(1);
}
if (cslItem.source && (cslItem.source.includes('19') || cslItem.source.includes('20'))) {
// Issue date sometimes goes in source (libraryCatalog)
delete cslItem.source;
}
let item = new Zotero.Item();
ZU.itemFromCSLJSON(item, cslItem);
item.title = ZU.unescapeHTML(item.title);
let abstractElements = doc.querySelectorAll('div.article__abstract p, div.abstractSection p');
let abstract = Array.from(abstractElements).map(x => x.textContent).join('\n\n');
if (abstract.length && abstract.toLowerCase() != 'no abstract available.') {
item.abstractNote = ZU.trimInternal(abstract);
}
let pdfElement = doc.querySelector('a[title=PDF]');
if (pdfElement) {
item.attachments.push({
url: pdfElement.href,
title: 'Full Text PDF',
mimeType: 'application/pdf'
});
if (item.DOI) {
item.url = 'https://dl.acm.org/doi/' + ZU.cleanDOI(item.DOI);
}
}
if (item.itemType == 'journalArticle') {
// Publication name in the CSL is shortened; scrape from page to get full title.
let expandedTitle = text(doc, 'span.epub-section__title');
if (expandedTitle) {
item.journalAbbreviation = item.publicationTitle;
item.publicationTitle = expandedTitle;
}
// Article number 46 --> pages = 46:1–46:22
if (cslItem.number) {
let number = cslItem.number.replace("Article", "").trim();
if (item.pages) {
item.pages = item.pages.split("–").map(x => number + ":" + x).join("–");
}
else {
item.pages = number;
}
}
}
if (!item.creators.length) {
// There are cases where authors are not included in the CSL
// (for example, a chapter of a book) so we must scrape them.
// e.g. https://dl.acm.org/doi/abs/10.5555/3336323.C5474411
let authorElements = doc.querySelectorAll('div.citation span.loa__author-name');
authorElements.forEach(function (element) {
item.creators.push(ZU.cleanAuthor(element.textContent, 'author'));
});
}
if (!item.ISBN && cslItem.ISBN) {
let isbnLength = cslItem.ISBN.replace('-', '').length;
let isbnText = 'ISBN-' + isbnLength + ': ' + cslItem.ISBN;
item.extra = item.extra ? item.extra + '\n' + isbnText : isbnText;
}
let numPages = text(doc, 'div.pages-info span');
if (numPages && !item.numPages) {
item.numPages = numPages;
}
let tagElements = doc.querySelectorAll('div.tags-widget a');
tagElements.forEach(function (tag) {
item.tags.push(tag.textContent);
});
if (getItemSubtype(doc) == 'dataset') {
item.extra = item.extra ? item.extra + '\nitemType: data' : 'itemType: data';
}
delete item.callNumber;
item.complete();
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://dl.acm.org/doi/abs/10.1145/1596655.1596682",
"detectedItemType": "conferencePaper",
"items": [
{
"itemType": "conferencePaper",
"title": "Tracking performance across software revisions",
"creators": [
{
"lastName": "Mostafa",
"firstName": "Nagy",
"creatorTypeID": 8,
"creatorType": "author"
},
{
"lastName": "Krintz",
"firstName": "Chandra",
"creatorTypeID": 8,
"creatorType": "author"
}
],
"date": "August 27, 2009",
"DOI": "10.1145/1596655.1596682",
"ISBN": "9781605585987",
"abstractNote": "Repository-based revision control systems such as CVS, RCS, Subversion, and GIT, are extremely useful tools that enable software developers to concurrently modify source code, manage conflicting changes, and commit updates as new revisions. Such systems facilitate collaboration with and concurrent contribution to shared source code by large developer bases. In this work, we investigate a framework for \"performance-aware\" repository and revision control for Java programs. Our system automatically tracks behavioral differences across revisions to provide developers with feedback as to how their change impacts performance of the application. It does so as part of the repository commit process by profiling the performance of the program or component, and performing automatic analyses that identify differences in the dynamic behavior or performance between two code revisions. In this paper, we present our system that is based upon and extends prior work on calling context tree (CCT) profiling and performance differencing. Our framework couples the use of precise CCT information annotated with performance metrics and call-site information, with a simple tree comparison technique and novel heuristics that together target the cause of performance differences between code revisions without knowledge of program semantics. We evaluate the efficacy of the framework using a number of open source Java applications and present a case study in which we use the framework to distinguish two revisions of the popular FindBugs application.",
"itemID": "10.1145/1596655.1596682",
"libraryCatalog": "ACM Digital Library",
"pages": "162–171",
"place": "New York, NY, USA",
"proceedingsTitle": "Proceedings of the 7th International Conference on Principles and Practice of Programming in Java",
"publisher": "Association for Computing Machinery",
"series": "PPPJ '09",
"url": "https://dl.acm.org/doi/10.1145/1596655.1596682",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "calling context tree"
},
{
"tag": "performance-aware revision control"
},
{
"tag": "profiling"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://dl.acm.org/doi/10.5555/1717186",
"detectedItemType": "book",
"items": [
{
"itemType": "book",
"title": "Version Control with Git: Powerful Tools and Techniques for Collaborative Software Development",
"creators": [
{
"lastName": "Loeliger",
"firstName": "Jon",
"creatorTypeID": 8,
"creatorType": "author"
}
],
"date": "2009",
"ISBN": "9780596520120",
"abstractNote": "Version Control with Git takes you step-by-step through ways to track, merge, and manage software projects, using this highly flexible, open source version control system. Git permits virtually an infinite variety of methods for development and collaboration. Created by Linus Torvalds to manage development of the Linux kernel, it's become the principal tool for distributed version control. But Git's flexibility also means that some users don't understand how to use it to their best advantage. Version Control with Git offers tutorials on the most effective ways to use it, as well as friendly yet rigorous advice to help you navigate Git's many functions. With this book, you will: Learn how to use Git in several real-world development environments Gain insight into Git's common-use cases, initial tasks, and basic functions Understand how to use Git for both centralized and distributed version control Use Git to manage patches, diffs, merges, and conflicts Acquire advanced techniques such as rebasing, hooks, and ways to handle submodules (subprojects) Learn how to use Git with Subversion Git has earned the respect of developers around the world. Find out how you can benefit from this amazing tool with Version Control with Git.",
"edition": "1st",
"itemID": "10.5555/1717186",
"libraryCatalog": "ACM Digital Library",
"numPages": "336",
"publisher": "O'Reilly Media, Inc.",
"shortTitle": "Version Control with Git",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://dl.acm.org/doi/abs/10.1023/A:1008286901817",
"detectedItemType": "journalArticle",
"items": [
{
"itemType": "journalArticle",
"title": "Simulation Techniques for the Manufacturing Test of MCMs",
"creators": [
{
"lastName": "Tegethoff",
"firstName": "Mick",
"creatorTypeID": 8,
"creatorType": "author"
},
{
"lastName": "Chen",
"firstName": "Tom",
"creatorTypeID": 8,
"creatorType": "author"
}
],
"date": "February 1, 1997",
"DOI": "10.1023/A:1008286901817",
"ISSN": "0923-8174",
"abstractNote": "Simulation techniques used in the Manufacturing Test SIMulator (MTSIM) are described. MTSIM is a Concurrent Engineering tool used to simulate the manufacturing test and repair aspects of boards and MCMs from design concept through manufacturing release. MTSIM helps designers select assembly process, specify Design For Test (DFT) features, select board test coverage, specify ASIC defect level goals, establish product feasibility, and predict manufacturing quality and cost goals. A new yield model for boards and MCMs which accounts for the clustering of solder defects is introduced and used to predict the yield at each test step. In addition, MTSIM estimates the average number of defects per board detected at each test step, and estimates costs incurred in test execution, fault isolation and repair. MTSIM models were validated with high performance assemblies at Hewlett-Packard (HP).",
"issue": "1-2",
"itemID": "10.1023/A:1008286901817",
"journalAbbreviation": "J. Electron. Test.",
"libraryCatalog": "ACM Digital Library",
"pages": "137–149",
"publicationTitle": "Journal of Electronic Testing: Theory and Applications",
"url": "https://doi.org/10.1023/A:1008286901817",
"volume": "10",
"attachments": [],
"tags": [
{
"tag": "DFM"
},
{
"tag": "DFT"
},
{
"tag": "MCM"
},
{
"tag": "SMT"
},
{
"tag": "board"
},
{
"tag": "simulation"
},
{
"tag": "test"
},
{
"tag": "yield"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://dl.acm.org/doi/abs/10.1145/258948.258973",
"detectedItemType": "conferencePaper",
"items": [
{
"itemType": "conferencePaper",
"title": "Functional reactive animation",
"creators": [
{
"lastName": "Elliott",
"firstName": "Conal",
"creatorTypeID": 8,
"creatorType": "author"
},
{
"lastName": "Hudak",
"firstName": "Paul",
"creatorTypeID": 8,
"creatorType": "author"
}
],
"date": "August 1, 1997",
"DOI": "10.1145/258948.258973",
"ISBN": "9780897919180",
"abstractNote": "Fran (Functional Reactive Animation) is a collection of data types and functions for composing richly interactive, multimedia animations. The key ideas in Fran are its notions of behaviors and events. Behaviors are time-varying, reactive values, while events are sets of arbitrarily complex conditions, carrying possibly rich information. Most traditional values can be treated as behaviors, and when images are thus treated, they become animations. Although these notions are captured as data types rather than a programming language, we provide them with a denotational semantics, including a proper treatment of real time, to guide reasoning and implementation. A method to effectively and efficiently perform event detection using interval analysis is also described, which relies on the partial information structure on the domain of event times. Fran has been implemented in Hugs, yielding surprisingly good performance for an interpreter-based system. Several examples are given, including the ability to describe physical phenomena involving gravity, springs, velocity, acceleration, etc. using ordinary differential equations.",
"itemID": "10.1145/258948.258973",
"libraryCatalog": "ACM Digital Library",
"pages": "263–273",
"place": "New York, NY, USA",
"proceedingsTitle": "Proceedings of the second ACM SIGPLAN international conference on Functional programming",
"publisher": "Association for Computing Machinery",
"series": "ICFP '97",
"url": "https://dl.acm.org/doi/10.1145/258948.258973",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://dl.acm.org/doi/abs/10.1145/2566617",
"detectedItemType": "journalArticle",
"items": [
{
"itemType": "journalArticle",
"title": "Check-ins in “Blau Space”: Applying Blau’s Macrosociological Theory to Foursquare Check-ins from New York City",
"creators": [
{
"lastName": "Joseph",
"firstName": "Kenneth",
"creatorTypeID": 8,
"creatorType": "author"
},
{
"lastName": "Carley",
"firstName": "Kathleen M.",
"creatorTypeID": 8,
"creatorType": "author"
},
{
"lastName": "Hong",
"firstName": "Jason I.",
"creatorTypeID": 8,
"creatorType": "author"
}
],
"date": "September 18, 2014",
"DOI": "10.1145/2566617",
"ISSN": "2157-6904",
"abstractNote": "Peter Blau was one of the first to define a latent social space and utilize it to provide concrete hypotheses. Blau defines social structure via social “parameters” (constraints). Actors that are closer together (more homogenous) in this social parameter space are more likely to interact. One of Blau’s most important hypotheses resulting from this work was that the consolidation of parameters could lead to isolated social groups. For example, the consolidation of race and income might lead to segregation. In the present work, we use Foursquare data from New York City to explore evidence of homogeneity along certain social parameters and consolidation that breeds social isolation in communities of locations checked in to by similar users. More specifically, we first test the extent to which communities detected via Latent Dirichlet Allocation are homogenous across a set of four social constraints—racial homophily, income homophily, personal interest homophily and physical space. Using a bootstrapping approach, we find that 14 (of 20) communities are statistically, and all but one qualitatively, homogenous along one of these social constraints, showing the relevance of Blau’s latent space model in venue communities determined via user check-in behavior. We then consider the extent to which communities with consolidated parameters, those homogenous on more than one parameter, represent socially isolated populations. We find communities homogenous on multiple parameters, including a homosexual community and a “hipster” community, that show support for Blau’s hypothesis that consolidation breeds social isolation. We consider these results in the context of mediated communication, in particular in the context of self-representation on social media.",
"issue": "3",
"itemID": "10.1145/2566617",
"journalAbbreviation": "ACM Trans. Intell. Syst. Technol.",
"libraryCatalog": "ACM Digital Library",
"pages": "46:1–46:22",
"publicationTitle": "ACM Transactions on Intelligent Systems and Technology",
"shortTitle": "Check-ins in “Blau Space”",
"url": "https://dl.acm.org/doi/10.1145/2566617",
"volume": "5",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Foursquare"
},
{
"tag": "community structure"
},
{
"tag": "latent social space"
},
{
"tag": "urban analytics"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://dl.acm.org/doi/abs/10.5555/3336323.C5474411",
"detectedItemType": "bookSection",
"items": [
{
"itemType": "bookSection",
"title": "2007--2016",
"creators": [
{
"firstName": "Peter A.",
"lastName": "Freeman",
"creatorType": "author"
},
{
"firstName": "W. Richards",
"lastName": "Adrion",
"creatorType": "author"
},
{
"firstName": "William",
"lastName": "Aspray",
"creatorType": "author"
}
],
"date": "November 20, 2019",
"ISBN": "9781450372763",
"abstractNote": "This organizational history relates the role of the National Science Foundation (NSF) in the development of modern computing. Drawing upon new and existing oral histories, extensive use of NSF documents, and the experience of two of the authors as senior managers, this book describes how NSF's programmatic activities originated and evolved to become the primary source of funding for fundamental research in computing and information technologies.The book traces how NSF's support has provided facilities and education for computing usage by all scientific disciplines, aided in institution and professional community building, supported fundamental research in computer science and allied disciplines, and led the efforts to broaden participation in computing by all segments of society.Today, the research and infrastructure facilitated by NSF computing programs are significant economic drivers of American society and industry. For example, NSF supported work that led to the first widelyused web browser, Netscape; sponsored the creation of algorithms at the core of the Google search engine; facilitated the growth of the public Internet; and funded research on the scientific basis for countless other applications and technologies. NSF has advanced the development of human capital and ideas for future advances in computing and its applications.This account is the first comprehensive coverage of NSF's role in the extraordinary growth and expansion of modern computing and its use. It will appeal to historians of computing, policy makers and leaders in government and academia, and individuals interested in the history and development of computing and the NSF.",
"bookTitle": "Computing and the National Science Foundation, 1950--2016: Building a Foundation for Modern Computing",
"itemID": "10.5555/3336323.C5474411",
"libraryCatalog": "ACM Digital Library",
"place": "New York, NY, USA",
"publisher": "Association for Computing Machinery",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://dl.acm.org/doi/10.1145/3264631.3264634",
"detectedItemType": "journalArticle",
"items": [
{
"itemType": "journalArticle",
"title": "Beyond screen and voice: augmenting aural navigation with screenless access",
"creators": [
{
"lastName": "Gross",
"firstName": "Mikaylah",
"creatorTypeID": 8,
"creatorType": "author"
},
{
"lastName": "Bolchini",
"firstName": "Davide",
"creatorTypeID": 8,
"creatorType": "author"
}
],
"date": "August 2, 2018",
"DOI": "10.1145/3264631.3264634",
"ISSN": "1558-2337",
"abstractNote": "The current interaction paradigm to access the mobile web forces people who are blind to hold out their phone at all times, thus increasing the risk for the device to fall or be robbed. Moreover, such continuous, two-handed interaction on a small screen hampers the ability of people who are blind to keep their hands free to control aiding devices (e.g., cane) or touch objects nearby, especially on-the-go. To investigate alternative paradigms, we are exploring and reifying strategies for \"screenless access\": a browsing approach that enables users to interact touch-free with aural navigation architectures using one-handed, in-air gestures recognized by an off-the-shelf armband. In this article, we summarize key highlights from an exploratory study with ten participants who are blind or visually impaired who experienced our screenless access prototype. We observed proficient navigation performance after basic training, users conceptual fit with a screen-free paradigm, and low levels of cognitive load, notwithstanding the errors and limits of the design and system proposed. The full paper appeared in W4A2018 [1].",
"issue": "121",
"itemID": "10.1145/3264631.3264634",
"journalAbbreviation": "SIGACCESS Access. Comput.",
"libraryCatalog": "ACM Digital Library",
"pages": "3:1",
"publicationTitle": "ACM SIGACCESS Accessibility and Computing",
"shortTitle": "Beyond screen and voice",
"url": "https://doi.org/10.1145/3264631.3264634",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://dl.acm.org/doi/10.1145/2854146",
"detectedItemType": "journalArticle",
"items": [
{
"itemType": "journalArticle",
"title": "Why Google stores billions of lines of code in a single repository",
"creators": [
{
"lastName": "Potvin",
"firstName": "Rachel",
"creatorTypeID": 8,
"creatorType": "author"
},
{
"lastName": "Levenberg",
"firstName": "Josh",
"creatorTypeID": 8,
"creatorType": "author"
}
],
"date": "June 24, 2016",
"DOI": "10.1145/2854146",
"ISSN": "0001-0782",
"abstractNote": "Google's monolithic repository provides a common source of truth for tens of thousands of developers around the world.",
"issue": "7",
"itemID": "10.1145/2854146",
"journalAbbreviation": "Commun. ACM",
"libraryCatalog": "ACM Digital Library",
"pages": "78–87",
"publicationTitle": "Communications of the ACM",
"url": "https://dl.acm.org/doi/10.1145/2854146",
"volume": "59",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://dl.acm.org/doi/book/10.5555/1087674",
"detectedItemType": "thesis",
"items": [
{
"itemType": "thesis",
"title": "A \"void-trimming\" methodology of generating shrink-wrapped mesh for component-based complex \"dirty\" geometry",
"creators": [
{
"lastName": "Yuan",
"firstName": "Wei",
"creatorTypeID": 8,
"creatorType": "author"
}
],
"date": "2005",
"abstractNote": "The geometric surface model generated by common CAD tools is often “dirty” (cracks, small gaps, small holes, surface penetration, inconsistent surface orientation, bad edge-face connectivity, etc.). Also, problems of component overlapping, island components, and patch duplication exist in a component-based system. The process of traditional geometric healing and repairing methods is time-consuming (weeks or months), and often time fails when dealing with a complex “dirty” geometric model. In this dissertation, a new methodology based on “void volume trimming” is presented to resolve problems stated above. The meshing process starts from generating a Cartesian volume mesh using the 2 N tree (instead of the traditional Octree) data structure. With this structure, several mesh adaptation methods based on geometric features coupled with a smoothing algorithm between neighbor cells are developed to generate the preferred mesh sizes at desired regions while ensuring the gradual transition between dense and coarse meshes. In the process of constructing surface mesh for “dirty” geometric components, an effective “surface orientation free” algorithm is proposed. For resolving of “mesh leak” at cracks and small gap regions, the continuous “intersecting cell” set is used instead of geometric surfaces as the domain bound. The major contribution of this dissertation is the development of “void volume trimming” algorithm. With this methodology, the watertight feature can be promised, and the axis-aligned surface mesh is gradually adjusted to be geometric aligned while maintaining high mesh quality. Meanwhile, the surface mesh is pushed towards the geometry for satisfaction of mapping criteria. The constrained smoothing algorithm presented in this dissertation further improves the mesh quality while shrinking the surface mesh closer to geometry components. At the same time, the use of the SPP (Shortest Path Projection) algorithm coupled with the ADT (Alternating Digital Tree) data structure has been shown that it is efficient when generating body-fitted surface meshes for complex “dirty” geometries while maintaining high performance. The present critical feature preservation method has shown its capability of capturing the detailed features, while the introduced patch mapping method can topologically maintain the geometric model property. Case studies and application results have demonstrated that the current methodology is efficient for handling the component-based complex “dirty” geometric model.",
"extra": "AAI3164056\nISBN-10: 0496987127",
"itemID": "10.5555/1087674",
"libraryCatalog": "ACM Digital Library",
"numPages": "118",
"place": "USA",
"thesisType": "phd",
"university": "University of Alabama in Huntsville",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://dl.acm.org/profile/81460641152/publications?Role=author",
"items": "multiple"
},
{
"type": "web",
"url": "https://dl.acm.org/toc/interactions/2016/24/1",
"items": "multiple"
},
{
"type": "web",
"url": "https://dl.acm.org/topic/ccs2012/10010147.10010341.10010342.10010343",
"items": "multiple"
},
{
"type": "web",
"url": "https://dl.acm.org/doi/proceedings/10.1145/2342541",
"items": "multiple"
},
{
"type": "web",
"url": "https://dl.acm.org/keyword/pesq",
"items": "multiple"
},
{
"type": "web",
"url": "https://dl.acm.org/action/doSearch?AllField=Zotero",
"items": "multiple"
},
{
"type": "web",
"url": "https://dl.acm.org/browse/book",
"items": "multiple"
},
{
"type": "web",
"url": "https://dl.acm.org/subject/mobile",
"items": "multiple"
}
]
/** END TEST CASES **/
100Sebastian Karcher^https?://(www\.)?canlii\.org/(en|fr)//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2012 Sebastian Karcher
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
var canLiiRegexp = /https?:\/\/(?:www\.)?canlii\.org[^/]*\/(?:en|fr)\/[^/]+\/[^/]+\/doc\/.+/;
function detectWeb(doc, url) {
if (canLiiRegexp.test(url)) {
return "case";
}
else {
var aTags = doc.getElementsByTagName("a");
for (var i = 0; i < aTags.length; i++) {
if (canLiiRegexp.test(aTags[i].href)) {
return "multiple";
}
}
}
return false;
}
function scrape(doc, url) {
var newItem = new Zotero.Item("case");
var voliss = ZU.trimInternal(text('.documentMeta-citation + div'));
// e.g. Reference re Secession of Quebec, 1998 CanLII 793 (SCC), [1998] 2 SCR 217, <http://canlii.ca/t/1fqr3>, retrieved on 2019-11-25
var citationParts = voliss.split(',');
newItem.caseName = citationParts[0];
var reporterRegex = /\[\d\d\d\d\]\s+(\d+)\s+([A-Z]+)\s+(\d+)/;
var reporterDetails = voliss.match(reporterRegex);
if (reporterDetails) {
newItem.reporterVolume = reporterDetails[1];
newItem.reporter = reporterDetails[2];
newItem.firstPage = reporterDetails[3];
}
newItem.court = text('#breadcrumbs *[itemprop="name"]', 2);
newItem.dateDecided = ZU.xpathText(doc, '//div[@id="documentMeta"]//div[contains(text(), "Date")]/following-sibling::div');
newItem.docketNumber = ZU.xpathText(doc, '//div[@id="documentMeta"]//div[contains(text(), "File number") or contains(text(), "Numéro de dossier")]/following-sibling::div');
var otherCitations = ZU.xpathText(doc, '//div[@id="documentMeta"]//div[contains(text(), "Other citations") or contains(text(), "Autres citations")]/following-sibling::div');
if (otherCitations) {
newItem.notes.push({ note: "Other Citations: " + ZU.trimInternal(otherCitations) });
}
var shortUrl = text('.documentStaticUrl');
if (shortUrl) {
newItem.url = shortUrl.trim();
}
// attach link to pdf version
// Z.debug(url)
var pdfurl = url.replace(/\.html(?:[?#].*)?/, ".pdf");
newItem.attachments.push({
url: pdfurl,
title: "CanLII Full Text PDF",
mimeType: "application/pdf"
});
newItem.attachments.push({
document: doc,
title: "CanLII Snapshot"
});
newItem.complete();
}
function doWeb(doc, url) {
if (canLiiRegexp.test(url)) {
scrape(doc, url);
}
else {
var items = ZU.getItemArray(doc, doc, canLiiRegexp);
Zotero.selectItems(items, function (items) {
if (!items) {
return;
}
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.canlii.org/en/ca/scc/doc/2010/2010scc2/2010scc2.html",
"items": [
{
"itemType": "case",
"caseName": "MiningWatch Canada v. Canada (Fisheries and Oceans)",
"creators": [],
"dateDecided": "2010-01-21",
"court": "Supreme Court of Canada",
"docketNumber": "32797",
"firstPage": "6",
"reporter": "SCR",
"reporterVolume": "1",
"url": "https://canlii.ca/t/27jmr",
"attachments": [
{
"title": "CanLII Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "CanLII Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [
{
"note": "Other Citations: [2010] ACS no 2 — [2010] SCJ No 2 (QL) — 99 Admin LR (4th) 1 — 315 DLR (4th) 434 — 397 NR 232"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.canlii.org/en/ca/fct/doc/2011/2011fc119/2011fc119.html?searchUrlHash=AAAAAQAjU3V0dGllIHYuIENhbmFkYSAoQXR0b3JuZXkgR2VuZXJhbCkAAAAAAQ",
"items": [
{
"itemType": "case",
"caseName": "Suttie v. Canada (Attorney General)",
"creators": [],
"dateDecided": "2011-02-02",
"court": "Federal Court",
"docketNumber": "T-1089-10",
"url": "https://canlii.ca/t/2flrk",
"attachments": [
{
"title": "CanLII Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "CanLII Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.canlii.org/fr/ca/csc/doc/2010/2010csc2/2010csc2.html",
"items": [
{
"itemType": "case",
"caseName": "Mines Alerte Canada c. Canada (Pêches et Océans)",
"creators": [],
"dateDecided": "2010-01-21",
"court": "Cour suprême du Canada",
"docketNumber": "32797",
"firstPage": "6",
"reporter": "RCS",
"reporterVolume": "1",
"url": "https://canlii.ca/t/27jms",
"attachments": [
{
"title": "CanLII Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "CanLII Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [
{
"note": "Other Citations: [2010] ACS no 2 — [2010] SCJ No 2 (QL) — 99 Admin LR (4th) 1 — 315 DLR (4th) 434 — 397 NR 232"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.canlii.org/fr/ca/cfpi/doc/2011/2011cf119/2011cf119.html?searchUrlHash=AAAAAQAjU3V0dGllIHYuIENhbmFkYSAoQXR0b3JuZXkgR2VuZXJhbCkAAAAAAQ",
"items": [
{
"itemType": "case",
"caseName": "Suttie c. Canada (Procureur Général)",
"creators": [],
"dateDecided": "2011-02-02",
"court": "Cour fédérale",
"docketNumber": "T-1089-10",
"url": "https://canlii.ca/t/fks9z",
"attachments": [
{
"title": "CanLII Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "CanLII Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.canlii.org/en/ca/scc/doc/2010/2010scc2/2010scc2.html",
"items": [
{
"itemType": "case",
"caseName": "MiningWatch Canada v. Canada (Fisheries and Oceans)",
"creators": [],
"dateDecided": "2010-01-21",
"court": "Supreme Court of Canada",
"docketNumber": "32797",
"firstPage": "6",
"reporter": "SCR",
"reporterVolume": "1",
"url": "https://canlii.ca/t/27jmr",
"attachments": [
{
"title": "CanLII Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "CanLII Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [
{
"note": "Other Citations: [2010] ACS no 2 — [2010] SCJ No 2 (QL) — 99 Admin LR (4th) 1 — 315 DLR (4th) 434 — 397 NR 232"
}
],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Brendan O'Connell^https?://standardebooks\.org//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2023 Brendan O'Connell
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, _url) {
if (doc.querySelectorAll('meta[content="book"]').length) {
return 'book';
}
else if (getSearchResults(doc, true)) {
return 'multiple';
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('li[typeof="schema:Book"]');
for (let row of rows) {
let href = new URL(row.getAttribute("about"), "https://www.standardebooks.org/").toString();
let title = text(row, 'span[property="schema:name"]');
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
async function doWeb(doc, url) {
if (detectWeb(doc, url) == 'multiple') {
let items = await Zotero.selectItems(getSearchResults(doc, false));
if (!items) return;
for (let url of Object.keys(items)) {
await scrape(await requestDocument(url));
}
}
else {
await scrape(doc, url);
}
}
async function scrape(doc) {
var item = new Zotero.Item("book");
item.title = text(doc, 'h1[property="schema:name"]');
var creators = doc.querySelectorAll('a[property="schema:author"]');
for (let creatorElem of creators) {
let creator = creatorElem.textContent;
let role = "author";
item.creators.push(ZU.cleanAuthor(creator, role));
}
if (doc.querySelector('div[property="schema:translator"]')) {
let translator = attr(doc, 'div[property="schema:translator"] > meta[property="schema:name"]', 'content');
let role = "translator";
item.creators.push(ZU.cleanAuthor(translator, role));
}
// Sometimes section[id="description"] scrapes a promotional message,
// "We rely on your support ...", which is displayed sometimes to user.
// By looping over just the paragraphs within the description, avoids
// adding promo message to abstractNote.
var abstractParagraphs = doc.querySelectorAll('#description > p');
var finalAbstract = '';
for (let j = 0; j < abstractParagraphs.length; j++) {
let abstractParagraph = abstractParagraphs[j].innerText + ' ';
finalAbstract += abstractParagraph;
}
item.abstractNote = finalAbstract;
// Include the date of the last edit to the ebook as its publication date,
// rather than the original publication date of the digitized public domain book.
// Although these are public domain ebooks with original publication dates over 100 years ago,
// Standard ebooks is making typographical changes,
// which could be considered altering them from their form on Project Gutenberg,
// and thus potentially constitute a new "publication".
item.date = attr(doc, 'meta[property="schema:dateModified"]', 'content');
item.url = attr(doc, 'meta[property="og:url"]', 'content');
item.publisher = "Standard Ebooks";
item.rights = "This ebook is only thought to be free of copyright restrictions in the United States. It may still be under copyright in other countries. If you’re not located in the United States, you must check your local laws to verify that the contents of this ebook are free of copyright restrictions in the country you’re located in before downloading or using this ebook.";
var fullText = item.url + "/text/single-page";
item.attachments.push({
title: "Full Text",
url: fullText,
mimeType: 'text/html',
snapshot: true
});
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://standardebooks.org/ebooks/charles-dickens/dombey-and-son",
"items": [
{
"itemType": "book",
"title": "Dombey and Son",
"creators": [
{
"firstName": "Charles",
"lastName": "Dickens",
"creatorType": "author"
}
],
"date": "2023-02-14",
"abstractNote": "The fictional Dombey and Son is a prominent mercantile “house” in England, and as Dombey and Son the novel opens, the third generation “and Son” has just been born. For Paul Dombey, the proud second “and Son” to graduate to “Dombey,” this moment has been the focus of his life to this point. So much so that he barely knows his six-year-old daughter Florence exists. The impact of that father’s overbearing disposition on the one hand and indifference (and worse) on the other is the subject of the rest of the novel. Paul’s only focus is on preparing the junior Paul to be “and Son,” and those preparations have no room for Florence. As she makes her way to adulthood, she encounters caregivers good and bad, and adventures large and small, all while striving to find a place in her father’s heart. Dombey and Son is a novel about the destructive nature of pride and arrogance, but it also has plenty to say about the essential qualities of motherhood and money. It would not be Dickens if there were not a plethora of characters of all stripes, stations, and personalities, each of whom leave an indelible impression on both the page and the mind.",
"libraryCatalog": "Standard Ebooks",
"publisher": "Standard Ebooks",
"rights": "This ebook is only thought to be free of copyright restrictions in the United States. It may still be under copyright in other countries. If you’re not located in the United States, you must check your local laws to verify that the contents of this ebook are free of copyright restrictions in the country you’re located in before downloading or using this ebook.",
"url": "https://standardebooks.org/ebooks/charles-dickens/dombey-and-son",
"attachments": [
{
"title": "Full Text",
"mimeType": "text/html",
"snapshot": true
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://standardebooks.org/ebooks/frederic-mistral/mireio/harriet-waters-preston",
"items": [
{
"itemType": "book",
"title": "Mirèio",
"creators": [
{
"firstName": "Frédéric",
"lastName": "Mistral",
"creatorType": "author"
},
{
"firstName": "Harriet Waters",
"lastName": "Preston",
"creatorType": "translator"
}
],
"date": "2023-01-20",
"abstractNote": "Published in 1859 to great fanfare from French literary society, Mirèio was the first of four long narrative poems written by the French author Frédéric Mistral. Composed in Occitan, a regional language spoken in southern France, Mirèio arose out of the milieu of the Félibrige, a cultural movement centered around Mistral and his compatriots who championed the use of the Occitan language. Rich with references to local Provençal culture and geography, Mirèio recounts the joys and sorrows of two young lovers: the titular Mirèio, daughter of a rich farmer, and Vincen, a poor basket weaver. Though the two fall madly in love, they find themselves separated by social class and the disapproving attitude of Mirèio’s parents. In part thanks to Mirèio, Mistral went on to win the 1904 Nobel Prize in Literature, celebrated by the Nobel Committee for his poetry and his work as a Provençal philologist. Mirèio was widely translated, and was also adapted into the French-language opera Mireille by Charles Gounod. Mirèio remains a celebrated depiction of Provençal culture to this day. This Standard Ebooks edition of Mirèio augments Harriet Waters Preston’s unannotated 1890 translation with the annotations from her first translation published in 1872.",
"libraryCatalog": "Standard Ebooks",
"publisher": "Standard Ebooks",
"rights": "This ebook is only thought to be free of copyright restrictions in the United States. It may still be under copyright in other countries. If you’re not located in the United States, you must check your local laws to verify that the contents of this ebook are free of copyright restrictions in the country you’re located in before downloading or using this ebook.",
"url": "https://standardebooks.org/ebooks/frederic-mistral/mireio/harriet-waters-preston",
"attachments": [
{
"title": "Full Text",
"mimeType": "text/html",
"snapshot": true
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://standardebooks.org/ebooks?tags%5B%5D=autobiography&query=&sort=newest&view=grid&per-page=12",
"items": "multiple"
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://[^./]+\.copernicus\.org//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2022 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/articles/')
&& (url.endsWith('.pdf') || attr('meta[name="citation_title"]', 'content'))) {
return 'journalArticle';
}
else if (getSearchResults(doc, true)) {
return 'multiple';
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('a.article-title');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
async function doWeb(doc, url) {
if (detectWeb(doc, url) == 'multiple') {
let items = await Zotero.selectItems(getSearchResults(doc, false));
if (items) {
await Promise.all(
Object.keys(items)
.map(url => requestDocument(url).then(scrape))
);
}
}
else if (url.endsWith('.pdf')) {
await scrape(await requestDocument(url.replace('.pdf', '.html')));
}
else {
await scrape(doc, url);
}
}
async function scrape(doc, url = doc.location.href) {
let translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', (_obj, item) => {
item.title = item.title.replace(/''/g, '"');
if (item.abstractNote) {
item.abstractNote = ZU.cleanTags(item.abstractNote).replace(/^Abstract\./, '');
}
if (item.date) {
item.date = ZU.strToISO(item.date);
}
item.libraryCatalog = 'Copernicus Online Journals';
item.complete();
});
let em = await translator.getTranslatorObject();
em.itemType = 'journalArticle';
await em.doWeb(doc, url);
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://adgeo.copernicus.org/articles/30/1/2011/adgeo-30-1-2011.html",
"items": [
{
"itemType": "journalArticle",
"title": "Preface \"Precipitation: Measurement, Climatology, Remote Sensing, and Modeling (EGU 2010)\"",
"creators": [
{
"firstName": "S.",
"lastName": "Michaelides",
"creatorType": "author"
},
{
"firstName": "S.",
"lastName": "Athanasatos",
"creatorType": "author"
}
],
"date": "2011-05-09",
"DOI": "10.5194/adgeo-30-1-2011",
"ISSN": "1680-7340",
"language": "English",
"libraryCatalog": "Copernicus Online Journals",
"pages": "1-2",
"publicationTitle": "Advances in Geosciences",
"shortTitle": "Preface \"Precipitation",
"url": "https://adgeo.copernicus.org/articles/30/1/2011/adgeo-30-1-2011.html",
"volume": "30",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://ars.copernicus.org/articles/6/1/2008/ars-6-1-2008.html",
"items": [
{
"itemType": "journalArticle",
"title": "Time domain reflectrometry measurements using a movable obstacle for the determination of dielectric profiles",
"creators": [
{
"firstName": "B.",
"lastName": "Will",
"creatorType": "author"
},
{
"firstName": "M.",
"lastName": "Gerding",
"creatorType": "author"
},
{
"firstName": "S.",
"lastName": "Schultz",
"creatorType": "author"
},
{
"firstName": "B.",
"lastName": "Schiek",
"creatorType": "author"
}
],
"date": "2008-05-26",
"DOI": "10.5194/ars-6-1-2008",
"ISSN": "1684-9965",
"abstractNote": "Microwave techniques for the measurement of the permittivity of soils including the water content of soils and other materials, especially TDR (time domain reflectometry), have become accepted as routine measurement techniques. This summary deals with an advanced use of the TDR principle for the determination of the water content of soil along a probe. The basis of the advanced TDR technique is a waveguide, which is inserted into the soil for obtaining measurements of the effective soil permittivity, from which the water content is estimated, and an obstacle, which can mechanically be moved along the probe and which acts as a reference reflection for the TDR system with an exactly known position. Based on the known mechanical position of the reference reflection, the measured electrical position can be used as a measure for the effective dielectric constant of the environment. Thus, it is possible to determine the effective dielectric constant with a spatial resolution given by the step size of the obstacle displacement. \n\n A conventional industrial TDR-system, operating in the baseband, is used for the signal generation and for the evaluation of the pulse delay time of the obstacle reflection. Thus, a cost effective method for the acquisition of the dielectric measurement data is available.",
"issue": "A.1",
"language": "English",
"libraryCatalog": "Copernicus Online Journals",
"pages": "1-4",
"publicationTitle": "Advances in Radio Science",
"url": "https://ars.copernicus.org/articles/6/1/2008/ars-6-1-2008.html",
"volume": "6",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://acp.copernicus.org/articles/14/4349/2014/acp-14-4349-2014-metrics.html",
"items": [
{
"itemType": "journalArticle",
"title": "TransCom N<sub>2</sub>O model inter-comparison – Part 1: Assessing the influence of transport and surface fluxes on tropospheric N<sub>2</sub>O variability",
"creators": [
{
"firstName": "R. L.",
"lastName": "Thompson",
"creatorType": "author"
},
{
"firstName": "P. K.",
"lastName": "Patra",
"creatorType": "author"
},
{
"firstName": "K.",
"lastName": "Ishijima",
"creatorType": "author"
},
{
"firstName": "E.",
"lastName": "Saikawa",
"creatorType": "author"
},
{
"firstName": "M.",
"lastName": "Corazza",
"creatorType": "author"
},
{
"firstName": "U.",
"lastName": "Karstens",
"creatorType": "author"
},
{
"firstName": "C.",
"lastName": "Wilson",
"creatorType": "author"
},
{
"firstName": "P.",
"lastName": "Bergamaschi",
"creatorType": "author"
},
{
"firstName": "E.",
"lastName": "Dlugokencky",
"creatorType": "author"
},
{
"firstName": "C.",
"lastName": "Sweeney",
"creatorType": "author"
},
{
"firstName": "R. G.",
"lastName": "Prinn",
"creatorType": "author"
},
{
"firstName": "R. F.",
"lastName": "Weiss",
"creatorType": "author"
},
{
"firstName": "S.",
"lastName": "O'Doherty",
"creatorType": "author"
},
{
"firstName": "P. J.",
"lastName": "Fraser",
"creatorType": "author"
},
{
"firstName": "L. P.",
"lastName": "Steele",
"creatorType": "author"
},
{
"firstName": "P. B.",
"lastName": "Krummel",
"creatorType": "author"
},
{
"firstName": "M.",
"lastName": "Saunois",
"creatorType": "author"
},
{
"firstName": "M.",
"lastName": "Chipperfield",
"creatorType": "author"
},
{
"firstName": "P.",
"lastName": "Bousquet",
"creatorType": "author"
}
],
"date": "2014-04-30",
"DOI": "10.5194/acp-14-4349-2014",
"ISSN": "1680-7316",
"abstractNote": "We present a comparison of chemistry-transport models (TransCom-N2O) to examine the importance of atmospheric transport and surface fluxes on the variability of N2O mixing ratios in the troposphere. Six different models and two model variants participated in the inter-comparison and simulations were made for the period 2006 to 2009. In addition to N2O, simulations of CFC-12 and SF6 were made by a subset of four of the models to provide information on the models' proficiency in stratosphere–troposphere exchange (STE) and meridional transport, respectively. The same prior emissions were used by all models to restrict differences among models to transport and chemistry alone. Four different N2O flux scenarios totalling between 14 and 17 TgN yr−1 (for 2005) globally were also compared. The modelled N2O mixing ratios were assessed against observations from in situ stations, discrete air sampling networks and aircraft. All models adequately captured the large-scale patterns of N2O and the vertical gradient from the troposphere to the stratosphere and most models also adequately captured the N2O tropospheric growth rate. However, all models underestimated the inter-hemispheric N2O gradient by at least 0.33 parts per billion (ppb), equivalent to 1.5 TgN, which, even after accounting for an overestimate of emissions in the Southern Ocean of circa 1.0 TgN, points to a likely underestimate of the Northern Hemisphere source by up to 0.5 TgN and/or an overestimate of STE in the Northern Hemisphere. Comparison with aircraft data reveal that the models overestimate the amplitude of the N2O seasonal cycle at Hawaii (21° N, 158° W) below circa 6000 m, suggesting an overestimate of the importance of stratosphere to troposphere transport in the lower troposphere at this latitude. In the Northern Hemisphere, most of the models that provided CFC-12 simulations captured the phase of the CFC-12, seasonal cycle, indicating a reasonable representation of the timing of STE. However, for N2O all models simulated a too early minimum by 2 to 3 months owing to errors in the seasonal cycle in the prior soil emissions, which was not adequately represented by the terrestrial biosphere model. In the Southern Hemisphere, most models failed to capture the N2O and CFC-12 seasonality at Cape Grim, Tasmania, and all failed at the South Pole, whereas for SF6, all models could capture the seasonality at all sites, suggesting that there are large errors in modelled vertical transport in high southern latitudes.",
"issue": "8",
"language": "English",
"libraryCatalog": "Copernicus Online Journals",
"pages": "4349-4368",
"publicationTitle": "Atmospheric Chemistry and Physics",
"shortTitle": "TransCom N<sub>2</sub>O model inter-comparison – Part 1",
"url": "https://acp.copernicus.org/articles/14/4349/2014/acp-14-4349-2014-metrics.html",
"volume": "14",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://acp.copernicus.org/articles/special_issue15.html",
"items": "multiple"
},
{
"type": "web",
"url": "https://acp.copernicus.org/recent_papers.html",
"items": "multiple"
},
{
"type": "web",
"url": "https://nhess.copernicus.org/articles/13/299/2013/",
"items": [
{
"itemType": "journalArticle",
"title": "Technical Note: Use of remote sensing for landslide studies in Europe",
"creators": [
{
"firstName": "V.",
"lastName": "Tofani",
"creatorType": "author"
},
{
"firstName": "S.",
"lastName": "Segoni",
"creatorType": "author"
},
{
"firstName": "A.",
"lastName": "Agostini",
"creatorType": "author"
},
{
"firstName": "F.",
"lastName": "Catani",
"creatorType": "author"
},
{
"firstName": "N.",
"lastName": "Casagli",
"creatorType": "author"
}
],
"date": "2013-02-08",
"DOI": "10.5194/nhess-13-299-2013",
"ISSN": "1561-8633",
"abstractNote": "Within the framework of FP7, an EU-funded SafeLand project, a questionnaire was prepared to collect information about the use of remote sensing for landslide study and to evaluate its actual application in landslide detection, mapping and monitoring. The questionnaire was designed using a Google form and was disseminated among end-users and researchers involved in landslide studies in Europe. In total, 49 answers from 17 different European countries were collected. The outcomes showed that landslide detection and mapping is mainly performed with aerial photos, often associated with optical and radar imagery. Concerning landslide monitoring, satellite radars prevail over the other types of data. Remote sensing is mainly used for detection/mapping and monitoring of slides, flows and lateral spreads with a preferably large scale of analysis (1:5000–1:25 000). All the compilers integrate remote sensing data with other thematic data, mainly geological maps, landslide inventory maps and DTMs and derived maps. According to the research and working experience of the compilers, remote sensing is generally considered to have a medium effectiveness/reliability for landslide studies. \n\n The results of the questionnaire can contribute to an overall sketch of the use of remote sensing in current landslide studies and show that remote sensing can be considered a powerful and well-established instrument for landslide mapping, monitoring and hazard analysis.",
"issue": "2",
"language": "English",
"libraryCatalog": "Copernicus Online Journals",
"pages": "299-309",
"publicationTitle": "Natural Hazards and Earth System Sciences",
"shortTitle": "Technical Note",
"url": "https://nhess.copernicus.org/articles/13/299/2013/",
"volume": "13",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://nhess.copernicus.org/articles/13/505/2013/",
"items": [
{
"itemType": "journalArticle",
"title": "19 May 2011 Kütahya – Simav earthquake and evaluation of existing sample RC buildings according to the TEC-2007 criteria",
"creators": [
{
"firstName": "M. H.",
"lastName": "Arslan",
"creatorType": "author"
},
{
"firstName": "M.",
"lastName": "Olgun",
"creatorType": "author"
},
{
"firstName": "M. A.",
"lastName": "Köroğlu",
"creatorType": "author"
},
{
"firstName": "I. H.",
"lastName": "Erkan",
"creatorType": "author"
},
{
"firstName": "A.",
"lastName": "Köken",
"creatorType": "author"
},
{
"firstName": "O.",
"lastName": "Tan",
"creatorType": "author"
}
],
"date": "2013-02-25",
"DOI": "10.5194/nhess-13-505-2013",
"ISSN": "1561-8633",
"abstractNote": "This study examines the damage caused to reinforced concrete structures by the 2011 earthquake that occurred in Simav, Turkey. The study briefly reports on post-earthquake field observations, tectonic characteristics of the earthquake area, geotechnical characteristics of the field, and seismic characteristics of the earthquake. The main part of the study comprises a field study, material experiments, and performance analyses of two reinforced concrete buildings that survived the earthquake with medium level damage. The building performance was calculated and assessed according to the Turkish Earthquake Code requirements for existing building stock, and recommendations were made based on the findings.",
"issue": "2",
"language": "English",
"libraryCatalog": "Copernicus Online Journals",
"pages": "505-522",
"publicationTitle": "Natural Hazards and Earth System Sciences",
"url": "https://nhess.copernicus.org/articles/13/505/2013/",
"volume": "13",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Sean Takats, Michael Berkowitz, Avram Lyon and Aurimas Vinckevicius^https?://([\w-]+\.)?onlinelibrary\.wiley\.com[^/]*/(book|doi|toc|advanced/search|search-web/cochrane|cochranelibrary/search|o/cochrane/(clcentral|cldare|clcmr|clhta|cleed|clabout)/articles/.+/sect0\.html)/*
Wiley Online Translator
Copyright (C) 2011-2021 CHNM, Avram Lyon and Aurimas Vinckevicius
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
function fixCase(authorName) {
if (typeof authorName != 'string') return authorName;
if (authorName.toUpperCase() == authorName
|| authorName.toLowerCase() == authorName) {
return ZU.capitalizeTitle(authorName, true);
}
return authorName;
}
function addCreators(item, creatorType, creators) {
if (typeof (creators) == 'string') {
creators = [creators];
}
else if (!(creators instanceof Array)) {
return;
}
for (var i = 0, n = creators.length; i < n; i++) {
item.creators.push(ZU.cleanAuthor(fixCase(creators[i]), creatorType, false));
}
}
function getAuthorName(text) {
// lower case words at the end of a name are probably not part of a name
text = text.replace(/(\s+[a-z]+)+\s*$/, '');
text = text.replace(/(^|[\s,])(PhD|MA|Prof|Dr)(\.?|(?=\s|$))/gi, ''); // remove salutations
return fixCase(text.trim());
}
function scrapeBook(doc, url) {
var title = doc.getElementById('productTitle');
if (!title) return;
var newItem = new Zotero.Item('book');
newItem.title = ZU.capitalizeTitle(title.textContent, true);
var data = ZU.xpath(doc, '//div[@id="metaData"]/p');
var dataRe = /^(.+?):\s*(.+?)\s*$/;
var match;
var isbn = [];
for (var i = 0, n = data.length; i < n; i++) {
match = dataRe.exec(data[i].textContent);
if (!match) continue;
switch (match[1].trim().toLowerCase()) {
case 'author(s)':
addCreators(newItem, 'author', match[2].split(', '));
break;
case 'series editor(s)':
addCreators(newItem, 'seriesEditor', match[2].split(', '));
break;
case 'editor(s)':
addCreators(newItem, 'editor', match[2].split(', '));
break;
case 'published online':
var date = ZU.strToDate(match[2]);
date.part = null;
newItem.date = ZU.formatDate(date);
break;
case 'print isbn':
case 'online isbn':
isbn.push(match[2]);
break;
case 'doi':
newItem.DOI = ZU.cleanDOI(match[2]);
break;
case 'book series':
newItem.series = match[2];
}
}
newItem.ISBN = isbn.join(', ');
newItem.rights = ZU.xpathText(doc, '//div[@id="titleMeta"]/p[@class="copyright"]');
newItem.url = url;
newItem.abstractNote = ZU.trimInternal(
ZU.xpathText(doc, [
'//div[@id="homepageContent"]',
'/h6[normalize-space(text())="About The Product"]',
'/following-sibling::p'
].join(''), null, "\n") || "");
newItem.accessDate = 'CURRENT_TIMESTAMP';
newItem.complete();
}
function scrapeEM(doc, url) {
var itemType = detectWeb(doc, url);
// fetch print publication date
var date = ZU.xpathText(doc, '//meta[@name="citation_date"]/@content');
// remove duplicate meta tags
var metas = ZU.xpath(doc,
'//head/link[@media="screen,print"]/following-sibling::meta');
for (var i = 0, n = metas.length; i < n; i++) {
metas[i].parentNode.removeChild(metas[i]);
}
var translator = Zotero.loadTranslator('web');
// use Embedded Metadata
translator.setTranslator("951c027d-74ac-47d4-a107-9c3069ab7b48");
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
if (itemType == 'bookSection') {
// add authors if we didn't get them from embedded metadata
if (!item.creators.length) {
var authors = ZU.xpath(doc, '//ol[@id="authors"]/li/node()[1]');
for (let i = 0, n = authors.length; i < n; i++) {
item.creators.push(
ZU.cleanAuthor(getAuthorName(authors[i].textContent), 'author', false));
}
}
// editors
var editors = ZU.xpath(doc, '//ol[@id="editors"]/li/node()[1]');
for (let i = 0, n = editors.length; i < n; i++) {
item.creators.push(
ZU.cleanAuthor(getAuthorName(editors[i].textContent), 'editor', false));
}
item.rights = ZU.xpathText(doc, '//p[@id="copyright"]');
// this is not great for summary, but will do for now
item.abstractNote = ZU.xpathText(doc, '//div[@id="abstract"]/div[@class="para"]//p', null, "\n");
}
else {
var keywords = ZU.xpathText(doc, '//meta[@name="citation_keywords"]/@content');
if (keywords) {
item.tags = keywords.split(', ');
}
item.rights = ZU.xpathText(doc, '//div[@id="titleMeta"]//p[@class="copyright"]');
item.abstractNote = ZU.xpathText(doc, '//div[@id="abstract"]/div[@class="para"]', null, "\n");
}
// set correct print publication date
if (date) item.date = date;
// remove pdf attachments
for (let i = 0, n = item.attachments.length; i < n; i++) {
if (item.attachments[i].mimeType == 'application/pdf') {
item.attachments.splice(i, 1);
i--;
n--;
}
}
var pdfURL = attr(doc, 'meta[name="citation_pdf_url"]', "content");
if (pdfURL) {
pdfURL = pdfURL.replace('/pdf/', '/pdfdirect/');
Z.debug("PDF URL: " + pdfURL);
item.attachments.push({
url: pdfURL,
title: 'Full Text PDF',
mimeType: 'application/pdf'
});
}
item.complete();
});
translator.getTranslatorObject(function (em) {
em.itemType = itemType;
em.doWeb(doc, url);
});
}
function scrapeBibTeX(doc, url) {
var doi = ZU.xpathText(doc, '(//meta[@name="citation_doi"])[1]/@content')
|| ZU.xpathText(doc, '(//input[@name="publicationDoi"])[1]/@value');
if (!doi) {
doi = ZU.xpathText(doc, '(//p[@id="doi"])[1]');
if (doi) doi = doi.replace(/^\s*doi:\s*/i, '');
}
if (!doi) {
scrapeEM(doc, url);
return;
}
let fallbackTitle = text(doc, '.citation__title');
// Use the current domain on Wiley subdomains (e.g., ascpt.) so that the
// download works even if third-party cookies are blocked. Otherwise, use
// the main domain.
let postUrl;
if (doc.location.host.endsWith('.onlinelibrary.wiley.com')) {
postUrl = 'https://onlinelibrary.wiley.com/action/downloadCitation';
}
else {
postUrl = '/action/downloadCitation';
}
var body = 'direct=direct'
+ '&doi=' + encodeURIComponent(doi)
+ '&downloadFileName=pericles_14619563AxA'
+ '&format=bibtex'
+ '&include=abs'
+ '&submit=Download';
ZU.doPost(postUrl, body, function (text) {
// Replace uncommon dash (hex e2 80 90)
text = text.replace(/‐/g, '-').trim();
// Z.debug(text);
var re = /^\s*@[a-zA-Z]+[({]/;
if (text.startsWith('<') || !re.test(text)) {
throw new Error("Error retrieving BibTeX");
}
var translator = Zotero.loadTranslator('import');
// use BibTeX translator
translator.setTranslator("9cb70025-a888-4a29-a210-93ec52da40d4");
translator.setString(text);
translator.setHandler('itemDone', function (obj, item) {
// fix author case
for (let i = 0, n = item.creators.length; i < n; i++) {
item.creators[i].firstName = fixCase(item.creators[i].firstName);
item.creators[i].lastName = fixCase(item.creators[i].lastName);
}
// delete nonsense author Null, Null
if (item.creators.length && item.creators[item.creators.length - 1].lastName == "Null"
&& item.creators[item.creators.length - 1].firstName == "Null"
) {
item.creators = item.creators.slice(0, -1);
}
// editors
var editors = ZU.xpath(doc, '//ol[@id="editors"]/li/node()[1]');
for (let i = 0, n = editors.length; i < n; i++) {
item.creators.push(
ZU.cleanAuthor(getAuthorName(editors[i].textContent), 'editor', false));
}
// title
if (!item.title) {
item.title = fallbackTitle;
}
if (item.title && item.title.toUpperCase() == item.title) {
item.title = ZU.capitalizeTitle(item.title, true);
}
if (!item.date) {
item.date = ZU.xpathText(doc, '//meta[@name="citation_publication_date"]/@content');
}
// date in the cochraine library RIS is wrong
if (ZU.xpathText(doc, '//meta[@name="citation_book_title"]/@content') == "The Cochrane Library") {
item.date = ZU.xpathText(doc, '//meta[@name="citation_online_date"]/@content');
}
if (item.date) {
item.date = ZU.strToISO(item.date);
}
if (!item.ISSN) {
item.ISSN = ZU.xpathText(doc, '//meta[@name="citation_issn"]/@content');
}
// tags
if (!item.tags.length) {
var keywords = ZU.xpathText(doc,
'//meta[@name="citation_keywords"][1]/@content');
if (keywords) {
item.tags = keywords.split(', ');
}
}
// abstract should not start with "Abstract"
if (item.abstractNote) {
item.abstractNote = item.abstractNote.replace(/^(Abstract|Summary) /i, '');
}
// url in bibtex is invalid
item.url
= ZU.xpathText(doc,
'//meta[@name="citation_summary_html_url"][1]/@content')
|| ZU.xpathText(doc,
'//meta[@name="citation_abstract_html_url"][1]/@content')
|| ZU.xpathText(doc,
'//meta[@name="citation_fulltext_html_url"][1]/@content')
|| url;
if (item.DOI) {
item.DOI = ZU.cleanDOI(item.DOI);
}
if (item.itemID) {
item.itemID = 'doi:' + ZU.cleanDOI(item.itemID);
}
// bookTitle
if (!item.bookTitle) {
item.bookTitle = item.publicationTitle
|| ZU.xpathText(doc,
'//meta[@name="citation_book_title"][1]/@content');
}
// language
if (!item.language) {
item.language = ZU.xpathText(doc,
'//meta[@name="citation_language"][1]/@content');
}
// rights
item.rights = ZU.xpathText(doc,
'//p[@class="copyright" or @id="copyright"]');
// try to detect invalid data in pages (e.g. "inside_front_cover")
if (item.pages && /[a-zA-Z]_[a-zA-Z]/.test(item.pages)) {
delete item.pages;
}
// attachments
item.attachments = [{
title: 'Snapshot',
document: doc,
mimeType: 'text/html'
}];
var pdfURL = attr(doc, 'meta[name="citation_pdf_url"]', "content");
if (pdfURL) {
pdfURL = pdfURL.replace('/pdf/', '/pdfdirect/');
Z.debug("PDF URL: " + pdfURL);
item.attachments.push({
url: pdfURL,
title: 'Full Text PDF',
mimeType: 'application/pdf'
});
}
item.complete();
});
translator.translate();
});
}
function scrapeCochraneTrial(doc) {
Z.debug("Scraping Cochrane External Sources");
var item = new Zotero.Item('journalArticle');
// Z.debug(ZU.xpathText(doc, '//meta/@content'))
item.title = ZU.xpathText(doc, '//meta[@name="Article-title"]/@content');
item.publicationTitle = ZU.xpathText(doc, '//meta[@name="source"]/@content');
item.abstractNote = ZU.xpathText(doc, '//meta[@name="abstract"]/@content');
item.date = ZU.xpathText(doc, '//meta[@name="simpleYear"]/@content');
item.volume = ZU.xpathText(doc, '//meta[@name="volume"]/@content');
item.pages = ZU.xpathText(doc, '//meta[@name="pages"]/@content');
item.issue = ZU.xpathText(doc, '//meta[@name="issue"]/@content');
item.rights = ZU.xpathText(doc, '//meta[@name="Copyright"]/@content');
var tags = ZU.xpathText(doc, '//meta[@name="cochraneGroupCode"]/@content');
if (tags) tags = tags.split(/\s*;\s*/);
for (var i in tags) {
item.tags.push(tags[i]);
}
item.attachments.push({ document: doc, title: "Cochrane Snapshot", mimType: "text/html" });
var authors = ZU.xpathText(doc, '//meta[@name="orderedAuthors"]/@content');
if (!authors) authors = ZU.xpathText(doc, '//meta[@name="Author"]/@content');
authors = authors.split(/\s*,\s*/);
for (let i = 0; i < authors.length; i++) {
// authors are in the forms Smith AS
var authormatch = authors[i].match(/(.+?)\s+([A-Z]+(\s[A-Z])?)\s*$/);
if (authormatch) {
item.creators.push({
lastName: authormatch[1],
firstName: authormatch[2],
creatorType: "author"
});
}
else {
item.creators.push({
lastName: authors[i],
fieldMode: 1,
creatorType: "author"
});
}
}
item.complete();
}
function scrape(doc, url) {
var itemType = detectWeb(doc, url);
if (itemType == 'book') {
scrapeBook(doc, url);
}
else if (/\/o\/cochrane\/(clcentral|cldare|clcmr|clhta|cleed|clabout)/.test(url)) {
scrapeCochraneTrial(doc);
}
else {
scrapeBibTeX(doc, url);
}
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.table-of-content a.issue-item__title, .item__body h2 a');
for (var i = 0; i < rows.length; i++) {
var href = rows[i].href;
var title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function detectWeb(doc, url) {
// monitor for site changes on Cochrane
if (doc.getElementsByClassName('cochraneSearchForm').length && doc.getElementById('searchResultOuter')) {
Zotero.monitorDOMChanges(doc.getElementById('searchResultOuter'));
}
if (url.includes('/toc')
|| url.includes('/results')
|| url.includes('/doSearch')
|| url.includes('/mainSearch?')
) {
if (getSearchResults(doc, true)) return 'multiple';
}
else if (url.includes('/book/')) {
// if the book has more than one chapter, scrape chapters
if (getSearchResults(doc, true)) return 'multiple';
// otherwise, import book
return 'book'; // does this exist?
}
else if (ZU.xpath(doc, '//meta[@name="citation_book_title"]').length) {
return 'bookSection';
}
else {
return 'journalArticle';
}
return false;
}
function doWeb(doc, url) {
var type = detectWeb(doc, url);
if (type == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) {
return;
}
var articles = [];
for (var i in items) {
// for Cochrane trials - get the frame with the actual data
if (i.includes("frame.html")) i = i.replace(/frame\.html$/, "sect0.html");
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
}
// Single article
// /pdf/, /epdf/, or /pdfdirect/
else if (/\/e?pdf(direct)?\//.test(url)) {
url = url.replace(/\/e?pdf(direct)?\//, '/');
Zotero.debug("Redirecting to abstract page: " + url);
ZU.processDocuments(url, function (doc, url) {
scrape(doc, url);
});
}
else {
scrape(doc, url);
}
}/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://onlinelibrary.wiley.com/action/doSearch?AfterMonth=&AfterYear=&BeforeMonth=&BeforeYear=&Ppub=&field1=AllField&field2=AllField&field3=AllField&text1=zotero&text2=&text3=",
"items": "multiple"
},
{
"type": "web",
"url": "https://onlinelibrary.wiley.com/doi/10.1002/9781118269381.notes",
"items": [
{
"itemType": "bookSection",
"title": "Endnotes",
"creators": [],
"date": "2011",
"ISBN": "9781118269381",
"bookTitle": "The World is Open",
"extra": "DOI: 10.1002/9781118269381.notes",
"itemID": "doi:10.1002/9781118269381.notes",
"language": "en",
"libraryCatalog": "Wiley Online Library",
"pages": "427-467",
"publisher": "John Wiley & Sons, Ltd",
"url": "https://onlinelibrary.wiley.com/doi/abs/10.1002/9781118269381.notes",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
},
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://onlinelibrary.wiley.com/toc/15251497/19/s1",
"items": "multiple"
},
{
"type": "web",
"url": "https://onlinelibrary.wiley.com/doi/book/10.1002/9783527610853",
"items": "multiple"
},
{
"type": "web",
"url": "https://onlinelibrary.wiley.com/doi/10.1002/9781444304794.ch1",
"items": [
{
"itemType": "bookSection",
"title": "Silent Cinema and its Pioneers (1906–1930)",
"creators": [],
"date": "2008",
"ISBN": "9781444304794",
"abstractNote": "This chapter contains sections titled: Historical and Political Overview of the Period Context11 Film Scenes: Close Readings Directors (Life and Works) Critical Commentary",
"bookTitle": "100 Years of Spanish Cinema",
"extra": "DOI: 10.1002/9781444304794.ch1",
"itemID": "doi:10.1002/9781444304794.ch1",
"language": "en",
"libraryCatalog": "Wiley Online Library",
"pages": "1-20",
"publisher": "John Wiley & Sons, Ltd",
"url": "https://onlinelibrary.wiley.com/doi/abs/10.1002/9781444304794.ch1",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
},
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "1897"
},
{
"tag": "Directors (Life and Works) - Ángel García Cardona and Antonio Cuesta13"
},
{
"tag": "Florián Rey (Antonio Martínez de Castillo)"
},
{
"tag": "Florián Rey's La aldea maldita (1930)"
},
{
"tag": "Fructuós Gelabert - made the first Spanish fiction film"
},
{
"tag": "Fructuós Gelabert's Amor que mata (1909)"
},
{
"tag": "Ricardo Baños"
},
{
"tag": "Ricardo Baños and Albert Marro's Don Pedro el Cruel (1911)"
},
{
"tag": "Riña en un café"
},
{
"tag": "silent cinema and its pioneers (1906–1930)"
},
{
"tag": "three films - part of “the preliminary industrial and expressive framework for Spain's budding cinema”"
},
{
"tag": "Ángel García Cardona and Antonio Cuesta"
},
{
"tag": "Ángel García Cardona's El ciego de aldea (1906)"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://onlinelibrary.wiley.com/doi/book/10.1002/9781444390124",
"items": "multiple"
},
{
"type": "web",
"url": "https://ceramics.onlinelibrary.wiley.com/doi/book/10.1002/9780470320419",
"items": "multiple"
},
{
"type": "web",
"url": "https://analyticalsciencejournals.onlinelibrary.wiley.com/doi/abs/10.1002/pmic.201100327",
"items": [
{
"itemType": "journalArticle",
"title": "A mass spectrometry-based method to screen for α-amidated peptides",
"creators": [
{
"firstName": "Zhenming",
"lastName": "An",
"creatorType": "author"
},
{
"firstName": "Yudan",
"lastName": "Chen",
"creatorType": "author"
},
{
"firstName": "John M.",
"lastName": "Koomen",
"creatorType": "author"
},
{
"firstName": "David J.",
"lastName": "Merkler",
"creatorType": "author"
}
],
"date": "2012",
"DOI": "10.1002/pmic.201100327",
"ISSN": "1615-9861",
"abstractNote": "Amidation is a post-translational modification found at the C-terminus of ∼50% of all neuropeptide hormones. Cleavage of the Cα–N bond of a C-terminal glycine yields the α-amidated peptide in a reaction catalyzed by peptidylglycine α-amidating monooxygenase (PAM). The mass of an α-amidated peptide decreases by 58 Da relative to its precursor. The amino acid sequences of an α-amidated peptide and its precursor differ only by the C-terminal glycine meaning that the peptides exhibit similar RP-HPLC properties and tandem mass spectral (MS/MS) fragmentation patterns. Growth of cultured cells in the presence of a PAM inhibitor ensured the coexistence of α-amidated peptides and their precursors. A strategy was developed for precursor and α-amidated peptide pairing (PAPP): LC-MS/MS data of peptide extracts were scanned for peptide pairs that differed by 58 Da in mass, but had similar RP-HPLC retention times. The resulting peptide pairs were validated by checking for similar fragmentation patterns in their MS/MS data prior to identification by database searching or manual interpretation. This approach significantly reduced the number of spectra requiring interpretation, decreasing the computing time required for database searching and enabling manual interpretation of unidentified spectra. Reported here are the α-amidated peptides identified from AtT-20 cells using the PAPP method.",
"issue": "2",
"itemID": "doi:10.1002/pmic.201100327",
"language": "en",
"libraryCatalog": "Wiley Online Library",
"pages": "173-182",
"publicationTitle": "PROTEOMICS",
"url": "https://onlinelibrary.wiley.com/doi/abs/10.1002/pmic.201100327",
"volume": "12",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
},
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Post-translational modification"
},
{
"tag": "Spectral pairing"
},
{
"tag": "Technology"
},
{
"tag": "α-Amidated peptide"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://analyticalsciencejournals.onlinelibrary.wiley.com/doi/full/10.1002/pmic.201100327",
"items": [
{
"itemType": "journalArticle",
"title": "A mass spectrometry-based method to screen for α-amidated peptides",
"creators": [
{
"firstName": "Zhenming",
"lastName": "An",
"creatorType": "author"
},
{
"firstName": "Yudan",
"lastName": "Chen",
"creatorType": "author"
},
{
"firstName": "John M.",
"lastName": "Koomen",
"creatorType": "author"
},
{
"firstName": "David J.",
"lastName": "Merkler",
"creatorType": "author"
}
],
"date": "2012",
"DOI": "10.1002/pmic.201100327",
"ISSN": "1615-9861",
"abstractNote": "Amidation is a post-translational modification found at the C-terminus of ∼50% of all neuropeptide hormones. Cleavage of the Cα–N bond of a C-terminal glycine yields the α-amidated peptide in a reaction catalyzed by peptidylglycine α-amidating monooxygenase (PAM). The mass of an α-amidated peptide decreases by 58 Da relative to its precursor. The amino acid sequences of an α-amidated peptide and its precursor differ only by the C-terminal glycine meaning that the peptides exhibit similar RP-HPLC properties and tandem mass spectral (MS/MS) fragmentation patterns. Growth of cultured cells in the presence of a PAM inhibitor ensured the coexistence of α-amidated peptides and their precursors. A strategy was developed for precursor and α-amidated peptide pairing (PAPP): LC-MS/MS data of peptide extracts were scanned for peptide pairs that differed by 58 Da in mass, but had similar RP-HPLC retention times. The resulting peptide pairs were validated by checking for similar fragmentation patterns in their MS/MS data prior to identification by database searching or manual interpretation. This approach significantly reduced the number of spectra requiring interpretation, decreasing the computing time required for database searching and enabling manual interpretation of unidentified spectra. Reported here are the α-amidated peptides identified from AtT-20 cells using the PAPP method.",
"issue": "2",
"itemID": "doi:10.1002/pmic.201100327",
"language": "en",
"libraryCatalog": "Wiley Online Library",
"pages": "173-182",
"publicationTitle": "PROTEOMICS",
"url": "https://onlinelibrary.wiley.com/doi/abs/10.1002/pmic.201100327",
"volume": "12",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
},
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Post-translational modification"
},
{
"tag": "Spectral pairing"
},
{
"tag": "Technology"
},
{
"tag": "α-Amidated peptide"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://analyticalsciencejournals.onlinelibrary.wiley.com/doi/full/10.1002/pmic.201100327#references-section",
"items": [
{
"itemType": "journalArticle",
"title": "A mass spectrometry-based method to screen for α-amidated peptides",
"creators": [
{
"firstName": "Zhenming",
"lastName": "An",
"creatorType": "author"
},
{
"firstName": "Yudan",
"lastName": "Chen",
"creatorType": "author"
},
{
"firstName": "John M.",
"lastName": "Koomen",
"creatorType": "author"
},
{
"firstName": "David J.",
"lastName": "Merkler",
"creatorType": "author"
}
],
"date": "2012",
"DOI": "10.1002/pmic.201100327",
"ISSN": "1615-9861",
"abstractNote": "Amidation is a post-translational modification found at the C-terminus of ∼50% of all neuropeptide hormones. Cleavage of the Cα–N bond of a C-terminal glycine yields the α-amidated peptide in a reaction catalyzed by peptidylglycine α-amidating monooxygenase (PAM). The mass of an α-amidated peptide decreases by 58 Da relative to its precursor. The amino acid sequences of an α-amidated peptide and its precursor differ only by the C-terminal glycine meaning that the peptides exhibit similar RP-HPLC properties and tandem mass spectral (MS/MS) fragmentation patterns. Growth of cultured cells in the presence of a PAM inhibitor ensured the coexistence of α-amidated peptides and their precursors. A strategy was developed for precursor and α-amidated peptide pairing (PAPP): LC-MS/MS data of peptide extracts were scanned for peptide pairs that differed by 58 Da in mass, but had similar RP-HPLC retention times. The resulting peptide pairs were validated by checking for similar fragmentation patterns in their MS/MS data prior to identification by database searching or manual interpretation. This approach significantly reduced the number of spectra requiring interpretation, decreasing the computing time required for database searching and enabling manual interpretation of unidentified spectra. Reported here are the α-amidated peptides identified from AtT-20 cells using the PAPP method.",
"issue": "2",
"itemID": "doi:10.1002/pmic.201100327",
"language": "en",
"libraryCatalog": "Wiley Online Library",
"pages": "173-182",
"publicationTitle": "PROTEOMICS",
"url": "https://onlinelibrary.wiley.com/doi/abs/10.1002/pmic.201100327",
"volume": "12",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
},
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Post-translational modification"
},
{
"tag": "Spectral pairing"
},
{
"tag": "Technology"
},
{
"tag": "α-Amidated peptide"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://analyticalsciencejournals.onlinelibrary.wiley.com/doi/full/10.1002/pmic.201100327#citedBy",
"items": [
{
"itemType": "journalArticle",
"title": "A mass spectrometry-based method to screen for α-amidated peptides",
"creators": [
{
"firstName": "Zhenming",
"lastName": "An",
"creatorType": "author"
},
{
"firstName": "Yudan",
"lastName": "Chen",
"creatorType": "author"
},
{
"firstName": "John M.",
"lastName": "Koomen",
"creatorType": "author"
},
{
"firstName": "David J.",
"lastName": "Merkler",
"creatorType": "author"
}
],
"date": "2012",
"DOI": "10.1002/pmic.201100327",
"ISSN": "1615-9861",
"abstractNote": "Amidation is a post-translational modification found at the C-terminus of ∼50% of all neuropeptide hormones. Cleavage of the Cα–N bond of a C-terminal glycine yields the α-amidated peptide in a reaction catalyzed by peptidylglycine α-amidating monooxygenase (PAM). The mass of an α-amidated peptide decreases by 58 Da relative to its precursor. The amino acid sequences of an α-amidated peptide and its precursor differ only by the C-terminal glycine meaning that the peptides exhibit similar RP-HPLC properties and tandem mass spectral (MS/MS) fragmentation patterns. Growth of cultured cells in the presence of a PAM inhibitor ensured the coexistence of α-amidated peptides and their precursors. A strategy was developed for precursor and α-amidated peptide pairing (PAPP): LC-MS/MS data of peptide extracts were scanned for peptide pairs that differed by 58 Da in mass, but had similar RP-HPLC retention times. The resulting peptide pairs were validated by checking for similar fragmentation patterns in their MS/MS data prior to identification by database searching or manual interpretation. This approach significantly reduced the number of spectra requiring interpretation, decreasing the computing time required for database searching and enabling manual interpretation of unidentified spectra. Reported here are the α-amidated peptides identified from AtT-20 cells using the PAPP method.",
"issue": "2",
"itemID": "doi:10.1002/pmic.201100327",
"language": "en",
"libraryCatalog": "Wiley Online Library",
"pages": "173-182",
"publicationTitle": "PROTEOMICS",
"url": "https://onlinelibrary.wiley.com/doi/abs/10.1002/pmic.201100327",
"volume": "12",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
},
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Post-translational modification"
},
{
"tag": "Spectral pairing"
},
{
"tag": "Technology"
},
{
"tag": "α-Amidated peptide"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://onlinelibrary.wiley.com/doi/10.1002/3527603018.ch17",
"items": [
{
"itemType": "bookSection",
"title": "β-Rezeptorenblocker",
"creators": [
{
"firstName": "L.",
"lastName": "von Meyer",
"creatorType": "author"
},
{
"firstName": "W. R.",
"lastName": "Külpmann",
"creatorType": "author"
}
],
"date": "2002",
"ISBN": "9783527603015",
"abstractNote": "Immunoassay Hochleistungsflüssigkeitschromatographie (HPLC) Gaschromatographie Medizinische Beurteilung und klinische Interpretation Literatur",
"bookTitle": "Klinisch-toxikologische Analytik",
"extra": "DOI: 10.1002/3527603018.ch17",
"itemID": "doi:10.1002/3527603018.ch17",
"language": "de",
"libraryCatalog": "Wiley Online Library",
"pages": "365-370",
"publisher": "John Wiley & Sons, Ltd",
"url": "https://onlinelibrary.wiley.com/doi/abs/10.1002/3527603018.ch17",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
},
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "β-Rezeptorenblocker"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://onlinelibrary.wiley.com/doi/full/10.1111/j.1468-5930.2011.00548.x",
"items": [
{
"itemType": "journalArticle",
"title": "The Principled Case for Employing Private Military and Security Companies in Interventions for Human Rights Purposes",
"creators": [
{
"firstName": "Deane-Peter",
"lastName": "Baker",
"creatorType": "author"
},
{
"firstName": "James",
"lastName": "Pattison",
"creatorType": "author"
}
],
"date": "2012",
"DOI": "10.1111/j.1468-5930.2011.00548.x",
"ISSN": "1468-5930",
"abstractNote": "The possibility of using private military and security companies to bolster the capacity to undertake intervention for human rights purposes (humanitarian intervention and peacekeeping) has been increasingly debated. The focus of such discussions has, however, largely been on practical issues and the contingent problems posed by private force. By contrast, this article considers the principled case for privatising humanitarian intervention. It focuses on two central issues. First, does outsourcing humanitarian intervention to private military and security companies pose some fundamental, deeper problems in this context, such as an abdication of a state's duties? Second, on the other hand, is there a case for preferring these firms to other, state-based agents of humanitarian intervention? For instance, given a state's duties to their own military personnel, should the use of private military and security contractors be preferred to regular soldiers for humanitarian intervention?",
"issue": "1",
"itemID": "doi:10.1111/j.1468-5930.2011.00548.x",
"language": "en",
"libraryCatalog": "Wiley Online Library",
"pages": "1-18",
"publicationTitle": "Journal of Applied Philosophy",
"url": "https://onlinelibrary.wiley.com/doi/abs/10.1111/j.1468-5930.2011.00548.x",
"volume": "29",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
},
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://onlinelibrary.wiley.com/doi/abs/10.1111/j.1540-6261.1986.tb04559.x",
"items": [
{
"itemType": "journalArticle",
"title": "Volume for Winners and Losers: Taxation and Other Motives for Stock Trading",
"creators": [
{
"firstName": "Josef",
"lastName": "Lakonishok",
"creatorType": "author"
},
{
"firstName": "Seymour",
"lastName": "Smidt",
"creatorType": "author"
}
],
"date": "1986",
"DOI": "10.1111/j.1540-6261.1986.tb04559.x",
"ISSN": "1540-6261",
"abstractNote": "Capital gains taxes create incentives to trade. Our major finding is that turnover is higher for winners (stocks, the prices of which have increased) than for losers, which is not consistent with the tax prediction. However, the turnover in December and January is evidence of tax-motivated trading; there is a relatively high turnover for losers in December and for winners in January. We conclude that taxes influence turnover, but other motives for trading are more important. We were unable to find evidence that changing the length of the holding period required to qualify for long-term capital gains treatment affected turnover.",
"issue": "4",
"itemID": "doi:10.1111/j.1540-6261.1986.tb04559.x",
"language": "en",
"libraryCatalog": "Wiley Online Library",
"pages": "951-974",
"publicationTitle": "The Journal of Finance",
"shortTitle": "Volume for Winners and Losers",
"url": "https://onlinelibrary.wiley.com/doi/abs/10.1111/j.1540-6261.1986.tb04559.x",
"volume": "41",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
},
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://onlinelibrary.wiley.com/doi/abs/10.1002/(SICI)1521-3773(20000103)39:1%3C165::AID-ANIE165%3E3.0.CO;2-B",
"items": [
{
"itemType": "journalArticle",
"title": "Phosphane-Free Palladium-Catalyzed Coupling Reactions: The Decisive Role of Pd Nanoparticles",
"creators": [
{
"firstName": "Manfred T.",
"lastName": "Reetz",
"creatorType": "author"
},
{
"firstName": "Elke",
"lastName": "Westermann",
"creatorType": "author"
}
],
"date": "2000",
"DOI": "10.1002/(SICI)1521-3773(20000103)39:1<165::AID-ANIE165>3.0.CO;2-B",
"ISSN": "1521-3773",
"abstractNote": "Nanosized palladium colloids, generated in situ by reduction of PdII to Pd0 [Eq. (a)], are involved in the catalysis of phosphane-free Heck and Suzuki reactions with simple palladium salts such as PdCl2 or Pd(OAc)2, as demonstrated by transmission electron microscopic investigations.",
"issue": "1",
"itemID": "doi:10.1002/(SICI)1521-3773(20000103)39:1<165::AID-ANIE165>3.0.CO;2-B",
"language": "en",
"libraryCatalog": "Wiley Online Library",
"pages": "165-168",
"publicationTitle": "Angewandte Chemie International Edition",
"shortTitle": "Phosphane-Free Palladium-Catalyzed Coupling Reactions",
"url": "https://onlinelibrary.wiley.com/doi/abs/10.1002/%28SICI%291521-3773%2820000103%2939%3A1%3C165%3A%3AAID-ANIE165%3E3.0.CO%3B2-B",
"volume": "39",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
},
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "C−C coupling"
},
{
"tag": "colloids"
},
{
"tag": "palladium"
},
{
"tag": "transmission electron microscopy"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://onlinelibrary.wiley.com/doi/abs/10.1002/jhet.5570200408",
"items": [
{
"itemType": "journalArticle",
"title": "Studies on imidazole derivatives and related compounds. 2. Characterization of substituted derivatives of 4-carbamoylimidazolium-5-olate by ultraviolet absorption spectra",
"creators": [
{
"firstName": "Y.",
"lastName": "Tarumi",
"creatorType": "author"
},
{
"firstName": "T.",
"lastName": "Atsumi",
"creatorType": "author"
}
],
"date": "1983",
"DOI": "10.1002/jhet.5570200408",
"ISSN": "1943-5193",
"abstractNote": "The representative mono- and dialkyl-substituted derivatives of 4-carbamoylimidazolium-5-olate (1) were synthesized unequivocally. On the basis of their spectral data for ultraviolet absorption spectra in acidic, basic and neutral solutions, we have found some spectral characteristics which make it facile to clarify the position of substituents.",
"issue": "4",
"itemID": "doi:10.1002/jhet.5570200408",
"language": "en",
"libraryCatalog": "Wiley Online Library",
"pages": "875-885",
"publicationTitle": "Journal of Heterocyclic Chemistry",
"url": "https://onlinelibrary.wiley.com/doi/abs/10.1002/jhet.5570200408",
"volume": "20",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
},
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://onlinelibrary.wiley.com/doi/full/10.1002/ev.20077",
"items": [
{
"itemType": "journalArticle",
"title": "Multiple Case Study Methods and Findings",
"creators": [
{
"firstName": "J. Bradley",
"lastName": "Cousins",
"creatorType": "author"
},
{
"firstName": "Isabelle",
"lastName": "Bourgeois",
"creatorType": "author"
}
],
"date": "2014",
"DOI": "10.1002/ev.20077",
"ISSN": "1534-875X",
"abstractNote": "Research on organizational evaluation capacity building (ECB) has focused very much on the capacity to do evaluation, neglecting organizational demand for evaluation and the capacity to use it. This qualitative multiple case study comprises a systematic examination of organizational capacity within eight distinct organizations guided by a common conceptual framework. Described in this chapter are the rationale and methods for the study and then the sequential presentation of findings for each of the eight case organizations. Data collection and analyses for these studies occurred six years ago; findings are cross-sectional and do not reflect changes in organizations or their capacity for evaluation since that time. The format for presenting the findings was standardized so as to foster cross-case analyses, the focus for the next and final chapter of this volume.",
"issue": "141",
"itemID": "doi:10.1002/ev.20077",
"language": "en",
"libraryCatalog": "Wiley Online Library",
"pages": "25-99",
"publicationTitle": "New Directions for Evaluation",
"url": "https://onlinelibrary.wiley.com/doi/abs/10.1002/ev.20077",
"volume": "2014",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
},
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://agupubs.onlinelibrary.wiley.com/doi/10.1029/2020JC016068",
"items": [
{
"itemType": "journalArticle",
"title": "Labrador Sea Water Transport Across the Charlie-Gibbs Fracture Zone",
"creators": [
{
"firstName": "Afonso",
"lastName": "Gonçalves Neto",
"creatorType": "author"
},
{
"firstName": "Jaime B.",
"lastName": "Palter",
"creatorType": "author"
},
{
"firstName": "Amy",
"lastName": "Bower",
"creatorType": "author"
},
{
"firstName": "Heather",
"lastName": "Furey",
"creatorType": "author"
},
{
"firstName": "Xiaobiao",
"lastName": "Xu",
"creatorType": "author"
}
],
"date": "2020",
"DOI": "10.1029/2020JC016068",
"ISSN": "2169-9291",
"abstractNote": "Labrador Sea Water (LSW) is a major component of the deep limb of the Atlantic Meridional Overturning Circulation, yet LSW transport pathways and their variability lack a complete description. A portion of the LSW exported from the subpolar gyre is advected eastward along the North Atlantic Current and must contend with the Mid-Atlantic Ridge before reaching the eastern basins of the North Atlantic. Here, we analyze observations from a mooring array and satellite altimetry, together with outputs from a hindcast ocean model simulation, to estimate the mean transport of LSW across the Charlie-Gibbs Fracture Zone (CGFZ), a primary gateway for the eastward transport of the water mass. The LSW transport estimated from the 25-year altimetry record is 5.3 ± 2.9 Sv, where the error represents the combination of observational variability and the uncertainty in the projection of the surface velocities to the LSW layer. Current velocities modulate the interannual to higher-frequency variability of the LSW transport at the CGFZ, while the LSW thickness becomes important on longer time scales. The modeled mean LSW transport for 1993–2012 is higher than the estimate from altimetry, at 8.2 ± 4.1 Sv. The modeled LSW thickness decreases substantially at the CGFZ between 1996 and 2009, consistent with an observed decline in LSW volume in the Labrador Sea after 1994. We suggest that satellite altimetry and continuous hydrographic measurements in the central Labrador Sea, supplemented by profiles from Argo floats, could be sufficient to quantify the LSW transport at the CGFZ.",
"issue": "8",
"itemID": "doi:10.1029/2020JC016068",
"language": "en",
"libraryCatalog": "Wiley Online Library",
"pages": "e2020JC016068",
"publicationTitle": "Journal of Geophysical Research: Oceans",
"url": "https://onlinelibrary.wiley.com/doi/abs/10.1029/2020JC016068",
"volume": "125",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
},
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [
{
"note": "<p>e2020JC016068 10.1029/2020JC016068</p>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://onlinelibrary.wiley.com/doi/full/10.1002/hast.1072",
"items": [
{
"itemType": "journalArticle",
"title": "Precision (Mis)Education",
"creators": [
{
"firstName": "Lucas J.",
"lastName": "Matthews",
"creatorType": "author"
}
],
"date": "2020",
"DOI": "10.1002/hast.1072",
"ISSN": "1552-146X",
"abstractNote": "In August of 2018, the results of the largest genomic investigation in human history were published. Scanning the DNA of over one million participants, a genome-wide association study was conducted to identify genetic variants associated with the number of years of education a person has completed. This measure, called “educational attainment,” is often treated as a proxy for intelligence and cognitive ability. The study raises a host of hard philosophical questions about study design and strength of evidence. It also sets the basis for something far more controversial. Using a new genomic method that generates “polygenic scores,” researchers are now able to use the results of the study to predict a person's educational potential from a blood or saliva sample. Going a step further, some researchers have begun to promote “precision education,” which would tailor students’ school plans to their genetic profiles. The idea of precision education provokes concerns about stigma and self-fulfilling prophecies.",
"issue": "1",
"itemID": "doi:10.1002/hast.1072",
"language": "en",
"libraryCatalog": "Wiley Online Library",
"publicationTitle": "Hastings Center Report",
"url": "https://onlinelibrary.wiley.com/doi/abs/10.1002/hast.1072",
"volume": "50",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
},
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Philipp Zumstein^https?://catalog\.archives\.gov//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2017 Philipp Zumstein
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/id/')) {
return "book";
// something like archival material would be more appropriate...
// but for now we use this type to save some information
}
// multiples will not work easily because the API will then return
// somehow an empty json, thus we skipped this here.
return false;
}
async function doWeb(doc, url) {
let position = url.indexOf('/id/');
let id = url.substr(position + 4);
let jsonURL = `https://catalog.archives.gov/proxy/advanced-search?naId_is=${id}&allowLegacyOrgNames=true`;
let json = (await requestJSON(jsonURL)).body.hits.hits[0]._source.record;
let item = new Zotero.Item("book");
item.title = json.title;
var creators = [];
if (json.creators) {
creators.push(...json.creators);
}
if (json.ancestors) {
for (let ancestor of json.ancestors) {
if (ancestor.creators) {
creators.push(...ancestor.creators);
}
}
}
for (var i = 0; i < creators.length; i++) {
creators[i] = creators[i].heading.replace('(Most Recent)', '');
if (creators[i].includes(", ")) {
creators[i] = creators[i].replace(/, \d{4}\s*-\s*(\d{4})?$/, '').replace(/\([^(]+\)/, '');
item.creators.push(ZU.cleanAuthor(creators[i], "author", true));
}
else {
creators[i] = creators[i].replace(/\.? ?\d\d?\/\d\d?\/\d\d\d\d-\d\d?\/\d\d?\/\d\d\d\d/, '');
if (creators[i].length > 255) {
creators[i] = creators[i].substr(0, 251) + '...';
}
item.creators.push({ lastName: creators[i].trim(), creatorType: 'author', fieldMode: true });
}
}
if (json.coverageStartDate) {
item.date = json.coverageStartDate.logicalDate.replace('-01-01', '');
// Use issued if we have a date range
if (json.coverageEndDate) {
item.extra = 'issued: ' + item.date + '/'
+ json.coverageEndDate.logicalDate.replace('-12-31', '');
}
}
else {
item.date = json.date;
}
if (json.ancestors.length) {
item.series = json.ancestors[0].title;
}
item.abstractNote = json.scopeAndContentNote;
if (json.physicalOccurrences) {
for (let p of json.physicalOccurrences) {
if (p.referenceUnits.length && p.referenceUnits[0].name) {
item.archive = p.referenceUnits[0].name.replace(/\[.*\]/, '');
break;
}
}
}
item.archiveLocation = json.localIdentifier;
item.extra = (item.extra || '') + '\nNational Archives Identifier: ' + json.naId;
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://catalog.archives.gov/id/486076",
"items": [
{
"itemType": "book",
"title": "The Struggle for Trade Union Democracy, December 1947",
"creators": [
{
"lastName": "Supreme Commander for the Allied Powers. Economic and Scientific Section. Director for Labor. Labor Division",
"creatorType": "author",
"fieldMode": true
}
],
"date": "1945",
"archive": "National Archives at College Park - Textual Reference",
"extra": "issued: 1945/1952\nNational Archives Identifier: 486076",
"libraryCatalog": "US National Archives Research Catalog",
"series": "Records of Allied Operational and Occupation Headquarters, World War II",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://catalog.archives.gov/id/5496901",
"items": [
{
"itemType": "book",
"title": "Alien Case File for Francisca Torre Vda De Garcia",
"creators": [
{
"lastName": "Department of Justice. Immigration and Naturalization Service",
"creatorType": "author",
"fieldMode": true
}
],
"abstractNote": "This file consists of an alien case file for Francisca Torre Vda De Garcia. Date of birth is listed as 10/10/1901. Country is listed as Cuba. Port of Entry is Miami, Florida. Date of entry is 03/08/1973. Father is listed as Zotero. Mother is listed as Candita. Alias name is listed as Francisca Torres.",
"archive": "National Archives at Kansas City",
"archiveLocation": "A20229735/085-08-0653/Box 186",
"extra": "National Archives Identifier: 5496901",
"libraryCatalog": "US National Archives Research Catalog",
"series": "Records of U.S. Citizenship and Immigration Services",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://catalog.archives.gov/id/603604",
"items": [
{
"itemType": "book",
"title": "Manuscripts and Notes",
"creators": [
{
"firstName": "Harriet C.",
"lastName": "Brown",
"creatorType": "author"
}
],
"abstractNote": "This series contains book drafts and correspondence.",
"archive": "Herbert Hoover Library",
"extra": "National Archives Identifier: 603604",
"libraryCatalog": "US National Archives Research Catalog",
"series": "Harriet Connor Brown Papers",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Philipp Zumstein^https?://(www\.)?(\w)+\.microbiologyresearch\.org/(content/journal/|search?)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2016 Philipp Zumstein
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.search(/\/content\/journal\/\w+\/10\./) > -1) {
//e.g. http://jmm.microbiologyresearch.org/content/journal/jmm/10.1099/00222615-15-2-189
return "journalArticle";
}
if (getSearchResults(doc, true)) {
//e.g. http://ijs.microbiologyresearch.org/content/journal/ijsem/65/11
//http://jmm.microbiologyresearch.org/search?option1=author&noRedirect=true&value1=Ateequr+Rehman&facetOptions=2&facetNames=pub_author_facet&operator2=AND&option2=pub_author_facet&value2=%27Patricia+Lepage%27
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('h4.resultItem__title > a');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
async function doWeb(doc, url) {
if (detectWeb(doc, url) == 'multiple') {
let items = await Zotero.selectItems(getSearchResults(doc, false));
if (items) {
await Promise.all(
Object.keys(items)
.map(url => requestDocument(url).then(scrape))
);
}
}
else {
await scrape(doc, url);
}
}
async function scrape(doc, url = doc.location.href) {
var risURL;
var node = ZU.xpath(doc, '//ul[@id="export-list"]/li/a[contains(@title,"RefWorks")]');
if (node.length > 0) {
risURL = node[0].href;
}
else {
// Trim query string and hash
url = url.replace(/(\?.*)?(#.*)?$/, '');
risURL = url + "/cite/refworks";
}
ZU.doGet(risURL, function (text) {
if (/A1\s+.+YR\s+\d{4}/.test(text)) {
// they sometimes attach the year to the last author in the same line
text = text.replace(/(A1\s+.+)(YR\s+\d{4})/, "$1\n$2");
}
// Z.debug(text)
var translator = Zotero.loadTranslator("import");
translator.setTranslator("1a3506da-a303-4b0a-a1cd-f216e6138d86");
translator.setString(text);
translator.setHandler("itemDone", function (obj, item) {
var pdfURL = attr(doc, '.download-pdf form.ft-download-content__form--pdf', 'action');
if (pdfURL) {
// Z.debug(pdfURL)
item.attachments.push({
url: pdfURL,
title: "Full Text PDF",
mimeType: "application/pdf"
});
}
else {
item.attachments.push({
title: "Snapshot",
document: doc
});
}
// Some fields have trailing commas
if (item.publicationTitle) {
item.publicationTitle = item.publicationTitle.replace(/,$/, '');
}
if (item.abstractNote) {
item.abstractNote = item.abstractNote.replace(/,$/, '');
}
if (item.ISSN) {
item.ISSN = item.ISSN.replace(/,$/, '');
}
/* var abstract = ZU.xpath(doc,'//div[contains(@class, "abstract")]//div[contains(@class,"article-container")]');
if (abstract.length > 0) {
item.abstractNote = abstract[0].textContent.replace(/^\s*Summary/, '').trim();
}*/
item.complete();
});
translator.translate();
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.microbiologyresearch.org/content/journal/jmm/10.1099/00222615-15-2-189",
"items": [
{
"itemType": "journalArticle",
"title": "The Microbial Ecology of the Large Bowel of Breastfed and Formula-fed Infants During the First Year of Life",
"creators": [
{
"lastName": "Stark",
"firstName": "P. L.",
"creatorType": "author"
},
{
"lastName": "Lee",
"firstName": "A.",
"creatorType": "author"
}
],
"date": "1982",
"DOI": "10.1099/00222615-15-2-189",
"ISSN": "1473-5644",
"abstractNote": "SUMMARY The succession of bacterial populations in the large bowel of seven breast-fed and seven formula-fed infants was examined during the first year of life. The composition of the intestinal microflora varied according to the infant’s diet. During the first week of life breast-fed and formula-fed infants were colonised by enterobacteria and enterococci followed by bifidobacteria, Bacteroides spp., clostridia and anaerobic streptococci. From week 4 until solid foods were given, breast-fed babies had a simple flora consisting of bifidobacteria and relatively few enterobacteria and enterococci. Formula-fed babies during the corresponding period were more often colonised by other anaerobes in addition to bifidobacteria and had higher counts of facultatively anaerobic bacteria. The introduction of solid food to the breast-fed infants caused a major disturbance in the microbial ecology of the large bowel as counts of enterobacteria and enterococci rose sharply and colonisation by Bacteroides spp., clostridia and anaerobic streptococci occurred. This was not observed when formula-fed infants began to take solids; instead, counts of facultative anaerobes remained high while colonisation by anaerobes other than bifidobacteria continued. At 12 months, the anaerobic bacterial populations of the large bowel of breast-fed and formula-fed infants were beginning to resemble those of adults in number and composition and there was a corresponding decrease in the number of facultative anaerobes. These changes are discussed in relation to changes in susceptibility to gastro-intestinal infection.",
"issue": "2",
"libraryCatalog": "Microbiology Society Journals",
"pages": "189-203",
"publicationTitle": "Journal of Medical Microbiology",
"url": "https://www.microbiologyresearch.org/content/journal/jmm/10.1099/00222615-15-2-189",
"volume": "15",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.microbiologyresearch.org/content/journal/ijsem/10.1099/ijsem.0.000872",
"items": [
{
"itemType": "journalArticle",
"title": "Reclassification of Achromobacter spiritinus Vandamme et al. 2013 as a later heterotypic synonym of Achromobacter marplatensis Gomila et al. 2011",
"creators": [
{
"lastName": "Vandamme",
"firstName": "Peter A.",
"creatorType": "author"
},
{
"lastName": "Peeters",
"firstName": "Charlotte",
"creatorType": "author"
},
{
"lastName": "Cnockaert",
"firstName": "Margo",
"creatorType": "author"
},
{
"lastName": "Gomila",
"firstName": "Margarita",
"creatorType": "author"
},
{
"lastName": "Moore",
"firstName": "Edward R. B.",
"creatorType": "author"
},
{
"lastName": "Spilker",
"firstName": "Theodore",
"creatorType": "author"
},
{
"lastName": "LiPuma",
"firstName": "John J.",
"creatorType": "author"
}
],
"date": "2016",
"DOI": "10.1099/ijsem.0.000872",
"ISSN": "1466-5034",
"abstractNote": "A repeat multi-locus sequence analysis (MLSA) of concatenated nusA, eno, rpoB, gltB, lepA, nuoL and nrdA sequences of strains classified as Achromobacter marplatensis was performed. The results revealed that earlier reported sequence data of the proposed type strain were erroneous, and that the corrected concatenated sequence divergence between the A. marplatensis LMG 26219T ( = CCUG 56371T) sequence type and that of strains of Achromobacter spiritinus was well below the 2.1 % threshold value that delineates species of the genus Achromobacter. These results therefore demonstrated that strains which were classified as A. spiritinus should be reclassified as A. marplatensis and that the name Achromobacter spiritinus should no longer be used. An emendation of the description of Achromobacter marplatensis is warranted.",
"issue": "4",
"libraryCatalog": "Microbiology Society Journals",
"pages": "1641-1644",
"publicationTitle": "International Journal of Systematic and Evolutionary Microbiology",
"url": "https://www.microbiologyresearch.org/content/journal/ijsem/10.1099/ijsem.0.000872",
"volume": "66",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://mic.microbiologyresearch.org/search?value1=h2o&option1=all&option2=pub_serialIdent&value2=&operator2=AND",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.microbiologyresearch.org/content/journal/ijsem/10.1099/ijsem.0.004683?crawler=true",
"items": [
{
"itemType": "journalArticle",
"title": "Desulfovibrio subterraneus sp. nov., a mesophilic sulfate-reducing deltaproteobacterium isolated from a deep siliceous mudstone formation",
"creators": [
{
"lastName": "Ueno",
"firstName": "Akio",
"creatorType": "author"
},
{
"lastName": "Tamazawa",
"firstName": "Satoshi",
"creatorType": "author"
},
{
"lastName": "Tamamura",
"firstName": "Shuji",
"creatorType": "author"
},
{
"lastName": "Murakami",
"firstName": "Takuma",
"creatorType": "author"
},
{
"lastName": "Kiyama",
"firstName": "Tamotsu",
"creatorType": "author"
},
{
"lastName": "Inomata",
"firstName": "Hidenori",
"creatorType": "author"
},
{
"lastName": "Amano",
"firstName": "Yuki",
"creatorType": "author"
},
{
"lastName": "Miyakawa",
"firstName": "Kazuya",
"creatorType": "author"
},
{
"lastName": "Tamaki",
"firstName": "Hideyuki",
"creatorType": "author"
},
{
"lastName": "Naganuma",
"firstName": "Takeshi",
"creatorType": "author"
},
{
"lastName": "Kaneko",
"firstName": "Katsuhiko",
"creatorType": "author"
}
],
"date": "2021",
"DOI": "10.1099/ijsem.0.004683",
"ISSN": "1466-5034",
"abstractNote": "A novel mesophilic sulfate-reducing bacterium, strain HN2T, was isolated from groundwater sampled from the subsurface siliceous mudstone of the Wakkanai Formation located in Horonobe, Hokkaido, Japan. The bacterium was Gram-negative and vibrio-shaped, and its motility was conferred by a single polar flagellum. Cells had desulfoviridin. Catalase and oxidase activities were not detected. It grew in the temperature range of 25–40 °C (optimum, 35 °C) and pH range of 6.3–8.1 (optimum, pH 7.2–7.6). It used sulfate, thiosulfate, dimethyl sulfoxide, anthraquinone-2,6-disulfonate, Fe3+, and manganese oxide, but not elemental sulfur, nitrite, nitrate, or fumarate as electron acceptors. The strain showed weak growth with sulfite as the electron acceptor. Fermentative growth with pyruvate, lactate and cysteine was observed in the absence of sulfate, but not with malate or fumarate. NaCl was not required, but the strain tolerated up to 40 g l–1. Strain HN2T did not require vitamins. The major cellular fatty acids were iso-C15 : 0 (23.8 %), C18 : 1 ω9t (18.4 %), C18 : 0 (15.0 %), C16 : 0 (14.5 %), and anteiso-C17 :0 (10.1 %). The major respiratory quinone was menaquinone MK-6(H2). The G+C content of the genomic DNA was 56.7 mol%. Based on 16S rRNA gene sequence analysis, the closest phylogenetic relative of strain HN2T is Desulfovibrio psychrotolerans JS1T (97.0 %). Digital DNA–DNA hybridization (dDDH) and average nucleotide identity (ANI) values of the strains HN2T and D. psychrotolerans JS1T were 22.2 and 79.8 %, respectively. Based on the phenotypic and molecular genetic evidence, we propose a novel species, D. subterraneus sp. nov. with the type strain HN2T (=DSM 101010T=NBRC 112213T).",
"issue": "2",
"libraryCatalog": "Microbiology Society Journals",
"pages": "004683",
"publicationTitle": "International Journal of Systematic and Evolutionary Microbiology",
"url": "https://www.microbiologyresearch.org/content/journal/ijsem/10.1099/ijsem.0.004683",
"volume": "71",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Philipp Zumstein^https?://(online|blogs|www)?\.wsj\.com//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2016 Philipp Zumstein
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('blogs.wsj.com')) {
return "blogPost";
}
else if (url.includes('articles')) {
return "newspaperArticle";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = ZU.xpath(doc, '//h3[contains(@class, "headline")]/a');
for (var i = 0; i < rows.length; i++) {
var href = rows[i].href;
var title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) return;
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
var type = detectWeb(doc, url);
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setHandler('itemDone', function (obj, item) {
item.ISSN = "0099-9660";
item.language = "en-US";
if (type == "newspaperArticle") {
item.publicationTitle = "Wall Street Journal";
}
// Multiple authors are not seperated into multiple metadata fields
// and will therefore be extracted wrongly into one author. We
// correct this by using the JSON-LD data.
var jsonld = ZU.xpathText(doc, '//script[@type="application/ld+json"]');
if (jsonld) {
var data = JSON.parse(jsonld);
for (let i = 0; i < data.length; i++) {
if (data[i]["@type"] == "NewsArticle") {
let jsonAuthor = false;
if (data[i].author && data[i].author.length) {
jsonAuthor = true;
item.creators = [];
for (let j = 0; j < data[i].author.length; j++) {
if (data[i].author[j]["@type"] == "Person") {
item.creators.push(ZU.cleanAuthor(data[i].author[j].name, "author"));
}
else {
item.creators.push(ZU.cleanAuthor(data[i].author[j].name, "author", true));
}
}
}
if (!jsonAuthor) {
// If we don't get authors from JSON (as is the case for old articles)
// parse them from metaheader
let authorString = attr('meta[name="author"]', 'content');
if (authorString) {
item.creators = [];
let authors = authorString.split(/,?\s+and\s+|,\s+/);
for (let author of authors) {
item.creators.push(ZU.cleanAuthor(author, "author", false));
}
}
}
break;
}
}
}
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.itemType = type;
trans.addCustomFields({
"article.published": "date"
});
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.wsj.com/articles/SB10001424052970204517204577046222233016362",
"items": [
{
"itemType": "newspaperArticle",
"title": "Hundreds Say They'd Take Australian Mining Job",
"creators": [
{
"firstName": "John W.",
"lastName": "Miller",
"creatorType": "author"
}
],
"date": "2011-11-18T19:58:00Z",
"ISSN": "0099-9660",
"abstractNote": "A profile of an Australian miner making $200,000 a year, published in The Wall Street Journal, led hundreds of people to ask how they could apply for such a job.",
"language": "en-US",
"libraryCatalog": "www.wsj.com",
"publicationTitle": "Wall Street Journal",
"section": "Careers",
"url": "http://online.wsj.com/article/SB10001424052970204517204577046222233016362.html",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.wsj.com/articles/SB10001424052970203471004577144672783559392",
"items": [
{
"itemType": "newspaperArticle",
"title": "An Odd Turn in Insider Case",
"creators": [
{
"firstName": "Jenny",
"lastName": "Strasburg",
"creatorType": "author"
},
{
"firstName": "Susan",
"lastName": "Pulliam",
"creatorType": "author"
}
],
"date": "2012-01-06T23:20:00Z",
"ISSN": "0099-9660",
"abstractNote": "An outspoken analyst who is embroiled in the Wall Street insider-trading investigation allegedly left threatening messages for two FBI agents.",
"language": "en-US",
"libraryCatalog": "www.wsj.com",
"publicationTitle": "Wall Street Journal",
"section": "Markets",
"url": "http://online.wsj.com/article/SB10001424052970203471004577144672783559392.html",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.wsj.com/search/term.html?KEYWORDS=argentina&mod=DNH_S",
"defer": true,
"items": "multiple"
},
{
"type": "web",
"url": "https://www.wsj.com/articles/BL-REB-15488",
"items": [
{
"itemType": "newspaperArticle",
"title": "Number of the Week: Americans' Cheaper Restaurant Bills",
"creators": [
{
"firstName": "Phil",
"lastName": "Izzo",
"creatorType": "author"
}
],
"date": "2012-01-07T10:00:00Z",
"ISSN": "0099-9660",
"abstractNote": "Americans spend less per visit to restaurants than most other major industrialized countries, according to data compiled by market research firm NPD Group.",
"language": "en-US",
"libraryCatalog": "www.wsj.com",
"publicationTitle": "Wall Street Journal",
"section": "Real Time Economics",
"shortTitle": "Number of the Week",
"url": "https://www.wsj.com/articles/BL-REB-15488",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.wsj.com/articles/american-detained-in-north-korea-to-face-trial-next-sunday-1410053845",
"items": [
{
"itemType": "newspaperArticle",
"title": "American Detained in North Korea to Face Trial Next Sunday",
"creators": [
{
"firstName": "Jeyup S.",
"lastName": "Kwaak",
"creatorType": "author"
}
],
"date": "2014-09-07T01:37:00Z",
"ISSN": "0099-9660",
"abstractNote": "Matthew Miller, one of three Americans detained by North Korea, will face trial next Sunday, the country's state media said.",
"language": "en-US",
"libraryCatalog": "www.wsj.com",
"publicationTitle": "Wall Street Journal",
"section": "World",
"url": "http://online.wsj.com/articles/american-detained-in-north-korea-to-face-trial-next-sunday-1410053845",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Crime/Courts"
},
{
"tag": "OASN"
},
{
"tag": "ONEW"
},
{
"tag": "Political/General News"
},
{
"tag": "SYND"
},
{
"tag": "World News"
},
{
"tag": "american detained in north korea"
},
{
"tag": "american in north korea"
},
{
"tag": "courts"
},
{
"tag": "crime"
},
{
"tag": "general news"
},
{
"tag": "matthew miller"
},
{
"tag": "north korea"
},
{
"tag": "political"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.wsj.com/articles/faa-suffers-glitch-to-crew-alert-system-potentially-affecting-flights-in-u-s-11673437407?mod=hp_lead_pos1",
"items": [
{
"itemType": "newspaperArticle",
"title": "U.S. Flight Disruptions Mount After FAA Grounding Order Ends ",
"creators": [
{
"firstName": "Andrew",
"lastName": "Tangel",
"creatorType": "author"
},
{
"firstName": "Alison",
"lastName": "Sider",
"creatorType": "author"
},
{
"firstName": "Benjamin",
"lastName": "Katz",
"creatorType": "author"
}
],
"date": "2023-01-11T11:43:00Z",
"ISSN": "0099-9660",
"abstractNote": "The Federal Aviation Administration lifted its ban on domestic flight departures across the U.S. following an overnight outage.",
"language": "en-US",
"libraryCatalog": "www.wsj.com",
"publicationTitle": "Wall Street Journal",
"section": "Business",
"url": "https://www.wsj.com/articles/faa-suffers-glitch-to-crew-alert-system-potentially-affecting-flights-in-u-s-11673437407",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "AAL"
},
{
"tag": "Air Transport"
},
{
"tag": "Airlines"
},
{
"tag": "American Airlines Group"
},
{
"tag": "Automotive"
},
{
"tag": "Business/Disruptive Innovation"
},
{
"tag": "C&E Industry News Filter"
},
{
"tag": "Content Types"
},
{
"tag": "Corporate/Industrial News"
},
{
"tag": "DAL"
},
{
"tag": "Delta Air Lines"
},
{
"tag": "FDX"
},
{
"tag": "Factiva Filters"
},
{
"tag": "FedEx"
},
{
"tag": "JBLU"
},
{
"tag": "JetBlue Airways"
},
{
"tag": "LUV"
},
{
"tag": "Low Cost Airlines"
},
{
"tag": "Passenger Airlines"
},
{
"tag": "Political/General News"
},
{
"tag": "Product/Service Disruptions"
},
{
"tag": "Products/Services"
},
{
"tag": "Regulation/Government Policy"
},
{
"tag": "SYND"
},
{
"tag": "Southwest Airlines"
},
{
"tag": "Transport"
},
{
"tag": "Transportation/Logistics"
},
{
"tag": "UAL"
},
{
"tag": "United Airlines Holdings"
},
{
"tag": "WSJ-PRO-WSJ.com"
},
{
"tag": "business"
},
{
"tag": "corporate"
},
{
"tag": "disruptive innovation"
},
{
"tag": "general news"
},
{
"tag": "gfx-contrib"
},
{
"tag": "government policy"
},
{
"tag": "industrial news"
},
{
"tag": "logistics"
},
{
"tag": "political"
},
{
"tag": "product"
},
{
"tag": "products"
},
{
"tag": "regulation"
},
{
"tag": "service disruptions"
},
{
"tag": "services"
},
{
"tag": "transportation"
},
{
"tag": "wsjcorp"
},
{
"tag": "wsjspeeddesk"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Philipp Zumstein^https?://dialnet\.unirioja\.es//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2016 Philipp Zumstein
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/servlet/articulo')) {
return "journalArticle";
}
else if (url.includes('/servlet/libro')) {
return "book";
}
else if (url.includes('/servlet/tesis')) {
return "thesis";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = ZU.xpath(doc, '//p/span[@class="titulo"]/a');
for (var i = 0; i < rows.length; i++) {
var href = rows[i].href;
var title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) {
return;
}
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var creators = doc.querySelectorAll('meta[name="DC.creator"]');
var abstracts = doc.querySelectorAll('meta[name="DC.description"]');
// Abstracts appear in up to three languages
var abstractArray = [];
for (let abstract of abstracts) {
abstract = abstract.content.replace(/\n/g, " ");
abstractArray.push(abstract);
}
abstracts = abstractArray.join("\n");
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setHandler('itemDone', function (obj, item) {
item.url = url;
item.abstractNote = abstracts;
// Delete generic abstract as "Información del artículo <title>"
if (item.abstractNote && item.abstractNote.includes(item.title) && item.abstractNote.length < item.title.length + 30) {
delete item.abstractNote;
}
// Swap out authors for DC authors which have proper commas
if (item.creators.length == creators.length) {
item.creators = [];
for (let creator of creators) {
creator = creator.content;
item.creators.push(ZU.cleanAuthor(creator, "author", true));
}
}
// in case of double issue e.g. "3-4" wrong issue number in Embedded Metadata e,g. "3"
// clean issue number in case of multiple download
var issue = ZU.xpathText(doc, '//*[@id="informacion"]//a[contains(text(), "Nº.")]');
if (issue) {
// e.g. Vol. 89, Nº. 3-4, 2012
item.issue = issue.split('Nº.')[1].split(',')[0];
}
// Delete generic keywords
item.tags = [];
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://dialnet.unirioja.es/servlet/libro?codigo=293780",
"items": [
{
"itemType": "book",
"title": "Libres, buenos y justos como miembros de un mismo cuerpo: lecciones de teoría del derecho y de derecho natural",
"creators": [
{
"firstName": "Julián",
"lastName": "Vara Martín",
"creatorType": "author"
}
],
"date": "2007",
"ISBN": "9788430945450",
"language": "spa",
"libraryCatalog": "dialnet.unirioja.es",
"publisher": "Tecnos",
"shortTitle": "Libres, buenos y justos como miembros de un mismo cuerpo",
"url": "https://dialnet.unirioja.es/servlet/libro?codigo=293780",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://dialnet.unirioja.es/servlet/articulo?codigo=3661304",
"items": [
{
"itemType": "journalArticle",
"title": "Juicios, discursos y acción política en grupos de jóvenes estudiantes universitarios de Bogotá",
"creators": [
{
"firstName": "Martha Cecilia",
"lastName": "Lozano Ardila",
"creatorType": "author"
},
{
"firstName": "Sara Victoria",
"lastName": "Alvarado Salgado",
"creatorType": "author"
}
],
"date": "2011",
"ISSN": "1692-715X",
"abstractNote": "This article presents the outcome of research conducted between 2006 and 2009 on speeches and policy action in seven groups of young university students in Bogotá. Theoretical, epistemological and methodological research was supported by the approach of Hannah Arendt (2001a, 2001b), were supplemented by the insights of Kohn (2005), Brunet (2007), Sánchez (2003), Rosenthal (2006) and Fraser (1997, 2008). The research was developed from four main categories: conceptions of political citizenship; constraints of politics, democracy and citizenship; trigger political action by young people and forms of political action by young people. It concludes with the need for education for political participation and ethics in Colombia reconfiguration.\nEn este artículo se presentan los resultados de la investigación llevada a cabo entre 2006 y 2009 sobre discursos y acción política en siete grupos de jóvenes estudiantes universitarios de Bogotá. Teórica, epistemológica y metodológicamente, se sustentó la investigación en los planteamientos de Hannah Arendt (2001a, 2001b), se complementaron con las comprensiones de Kohn (2005), Brunet (2007), Sánchez (2003), Greppi (2006) y Fraser (1997, 2008). El trabajo se desarrolló desde cuatro categorías fundamentales: concepciones de política, ciudadanía; condicionantes de la política, democracia y la ciudadanía; detonantes de la acción política del los colectivos de jóvenes y las formas de acción política de los jóvenes y las jóvenes. Se Concluye con la necesidad de una educación para la participación política y la reconfiguración ética en Colombia.\nEste artigo apresenta os resultados de uma pesquisa realizada entre 2006 e 2009, em discursos e ação política em sete grupos de jovens universitários em Bogotá. Teóricas, epistemológicas e metodológicas de pesquisa foi suportada pela abordagem de Hannah Arendt (2001a, 2001b), foram complementadas com as idéias de Kohn (2005), Brunet (2007), Sánchez (2003), Rosenthal (2006) e Fraser (1997, 2008). O trabalho foi desenvolvido a partir de quatro categorias principais: as concepções de cidadania política; restrições da política, da democracia e da cidadania; desencadear uma ação política por parte dos jovens e das formas de ação política dos jovens. Conclui-se com a necessidade de educação para a participação política e ética na reconfiguração da Colômbia.",
"issue": "1",
"language": "spa",
"libraryCatalog": "dialnet.unirioja.es",
"pages": "101-113",
"publicationTitle": "Revista Latinoamericana de Ciencias Sociales, Niñez y Juventud",
"url": "https://dialnet.unirioja.es/servlet/articulo?codigo=3661304",
"volume": "9",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://dialnet.unirioja.es/buscar/documentos?querysDismax.DOCUMENTAL_TODO=politica",
"items": "multiple"
},
{
"type": "web",
"url": "https://dialnet.unirioja.es/ejemplar/381860",
"items": "multiple"
},
{
"type": "web",
"url": "https://dialnet.unirioja.es/servlet/articulo?codigo=4251373",
"items": [
{
"itemType": "journalArticle",
"title": "Secularisation as a challenge for a contemporary order theology International Theological Symposium as part of the research project \"Transmission of Faith in social and Religious Transformation Processes\".",
"creators": [
{
"firstName": "Ulrich",
"lastName": "Engel",
"creatorType": "author"
}
],
"date": "2012",
"ISSN": "1123-5772",
"issue": "3-4",
"language": "mul",
"libraryCatalog": "dialnet.unirioja.es",
"pages": "659-666",
"publicationTitle": "Angelicum",
"url": "https://dialnet.unirioja.es/servlet/articulo?codigo=4251373",
"volume": "89",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Aurimas Vinckevicius^https?://[^/]*wikipedia\.org//**
Copyright (c) 2021 Aurimas Vinckevicius and Abe Jellinek
This program is free software: you can redistribute it and/or
modify it under the terms of the GNU Affero General Public License
as published by the Free Software Foundation, either version 3 of
the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public
License along with this program. If not, see
<http://www.gnu.org/licenses/>.
*/
function detectWeb(doc, _url) {
// first check if we're on a search page. I don't know if anyone will commonly
// want to scrape multiples on Wikipedia, but there's no harm in supporting it
// (and thus preventing search result pages from being scraped as ordinary
// encyclopedia articles).
if (doc.body.classList.contains('ns-special') && getSearchResults(doc, true)) {
return 'multiple';
}
// exclude the non-viewing interface, since it doesn't give us much
// to work with and users are unlikely to want to add it as an
// encyclopediaArticle.
// e.g., this excludes https://en.wikipedia.org/w/index.php?title=Main_Page&action=edit,
// https://en.wikipedia.org/w/index.php?title=Main_Page&action=history, etc.
if (!doc.body.classList.contains('action-view')) {
return false;
}
// Diff interface is not supported
if (new URLSearchParams(doc.location.search).get('diff')) {
return false;
}
// excludes special pages, such as https://en.wikipedia.org/wiki/Special:RecentChanges
if (doc.body.classList.contains('ns--1')) {
return false;
}
// on desktop, the article title is in #firstHeading.
// on mobile, it's #section_0.
if (doc.getElementById('firstHeading') || doc.getElementById('section_0')) {
return 'encyclopediaArticle';
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.mw-search-result .mw-search-result-heading > a');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var item = new Zotero.Item('encyclopediaArticle');
item.title = ZU.trimInternal((doc.getElementById('firstHeading') || doc.getElementById('section_0')).textContent);
/* Removing the creator and publisher. Wikipedia is pushing the creator in their own
directions on how to cite http://en.wikipedia.org/w/index.php?title=Special%3ACite&page=Psychology
but style guides - including Chicago and APA disagree and prefer just using titles.
cf. e.g. http://blog.apastyle.org/apastyle/2009/10/how-to-cite-wikipedia-in-apa-style.html
For Publisher, not even Wikipedia suggests citing the Foundation as a Publisher.
item.creators.push({
lastName: 'Wikipedia contributors',
fieldMode: 1,
creatorType: 'author'
});
item.publisher = 'Wikimedia Foundation, Inc.';
*/
item.rights = 'Creative Commons Attribution-ShareAlike License';
// turns out it's not that trivial to get the localized title for Wikipedia
// we can try to strip it from the page title though
// test for all sorts of dashes to account for different locales
/** TODO: there's probably a better way to do this, since sometimes page
* title only says "- Wikipedia" (in some other language)
*/
var m = doc.title.match(/[\u002D\u00AD\u2010-\u2015\u2212\u2E3A\u2E3B]\s*([^\u002D\u00AD\u2010-\u2015\u2212\u2E3A\u2E3B]+)$/);
if (m) {
item.encyclopediaTitle = m[1];
}
else {
item.encyclopediaTitle = 'Wikipedia, the free encyclopedia';
}
// we don't get a permalink directly on mobile, but it goes into the
// "retrieved from" footer
let permalink = ZU.xpathText(doc, '//li[@id="t-permalink"]/a/@href')
|| attr(doc, '.printfooter a', 'href');
var revID;
if (permalink) {
revID = permalink.match(/[&?]oldid=(\d+)/)[1];
item.extra = 'Page Version ID: ' + revID;
if (permalink.startsWith('/')) {
item.url = 'https://' + doc.location.hostname + permalink;
}
else {
item.url = permalink;
}
}
else {
// if we can't find a link, just use the page URL
item.url = url;
}
item.attachments.push({
url: url,
title: 'Snapshot',
mimeType: 'text/html',
snapshot: true
});
item.language = doc.documentElement.lang;
// last modified date is hard to get from the page because it is localized
var pageInfoURL = '/w/api.php?action=query&format=json'
+ '&inprop=url%7Cdisplaytitle'
+ '&exintro=true&explaintext=true' // Intro section in plain text
+ '&prop=info%7Cextracts'
+ (revID // Different if we want a specific revision (this should be the general case)
? '%7Crevisions&rvprop=timestamp&revids=' + encodeURIComponent(revID)
: '&titles=' + encodeURIComponent(item.title)
);
ZU.doGet(pageInfoURL, function (text) {
var retObj = JSON.parse(text);
if (retObj && !retObj.query.pages['-1']) {
var pages = retObj.query.pages;
for (var i in pages) {
if (pages[i].revisions) {
item.date = pages[i].revisions[0].timestamp;
}
else {
item.date = pages[i].touched;
}
let displayTitle = pages[i].displaytitle
.replace(/<em>/g, '<i>')
.replace(/<\/em>/g, '</i>')
.replace(/<strong>/, '<b>')
.replace(/<\/strong>/, '</b>');
// https://www.zotero.org/support/kb/rich_text_bibliography
item.title = filterTagsInHTML(displayTitle,
'i, b, sub, sup, '
+ 'span[style="font-variant:small-caps;"], '
+ 'span[class="nocase"]');
// Note that this is the abstract for the latest revision,
// not necessarily the revision that is being queried
item.abstractNote = pages[i].extract;
// we should never have more than one page returned,
// but break just in case
break;
}
}
item.complete();
});
}
function filterTagsInHTML(html, allowSelector) {
let elem = new DOMParser().parseFromString(html, 'text/html');
filterTags(elem.body, allowSelector);
return elem.body.innerHTML;
}
function filterTags(root, allowSelector) {
for (let node of root.childNodes) {
if (!node.tagName) {
continue;
}
if (node.matches(allowSelector)) {
filterTags(node, allowSelector);
}
else {
while (node.firstChild) {
let firstChild = node.firstChild;
node.parentNode.insertBefore(firstChild, node);
filterTags(firstChild, allowSelector);
}
node.remove();
}
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://ru.wikipedia.org/w/index.php?title=%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D1%8F&oldid=43336101",
"items": [
{
"itemType": "encyclopediaArticle",
"title": "Россия",
"creators": [],
"date": "2012-04-06T20:11:32Z",
"abstractNote": "Росси́я или Росси́йская Федера́ция (РФ), — государство в Восточной Европе и Северной Азии. Территория России в её конституционных границах составляет 17 125 191 км²; население страны (в пределах её заявленной территории) составляет 146 171 015 чел. (2021). Занимает первое место в мире по территории, шестое — по объёму ВВП по ППС, и девятое — по численности населения.\nСтолица — Москва. Государственный язык на всей территории страны — русский, в ряде регионов России также установлены свои официальные языки. Денежная единица — российский рубль.\nРоссия — федеративная президентско-парламентская республика. С 31 декабря 1999 года (с перерывом в 2008—2012 годах, когда Дмитрий Медведев был президентом) должность президента Российской Федерации занимает Владимир Путин. C 16 января 2020 года должность председателя Правительства РФ занимает Михаил Мишустин.\nРоссия имеет 18 границ (16 сухопутных и 2 морских). В состав Российской Федерации входят 85 субъектов, 46 из которых именуются областями, 22 — республиками, 9 — краями, 3 — городами федерального значения, 4 — автономными округами и 1 — автономной областью. Всего в стране около 157 тысяч населённых пунктов. Россия является самой холодной страной в мире: 65 % её территории покрыты вечной мерзлотой; в России самая низкая среднегодовая температура воздуха среди всех стран мира, составляющая −5,5 °С; в России расположены: Северный полюс холода; Санкт-Петербург — самый северный в мире город с населением более одного миллиона человек; Мурманск — крупнейший в мире город, расположенный за Северным полярным кругом; Норильск — крупнейший заполярный город Азии; Сабетта — крупнейшее поселение севернее 70° с. ш. Также Россия является страной с максимальным перепадом температур в мире: 116,6 °C.\nРоссия — многонациональное государство с широким этнокультурным многообразием. Бо́льшая часть населения (около 75 %) относит себя к православию, что делает Россию страной с самым многочисленным православным населением в мире.\nРоссия — ядерная держава; одна из ведущих космических держав мира. Русский язык — язык мирового значения, один из шести официальных и рабочих языков ООН, ЮНЕСКО и других международных организаций.\nРоссия является постоянным членом Совета Безопасности ООН с правом вето; одна из современных великих держав мира. Также Россия состоит в ряде международных организаций: ООН, G20, ОБСЕ, Совете Европы, ЕАЭС, СНГ, ОДКБ, ВТО, ШОС, АТЭС, БРИКС, МОК и других.\nПосле распада СССР в конце 1991 года Российская Федерация была признана международным сообществом как государство-правопреемник СССР в вопросах ядерного потенциала, внешнего долга, государственной собственности за рубежом, а также членства в Совете Безопасности ООН.\nПо данным МВФ, объём ВВП по номиналу за 2019 год составил 1,7 трлн долларов (11 585 долларов на человека, 61-е место в мире). Объём ВВП по ППС за 2019 год составил 4,39 трлн долларов (29 181 долларов на человека, 50-е место в мире).",
"encyclopediaTitle": "Википедия",
"extra": "Page Version ID: 43336101",
"language": "ru",
"libraryCatalog": "Wikipedia",
"rights": "Creative Commons Attribution-ShareAlike License",
"url": "https://ru.wikipedia.org/w/index.php?title=%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D1%8F&oldid=43336101",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html",
"snapshot": true
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://en.wikipedia.org/w/index.php?title=Zotero&oldid=485342619",
"items": [
{
"itemType": "encyclopediaArticle",
"title": "Zotero",
"creators": [],
"date": "2012-04-03T14:41:27Z",
"abstractNote": "Zotero is a free and open-source reference management software to manage bibliographic data and related research materials (such as PDF files). Notable features include web browser integration, online syncing, generation of in-text citations, footnotes, and bibliographies, as well as integration with the word processors Microsoft Word, LibreOffice Writer, and Google Docs. It is produced by the Center for History and New Media at George Mason University.",
"encyclopediaTitle": "Wikipedia",
"extra": "Page Version ID: 485342619",
"language": "en",
"libraryCatalog": "Wikipedia",
"rights": "Creative Commons Attribution-ShareAlike License",
"url": "https://en.wikipedia.org/w/index.php?title=Zotero&oldid=485342619",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html",
"snapshot": true
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://en.wikipedia.org/wiki/Wikipedia:Article_wizard",
"items": [
{
"itemType": "encyclopediaArticle",
"title": "Wikipedia:Article wizard",
"creators": [],
"date": "2020-11-06T04:29:05Z",
"encyclopediaTitle": "Wikipedia",
"extra": "Page Version ID: 987303078",
"language": "en",
"libraryCatalog": "Wikipedia",
"rights": "Creative Commons Attribution-ShareAlike License",
"shortTitle": "Wikipedia",
"url": "https://en.wikipedia.org/w/index.php?title=Wikipedia:Article_wizard&oldid=987303078",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html",
"snapshot": true
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://en.m.wikipedia.org/w/index.php?title=1%25_rule_(Internet_culture)&oldid=999756024",
"items": [
{
"itemType": "encyclopediaArticle",
"title": "1% rule (Internet culture)",
"creators": [],
"date": "2021-01-11T20:19:42Z",
"abstractNote": "In Internet culture, the 1% rule is a rule of thumb pertaining to participation in an internet community, stating that only 1% of the users of a website add content, while the other 99% of the participants only lurk. Variants include the 1–9–90 rule (sometimes 90–9–1 principle or the 89:10:1 ratio), which states that in a collaborative website such as a wiki, 90% of the participants of a community only consume content, 9% of the participants change or update content, and 1% of the participants add content. \nSimilar rules are known in information science; for instance, the 80/20 rule known as the Pareto principle states that 20 percent of a group will produce 80 percent of the activity, however the activity is defined.",
"encyclopediaTitle": "Wikipedia",
"extra": "Page Version ID: 999756024",
"language": "en",
"libraryCatalog": "Wikipedia",
"rights": "Creative Commons Attribution-ShareAlike License",
"url": "https://en.wikipedia.org/w/index.php?title=1%25_rule_(Internet_culture)&oldid=999756024",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html",
"snapshot": true
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://en.wikipedia.org/w/index.php?title=List_of_Sex_and_the_City_episodes&oldid=964829978",
"items": [
{
"itemType": "encyclopediaArticle",
"title": "List of <i>Sex and the City</i> episodes",
"creators": [],
"date": "2020-06-27T20:48:06Z",
"abstractNote": "The following is a list of episodes from the American television series Sex and the City.",
"encyclopediaTitle": "Wikipedia",
"extra": "Page Version ID: 964829978",
"language": "en",
"libraryCatalog": "Wikipedia",
"rights": "Creative Commons Attribution-ShareAlike License",
"url": "https://en.wikipedia.org/w/index.php?title=List_of_Sex_and_the_City_episodes&oldid=964829978",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html",
"snapshot": true
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://en.wikipedia.org/w/index.php?search=zotero&title=Special%3ASearch&fulltext=1&ns0=1",
"items": "multiple"
}
]
/** END TEST CASES **/
100Philipp Zumstein^https?://([^/]+\.)?(www|preview)\.ncbi\.nlm\.nih\.gov[^/]*/(m/)?(books|pubmed|labs/pubmed|myncbi|sites/pubmed|sites/entrez|entrez/query\.fcgi\?.*db=PubMed|myncbi/browse/collection/?|myncbi/collections/)|^https?://pubmed\.ncbi\.nlm\.nih\.gov/(\d|\?|searches/|clipboard|collections/)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2015 Philipp Zumstein
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
/** ***************************
* General utility functions *
*****************************/
function lookupPMIDs(ids) {
var newUri = "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?"
+ "db=PubMed&tool=Zotero&retmode=xml&rettype=citation&id=" + ids.join(",");
// Zotero.debug(newUri);
Zotero.Utilities.HTTP.doGet(newUri, function (text) {
if (!text.includes('PubmedArticle') && !text.includes('PubmedBookArticle')) { // e.g. http://www.ncbi.nlm.nih.gov/pubmed/1477919937
throw new Error("No Pubmed Data found - Most likely eutils is temporarily down");
}
// call the import translator
var translator = Zotero.loadTranslator("import");
translator.setTranslator("fcf41bed-0cbc-3704-85c7-8062a0068a7a");
translator.setString(text);
translator.translate();
});
}
/** **************************
* Web translator functions *
****************************/
// retrieves the UID from an item page. Returns false if there is more than one.
function getUID(doc) {
var uid = ZU.xpath(doc, 'html/head/meta[@name="ncbi_uidlist" or @name="ncbi_article_id" or @name="uid"]/@content');
if (!uid.length) {
uid = ZU.xpath(doc, '//input[@id="absid"]/@value');
}
if (uid.length == 1 && uid[0].textContent.search(/^\d+$/) != -1) {
return uid[0].textContent;
}
uid = ZU.xpath(doc, 'html/head/link[@media="handheld"]/@href');
if (!uid.length) uid = ZU.xpath(doc, 'html/head/link[@rel="canonical"]/@href'); // mobile site
if (uid.length == 1) {
uid = uid[0].textContent.match(/\/(\d+)(?:\/|$)/);
if (uid) return uid[1];
}
// PMID from a bookshelf entry
var maincontent = doc.getElementById('maincontent');
if (maincontent) {
uid = ZU.xpath(maincontent,
'.//a[@title="PubMed record of this title" or @title="PubMed record of this page"]');
if (uid.length == 1 && uid[0].textContent.search(/^\d+$/) != -1) return uid[0].textContent;
}
return false;
}
// retrieve itemprop elements for scraping books directly from page where UID is not available
function getBookProps(doc) {
var main = doc.getElementById('maincontent');
if (!main) return false;
var itemprops = ZU.xpath(main, './/div[@itemtype="http://schema.org/Book"]//*[@itemprop]');
return itemprops.length ? itemprops : null;
}
// itemprop to Zotero field map
var bookRDFaMap = {
name: 'title',
bookEdition: 'edition',
author: 'creator/author',
publisher: 'publisher',
datePublished: 'date',
isbn: 'ISBN',
description: 'abstractNote'
};
function scrapeItemProps(itemprops) {
var item = new Zotero.Item('book');
for (var i = 0; i < itemprops.length; i++) {
var value = ZU.trimInternal(itemprops[i].textContent);
var field = bookRDFaMap[itemprops[i].getAttribute('itemprop')];
if (!field) continue;
if (field.indexOf('creator/') == 0) {
field = field.substr(8);
item.creators.push(ZU.cleanAuthor(value, field, false));
}
else if (field == 'ISBN') {
if (!item.ISBN) item.ISBN = '';
else item.ISBN += '; ';
item.ISBN += value;
}
else {
item[field] = value;
}
}
item.complete();
}
/**
* Handles:
* search results: http://www.ncbi.nlm.nih.gov/pubmed/?term=cell
* NCBI collections; http://www.ncbi.nlm.nih.gov/myncbi/browse/collection/40383442/?sort=&direction=
* My Bibliography
*/
function getSearchResults(doc, checkOnly) {
var results = doc.querySelectorAll('.rslt, .docsum-wrap, .citation-wrap, citationListItem');
var items = {}, found = false;
if (!results.length) return false;
for (var i = 0; i < results.length; i++) {
var title = ZU.xpathText(results[i], '(.//p[@class="title"]|.//h1)[1]')
|| ZU.xpathText(results[i], './/a[@class="docsum-title"]')
|| ZU.xpathText(results[i], './/div[@class="ncbi-docsum"]/a'); // My Bibliography
var uid = ZU.xpathText(results[i], './/input[starts-with(@id,"UidCheckBox")]/@value')
|| ZU.xpathText(results[i], './/div[contains(@class, "docsum-citation")]//span[@class="docsum-pmid"]')
|| ZU.xpathText(results[i], './div[@class="citation"]//input/@pmid') // My Bibliography
|| ZU.xpathText(results[i], './/dl[@class="rprtid"]/dd[preceding-sibling::*[1][text()="PMID:"]]');
if (!uid) {
uid = ZU.xpathText(results[i], './/p[@class="title"]/a/@href');
if (uid) uid = uid.match(/\/(\d+)/);
if (uid) uid = uid[1];
}
if (!uid || !title) continue;
if (checkOnly) return true;
found = true;
// Checkbox is a descendant of the containing .rprt div
var checkbox = ZU.xpath(results[i].parentNode, './/input[@type="checkbox"]')[0];
// Keys must be strings. Otherwise, Chrome sorts numerically instead of by insertion order.
items["u" + uid] = {
title: ZU.trimInternal(title),
checked: checkbox && checkbox.checked
};
}
return found ? items : false;
}
function detectWeb(doc, url) {
if (getSearchResults(doc, true) && !url.includes("/books/")) {
return "multiple";
}
if (!getUID(doc)) {
if (getBookProps(doc)) return 'book';
// if we can't get the UID or the book itemprops, we can't import
else return false;
}
// try to determine if this is a book
// "Sections" heading only seems to show up for books
var maincontent = doc.getElementById('maincontent');
if (maincontent && ZU.xpath(maincontent, './/div[@class="sections"]').length) {
var inBook = ZU.xpath(maincontent, './/div[contains(@class, "aff_inline_book")]').length;
return inBook ? "bookSection" : "book";
}
// determine if book or bookSection for PubMed Labs
var bookCitation = doc.getElementsByClassName('book-citation');
if (bookCitation.length > 0 && ZU.xpath(doc, './/div[@class="affiliations"]')) {
// For a bookSection there is the affiliations section of the authors of this
// section as well as another affiliation sections for the book authors.
var isChapter = doc.querySelectorAll('#full-view-heading div.affiliations').length > 1;
return isChapter ? "bookSection" : "book";
}
// from bookshelf page
var pdid = ZU.xpathText(doc, 'html/head/meta[@name="ncbi_pdid"]/@content');
if (pdid == "book-part") return 'bookSection';
if (pdid == "book-toc") return 'book';
return "journalArticle";
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc), function (selectedItems) {
if (!selectedItems) return;
var uids = [];
for (var i in selectedItems) {
uids.push(i.substr(1));
}
lookupPMIDs(uids);
});
}
else {
var uid = getUID(doc);
if (uid) {
lookupPMIDs([uid]);
}
else {
var itemprops = getBookProps(doc);
if (itemprops) {
scrapeItemProps(itemprops);
}
}
}
}
/** *****************************
* Search translator functions *
*******************************/
// extract PMID from a context object
function getPMID(co) {
var coParts = co.split("&");
for (var i = 0; i < coParts.length; i++) {
var part = coParts[i];
if (part.substr(0, 7) == "rft_id=") {
var value = decodeURIComponent(part.substr(7));
if (value.substr(0, 10) == "info:pmid/") {
return value.substr(10);
}
}
}
return false;
}
function detectSearch(item) {
if (item.contextObject) {
if (getPMID(item.contextObject)) {
return true;
}
}
// supply PMID as a string or array
if (item.PMID
&& (typeof item.PMID == 'string' || item.PMID.length > 0)) {
return true;
}
return false;
}
function doSearch(item) {
var pmid;
if (item.contextObject) {
pmid = getPMID(item.contextObject);
}
if (!pmid) pmid = item.PMID;
if (typeof pmid == "string") pmid = [pmid];
lookupPMIDs(pmid);
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.ncbi.nlm.nih.gov/pubmed/20729678",
"items": [
{
"itemType": "journalArticle",
"title": "Zotero: harnessing the power of a personal bibliographic manager",
"creators": [
{
"firstName": "Jaekea T.",
"lastName": "Coar",
"creatorType": "author"
},
{
"firstName": "Jeanne P.",
"lastName": "Sewell",
"creatorType": "author"
}
],
"date": "2010 Sep-Oct",
"DOI": "10.1097/NNE.0b013e3181ed81e4",
"ISSN": "1538-9855",
"abstractNote": "Zotero is a powerful free personal bibliographic manager (PBM) for writers. Use of a PBM allows the writer to focus on content, rather than the tedious details of formatting citations and references. Zotero 2.0 (http://www.zotero.org) has new features including the ability to synchronize citations with the off-site Zotero server and the ability to collaborate and share with others. An overview on how to use the software and discussion about the strengths and limitations are included.",
"extra": "PMID: 20729678",
"issue": "5",
"journalAbbreviation": "Nurse Educ",
"language": "eng",
"libraryCatalog": "PubMed",
"pages": "205-207",
"publicationTitle": "Nurse Educator",
"shortTitle": "Zotero",
"volume": "35",
"attachments": [
{
"title": "PubMed entry",
"mimeType": "text/html",
"snapshot": false
}
],
"tags": [
{
"tag": "Bibliographies as Topic"
},
{
"tag": "Database Management Systems"
},
{
"tag": "Humans"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.ncbi.nlm.nih.gov/pubmed?term=zotero",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.ncbi.nlm.nih.gov/pubmed/20821847",
"items": [
{
"itemType": "book",
"title": "Endocrinology: An Integrated Approach",
"creators": [
{
"firstName": "Stephen",
"lastName": "Nussey",
"creatorType": "author"
},
{
"firstName": "Saffron",
"lastName": "Whitehead",
"creatorType": "author"
}
],
"date": "2001",
"ISBN": "9781859962527",
"abstractNote": "Endocrinology has been written to meet the requirements of today's trainee doctors and the demands of an increasing number of degree courses in health and biomedical sciences, and allied subjects. It is a truly integrated text using large numbers of real clinical cases to introduce the basic biochemistry, physiology and pathophysiology underlying endocrine disorders and also the principles of clinical diagnosis and treatment. The increasing importance of the molecular and genetic aspects of endocrinology in relation to clinical medicine is explained.",
"callNumber": "NBK22",
"extra": "PMID: 20821847",
"language": "eng",
"libraryCatalog": "PubMed",
"place": "Oxford",
"publisher": "BIOS Scientific Publishers",
"rights": "Copyright © 2001, BIOS Scientific Publishers Limited.",
"shortTitle": "Endocrinology",
"url": "http://www.ncbi.nlm.nih.gov/books/NBK22/",
"attachments": [
{
"title": "PubMed entry",
"mimeType": "text/html",
"snapshot": false
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.ncbi.nlm.nih.gov/pubmed?term=21249754",
"items": [
{
"itemType": "book",
"title": "Cancer Syndromes",
"creators": [
{
"firstName": "Douglas L.",
"lastName": "Riegert-Johnson",
"creatorType": "editor"
},
{
"firstName": "Lisa A.",
"lastName": "Boardman",
"creatorType": "editor"
},
{
"firstName": "Timothy",
"lastName": "Hefferon",
"creatorType": "editor"
},
{
"firstName": "Maegan",
"lastName": "Roberts",
"creatorType": "editor"
}
],
"date": "2009",
"abstractNote": "Cancer Syndromes is a comprehensive multimedia resource for selected single gene cancer syndromes. Syndromes currently included are Peutz-Jeghers syndrome, juvenile polyposis, Birt-Hogg-Dubé syndrome, multiple endocrine neoplasia type 1 and familial atypical multiple mole melanoma syndrome. For each syndrome the history, epidemiology, natural history and management are reviewed. If possible the initial report in the literature of each syndrome is included as an appendix. Chapters are extensively annotated with figures and movie clips. Mission Statement: Improving the care of cancer syndrome patients.",
"callNumber": "NBK1825",
"extra": "PMID: 21249754",
"language": "eng",
"libraryCatalog": "PubMed",
"place": "Bethesda (MD)",
"publisher": "National Center for Biotechnology Information (US)",
"rights": "Copyright © 2009-, Douglas L Riegert-Johnson.",
"url": "http://www.ncbi.nlm.nih.gov/books/NBK1825/",
"attachments": [
{
"title": "PubMed entry",
"mimeType": "text/html",
"snapshot": false
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.ncbi.nlm.nih.gov/pubmed/?term=11109029",
"items": [
{
"itemType": "journalArticle",
"title": "Screening for hypercholesterolaemia versus case finding for familial hypercholesterolaemia: a systematic review and cost-effectiveness analysis",
"creators": [
{
"firstName": "D.",
"lastName": "Marks",
"creatorType": "author"
},
{
"firstName": "D.",
"lastName": "Wonderling",
"creatorType": "author"
},
{
"firstName": "M.",
"lastName": "Thorogood",
"creatorType": "author"
},
{
"firstName": "H.",
"lastName": "Lambert",
"creatorType": "author"
},
{
"firstName": "S. E.",
"lastName": "Humphries",
"creatorType": "author"
},
{
"firstName": "H. A.",
"lastName": "Neil",
"creatorType": "author"
}
],
"date": "2000",
"ISSN": "1366-5278",
"abstractNote": "BACKGROUND: In the majority of people with familial hypercholesterolaemia (FH) the disorder is caused by a mutation of the low-density lipoprotein receptor gene that impairs its proper function, resulting in very high levels of plasma cholesterol. Such levels result in early and severe atherosclerosis, and hence substantial excess mortality from coronary heart disease. Most people with FH are undiagnosed or only diagnosed after their first coronary event, but early detection and treatment with hydroxymethylglutaryl-coenzyme (HMG CoA) reductase inhibitors (statins) can reduce morbidity and mortality. The prevalence of FH in the UK population is estimated to be 1 in 500, which means that approximately 110,000 people are affected.\nOBJECTIVES: To evaluate whether screening for FH is appropriate. To determine which system of screening is most acceptable and cost-effective. To assess the deleterious psychosocial effects of genetic and clinical screening for an asymptomatic treatable inherited condition. To assess whether the risks of screening outweigh potential benefits.\nMETHODS: DATA SOURCES: Relevant papers were identified through a search of the electronic databases. Additional papers referenced in the search material were identified and collected. Known researchers in the field were contacted and asked to supply information on unpublished or ongoing studies. INCLUSION/EXCLUSION CRITERIA: SCREENING AND TREATMENT: The review included studies of the mortality and morbidity associated with FH, the effectiveness and cost of treatment (ignoring pre-statin therapies in adults), and of the effectiveness or cost of possible screening strategies for FH. PSYCHOSOCIAL EFFECTS OF SCREENING: The search for papers on the psychological and social effects of screening for a treatable inherited condition was limited to the last 5 years because recent developments in genetic testing have changed the nature and implications of such screening tests. Papers focusing on genetic testing for FH and breast cancer were included. Papers relating to the risk of coronary heart disease with similarly modifiable outcome (non-FH) were also included. DATA EXTRACTION AND ASSESSMENT OF VALIDITY: A data assessment tool was designed to assess the quality and validity of the papers which reported primary data for the social and psychological effects of screening. Available guidelines for systematically reviewing papers concentrated on quantitative methods, and were of limited relevance. An algorithm was developed which could be used for both the qualitative and quantitative literature. MODELLING METHODS: A model was constructed to investigate the relative cost and effectiveness of various forms of population screening (universal or opportunistic) and case-finding screening (screening relatives of known FH cases). All strategies involved a two-stage process: first, identifying those people with cholesterol levels sufficiently elevated to be compatible with a diagnosis of FH, and then either making the diagnosis based on clinical signs and a family history of coronary disease or carrying out genetic tests. Cost-effectiveness has been measured in terms of incremental cost per year of life gained.\nRESULTS: MODELLING COST-EFFECTIVENESS: FH is a life-threatening condition with a long presymptomatic state. Diagnostic tests are reasonably reliable and acceptable, and treatment with statins substantially improves prognosis. Therefore, it is appropriate to consider systematic screening for this condition. Case finding amongst relatives of FH cases was the most cost-effective strategy, and universal systematic screening the least cost-effective. However, when targeted at young people (16 year olds) universal screening was also cost-effective. Screening patients admitted to hospital with premature myocardial infarction was also relatively cost-effective. Screening is least cost-effective in men aged over 35 years, because the gains in life expectancy are small. (ABSTRACT TRUNCA",
"extra": "PMID: 11109029",
"issue": "29",
"journalAbbreviation": "Health Technol Assess",
"language": "eng",
"libraryCatalog": "PubMed",
"pages": "1-123",
"publicationTitle": "Health Technology Assessment (Winchester, England)",
"shortTitle": "Screening for hypercholesterolaemia versus case finding for familial hypercholesterolaemia",
"volume": "4",
"attachments": [
{
"title": "PubMed entry",
"mimeType": "text/html",
"snapshot": false
}
],
"tags": [
"Adult",
"Aged",
"Algorithms",
"Attitude to Health",
"Child",
"Cost-Benefit Analysis",
"Decision Trees",
"Female",
"Humans",
"Hyperlipoproteinemia Type II",
"Male",
"Mass Screening",
"Middle Aged",
"Models, Econometric",
"Morbidity",
"Needs Assessment",
"Practice Guidelines as Topic",
"Research Design",
"Technology Assessment, Biomedical",
"United Kingdom"
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.ncbi.nlm.nih.gov/pubmed/21249758",
"items": [
{
"itemType": "bookSection",
"title": "Implications of Peutz-Jeghers Syndrome in Children and Adolescents",
"creators": [
{
"firstName": "Warren",
"lastName": "Hyer",
"creatorType": "author"
},
{
"firstName": "Douglas L.",
"lastName": "Riegert-Johnson",
"creatorType": "editor"
},
{
"firstName": "Lisa A.",
"lastName": "Boardman",
"creatorType": "editor"
},
{
"firstName": "Timothy",
"lastName": "Hefferon",
"creatorType": "editor"
},
{
"firstName": "Maegan",
"lastName": "Roberts",
"creatorType": "editor"
}
],
"date": "2009",
"abstractNote": "Pigmentation tends to arise in infancy, occurring around the mouth, nostrils, perianal area, fingers and toes, and the dorsal and volar aspects of hands and feet (Figure 1). They may fade after puberty but tend to persist in the buccal mucosa. The primary concern to the paediatrician is the risk of small bowel intussusception causing intestinal obstruction, vomiting, and pain. In addition, intestinal bleeding leading to anaemia can occur. The management of a young child with mid-gut PJS polyps is controversial. In a retrospective review, 68% of children had undergone a laparotomy for bowel obstruction by the age of 18 years, and many of these proceeded to a second laparotomy within 5 years (1). There is a high re-operation rate after initial laparotomy for small bowel obstruction.",
"bookTitle": "Cancer Syndromes",
"callNumber": "NBK26374",
"extra": "PMID: 21249758",
"language": "eng",
"libraryCatalog": "PubMed",
"place": "Bethesda (MD)",
"publisher": "National Center for Biotechnology Information (US)",
"rights": "Copyright © 2009-, Douglas L Riegert-Johnson.",
"url": "http://www.ncbi.nlm.nih.gov/books/NBK26374/",
"attachments": [
{
"title": "PubMed entry",
"mimeType": "text/html",
"snapshot": false
},
{
"title": "Printable HTML",
"mimeType": "text/html",
"snapshot": true
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.ncbi.nlm.nih.gov/books/NBK26374/",
"items": [
{
"itemType": "bookSection",
"title": "Implications of Peutz-Jeghers Syndrome in Children and Adolescents",
"creators": [
{
"firstName": "Warren",
"lastName": "Hyer",
"creatorType": "author"
},
{
"firstName": "Douglas L.",
"lastName": "Riegert-Johnson",
"creatorType": "editor"
},
{
"firstName": "Lisa A.",
"lastName": "Boardman",
"creatorType": "editor"
},
{
"firstName": "Timothy",
"lastName": "Hefferon",
"creatorType": "editor"
},
{
"firstName": "Maegan",
"lastName": "Roberts",
"creatorType": "editor"
}
],
"date": "2009",
"abstractNote": "Pigmentation tends to arise in infancy, occurring around the mouth, nostrils, perianal area, fingers and toes, and the dorsal and volar aspects of hands and feet (Figure 1). They may fade after puberty but tend to persist in the buccal mucosa. The primary concern to the paediatrician is the risk of small bowel intussusception causing intestinal obstruction, vomiting, and pain. In addition, intestinal bleeding leading to anaemia can occur. The management of a young child with mid-gut PJS polyps is controversial. In a retrospective review, 68% of children had undergone a laparotomy for bowel obstruction by the age of 18 years, and many of these proceeded to a second laparotomy within 5 years (1). There is a high re-operation rate after initial laparotomy for small bowel obstruction.",
"bookTitle": "Cancer Syndromes",
"callNumber": "NBK26374",
"extra": "PMID: 21249758",
"language": "eng",
"libraryCatalog": "PubMed",
"place": "Bethesda (MD)",
"publisher": "National Center for Biotechnology Information (US)",
"rights": "Copyright © 2009-, Douglas L Riegert-Johnson.",
"url": "http://www.ncbi.nlm.nih.gov/books/NBK26374/",
"attachments": [
{
"title": "PubMed entry",
"mimeType": "text/html",
"snapshot": false
},
{
"title": "Printable HTML",
"mimeType": "text/html",
"snapshot": true
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.ncbi.nlm.nih.gov/books/NBK1825/",
"items": [
{
"itemType": "book",
"title": "Cancer Syndromes",
"creators": [
{
"firstName": "Douglas L.",
"lastName": "Riegert-Johnson",
"creatorType": "editor"
},
{
"firstName": "Lisa A.",
"lastName": "Boardman",
"creatorType": "editor"
},
{
"firstName": "Timothy",
"lastName": "Hefferon",
"creatorType": "editor"
},
{
"firstName": "Maegan",
"lastName": "Roberts",
"creatorType": "editor"
}
],
"date": "2009",
"abstractNote": "Cancer Syndromes is a comprehensive multimedia resource for selected single gene cancer syndromes. Syndromes currently included are Peutz-Jeghers syndrome, juvenile polyposis, Birt-Hogg-Dubé syndrome, multiple endocrine neoplasia type 1 and familial atypical multiple mole melanoma syndrome. For each syndrome the history, epidemiology, natural history and management are reviewed. If possible the initial report in the literature of each syndrome is included as an appendix. Chapters are extensively annotated with figures and movie clips. Mission Statement: Improving the care of cancer syndrome patients.",
"callNumber": "NBK1825",
"extra": "PMID: 21249754",
"language": "eng",
"libraryCatalog": "PubMed",
"place": "Bethesda (MD)",
"publisher": "National Center for Biotechnology Information (US)",
"rights": "Copyright © 2009-, Douglas L Riegert-Johnson.",
"url": "http://www.ncbi.nlm.nih.gov/books/NBK1825/",
"attachments": [
{
"title": "PubMed entry",
"mimeType": "text/html",
"snapshot": false
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.ncbi.nlm.nih.gov/pubmed/21249755",
"items": [
{
"itemType": "bookSection",
"title": "Peutz-Jeghers Syndrome",
"creators": [
{
"firstName": "Douglas",
"lastName": "Riegert-Johnson",
"creatorType": "author"
},
{
"firstName": "Ferga C.",
"lastName": "Gleeson",
"creatorType": "author"
},
{
"firstName": "Wytske",
"lastName": "Westra",
"creatorType": "author"
},
{
"firstName": "Timothy",
"lastName": "Hefferon",
"creatorType": "author"
},
{
"firstName": "Louis M.",
"lastName": "Wong Kee Song",
"creatorType": "author"
},
{
"firstName": "Lauren",
"lastName": "Spurck",
"creatorType": "author"
},
{
"firstName": "Lisa A.",
"lastName": "Boardman",
"creatorType": "author"
},
{
"firstName": "Douglas L.",
"lastName": "Riegert-Johnson",
"creatorType": "editor"
},
{
"firstName": "Lisa A.",
"lastName": "Boardman",
"creatorType": "editor"
},
{
"firstName": "Timothy",
"lastName": "Hefferon",
"creatorType": "editor"
},
{
"firstName": "Maegan",
"lastName": "Roberts",
"creatorType": "editor"
}
],
"date": "2009",
"bookTitle": "Cancer Syndromes",
"callNumber": "NBK1826",
"extra": "PMID: 21249755",
"language": "eng",
"libraryCatalog": "PubMed",
"place": "Bethesda (MD)",
"publisher": "National Center for Biotechnology Information (US)",
"url": "http://www.ncbi.nlm.nih.gov/books/NBK1826/",
"attachments": [
{
"title": "PubMed entry",
"mimeType": "text/html",
"snapshot": false
},
{
"title": "Printable HTML",
"mimeType": "text/html",
"snapshot": true
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://pubmed.ncbi.nlm.nih.gov/20981092/",
"items": [
{
"itemType": "journalArticle",
"title": "A map of human genome variation from population-scale sequencing",
"creators": [
{
"creatorType": "author",
"lastName": "1000 Genomes Project Consortium",
"fieldMode": 1
},
{
"firstName": "Gonçalo R.",
"lastName": "Abecasis",
"creatorType": "author"
},
{
"firstName": "David",
"lastName": "Altshuler",
"creatorType": "author"
},
{
"firstName": "Adam",
"lastName": "Auton",
"creatorType": "author"
},
{
"firstName": "Lisa D.",
"lastName": "Brooks",
"creatorType": "author"
},
{
"firstName": "Richard M.",
"lastName": "Durbin",
"creatorType": "author"
},
{
"firstName": "Richard A.",
"lastName": "Gibbs",
"creatorType": "author"
},
{
"firstName": "Matt E.",
"lastName": "Hurles",
"creatorType": "author"
},
{
"firstName": "Gil A.",
"lastName": "McVean",
"creatorType": "author"
}
],
"date": "2010-10-28",
"DOI": "10.1038/nature09534",
"ISSN": "1476-4687",
"abstractNote": "The 1000 Genomes Project aims to provide a deep characterization of human genome sequence variation as a foundation for investigating the relationship between genotype and phenotype. Here we present results of the pilot phase of the project, designed to develop and compare different strategies for genome-wide sequencing with high-throughput platforms. We undertook three projects: low-coverage whole-genome sequencing of 179 individuals from four populations; high-coverage sequencing of two mother-father-child trios; and exon-targeted sequencing of 697 individuals from seven populations. We describe the location, allele frequency and local haplotype structure of approximately 15 million single nucleotide polymorphisms, 1 million short insertions and deletions, and 20,000 structural variants, most of which were previously undescribed. We show that, because we have catalogued the vast majority of common variation, over 95% of the currently accessible variants found in any individual are present in this data set. On average, each person is found to carry approximately 250 to 300 loss-of-function variants in annotated genes and 50 to 100 variants previously implicated in inherited disorders. We demonstrate how these results can be used to inform association and functional studies. From the two trios, we directly estimate the rate of de novo germline base substitution mutations to be approximately 10(-8) per base pair per generation. We explore the data with regard to signatures of natural selection, and identify a marked reduction of genetic variation in the neighbourhood of genes, due to selection at linked sites. These methods and public data will support the next phase of human genetic research.",
"extra": "PMID: 20981092\nPMCID: PMC3042601",
"issue": "7319",
"journalAbbreviation": "Nature",
"language": "eng",
"libraryCatalog": "PubMed",
"pages": "1061-1073",
"publicationTitle": "Nature",
"volume": "467",
"attachments": [
{
"title": "PubMed entry",
"mimeType": "text/html",
"snapshot": false
}
],
"tags": [
{
"tag": "Calibration"
},
{
"tag": "Chromosomes, Human, Y"
},
{
"tag": "Computational Biology"
},
{
"tag": "DNA Mutational Analysis"
},
{
"tag": "DNA, Mitochondrial"
},
{
"tag": "Evolution, Molecular"
},
{
"tag": "Female"
},
{
"tag": "Genetic Association Studies"
},
{
"tag": "Genetic Variation"
},
{
"tag": "Genetics, Population"
},
{
"tag": "Genome, Human"
},
{
"tag": "Genome-Wide Association Study"
},
{
"tag": "Genomics"
},
{
"tag": "Genotype"
},
{
"tag": "Haplotypes"
},
{
"tag": "Humans"
},
{
"tag": "Male"
},
{
"tag": "Mutation"
},
{
"tag": "Pilot Projects"
},
{
"tag": "Polymorphism, Single Nucleotide"
},
{
"tag": "Recombination, Genetic"
},
{
"tag": "Sample Size"
},
{
"tag": "Selection, Genetic"
},
{
"tag": "Sequence Alignment"
},
{
"tag": "Sequence Analysis, DNA"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.ncbi.nlm.nih.gov/books/NBK21054/",
"items": [
{
"itemType": "book",
"title": "Molecular Biology of the Cell",
"creators": [
{
"firstName": "Bruce",
"lastName": "Alberts",
"creatorType": "author"
},
{
"firstName": "Alexander",
"lastName": "Johnson",
"creatorType": "author"
},
{
"firstName": "Julian",
"lastName": "Lewis",
"creatorType": "author"
},
{
"firstName": "Martin",
"lastName": "Raff",
"creatorType": "author"
},
{
"firstName": "Keith",
"lastName": "Roberts",
"creatorType": "author"
},
{
"firstName": "Peter",
"lastName": "Walter",
"creatorType": "author"
}
],
"date": "2002",
"ISBN": "9780815332183 9780815340720",
"abstractNote": "ExcerptMolecular Biology of the Cell is the classic in-depth text reference in cell biology. By extracting fundamental concepts and meaning from this enormous and ever-growing field, the authors tell the story of cell biology, and create a coherent framework through which non-expert readers may approach the subject. Written in clear and concise language, and illustrated with original drawings, the book is enjoyable to read, and provides a sense of the excitement of modern biology. Molecular Biology of the Cell not only sets forth the current understanding of cell biology (updated as of Fall 2001), but also explores the intriguing implications and possibilities of that which remains unknown.",
"edition": "4th",
"libraryCatalog": "PubMed",
"publisher": "Garland Science",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://pubmed.ncbi.nlm.nih.gov/14779137/",
"items": [
{
"itemType": "journalArticle",
"title": "Surgical management of pancreatitis",
"creators": [
{
"firstName": "C. C.",
"lastName": "Blackwell",
"creatorType": "author"
}
],
"date": "1950-10",
"ISSN": "0025-7044",
"extra": "PMID: 14779137",
"issue": "4",
"journalAbbreviation": "J Med Assoc State Ala",
"language": "eng",
"libraryCatalog": "PubMed",
"pages": "118-128",
"publicationTitle": "Journal of the Medical Association of the State of Alabama",
"volume": "20",
"attachments": [
{
"title": "PubMed entry",
"mimeType": "text/html",
"snapshot": false
}
],
"tags": [
{
"tag": "Humans"
},
{
"tag": "PANCREATITIS"
},
{
"tag": "Pancreatitis"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.ncbi.nlm.nih.gov/labs/pubmed?term=zotero",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.ncbi.nlm.nih.gov/pubmed?term=21249754",
"items": [
{
"itemType": "book",
"title": "Cancer Syndromes",
"creators": [
{
"firstName": "Douglas L.",
"lastName": "Riegert-Johnson",
"creatorType": "editor"
},
{
"firstName": "Lisa A.",
"lastName": "Boardman",
"creatorType": "editor"
},
{
"firstName": "Timothy",
"lastName": "Hefferon",
"creatorType": "editor"
},
{
"firstName": "Maegan",
"lastName": "Roberts",
"creatorType": "editor"
}
],
"date": "2009",
"abstractNote": "Cancer Syndromes is a comprehensive multimedia resource for selected single gene cancer syndromes.\nSyndromes currently included are Peutz-Jeghers syndrome, juvenile polyposis, Birt-Hogg-Dubé syndrome, multiple endocrine neoplasia type 1\nand familial atypical multiple mole melanoma syndrome. For each syndrome the history, epidemiology, natural history and management are reviewed.\nIf possible the initial report in the literature of each syndrome is included as an appendix. Chapters are extensively annotated with figures and\nmovie clips. \nMission Statement: Improving the care of cancer syndrome patients.",
"callNumber": "NBK1825",
"extra": "PMID: 21249754",
"language": "eng",
"libraryCatalog": "PubMed",
"place": "Bethesda (MD)",
"publisher": "National Center for Biotechnology Information (US)",
"rights": "Copyright © 2009-, Douglas L Riegert-Johnson.",
"url": "http://www.ncbi.nlm.nih.gov/books/NBK1825/",
"attachments": [
{
"title": "PubMed entry",
"mimeType": "text/html",
"snapshot": false
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://pubmed.ncbi.nlm.nih.gov/?term=testing",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.ncbi.nlm.nih.gov/sites/myncbi/1-kV-e_Xzodkb/collections/59603323/public/",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.ncbi.nlm.nih.gov/myncbi/1-kV-e_Xzodkb/bibliography/public/",
"items": "multiple"
},
{
"type": "web",
"url": "https://pubmed.ncbi.nlm.nih.gov/31221671/",
"items": [
{
"itemType": "journalArticle",
"title": "Recognising bias in studies of diagnostic tests part 2: interpreting and verifying the index test",
"creators": [
{
"firstName": "Bory",
"lastName": "Kea",
"creatorType": "author"
},
{
"firstName": "M. Kennedy",
"lastName": "Hall",
"creatorType": "author"
},
{
"firstName": "Ralph",
"lastName": "Wang",
"creatorType": "author"
}
],
"date": "2019-08",
"DOI": "10.1136/emermed-2019-208447",
"ISSN": "1472-0213",
"abstractNote": "Multiple pitfalls can occur with the conduct and analysis of a study of diagnostic tests, resulting in biased accuracy. Our conceptual model includes three stages: patient selection, interpretation of the index test and disease verification. In part 2, we focus on (1) Interpretation bias (or workup bias): where the classification of an indeterminate index test result can bias the accuracy of a test or how lack of blinding can bias a subjective test result, and (2) Disease verification bias: where the index test result is incorporated into the gold standard or when the gold standard is applied only to a select population as the gold standard is an invasive test. In an example with age-adjusted D-dimer for pulmonary embolism, differential verification bias was a limitation due to the use of two gold standards-CT for a high-risk population and follow-up for symptoms in a low-risk population. However, there are circumstances when certain choices in study design are unavoidable, and result in biased test characteristics. In this case, the informed reader will better judge the quality of a study by recognising the potential biases and limitations by being methodical in their approach to understanding the methods, and in turn, better apply studies of diagnostic tests into their clinical practice.",
"extra": "PMID: 31221671\nPMCID: PMC6693499",
"issue": "8",
"journalAbbreviation": "Emerg Med J",
"language": "eng",
"libraryCatalog": "PubMed",
"pages": "501-505",
"publicationTitle": "Emergency medicine journal: EMJ",
"shortTitle": "Recognising bias in studies of diagnostic tests part 2",
"volume": "36",
"attachments": [
{
"title": "PubMed entry",
"mimeType": "text/html",
"snapshot": false
}
],
"tags": [
{
"tag": "Diagnostic Tests, Routine"
},
{
"tag": "Humans"
},
{
"tag": "Observer Variation"
},
{
"tag": "Research Design"
},
{
"tag": "Sensitivity and Specificity"
},
{
"tag": "imaging"
},
{
"tag": "research, methods"
},
{
"tag": "statistics"
},
{
"tag": "ultrasound"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://pubmed.ncbi.nlm.nih.gov/32633716/",
"items": [
{
"itemType": "journalArticle",
"title": "Muscle-derived Myoglianin regulates Drosophila imaginal disc growth",
"creators": [
{
"firstName": "Ambuj",
"lastName": "Upadhyay",
"creatorType": "author"
},
{
"firstName": "Aidan J.",
"lastName": "Peterson",
"creatorType": "author"
},
{
"firstName": "Myung-Jun",
"lastName": "Kim",
"creatorType": "author"
},
{
"firstName": "Michael B.",
"lastName": "O'Connor",
"creatorType": "author"
}
],
"date": "2020-07-07",
"DOI": "10.7554/eLife.51710",
"ISSN": "2050-084X",
"abstractNote": "Organ growth and size are finely tuned by intrinsic and extrinsic signaling molecules. In Drosophila, the BMP family member Dpp is produced in a limited set of imaginal disc cells and functions as a classic morphogen to regulate pattern and growth by diffusing throughout imaginal discs. However, the role of TGFβ/Activin-like ligands in disc growth control remains ill-defined. Here, we demonstrate that Myoglianin (Myo), an Activin family member, and a close homolog of mammalian Myostatin (Mstn), is a muscle-derived extrinsic factor that uses canonical dSmad2-mediated signaling to regulate wing size. We propose that Myo is a myokine that helps mediate an allometric relationship between muscles and their associated appendages.",
"extra": "PMID: 32633716\nPMCID: PMC7371420",
"journalAbbreviation": "Elife",
"language": "eng",
"libraryCatalog": "PubMed",
"pages": "e51710",
"publicationTitle": "eLife",
"volume": "9",
"attachments": [
{
"title": "PubMed entry",
"mimeType": "text/html",
"snapshot": false
}
],
"tags": [
{
"tag": "Animals"
},
{
"tag": "D. melanogaster"
},
{
"tag": "Drosophila Proteins"
},
{
"tag": "Drosophila melanogaster"
},
{
"tag": "Imaginal Discs"
},
{
"tag": "Larva"
},
{
"tag": "Muscles"
},
{
"tag": "Myoglianin"
},
{
"tag": "Myostatin"
},
{
"tag": "Signal Transduction"
},
{
"tag": "Smad Proteins, Receptor-Regulated"
},
{
"tag": "Transforming Growth Factor beta"
},
{
"tag": "developmental biology"
},
{
"tag": "growth factors"
},
{
"tag": "imaginal disc"
},
{
"tag": "muscle fiber"
},
{
"tag": "tgf beta"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://pubmed.ncbi.nlm.nih.gov/searches/3851259/?startDate=2020-11-07+06%3A06%3A14&endDate=2020-12-05+06%3A04%3A39&token=1J3VmSOOIDc&sort=date",
"items": "multiple"
}
]
/** END TEST CASES **/
100Sebastian Karcher^https?://www\.nl\.go\.kr/(EN|NL)/contents/(eng)?[sS]earch\.do/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2022 Sebastian Karcher
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('viewKey=')) {
let type = text(doc, 'h3.detail_tit>span.tit_top');
if (!type) return "book";
return getType(type);
}
else if (getSearchResults(doc, true)) {
return 'multiple';
}
return false;
}
function getType(type) {
switch (type) {
case "[이미지/사진]":
return "artwork";
case "[기사]":
case "[Article]":
case "[잡지/학술지]":
case "[Magazine/Academic Journal]":
return "journalArticle";
case "[학위논문]":
case "[Monograph]":
return "thesis";
case "[신문]":
case "[Newspaper]":
return "newspaperArticle";
case "[음악자료]":
case "[Music Album]":
return "audioRecording";
case "[영상자료]":
case "[Videos]":
return "videoRecording";
case "[웹사이트]":
case "[Website Retention Material]":
return "webpage";
default:
return "book";
}
}
function fixKoreanCreators(creators) {
for (let i = 0; i < creators.length; i++) {
var len = creators[i].lastName.length;
var regex = "[\\p{hangul}\\{han}]{" + len + "}";
var korean = new ZU.XRegExp(regex);
if (creators[i].firstName) continue; // likely a Western name
else if (len > 3) continue; // likely Japanese name
else if (ZU.XRegExp.test(creators[i].lastName, korean)) {
// name is almost certainly Korean. First character is lastName
creators[i].firstName = creators[i].lastName.replace(/^./, "");
creators[i].lastName = creators[i].lastName.replace(/^(.).*/, "$1");
}
}
return creators;
}
function fixTitleCapitalization(title) {
if (title == title.toUpperCase()) {
title = ZU.capitalizeTitle(title, true);
}
return title;
}
function fixTags(tags) {
var extraTags = [];
for (let i = 0; i < tags.length; i++) {
if (/.+\[.+\]/.test(tags[i])) {
let extraTag = tags[i].match(/\[(.+)\]/)[1];
extraTags.push(extraTag);
tags[i] = tags[i].replace(/\[.+\]/, "");
}
}
return tags.concat(extraTags);
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('div.search_right_section a.detail_btn_layer');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
async function doWeb(doc, url) {
if (detectWeb(doc, url) == 'multiple') {
let items = await Zotero.selectItems(getSearchResults(doc, false));
if (items) {
await Promise.all(
Object.keys(items)
.map(url => scrape(url))
);
}
}
else {
await scrape(url);
}
}
async function scrape(url) {
let viewKey = url.match(/viewKey=([^&]+)/)[1];
var modsURL, marcURL;
if (viewKey.startsWith("CNTS")) {
modsURL = "https://www.nl.go.kr/NL/search/mods_view.do?contentsId=" + viewKey;
}
else if (/^\d+$/.test(viewKey)) {
marcURL = `https://www.nl.go.kr/NL/marcDownload.do?downData=${viewKey},AH1`;
}
if (modsURL) {
let modsText = await requestText(modsURL);
// Z.debug(modsText)
// replace the Korean resourceType and genre with corresponding English terms
modsText = modsText.replace("<typeOfResource>텍스트</typeOfResource>", "<typeOfResource>text</typeOfResource>")
.replace("<typeOfResource>동영상</typeOfResource>", "<typeOfResource>moving image</typeOfResource>")
.replace("<typeOfResource>이미지</typeOfResource>", "<typeOfResource>still image</typeOfResource>")
.replace("<typeOfResource>사운드</typeOfResource>", "<typeOfResource>sound recording</typeOfResource>")
.replace("<typeOfResource>인터랙티브자원</typeOfResource>", "<typeOfResource>software, multimedia</typeOfResource>");
modsText = modsText.replace("<genre>일반도서</genre>", "<genre>book</genre>")
.replace("<genre>학술논문</genre>", "<genre>article</genre>")
.replace("<genre>연속간행물</genre>", "<genre>periodical</genre>")
.replace("<genre>신문</genre>", "<genre>newspaper</genre>")
.replace("<genre>사전</genre>", "<genre>book</genre>")
.replace("<genre>사진</genre>", "<genre>picture</genre>")
.replace("<genre>음악</genre>", "<genre>sound</genre>")
.replace(/<genre>학위논문.*<\/genre>/, "<genre>thesis</genre>")
.replace("<genre>웹사이트</genre>", "<genre>web site</genre>")
.replace("<genre>웹사이트</genre>", "<genre>web site</genre>");
// unmapped: 복합기록물 (composite record); 기록물 (record, likely archival)
// we get the creator straight from MODS
// to fix author strings like "Botvinnik B, Gilkey P, Stolz S"
let modsTextAlt = modsText.replace(/<mods.+?>/, "<mods>");
var xml = (new DOMParser()).parseFromString(modsTextAlt, "text/xml");
var creatorRegex = /^[A-Z][a-z]+\s[A-Z](,|$)/;
var creatorNodes = ZU.xpath(xml, '//name');
let translator = Zotero.loadTranslator('import');
translator.setTranslator('0e2235e7-babf-413c-9acf-f27cce5f059c'); // MODS
translator.setString(modsText);
translator.setHandler('itemDone', (_obj, item) => {
if (item.date) {
// dates are in YYYYMMDD format
item.date = ZU.strToISO(item.date.replace(/(\d{4})(\d{2})?(\d{2})?[-]*/, "$1-$2-$3"));
}
item.tags = fixTags(item.tags);
// fixing poor quality MODS author data
if (creatorNodes.length == 1 && item.creators.length == 1 && creatorRegex.test(ZU.xpathText(xml, '//name'))) {
let creatorType = item.creators[0].creatorType;
item.creators = [];
let creators = ZU.xpathText(xml, '//name').split(", ");
for (let creator of creators) {
let lastName = creator.match(/^(.+)\s/);
let firstName = creator.match(/.$/);
if (lastName && firstName) {
item.creators.push({ firstName: firstName[0], lastName: lastName[1], creatorType: creatorType });
}
else {
item.creators.push({ lastName: creator, fieldMode: 1, creatorType: creatorType });
}
}
}
item.creators = fixKoreanCreators(item.creators);
item.title = fixTitleCapitalization(item.title);
item.complete();
});
await translator.translate();
}
else if (marcURL) {
let marcText = await requestText(marcURL);
let translator = Zotero.loadTranslator('import');
translator.setTranslator('a6ee60df-1ddc-4aae-bb25-45e0537be973');
translator.setString(marcText);
translator.setHandler('itemDone', (_obj, item) => {
item.creators = fixKoreanCreators(item.creators);
item.tags = fixTags(item.tags);
item.complete();
});
await translator.translate();
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.nl.go.kr/EN/contents/engSearch.do?resultType=&pageNum=1&pageSize=30&order=&sort=&srchTarget=total&kwd=lawson&systemType=&lnbTypeName=&category=%ED%95%99%EC%9C%84%EB%85%BC%EB%AC%B8&hanjaFlag=&reSrchFlag=&licYn=&kdcName1s=&manageName=&langName=&ipubYear=&pubyearName=&seShelfCode=&detailSearch=&seriesName=&mediaCode=&offerDbcode2s=&f1=&v1=&f2=&v2=&f3=&v3=&f4=&v4=&and1=&and2=&and3=&and4=&and5=&and6=&and7=&and8=&and9=&and10=&and11=&and12=&isbnOp=&isbnCode=&guCode2=&guCode3=&guCode4=&guCode5=&guCode6=&guCode7=&guCode8=&guCode11=&gu2=&gu7=&gu8=&gu9=&gu10=&gu12=&gu13=&gu14=&gu15=&gu16=&subject=&sYear=&eYear=&sRegDate=&eRegDate=&typeCode=&acConNo=&acConNoSubject=&infoTxt=#viewKey=CNTS-00082435719&viewType=C&category=%ED%95%99%EC%9C%84%EB%85%BC%EB%AC%B8&pageIdx=19&jourId=",
"items": [
{
"itemType": "thesis",
"title": "장모-사위 갈등에 관련된 제변인 연구",
"creators": [
{
"firstName": "정은",
"lastName": "원",
"creatorType": "author"
}
],
"date": "2016",
"archiveLocation": "국립중앙도서관",
"callNumber": "332.24",
"language": "kor; eng",
"libraryCatalog": "Korean National Library",
"numPages": "99",
"place": "서울",
"rights": "0",
"university": "성신여자대학교",
"attachments": [],
"tags": [
{
"tag": "丈母"
},
{
"tag": "家族關係"
},
{
"tag": "가족 관계"
},
{
"tag": "사위(혼인)"
},
{
"tag": "장모(어머니)"
},
{
"tag": "女壻"
}
],
"notes": [
{
"note": "thesis: 학위논문(박사) -- 성신여자대학교 대학원, 생활문화소비자학과, 2016"
},
{
"note": "language: 영어 요약 있음"
},
{
"note": "bibliography: 참고문헌: p. [111]-[123]"
},
{
"note": "지도교수: 김주희권말부록: 질문지 등"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.nl.go.kr/EN/contents/engSearch.do?srchTarget=total&pageNum=1&pageSize=10&kwd=%EB%AF%B8%EA%B5%B0%EC%A0%95%EA%B3%BC%ED%95%9C%EA%B5%AD%EC%9D%98%EB%AF%BC%EC%A3%BC%EC%A3%BC%EC%9D%98#viewKey=CNTS-00092958535&viewType=C&category=%EB%8F%84%EC%84%9C&pageIdx=1&jourId=",
"items": [
{
"itemType": "book",
"title": "미군정과 한국의 민주주의",
"creators": [
{
"firstName": "진",
"lastName": "안",
"creatorType": "author"
}
],
"date": "2005",
"ISBN": "9788946034662",
"callNumber": "911.071, 951.904",
"language": "kor",
"libraryCatalog": "Korean National Library",
"numPages": "436",
"place": "파주",
"publisher": "한울",
"rights": "3",
"series": "한울아카데미",
"seriesNumber": "803",
"attachments": [],
"tags": [],
"notes": [
{
"note": "권말부록으로 \"반민족행위처벌법\" 수록"
},
{
"note": "bibliography: 참고문헌: p.[390]-422, 색인수록"
},
{
"note": "Table of Contents: 목차표지 = 0,1,0표제지 = 0,3,0책을 내면서 / 안진 = 0,5,0차례 = 0,10,0약어 목록(List of Abbreviations) = 0,14,0서론 : 미군정 연구의 범위와 방법 = 0,15,0제1부 분단국가의 형성과 미군정 = 0,49,0 제1장 해방 직후의 사회상황과 미국의 대한(對韓) 점령정책 = 0,51,0 1. 전후 세계체제의 변화와 해방의 성격 = 0,51,0 2. 해방 직후의 사회상황과 역사적 과제 = 0,56,0 3. 미군정의 성립과 미국의 점령정책 = 0,63,0 4. 미군의 진주 = 0,69,0 제2장 분단국가의 형성과 미국 = 0,72,0 1. 한미관계를 보는 시각 = 0,72,0 2. 미군정의 정책과 분단국가의 형성 = 0,83,0 3. 해방 직후 민족독립국가 수립운등: 임정과 건준 = 0,98,0 4. 해방 직후 사회세력들의 갈등과 미군정 = 0,119,0 5. 미군정의 동맹세력의 성장과 그 성격 = 0,139,0 6. 미군정 통치기구의 형성과 지배집단의 재편과정 = 0,144,0제2부 미군정 억압기구의 재편 = 0,155,0 제3장 미군정 행정관료제의 재편 = 0,157,0 1. 행정 관료기구의 재조직 과정 = 0,157,0 2. 관료의 충원과 그 특징 = 0,166,0 3. 군정 관료제의 특징 = 0,178,0찰의 재편과 그 성격 = 0,181,0 1. 군정경찰의 조직 = 0,181,0 2. 군정경찰의 충원 = 0,190,0 3. 군정경찰의 활동 = 0,193,0 4. 군정경찰의 특성 = 0,202,0 제5장 조선국방경비대의 창설과 성격 = 0,204,0 1. 해방 직전 해외무장독립군의 활동상황 = 0,204,0 2. 해방 직후 사설군사단체의 현황 = 0,207,0 3. 조선국방경비대의 창설과 충원 = 0,217,0 제6장 군정사법체제의 재편과정 = 0,225,0 1. 미군정의 법적 지위와 군정법령들의 주요내용 = 0,225,0 2. 군정 사법체제의 재편 = 0,235,0 3. 사법부 관료의 충원 = 0,242,0 4. 미군정 사법체제의 기능과 특성 = 0,250,0 제7장 미군정 국가기구 형성의 특징 = 0,253,0 1. 국가기구 형성의 구조적 조건 = 0,253,0 2. 미군정 국가기구 형성의 특징 = 0,256,0 3. 이론적 논의 = 0,260,0제3부 미군정의 경찰과 군 간부 = 0,265,0 제8장 미군정청 경무부장 조병옥 : 미군정하 한국인 최고권력자 = 0,267,0 1. 친미적 정치성향의 형성 배경 = 0,267,0 2. 신간회, 동우회 활동 = 0,269,0 3. 미군정 경무국장에 발탁된 한민당 총무 = 0,270,0 4. 집권세력에 타협적인 야당투사 = 0,278,0 제9장 미군정청 군사고문 이응준 : 군국주의 정신 투철한 일본군 대좌에서 창군의 주역으로 = 0,285,0 1. 미군정의 점령정책과 창군 = 0,285,0 2. 일본육사 출신의 조선인 대좌 = 0,286,0 3. 가족군인의 전형 = 0,289,0 4. 철저한 군국주의 정신의 일본군인 = 0,291,0 5. 대한민국 군대창설을 맡은 미군정청 군사고문 = 0,293,0 제10장 미군정청 경무부 수사국장 최능진: 친일경찰 숙청 주장했던 미군정 경찰간부 = 0,297,0 1. 동우회(同友會) 활동 = 0,298,0 2. 평남 건준 치안부장 = 0,300,0 3. 친일경찰 축출을 둘러싼 갈등 = 0,303,0 4. 서재필 추대운동 = 0,308,0 5. 이승만과의 대결: 5·10선거 출마의 좌절 = 0,310,0 6. 이승만의 정치적 보복과 투옥 = 0,314,0 7. 한국전쟁 중 '정전, 평화통일운동' = 0,315,0 8. 최능진의 정치사상과 민족주의 = 0,317,0 제11장 미군정청 수도경찰청 수사과장 노덕술 : 반민특위 요인 암살을 조종한 친일경찰의 거두 = 0,323,0 1. 친일경찰의 거두 = 0,323,0 2. 일경(日警)의 호랑이, 훈7등 종7위(勳7等 從7位) 훈장의 극악한 친일경력 = 0,324,0 3. 되살아난 고문의 악습 = 0,326,0 4. 반민특위 간부 암살 음모 = 0,328,0 5. 노덕술의 체포와 친일경찰의 저항 = 0,331,0 제12장 미군정 전남 경찰위원장 노주봉 : 해방 직후 암살된 친일경찰의 거두 = 0,337,0 1. 암살된 친일경찰 간부 = 0,337,0 2. 도 경찰부장으로 발탁된 친일경찰 = 0,338,0 3. 학생들에게 잔인했던 악명 높은 친일경찰 = 0,343,0 4. 암살된 친일경찰의 뒷이야기 = 0,348,0 보론 : 해방 후 친일파 처벌논의 = 0,351,0 1. 머리말 = 0,351,0 2. 미군정기 친일파 처벌에 관한 제논의 = 0,353,0 3. 정부수립 후「반민족행위처벌법」의 제정과 집행 = 0,370,0 4. 반민특위의 해체와「반민족행위처벌법」의 페지과정 = 0,377,0 5. 친일파 처벌의 구조적 제약요인 : 미군정 정책 = 0,384,0 6. 맺음말 = 0,386,0부록 : 반민족행위처벌법 = 0,388,0참고문헌 = 0,392,0찾아보기 = 0,425,0[저자소개] = 0,433,0판권지 = 0,434,0[광고] = 0,435,0뒤표지 = 0,436,0"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.nl.go.kr/EN/contents/engSearch.do?srchTarget=total&pageNum=1&pageSize=10&kwd=%EB%AF%B8%EA%B5%B0%EC%A0%95%EA%B3%BC%ED%95%9C%EA%B5%AD%EC%9D%98%EB%AF%BC%EC%A3%BC%EC%A3%BC%EC%9D%98#viewKey=58200726&viewType=AH1&category=%EB%8F%84%EC%84%9C&pageIdx=2&jourId=",
"items": [
{
"itemType": "book",
"title": "미군정과 한국의 민주주의=",
"creators": [
{
"firstName": "진",
"lastName": "안",
"creatorType": "author"
}
],
"date": "2005",
"ISBN": "9788946034662",
"callNumber": "951.904",
"libraryCatalog": "Korean National Library",
"numPages": "430",
"place": "파주",
"publisher": "한울",
"series": "한울아카데미",
"seriesNumber": "803",
"attachments": [],
"tags": [
{
"tag": "美軍政時代"
},
{
"tag": "미군정 시대"
},
{
"tag": "미군정 한국 민주주의"
}
],
"notes": [
{
"note": "권말부록으로 \"반민족행위처벌법\" 수록"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.nl.go.kr/NL/contents/search.do?srchTarget=total&pageNum=1&pageSize=10&kwd=%EB%AF%B8%EA%B5%B0%EC%A0%95%EA%B3%BC+%ED%95%9C%EA%B5%AD%EC%9D%98+%EB%AF%BC%EC%A3%BC%EC%A3%BC%EC%9D%98",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.nl.go.kr/EN/contents/engSearch.do?resultType=&pageNum=1&pageSize=30&order=&sort=&srchTarget=total&kwd=smith&systemType=%EC%98%A8%EB%9D%BC%EC%9D%B8%EC%9E%90%EB%A3%8C&lnbTypeName=&category=%EB%A9%80%ED%8B%B0%EB%AF%B8%EB%94%94%EC%96%B4&hanjaFlag=&reSrchFlag=&licYn=&kdcName1s=&manageName=&langName=&ipubYear=&pubyearName=&seShelfCode=&detailSearch=&seriesName=&mediaCode=&offerDbcode2s=&f1=&v1=&f2=&v2=&f3=&v3=&f4=&v4=&and1=&and2=&and3=&and4=&and5=&and6=&and7=&and8=&and9=&and10=&and11=&and12=&isbnOp=&isbnCode=&guCode2=&guCode3=&guCode4=&guCode5=&guCode6=&guCode7=&guCode8=&guCode11=&gu2=&gu7=&gu8=&gu9=&gu10=&gu12=&gu13=&gu14=&gu15=&gu16=&subject=&sYear=&eYear=&sRegDate=&eRegDate=&typeCode=&acConNo=&acConNoSubject=&infoTxt=#viewKey=CNTS-00098977147&viewType=C&category=%EB%A9%80%ED%8B%B0%EB%AF%B8%EB%94%94%EC%96%B4&pageIdx=17&jourId=",
"items": [
{
"itemType": "videoRecording",
"title": "두 단어 영어로 쉽게 대답하기 step 1. 별일 없이 지내. / Smith씨하고 통화할 수 있을까요?",
"creators": [
{
"firstName": "정현",
"lastName": "조",
"creatorType": "director"
}
],
"date": "2017",
"abstractNote": "영어 초보자는 말을 길게 하고 싶어도 문법을 생각해야지 발음도 신경 써야지 입 밖으로 말 한마디 꺼내지 못하고 발만 동동 구를 때가 많습니다. 하지만 이제는 두려워하지 마세요. 짧은 단 한두 마디 단어로도 충분히 의사소통이 가능하고 말을 길게 하는 것보다 오히려 영어를 더 잘한다는 얘기를 들을 수 있습니다. 이젠 짧게 말하고도 당당하게 영어 회화의 고민을 시원하게 해결해 드립니다.",
"archiveLocation": "국립중앙도서관",
"callNumber": "740.77",
"language": "kor",
"libraryCatalog": "Korean National Library",
"place": "서울",
"rights": "국립중앙도서관, 정기이용증 소지자 공개, 8",
"studio": "삼육오",
"url": "http://e-contents.nl.go.kr:8071/hanulls/2017_KS49/2017_VIDEO_SANHAK_CP20174904.WMV",
"attachments": [],
"tags": [
{
"tag": "英語會話"
},
{
"tag": "영어 회화"
}
],
"notes": [
{
"note": "system details: 시스템사양: 화면비율, 720:416"
},
{
"note": "Table of Contents: 4 별일 없이 지내. / Smith씨하고 통화할 수 있을까요?"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.nl.go.kr/EN/contents/engSearch.do?resultType=&pageNum=1&pageSize=30&order=&sort=&srchTarget=total&kwd=lawson&systemType=&lnbTypeName=&category=&hanjaFlag=&reSrchFlag=&licYn=&kdcName1s=&manageName=&langName=&ipubYear=&pubyearName=&seShelfCode=&detailSearch=&seriesName=&mediaCode=&offerDbcode2s=&f1=&v1=&f2=&v2=&f3=&v3=&f4=&v4=&and1=&and2=&and3=&and4=&and5=&and6=&and7=&and8=&and9=&and10=&and11=&and12=&isbnOp=&isbnCode=&guCode2=&guCode3=&guCode4=&guCode5=&guCode6=&guCode7=&guCode8=&guCode11=&gu2=&gu7=&gu8=&gu9=&gu10=&gu12=&gu13=&gu14=&gu15=&gu16=&subject=&sYear=&eYear=&sRegDate=&eRegDate=&typeCode=&acConNo=&acConNoSubject=&infoTxt=#viewKey=CNTS-00068016306&viewType=C&category=%EC%8B%A0%EB%AC%B8&pageIdx=1&jourId=",
"items": [
{
"itemType": "newspaperArticle",
"title": "MR. LAWSON-PANIC MAKER",
"creators": [],
"date": "1905-02-18",
"archiveLocation": "국립중앙도서관",
"callNumber": "084",
"language": "kor",
"libraryCatalog": "Korean National Library",
"place": "서울",
"publicationTitle": "大韓每日申報",
"rights": "0",
"attachments": [],
"tags": [
{
"tag": "국외"
},
{
"tag": "사회"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.nl.go.kr/EN/contents/engSearch.do?resultType=&pageNum=1&pageSize=30&order=&sort=&srchTarget=total&kwd=lawson&systemType=&lnbTypeName=&category=%EB%A9%80%ED%8B%B0%EB%AF%B8%EB%94%94%EC%96%B4&hanjaFlag=&reSrchFlag=&licYn=&kdcName1s=&manageName=%EB%94%94%EC%A7%80%ED%84%B8%EB%8F%84%EC%84%9C%EA%B4%80&langName=&ipubYear=&pubyearName=&seShelfCode=&detailSearch=&seriesName=&mediaCode=&offerDbcode2s=&f1=&v1=&f2=&v2=&f3=&v3=&f4=&v4=&and1=&and2=&and3=&and4=&and5=&and6=&and7=&and8=&and9=&and10=&and11=&and12=&isbnOp=&isbnCode=&guCode2=&guCode3=&guCode4=&guCode5=&guCode6=&guCode7=&guCode8=&guCode11=&gu2=&gu7=&gu8=&gu9=&gu10=&gu12=&gu13=&gu14=&gu15=&gu16=&subject=&sYear=&eYear=&sRegDate=&eRegDate=&typeCode=&acConNo=&acConNoSubject=&infoTxt=#viewKey=CNTS-00070344711&viewType=C&category=%EB%A9%80%ED%8B%B0%EB%AF%B8%EB%94%94%EC%96%B4&pageIdx=14&jourId=",
"items": [
{
"itemType": "audioRecording",
"title": "LOSE YOUR MIND: feat.Yutaka Furukawa from DOPING PANDA",
"creators": [
{
"firstName": "아",
"lastName": "보",
"creatorType": "performer"
},
{
"firstName": "Damon",
"lastName": "Sharpe",
"creatorType": "performer"
},
{
"lastName": "H-WONDER",
"fieldMode": 1,
"creatorType": "performer"
},
{
"lastName": "GREG LAWSON",
"fieldMode": 1,
"creatorType": "performer"
},
{
"lastName": "JONAS JEBERG",
"fieldMode": 1,
"creatorType": "performer"
},
{
"lastName": "SIMON BRENTING",
"fieldMode": 1,
"creatorType": "performer"
}
],
"date": "2007-12-12",
"callNumber": "673.511",
"libraryCatalog": "Korean National Library",
"rights": "국립중앙도서관 공개, 2",
"shortTitle": "LOSE YOUR MIND",
"attachments": [],
"tags": [
{
"tag": "大衆音樂"
},
{
"tag": "대중 음악"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.nl.go.kr/EN/contents/engSearch.do?resultType=&pageNum=1&pageSize=30&order=&sort=&srchTarget=total&kwd=smith&systemType=%EC%98%A8%EB%9D%BC%EC%9D%B8%EC%9E%90%EB%A3%8C&lnbTypeName=&category=%EB%A9%80%ED%8B%B0%EB%AF%B8%EB%94%94%EC%96%B4&hanjaFlag=&reSrchFlag=&licYn=&kdcName1s=&manageName=&langName=&ipubYear=&pubyearName=&seShelfCode=&detailSearch=&seriesName=&mediaCode=&offerDbcode2s=&f1=&v1=&f2=&v2=&f3=&v3=&f4=&v4=&and1=&and2=&and3=&and4=&and5=&and6=&and7=&and8=&and9=&and10=&and11=&and12=&isbnOp=&isbnCode=&guCode2=&guCode3=&guCode4=&guCode5=&guCode6=&guCode7=&guCode8=&guCode11=&gu2=&gu7=&gu8=&gu9=&gu10=&gu12=&gu13=&gu14=&gu15=&gu16=&subject=&sYear=&eYear=&sRegDate=&eRegDate=&typeCode=&acConNo=&acConNoSubject=&infoTxt=#viewKey=CNTS-00037185430&viewType=C&category=%EB%A9%80%ED%8B%B0%EB%AF%B8%EB%94%94%EC%96%B4&pageIdx=4&jourId=",
"items": [
{
"itemType": "artwork",
"title": "SMITH’S PHARMACY",
"creators": [
{
"lastName": "저자미상",
"fieldMode": 1,
"creatorType": "artist"
}
],
"date": "2009-01-19",
"abstractNote": "이 올드 스타일의 금색으로 된 채널 레터(channel letter)가 이 스토어의 전통을 말해 준다.(이런 sign은 구식이니까 결과적으로는 역사가 길다는 의미가 된다) 중앙에 약을 가는 그릇인 유발 하나를 배치했다.",
"archiveLocation": "국립중앙도서관",
"callNumber": "658",
"libraryCatalog": "Korean National Library",
"rights": "2",
"url": "http://www.bookrail.co.kr/data/ebook/nweb/P0907001/_data/900_530/067_008.jpg",
"attachments": [],
"tags": [],
"notes": [
{
"note": "표제출처: 꼬리에 꼬리를 무는 Sign배경지역: 이집트(Egypt), 카이로(Cairo)"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.nl.go.kr/EN/contents/engSearch.do?resultType=&pageNum=1&pageSize=30&order=&sort=&srchTarget=total&kwd=lawson&systemType=&lnbTypeName=&category=&hanjaFlag=&reSrchFlag=&licYn=&kdcName1s=&manageName=%EB%94%94%EC%A7%80%ED%84%B8%EB%8F%84%EC%84%9C%EA%B4%80&langName=&ipubYear=&pubyearName=&seShelfCode=&detailSearch=&seriesName=&mediaCode=&offerDbcode2s=&f1=&v1=&f2=&v2=&f3=&v3=&f4=&v4=&and1=&and2=&and3=&and4=&and5=&and6=&and7=&and8=&and9=&and10=&and11=&and12=&isbnOp=&isbnCode=&guCode2=&guCode3=&guCode4=&guCode5=&guCode6=&guCode7=&guCode8=&guCode11=&gu2=&gu7=&gu8=&gu9=&gu10=&gu12=&gu13=&gu14=&gu15=&gu16=&subject=&sYear=&eYear=&sRegDate=&eRegDate=&typeCode=&acConNo=&acConNoSubject=&infoTxt=#viewKey=CNTS-00102120262&viewType=C&category=%EC%9B%B9%EC%82%AC%EC%9D%B4%ED%8A%B8&pageIdx=1&jourId=",
"items": [
{
"itemType": "webpage",
"title": "lawson.kr",
"creators": [],
"rights": "국립중앙도서관 공개, 2",
"url": "http://lawson.kr/",
"websiteTitle": "lawson.kr",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.nl.go.kr/EN/contents/engSearch.do?resultType=&pageNum=1&pageSize=30&order=&sort=&srchTarget=total&kwd=lawson&systemType=&lnbTypeName=&category=&hanjaFlag=&reSrchFlag=&licYn=&kdcName1s=&manageName=&langName=&ipubYear=&pubyearName=&seShelfCode=&detailSearch=&seriesName=&mediaCode=&offerDbcode2s=&f1=&v1=&f2=&v2=&f3=&v3=&f4=&v4=&and1=&and2=&and3=&and4=&and5=&and6=&and7=&and8=&and9=&and10=&and11=&and12=&isbnOp=&isbnCode=&guCode2=&guCode3=&guCode4=&guCode5=&guCode6=&guCode7=&guCode8=&guCode11=&gu2=&gu7=&gu8=&gu9=&gu10=&gu12=&gu13=&gu14=&gu15=&gu16=&subject=&sYear=&eYear=&sRegDate=&eRegDate=&typeCode=&acConNo=&acConNoSubject=&infoTxt=#viewKey=CNTS-00091570741&viewType=C&category=%EA%B8%B0%EC%82%AC&pageIdx=2&jourId=",
"items": [
{
"itemType": "journalArticle",
"title": "The Gromov-Lawson-Rosenberg Conjecture for Groups with Periodic Cohomology",
"creators": [
{
"firstName": "B",
"lastName": "Botvinnik",
"creatorType": "author"
},
{
"firstName": "P",
"lastName": " Gilkey",
"creatorType": "author"
},
{
"firstName": "S",
"lastName": " Stolz",
"creatorType": "author"
}
],
"date": "1997-07-01",
"language": "eng",
"libraryCatalog": "Korean National Library",
"publicationTitle": "Journal of Differential Geometry. V.46 N.3",
"rights": "2",
"attachments": [],
"tags": [],
"notes": [
{
"note": "자료 조회를 위해서는 별도 뷰어를 설치해야 합니다.뷰어 설치: https://www.cartesianinc.com/Products/CPCView/"
},
{
"note": "LG상남도서관 기증 자료"
},
{
"note": "Botvinnik B UNIV OREGON EUGENE, OR 97403 USA UNIV NOTRE DAME NOTRE DAME, IN 46556 USA"
}
],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Sebastian Karcher^https?://(www\.)?redalyc\.(uaemex\.mx|org)/*
Translator
Copyright (C) 2013 Sebastian Karcher
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
function detectWeb(doc, url) {
if (url.includes('articulo.oa?id=') || /\/journal\/\d+\/\d+/.test(url)) {
return "journalArticle";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.getElementsByClassName('contentcard');
for (let row of rows) {
// Single language
let href = attr(row, 'a[ng-if*="article.pdfOtroIdioma=="]', 'href');
// mutliple languages we go to the HTML instead
if (!href) {
href = ZU.xpathText(row, './/a[img[@src="img/formatos-05-html.png"]]/@href');
}
// if all else fails, we go to the linked title
if (!href) {
href = ZU.xpathText(row, './/a[span[@class="title"]]/@href');
}
// Z.debug(href)
let title = text(row, '.title');
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
async function doWeb(doc, url) {
if (detectWeb(doc, url) == 'multiple') {
let items = await Zotero.selectItems(getSearchResults(doc, false));
if (items) {
await Promise.all(
Object.keys(items)
.map(url => requestDocument(url).then(scrape))
);
}
}
else {
await scrape(doc, url);
}
}
async function scrape(doc, url = doc.location.href) {
if (doc.getElementById('visor-cabecera')) {
// we're on a viewer page
var pdfURL = attr(doc, "#impresion-pdf-n", "onclick");
if (pdfURL) {
pdfURL = pdfURL.replace("window.open('", "").replace("')", "");
}
Z.debug(pdfURL);
}
let translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', (_obj, item) => {
if (item.title == item.title.toUpperCase()) {
item.title = ZU.capitalizeTitle(item.title.toLowerCase(), true);
}
if (pdfURL) {
item.attachments = [{ url: pdfURL, title: "Full Text PDF", mimeType: "application/pdf" }];
}
item.complete();
});
let em = await translator.getTranslatorObject();
em.itemType = 'journalArticle';
await em.doWeb(doc, url);
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.redalyc.org/articulo.oa?id=32921102001",
"items": [
{
"itemType": "journalArticle",
"title": "Os partidos políticos brasileiros realmente não importam?",
"creators": [
{
"firstName": "Maria do Socorro Sousa",
"lastName": "Braga",
"creatorType": "author"
},
{
"firstName": "Jairo Pimentel",
"lastName": "Jr",
"creatorType": "author"
}
],
"date": "2011",
"ISSN": "0104-6276, 1807-0191",
"abstractNote": "Há décadas a constatação corrente no Brasil é de que os partidos pouco importam para explicar o comportamento dos eleitores brasileiros. Entretanto, esse cenário de baixa identificação partidária contrasta com a observação de que, ao menos para as eleições presidenciais a competição eleitoral tem se estruturado em torno de duas organizações partidárias: PT e PSDB. O objetivo deste artigo é demonstrar que mesmo que os partidos de fato não estejam internalizados em termos de identidade partidária, estamos vivenciando importante movimento no sentido de uma divisão do eleitorado entre as duas principais organizações políticas em termos de simpatia partidária, redundando na estruturação de um sistema bipartidário ao nível da disputa nacional. Com base nas respostas dos entrevistados do ESEB 2002, 2006 e 2010 sobre as eleições presidências verificamos que nesses pleitos as simpatias eleitorais pelo PT e PSDB se mostraram um dos principais componentes de explicação do voto nos candidatos. Este artigo também destacou que apesar das simpatias partidárias serem uma heurística utilizada para decisão do voto entre os eleitores com maior escolaridade, foi possível observar que mesmo entre os menos escolarizados essa variável foi fundamental para explicar o voto, evidenciando que mesmo entre eleitores com menor conhecimento político, os partidos têm auxiliado na decisão do voto.",
"issue": "2",
"language": "Portugués",
"libraryCatalog": "www.redalyc.org",
"pages": "271-303",
"publicationTitle": "Opinião Pública",
"url": "https://www.redalyc.org/articulo.oa?id=32921102001",
"volume": "17",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "CSES-ESEB2010"
},
{
"tag": "ESEB2010"
},
{
"tag": "Partidos políticos"
},
{
"tag": "Political parties"
},
{
"tag": "comportamento eleitoral"
},
{
"tag": "electoral behavior"
},
{
"tag": "eleições presidenciais"
},
{
"tag": "party sympathy"
},
{
"tag": "presidential elections"
},
{
"tag": "simpatia partidária"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"defer": true,
"url": "https://www.redalyc.org/busquedaArticuloFiltros.oa?q=piqueteros",
"items": "multiple"
}
]
/** END TEST CASES **/
100Sean Takats, Michael Berkowitz, and Simon Kornblith^https?://((www\.)|(smile\.))?amazonfunction detectWeb(doc, _url) {
if (getSearchResults(doc, true)) {
return (Zotero.isBookmarklet ? "server" : "multiple");
}
if ((attr(doc, 'link[rel=canonical]', 'href') || '').match(/dp\/[A-Z0-9]+$/)) {
if (Zotero.isBookmarklet) return "server";
var productClass = attr(doc, 'div[id="dp"]', 'class');
if (!productClass) {
Z.debug("No product class found; trying store ID");
productClass = attr(doc, 'input[name="storeID"]', 'value');
}
if (!productClass) {
Z.debug("No store ID found; looking for special stores");
if (doc.getElementById('dmusic_buybox_container')) {
productClass = 'music';
}
}
// delete language code
productClass = productClass.replace(/[a-z][a-z]_[A-Z][A-Z]/, "").trim();
if (productClass) {
if (productClass.includes("book")) { // also ebooks
return "book";
}
else if (productClass == "music" | productClass == "dmusic") {
return "audioRecording";
}
else if (productClass == "dvd" | productClass == "dvd-de" | productClass == "video" | productClass == "movies-tv") {
return "videoRecording";
}
else if (productClass == "videogames" | productClass == "mobile-apps") {
return "computerProgram";
}
else {
Z.debug("Unknown product class" + productClass + "will be ignored by Zotero");
}
}
else {
// audio books are purchased as audible abo
if (text(doc, 'form[class="a-spacing-none"][action*="/audible/"]')) {
return "audioRecording";
}
var mainCategory = text(doc, '#wayfinding-breadcrumbs_container li a');
if (mainCategory && mainCategory.includes('Kindle')) {
return "book";
}
else {
Z.debug("Items in this category will be ignored by Zotero: " + mainCategory);
}
}
}
return false;
}
function getSearchResults(doc, checkOnly) {
// search results
var links = doc.querySelectorAll('div.s-result-list h2>a');
if (!links.length) {
// wish lists
var container = doc.getElementById('item-page-wrapper');
if (container) {
links = ZU.xpath(container, './/a[starts-with(@id, "itemName_")]');
}
}
if (!links.length) {
// author pages
links = ZU.xpath(doc, '//div[@id="searchWidget"]//a[span[contains(@class, "a-size-medium")]]');
}
if (!links.length) return false;
var availableItems = {}, found = false,
asinRe = /\/(?:dp|product)\/(?:[^?#]+)\//;
for (var i = 0; i < links.length; i++) {
var elmt = links[i];
if (asinRe.test(elmt.href)) {
if (checkOnly) return true;
availableItems[elmt.href] = elmt.textContent.trim();
found = true;
}
}
return found ? availableItems : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == 'multiple') {
Zotero.selectItems(getSearchResults(doc), function (items) {
if (!items) return;
var links = [];
for (var i in items) links.push(i);
Zotero.Utilities.processDocuments(links, scrape);
});
}
else {
scrape(doc, url);
}
}
function addLink(doc, item) {
item.attachments.push({ title: "Amazon.com Link", snapshot: false, mimeType: "text/html", url: doc.location.href });
}
var CREATOR = {
Actor: "castMember",
Director: "director",
Producer: "producer",
Writer: "scriptwriter",
Translator: "translator",
Author: "author",
Illustrator: "contributor",
Editor: "editor"
};
var DATE = [
"original release date",
"dvd Release Date",
"erscheinungstermin",
"date de sortie du dvd",
"release date"
];
// localization
var i15dFields = {
ISBN: ['ISBN-13', 'ISBN-10', 'ISBN', '条形码'],
Publisher: ['Publisher', 'Verlag', 'Herausgeber', '出版社'],
Hardcover: ['Hardcover', 'Gebundene Ausgabe', '精装', 'ハードカバー', 'Relié', 'Copertina rigida', 'Tapa dura'],
Paperback: ['Paperback', 'Taschenbuch', '平装', 'ペーパーバック', 'Broché', 'Copertina flessibile', 'Tapa blanda'],
'Print Length': ['Print Length', 'Seitenzahl der Print-Ausgabe', '紙の本の長さ', "Nombre de pages de l'édition imprimée", "Longueur d'impression", 'Poche', 'Broché', 'Lunghezza stampa', 'Longitud de impresión', 'Número de páginas'], // TODO: Chinese label
Language: ['Language', 'Sprache', '语种', '言語', 'Langue', 'Lingua', 'Idioma'],
Author: ['Author', '著', '作者'],
Actor: ['Actors', 'Actor', 'Darsteller', 'Acteurs', 'Attori', 'Attore', 'Actores', '出演'],
Director: ['Directors', 'Director', 'Regisseur', 'Regisseur(e)', 'Réalisateurs', 'Regista', 'Directores', '監督'],
Producer: ['Producers', 'Producer'],
'Run Time': ['Run Time', 'Spieldauer', 'Durée', 'Durata', 'Duración', '時間'],
Studio: ['Studio', 'Estudio', '販売元'],
'Audio CD': ['Audio CD', 'CD', 'CD de audio'],
Label: ['Label', 'Etichetta', 'Étiquette', 'Sello', '发行公司', 'レーベル'],
'Total Length': ['Total Length', 'Gesamtlänge', 'Durée totale', 'Lunghezza totale', 'Duración total', '収録時間'],
Translator: ["Translator", "Übersetzer", "Traduttore", "Traductor", "翻訳"],
Illustrator: ["Illustrator", "Illustratore", "Ilustrador", "イラスト"],
Writer: ['Writers'],
Editor: ['Editor', 'Editora', 'Editeur', 'Éditeur', 'Editore']
};
function getField(info, field) {
// returns the value for the key 'field' or any of its
// corresponding (language specific) keys of the array 'info'
if (!i15dFields[field]) return false;
for (var i = 0; i < i15dFields[field].length; i++) {
let possibleField = i15dFields[field][i].toLowerCase();
if (info[possibleField] !== undefined) {
return info[possibleField];
}
}
return false;
}
function translateField(str) {
for (var f in i15dFields) {
if (i15dFields[f].includes(str)) {
return f;
}
}
return false;
}
function scrape(doc, url) {
var isAsian = url.search(/^https?:\/\/[^/]+\.(?:jp|cn)[:/]/) != -1;
// Scrape HTML for items without ISBNs, because Amazon doesn't provide an easy way for
// open source projects like us to use their API
Z.debug("Scraping from Page");
var item = new Zotero.Item(detectWeb(doc, url) || "book");
var title = doc.getElementById('btAsinTitle')
|| doc.getElementById('title_row')
|| doc.getElementById('productTitle')
|| doc.getElementById('ebooksProductTitle')
|| doc.getElementById('title_feature_div')
|| doc.getElementById('dmusicProductTitle_feature_div');
// get first non-empty text node (other text nodes are things like [Paperback] and dates)
item.title = ZU.trimInternal(
ZU.xpathText(title, '(.//text()[normalize-space(self::text())])[1]')
)
// though sometimes [Paperback] or [DVD] is mushed with the title...
.replace(/(?: [([].+[)\]])+$/, "");
var baseNode = title.parentElement, bncl;
// Z.debug(baseNode)
while (baseNode && (bncl = baseNode.classList)
&& !(// ways to identify a node encompasing title and authors
baseNode.id == 'booksTitle'
|| baseNode.id == 'ppd-center'
|| baseNode.id == 'title_feature_div'
|| bncl.contains('buying')
|| bncl.contains('content')
|| bncl.contains('DigitalMusicInfoColumn')
|| (baseNode.id == 'centerCol' && baseNode.firstElementChild.id.indexOf('title') == 0)
)
) {
baseNode = baseNode.parentElement;
}
var authors, name, role, invertName;
if (baseNode) {
authors = ZU.xpath(baseNode, './/span[@id="artistBlurb"]/a');
// if (!authors.length) authors = baseNode.getElementsByClassName('contributorNameID');
if (!authors.length) authors = ZU.xpath(baseNode, '(.//*[@id="byline"]/span[contains(@class, "author")] | .//*[@id="byline"]/span[contains(@class, "author")]/span)/a[contains(@class, "a-link-normal")][1]');
if (!authors.length) authors = ZU.xpath(baseNode, './/span[@class="contributorNameTrigger"]/a[not(@href="#")]');
if (!authors.length) authors = ZU.xpath(baseNode, './/span[contains(@class, "author")]/a|.//span[contains(@class, "author")]/span/a');
if (!authors.length) authors = ZU.xpath(baseNode, './/a[following-sibling::*[1][@class="byLinePipe"]]');
if (!authors.length) authors = ZU.xpath(baseNode, './/a[contains(@href, "field-author=")]');
if (!authors.length) authors = ZU.xpath(baseNode, './/a[@id="ProductInfoArtistLink"]');
if (!authors.length) authors = ZU.xpath(baseNode, './/a[@id="ProductInfoArtistLink"]');
for (let i = 0; i < authors.length; i++) {
role = ZU.xpathText(authors[i], '(.//following::text()[normalize-space(self::text())])[1]');
if (role) {
role = CREATOR[translateField(
role.replace(/^.*\(\s*|\s*\).*$/g, '')
.split(',')[0] // E.g. "Actor, Primary Contributor"
.trim()
)];
}
if (!role) role = 'author';
name = ZU.trimInternal(authors[i].textContent)
.replace(/\s*\([^)]+\)/, '');
if (item.itemType == 'audioRecording') {
item.creators.push({
lastName: name,
creatorType: 'performer',
fieldMode: 1
});
}
else {
invertName = isAsian && !(/[A-Za-z]/.test(name));
if (invertName) {
// Use last character as given name if there is no space
if (!name.includes(' ')) name = name.replace(/.$/, ' $&');
name = name.replace(/\s+/, ', '); // Surname comes first
}
item.creators.push(ZU.cleanAuthor(name, role, name.includes(',')));
}
}
}
// can't find the baseNode on some pages, e.g. https://www.amazon.com/First-Quarto-Hamlet-Cambridge-Shakespeare-dp-0521418194/dp/0521418194/ref=mt_hardcover?_encoding=UTF8&me=&qid=
if (!item.creators.length) {
// subtle differences in the author block, so duplicating some code here
authors = ZU.xpath(doc, '//div[@id="bylineInfo"]/span[contains(@class, "author")]');
for (let i = 0; i < authors.length; i++) {
role = ZU.xpathText(authors[i], './/span[@class="contribution"]');
if (role) {
role = CREATOR[translateField(
role.trim().replace(/^.*\(\s*|\s*\).*$/g, '')
.split(',')[0] // E.g. "Actor, Primary Contributor"
.trim()
)];
}
if (!role) role = 'author';
name = ZU.trimInternal(ZU.xpathText(authors[i], './span/a[contains(@class, "a-link-normal")]|./a[contains(@class, "a-link-normal")]'))
.replace(/\s*\([^)]+\)/, '').replace(/,\s*$/, '');
if (item.itemType == 'audioRecording') {
item.creators.push({
lastName: name,
creatorType: 'performer',
fieldMode: 1
});
}
else {
invertName = isAsian && !(/[A-Za-z]/.test(name));
if (invertName) {
// Use last character as given name if there is no space
if (!name.includes(' ')) name = name.replace(/.$/, ' $&');
name = name.replace(/\s+/, ', '); // Surname comes first
}
item.creators.push(ZU.cleanAuthor(name, role, name.includes(',')));
}
}
}
// Abstract
var abstractNode = doc.getElementById('postBodyPS');
if (abstractNode) {
item.abstractNote = abstractNode.textContent.trim();
if (!item.abstractNote) {
var iframe = abstractNode.getElementsByTagName('iframe')[0];
if (iframe) {
abstractNode = iframe.contentWindow.document.getElementById('iframeContent');
item.abstractNote = abstractNode.textContent.trim();
}
}
} else {
item.abstractNote = text(doc, '#bookDescription_feature_div .a-expander-content');
}
// Extract info into an array
var info = {},
els = ZU.xpath(doc, '//div[@class="content"]/ul/li[b]');
if (els.length) {
for (let i = 0; i < els.length; i++) {
let el = els[i],
key = ZU.xpathText(el, 'b[1]').trim();
if (key) {
info[key.replace(/\s*:$/, "").toLowerCase()] = el.textContent.substr(key.length + 1).trim();
}
}
}
if (!els.length) {
// New design encountered 08/31/2020
els = doc.querySelectorAll('ul.detail-bullet-list li');
if (!els.length) {
// New design encountered 2022-11-20
els = doc.querySelectorAll('#detailBullets_feature_div ul > li span');
}
for (let el of els) {
let key = text(el, '.a-list-item span:first-child');
let value = text(el, '.a-list-item span:nth-child(2)');
if (key && value) {
key = key.replace(/\s*:\s*$/, "");
// Extra colon in Language field as of 9/4/2020
key = key.replace(/\s*:$/, '');
// The colon is surrounded by RTL/LTR marks as of 6/24/2021
key = key.replace(/[\s\u200e\u200f]*:[\s\u200e\u200f]*$/, '');
info[key.toLowerCase()] = value.trim();
}
}
}
if (!els.length) {
// New design encountered 06/30/2013
els = ZU.xpath(doc, '//tr[td[@class="a-span3"]][td[@class="a-span9"]]');
for (let i = 0; i < els.length; i++) {
let el = els[i],
key = ZU.xpathText(el, 'td[@class="a-span3"]'),
value = ZU.xpathText(el, 'td[@class="a-span9"]');
if (key && value) {
info[key.trim().toLowerCase()] = value.trim();
}
}
}
item.ISBN = getField(info, 'ISBN');
if (item.ISBN) {
item.ISBN = ZU.cleanISBN(item.ISBN);
}
// Date
for (let i = 0; i < DATE.length; i++) {
item.date = info[DATE[i]];
if (item.date) break;
}
if (!item.date) {
for (let i in info) {
let m = /\(([^)]+ [0-9]{4})\)/.exec(info[i]);
if (m) item.date = m[1];
}
}
// Books
var publisher = getField(info, 'Publisher') || getField(info, 'Editor');
if (publisher) {
var m = /([^;(]+)(?:;? *([^(]*))?(?:\(([^)]*)\))?/.exec(publisher);
item.publisher = m[1].trim();
if (m[2]) {
item.edition = m[2].trim()
.replace(/^(Auflage|Édition)\s?:/, '')
// "FISCHER Taschenbuch; 15. Auflage (1. Mai 1992)""
.replace(/\. (Auflage|[EÉ]dition)\s*/, '');
}
// Looks like a date
if (m[3] && m[3].search(/\b\d{4}\b/) != -1) item.date = ZU.strToISO(m[3].trim());
}
var pages = getField(info, 'Hardcover') || getField(info, 'Paperback') || getField(info, 'Print Length');
if (pages) item.numPages = parseInt(pages);
item.language = getField(info, 'Language');
// add publication place from ISBN translator, see at the end
// Video
if (item.itemType == 'videoRecording') {
// This seems to only be worth it for videos
var clearedCreators = false;
for (var i in CREATOR) {
if (getField(info, i)) {
if (!clearedCreators) {
item.creators = [];
clearedCreators = true;
}
var creators = getField(info, i).split(/ *, */);
for (var j = 0; j < creators.length; j++) {
item.creators.push(ZU.cleanAuthor(creators[j], CREATOR[i]));
}
}
}
}
item.studio = getField(info, 'Studio');
item.runningTime = getField(info, 'Run Time');
if (!item.runningTime) item.runningTime = getField(info, 'Total Length');
item.language = getField(info, 'Language');
// Music
item.label = getField(info, 'Label');
var department = ZU.xpathText(doc, '//li[contains(@class, "nav-category-button")]/a');
if (getField(info, 'Audio CD')) {
item.audioRecordingFormat = "Audio CD";
}
else if (department && department.trim() == "Amazon MP3 Store") {
item.audioRecordingFormat = "MP3";
}
addLink(doc, item);
// we search for translators for a given ISBN
// and try to figure out the missing publication place
if (item.ISBN && !item.place) {
Z.debug("Searching for additional metadata by ISBN: " + item.ISBN);
var search = Zotero.loadTranslator("search");
search.setHandler("translators", function (obj, translators) {
search.setTranslator(translators);
search.setHandler("itemDone", function (obj, lookupItem) {
Z.debug(lookupItem.libraryCatalog);
if (lookupItem.place) {
// e.g. [Paris]
item.place = lookupItem.place.replace("[", "").replace("]", "");
}
if (!item.date && lookupItem.date) {
item.date = lookupItem.date;
}
});
search.translate();
});
search.setHandler("error", function (error) {
// we mostly need this handler to prevent the default one from kicking in
Z.debug("ISBN search for " + item.ISBN + " failed: " + error);
});
search.setHandler("done", function () {
item.complete();
});
search.setSearch({ ISBN: item.ISBN });
search.getTranslators();
}
else {
item.complete();
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.amazon.com/Test-William-Sleator/dp/0810989891/ref=sr_1_1?ie=UTF8&qid=1308010556&sr=8-1",
"items": [
{
"itemType": "book",
"title": "Test",
"creators": [
{
"firstName": "William",
"lastName": "Sleator",
"creatorType": "author"
}
],
"date": "2010-04-01",
"ISBN": "9780810989894",
"abstractNote": "Now in paperback! Pass, and have it made. Fail, and suffer the consequences. A master of teen thrillers tests readers’ courage in an edge-of-your-seat novel that echoes the fears of exam-takers everywhere. Ann, a teenage girl living in the security-obsessed, elitist United States of the very near future, is threatened on her way home from school by a mysterious man on a black motorcycle. Soon she and a new friend are caught up in a vast conspiracy of greed involving the mega-wealthy owner of a school testing company. Students who pass his test have it made; those who don’t, disappear . . . or worse. Will Ann be next? For all those who suspect standardized tests are an evil conspiracy, here’s a thriller that really satisfies! Praise for Test “Fast-paced with short chapters that end in cliff-hangers . . . good read for moderately reluctant readers. Teens will be able to draw comparisons to contemporary society’s shift toward standardized testing and ecological concerns, and are sure to appreciate the spoofs on NCLB.” ―School Library Journal “Part mystery, part action thriller, part romance . . . environmental and political overtones . . . fast pace and unique blend of genres holds attraction for younger teen readers.” ―Booklist",
"edition": "Reprint edition",
"language": "English",
"libraryCatalog": "Amazon",
"numPages": 320,
"publisher": "Amulet Paperbacks",
"attachments": [
{
"title": "Amazon.com Link",
"snapshot": false,
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.amazon.com/s?k=foot&i=stripbooks&x=0&y=0&ref=nb_sb_noss",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.amazon.com/Loveless-My-Bloody-Valentine/dp/B000002LRJ/ref=ntt_mus_ep_dpi_1",
"items": [
{
"itemType": "audioRecording",
"title": "Loveless",
"creators": [
{
"lastName": "My Bloody Valentine",
"creatorType": "performer",
"fieldMode": 1
}
],
"date": "1991",
"label": "Sire",
"language": "English",
"libraryCatalog": "Amazon",
"attachments": [
{
"title": "Amazon.com Link",
"snapshot": false,
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.amazon.com/s?k=The+Harvard+Concise+Dictionary+of+Music+and+Musicians&Go=o",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.amazon.com/Adaptation-Superbit-Collection-Nicholas-Cage/dp/B00005JLRE/ref=sr_1_1?ie=UTF8&qid=1309683150&sr=8-1",
"items": [
{
"itemType": "videoRecording",
"title": "Adaptation",
"creators": [
{
"firstName": "Nicolas",
"lastName": "Cage",
"creatorType": "castMember"
},
{
"firstName": "Tilda",
"lastName": "Swinton",
"creatorType": "castMember"
},
{
"firstName": "Meryl",
"lastName": "Streep",
"creatorType": "castMember"
},
{
"firstName": "Chris",
"lastName": "Cooper",
"creatorType": "castMember"
},
{
"firstName": "Maggie",
"lastName": "Gyllenhaal",
"creatorType": "castMember"
},
{
"firstName": "Spike",
"lastName": "Jonze",
"creatorType": "director"
},
{
"firstName": "Vincent",
"lastName": "Landay",
"creatorType": "producer"
},
{
"firstName": "Jonathan",
"lastName": "Demme",
"creatorType": "producer"
},
{
"firstName": "Ed",
"lastName": "Saxon",
"creatorType": "producer"
}
],
"date": "May 20, 2003",
"language": "English (Dolby Digital 2.0 Surround), English (Dolby Digital 5.1), English (DTS 5.1), French (Dolby Digital 5.1), Unqualified (DTS ES 6.1)",
"libraryCatalog": "Amazon",
"runningTime": "1 hour and 55 minutes",
"studio": "Sony Pictures Home Entertainment",
"attachments": [
{
"title": "Amazon.com Link",
"snapshot": false,
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.amazon.fr/Candide-Fran%C3%A7ois-Marie-Voltaire-Arouet-dit/dp/2035866014/ref=sr_1_2?s=books&ie=UTF8&qid=1362329827&sr=1-2",
"items": [
{
"itemType": "book",
"title": "Candide",
"creators": [
{
"firstName": "",
"lastName": "Voltaire",
"creatorType": "author"
}
],
"date": "2011",
"ISBN": "9782035866011",
"abstractNote": "Que signifie ce nom \"Candide\" : innocence de celui qui ne connaît pas le mal ou illusion du naïf qui n'a pas fait l'expérience du monde ? Voltaire joue en 1759, après le tremblement de terre de Lisbonne, sur ce double sens. Il nous fait partager les épreuves fictives d'un jeune homme simple, confronté aux leurres de l'optimisme, mais qui n'entend pas désespérer et qui en vient à une sagesse finale, mesurée et mystérieuse. Candide n'en a pas fini de nous inviter au gai savoir et à la réflexion.",
"edition": "Larousse édition",
"language": "Français",
"libraryCatalog": "Amazon",
"numPages": 176,
"publisher": "Larousse",
"attachments": [
{
"title": "Amazon.com Link",
"snapshot": false,
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.amazon.de/Fiktionen-Erz%C3%A4hlungen-Jorge-Luis-Borges/dp/3596105811/ref=sr_1_1?ie=UTF8&qid=1362329791&sr=8-1&lang=de-de&language=de_DE",
"items": [
{
"itemType": "book",
"title": "Fiktionen: Erzählungen 1939 - 1944",
"creators": [
{
"firstName": "Jorge Luis",
"lastName": "Borges",
"creatorType": "author"
}
],
"date": "1992",
"ISBN": "9783596105816",
"abstractNote": "Gleich bei seinem Erscheinen in den 40er Jahren löste Jorge Luis Borges’ erster Erzählband »Fiktionen« eine literarische Revolution aus. Erfundene Biographien, fiktive Bücher, irreale Zeitläufe und künstliche Realitäten verflocht Borges zu einem geheimnisvollen Labyrinth, das den Leser mit seinen Rätseln stets auf neue herausfordert. Zugleich begründete er mit seinen berühmten Erzählungen wie»›Die Bibliothek zu Babel«, «Die kreisförmigen Ruinen« oder»›Der Süden« den modernen »Magischen Realismus«.\n\n»Obwohl sie sich im Stil derart unterscheiden, zeigen zwei Autoren uns ein Bild des nächsten Jahrtausends: Joyce und Borges.« Umberto Eco",
"edition": "16",
"language": "Deutsch",
"libraryCatalog": "Amazon",
"numPages": 192,
"place": "Frankfurt am Main",
"publisher": "FISCHER Taschenbuch",
"shortTitle": "Fiktionen",
"attachments": [
{
"title": "Amazon.com Link",
"snapshot": false,
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.amazon.co.uk/Tale-Two-Cities-ebook/dp/B004EHZXVQ/ref=sr_1_1?s=books&ie=UTF8&qid=1362329884&sr=1-1",
"items": [
{
"itemType": "book",
"title": "A Tale of Two Cities",
"creators": [
{
"firstName": "Charles",
"lastName": "Dickens",
"creatorType": "author"
}
],
"date": "2010-12-01",
"abstractNote": "Novel by Charles Dickens, published both serially and in book form in 1859. The story is set in the late 18th century against the background of the French Revolution. Although Dickens borrowed from Thomas Carlyle's history, The French Revolution, for his sprawling tale of London and revolutionary Paris, the novel offers more drama than accuracy. The scenes of large-scale mob violence are especially vivid, if superficial in historical understanding. The complex plot involves Sydney Carton's sacrifice of his own life on behalf of his friends Charles Darnay and Lucie Manette. While political events drive the story, Dickens takes a decidedly antipolitical tone, lambasting both aristocratic tyranny and revolutionary excess--the latter memorably caricatured in Madame Defarge, who knits beside the guillotine. The book is perhaps best known for its opening lines, \"It was the best of times, it was the worst of times,\" and for Carton's last speech, in which he says of his replacing Darnay in a prison cell, \"It is a far, far better thing that I do, than I have ever done; it is a far, far better rest that I go to, than I have ever known.\" -- The Merriam-Webster Encyclopedia of Literature",
"language": "English",
"libraryCatalog": "Amazon",
"numPages": 290,
"publisher": "Public Domain Books",
"attachments": [
{
"title": "Amazon.com Link",
"snapshot": false,
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.amazon.it/Emil-Astrid-Lindgren/dp/888203867X/ref=sr_1_1?s=books&ie=UTF8&qid=1362324961&sr=1-1",
"items": [
{
"itemType": "book",
"title": "Emil. Ediz. illustrata",
"creators": [
{
"firstName": "Astrid",
"lastName": "Lindgren",
"creatorType": "author"
},
{
"firstName": "Björn",
"lastName": "Berg",
"creatorType": "contributor"
},
{
"firstName": "Annuska Palme Larussa",
"lastName": "Sanavio",
"creatorType": "translator"
}
],
"date": "2008",
"ISBN": "9788882038670",
"abstractNote": "Si pensa che soprattutto in una casa moderna, con prese elettriche, gas, balconi altissimi un bambino possa mettersi in pericolo: Emil vive in una tranquilla casa di campagna, ma riesce a ficcare la testa in una zuppiera e a rimanervi incastrato, a issare la sorellina Ida in cima all'asta di una bandiera, e a fare una tale baldoria alla fiera del paese che i contadini decideranno di organizzare una colletta per spedirlo in America e liberare così la sua povera famiglia. Ma questo succederà nel prossimo libro di Emil, perché ce ne sarà un altro, anzi due, tante sono le sue monellerie. Età di lettura: da 7 anni.",
"edition": "3° edizione",
"language": "Italiano",
"libraryCatalog": "Amazon",
"numPages": 72,
"publisher": "Nord-Sud",
"attachments": [
{
"title": "Amazon.com Link",
"snapshot": false,
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.amazon.co.uk/Walt-Disney-Pixar-Up-DVD/dp/B0029Z9UQ4/ref=sr_1_1?s=dvd&ie=UTF8&qid=1395560537&sr=1-1&keywords=up",
"items": [
{
"itemType": "videoRecording",
"title": "Up",
"creators": [
{
"firstName": "Ed",
"lastName": "Asner",
"creatorType": "castMember"
},
{
"firstName": "Christopher",
"lastName": "Plummer",
"creatorType": "castMember"
},
{
"firstName": "Jordan",
"lastName": "Nagai",
"creatorType": "castMember"
},
{
"firstName": "Pete",
"lastName": "Docter",
"creatorType": "director"
},
{
"firstName": "Bob",
"lastName": "Peterson",
"creatorType": "director"
}
],
"date": "15 Feb. 2010",
"language": "English, Hindi",
"libraryCatalog": "Amazon",
"runningTime": "1 hour and 33 minutes",
"studio": "Walt Disney Studios Home Entertainment",
"attachments": [
{
"title": "Amazon.com Link",
"snapshot": false,
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.amazon.de/gp/product/B00GKBYC3E?ie=UTF8&*Version*=1&*entries*=0",
"items": [
{
"itemType": "audioRecording",
"title": "Die Eiskönigin Völlig Unverfroren",
"creators": [
{
"lastName": "Various artists",
"creatorType": "performer",
"fieldMode": 1
}
],
"libraryCatalog": "Amazon",
"runningTime": "1:09:16",
"attachments": [
{
"title": "Amazon.com Link",
"snapshot": false,
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.amazon.co.jp/gp/product/0099578077/",
"items": [
{
"itemType": "book",
"title": "1Q84: Books 1, 2 and 3",
"creators": [
{
"firstName": "Haruki",
"lastName": "Murakami",
"creatorType": "author"
}
],
"date": "2012-08-02",
"ISBN": "9780099578079",
"abstractNote": "The year is 1Q84. This is the real world, there is no doubt about that. But in this world, there are two moons in the sky. In this world, the fates of two people, Tengo and Aomame, are closely intertwined. They are each, in their own way, doing something very dangerous. And in this world, there seems no way to save them both. Something extraordinary is starting.",
"edition": "Combined edition",
"language": "English",
"libraryCatalog": "Amazon",
"numPages": 1328,
"publisher": "Vintage",
"shortTitle": "1Q84",
"place": "London",
"attachments": [
{
"title": "Amazon.com Link",
"snapshot": false,
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.amazon.com/Mark-LeBar/e/B00BU8L2DK",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.amazon.com/First-Quarto-Hamlet-Cambridge-Shakespeare-dp-0521418194/dp/0521418194/ref=mt_hardcover?_encoding=UTF8&me=&qid=",
"items": [
{
"itemType": "book",
"title": "The First Quarto of Hamlet",
"creators": [
{
"firstName": "William",
"lastName": "Shakespeare",
"creatorType": "author"
},
{
"firstName": "Kathleen O.",
"lastName": "Irace",
"creatorType": "editor"
}
],
"date": "1998-04-28",
"ISBN": "9780521418195",
"abstractNote": "The first printed text of Shakespeare's Hamlet is about half the length of the more familiar second quarto and Folio versions. It reorders and combines key plot elements to present its own workable alternatives. This is the only modernized critical edition of the 1603 quarto in print. Kathleen Irace explains its possible origins, special features and surprisingly rich performance history, and while describing textual differences between it and other versions, offers alternatives that actors or directors might choose for specific productions.",
"edition": "First Edition",
"language": "English",
"libraryCatalog": "Amazon",
"numPages": 144,
"place": "New York",
"publisher": "Cambridge University Press",
"attachments": [
{
"title": "Amazon.com Link",
"snapshot": false,
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.amazon.co.jp/dp/4003314212",
"items": [
{
"itemType": "book",
"title": "日本イデオロギー論",
"creators": [
{
"firstName": "潤",
"lastName": "戸坂",
"creatorType": "author"
}
],
"date": "1977-09-16",
"ISBN": "9784003314210",
"language": "Japanese",
"libraryCatalog": "Amazon",
"publisher": "岩波書店",
"abstractNote": "帯ありません。若干のスレはありますがほぼ普通です。小口、天辺に少しヤケがあります。中身は少しヤケはありますがきれいです。",
"attachments": [
{
"title": "Amazon.com Link",
"snapshot": false,
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.amazon.com/Studies-Saiva-Siddhanta-Classic-Reprint-Nallasvami/dp/1333821387/ref=sr_1_1?keywords=saiva+siddhanta&s=gateway",
"items": [
{
"itemType": "book",
"title": "Studies in Saiva-Siddhanta",
"creators": [
{
"firstName": "J. M. Nallasvami",
"lastName": "Pillai",
"creatorType": "author"
}
],
"date": "2018-08-24",
"ISBN": "9781333821388",
"abstractNote": "Excerpt from Studies in Saiva-SiddhantaEuropean Sanskritist, unaware perhaps of the bearings of the expression, rendered the collocation Parama-hamsa' into 'great goose'. The strictly pedagogic purist may endeavour to justify such puerile versions on etymological grounds, but they stand Self-condemned as mal-interpretations re?ecting anything but the sense and soul of the original. Such lapses into unwitting ignorance, need never be expected in any of the essays contained in the present collection, as our author is not only a sturdy and indefatigable researcher in Tamil philosophic literature illuminative Of the Agamic religion, but has also, in his quest after Truth, freely utilised the services of those Indigenous savam's, who represent the highest water-mark of Hindu traditional learning and spiritual associations at the present-day.",
"language": "English",
"libraryCatalog": "Amazon",
"numPages": 396,
"publisher": "Forgotten Books",
"attachments": [
{
"title": "Amazon.com Link",
"snapshot": false,
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.amazon.cn/dp/B07ZCN6W8H/ref=pd_sbs_351_1/459-4160990-6582747?_encoding=UTF8&pd_rd_i=B07ZCN6W8H&pd_rd_r=f03864d4-9412-43cf-ad75-a8edf561c28f&pd_rd_w=IisHL&pd_rd_wg=WUPGI&pf_rd_p=5bb179b2-ff44-431e-a8ee-d606fb63c2c9&pf_rd_r=SVY9ESS4Z4D02K9BWW40&psc=1&refRID=SVY9ESS4Z4D02K9BWW40",
"items": [
{
"itemType": "book",
"title": "中国之翼:飞行在战争、谎言、罗曼史和大冒险的黄金时代",
"creators": [
{
"firstName": "奇",
"lastName": "美]格雷戈里·克劳",
"creatorType": "author"
},
{
"firstName": "亚",
"lastName": "戈叔",
"creatorType": "author"
},
{
"firstName": "琪",
"lastName": "陈安",
"creatorType": "author"
}
],
"date": "2015-05-01",
"edition": "第 1st 版",
"libraryCatalog": "Amazon",
"publisher": "社会科学文献出版社",
"abstractNote": "《中国之翼》是一本书写了一段未被透露的航空编年史的篇章,它讲述了二战时期亚洲战场动荡的背景下的航空冒险的扣人心弦的故事。故事的主体是激动人心的真实的“空中兄弟连”的冒险事迹。正是这些人在二战期间帮助打开了被封锁的中国的天空,并勇敢的在各种冲突中勇敢守卫着它。这是一段值得被更多的中国人和美国人知晓并铭记的航空史和中美关系史。",
"attachments": [
{
"title": "Amazon.com Link",
"snapshot": false,
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Adam Crymble, Philipp Zumstein^https?://www\.freepatentsonline\.com//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2018 Philipp Zumstein
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes("result.html") && getSearchResults(doc, true)) {
return "multiple";
} else if (text(doc, 'div.disp_doc2 > div') || url.includes(".pdf")) {
return "patent";
}
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('table.listing_table > tbody > tr > td > a');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url, pdfUrl = null) {
if (url.includes('.pdf')) {
ZU.processDocuments(url.replace('.pdf', '.html'),
(catalogDoc, catalogUrl) => scrape(catalogDoc, catalogUrl, getPDFURL(doc)));
return;
}
var newItem = new Zotero.Item("patent");
var fieldtitles = ZU.xpath(doc, '//div[@class="disp_doc2"]/div[@class="disp_elm_title"]');
for (let i=0; i<fieldtitles.length; i++) {
let label = fieldtitles[i].textContent.replace(/:$\s*/, '').toLowerCase();
let value = ZU.xpathText(fieldtitles[i], './following-sibling::div').trim();
switch (label) {
case "title":
if (value == value.toUpperCase()) value = ZU.capitalizeTitle(value, true);
newItem.title = value;
break;
case "abstract":
newItem.abstractNote = value;
break;
case "application number":
case "document type and number":
newItem.applicationNumber = value;
break;
case "publication date":
//e.g. 07/18/2006
newItem.issueDate = parseDate(value);
break;
case "filing date":
newItem.filingDate = parseDate(value);
break;
case "assignee":
newItem.assignee = ZU.trimInternal(value);
break;
case "inventors":
let inventorsList = value.split("\n");
for (let j=0; j<inventorsList.length; j++) {
let name = inventorsList[j].replace(/\(.*$/, '').trim();
newItem.creators.push(ZU.cleanAuthor(name, "inventor", name.includes(',')));
}
break;
case "attorney, agent or firm":
if (value == value.toUpperCase()) value = ZU.capitalizeTitle(value, true);
let attorneysList = value.split("\n");
for (let j=0; j<attorneysList.length; j++) {
let name = attorneysList[j].replace(/\(.*$/, '').trim();
if (name.includes(',')) {
newItem.creators.push(ZU.cleanAuthor(name, "attorneyAgent", true));
} else {
newItem.creators.push({
lastName: name,
creatorType: "attorneyAgent",
fieldMode: 1
});
}
}
break;
case "primary examiner":
if (value == value.toUpperCase()) value = ZU.capitalizeTitle(value, true);
newItem.creators.push(ZU.cleanAuthor(value, "contributor", value.includes(',')));
break;
}
}
if (!newItem.patentNumber) {
newItem.patentNumber = ZU.xpathText(doc, "//input[@type='hidden' and @name='number']/@value");
}
if (!newItem.country) {
newItem.country = ZU.xpathText(doc, "//input[@type='hidden' and @name='country']/@value");
}
newItem.url = url;
newItem.attachments.push({
document: doc,
title: "Snapshot"
});
if (pdfUrl) {
newItem.attachments.push({
url: pdfUrl,
mimeType: "application/pdf",
title: "Full Text PDF"
});
newItem.complete();
}
else {
let pdfWrapperUrl = attr(doc, 'a[href*=".pdf"]', 'href');
if (pdfWrapperUrl) {
ZU.processDocuments(pdfWrapperUrl, (pdfWrapperDoc) => {
newItem.attachments.push({
url: getPDFURL(pdfWrapperDoc),
mimeType: "application/pdf",
title: "Full Text PDF"
});
newItem.complete();
});
}
else {
newItem.complete();
}
}
}
function getPDFURL(doc) {
return doc.querySelector("center > iframe[src*='s3']").src.replace(/#.*/, '');
}
function parseDate(value) {
//e.g. 07/18/2006
let dateParts = value.split('/');
if (dateParts.length==3) {
return dateParts[2] + '-' + dateParts[0] + '-' + dateParts[1]
} else {
return ZU.strToISO(value);
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://www.freepatentsonline.com/result.html?query_txt=encryption&sort=relevance&srch=top&search=",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.freepatentsonline.com/7751561.html",
"items": [
{
"itemType": "patent",
"title": "Partial encryption",
"creators": [
{
"firstName": "Brant L.",
"lastName": "Candelore",
"creatorType": "inventor"
},
{
"firstName": "Robert Allan",
"lastName": "Unger",
"creatorType": "inventor"
},
{
"firstName": "Leo M.",
"lastName": "Pedlow Jr. ",
"creatorType": "inventor"
},
{
"firstName": "Hosuk",
"lastName": "Song",
"creatorType": "contributor"
},
{
"lastName": "Miller Patent Services",
"creatorType": "attorneyAgent",
"fieldMode": 1
}
],
"issueDate": "2010-07-06",
"abstractNote": "A multiple partial encryption device consistent with certain embodiments has an input for receiving a unencrypted video signal. An encryption arrangement produces a partially multiple encrypted video signal from the unencrypted video signal. An output provides the partially multiple encrypted video signal. This abstract is not to be considered limiting, since other embodiments may deviate from the features described in this abstract.",
"applicationNumber": "12/001561",
"assignee": "Sony Corporation (Tokyo, JP) Sony Electronics Inc. (Park Ridge, NJ, US)",
"country": "United States",
"filingDate": "2007-12-12",
"patentNumber": "7751561",
"url": "https://www.freepatentsonline.com/7751561.html",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
},
{
"mimeType": "application/pdf",
"title": "Full Text PDF"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://nap\.nationalacademies\.org//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/catalog/')) {
return "book";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('h4.results-title a');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
async function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
let items = await Zotero.selectItems(getSearchResults(doc, false));
if (items) {
await Promise.all(
Object.keys(items)
.map(url => requestDocument(url).then(scrape))
);
}
}
else {
await scrape(doc, url);
}
}
async function scrape(doc, url = doc.location.href) {
let DOI = attr(doc, 'meta[name="citation_doi"]', 'content');
let trans = Zotero.loadTranslator('search');
trans.setSearch({ DOI });
trans.setHandler('translators', (_, translators) => {
trans.setTranslator(translators);
trans.translate();
});
trans.setHandler('itemDone', (_, item) => {
for (let creator of item.creators) {
if (creator.fieldMode == 1) {
creator.creatorType = 'contributor';
}
}
if (item.itemType == 'book') {
delete item.pages;
}
let recordID = url.match(/\/catalog\/([^/#?]+)/)[1];
item.attachments.push({
title: 'Full Text PDF',
mimeType: 'application/pdf',
url: `https://nap.nationalacademies.org/cart/download.cgi?record_id=${recordID}`
});
item.tags = [];
for (let tag of doc.querySelectorAll('.book-topics > li')) {
item.tags.push(ZU.trimInternal(tag.textContent.replace(/\s*—\s*/, '--')));
}
item.libraryCatalog = 'National Academies Press';
item.complete();
});
await trans.getTranslators();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://nap.nationalacademies.org/catalog/26186/the-use-of-limited-access-privilege-programs-in-mixed-use-fisheries",
"items": [
{
"itemType": "book",
"title": "The Use of Limited Access Privilege Programs in Mixed-Use Fisheries",
"creators": [
{
"creatorType": "contributor",
"fieldMode": 1,
"lastName": "Committee on the Use of Limited Access Privilege Programs in Mixed-Use Fisheries"
},
{
"creatorType": "contributor",
"fieldMode": 1,
"lastName": "Ocean Studies Board"
},
{
"creatorType": "contributor",
"fieldMode": 1,
"lastName": "Division on Earth and Life Studies"
},
{
"creatorType": "contributor",
"fieldMode": 1,
"lastName": "National Academies of Sciences, Engineering, and Medicine"
}
],
"date": "2021-12-16",
"ISBN": "9780309672979",
"extra": "DOI: 10.17226/26186",
"libraryCatalog": "National Academies Press",
"place": "Washington, D.C.",
"publisher": "National Academies Press",
"url": "https://www.nap.edu/catalog/26186",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Agriculture--Aquaculture and Fisheries"
},
{
"tag": "Agriculture--Policy, Reviews and Evaluations"
},
{
"tag": "Earth Sciences--Ocean Studies"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://nap.nationalacademies.org/search/?term=sharks&x=0&y=0",
"items": "multiple"
},
{
"type": "web",
"url": "https://nap.nationalacademies.org/catalog/25359/socioeconomic-impacts-of-automated-and-connected-vehicles",
"items": [
{
"itemType": "book",
"title": "Socioeconomic Impacts of Automated and Connected Vehicles",
"creators": [
{
"creatorType": "author",
"firstName": "Andrea",
"lastName": "Ricci"
},
{
"creatorType": "contributor",
"fieldMode": 1,
"lastName": "Technical Activities Division"
},
{
"creatorType": "contributor",
"fieldMode": 1,
"lastName": "Transportation Research Board"
},
{
"creatorType": "contributor",
"fieldMode": 1,
"lastName": "National Academies of Sciences, Engineering, and Medicine"
}
],
"date": "2018-01-10",
"ISBN": "9780309480062",
"extra": "DOI: 10.17226/25359",
"libraryCatalog": "National Academies Press",
"place": "Washington, D.C.",
"publisher": "Transportation Research Board",
"url": "https://www.nap.edu/catalog/25359",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Transportation and Infrastructure--Economics"
},
{
"tag": "Transportation and Infrastructure--Society"
},
{
"tag": "Transportation and Infrastructure--Vehicles and Equipment"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://(www|trid)\.trb\.org//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, _url) {
if (attr(doc, 'meta[name="contenttype"]', 'content').toLowerCase().includes('publication')) {
return "book";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('table a.LinkTitle[href*="/Blurbs/"]');
if (!rows.length) {
rows = doc.querySelectorAll('#recordListContainer .recordTitle a');
}
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (title.includes('TR News')) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
async function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
let items = await Zotero.selectItems(getSearchResults(doc, false));
if (items) {
await Promise.all(
Object.keys(items)
.map(url => requestDocument(url).then(scrape))
);
}
}
else {
await scrape(doc, url);
}
}
async function scrape(doc, url = doc.location.href) {
if (url.includes('//trid.trb.org')) {
let id = url.match(/\/View\/(\d+)/)[1];
let ris = await requestText('https://trid.trb.org/Record/Save', {
method: 'POST',
body: `saveFileType=RIS&saveResultIds=${id}`
});
let translator = Zotero.loadTranslator('import');
translator.setTranslator('32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7'); // RIS
translator.setString(ris);
translator.setHandler('itemDone', (_, item) => {
item.callNumber = item.archiveLocation;
delete item.archiveLocation;
item.complete();
});
await translator.translate();
}
else {
let loginURL = attr(doc, '.file-container a[href*="record_id"]', 'href');
let recordID = loginURL.match(/record_id=([^&]+)/)[1];
let napURL = `https://www.nap.edu/catalog/${recordID}`;
let translator = Zotero.loadTranslator('web');
// National Academies Press
translator.setTranslator('f76afa52-0524-440e-98ba-7c0c10a7b693');
translator.setDocument(await requestDocument(napURL));
await translator.translate();
return;
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.trb.org/Publications/Blurbs/178576.aspx",
"items": [
{
"itemType": "book",
"title": "Socioeconomic Impacts of Automated and Connected Vehicles",
"creators": [
{
"creatorType": "author",
"firstName": "Andrea",
"lastName": "Ricci"
},
{
"creatorType": "contributor",
"fieldMode": 1,
"lastName": "Technical Activities Division"
},
{
"creatorType": "contributor",
"fieldMode": 1,
"lastName": "Transportation Research Board"
},
{
"creatorType": "contributor",
"fieldMode": 1,
"lastName": "National Academies of Sciences, Engineering, and Medicine"
}
],
"date": "2018-01-10",
"ISBN": "9780309480062",
"extra": "DOI: 10.17226/25359",
"libraryCatalog": "National Academies Press",
"place": "Washington, D.C.",
"publisher": "Transportation Research Board",
"url": "https://www.nap.edu/catalog/25359",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Transportation and Infrastructure--Economics"
},
{
"tag": "Transportation and Infrastructure--Society"
},
{
"tag": "Transportation and Infrastructure--Vehicles and Equipment"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.trb.org/Publications/PubsACRPResearchResultsDigests.aspx",
"items": "multiple"
},
{
"type": "web",
"url": "https://trid.trb.org/View/1957119",
"items": [
{
"itemType": "journalArticle",
"title": "Crash reconstruction based on 3D image techniques, multi-rigid-body reconstruction and optimized genetic algorithm",
"creators": [
{
"lastName": "Wang",
"firstName": "Jinming",
"creatorType": "author"
},
{
"lastName": "Li",
"firstName": "Zhengdong",
"creatorType": "author"
},
{
"lastName": "Chen",
"firstName": "Yijiu",
"creatorType": "author"
},
{
"lastName": "Zou",
"firstName": "Donghua",
"creatorType": "author"
}
],
"date": "2022-01",
"abstractNote": "The Chinese national statistical authority reports approximately 100,000 traffic fatalities annual, and police must identify the responsible driver for each accident. THe analysis of traffic accidents depends on the forensic experts. Multi-body system simulations (MBS) have recently become popular for real-world crash reconstruction and evaluating injuries. This dynamic method of analysis depends on accurate accident data, which includes impact position , speed, braking distance, and other factors. THe more detail the data, the more accurate and realistic the simulation results. In this study, the authors present a multi-mode image system using unmanned aerial vehicle (UAV) photogrammetry, structured light scanning, and 3D laser to gather accurate data from the roadway, vehicle and pedestrians. A real accident case was analyzed to verify the effectiveness of the proposed system.",
"callNumber": "01847212",
"issue": "1",
"journalAbbreviation": "Accident Reconstruction Journal",
"libraryCatalog": "Transportation Research Board",
"pages": "19-21",
"publicationTitle": "Accident Reconstruction Journal",
"url": "https://trid.trb.org/view/1957119",
"volume": "32",
"attachments": [],
"tags": [
{
"tag": "China"
},
{
"tag": "Crash analysis"
},
{
"tag": "Crash reconstruction"
},
{
"tag": "Genetic algorithms"
},
{
"tag": "Image analysis"
},
{
"tag": "Photogrammetry"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://trid.trb.org/results.aspx?q=&serial=%22Accident%20Reconstruction%20Journal%22#/View/1957119",
"items": "multiple"
}
]
/** END TEST CASES **/
100Philipp Zumsteintxt/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2017 Philipp Zumstein
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
var typeMapping = {
// Zotero types
artwork: "Q838948",
// "attachment" : "Q17709279",
audioRecording: "Q30070318",
bill: "Q686822",
blogPost: "Q17928402",
book: "Q3331189", // changed from Q571 (work level) to edition level as we want to export maximal amount of properties
bookSection: "Q1980247",
case: "Q2334719",
computerProgram: "Q40056",
conferencePaper: "Q23927052",
dictionaryEntry: "Q30070414",
document: "Q49848",
email: "Q30070439",
encyclopediaArticle: "Q17329259",
film: "Q11424",
forumPost: "Q7216866",
hearing: "Q30070550",
instantMessage: "Q30070565",
interview: "Q178651",
journalArticle: "Q13442814",
letter: "Q133492",
magazineArticle: "Q30070590",
manuscript: "Q87167",
map: "Q4006",
newspaperArticle: "Q5707594",
// note
patent: "Q253623",
podcast: "Q24634210",
presentation: "Q604733",
radioBroadcast: "Q1555508",
report: "Q10870555",
statute: "Q820655",
thesis: "Q1266946",
tvBroadcast: "Q15416",
videoRecording: "Q30070675",
webpage: "Q36774",
// additional CSL types (can be used in Zotero with a hack)
dataset: "Q1172284",
// entry
figure: "Q30070753",
musical_score: "Q187947", // eslint-disable-line camelcase
pamphlet: "Q190399",
review: "Q265158",
"review-book": "Q637866",
treaty: "Q131569"
};
// simple properties with string values can be simply mapped here
var propertyMapping = {
P356: "DOI",
P953: "url",
P478: "volume",
P433: "issue",
P304: "pages",
P1104: "numPages",
P393: "edition"
};
// properties which needs no quotes around their values (e.g. ones for numbers)
var nonStringProperties = ["P1104"];
// it is important to use here the language codes in the form
// as they are also used in Wikidata for monolingual text
var languageMapping = {
en: "Q1860",
zh: "Q7850",
ru: "Q7737",
fr: "Q150",
ja: "Q5287",
de: "Q188",
es: "Q1321",
sr: "Q9299",
pl: "Q809",
cs: "Q9056",
it: "Q652",
cy: "Q9309",
pt: "Q5146",
nl: "Q7411",
sv: "Q9027",
ar: "Q13955",
ko: "Q9176",
hu: "Q9067",
da: "Q9035",
fi: "Q1412",
eu: "Q8752",
he: "Q9288",
la: "Q397",
nb: "Q25167",
no: "Q9043",
el: "Q9129",
tr: "Q256",
ca: "Q7026",
sl: "Q9063",
ro: "Q7913",
is: "Q294",
grc: "Q35497",
uk: "Q8798",
fa: "Q9168",
hy: "Q8785",
ta: "Q5885"
};
var identifierMapping = {
PMID: "P698",
PMCID: "P932",
"JSTOR ID": "P888",
arXiv: "P818",
"Open Library ID": "P648",
OCLC: "P243",
"IMDb ID": "P345",
"Google-Books-ID": "P675"
};
function zoteroItemToQuickStatements(item) {
// add numPages if only page range is given
if (item.pages && !item.numPages) {
let pagesMatch = item.pages.match(/^(\d+)[–-](\d+)$/);
if (pagesMatch) {
item.numPages = parseInt(pagesMatch[2]) - parseInt(pagesMatch[1]) + 1;
}
}
// cleanup edition before to export
if (item.edition) {
item.edition = parseInt(item.edition);
if (item.edition == 1) {
delete item.edition;
}
}
var statements = ['CREATE'];
var addStatement = function () {
var args = Array.prototype.slice.call(arguments);
statements.push('LAST\t' + args.join('\t'));
};
var itemType = item.itemType;
// check whether a special itemType is defined in the extra fields
if (item.extra) {
var matchItemType = item.extra.match(/itemType: ([\w-]+)($|\n)/);
if (matchItemType) {
itemType = matchItemType[1];
}
}
if (typeMapping[itemType]) {
addStatement('P31', typeMapping[itemType]);
}
var description = itemType.replace(/([A-Z])/, function (match, firstLetter) {
return ' ' + firstLetter.toLowerCase();
});
if (item.publicationTitle && (itemType == "journalArticle" || itemType == "magazineArticle" || itemType == "newspaperArticle")) {
description = description + ' from \'' + item.publicationTitle + '\'';
}
if (item.date) {
var year = ZU.strToDate(item.date).year;
if (year) {
description = description + ' published in ' + year;
}
}
addStatement('Den', '"' + description + '"');
for (var pnumber in propertyMapping) {
var zfield = propertyMapping[pnumber];
if (item[zfield]) {
if (nonStringProperties.includes(pnumber)) {
addStatement(pnumber, item[zfield]);
}
else {
addStatement(pnumber, '"' + item[zfield] + '"');
}
}
}
var index = 1;
for (var i = 0; i < item.creators.length; i++) {
var creatorValue = item.creators[i].lastName;
var creatorType = item.creators[i].creatorType;
if (item.creators[i].firstName) {
creatorValue = item.creators[i].firstName + ' ' + creatorValue;
}
if (creatorType == "author") {
addStatement('P2093', '"' + creatorValue + '"', 'P1545', '"' + index + '"');
index++;
}
// other creatorTypes are ignored, because they would need to point an item, rather than just writing the string value
}
if (item.date) {
// e.g. +1967-01-17T00:00:00Z/11
var formatedDate = ZU.strToISO(item.date);
switch (formatedDate.length) {
case 4:
formatedDate += "-00-00T00:00:00Z/9";
break;
case 7:
formatedDate += "-00T00:00:00Z/10";
break;
case 10:
formatedDate += "T00:00:00Z/11";
break;
default:
formatedDate += "/11";
}
addStatement('P577', '+' + formatedDate);
}
// determining depending entries where the ISBN is part of the larger work
var dependingWork = ["bookSection", "conferencePaper", "dictionaryEntry", "encyclopediaArticle", "journalArticle", "magazineArticle", "newspaperArticle"].includes(itemType);
if (item.ISBN && !dependingWork) {
var isbnDigits = item.ISBN.replace(/-/g, '');
if (isbnDigits.length == 13) {
addStatement('P212', '"' + item.ISBN + '"');
}
if (isbnDigits.length == 10) {
addStatement('P957', '"' + item.ISBN + '"');
}
}
if (item.language && (item.language.toLowerCase() in languageMapping)) {
let lang = item.language.toLowerCase();
addStatement('L' + lang, '"' + item.title + '"');
addStatement('P1476', lang + ':"' + item.title + '"');
addStatement('P407', languageMapping[lang]);
}
else {
// otherwise use "und" for undetermined language and add the label in english by default
addStatement('Len', '"' + item.title + '"');
addStatement('P1476', 'und:"' + item.title + '"');
}
if (item.extra) {
var extraLines = item.extra.split('\n');
for (var j = 0; j < extraLines.length; j++) {
var colon = extraLines[j].indexOf(':');
if (colon > -1) {
var label = extraLines[j].substr(0, colon);
var value = extraLines[j].substr(colon + 1);
if (identifierMapping[label]) {
addStatement(identifierMapping[label], '"' + value.trim() + '"');
}
if (label.match(/^P\d+$/)) {
if (value.trim().match(/^Q\d+$/)) {
addStatement(label, value.trim());
}
else {
addStatement(label, '"' + value.trim() + '"');
}
}
}
}
}
return statements.join('\n') + '\n';
}
function doExport() {
var item;
while ((item = Zotero.nextItem())) {
// skipping items with a QID saved in extra
if (item.extra && item.extra.match(/^QID: /m)) continue;
// write the statements
Zotero.write(zoteroItemToQuickStatements(item));
}
}
100Guy Aglionby^https?://(www\.semanticscholar\.org/(paper/.+|search\?|reader/.+)|pdfs\.semanticscholar\.org/)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2017 Guy Aglionby
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
// See also https://github.com/zotero/translators/blob/master/BibTeX.js
var bibtex2zoteroTypeMap = {
article: "journalArticle",
inproceedings: "conferencePaper",
conference: "conferencePaper",
};
function getItemTypeFromBibtex(doc) {
const bibtex = ZU.xpathText(doc, '//pre[@class="bibtex-citation"]');
const bibtexType = bibtex.split('{')[0].replace('@', '');
return bibtex2zoteroTypeMap[bibtexType] || 'journalArticle';
}
function getSearchResults(doc, checkOnly) {
let searchResults = doc.querySelectorAll('.result-page .cl-paper-row > a');
if (checkOnly) {
return searchResults.length > 0;
}
let items = {};
for (let row of searchResults) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (href && title) {
items[href] = title;
}
}
return items;
}
function detectWeb(doc, url) {
if (doc.querySelector('#app')) {
Z.monitorDOMChanges(
doc.querySelector('#app'),
{ childList: true, subtree: true }
);
}
if (url.includes('semanticscholar.org/search?')) {
const hasSearchResults = getSearchResults(doc, true);
if (hasSearchResults) {
return 'multiple';
}
}
return getItemTypeFromBibtex(doc);
}
function doWeb(doc, url) {
const docType = detectWeb(doc, url)
if (docType == 'multiple') {
Zotero.selectItems(getSearchResults(doc, false), (items) => {
if (items) {
ZU.processDocuments(Object.keys(items), scrape);
}
});
return;
}
scrape(doc, url);
}
function scrape(doc, url) {
const itemType = getItemTypeFromBibtex(doc);
const item = new Zotero.Item(itemType);
const schemaTag = doc.querySelector('script.schema-data');
const schemaObject = JSON.parse(schemaTag.innerHTML);
const article = schemaObject['@graph'][1][0];
if (article.about) {
item.abstractNote = article.abstract.substring(article.about.length + 1);
item.notes.push('[TLDR] ' + article.about);
} else {
item.abstractNote = article.abstract;
}
item.attachments.push({
url: url,
title: url.includes('semanticscholar.org/reader') ? 'Semantic Reader Link' : 'Semantic Scholar Link',
mimeType: 'text/html',
snapshot: false
});
if (article.mainEntity && (article.mainEntity.includes('pdfs.semanticscholar.org') || article.mainEntity.includes('.pdf'))) {
item.attachments.push({
title: 'Full Text PDF',
mimeType: 'application/pdf',
url: article.mainEntity
});
}
if (article.sameAs) {
item.DOI = ZU.cleanDOI(decodeURIComponent(article.sameAs));
parseWithDOITranslator(item);
return;
}
item.title = article.name;
item.date = article.datePublished;
item.url = url;
if (url.includes('semanticscholar.org/reader')) {
const catalogPageLink = doc.querySelector('[data-heap-id="reader_to_pdp_link"]');
item.url = catalogPageLink ? catalogPageLink.href : null;
}
if (itemType == 'conferencePaper' && article.publisher) {
item.conferenceName = article.publisher.name;
}
if (itemType == 'journalArticle' && article.publication) {
item.publicationTitle = article.publication;
}
if (article.author) {
article.author.forEach((author) => {
item.creators.push(ZU.cleanAuthor(author.name, 'author'));
});
}
item.complete();
}
function parseWithDOITranslator(item) {
var translate = Zotero.loadTranslator('search');
translate.setTranslator('b28d0d42-8549-4c6d-83fc-8382874a5cb9'); // DOI Content Negotiation
translate.setSearch({ DOI: item.DOI });
translate.setHandler('itemDone', (obj, doiItem) => {
let originalItemType = item.itemType;
let oldAttachments = item.attachments;
let oldNotes = item.notes;
Object.assign(item, doiItem);
item.libraryCatalog = 'Semantic Scholar';
item.itemType = originalItemType;
if (!item.attachments.length) {
item.attachments = oldAttachments;
}
if (!item.notes.length) {
item.notes = oldNotes;
}
});
translate.setHandler('done', () => item.complete());
translate.setHandler('error', (_, error) => Zotero.debug(error));
translate.translate();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.semanticscholar.org/paper/Text-Analysis-of-Cases-Description-in-Urban-Field-Liu-Song/dd1e49494be449af48cfb223e22766f805d1f216",
"items": [
{
"itemType": "conferencePaper",
"title": "Text Analysis of Cases Description in Urban Management Field Based on Knowledge Atlas",
"creators": [
{
"creatorType": "author",
"firstName": "Xutong",
"lastName": "Liu"
},
{
"creatorType": "author",
"firstName": "Hui",
"lastName": "Song"
},
{
"creatorType": "author",
"firstName": "Longqi",
"lastName": "Dai"
},
{
"creatorType": "author",
"firstName": "Bo",
"lastName": "Xu"
}
],
"date": "2018",
"DOI": "10.1145/3207677.3278062",
"ISBN": "9781450365123",
"abstractNote": "With1 the development of information technology, Chinese urban Management has entered the information age. There will be a large number of cases with unstructured text which are reported by city officers and citizens entering into the digital platform, processing these text only by traditional method such as searching by key words will not only consume a lot of energy and time, but also be difficult to generalize the core issues of urban management because of the lost of the relationships between entities and events. In this paper, we propose a domain-oriented method to analyze the text using the domain-oriented knowledge graph and BLSTM-CRF model. we define a new graph structure to grasp the syntactical pattern and core concepts of this field by the method of hierarchical LDA (H-LDA). Combing the BLSTM-CRF language processing model with the domain knowledge graph, key entities and the corresponding description phrase are extracted from the text and recomposed as a short description. We make a further statistical analysis on the basic of the descriptions and semantic labels to find problems that affecting urban development and put forward pertinent suggestions.",
"conferenceName": "the 2nd International Conference",
"language": "en",
"libraryCatalog": "Semantic Scholar",
"pages": "1-7",
"place": "Hohhot, China",
"proceedingsTitle": "Proceedings of the 2nd International Conference on Computer Science and Application Engineering - CSAE '18",
"publisher": "ACM Press",
"url": "http://dl.acm.org/citation.cfm?doid=3207677.3278062",
"attachments": [
{
"title": "Semantic Scholar Link",
"mimeType": "text/html",
"snapshot": false
}
],
"tags": [],
"notes": [
"[TLDR] A new graph structure is defined to grasp the syntactical pattern and core concepts of this field by the method of hierarchical LDA (H-LDA), and key entities and the corresponding description phrase are extracted from the text and recomposed as a short description."
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.semanticscholar.org/paper/Attention-Transformer-Model-for-Translation-of-Dhanani-Rafi/6043e3b975a9e775203eec9ef0eab19d6dd0d378",
"items": [
{
"itemType": "conferencePaper",
"title": "Attention Transformer Model for Translation of Similar Languages",
"creators": [
{
"firstName": "Farhan",
"lastName": "Dhanani",
"creatorType": "author"
},
{
"firstName": "Muhammad",
"lastName": "Rafi",
"creatorType": "author"
}
],
"date": "2020",
"abstractNote": "This paper illustrates our approach to the shared task on similar language translation in the fifth conference on machine translation (WMT-20). Our motivation comes from the latest state of the art neural machine translation in which Transformers and Recurrent Attention models are effectively used. A typical sequence-sequence architecture consists of an encoder and a decoder Recurrent Neural Network (RNN). The encoder recursively processes a source sequence and reduces it into a fixed-length vector (context), and the decoder generates a target sequence, token by token, conditioned on the same context. In contrast, the advantage of transformers is to reduce the training time by offering a higher degree of parallelism at the cost of freedom for sequential order. With the introduction of Recurrent Attention, it allows the decoder to focus effectively on order of the source sequence at different decoding steps. In our approach, we have combined the recurrence based layered encoder-decoder model with the Transformer model. Our Attention Transformer model enjoys the benefits of both Recurrent Attention and Transformer to quickly learn the most probable sequence for decoding in the target language. The architecture is especially suited for similar languages (languages coming from the same family). We have submitted our system for both Indo-Aryan Language forward (Hindi to Marathi) and reverse (Marathi to Hindi) pair. Our system trains on the parallel corpus of the training dataset provided by the organizers and achieved an average BLEU point of 3.68 with 97.64 TER score for the Hindi-Marathi, along with 9.02 BLEU point and 88.6 TER score for Marathi-Hindi testing set.",
"conferenceName": "WMT",
"libraryCatalog": "Semantic Scholar",
"url": "https://www.semanticscholar.org/paper/Attention-Transformer-Model-for-Translation-of-Dhanani-Rafi/6043e3b975a9e775203eec9ef0eab19d6dd0d378",
"attachments": [
{
"title": "Semantic Scholar Link",
"mimeType": "text/html",
"snapshot": false
},
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [
"[TLDR] This paper illustrates the approach to the shared task on similar language translation in the fifth conference on machine translation (WMT-20) with a recurrence based layered encoder-decoder model with the Transformer model that enjoys the benefits of both Recurrent Attention and Transformer."
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.semanticscholar.org/paper/TRANS-BLSTM%3A-Transformer-with-Bidirectional-LSTM-Huang-Xu/c79a8fd667f59e6f1ca9d54afc34f792e9079c7e",
"items": [
{
"itemType": "journalArticle",
"title": "TRANS-BLSTM: Transformer with Bidirectional LSTM for Language Understanding",
"creators": [
{
"firstName": "Zhiheng",
"lastName": "Huang",
"creatorType": "author"
},
{
"firstName": "Peng",
"lastName": "Xu",
"creatorType": "author"
},
{
"firstName": "Davis",
"lastName": "Liang",
"creatorType": "author"
},
{
"firstName": "Ajay K.",
"lastName": "Mishra",
"creatorType": "author"
},
{
"firstName": "Bing",
"lastName": "Xiang",
"creatorType": "author"
}
],
"date": "16 March 2020",
"abstractNote": "Bidirectional Encoder Representations from Transformers (BERT) has recently achieved state-of-the-art performance on a broad range of NLP tasks including sentence classification, machine translation, and question answering. The BERT model architecture is derived primarily from the transformer. Prior to the transformer era, bidirectional Long Short-Term Memory (BLSTM) has been the dominant modeling architecture for neural machine translation and question answering. In this paper, we investigate how these two modeling techniques can be combined to create a more powerful model architecture. We propose a new architecture denoted as Transformer with BLSTM (TRANS-BLSTM) which has a BLSTM layer integrated to each transformer block, leading to a joint modeling framework for transformer and BLSTM. We show that TRANS-BLSTM models consistently lead to improvements in accuracy compared to BERT baselines in GLUE and SQuAD 1.1 experiments. Our TRANS-BLSTM model obtains an F1 score of 94.01% on the SQuAD 1.1 development dataset, which is comparable to the state-of-the-art result.",
"libraryCatalog": "Semantic Scholar",
"publicationTitle": "ArXiv",
"shortTitle": "TRANS-BLSTM",
"url": "https://www.semanticscholar.org/paper/TRANS-BLSTM%3A-Transformer-with-Bidirectional-LSTM-Huang-Xu/c79a8fd667f59e6f1ca9d54afc34f792e9079c7e",
"attachments": [
{
"title": "Semantic Scholar Link",
"mimeType": "text/html",
"snapshot": false
},
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [
"[TLDR] It is shown that TRANS-BLSTM models consistently lead to improvements in accuracy compared to BERT baselines in GLUE and SQuAD 1.1 experiments, and is proposed as a joint modeling framework for transformer and BLSTM."
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.semanticscholar.org/reader/204e3073870fae3d05bcbc2f6a8e263d9b72e776",
"items": [
{
"itemType": "journalArticle",
"title": "Attention is All you Need",
"creators": [
{
"firstName": "Ashish",
"lastName": "Vaswani",
"creatorType": "author"
},
{
"firstName": "Noam M.",
"lastName": "Shazeer",
"creatorType": "author"
},
{
"firstName": "Niki",
"lastName": "Parmar",
"creatorType": "author"
},
{
"firstName": "Jakob",
"lastName": "Uszkoreit",
"creatorType": "author"
},
{
"firstName": "Llion",
"lastName": "Jones",
"creatorType": "author"
},
{
"firstName": "Aidan N.",
"lastName": "Gomez",
"creatorType": "author"
},
{
"firstName": "Lukasz",
"lastName": "Kaiser",
"creatorType": "author"
},
{
"firstName": "Illia",
"lastName": "Polosukhin",
"creatorType": "author"
}
],
"date": "12 June 2017",
"abstractNote": "The dominant sequence transduction models are based on complex recurrent or convolutional neural networks in an encoder-decoder configuration. The best performing models also connect the encoder and decoder through an attention mechanism. We propose a new simple network architecture, the Transformer, based solely on attention mechanisms, dispensing with recurrence and convolutions entirely. Experiments on two machine translation tasks show these models to be superior in quality while being more parallelizable and requiring significantly less time to train. Our model achieves 28.4 BLEU on the WMT 2014 English-to-German translation task, improving over the existing best results, including ensembles by over 2 BLEU. On the WMT 2014 English-to-French translation task, our model establishes a new single-model state-of-the-art BLEU score of 41.8 after training for 3.5 days on eight GPUs, a small fraction of the training costs of the best models from the literature. We show that the Transformer generalizes well to other tasks by applying it successfully to English constituency parsing both with large and limited training data.",
"libraryCatalog": "Semantic Scholar",
"publicationTitle": "ArXiv",
"url": "https://www.semanticscholar.org/paper/204e3073870fae3d05bcbc2f6a8e263d9b72e776",
"attachments": [
{
"title": "Semantic Reader Link",
"mimeType": "text/html",
"snapshot": false
},
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [
"[TLDR] A new simple network architecture, the Transformer, based solely on attention mechanisms, dispensing with recurrence and convolutions entirely is proposed, which generalizes well to other tasks by applying it successfully to English constituency parsing both with large and limited training data."
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.semanticscholar.org/reader/fa72afa9b2cbc8f0d7b05d52548906610ffbb9c5",
"items": [
{
"itemType": "journalArticle",
"title": "Neural Machine Translation by Jointly Learning to Align and Translate",
"creators": [
{
"firstName": "Dzmitry",
"lastName": "Bahdanau",
"creatorType": "author"
},
{
"firstName": "Kyunghyun",
"lastName": "Cho",
"creatorType": "author"
},
{
"firstName": "Yoshua",
"lastName": "Bengio",
"creatorType": "author"
}
],
"date": "1 September 2014",
"abstractNote": "Neural machine translation is a recently proposed approach to machine translation. Unlike the traditional statistical machine translation, the neural machine translation aims at building a single neural network that can be jointly tuned to maximize the translation performance. The models proposed recently for neural machine translation often belong to a family of encoder-decoders and consists of an encoder that encodes a source sentence into a fixed-length vector from which a decoder generates a translation. In this paper, we conjecture that the use of a fixed-length vector is a bottleneck in improving the performance of this basic encoder-decoder architecture, and propose to extend this by allowing a model to automatically (soft-)search for parts of a source sentence that are relevant to predicting a target word, without having to form these parts as a hard segment explicitly. With this new approach, we achieve a translation performance comparable to the existing state-of-the-art phrase-based system on the task of English-to-French translation. Furthermore, qualitative analysis reveals that the (soft-)alignments found by the model agree well with our intuition.",
"libraryCatalog": "Semantic Scholar",
"publicationTitle": "CoRR",
"url": "https://www.semanticscholar.org/paper/fa72afa9b2cbc8f0d7b05d52548906610ffbb9c5",
"attachments": [
{
"title": "Semantic Reader Link",
"mimeType": "text/html",
"snapshot": false
},
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [
"[TLDR] It is conjecture that the use of a fixed-length vector is a bottleneck in improving the performance of this basic encoder-decoder architecture, and it is proposed to extend this by allowing a model to automatically (soft-)search for parts of a source sentence that are relevant to predicting a target word, without having to form these parts as a hard segment explicitly."
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.semanticscholar.org/reader/2fd10e095b146f99da8cdc6ff58720e2e8fca36d",
"items": [
{
"itemType": "conferencePaper",
"title": "When Attention Meets Fast Recurrence: Training Language Models with Reduced Compute",
"creators": [
{
"creatorType": "author",
"firstName": "Tao",
"lastName": "Lei"
}
],
"date": "2021",
"DOI": "10.18653/v1/2021.emnlp-main.602",
"abstractNote": "Large language models have become increasingly difficult to train because of the growing computation time and cost. In this work, we present SRU++, a highly-efficient architecture that combines fast recurrence and attention for sequence modeling. SRU++ exhibits strong modeling capacity and training efficiency. On standard language modeling tasks such as Enwik8, Wiki-103 and Billion Word datasets, our model obtains better bits-per-character and perplexity while using 3x-10x less training cost compared to top-performing Transformer models. For instance, our model achieves a state-of-the-art result on the Enwik8 dataset using 1.6 days of training on an 8-GPU machine. We further demonstrate that SRU++ requires minimal attention for near state-of-the-art performance. Our results suggest jointly leveraging fast recurrence with little attention as a promising direction for accelerating model training and inference.",
"conferenceName": "Proceedings of the 2021 Conference on Empirical Methods in Natural Language Processing",
"language": "en",
"libraryCatalog": "Semantic Scholar",
"pages": "7633-7648",
"place": "Online and Punta Cana, Dominican Republic",
"proceedingsTitle": "Proceedings of the 2021 Conference on Empirical Methods in Natural Language Processing",
"publisher": "Association for Computational Linguistics",
"shortTitle": "When Attention Meets Fast Recurrence",
"url": "https://aclanthology.org/2021.emnlp-main.602",
"attachments": [
{
"title": "Semantic Reader Link",
"mimeType": "text/html",
"snapshot": false
},
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [
"[TLDR] This work presents SRU++, a highly-efficient architecture that combines fast recurrence and attention for sequence modeling that exhibits strong modeling capacity and training efficiency and suggests jointly leveragingFast recurrence with little attention as a promising direction for accelerating model training and inference."
],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
300Sebastian Karcher/@.+/\d{10}/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2022 Sebastian Karcher
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, _url) {
if (text(doc, '#mastodon div.detailed-status__wrapper')) {
return 'forumPost';
}
return false;
}
async function doWeb(doc, _url) {
// We're for now purposefully staying away from multiples as mass-scraping
// is discouraged on many Mastodon instances
await scrape(doc);
}
async function scrape(doc) {
var item = new Zotero.Item("forumPost");
var post = doc.getElementsByClassName("detailed-status__wrapper")[0];
let title = text(post, '.status__content');
// cut off titles longer than 140 characters
if (title.length < 140) {
item.title = title;
}
else {
item.title = ZU.ellipsize(title, 140, true);
item.abstractNote = title;
// we'll keep the full text in the abstract in this case;
}
let username = text(post, '.display-name__account');
let name = text(post, '.display-name__html');
name = ZU.cleanAuthor(name, "author", false);
// add the handle to the first name field
if (name.firstName) {
name.firstName += " (" + username + ")";
}
else { // single field authors
name.firstName = "(" + username + ")";
}
// Z.debug(name);
item.creators.push(name);
item.date = ZU.strToISO(text(post, '.detailed-status__datetime'));
let posturl = attr(post, 'a.detailed-status__datetime', 'href');
if ((posturl.match(/@/g) || []).length == 2) {
// We're on a different instance than the poster
item.url = "https://" + posturl.replace(/\/(@.+?)@([^/]+)(\/.+)/, "$2/$1$3");
}
else {
item.url = "https://" + doc.location.host + posturl;
}
item.attachments.push({ document: doc, title: "Snapshot" });
item.language = attr(post, '.status__content__text', 'lang');
item.forumTitle = "Mastodon";
item.type = "Mastodon post";
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://openbiblio.social/@zuphilip/109304791051979061",
"defer": true,
"items": [
{
"itemType": "forumPost",
"title": "@adam42smith Ist there a Zotero translator already for the different Mastodon instances?",
"creators": [
{
"firstName": "Philipp (@zuphilip@openbiblio.social)",
"lastName": "Zumstein",
"creatorType": "author"
}
],
"date": "2022-11-07",
"forumTitle": "Mastodon",
"language": "de",
"postType": "Mastodon post",
"url": "https://openbiblio.social/@zuphilip/109304791051979061",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://fediscience.org/@adam42smith/109451274536283955",
"defer": true,
"items": [
{
"itemType": "forumPost",
"title": "@Lambo Yeah, both Chicago & APA have standard guidance. Citing a Mastodon Post CMOS FN:2. Lambert Heller (@Lambo), “Since The Chicago Manual…",
"creators": [
{
"firstName": "Sebastian (@adam42smith@fediscience.org)",
"lastName": "Karcher",
"creatorType": "author"
}
],
"date": "2022-12-03",
"abstractNote": "@Lambo Yeah, both Chicago & APA have standard guidance. Citing a Mastodon Post CMOS FN:2. Lambert Heller (@Lambo), “Since The Chicago Manual of Style (or similar authorities) are apparently not in the Fediverse yet, who will explain to us how to cite a toot? Do you have any idea, @adam42smith?,” Mastodon, Dec. 3, 2022, 11:17 a.m., https://scholar.social/@Lambo/109450640339409266",
"forumTitle": "Mastodon",
"language": "en",
"postType": "Mastodon post",
"shortTitle": "@Lambo Yeah, both Chicago & APA have standard guidance. Citing a Mastodon Post CMOS FN",
"url": "https://fediscience.org/@adam42smith/109451274536283955",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://scholar.social/@Lambo/109450640339409266",
"defer": true,
"items": [
{
"itemType": "forumPost",
"title": "Since The Chicago Manual of Style (or similar authorities) are apparently not in the Fediverse yet, who will explain to us how to cite a…",
"creators": [
{
"firstName": "Lambert (@Lambo@scholar.social)",
"lastName": "Heller",
"creatorType": "author"
}
],
"date": "2022-12-03",
"abstractNote": "Since The Chicago Manual of Style (or similar authorities) are apparently not in the Fediverse yet, who will explain to us how to cite a toot? Do you have any idea, @adam42smith?",
"forumTitle": "Mastodon",
"language": "de",
"postType": "Mastodon post",
"url": "https://scholar.social/@Lambo/109450640339409266",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Sebastian Karcher and Abe Jellinek^https?://[^/]*muse\.jhu\.edu/(book/|pub/|article/|issue/|search\?)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2016 Sebastian Karcher
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/article/')) {
return "journalArticle";
}
else if (url.includes('/book/')) {
return "book";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
else {
return false;
}
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = ZU.xpath(doc, '//li[@class="title"]//a[contains(@href, "/article/") or contains(@href, "/book/")]');
for (var i = 0; i < rows.length; i++) {
var href = rows[i].href;
var title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) {
return true;
}
let articles = [];
for (let i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
return true;
});
}
else {
scrape(doc);
}
}
function scrape(doc) {
let citationURL = ZU.xpathText(doc, '//li[@class="view_citation"]//a/@href');
ZU.processDocuments(citationURL, function (respText) {
let risEntry = ZU.xpathText(respText, '//*[(@id = "tabs-4")]//p');
let doiEntry = ZU.xpathText(respText, '//*[(@id = "tabs-1")]//p');
if (doiEntry.includes('doi:')) {
var doi = doiEntry.split('doi:')[1].replace(/.$/, '');
}
// RIS translator
let translator = Zotero.loadTranslator("import");
translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7");
translator.setString(risEntry);
translator.setHandler("itemDone", function (obj, item) {
if (doi) item.DOI = doi;
let abstract = ZU.xpathText(doc, '//div[@class="abstract"][1]/p');
if (!abstract) abstract = ZU.xpathText(doc, '//div[@class="description"][1]');
if (!abstract) abstract = ZU.xpathText(doc, '//div[contains(@class, "card_summary") and contains(@class, "no_border")]');
let tags = ZU.xpathText(doc, '//*[contains(concat( " ", @class, " " ), concat( " ", "kwd-group", " " ))]//p');
if (abstract) {
item.abstractNote = abstract.replace(/^,*\s*Abstract[:,]*/, "").replace(/show (less|more)$/, "").replace(/,\s*$/, "");
}
if (tags) {
item.tags = tags.split(",");
}
item.notes = [];
let cards = doc.querySelectorAll('.card');
for (let card of cards) {
let url = attr(card, 'a[href*="/pdf"]', 'href');
if (!url) continue;
item.attachments.push({
url,
title: text(card, '.title') || "Full Text PDF",
mimeType: 'application/pdf'
});
}
item.complete();
});
translator.translate();
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://muse.jhu.edu/article/200965",
"items": [
{
"itemType": "journalArticle",
"title": "Terror, Trauma and the 'Young Marx' Explanation of Jacobin Politics",
"creators": [
{
"lastName": "Higonnet",
"firstName": "Patrice L. R",
"creatorType": "author"
}
],
"date": "2006",
"ISSN": "1477-464X",
"issue": "1",
"libraryCatalog": "Project MUSE",
"pages": "121-164",
"publicationTitle": "Past & Present",
"url": "https://muse.jhu.edu/article/200965",
"volume": "191",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://muse.jhu.edu/issue/597",
"items": "multiple"
},
{
"type": "web",
"url": "https://muse.jhu.edu/book/785",
"items": [
{
"itemType": "book",
"title": "Writing the Forest in Early Modern England: A Sylvan Pastoral Nation",
"creators": [
{
"lastName": "Theis",
"firstName": "Jeffrey S.",
"creatorType": "author"
}
],
"date": "2009",
"ISBN": "9780820705057",
"abstractNote": "In Writing the Forest in Early Modern England: A Sylvan Pastoral Nation, Jeffrey S. Theis focuses on pastoral literature in early modern England as an emerging form of nature writing. In particular, Theis analyzes what happens when pastoral writing is set in forests — what he terms “sylvan pastoral.”\nDuring the sixteenth and seventeenth centuries, forests and woodlands played an instrumental role in the formation of individual and national identities in England. Although environmentalism as we know it did not yet exist, persistent fears of timber shortages led to a larger anxiety about the status of forests. Perhaps more important, forests were dynamic and contested sites of largely undeveloped spaces where the poor would migrate in a time of rising population when land became scarce. And in addition to being a place where the poor would go, the forest also was a playground for monarchs and aristocrats where they indulged in the symbolically rich sport of hunting.\nConventional pastoral literature, then, transforms when writers use it to represent and define forests and the multiple ways in which English society saw these places. In exploring these themes, authors expose national concerns regarding deforestation and forest law and present views relating to land ownership, nationhood, and the individual’s relationship to nature. Of particular interest are the ways in which cultures turn confusing spaces into known places and how this process is shaped by nature, history, gender, and class.\nTheis examines the playing out of these issues in familiar works by Shakespeare, such as A Midsummer Night’s Dream, The Merry Wives of Windsor, and As You Like It, Andrew Marvell’s “Upon Appleton House,” John Milton’s Mask and Paradise Lost, as well as in lesser known prose works of the English Revolution, such as James Howell’s Dendrologia>/i> and John Evelyn’s Sylva.\nAs a unique ecocritical study of forests in early modern English literature, Writing the Forest makes an important contribution to the growing field of the history of environmentalism, and will be of interest to those working in literary and cultural history as well as philosophers concerned with nature and space theory.",
"libraryCatalog": "Project MUSE",
"place": "Pittsburgh",
"publisher": "Duquesne University Press",
"shortTitle": "Writing the Forest in Early Modern England",
"url": "https://muse.jhu.edu/book/785",
"attachments": [
{
"title": "Cover",
"mimeType": "application/pdf"
},
{
"title": "Title Page, Copyright",
"mimeType": "application/pdf"
},
{
"title": "CONTENTS",
"mimeType": "application/pdf"
},
{
"title": "FIGURES",
"mimeType": "application/pdf"
},
{
"title": "ACKNOWLEDGMENTS",
"mimeType": "application/pdf"
},
{
"title": "INTRODUCTION: Sylvan Pastoral in Early Modern England",
"mimeType": "application/pdf"
},
{
"title": "ONE. The Rise of Sylvan Pastoral: LITERARY FORM MEETS FOREST HISTORY",
"mimeType": "application/pdf"
},
{
"title": "Part I. Sylvan Pastoral, Shakespeare, and 1590s England",
"mimeType": "application/pdf"
},
{
"title": "TWO. Shakespeare’s Green Plot: THE STAGE AS FOREST AND THE FOREST AS STAGE IN AS YOU LIKE IT",
"mimeType": "application/pdf"
},
{
"title": "THREE. Green Plots and Green Plotters: A MIDSUMMER NIGHT’S DREAM AND SYLVAN STRUGGLE",
"mimeType": "application/pdf"
},
{
"title": "FOUR. A Border Skirmish: COMMUNITY, DEER POACHING, AND SPATIAL TRANSGRESSION IN THE MERRY WIVES OF WINDSOR",
"mimeType": "application/pdf"
},
{
"title": "Part II. Forest Knowledge/Forest Power: Sylvan Pastoral in Mid-Seventeenth Century England",
"mimeType": "application/pdf"
},
{
"title": "FIVE. Sylvan Pastoral and the Civil War: REPRESENTING NATIONAL TRAUMA IN SYLVAN TERMS",
"mimeType": "application/pdf"
},
{
"title": "SIX. Royalist Woods",
"mimeType": "application/pdf"
},
{
"title": "SEVEN. John Milton’s Sylvan Pastorals and the Theatrical and Godly Individual",
"mimeType": "application/pdf"
},
{
"title": "NOTES",
"mimeType": "application/pdf"
},
{
"title": "BIBLIOGRAPHY",
"mimeType": "application/pdf"
},
{
"title": "INDEX",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://muse.jhu.edu/article/530509",
"items": [
{
"itemType": "journalArticle",
"title": "The Pill at Fifty: Scientific Commemoration and the Politics of American Memory",
"creators": [
{
"lastName": "Prescott",
"firstName": "Heather",
"creatorType": "author"
}
],
"date": "2013",
"DOI": "10.1353/tech.2013.0137",
"ISSN": "1097-3729",
"abstractNote": "This article uses coverage of the fiftieth anniversary of the Pill as an example of what Richard Hirsh describes as the “real world” role of historians of technology. It explores how the presentation of historical topics on the world wide web has complicated how the history of technology is conveyed to the public. The article shows that that the Pill is especially suited to demonstrating the public role of historians of technology because, as the most popular form of reversible birth control, it has touched the lives of millions of Americans. Thus, an exploration of how the Pill’s fiftieth anniversary was covered illustrates how historians can use their expertise to provide a nuanced interpretation of a controversial topic in the history of technology.",
"issue": "4",
"libraryCatalog": "Project MUSE",
"pages": "735-745",
"publicationTitle": "Technology and Culture",
"shortTitle": "The Pill at Fifty",
"url": "https://muse.jhu.edu/article/530509",
"volume": "54",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://muse.jhu.edu/article/551992",
"items": [
{
"itemType": "journalArticle",
"title": "Accountability and Corruption in Argentina During the Kirchners’ Era",
"creators": [
{
"lastName": "Manzetti",
"firstName": "Luigi",
"creatorType": "author"
}
],
"date": "2014",
"DOI": "10.1353/lar.2014.0030",
"ISSN": "1542-4278",
"abstractNote": "This article highlights an important paradox: in Argentina between 2003 and 2013 the center-left Peronist government’s approach to governance mirrors that of the center-right Peronist administration of the 1990s. While the latter centralized authority to pursue neoliberal reforms, the former have centralized authority in the name of expanding government intervention in the economy. In both cases, corruption has tended to go unchecked due to insufficient government accountability. Therefore, although economic policies and political rhetoric have changed dramatically, government corruption remains a constant of the Argentine political system due to the executive branch’s ability to emasculate constitutional checks and balances.",
"issue": "2",
"libraryCatalog": "Project MUSE",
"pages": "173-195",
"publicationTitle": "Latin American Research Review",
"url": "https://muse.jhu.edu/article/551992",
"volume": "49",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://muse.jhu.edu/article/762340",
"items": [
{
"itemType": "journalArticle",
"title": "American Judaism and the Second Vatican Council: The Response of the American Jewish Committee to Nostra Aetate",
"creators": [
{
"lastName": "Dziaczkowska",
"firstName": "Magdalena",
"creatorType": "author"
}
],
"date": "2020",
"DOI": "10.1353/cht.2020.0018",
"ISSN": "1947-8224",
"abstractNote": "During the Second Vatican Council, American Jewish community members impacted the drafting of the declaration on the Catholic Church's attitude toward Jews and Judaism. This article explores the American Jewish Committee's reactions to the drafting and promulgation of the Declaration on the Relation of the Church with Non-Christian Religions (Nostra Aetate) and its contribution to establishing interfaith relations. The varied Jewish reactions to the declaration provide insight into the internal Jewish discussions regarding Nostra Aetate, revealing that even though the declaration is assessed positively today, initial Jewish reactions were not enthusiastic.",
"issue": "3",
"libraryCatalog": "Project MUSE",
"pages": "25-47",
"publicationTitle": "U.S. Catholic Historian",
"shortTitle": "American Judaism and the Second Vatican Council",
"url": "https://muse.jhu.edu/article/762340",
"volume": "38",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": " Abram"
},
{
"tag": " American Jewish Committee"
},
{
"tag": " Bea"
},
{
"tag": " Cardinal Augustin"
},
{
"tag": " Declaration on the Relation of the Church with Non-Christian Religions"
},
{
"tag": " Jewish-Catholic relations"
},
{
"tag": " Marc"
},
{
"tag": " Morris B."
},
{
"tag": " Second Vatican Council"
},
{
"tag": " Tanenbaum"
},
{
"tag": " interreligious dialogue"
},
{
"tag": "Nostra Aetate"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://muse.jhu.edu/pub/1/article/872469",
"items": [
{
"itemType": "journalArticle",
"title": "Rethinking the Novel of Education",
"creators": [
{
"lastName": "Selbin",
"firstName": "Jesse Cordes",
"creatorType": "author"
}
],
"date": "2022",
"ISSN": "1080-6547",
"abstractNote": "This essay proposes re-taxonomizing the Bildungsroman as one subgenre of a long, diverse, still-vital tradition of education novels. Though first celebrated for representing a protagonist's education while promoting the education of readers, the Bildungsroman quickly acquired a negative reputation for its purported (but rarely manifested) ideological pathologies. Yet in the same era and well before, women produced more subversive novels of education that taught readers to navigate inequity while slave narratives worked pedagogically to activate political engagement. This more capacious history of educative fiction helps explain why many modern authors use the novel to convey ill-understood experiences and perspectives.",
"issue": "4",
"libraryCatalog": "Project MUSE",
"pages": "987-1018",
"publicationTitle": "ELH",
"url": "https://muse.jhu.edu/pub/1/article/872469",
"volume": "89",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Philipp Zumstein^https?://((www\.)?osapublishing|opg\.optica)\.org/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2017 Philipp Zumstein
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
url = url.toLowerCase();
if (url.includes("/abstract.cfm") || url.includes("/fulltext.cfm") || url.includes("/viewmedia.cfm")) {
var conference = ZU.xpathText(doc, '//meta[@name="citation_conference_title"]/@content');
var journal = ZU.xpathText(doc, '//meta[@name="citation_journal_title"]/@content');
if (conference) {
return "conferencePaper";
}
else if (journal) {
return "journalArticle";
}
else {
return "book";
}
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = ZU.xpath(doc, '//ul[@id="results"]/li[contains(@class, "sr-item")]//h3/a|//p[contains(@class, "article-title")]/a');
for (var i = 0; i < rows.length; i++) {
var href = rows[i].href;
var title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
async function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
let items = await Zotero.selectItems(getSearchResults(doc, false));
if (items) {
await Promise.all(
Object.keys(items)
.map(url => requestDocument(url).then(scrape))
);
}
}
else {
await scrape(doc);
}
}
async function scrape(doc) {
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
// translator.setDocument(doc);
let pdfPageURL = attr(doc, 'meta[name="citation_pdf_url"]', 'content')
|| attr(doc, '#link-pdf', 'href');
let pdfURL = null;
if (pdfPageURL) {
let pdfDoc = await requestDocument(pdfPageURL);
if (pdfDoc && pdfDoc.documentElement) {
// we're looking at some sort of intermediary screen or an embedded PDF
Z.debug('PDF embed page HTML:');
// This should be short and will help us debug if users get captcha pages, etc
Z.debug(pdfDoc.documentElement.innerHTML);
pdfURL = attr(pdfDoc, 'frame:not(:first-of-type)', 'src')
|| new URLSearchParams(pdfDoc.location.search).get('gotourl');
}
else {
// Looking straight at the PDF
pdfURL = pdfPageURL;
}
Z.debug('PDF URL: ' + pdfURL);
}
translator.setHandler('itemDone', function (obj, item) {
item.title = decodeEntities(item.title, doc);
item.bookTitle = decodeEntities(item.bookTitle, doc);
item.publicationTitle = decodeEntities(item.publicationTitle, doc);
item.rights = decodeEntities(item.rights, doc);
if (item.abstractNote) {
item.abstractNote = ZU.trimInternal(item.abstractNote);
}
item.attachments = [];
if (pdfURL) {
item.attachments.push({
title: 'Full Text PDF',
mimeType: 'application/pdf',
url: pdfURL
});
}
else if (pdfPageURL) {
Z.debug('Falling back to pdfPageURL');
// This isn't going to work, but it'll show a red X next to the attachment
// to make it clear that we at least tried
Z.debug(pdfPageURL);
item.attachments.push({
title: 'Full Text PDF',
mimeType: 'application/pdf',
url: pdfPageURL
});
}
item.complete();
});
translator.setDocument(doc);
await translator.translate();
}
function decodeEntities(str, doc) {
if (!str || !str.includes('&') || !doc.createElement) {
return str;
}
// https://stackoverflow.com/questions/7394748/whats-the-right-way-to-decode-a-string-that-has-special-html-entities-in-it/7394787#7394787
var textarea = doc.createElement('textarea');
textarea.innerHTML = str;
return textarea.value;
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://opg.optica.org/josaa/fulltext.cfm?uri=josaa-16-1-191&id=1091",
"items": [
{
"itemType": "journalArticle",
"title": "Lens axicons: systems composed of a diverging aberrated lens and a converging aberrated lens",
"creators": [
{
"firstName": "Zbigniew",
"lastName": "Jaroszewicz",
"creatorType": "author"
},
{
"firstName": "Javier",
"lastName": "Morales",
"creatorType": "author"
}
],
"date": "1999/01/01",
"DOI": "10.1364/JOSAA.16.000191",
"ISSN": "1520-8532",
"abstractNote": "This paper is a continuation of our previous publication on the stationary-phase-method analysis of lens axicons [J. Opt. Soc. Am. A152383 (1998)]. Systems with spherical aberration up to the fifth order are studied. Such lens axicons in their simplest versions can be made either as a setup composed of two separated third-order spherical-aberration lenses of opposite powers or as a doublet consisting of one third-order diverging element and one fifth-order converging element. The axial intensity distribution and the central core width turn out to be improved and become almost constant. The results obtained are compared with the numerical evaluation of the corresponding diffraction integral.",
"issue": "1",
"journalAbbreviation": "J. Opt. Soc. Am. A, JOSAA",
"language": "EN",
"libraryCatalog": "opg.optica.org",
"pages": "191-197",
"publicationTitle": "JOSA A",
"rights": "© 1999 Optical Society of America",
"shortTitle": "Lens axicons",
"url": "https://opg.optica.org/josaa/abstract.cfm?uri=josaa-16-1-191",
"volume": "16",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Axicons"
},
{
"tag": "First order optics"
},
{
"tag": "Geometric optics"
},
{
"tag": "Spherical lenses"
},
{
"tag": "Superlenses"
},
{
"tag": "Wavefronts"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://opg.optica.org/search.cfm?q=test&meta=1&cj=1&cc=1",
"defer": true,
"items": "multiple"
},
{
"type": "web",
"url": "https://opg.optica.org/abstract.cfm?URI=OFC-2006-JThB89",
"items": [
{
"itemType": "conferencePaper",
"title": "Challenges in Testing Resilient Packet Ring",
"creators": [
{
"firstName": "Praveen",
"lastName": "Chathnath",
"creatorType": "author"
}
],
"date": "2006/03/05",
"abstractNote": "Resilient Packet Ring (RPR) is a metropolitan area network technology for data transfer based on ring configuration and is standardized as IEEE 802.17. RPR testing is challenging as it combines best of SONET networks and Data networks. The paper provides guidelines for generation of standard compliant test suite, recommends simulated environments for RPR testing and puts forward a strategy for automation of RPR testing. The paper describes various stages of RPR testing and the challenges considering entire project cycle.",
"conferenceName": "Optical Fiber Communication Conference",
"language": "EN",
"libraryCatalog": "opg.optica.org",
"pages": "JThB89",
"proceedingsTitle": "Optical Fiber Communication Conference and Exposition and The National Fiber Optic Engineers Conference (2006), paper JThB89",
"publisher": "Optica Publishing Group",
"rights": "© 2006 Optical Society of America",
"url": "https://opg.optica.org/abstract.cfm?uri=OFC-2006-JThB89",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Fluorescence correlation spectroscopy"
},
{
"tag": "Green fluorescent protein"
},
{
"tag": "Networking hardware"
},
{
"tag": "Optical angular momentum"
},
{
"tag": "Optical ethernet"
},
{
"tag": "Refractive index"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://opg.optica.org/ao/fulltext.cfm?uri=ao-31-26-5706&id=60063",
"items": [
{
"itemType": "journalArticle",
"title": "Optimized kinoform structures for highly efficient fan-out elements",
"creators": [
{
"firstName": "D.",
"lastName": "Prongué",
"creatorType": "author"
},
{
"firstName": "H. P.",
"lastName": "Herzig",
"creatorType": "author"
},
{
"firstName": "R.",
"lastName": "Dändliker",
"creatorType": "author"
},
{
"firstName": "M. T.",
"lastName": "Gale",
"creatorType": "author"
}
],
"date": "1992/09/10",
"DOI": "10.1364/AO.31.005706",
"ISSN": "2155-3165",
"abstractNote": "We discuss the realization of highly efficient fan-out elements. Laser-beam writing lithography is available now for fabricating smooth surface relief microstructures. We develop several methods for optimizing microstructure profiles. Only a small number of parameters in the object plane are necessary for determining the kinoform. This simplifies the calculation of M × N arrays also for large M and N. Experimental results for a 9-beam fan-out element are presented.",
"issue": "26",
"journalAbbreviation": "Appl. Opt., AO",
"language": "EN",
"libraryCatalog": "opg.optica.org",
"pages": "5706-5711",
"publicationTitle": "Applied Optics",
"rights": "© 1992 Optical Society of America",
"url": "https://opg.optica.org/ao/abstract.cfm?uri=ao-31-26-5706",
"volume": "31",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Dammann gratings"
},
{
"tag": "Diffraction efficiency"
},
{
"tag": "Laser beams"
},
{
"tag": "Light sources"
},
{
"tag": "Lithography"
},
{
"tag": "Total internal reflection"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://opg.optica.org/ol/fulltext.cfm?uri=ol-40-24-5750&id=333270",
"items": [
{
"itemType": "journalArticle",
"title": "Metamaterial-waveguide bends with effective bend radius < λ<sub>0</sub>/2",
"creators": [
{
"firstName": "Bing",
"lastName": "Shen",
"creatorType": "author"
},
{
"firstName": "Randy",
"lastName": "Polson",
"creatorType": "author"
},
{
"firstName": "Rajesh",
"lastName": "Menon",
"creatorType": "author"
}
],
"date": "2015/12/15",
"DOI": "10.1364/OL.40.005750",
"ISSN": "1539-4794",
"abstractNote": "We designed, fabricated, and characterized broadband, efficient, all-dielectric metamaterial-waveguide bends (MWBs) that redirect light by 180 deg. The footprint of each MWB is 3  μm×3  μm and redirection is achieved for single-mode waveguides spaced by 1.3 μm, which corresponds to an effective bend radius of 0.65 μm (<λ0/2 for λ0=1.55  μm). The designed and measured transmission efficiencies are >80% and ∼70%, respectively. Furthermore, the MWBs have an operating bandwidth >66 nm (design) and >56  nm (experiments). Our design methodology that incorporates fabrication constraints enables highly robust devices. The methodology can be extended to the general routing of light in tight spaces for large-scale photonic integration.",
"issue": "24",
"journalAbbreviation": "Opt. Lett., OL",
"language": "EN",
"libraryCatalog": "opg.optica.org",
"pages": "5750-5753",
"publicationTitle": "Optics Letters",
"rights": "© 2015 Optical Society of America",
"url": "https://opg.optica.org/ol/abstract.cfm?uri=ol-40-24-5750",
"volume": "40",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Bend loss"
},
{
"tag": "Light propagation"
},
{
"tag": "Optical lithography"
},
{
"tag": "Photonic crystals"
},
{
"tag": "Photonic integration"
},
{
"tag": "Plasmon waveguides"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://opg.optica.org/abstract.cfm?uri=CLEOPR-2017-s2069",
"items": [
{
"itemType": "conferencePaper",
"title": "Hybrid Silicon Photonics Flip-Chip Laser Integration with Vertical Self-Alignment",
"creators": [
{
"firstName": "A.",
"lastName": "Moscoso-Mártir",
"creatorType": "author"
},
{
"firstName": "F.",
"lastName": "Merget",
"creatorType": "author"
},
{
"firstName": "J.",
"lastName": "Mueller",
"creatorType": "author"
},
{
"firstName": "J.",
"lastName": "Hauck",
"creatorType": "author"
},
{
"firstName": "S.",
"lastName": "Romero-García",
"creatorType": "author"
},
{
"firstName": "B.",
"lastName": "Shen",
"creatorType": "author"
},
{
"firstName": "F.",
"lastName": "Lelarge",
"creatorType": "author"
},
{
"firstName": "R.",
"lastName": "Brenot",
"creatorType": "author"
},
{
"firstName": "A.",
"lastName": "Garreau",
"creatorType": "author"
},
{
"firstName": "E.",
"lastName": "Mentovich",
"creatorType": "author"
},
{
"firstName": "A.",
"lastName": "Sandomirsky",
"creatorType": "author"
},
{
"firstName": "A.",
"lastName": "Badihi",
"creatorType": "author"
},
{
"firstName": "D. E.",
"lastName": "Rasmussen",
"creatorType": "author"
},
{
"firstName": "R.",
"lastName": "Setter",
"creatorType": "author"
},
{
"firstName": "J.",
"lastName": "Witzens",
"creatorType": "author"
}
],
"date": "2017/07/31",
"abstractNote": "We present a flip-chip integration process in which the vertical alignment is guaranteed by a mechanical contact between pedestals defined in a recess etched into a silicon photonics chip and a laser or semiconductor optical amplifier. By selectively etching up to the active region of the III-V materials, we can make the accuracy of vertical alignment independent on the process control applied to layer thicknesses during silicon photonics or III-V chip fabrication, enabling alignment tolerances below ±10 nm in the vertical (Z-)direction.",
"conferenceName": "Conference on Lasers and Electro-Optics/Pacific Rim",
"language": "EN",
"libraryCatalog": "opg.optica.org",
"pages": "s2069",
"proceedingsTitle": "2017 Conference on Lasers and Electro-Optics Pacific Rim (2017), paper s2069",
"publisher": "Optica Publishing Group",
"rights": "© 2017 Optical Society of America",
"url": "https://opg.optica.org/abstract.cfm?uri=CLEOPR-2017-s2069",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Laser materials processing"
},
{
"tag": "Laser sources"
},
{
"tag": "Process control"
},
{
"tag": "Semiconductor lasers"
},
{
"tag": "Semiconductor optical amplifiers"
},
{
"tag": "Silicon photonics"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Sebastian Karcher^https?://commons\.wikimedia\.org/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2014-2019 Sebastian Karcher
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
// eslint-disable-next-line
/* FW LINE 59:b820c6d */ function flatten(t){var e=new Array;for(var i in t){var r=t[i];r instanceof Array?e=e.concat(flatten(r)):e.push(r)}return e}var FW={_scrapers:new Array};FW._Base=function(){this.callHook=function(t,e,i,r){if("object"==typeof this.hooks){var n=this.hooks[t];"function"==typeof n&&n(e,i,r)}},this.evaluateThing=function(t,e,i){var r=typeof t;if("object"===r){if(t instanceof Array){var n=this.evaluateThing,a=t.map(function(t){return n(t,e,i)});return flatten(a)}return t.evaluate(e,i)}return"function"===r?t(e,i):t},this.makeItems=function(t,e,i,r,n){n()}},FW.Scraper=function(t){FW._scrapers.push(new FW._Scraper(t))},FW._Scraper=function(t){for(x in t)this[x]=t[x];this._singleFieldNames=["abstractNote","applicationNumber","archive","archiveLocation","artworkMedium","artworkSize","assignee","audioFileType","audioRecordingType","billNumber","blogTitle","bookTitle","callNumber","caseName","code","codeNumber","codePages","codeVolume","committee","company","conferenceName","country","court","date","dateDecided","dateEnacted","dictionaryTitle","distributor","docketNumber","documentNumber","DOI","edition","encyclopediaTitle","episodeNumber","extra","filingDate","firstPage","forumTitle","genre","history","institution","interviewMedium","ISBN","ISSN","issue","issueDate","issuingAuthority","journalAbbreviation","label","language","legalStatus","legislativeBody","letterType","libraryCatalog","manuscriptType","mapType","medium","meetingName","nameOfAct","network","number","numberOfVolumes","numPages","pages","patentNumber","place","postType","presentationType","priorityNumbers","proceedingsTitle","programTitle","programmingLanguage","publicLawNumber","publicationTitle","publisher","references","reportNumber","reportType","reporter","reporterVolume","rights","runningTime","scale","section","series","seriesNumber","seriesText","seriesTitle","session","shortTitle","studio","subject","system","thesisType","title","type","university","url","version","videoRecordingType","volume","websiteTitle","websiteType"],this._makeAttachments=function(t,e,i,r){if(i instanceof Array)i.forEach(function(i){this._makeAttachments(t,e,i,r)},this);else if("object"==typeof i){var n=i.urls||i.url,a=i.types||i.type,s=i.titles||i.title,o=i.snapshots||i.snapshot,u=this.evaluateThing(n,t,e),l=this.evaluateThing(s,t,e),c=this.evaluateThing(a,t,e),h=this.evaluateThing(o,t,e);u instanceof Array||(u=[u]);for(var f in u){var p,m,v,d=u[f];p=c instanceof Array?c[f]:c,m=l instanceof Array?l[f]:l,v=h instanceof Array?h[f]:h,r.attachments.push({url:d,title:m,mimeType:p,snapshot:v})}}},this.makeItems=function(t,e,i,r,n){var a=new Zotero.Item(this.itemType);a.url=e;for(var s in this._singleFieldNames){var o=this._singleFieldNames[s];if(this[o]){var u=this.evaluateThing(this[o],t,e);u instanceof Array?a[o]=u[0]:a[o]=u}}var l=["creators","tags"];for(var c in l){var h=l[c],f=this.evaluateThing(this[h],t,e);if(f)for(var p in f)a[h].push(f[p])}this._makeAttachments(t,e,this.attachments,a),r(a,this,t,e),n()}},FW._Scraper.prototype=new FW._Base,FW.MultiScraper=function(t){FW._scrapers.push(new FW._MultiScraper(t))},FW._MultiScraper=function(t){for(x in t)this[x]=t[x];this._mkSelectItems=function(t,e){var i=new Object;for(var r in t)i[e[r]]=t[r];return i},this._selectItems=function(t,e,i){var r=new Array;Zotero.selectItems(this._mkSelectItems(t,e),function(t){for(var e in t)r.push(e);i(r)})},this._mkAttachments=function(t,e,i){var r=this.evaluateThing(this.attachments,t,e),n=new Object;if(r)for(var a in i)n[i[a]]=r[a];return n},this._makeChoices=function(t,e,i,r,n){if(t instanceof Array)t.forEach(function(t){this._makeTitlesUrls(t,e,i,r,n)},this);else if("object"==typeof t){var a=t.urls||t.url,s=t.titles||t.title,o=this.evaluateThing(a,e,i),u=this.evaluateThing(s,e,i),l=u instanceof Array;o instanceof Array||(o=[o]);for(var c in o){var h,f=o[c];h=l?u[c]:u,n.push(f),r.push(h)}}},this.makeItems=function(t,e,i,r,n){if(this.beforeFilter){var a=this.beforeFilter(t,e);if(a!=e)return void this.makeItems(t,a,i,r,n)}var s=[],o=[];this._makeChoices(this.choices,t,e,s,o);var u=this._mkAttachments(t,e,o),l=this.itemTrans;this._selectItems(s,o,function(t){if(t){var e=function(t){var e=t.documentURI,i=l;void 0===i&&(i=FW.getScraper(t,e)),void 0===i||i.makeItems(t,e,u[e],r,function(){})};Zotero.Utilities.processDocuments(t,e,n)}else n()})}},FW._MultiScraper.prototype=new FW._Base,FW.WebDelegateTranslator=function(t){return new FW._WebDelegateTranslator(t)},FW._WebDelegateTranslator=function(t){for(x in t)this[x]=t[x];this.makeItems=function(t,e,i,r,n){var a=this,s=Zotero.loadTranslator("web");s.setHandler("itemDone",function(i,n){r(n,a,t,e)}),s.setDocument(t),this.translatorId?(s.setTranslator(this.translatorId),s.translate()):(s.setHandler("translators",function(t,e){e.length&&(s.setTranslator(e[0]),s.translate())}),s.getTranslators()),n()}},FW._WebDelegateTranslator.prototype=new FW._Base,FW._StringMagic=function(){this._filters=new Array,this.addFilter=function(t){return this._filters.push(t),this},this.split=function(t){return this.addFilter(function(e){return e.split(t).filter(function(t){return""!=t})})},this.replace=function(t,e,i){return this.addFilter(function(r){return r.match(t)?r.replace(t,e,i):r})},this.prepend=function(t){return this.replace(/^/,t)},this.append=function(t){return this.replace(/$/,t)},this.remove=function(t,e){return this.replace(t,"",e)},this.trim=function(){return this.addFilter(function(t){return Zotero.Utilities.trim(t)})},this.trimInternal=function(){return this.addFilter(function(t){return Zotero.Utilities.trimInternal(t)})},this.match=function(t,e){return e||(e=0),this.addFilter(function(i){var r=i.match(t);return void 0===r||null===r?void 0:r[e]})},this.cleanAuthor=function(t,e){return this.addFilter(function(i){return Zotero.Utilities.cleanAuthor(i,t,e)})},this.key=function(t){return this.addFilter(function(e){return e[t]})},this.capitalizeTitle=function(){return this.addFilter(function(t){return Zotero.Utilities.capitalizeTitle(t)})},this.unescapeHTML=function(){return this.addFilter(function(t){return Zotero.Utilities.unescapeHTML(t)})},this.unescape=function(){return this.addFilter(function(t){return unescape(t)})},this._applyFilters=function(t,e){for(i in this._filters){t=flatten(t),t=t.filter(function(t){return void 0!==t&&null!==t});for(var r=0;r<t.length;r++)try{if(void 0===t[r]||null===t[r])continue;t[r]=this._filters[i](t[r],e)}catch(n){t[r]=void 0,Zotero.debug("Caught exception "+n+"on filter: "+this._filters[i])}t=t.filter(function(t){return void 0!==t&&null!==t})}return flatten(t)}},FW.PageText=function(){return new FW._PageText},FW._PageText=function(){this._filters=new Array,this.evaluate=function(t){var e=[t.documentElement.innerHTML];return e=this._applyFilters(e,t),0==e.length?!1:e}},FW._PageText.prototype=new FW._StringMagic,FW.Url=function(){return new FW._Url},FW._Url=function(){this._filters=new Array,this.evaluate=function(t,e){var i=[e];return i=this._applyFilters(i,t),0==i.length?!1:i}},FW._Url.prototype=new FW._StringMagic,FW.Xpath=function(t){return new FW._Xpath(t)},FW._Xpath=function(t){this._xpath=t,this._filters=new Array,this.text=function(){var t=function(t){return"object"==typeof t&&t.textContent?t.textContent:t};return this.addFilter(t),this},this.sub=function(t){var e=function(e,i){var r=i.evaluate(t,e,null,XPathResult.ANY_TYPE,null);return r?r.iterateNext():void 0};return this.addFilter(e),this},this.evaluate=function(t){var e=t.evaluate(this._xpath,t,null,XPathResult.ANY_TYPE,null),i=e.resultType,r=new Array;if(i==XPathResult.STRING_TYPE)r.push(e.stringValue);else if(i==XPathResult.BOOLEAN_TYPE)r.push(e.booleanValue);else if(i==XPathResult.NUMBER_TYPE)r.push(e.numberValue);else if(i==XPathResult.ORDERED_NODE_ITERATOR_TYPE||i==XPathResult.UNORDERED_NODE_ITERATOR_TYPE)for(var n;n=e.iterateNext();)r.push(n);return r=this._applyFilters(r,t),0==r.length?!1:r}},FW._Xpath.prototype=new FW._StringMagic,FW.detectWeb=function(t,e){for(var i in FW._scrapers){var r=FW._scrapers[i],n=r.evaluateThing(r.itemType,t,e),a=r.evaluateThing(r.detect,t,e);if(a.length>0&&a[0])return n}},FW.getScraper=function(t,e){var i=FW.detectWeb(t,e);return FW._scrapers.filter(function(r){return r.evaluateThing(r.itemType,t,e)==i&&r.evaluateThing(r.detect,t,e)})[0]},FW.doWeb=function(t,e){var i=FW.getScraper(t,e);i.makeItems(t,e,[],function(t,e,i,r){e.callHook("scraperDone",t,i,r),t.title||(t.title=""),t.complete()},function(){Zotero.done()}),Zotero.wait()};
function detectWeb(doc, url) {
// Diff interface is not supported
if (new URLSearchParams(doc.location.search).get('diff')) {
return false;
}
return FW.detectWeb(doc, url);
}
function doWeb(doc, url) { return FW.doWeb(doc, url); }
/*
***** BEGIN LICENSE BLOCK *****
Wikimedia Commons Translator
Copyright © 2012 Sebastian Karcher
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
/**Art Images*/
FW.Scraper({
itemType : 'artwork',
detect : FW.Xpath('//td[@id="fileinfotpl_art_title" or @id="fileinfotpl_desc"]'),
title : FW.Xpath('//td[@id="fileinfotpl_art_title" or @id="fileinfotpl_desc"]/following-sibling::td').text().trim().remove(/\n.+/g),
attachments : [{
url : FW.Url(),
title : "Wikimedia Snapshot",
type : "text/html"
},
{
url : FW.Xpath('//div[@id="file"]/a/@href').text().prepend("http:"),
title : "Wikimedia Image"
}],
creators : FW.Xpath('//tr/td[@id="fileinfotpl_aut"]/following-sibling::td').text().remove(/\n/g).remove(/\(.+/).cleanAuthor("author"),
artworkSize : FW.Xpath('//tr/td[@id="fileinfotpl_art_dimensions"]/following-sibling::td').text(),
artworkMedium : FW.Xpath('//tr/td[@id="fileinfotpl_art_medium"]/following-sibling::td').text(),
date : FW.Xpath('//tr/td[@id="fileinfotpl_date"]/following-sibling::td').text(),
archive : FW.Xpath('//tr/td[@id="fileinfotpl_art_gallery"]/following-sibling::td').text().trim().remove(/\n.+/g),
rights : FW.Xpath('//table[@class="licensetpl" or @class="layouttemplate licensetpl"]/tbody/tr/td[2]|//table[@class="licensetpl" or @class="layouttemplate licensetpl"]/tbody/tr/td/span').text(),
hooks : {
"scraperDone": function (item,doc, url) {
if (!item.archive) item.archive = ZU.xpathText(doc, '//tr/td[@id="fileinfotpl_src"]/following-sibling::td');
item.date = item.date ? item.date : item.runningTime;
item.runningTime = undefined;
for (let i in item.creators) {
if (!item.creators[i].firstName){
item.creators[i].fieldMode=1;
}
}
}
}
});
/**Photos*/
FW.Scraper({
itemType : 'artwork',
detect : FW.Xpath('//span[@class="description"]'),
title : FW.Xpath('//span[@class="description"]').text().trim(),
attachments : [{
url : FW.Url(),
title : "Wikimedia Snapshot",
type : "text/html"
},
{
url : FW.Xpath('//div[@id="file"]/a/@href').text().prepend("http:"),
title : "Wikimedia Image"
}],
creators : FW.Xpath('//tr/td[@id="fileinfotpl_aut"]/following-sibling::td').text().remove(/\n/g).remove(/\(.+/).cleanAuthor("author"),
date : FW.Xpath('//tr/td[@id="fileinfotpl_date"]/following-sibling::td').text(),
archive : FW.Xpath('//tr/td[@id="fileinfotpl_src"]/following-sibling::td').text(),
rights : FW.Xpath('//table[@class="licensetpl" or @class="layouttemplate licensetpl"]/tbody/tr/td[2]|//table[@class="licensetpl" or @class="layouttemplate licensetpl"]/tbody/tr/td/span').text(),
//fix authors w/o first names to single field mode
hooks : {
"scraperDone": function (item,doc, url) {
item.date = item.date ? item.date : item.runningTime;
item.runningTime = undefined;
for (let i in item.creators) {
if (!item.creators[i].firstName){
item.creators[i].fieldMode=1;
}
}
}
}
});
/** Search results */
FW.MultiScraper({
itemType : "multiple",
detect : FW.Xpath('//ul[contains(@class, "search-results")]'),
choices : {
titles : FW.Xpath('//ul[contains(@class, "search-results")]//a[contains(@title, "File:")]').text(),
urls : FW.Xpath('//ul[contains(@class, "search-results")]//a[contains(@title, "File:")]').key('href').text()
}
});
/**Galleries */
FW.MultiScraper({
itemType : "multiple",
detect : FW.Xpath('//ul[contains(@class, "gallery")]'),
choices : {
titles : FW.Xpath('//ul[contains(@class, "gallery")]//div[@class="gallerytext"]').text(),
urls : FW.Xpath('//ul[contains(@class, "gallery")]//a[@class="image"]').key('href').text()
}
});
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://commons.wikimedia.org/wiki/File:Boy_with_a_Basket_of_Fruit-Caravaggio_(1593).jpg",
"items": [
{
"itemType": "artwork",
"title": "English: Boy with a Basket of Fruit",
"creators": [
{
"firstName": "",
"lastName": "Caravaggio",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "circa 1593",
"archive": "Galleria Borghese",
"artworkMedium": "oil on canvas",
"artworkSize": "70 × 67 cm",
"libraryCatalog": "Wikimedia Commons",
"rights": "Public domain",
"shortTitle": "English",
"url": "https://commons.wikimedia.org/wiki/File:Boy_with_a_Basket_of_Fruit-Caravaggio_(1593).jpg",
"attachments": [
{
"title": "Wikimedia Snapshot",
"mimeType": "text/html"
},
{
"title": "Wikimedia Image"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://commons.wikimedia.org/w/index.php?search=peron&button=&title=Special%3ASearch&limit=100",
"items": "multiple"
},
{
"type": "web",
"url": "https://commons.wikimedia.org/wiki/File:Portrait_of_Ambroise_Vollard.jpg",
"items": [
{
"itemType": "artwork",
"title": "English: Portrait of Ambroise Vollard",
"creators": [
{
"firstName": "Paul",
"lastName": "Cézanne",
"creatorType": "author"
}
],
"date": "1899",
"archive": "Petit Palais, Paris",
"artworkMedium": "oil on canvas",
"artworkSize": "101 × 81 cm (39.8 × 31.9 in)",
"libraryCatalog": "Wikimedia Commons",
"rights": "Public domain",
"shortTitle": "English",
"url": "https://commons.wikimedia.org/wiki/File:Portrait_of_Ambroise_Vollard.jpg",
"attachments": [
{
"title": "Wikimedia Snapshot",
"mimeType": "text/html"
},
{
"title": "Wikimedia Image"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://commons.wikimedia.org/wiki/File:Plaza_Congreso.JPG",
"items": [
{
"itemType": "artwork",
"title": "English: Congressional Plaza, Buenos Aires, Argentina.",
"creators": [
{
"firstName": "",
"lastName": "Napoletano",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "28 January 2012",
"archive": "Own work",
"libraryCatalog": "Wikimedia Commons",
"rights": "Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled GNU Free Documentation License.http://www.gnu.org/copyleft/fdl.htmlGFDLGNU Free Documentation Licensetruetrue",
"shortTitle": "English",
"url": "https://commons.wikimedia.org/wiki/File:Plaza_Congreso.JPG",
"attachments": [
{
"title": "Wikimedia Snapshot",
"mimeType": "text/html"
},
{
"title": "Wikimedia Image"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://commons.wikimedia.org/wiki/Commons:Valued_images_by_topic/Science",
"items": "multiple"
}
]
/** END TEST CASES **/
100Philipp Zumstein^https?://en\.wikisource\.org/w/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2016 Philipp Zumstein
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
// Diff interface is not supported
if (new URLSearchParams(doc.location.search).get('diff')) {
return false;
}
if (doc.getElementById("header_title_text")) {
var titleLink = ZU.xpath(doc, '//span[@id="header_title_text"]/a');
if (titleLink.length && (titleLink[0].textContent.match(/Encyclop(æ|ae|e)dia|Dictionary/) )) {
return "encyclopediaArticle";
}
if (doc.getElementById("ca-proofread-source")) {
if (doc.getElementById("header_section_text")) {
return "bookSection";
} else {
return "book";
}
} else {
return "manuscript";
}
} else if (getSearchResults(doc, true)) {
return "multiple";
}
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = ZU.xpath(doc, '//ul[contains(@class, "search-results")]//a');
for (var i=0; i<rows.length; i++) {
var href = rows[i].href;
var title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) {
return true;
}
var articles = new Array();
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
} else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var item = new Zotero.Item(detectWeb(doc, url));
if (item.itemType === "bookSection") {
item.title = doc.getElementById("header_section_text").textContent;
item.bookTitle = doc.getElementById("header_title_text").textContent;
} else if (item.itemType === "encyclopediaArticle") {
var header = doc.getElementById("header_title_text");
item.encyclopediaTitle = ZU.xpathText(header, './a[1]');
if (ZU.xpath(header, './a[2]').length > 0) {
item.volume = ZU.xpathText(header, './a[2]');
}
if (doc.getElementById("header_section_text")) {
item.title = doc.getElementById("header_section_text").textContent;
} else {
item.title = ZU.xpathText(doc, '//*[@id="header_title_text"]/text()').replace(/(,|\n)/g,'');
}
} else {
item.title = doc.getElementById("header_title_text").textContent;
}
var creators = ZU.xpath(doc, '//span[@id="header_author_text"]');
for (var i=0; i<creators.length; i++) {
var author = creators[i].textContent.replace('by', '').replace(/\(.+/, '');
item.creators.push(ZU.cleanAuthor(author, "author"));
}
var tags = ZU.xpath(doc, '//div[@id="mw-normal-catlinks"]/ul/li/a');
for (var i=0; i<tags.length; i++) {
item.tags.push(tags[i].text);
}
item.rights = ZU.xpathText(doc, '//li[@id="footer-info-copyright"]');
item.archive = "Wikisource";
var permalink = ZU.xpathText(doc, '//li[@id="t-permalink"]/a/@href');
item.attachments.push({
url : permalink,
title : "Wikisource Snapshot",
type : "text/html"
});
//Add more metadata from the "Source" page if it is present
var sourcePage = ZU.xpathText(doc, '//li[@id="ca-proofread-source"]//a/@href');
if (sourcePage) {
ZU.processDocuments(sourcePage, function(sourceDoc) {
scrapeSource(sourceDoc, item);
});
} else {
item.complete();
}
}
function scrapeSource(doc, item) {
var indexedFields = {};
var lines = ZU.xpath(doc, '//table[@id="prp-indexTable"]/tbody/tr');
for (var i=0; i<lines.length; i++) {
var label = ZU.xpathText(lines[i], './th').trim();
var value = ZU.xpathText(lines[i], './td').trim();
indexedFields[label] = value;
}
//Z.debug(indexedFields);
if (indexedFields.Year) {
item.date = indexedFields.Year;
}
if (indexedFields.Publisher) {
item.publisher = indexedFields.Publisher;
}
if (indexedFields.Location) {
item.place = indexedFields.Location;
}
if (indexedFields.Editor) {
item.creators.push(ZU.cleanAuthor(indexedFields.Editor, "editor"));
}
if (indexedFields.Illustrator) {
item.creators.push(ZU.cleanAuthor(indexedFields.Illustrator, "contributor"));
}
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://en.wikisource.org/wiki/Amazing_Grace",
"items": [
{
"itemType": "manuscript",
"title": "Amazing Grace",
"creators": [
{
"firstName": "John",
"lastName": "Newton",
"creatorType": "author"
}
],
"archive": "Wikisource",
"libraryCatalog": "Wikisource",
"rights": "Text is available under the Creative Commons Attribution-ShareAlike License; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy.",
"attachments": [
{
"title": "Wikisource Snapshot",
"type": "text/html"
}
],
"tags": [
"Individual Christian hymns",
"Non-gospel Christian and Judaic hymns",
"Spoken works"
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://en.wikisource.org/wiki/Alice%27s_Adventures_in_Wonderland_(1866)/Chapter_2",
"items": [
{
"itemType": "bookSection",
"title": "Chapter 2: The Pool of Tears",
"creators": [
{
"firstName": "Lewis",
"lastName": "Carroll",
"creatorType": "author"
},
{
"firstName": "John",
"lastName": "Tenniel",
"creatorType": "contributor"
}
],
"date": "1866",
"archive": "Wikisource",
"bookTitle": "Alice's Adventures in Wonderland (1866)",
"libraryCatalog": "Wikisource",
"place": "London",
"publisher": "MacMillan & Co.",
"rights": "Text is available under the Creative Commons Attribution-ShareAlike License; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy.",
"shortTitle": "Chapter 2",
"attachments": [
{
"title": "Wikisource Snapshot",
"type": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://en.wikisource.org/wiki/Letters_of_Tagore_(1917)",
"items": [
{
"itemType": "book",
"title": "Letters of Tagore (1917)",
"creators": [
{
"firstName": "Rabindranath",
"lastName": "Tagore",
"creatorType": "author"
}
],
"date": "1917",
"archive": "Wikisource",
"libraryCatalog": "Wikisource",
"place": "New York",
"publisher": "The Macmillan Company",
"rights": "Text is available under the Creative Commons Attribution-ShareAlike License; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy.",
"attachments": [
{
"title": "Wikisource Snapshot",
"type": "text/html"
}
],
"tags": [
"1917 works",
"PD-old-70-1923"
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://en.wikisource.org/wiki/The_Descent_of_Man_(Darwin)/Chapter_IV",
"items": [
{
"itemType": "bookSection",
"title": "Chapter IV: Comparison of the Mental Powers of Man and the Lower Animals (Continued)",
"creators": [
{
"firstName": "Charles",
"lastName": "Darwin",
"creatorType": "author"
}
],
"date": "1875",
"archive": "Wikisource",
"bookTitle": "The Descent of Man",
"libraryCatalog": "Wikisource",
"place": "New York",
"publisher": "D. Appleton",
"rights": "Text is available under the Creative Commons Attribution-ShareAlike License; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy.",
"shortTitle": "Chapter IV",
"attachments": [
{
"title": "Wikisource Snapshot",
"type": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://en.wikisource.org/w/index.php?search=mannheim&title=Special:Search&go=Go",
"items": "multiple"
},
{
"type": "web",
"url": "https://en.wikisource.org/wiki/Gell,_John_%281593-1671%29_%28DNB00%29",
"items": [
{
"itemType": "encyclopediaArticle",
"title": "Gell John (1593-1671)",
"creators": [
{
"firstName": "Charles Harding",
"lastName": "Firth",
"creatorType": "author"
},
{
"firstName": "Leslie",
"lastName": "Stephen",
"creatorType": "editor"
}
],
"date": "1890",
"archive": "Wikisource",
"encyclopediaTitle": "Dictionary of National Biography, 1885-1900",
"libraryCatalog": "Wikisource",
"place": "London",
"publisher": "Elder Smith & Co.",
"rights": "Text is available under the Creative Commons Attribution-ShareAlike License; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy.",
"volume": "Volume 21",
"attachments": [
{
"title": "Wikisource Snapshot",
"type": "text/html"
}
],
"tags": [
"1890 works",
"DNB biographies"
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://en.wikisource.org/wiki/A_Dictionary_of_Music_and_Musicians/Cannabich,_Christian",
"items": [
{
"itemType": "encyclopediaArticle",
"title": "Cannabich, Christian",
"creators": [
{
"firstName": "George",
"lastName": "Grove",
"creatorType": "editor"
}
],
"date": "1900",
"archive": "Wikisource",
"encyclopediaTitle": "A Dictionary of Music and Musicians",
"libraryCatalog": "Wikisource",
"place": "London",
"publisher": "MacMillan & Co., Ltd.",
"rights": "Text is available under the Creative Commons Attribution-ShareAlike License; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy.",
"attachments": [
{
"title": "Wikisource Snapshot",
"type": "text/html"
}
],
"tags": [
"DMM composer biographies"
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://[^/]*\.wiktionary\.org//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
// excludes special pages, such as /wiki/Special:RecentChanges
if (doc.body.classList.contains('ns--1')) {
return false;
}
if (url.includes('/wiki/')) {
return "dictionaryEntry";
}
return false;
// like the Wikipedia translator, we're not going to handle search results
// unless someone feels strongly about it and wants to add it
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
// Wikipedia
translator.setTranslator('e5dc9733-f8fc-4c00-8c40-e53e0bb14664');
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
item.itemType = 'dictionaryEntry';
item.dictionaryTitle = item.encyclopediaTitle;
delete item.encyclopediaTitle;
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://en.wiktionary.org/wiki/atom",
"items": [
{
"itemType": "dictionaryEntry",
"title": "atom",
"creators": [],
"date": "2021-05-11T20:37:51Z",
"dictionaryTitle": "Wiktionary",
"extra": "Page Version ID: 62511125",
"language": "en",
"libraryCatalog": "Wiktionary",
"rights": "Creative Commons Attribution-ShareAlike License",
"url": "https://en.wiktionary.org/w/index.php?title=atom&oldid=62511125",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html",
"snapshot": true
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://en.wiktionary.org/wiki/%E0%A6%85%E0%A6%A3%E0%A7%81",
"items": [
{
"itemType": "dictionaryEntry",
"title": "অণু",
"creators": [],
"date": "2017-10-19T16:26:22Z",
"dictionaryTitle": "Wiktionary",
"extra": "Page Version ID: 47816857",
"language": "en",
"libraryCatalog": "Wiktionary",
"rights": "Creative Commons Attribution-ShareAlike License",
"url": "https://en.wiktionary.org/w/index.php?title=%E0%A6%85%E0%A6%A3%E0%A7%81&oldid=47816857",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html",
"snapshot": true
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
96Mario Trojan, Philipp Zumstein, and Abe Jellinek^https?://apps\.who\.int/iris//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2018-2021 Mario Trojan and Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes("/handle/") && text(doc, 'div.item-summary-view-metadata')) {
var type = attr(doc, 'meta[name="DC.type"]', 'content');
// Z.debug(type);
if (type && type.includes("articles")) {
return "journalArticle";
}
if (type && (type.includes("Book") || type.includes("Publications"))) {
return "book";
}
return "report";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('h4.artifact-title>a');
for (let row of rows) {
let href = row.href;
var title = row.textContent;
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) {
return;
}
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
// copy meta tags in body to head
var head = doc.getElementsByTagName('head');
var metasInBody = ZU.xpath(doc, '//body/meta');
for (let meta of metasInBody) {
head[0].append(meta);
}
var type = detectWeb(doc, url);
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setHandler('itemDone', function (obj, item) {
if (item.publisher && !item.place && item.publisher.includes(' : ')) {
let placePublisher = item.publisher.split(' : ');
item.place = placePublisher[0];
item.publisher = placePublisher[1];
}
var firstAuthor = attr(doc, 'meta[name="DC.creator"]', 'content');
if (firstAuthor && !firstAuthor.includes(',')) {
item.creators[0] = {
lastName: firstAuthor,
creatorType: "author",
fieldMode: 1
};
}
var descriptions = doc.querySelectorAll('meta[name="DC.description"]');
// DC.description doesn't actually contain other useful content,
// except possibly the number of pages
for (let description of descriptions) {
var numPages = description.content.match(/(([lxiv]+,\s*)?\d+)\s*p/);
if (numPages) {
if (ZU.fieldIsValidForType("numPages", item.itemType)) {
item.numPages = numPages[1];
}
else if (!item.extra) {
item.extra = "number-of-pages: " + numPages[1];
}
else {
item.extra += "\nnumber-of-pages: " + numPages[1];
}
delete item.abstractNote;
}
}
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.itemType = type;
trans.doWeb(doc, url);
});
}
function detectSearch(item) {
return item.ISBN && (ZU.cleanISBN(item.ISBN) || '').startsWith('978924');
}
function doSearch(item) {
let ISBN = ZU.cleanISBN(item.ISBN);
let url = `https://apps.who.int/iris/discover/export?format=refman&list=discover&rpp=10&etal=0&query=${ISBN}&group_by=none&page=1&filtertype_0=identifier&filter_relational_operator_0=equals&filter_0=${ISBN}`;
ZU.doGet(url, function (risText) {
if (!risText) return;
risText = risText.replace(/^SE(\s*-\s*[0-9]+).*$/m, 'SP$1');
var translator = Zotero.loadTranslator("import");
translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7"); // RIS
translator.setString(risText);
translator.setHandler("itemDone", function (obj, item) {
item.libraryCatalog = 'WHO IRIS';
item.archive = '';
if (item.url) {
ZU.processDocuments(item.url, function (recordDoc) {
let pdfURL = attr(recordDoc, 'meta[name="citation_pdf_url"]', 'content');
if (pdfURL) {
item.attachments.push({
title: 'Full Text PDF',
mimeType: 'application/pdf',
url: pdfURL
});
}
item.complete();
});
}
else {
item.complete();
}
});
translator.translate();
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://apps.who.int/iris/handle/10665/70863?locale=ar",
"items": [
{
"itemType": "report",
"title": "Consensus document on the epidemiology of severe acute respiratory syndrome (SARS)",
"creators": [
{
"lastName": "World Health Organization",
"creatorType": "author",
"fieldMode": true
}
],
"date": "2003",
"extra": "number-of-pages: 46",
"institution": "World Health Organization",
"language": "en",
"libraryCatalog": "apps.who.int",
"reportNumber": "WHO/CDS/CSR/GAR/2003.11",
"url": "https://apps.who.int/iris/handle/10665/70863",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Communicable Diseases and their Control"
},
{
"tag": "Disease Outbreaks"
},
{
"tag": "Severe Acute Respiratory Syndrome"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://apps.who.int/iris/handle/10665/272081",
"items": [
{
"itemType": "journalArticle",
"title": "Providing oxygen to children in hospitals: a realist review",
"creators": [
{
"firstName": "Hamish",
"lastName": "Graham",
"creatorType": "author"
},
{
"firstName": "Shidan",
"lastName": "Tosif",
"creatorType": "author"
},
{
"firstName": "Amy",
"lastName": "Gray",
"creatorType": "author"
},
{
"firstName": "Shamim",
"lastName": "Qazi",
"creatorType": "author"
},
{
"firstName": "Harry",
"lastName": "Campbell",
"creatorType": "author"
},
{
"firstName": "David",
"lastName": "Peel",
"creatorType": "author"
},
{
"firstName": "Barbara",
"lastName": "McPake",
"creatorType": "author"
},
{
"firstName": "Trevor",
"lastName": "Duke",
"creatorType": "author"
}
],
"date": "2017-4-01",
"DOI": "10.2471/BLT.16.186676",
"ISSN": "0042-9686",
"abstractNote": "288",
"extra": "PMID: 28479624",
"issue": "4",
"language": "en",
"libraryCatalog": "apps.who.int",
"pages": "288-302",
"publicationTitle": "Bulletin of the World Health Organization",
"rights": "http://creativecommons.org/licenses/by/3.0/igo/legalcode",
"shortTitle": "Providing oxygen to children in hospitals",
"url": "https://apps.who.int/iris/handle/10665/272081",
"volume": "95",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Snapshot",
"mimeType": "text/html"
},
{
"title": "PubMed entry",
"mimeType": "text/html",
"snapshot": false
}
],
"tags": [
{
"tag": "Systematic Reviews"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://apps.who.int/iris/handle/10665/273678",
"items": [
{
"itemType": "book",
"title": "Сборник руководящих принципов и стандартов ВОЗ: обеспечение оптимального оказания медицинских услуг пациентам с туберкулезом",
"creators": [
{
"lastName": "Всемирная организация здравоохранения",
"creatorType": "author",
"fieldMode": true
}
],
"date": "2018",
"ISBN": "9789244514108",
"language": "ru",
"libraryCatalog": "apps.who.int",
"numPages": "47",
"publisher": "Всемирная организация здравоохранения",
"rights": "CC BY-NC-SA 3.0 IGO",
"shortTitle": "Сборник руководящих принципов и стандартов ВОЗ",
"url": "https://apps.who.int/iris/handle/10665/273678",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Delivery of Health Care"
},
{
"tag": "Disease Management"
},
{
"tag": "Guideline"
},
{
"tag": "Infection Control"
},
{
"tag": "Multidrug-Resistant"
},
{
"tag": "Patient Care"
},
{
"tag": "Reference Standards"
},
{
"tag": "Tuberculosis"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://apps.who.int/iris/discover?query=acupuncture",
"items": "multiple"
},
{
"type": "search",
"input": {
"ISBN": "9789241506236"
},
"items": [
{
"itemType": "book",
"title": "Global action plan for the prevention and control of noncommunicable diseases 2013-2020",
"creators": [
{
"lastName": "World Health Organization",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "2013",
"ISBN": "9789241506236",
"language": "en",
"libraryCatalog": "WHO IRIS",
"place": "Geneva",
"publisher": "World Health Organization",
"url": "https://apps.who.int/iris/handle/10665/94384",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Cardiovascular Diseases"
},
{
"tag": "Chronic Disease"
},
{
"tag": "Diabetes Mellitus"
},
{
"tag": "Health Planning"
},
{
"tag": "International Cooperation"
},
{
"tag": "Neoplasms"
},
{
"tag": "Respiratory Tract Diseases"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Sebastian Karcher and Abe Jellinek^https?://[^/]+\.worldcat\.org//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2015-2021 Sebastian Karcher and Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (getSearchResults(doc, true)) {
return "multiple";
}
if (doc.querySelector('div#root')) {
if (extractOCLCID(url)) {
// we're on a v2 page
let co = getFirstContextObj(doc);
if (co) {
return generateItem(doc, co).itemType;
}
else {
return displayTypeToZotero(text(doc, '[data-testid^="item-detail-record-type"]'))
|| "book";
}
}
else {
Z.monitorDOMChanges(doc.querySelector('div#root'));
}
}
else {
var co = getFirstContextObj(doc);
if (ZU.xpathText(doc, '//input[@id="dbList"]/@value') && co) {
return generateItem(doc, co).itemType;
}
}
return false;
}
function displayTypeToZotero(displayType) {
if (!displayType) return false;
if (displayType.includes('©')) {
displayType = displayType.substring(displayType.indexOf('©'));
}
displayType = ZU.trimInternal(displayType.replace(/\d/g, ''));
switch (displayType) {
case 'Article':
return 'journalArticle';
default:
return 'book';
}
}
/**
* Generates a Zotero item from a single item WorldCat page,
* or the first item on a multiple item page
*/
function generateItem(doc, co) {
var item = new Zotero.Item();
ZU.parseContextObject(co, item);
// item types not covered by COinS will still need to be covered. See the corresponding code in Open Worldcat.
return item;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('a[href*="/search/detail/"]:not([id*="availability-section-link"])');
if (!rows.length) {
rows = doc.querySelectorAll('ol.results li[id*="record"]');
}
for (let row of rows) {
let title = ZU.xpathText(row, './/div[contains(@class, "title") and a[@class="record-title"]]');
if (!title) title = ZU.trimInternal(row.textContent); // v2
let oclcID = ZU.xpathText(row, './@data-oclcnum');
if (!oclcID) oclcID = extractOCLCID(row.href); // v2
let databaseID = extractDatabaseID(row.href);
// Z.debug(databaseID);
let risURL = composeURL(oclcID, databaseID);
if (!title) continue;
if (checkOnly) return true;
found = true;
items[risURL] = title;
}
return found ? items : false;
}
function getFirstContextObj(doc) {
return ZU.xpathText(doc, '//span[contains(@class, "Z3988")][1]/@title');
}
/**
* Given an item URL, extract OCLC ID
*/
function extractOCLCID(url) {
var id = url.match(/\/(?:oclc|detail)\/([^?]+)/);
if (!id) return false;
return id[1];
}
/**
* Given an item URL, extract database ID
*/
function extractDatabaseID(url) {
let db = url.match(/databaseList=([^&]+?)(&|$)/);
if (!db) return false;
return db[1];
}
function composeURL(oclcID, databaseID) {
var risURL = "/share/citation.ris?format=application%2Foctet-stream&oclcNumber=" + oclcID + "&databaseIds=" + encodeURIComponent(databaseID);
return risURL;
}
/**
* RIS Scraper Function
*
*/
function scrape(risURL) {
// Z.debug(risURL)
ZU.doGet(risURL, function (text) {
// Z.debug(text);
if (!/^TY {1,2}- /m.test(text)) {
throw new Error("RIS not found in response");
}
// conference proceedings exported as CONF, but fields match BOOK better
text = text.replace(/TY\s+-\s+CONF\s+[\s\S]+?\n\s*ER\s+-/g, function (m) {
return m.replace(/^TY\s+-\s+CONF\s*$/mg, 'TY - BOOK')
// authors are actually editors
.replace(/^A1\s+-\s+/mg, 'A3 - ');
});
// Zotero.debug("Importing corrected RIS: \n" + text);
var translator = Zotero.loadTranslator("import");
translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7");
translator.setString(text);
translator.setHandler("itemDone", function (obj, item) {
item.extra = undefined;
item.archive = undefined;
// clean up ISBNs
if (item.ISBN) {
var ISBN = item.ISBN.split(/\s/);
var ISBNarray = [];
for (let i = 0; i < ISBN.length; i++) {
if (ZU.cleanISBN(ISBN[i])) {
ISBNarray.push(ZU.cleanISBN(ISBN[i]));
}
}
item.ISBN = ISBNarray.join(" ");
}
// remove space before colon
item.title = item.title.replace(/\s+:/, ":");
// remove trailing colon and brackets from place
if (item.place) {
item.place = item.place
.replace(/:\s*$/, "")
.replace(/\[(.*)\]/, '$1');
}
// remove traling period after publication
if (item.publicationTitle) {
item.publicationTitle = item.publicationTitle.replace(/\.\s*$/, "");
}
// remove trailing commar after publisher
if (item.publisher) {
item.publisher = item.publisher.replace(/,\s*$/, "");
}
// correct field mode for corporate authors
for (let i = 0; i < item.creators.length; i++) {
if (!item.creators[i].firstName) {
item.creators[i].fieldMode = 1;
}
}
// number of pages gets mapped to section???
if (item.section) {
// extract possible roman numerals and number of pages without the p
var numPages = item.section.match(/(([lxiv]+,\s*)?\d+)\s*p/);
if (numPages) item.numPages = numPages[1];
}
// the url field sometimes contains an additional label, e.g. for TOC
// "url": "Table of contents http://bvbr.bib-bvb.de:8991/...
if (item.url) {
var posUrl = item.url.indexOf('http');
if (posUrl > 0
|| item.url.includes("http://bvbr.bib-bvb.de:8991")
) {
item.attachments.push({
url: item.url.substr(posUrl),
title: posUrl > 0 ? item.url.substr(0, posUrl) : "Table of contents",
snapshot: false
});
delete item.url;
}
}
if (item.series) {
item.series = item.series.replace(/\.$/, '');
if (item.series.split(';').length == 2) {
[item.series, item.seriesNumber] = item.series.split(';');
}
}
if (item.edition) {
item.edition = item.edition.replace(/\.$/, '');
}
for (let creator of item.creators) {
if (!creator.firstName) continue;
creator.firstName = creator.firstName
.replace(/\(?[\d-,:\s]+\)?(\.*$)/, '$1')
.replace(/(\w{2,})\./, '$1');
}
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.options.defaultItemType = 'book'; // if not supplied, default to book
trans.options.typeMap = {
ELEC: 'book'
}; // ebooks should be imported as books
trans.doImport();
});
});
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) {
scrape(Object.keys(items));
}
});
}
else {
let oclcID = extractOCLCID(url);
let databaseID = extractDatabaseID(url);
// Z.debug(databaseID);
if (!oclcID) throw new Error("WorldCat: Failed to extract OCLC ID from URL: " + url);
let risURL = composeURL(oclcID, databaseID);
Z.debug("risURL= " + risURL);
scrape(risURL);
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://sbts.on.worldcat.org/oclc/795005226?databaseList=239,283,638",
"defer": true,
"items": [
{
"itemType": "journalArticle",
"title": "Steven E. Runge. Discourse Grammar of the Greek New Testament",
"creators": [
{
"lastName": "Long",
"firstName": "C.",
"creatorType": "author"
}
],
"date": "2012",
"ISSN": "0360-3032",
"issue": "1",
"libraryCatalog": "WorldCat Discovery Service",
"pages": "129-132",
"publicationTitle": "Trinity journal",
"volume": "33",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://lpts.on.worldcat.org/search?queryString=au:Mary%20GrandPre%CC%81&databaseList=638",
"defer": true,
"items": "multiple"
},
{
"type": "web",
"url": "https://sbts.on.worldcat.org/search?databaseList=&queryString=runge+discourse+grammar",
"defer": true,
"items": "multiple"
},
{
"type": "web",
"url": "https://sbts.on.worldcat.org/oclc/667874424?databaseList=239,283,638",
"items": [
{
"itemType": "book",
"title": "Discourse grammar of the Greek New Testament: a practical introduction for teaching and exegesis",
"creators": [
{
"lastName": "Runge",
"firstName": "Steven E.",
"creatorType": "author"
}
],
"date": "2010",
"ISBN": "9781598565836",
"language": "English",
"libraryCatalog": "WorldCat Discovery Service",
"numPages": "xx, 404",
"place": "Peabody, Mass.",
"publisher": "Hendrickson Publishers Marketing",
"series": "Lexham Bible reference series",
"shortTitle": "Discourse grammar of the Greek New Testament",
"attachments": [
{
"title": "Table of contents",
"snapshot": false
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://goshen.on.worldcat.org/v2/search/detail/62727772?queryString=Human-Computer%20Interaction&clusterResults=true&groupVariantRecords=false",
"defer": true,
"items": [
{
"itemType": "book",
"title": "Encyclopedia of human computer interaction",
"creators": [
{
"lastName": "Ghaoui",
"firstName": "Claude",
"creatorType": "author"
}
],
"date": "2006",
"ISBN": "9781591407980 9781280706820 9786610706822",
"language": "English",
"libraryCatalog": "WorldCat Discovery Service",
"numberOfVolumes": "1 online resource (xviii, 738, [24] pages) : illustrations",
"place": "Hershey PA",
"publisher": "Idea Group Reference",
"series": "Gale virtual reference library",
"url": "http://www.books24x7.com/marc.asp?bookid=14703",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://goshen.on.worldcat.org/search/detail/57358293?queryString=harry%20potter&clusterResults=true&groupVariantRecords=false",
"defer": true,
"items": [
{
"itemType": "book",
"title": "Harry Potter and the Half-Blood Prince",
"creators": [
{
"lastName": "Rowling",
"firstName": "J. K.",
"creatorType": "author"
},
{
"lastName": "GrandPré",
"firstName": "Mary",
"creatorType": "author"
}
],
"date": "2005",
"ISBN": "9780439784542 9780439786775 9780439791328 9780439785969 9780329552510 9780605000230 9781408835012 9780545582995 9781415592946 9780329414382 9780786277452 9781419354342 9780439906296 9781338299199 9780756967659",
"edition": "First American edition",
"language": "English",
"libraryCatalog": "WorldCat Discovery Service",
"numPages": "x, 652",
"place": "New York, NY",
"publisher": "Arthur A. Levine Books, an imprint of Scholastic Inc.",
"series": "Harry Potter",
"seriesNumber": "book 6",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://goshen.on.worldcat.org/v2/search?queryString=foundation%20asimov&clusterResults=true&groupVariantRecords=false",
"defer": true,
"items": "multiple"
},
{
"type": "web",
"url": "https://illinois.on.worldcat.org/v2/oclc/1233323459",
"defer": true,
"items": [
{
"itemType": "book",
"title": "Pride and prejudice",
"creators": [
{
"lastName": "Austen",
"firstName": "Jane",
"creatorType": "author"
}
],
"date": "2020",
"ISBN": "9781513263427 9781513220963",
"language": "English",
"libraryCatalog": "WorldCat Discovery Service",
"numPages": "308",
"place": "Portland, Oregon",
"publisher": "Mint Editions",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://illinois.on.worldcat.org/v2/oclc/432674",
"defer": true,
"items": [
{
"itemType": "journalArticle",
"title": "Quantitative modeling of the physiological factors in radiation lethality,",
"creators": [
{
"lastName": "Iberall",
"firstName": "Arthur S.",
"creatorType": "author"
}
],
"date": "1967",
"language": "English",
"libraryCatalog": "WorldCat Discovery Service",
"publicationTitle": "Annals of the New York Academy of Sciences",
"url": "http://www3.interscience.wiley.com/cgi-bin/fulltext/119756235/PDFSTART",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://illinois.on.worldcat.org/v2/oclc/6995902131",
"defer": true,
"items": [
{
"itemType": "journalArticle",
"title": "Jews Working in Agriculture in Poland in the First Years after the Second World War",
"creators": [
{
"lastName": "Rykala A.",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "2016",
"DOI": "10.1515/esrp-2016-0010",
"ISSN": "1231-1952",
"issue": "2",
"libraryCatalog": "WorldCat Discovery Service",
"pages": "49-63",
"publicationTitle": "European Spatial Research and Policy",
"volume": "23",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://illinois.on.worldcat.org/v2/oclc/1080997809",
"defer": true,
"items": [
{
"itemType": "book",
"title": "The ego and the id",
"creators": [
{
"lastName": "Freud",
"firstName": "Sigmund",
"creatorType": "author"
},
{
"lastName": "Berasaluce",
"firstName": "Andrea Jones",
"creatorType": "author"
}
],
"date": "2019",
"ISBN": "9781945186790",
"language": "English",
"libraryCatalog": "WorldCat Discovery Service",
"numPages": "66",
"place": "New York, NY",
"publisher": "Clydesdale Press",
"series": "Clydesdale classics",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://illinois.on.worldcat.org/v2/oclc/654235026",
"defer": true,
"items": [
{
"itemType": "book",
"title": "International financial policy: essays in honor of Jacques J. Polak",
"creators": [
{
"lastName": "Polak",
"firstName": "J. J. (Jacques Jacobus)",
"creatorType": "author"
},
{
"lastName": "Frenkel",
"firstName": "Jacob A.",
"creatorType": "author"
},
{
"lastName": "Goldstein",
"firstName": "Morris",
"creatorType": "author"
}
],
"date": "1991",
"ISBN": "9781455248681 9781283536660 9781455295173",
"language": "English",
"libraryCatalog": "WorldCat Discovery Service",
"numberOfVolumes": "1 online resource (xiv, 508 pages) : illustrations",
"place": "Washington, D.C.",
"publisher": "International Monetary Fund",
"shortTitle": "International financial policy",
"url": "https://search.ebscohost.com/login.aspx?direct=true&scope=site&db=nlebk&db=nlabk&AN=449390",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://concordiauniversity.on.worldcat.org/search/detail/8895651373?queryString=%28%22Cybersecurity%22%20OR%20%22Computer%20security%22%20OR%20%22Information%20security%22%29%20AND%20%22risk%20management%22&clusterResults=true&groupVariantRecords=false&expandSearch=false&translateSearch=false&sortKey=BEST_MATCH&scope=wz%3A15304&subformat=Artchap%3A%3Aartchap_artcl&content=peerReviewed&year=2018..2022&databaseList=283%2C638&page=3",
"defer": true,
"items": [
{
"itemType": "journalArticle",
"title": "REVIEWING INFORMATION SECURITY GOVERNANCE A cybersecurity governance program is only as strong as its weakest link.",
"creators": [
{
"lastName": "Rai",
"firstName": "Sajay",
"creatorType": "author"
}
],
"date": "2020",
"ISSN": "0020-5745",
"issue": "6",
"libraryCatalog": "WorldCat Discovery Service",
"pages": "18(2)",
"publicationTitle": "Internal Auditor",
"volume": "77",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Guy Aglionby^https?://(www\.)?(aclanthology\.org|aclweb\.org/anthology)//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2018 Guy Aglionby
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
var ext2mime = {
gz: 'application/gzip',
tgz: 'application/gzip',
pdf: 'application/pdf',
zip: 'application/zip',
tar: 'application/x-tar',
txt: 'text/plain',
rar: 'application/x-rar-compressed',
rtf: 'application/rtf',
bz2: 'application/x-bzip2',
bz: 'application/x-bzip',
doc: 'application/msword',
docx: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
ppt: 'application/vnd.ms-powerpoint',
pptx: 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
xls: 'application/vnd.ms-excel',
xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
html: 'text/html',
png: 'image/png',
gif: 'image/gif',
jpg: 'image/jpeg',
jpeg: 'image/jpeg',
mp4: 'video/mp4',
tsv: 'text/tab-separated-values',
csv: 'text/csv',
py: 'text/x-python',
tex: 'text/x-tex',
bbl: 'text/x-tex'
};
function detectWeb(doc, url) {
let paperIdRegex = /([A-Z])\d{2}-\d{4}|\d{4}\.([\w\d]+)-[\w\d]+\.\d+/;
let paperMatch = url.match(paperIdRegex);
if (paperMatch) {
let venue = paperMatch[1] ? paperMatch[1] : paperMatch[2];
venue = venue.toLowerCase();
if (venue == 'j' || venue == 'q' || venue == 'tacl' || venue == 'cl') {
return 'journalArticle';
}
else {
return 'conferencePaper';
}
}
else if ((url.includes('/events/') || url.includes('/people/')
|| url.includes('/volumes/') || url.includes('/search/'))
&& getSearchResults(doc, url)) {
return 'multiple';
}
return false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) === 'multiple') {
Zotero.selectItems(getSearchResults(doc, url), function (selected) {
if (selected) {
ZU.processDocuments(Object.keys(selected), scrape);
}
});
}
else if (url.endsWith('.bib')) {
let paperURL = url.slice(0, -'.bib'.length);
ZU.processDocuments(paperURL, scrape);
}
else if (url.endsWith('.pdf')) {
// e.g. http://aclweb.org/anthology/P18-1001.pdf
let paperURL = url.slice(0, -'.pdf'.length);
ZU.processDocuments(paperURL, scrape);
}
else {
scrape(doc);
}
}
function scrape(doc) {
let bibtex = ZU.xpath(doc, '//pre[@id = "citeBibtexContent"]')[0].textContent;
let pdfURL = ZU.xpath(doc, '//a[span[contains(text(), "PDF")]]/@href')[0].value;
let translator = Zotero.loadTranslator("import");
translator.setTranslator("9cb70025-a888-4a29-a210-93ec52da40d4");
translator.setString(bibtex);
translator.setHandler("itemDone", function (obj, item) {
item.attachments.push({
url: pdfURL,
title: 'Full Text PDF',
mimeType: 'application/pdf'
});
delete item.itemID;
if (item.date) {
item.date = ZU.strToISO(item.date);
}
if (item.abstractNote) {
item.abstractNote = ZU.cleanTags(item.abstractNote);
}
if (item.itemType == 'conferencePaper') {
item.conferenceName = getVenue(doc, item.publicationTitle);
}
if (Z.getHiddenPref('attachSupplementary')) {
let supplementaries = ZU.xpath(doc, '//div[contains(@class, "acl-paper-link-block")]//a[contains(@class, "btn-attachment")]');
supplementaries.forEach(function (supplementary) {
let ext = supplementary.href.split('.').pop();
let supplementaryMime = Z.getHiddenPref('supplementaryAsLink') ? 'text/html' : ext2mime[ext];
item.attachments.push({
url: supplementary.href,
title: supplementary.text,
mimeType: supplementaryMime || 'text/html',
snapshot: !Z.getHiddenPref('supplementaryAsLink')
});
});
}
item.complete();
});
translator.translate();
}
function getVenue(doc, pubTitle) {
let venueElements = ZU.xpath(doc, '//dt[contains(text(), "Venue")]//following::dd[1]/a');
let venues = venueElements.map(function (v) {
return v.innerText.trim();
});
if (!venues.length) {
return '';
}
let year = ZU.xpath(doc, '//dt[contains(text(), "Year")]/following::dd[1]')[0].textContent;
let venueString = venues.join('-') + ' ' + year;
if (pubTitle.includes('Student') || pubTitle.includes('Demonstration') || pubTitle.includes('Tutorial')) {
// better to use full proceedingsTitle to cite these publications
return '';
}
if (venueString.includes('SemEval')) {
if (pubTitle.includes('SENSEVAL')) {
return 'SENSEVAL ' + year;
}
else if (pubTitle.includes('Evaluation') && !pubTitle.includes('Joint')) {
return 'SemEval ' + year;
}
else if (!pubTitle.includes('Evaluation') && pubTitle.includes('Joint')) {
return '*SEM ' + year;
}
else if (pubTitle.includes('Volume 1') && pubTitle.includes('Volume 2')) {
return '*SEM/SemEval ' + year;
}
else if (pubTitle.includes('SemEval')) {
return 'SemEval ' + year;
}
else {
return '*SEM ' + year;
}
}
else if (venueString.includes('WS')) {
// better to use full proceedingsTitle to cite these publications
return '';
}
else if (!venueString.includes("HLT") && pubTitle.match('HLT|Human Language Technolog(y|ies)')) {
return venues.join('-') + '-HLT ' + year;
}
return venueString;
}
function getSearchResults(doc, url) {
let items = {};
if (url.includes('/search/')) {
// e.g. https://www.aclweb.org/anthology/search/?q=foo+bar
let results = ZU.xpath(doc, '//div[contains(@class, "gsc-webResult")]//div[contains(@class, "gs-title")]/a');
let paperRegex = /[A-Z]\d{2}-\d{4}|\d{4}\.[\w\d]+-[\w\d]+\.\d+/;
for (let result of results) {
let url = result.href;
if (url.match(paperRegex)) {
if (url.endsWith('.pdf')) {
url = url.slice(0, -'.pdf'.length);
}
items[url] = result.text;
}
}
}
else {
let papers = ZU.xpath(doc, '//section[@id="main"]//strong/a');
for (let paper of papers) {
items[paper.href] = paper.text;
}
}
return Object.keys(items).length ? items : false;
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.aclanthology.org/events/acl-2018/",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.aclanthology.org/volumes/P18-1/",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.aclanthology.org/people/i/iryna-gurevych/",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.aclanthology.org/Q18-1001/",
"items": [
{
"itemType": "journalArticle",
"title": "Whodunnit? Crime Drama as a Case for Natural Language Understanding",
"creators": [
{
"firstName": "Lea",
"lastName": "Frermann",
"creatorType": "author"
},
{
"firstName": "Shay B.",
"lastName": "Cohen",
"creatorType": "author"
},
{
"firstName": "Mirella",
"lastName": "Lapata",
"creatorType": "author"
}
],
"date": "2018",
"DOI": "10.1162/tacl_a_00001",
"abstractNote": "In this paper we argue that crime drama exemplified in television programs such as CSI: Crime Scene Investigation is an ideal testbed for approximating real-world natural language understanding and the complex inferences associated with it. We propose to treat crime drama as a new inference task, capitalizing on the fact that each episode poses the same basic question (i.e., who committed the crime) and naturally provides the answer when the perpetrator is revealed. We develop a new dataset based on CSI episodes, formalize perpetrator identification as a sequence labeling problem, and develop an LSTM-based model which learns from multi-modal data. Experimental results show that an incremental inference strategy is key to making accurate guesses as well as learning from representations fusing textual, visual, and acoustic input.",
"libraryCatalog": "ACLWeb",
"pages": "1–15",
"publicationTitle": "Transactions of the Association for Computational Linguistics",
"shortTitle": "Whodunnit?",
"url": "https://www.aclweb.org/anthology/Q18-1001",
"volume": "6",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.aclanthology.org/W04-0801/",
"items": [
{
"itemType": "conferencePaper",
"title": "The Basque lexical-sample task",
"creators": [
{
"firstName": "Eneko",
"lastName": "Agirre",
"creatorType": "author"
},
{
"firstName": "Itziar",
"lastName": "Aldabe",
"creatorType": "author"
},
{
"firstName": "Mikel",
"lastName": "Lersundi",
"creatorType": "author"
},
{
"firstName": "David",
"lastName": "Martínez",
"creatorType": "author"
},
{
"firstName": "Eli",
"lastName": "Pociello",
"creatorType": "author"
},
{
"firstName": "Larraitz",
"lastName": "Uria",
"creatorType": "author"
}
],
"date": "2004-07",
"conferenceName": "SENSEVAL 2004",
"libraryCatalog": "ACLWeb",
"pages": "1–4",
"place": "Barcelona, Spain",
"proceedingsTitle": "Proceedings of SENSEVAL-3, the Third International Workshop on the Evaluation of Systems for the Semantic Analysis of Text",
"publisher": "Association for Computational Linguistics",
"url": "https://www.aclweb.org/anthology/W04-0801",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.aclanthology.org/W19-0101/",
"items": [
{
"itemType": "conferencePaper",
"title": "Can Entropy Explain Successor Surprisal Effects in Reading?",
"creators": [
{
"firstName": "Marten",
"lastName": "van Schijndel",
"creatorType": "author"
},
{
"firstName": "Tal",
"lastName": "Linzen",
"creatorType": "author"
}
],
"date": "2019",
"DOI": "10.7275/qtbb-9d05",
"libraryCatalog": "ACLWeb",
"pages": "1–7",
"proceedingsTitle": "Proceedings of the Society for Computation in Linguistics (SCiL) 2019",
"url": "https://www.aclweb.org/anthology/W19-0101",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.aclanthology.org/N12-2001/",
"items": [
{
"itemType": "conferencePaper",
"title": "Finding the Right Supervisor: Expert-Finding in a University Domain",
"creators": [
{
"firstName": "Fawaz",
"lastName": "Alarfaj",
"creatorType": "author"
},
{
"firstName": "Udo",
"lastName": "Kruschwitz",
"creatorType": "author"
},
{
"firstName": "David",
"lastName": "Hunter",
"creatorType": "author"
},
{
"firstName": "Chris",
"lastName": "Fox",
"creatorType": "author"
}
],
"date": "2012-06",
"libraryCatalog": "ACLWeb",
"pages": "1–6",
"place": "Montréal, Canada",
"proceedingsTitle": "Proceedings of the NAACL HLT 2012 Student Research Workshop",
"publisher": "Association for Computational Linguistics",
"shortTitle": "Finding the Right Supervisor",
"url": "https://www.aclweb.org/anthology/N12-2001",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.aclanthology.org/N18-1001/",
"items": [
{
"itemType": "conferencePaper",
"title": "Label-Aware Double Transfer Learning for Cross-Specialty Medical Named Entity Recognition",
"creators": [
{
"firstName": "Zhenghui",
"lastName": "Wang",
"creatorType": "author"
},
{
"firstName": "Yanru",
"lastName": "Qu",
"creatorType": "author"
},
{
"firstName": "Liheng",
"lastName": "Chen",
"creatorType": "author"
},
{
"firstName": "Jian",
"lastName": "Shen",
"creatorType": "author"
},
{
"firstName": "Weinan",
"lastName": "Zhang",
"creatorType": "author"
},
{
"firstName": "Shaodian",
"lastName": "Zhang",
"creatorType": "author"
},
{
"firstName": "Yimei",
"lastName": "Gao",
"creatorType": "author"
},
{
"firstName": "Gen",
"lastName": "Gu",
"creatorType": "author"
},
{
"firstName": "Ken",
"lastName": "Chen",
"creatorType": "author"
},
{
"firstName": "Yong",
"lastName": "Yu",
"creatorType": "author"
}
],
"date": "2018-06",
"DOI": "10.18653/v1/N18-1001",
"abstractNote": "We study the problem of named entity recognition (NER) from electronic medical records, which is one of the most fundamental and critical problems for medical text mining. Medical records which are written by clinicians from different specialties usually contain quite different terminologies and writing styles. The difference of specialties and the cost of human annotation makes it particularly difficult to train a universal medical NER system. In this paper, we propose a label-aware double transfer learning framework (La-DTL) for cross-specialty NER, so that a medical NER system designed for one specialty could be conveniently applied to another one with minimal annotation efforts. The transferability is guaranteed by two components: (i) we propose label-aware MMD for feature representation transfer, and (ii) we perform parameter transfer with a theoretical upper bound which is also label aware. We conduct extensive experiments on 12 cross-specialty NER tasks. The experimental results demonstrate that La-DTL provides consistent accuracy improvement over strong baselines. Besides, the promising experimental results on non-medical NER scenarios indicate that La-DTL is potential to be seamlessly adapted to a wide range of NER tasks.",
"conferenceName": "NAACL-HLT 2018",
"libraryCatalog": "ACLWeb",
"pages": "1–15",
"place": "New Orleans, Louisiana",
"proceedingsTitle": "Proceedings of the 2018 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies, Volume 1 (Long Papers)",
"publisher": "Association for Computational Linguistics",
"url": "https://www.aclweb.org/anthology/N18-1001",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.aclanthology.org/2020.lrec-1.2/",
"items": [
{
"itemType": "conferencePaper",
"title": "A Cluster Ranking Model for Full Anaphora Resolution",
"creators": [
{
"firstName": "Juntao",
"lastName": "Yu",
"creatorType": "author"
},
{
"firstName": "Alexandra",
"lastName": "Uma",
"creatorType": "author"
},
{
"firstName": "Massimo",
"lastName": "Poesio",
"creatorType": "author"
}
],
"date": "2020-05",
"ISBN": "9791095546344",
"abstractNote": "Anaphora resolution (coreference) systems designed for the CONLL 2012 dataset typically cannot handle key aspects of the full anaphora resolution task such as the identification of singletons and of certain types of non-referring expressions (e.g., expletives), as these aspects are not annotated in that corpus. However, the recently released dataset for the CRAC 2018 Shared Task can now be used for that purpose. In this paper, we introduce an architecture to simultaneously identify non-referring expressions (including expletives, predicative s, and other types) and build coreference chains, including singletons. Our cluster-ranking system uses an attention mechanism to determine the relative importance of the mentions in the same cluster. Additional classifiers are used to identify singletons and non-referring markables. Our contributions are as follows. First all, we report the first result on the CRAC data using system mentions; our result is 5.8% better than the shared task baseline system, which used gold mentions. Second, we demonstrate that the availability of singleton clusters and non-referring expressions can lead to substantially improved performance on non-singleton clusters as well. Third, we show that despite our model not being designed specifically for the CONLL data, it achieves a score equivalent to that of the state-of-the-art system by Kantor and Globerson (2019) on that dataset.",
"conferenceName": "LREC 2020",
"language": "English",
"libraryCatalog": "ACLWeb",
"pages": "11–20",
"place": "Marseille, France",
"proceedingsTitle": "Proceedings of the 12th Language Resources and Evaluation Conference",
"publisher": "European Language Resources Association",
"url": "https://www.aclweb.org/anthology/2020.lrec-1.2",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.aclanthology.org/volumes/2020.lrec-1/",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.aclanthology.org/T87-1010.bib",
"items": [
{
"itemType": "conferencePaper",
"title": "Unification and the new grammatism",
"creators": [
{
"firstName": "Steve",
"lastName": "Pulman",
"creatorType": "author"
}
],
"date": "1987",
"conferenceName": "TINLAP 1987",
"libraryCatalog": "ACLWeb",
"proceedingsTitle": "Theoretical Issues in Natural Language Processing 3",
"url": "https://www.aclweb.org/anthology/T87-1010",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100ProQuest, Philipp Zumstein^https?://sk\.sagepub\.com//*
SAGE Knowledge Translator
Copyright (C) 2014 ProQuest LLC, Philipp Zumstein
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
function detectWeb(doc, url) {
if (url.indexOf('/Search')>-1) {
//automatic test for multiples are not working (easily), but you
//can test manually, e..g
// http://sk.sagepub.com/Search/Results?IncludeParts=true&IncludeSegments=true&DocumentTypes=&BioId=&Products=&Subjects=&Disciplines=&Sort=relevance&Keywords%5B0%5D.Text=leader&Keywords%5B0%5D.Field=FullText
// http://sk.sagepub.com/Search/Results?SearchId=0&IncludeEntireWorks=true&IncludeParts=true&IncludeSegments=true&AvailableToMeOnly=false&SearchWithin=&BioId=&CaseProvider=&Keywords%5B0%5D.Text=zotero&Keywords%5B0%5D.Field=FullText&Contributor=&ContributorTypes=All+People&ContributorTypes=Author%2FEditor&ContributorTypes=Academic&ContributorTypes=Counselor&ContributorTypes=Director&ContributorTypes=Interviewee&ContributorTypes=Interviewer&ContributorTypes=Narrator&ContributorTypes=Practitioner&ContributorTypes=Producer&ContributorTypes=Speaker&Publisher=&PublisherLocation=&OriginalPublicationYear.StartYear=&OriginalPublicationYear.EndYear=&OnlinePublicationYear.StartYear=&OnlinePublicationYear.EndYear=&Products=0&Products=1&Products=5&Products=2&Products=3&Products=4&Products=6&DocumentTypes=Books&VideoTypes=All+Video+Types&VideoTypes=Archival+Content&VideoTypes=Conference&VideoTypes=Counseling+Session&VideoTypes=Definition&VideoTypes=Documentary&VideoTypes=Film&VideoTypes=In+Practice&VideoTypes=Interview&VideoTypes=Key+Note&VideoTypes=Lecture&VideoTypes=Panel+Discussion&VideoTypes=Raw%2FObservational+Footage&VideoTypes=Tutorial&VideoTypes=Video+Case&AcademicLevels=All&AcademicLevels=Basic&AcademicLevels=Intermediate&AcademicLevels=Complex&CaseLengthStart=&CaseLengthEnd=&Disciplines=All&Disciplines=1&Disciplines=2&Disciplines=3&Disciplines=4&Disciplines=5&Disciplines=6&Disciplines=7&Disciplines=8&Disciplines=9&Disciplines=10&PersonsDiscussed=&OrganizationsDiscussed=&EventsDiscussed=&PlacesDiscussed=&CaseOrganizationsDiscussed=&CaseIndustriesDiscussed=
if (getSearchResults(doc, true)) {
return "multiple";
}
} else {
return getItemType(doc, url);
}
}
function getItemType(doc, url) {
if (url.split('/').length>5) {
//This includes now also encyclopadiaArticles and dictionaryEntries.
return "bookSection";
} else {
return "book";
}
}
function getItem(doc, url) {
var id = ZU.xpathText(doc, '(//input[@id="contentId"]/@value)[1]');
var urlParts = url.split('/');
if (urlParts.length>5) {
var chapterId = urlParts[urlParts.length-1].replace('.xml', '');
var citeLink = '//sk.sagepub.com/CitationExport/ExportEntryCitation/'+id+'?type=Endnote&xmlId='+chapterId;
} else {
var citeLink = '//sk.sagepub.com/CitationExport/exportcitation/'+id+'?type=Endnote';
}
//Z.debug(citeLink)
ZU.doGet(citeLink, function(text) {
var match = text
.replace(/NV\s+-\s+1\n/, "")
.replace(/^AU\s+-\s+,\s+$/m, '')
.replace(/^(AU\s+-\s+.+?),? Ph\.? ?D\.?\b/mg, '$1')
.replace(/^DA(\s+-)/mg, 'Y2$1')
.replace(/^C1(\s+-)/mg, 'T2$1')
.replace(/^C2(\s+-\s+)pages\s+/mg, 'SP$1');
//Z.debug(text);
//Z.debug(match);
var translator = Zotero.loadTranslator("import");
translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7");//RIS translator
translator.setString(match);
translator.setHandler("itemDone", function (obj, item) {
var keywords = ZU.xpathText(doc, "//meta[@name='keywords']/@content");
if (keywords) {
item.tags = keywords.split(',');
}
item.url = url;
item.attachments.push({
title: "SAGE Knowledge Snapshot",
document: doc
});
for (var i = 0; i < item.creators.length; i++) {
var creator = item.creators[i];
if (creator.fieldMode && creator.lastName.indexOf(" of ") == -1) {
item.creators[i] = ZU.cleanAuthor(creator.lastName, creator.creatorType, creator.lastName.indexOf(",") > -1);
}
creator = item.creators[i];
if (/^\s*(?:(?:Jr|Sr)\.?|I{1,3})\s*$/i.test(creator.lastName)) {
item.creators[i] = ZU.cleanAuthor(creator.firstName, creator.creatorType, creator.firstName.indexOf(",") != -1);
item.creators[i].firstName += ', ' + creator.lastName.trim();
}
}
if (item.series == item.title) {
delete item.series;
}
var stripPeriods = ['title', 'bookTitle', 'encyclopediaTitle', 'dictionaryTitle'];
for (var i=0; i<stripPeriods.length; i++) {
var title = item[stripPeriods[i]];
if (!title) continue;
item[stripPeriods[i]] = title.replace(/([^.])\.\s*$/, '$1');
}
//Actually the title and bookTitle have to be switched.
if (item.itemType=="bookSection" || item.itemType=="encyclopediaArticle" ||item.itemType=="dictionaryEntry") {
if (item.title && item.bookTitle) {
var temp = item.title;
item.title = item.bookTitle;
item.bookTitle = temp;
}
}
if (item.title.charAt(item.title.length - 1) == ".") {
item.title = item.title.slice(0, item.title.length - 1);
}
if (item.bookTitle && item.bookTitle.charAt(item.bookTitle.length - 1) == ".") {
item.bookTitle = item.bookTitle.slice(0, item.bookTitle.length - 1);
}
if (item.abstractNote == "There is no abstract available for this title") {
delete item.abstractNote;
}
if (!item.abstractNote) {
item.abstractNote = ZU.xpathText(doc, '//div[contains(@class, "abstract-text")]');
}
if (!item.publisher) {
item.publisher = ZU.xpathText(doc, '(//ul[contains(@class, "detail-list")])[1]/li[em[contains(., "Publisher:")]]/text()[2]');
}
if (!item.ISBN) {
item.ISBN = ZU.xpathText(doc, '(//ul[contains(@class, "detail-list")])[1]/li[contains(@class, "isbn")]');
}
item.complete();
});
translator.getTranslatorObject(function(obj) {
var itemType = getItemType(doc, url);
if (itemType) {
obj.options.itemType = itemType;
}
obj.doImport();
});
});
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('#divSearchResults .holder');
for (let row of rows) {
var title = text(row, 'h3 > a');
var url = attr(row, 'h3 > a', 'href');
if (!title || !url) {
continue;
}
if (checkOnly) return true;
found = true;
items[url] = ZU.trimInternal(title);
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
var hits = getSearchResults(doc);
var urls = [];
Z.selectItems(hits, function(items) {
if (items == null) {
return true;
}
for (var j in items) {
urls.push(j);
}
ZU.processDocuments(urls, getItem);
});
}
else {
getItem(doc, url);
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://sk.sagepub.com/cqpress/students-guide-to-congress/n97.xml",
"items": [
{
"itemType": "bookSection",
"title": "Minority Leader",
"creators": [
{
"lastName": "Schulman.",
"firstName": "Bruce J.",
"creatorType": "author"
}
],
"date": "2009",
"bookTitle": "Student's Guide to Congress",
"extra": "DOI: 10.4135/9781452240190",
"libraryCatalog": "SAGE Knowledge",
"numberOfVolumes": "4",
"pages": "214-216",
"place": "Washington",
"publisher": "CQ Press",
"url": "http://sk.sagepub.com/cqpress/students-guide-to-congress/n97.xml",
"attachments": [
{
"title": "SAGE Knowledge Snapshot"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://sk.sagepub.com/reference/schoolchoice",
"items": [
{
"itemType": "book",
"title": "Alternative Schooling and School Choice",
"creators": [
{
"lastName": "Osborne",
"firstName": "Allan , Jr.",
"creatorType": "author"
},
{
"lastName": "Russo",
"firstName": "Charles",
"creatorType": "author"
},
{
"lastName": "Cattaro",
"firstName": "Gerald",
"creatorType": "author"
}
],
"date": "2012",
"ISBN": "9781412987950 9781452218328",
"abstractNote": "This issues-based reference set on education in the United States tackles broad, contentious topics that have prompted debate and discussion within the education community. The volumes focus on pre-school through secondary education and explore prominent and perennially important debates. This set is an essential reference resource for undergraduate students within schools of education and related fields including educational administration, educational psychology, school psychology, human development, and more. Education of America's school children always has been and always will be a hot-button issue. From what should be taught to how to pay for education to how to keep kids safe in schools, impassioned debates emerge and mushroom, both within the scholarly community and among the general public. This volume in the point/counterpoint Debating Issues in American ...",
"extra": "DOI: 10.4135/9781452218328",
"libraryCatalog": "SAGE Knowledge",
"numberOfVolumes": "1",
"place": "Thousand Oaks, California",
"publisher": "SAGE Publications, Inc.",
"url": "http://sk.sagepub.com/reference/schoolchoice",
"attachments": [
{
"title": "SAGE Knowledge Snapshot"
}
],
"tags": [
"Fordham University",
"Jewish schools",
"charter schools",
"harbors",
"magnet schools",
"public schools",
"single sex schools"
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://sk.sagepub.com/books/coaching-educational-leadership/n11.xml",
"items": [
{
"itemType": "bookSection",
"title": "Leaders Coaching Leaders",
"creators": [
{
"lastName": "Robertson",
"firstName": "Jan",
"creatorType": "author"
}
],
"date": "2008",
"bookTitle": "Coaching Educational Leadership: Building Leadership Capacity Through Partnership",
"extra": "DOI: 10.4135/9781446221402",
"libraryCatalog": "SAGE Knowledge",
"pages": "151-160",
"place": "London",
"publisher": "SAGE Publications Ltd",
"url": "http://sk.sagepub.com/books/coaching-educational-leadership/n11.xml",
"attachments": [
{
"title": "SAGE Knowledge Snapshot"
}
],
"tags": [
"coaching",
"educational leadership",
"facilitation",
"facilitators",
"leadership development",
"partnerships",
"skills coaching"
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://sk.sagepub.com/books/the-quick-reference-handbook-for-school-leaders",
"items": [
{
"itemType": "book",
"title": "The Quick-Reference Handbook for School Leaders",
"creators": [],
"date": "2007",
"ISBN": "9781412934503 9781446214596",
"abstractNote": "Distilled from years of NAHT (National Association of Head Teachers) experience of providing advice and guidance for its members in the UK, The Quick-Reference Handbook for School Leaders is a practical guide that provides an answer to the questions \"Where do I start?\" and \"Where do I look for direction?\" Written in an easy-to-read, bulleted format, the handbook is organised around key sections, each part includes brief overviews, checklists and suggestions for further reading. o Organisation and Management - the role of the Headteacher, negligence and liability, media relations, managing conflict and difficult people, effective meetings, inspection, resource management, records and information. o Teaching and Learning - curriculum, learning communities, special education, evaluation, staff development, unions, celebrating success. o Behaviour and Discipline - safe schools, ...",
"extra": "DOI: 10.4135/9781446214596",
"libraryCatalog": "SAGE Knowledge",
"place": "London",
"publisher": "SAGE Publications Ltd",
"url": "http://sk.sagepub.com/books/the-quick-reference-handbook-for-school-leaders",
"attachments": [
{
"title": "SAGE Knowledge Snapshot"
}
],
"tags": [
"curriculum implementation",
"field trips",
"governing bodies",
"headteachers",
"local authorities",
"pupils",
"staff"
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://sk.sagepub.com/reference/dictionary-of-marketing-communications/n1820.xml",
"items": [
{
"itemType": "bookSection",
"title": "Leader",
"creators": [
{
"lastName": "Govoni",
"firstName": "Norman A.",
"creatorType": "author"
}
],
"date": "2004",
"bookTitle": "Dictionary of Marketing Communications",
"extra": "DOI: 10.4135/9781452229669",
"libraryCatalog": "SAGE Knowledge",
"pages": "112-112",
"place": "Thousand Oaks",
"publisher": "SAGE Publications, Inc.",
"url": "http://sk.sagepub.com/reference/dictionary-of-marketing-communications/n1820.xml",
"attachments": [
{
"title": "SAGE Knowledge Snapshot"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://sk.sagepub.com/cqpress/american-political-leaders-1789-2009",
"items": [
{
"itemType": "book",
"title": "American Political Leaders 1789–2009",
"creators": [],
"date": "2010",
"ISBN": "9781604265378 9781452240060",
"abstractNote": "This handy single volume features a wealth of fascinating biographical information on approximately 9,000 of the most important U.S. elected and appointed leaders. Newly updated, it includes key facts on political leaders spanning 220 years of American history. Organized for quick, easy reference, the book contains six chapters in which readers will find the following on presidents, vice presidents, cabinet members, Supreme Court justices, members of Congress, and governors: Basic Facts including all significant biographical data, such as birth and death dates, periods of public service, and party affiliations. Special Information including boxed features and analytical commentary on topics such as presidential disability and succession; religious affiliations of the U.S. presidents and Supreme Court justices; White House hostesses; and women, African Americans, and Hispanic Americans ...",
"extra": "DOI: 10.4135/9781452240060",
"libraryCatalog": "SAGE Knowledge",
"place": "Washington, DC",
"publisher": "CQ Press",
"url": "http://sk.sagepub.com/cqpress/american-political-leaders-1789-2009",
"attachments": [
{
"title": "SAGE Knowledge Snapshot"
}
],
"tags": [
"Supreme Court",
"Supreme Court of Justice",
"executive departments",
"governor",
"senate",
"term limits",
"vice president"
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://sk.sagepub.com/reference/behavioralsciences",
"items": [
{
"itemType": "book",
"title": "The SAGE Glossary of the Social and Behavioral Sciences",
"creators": [
{
"lastName": "Sullivan",
"firstName": "Larry",
"creatorType": "author"
}
],
"date": "2009",
"ISBN": "9781412951432 9781412972024",
"abstractNote": "The SAGE Glossary of the Social and Behavioral Sciences provides college and university students with a highly accessible, curriculum-driven reference work, both in print and on-line, defining the major terms needed to achieve fluency in the social and behavioral sciences. Comprehensive and inclusive, its interdisciplinary scope covers such varied fields as anthropology, communication and media studies, criminal justice, economics, education, geography, human services, management, political science, psychology, and sociology. In addition, while not a discipline, methodology is at the core of these fields and thus receives due and equal consideration. At the same time we strive to be comprehensive and broad in scope, we recognize a need to be compact, accessible, and affordable. Thus the work is organized in A-to-Z fashion and kept to a ...",
"extra": "DOI: 10.4135/9781412972024",
"libraryCatalog": "SAGE Knowledge",
"numberOfVolumes": "3",
"place": "Thousand Oaks, California",
"publisher": "SAGE Publications, Inc.",
"url": "http://sk.sagepub.com/reference/behavioralsciences",
"attachments": [
{
"title": "SAGE Knowledge Snapshot"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://sk.sagepub.com/navigator/accounting-history",
"items": [
{
"itemType": "book",
"title": "Accounting History",
"creators": [
{
"lastName": "Fleischman",
"firstName": "Richard",
"creatorType": "author"
}
],
"date": "2006",
"ISBN": "9781412918701 9781446260777",
"abstractNote": "In the last twenty years accounting history literature has been enriched by the widened examination of historical events from different paradigmatic perspectives. These debates have typically pitted “traditional” historians against “critical” historians.The 47 articles in this three-volume set delineate the basic tenets of these rival paradigms. They include the work of prominent scholars from both camps.Volumes I and II reach across key managerial and financial accounting topics. Volume III draws together literature in which paradigmatic issues have been debated heatedly and those that have reflected a tendency towards consensus and joint venturing.",
"extra": "DOI: 10.4135/9781446260777",
"libraryCatalog": "SAGE Knowledge",
"numberOfVolumes": "3",
"place": "London",
"publisher": "SAGE Publications Ltd",
"url": "http://sk.sagepub.com/navigator/accounting-history",
"attachments": [
{
"title": "SAGE Knowledge Snapshot"
}
],
"tags": [
"France",
"abstracting",
"accounting",
"accounting systems",
"historiography",
"normative theory",
"scientific management"
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Philipp Zumstein^https?://www\.washingtonpost\.com//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2017 Philipp Zumstein
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (ZU.xpathText(doc, '//div[@id="topper-headline-wrapper"]//h1')) {
if (url.includes('/blogs/')) {
return "blogPost";
}
else {
return "newspaperArticle";
}
}
if (ZU.xpathText(doc, '//h1[@data-qa="headline"]')) {
return "newspaperArticle";
}
// For older articles
if (url.includes('/archive/') || url.includes('/wp-dyn/content/')) {
return "newspaperArticle";
}
if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = ZU.xpath(doc, '//div[contains(@class, "pb-feed-headline")]//a[not(contains(@href, "/video/"))]');
for (var i = 0; i < rows.length; i++) {
var href = rows[i].href;
var title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) {
return true;
}
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
return true;
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var type = url.includes('/blogs/') ? 'blogPost' : 'newspaperArticle';
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
// translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
item.itemType = type;
// Old articles
if (url.includes('/wp-dyn/content/')) {
let authors = ZU.xpathText(doc, '//div[@id="byline"]');
if (authors) {
item.creators.push(ZU.cleanAuthor(authors.replace(/^By /, ''), "author"));
}
}
else {
let authors = doc.querySelectorAll('.author-name, a[rel="author"]');
authors = Array.from(authors).map(x => x.textContent.trim());
item.creators = ZU.arrayUnique(authors)
.map(x => ZU.cleanAuthor(x, "author"));
}
item.date = attr(doc, 'meta[name="last_updated_date"]', 'content')
|| ZU.xpathText(doc, '//span[@itemprop="datePublished"]/@content')
|| ZU.xpathText(doc, '//meta[@name="DC.date.issued"]/@content');
if (item.date) {
item.date = ZU.strToISO(item.date);
}
// the automatic added tags here are usually not really helpful
item.tags = [];
item.language = "en-US";
if (type == 'newspaperArticle') {
item.ISSN = "0190-8286";
}
item.section = ZU.xpathText(doc, '(//div[contains(@class, "headline-kicker")])[1]');
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.washingtonpost.com/wp-dyn/content/article/2008/11/07/AR2008110703296.html",
"items": [
{
"itemType": "newspaperArticle",
"title": "Split Over Russia Grows in Europe",
"creators": [
{
"firstName": "Craig",
"lastName": "Whitlock",
"creatorType": "author"
}
],
"date": "2008-11-08",
"ISSN": "0190-8286",
"abstractNote": "BERLIN, Nov. 7 -- Russia sent President-elect Barack Obama a message this week when it threatened to \"neutralize\" the proposed U.S. missile defense shield in Eastern Europe. But analysts said the tough talk from Moscow had another aim as well: to exploit a festering divide within Europe.",
"language": "en-US",
"libraryCatalog": "www.washingtonpost.com",
"url": "http://www.washingtonpost.com/wp-dyn/content/article/2008/11/07/AR2008110703296.html",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.washingtonpost.com/world/national-security/aulaqi-killing-reignites-debate-on-limits-of-executive-power/2011/09/30/gIQAx1bUAL_story.html?hpid=z1",
"items": [
{
"itemType": "newspaperArticle",
"title": "Secret U.S. memo sanctioned killing of Aulaqi",
"creators": [
{
"firstName": "Peter",
"lastName": "Finn",
"creatorType": "author"
}
],
"date": "2011-09-30",
"ISSN": "0190-8286",
"abstractNote": "The Obama administration has refused to reveal the details of its legal rationale for targeting radical cleric Anwar al-Aulaqi.",
"language": "en-US",
"libraryCatalog": "www.washingtonpost.com",
"publicationTitle": "Washington Post",
"section": "National Security",
"url": "https://www.washingtonpost.com/world/national-security/aulaqi-killing-reignites-debate-on-limits-of-executive-power/2011/09/30/gIQAx1bUAL_story.html",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.washingtonpost.com/blogs/ezra-klein/post/jack-abramoffs-guide-to-buying-congressmen/2011/08/25/gIQAoXKLvM_blog.html",
"items": [
{
"itemType": "blogPost",
"title": "Jack Abramoff’s guide to buying congressmen",
"creators": [
{
"firstName": "Ezra",
"lastName": "Klein",
"creatorType": "author"
}
],
"date": "2011-11-07",
"abstractNote": "It’s easy if you know what to do.",
"blogTitle": "Washington Post",
"language": "en-US",
"url": "https://www.washingtonpost.com/blogs/ezra-klein/post/jack-abramoffs-guide-to-buying-congressmen/2011/08/25/gIQAoXKLvM_blog.html",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.washingtonpost.com/archive/entertainment/books/1991/04/07/bombs-in-the-cause-of-brotherhood/fe590e29-8052-4086-b9a9-6fcabdbae4ba/",
"items": [
{
"itemType": "newspaperArticle",
"title": "BOMBS IN THE CAUSE OF BROTHERHOOD",
"creators": [
{
"firstName": "Claudio",
"lastName": "Segre",
"creatorType": "author"
}
],
"date": "1991-04-07",
"ISSN": "0190-8286",
"language": "en-US",
"libraryCatalog": "www.washingtonpost.com",
"publicationTitle": "Washington Post",
"url": "https://www.washingtonpost.com/archive/entertainment/books/1991/04/07/bombs-in-the-cause-of-brotherhood/fe590e29-8052-4086-b9a9-6fcabdbae4ba/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.washingtonpost.com/world/the_americas/coronavirus-brazil-bolsonaro-tests-positive/2020/07/07/5fa71548-c049-11ea-b4f6-cb39cd8940fb_story.html",
"items": [
{
"itemType": "newspaperArticle",
"title": "Brazil’s Bolsonaro tests positive for coronavirus",
"creators": [
{
"firstName": "Terrence",
"lastName": "McCoy",
"creatorType": "author"
}
],
"date": "2020-07-08",
"ISSN": "0190-8286",
"abstractNote": "The populist president said he’s taking hydroxychloroquine to treat the infection. The U.S. ambassador to Brazil has tested negative for covid-19.",
"language": "en-US",
"libraryCatalog": "www.washingtonpost.com",
"publicationTitle": "Washington Post",
"url": "https://www.washingtonpost.com/world/the_americas/coronavirus-brazil-bolsonaro-tests-positive/2020/07/07/5fa71548-c049-11ea-b4f6-cb39cd8940fb_story.html",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.washingtonpost.com/media/2021/06/09/new-yorker-protest/",
"items": [
{
"itemType": "newspaperArticle",
"title": "The New Yorker’s labor dispute reaches Anna Wintour’s doorstep",
"creators": [
{
"firstName": "Jada",
"lastName": "Yuan",
"creatorType": "author"
},
{
"firstName": "Elahe",
"lastName": "Izadi",
"creatorType": "author"
}
],
"date": "2021-06-09",
"ISSN": "0190-8286",
"abstractNote": "Workers for the prestigious Condé Nast-owned magazine are threatening a strike.",
"language": "en-US",
"libraryCatalog": "www.washingtonpost.com",
"publicationTitle": "Washington Post",
"url": "https://www.washingtonpost.com/media/2021/06/09/new-yorker-protest/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
{"dataMode":"xml\/dom"}{"exportNotes":true}50Simon Kornblith, Richard Karnesky, and Abe Jellinekxml/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2019-2021 Simon Kornblith, Richard Karnesky, and Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
var fromMarcGenre = {
// "abstract or summary":XXX,
// "abstract":XXX,
// "summary":XXX,
"art reproduction": "artwork",
article: "journalArticle",
autobiography: "book",
bibliography: "book",
biography: "book",
book: "book",
// "calendar":XXX,
// "catalog":XXX,
chart: "artwork",
"comic or graphic novel": "book",
comic: "book",
"graphic novel": "book",
"comic strip": "artwork",
"conference publication": "conferencePaper",
// "database":XXX,
dictionary: "dictionaryEntry",
diorama: "artwork",
// "directory":XXX,
drama: "book",
encyclopedia: "encyclopediaArticle",
// "essay":XXX,
festschrift: "book",
fiction: "book",
// "filmography":XXX,
filmstrip: "videoRecording",
// "findingaid":XXX,
// "flash card":XXX,
folktale: "book",
// "font":XXX,
// "game":XXX,
graphic: "artwork",
globe: "map",
handbook: "book",
history: "book",
hymnal: "book",
"humor,satire": "book",
humor: "book",
satire: "book",
// "index":XXX,
// "instruction":XXX,
// "interview":XXX,
// "issue":XXX,
journal: "journalArticle",
kit: "artwork",
// "language instruction":XXX,
"law report or digest": "journalArticle",
"law report": "journalArticle",
digest: "journalArticle",
"law digest": "journalArticle",
"legal article": "journalArticle",
"legal case and case notes": "case",
"legal case": "case",
"case notes": "case",
legislation: "statute",
"loose-leaf": "manuscript",
map: "map",
memoir: "book",
"microscope slide": "artwork",
model: "artwork",
// "multivolume monograph":XXX,
novel: "book",
// "numeric data":XXX,
// "offprint":XXX,
"online system or service": "webpage",
"online system": "webpage",
service: "webpage",
"online service": "webpage",
patent: "patent",
periodical: "journalArticle",
picture: "artwork",
// "poetry":XXX,
// "programmed text":XXX,
realia: "artwork",
// "rehearsal":XXX,
// "remote sensing image":XXX,
// "reporting":XXX,
// "review":XXX,
script: "book",
// "series":XXX,
// "short story":XXX,
slide: "artwork",
sound: "audioRecording",
speech: "audioRecording",
"standard or specification": "report",
standard: "report",
// "specification":XXX,
// "statistics":XXX,
// "survey of literature":XXX,
"technical report": "report",
newspaper: "newspaperArticle",
theses: "thesis",
thesis: "thesis",
// "toy":XXX,
transparency: "artwork",
// "treaty":XXX,
videorecording: "videoRecording",
letter: "letter",
"motion picture": "film",
"art original": "artwork",
"web site": "webpage",
yearbook: "book"
};
var toMarcGenre = {
artwork: "art original",
audioRecording: "sound",
bill: "legislation",
blogPost: "web site",
book: "book",
bookSection: "book",
case: "legal case and case notes",
// "computerProgram":XXX,
conferencePaper: "conference publication",
dictionaryEntry: "dictionary",
// "document":XXX,
email: "letter",
encyclopediaArticle: "encyclopedia",
film: "motion picture",
forumPost: "web site",
hearing: "government publication",
instantMessage: "letter",
interview: "interview",
journalArticle: "journal",
letter: "letter",
magazineArticle: "periodical",
// "manuscript":XXX,
map: "map",
newspaperArticle: "newspaper",
patent: "patent",
podcast: "speech",
// "presentation":XXX,
radioBroadcast: "sound",
report: "technical report",
statute: "legislation",
thesis: "thesis",
// "tvBroadcast":XXX,
videoRecording: "videorecording",
webpage: "web site"
};
var dctGenres = {
// "collection":XXX,
// "dataset":XXX,
// "event":XXX,
image: "artwork",
interactiveresource: "webpage",
// "model":XXX,
movingimage: "videoRecording",
// "physical object":XXX,
// "place":XXX,
// "resource":XXX,
// "service":XXX,
software: "computerProgram",
sound: "audioRecording",
stillimage: "artwork"
// "text":XXX
};
var fromTypeOfResource = {
// "text":XXX,
cartographic: "map",
// "notated music":XXX,
"sound recording-musical": "audioRecording",
"sound recording-nonmusical": "audioRecording",
"sound recording": "audioRecording",
"still image": "artwork",
"moving image": "videoRecording",
// "three dimensional object":XXX,
"software, multimedia": "computerProgram"
};
var toTypeOfResource = {
artwork: "still image",
audioRecording: "sound recording",
bill: "text",
blogPost: "software, multimedia",
book: "text",
bookSection: "text",
case: "text",
computerProgram: "software, multimedia",
conferencePaper: "text",
dictionaryEntry: "text",
document: "text",
email: "text",
encyclopediaArticle: "text",
film: "moving image",
forumPost: "text",
hearing: "text",
instantMessage: "text",
interview: "text",
journalArticle: "text",
letter: "text",
magazineArticle: "text",
manuscript: "text",
map: "cartographic",
newspaperArticle: "text",
patent: "text",
podcast: "sound recording-nonmusical",
presentation: "mixed material",
radioBroadcast: "sound recording-nonmusical",
report: "text",
statute: "text",
thesis: "text",
tvBroadcast: "moving image",
videoRecording: "moving image",
webpage: "software, multimedia"
};
var modsTypeRegex = {
// 'artwork':
// 'audioRecording': /\bmusic/i,
// 'bill':
blogPost: /\bblog/i,
// 'book':
// 'bookSection':
// 'case':
// 'computerProgram':
// 'conferencePaper':
// 'dictionaryEntry':
// 'email':
// 'encyclopediaArticle':
// 'film':
// 'forumPost':
// 'hearing':
// 'instantMessage':
// 'interview':
journalArticle: /journal\s*article/i,
// 'letter':
magazineArticle: /magazine\s*article/i,
// 'manuscript':
// 'map':
newspaperArticle: /newspaper\*article/i
// 'patent':
// 'podcast':
// 'presentation':
// 'radioBroadcast':
// 'report':
// 'statute':
// 'thesis':
// 'tvBroadcast':
// 'videoRecording':
// 'webpage':
};
var modsInternetMediaTypes = {
// a ton of types listed at http://www.iana.org/assignments/media-types/index.html
'text/html': 'webpage'
};
var marcRelators = {
aut: "author",
edt: "editor",
ctb: "contributor",
pbd: "seriesEditor",
trl: "translator",
cmp: "composer",
lyr: "wordsBy",
prf: "performer",
cre: "author",
rcp: "recipient"
};
// Item types that are part of a larger work
var partialItemTypes = ["blogPost",
"bookSection",
"conferencePaper",
"dictionaryEntry",
"encyclopediaArticle",
"forumPost",
"journalArticle",
"magazineArticle",
"newspaperArticle",
"webpage"];
// Namespace array for using ZU.xpath
var ns = "http://www.loc.gov/mods/v3",
xns = { m: ns };
function detectImport() {
let doc;
try {
doc = Zotero.getXML().documentElement;
}
catch (err) {
// most likely just not XML
return false;
}
if (!doc) {
return false;
}
return doc.namespaceURI === "http://www.loc.gov/mods/v3" && (doc.tagName.endsWith("modsCollection") || doc.tagName.endsWith("mods"));
}
/**
* If property is defined, this function adds an appropriate XML element as a child of
* parentElement.
* @param {Element} parentElement The parent of the new element to be created.
* @param {String} elementName The name of the new element to be created.
* @param {Any} property The property to inspect. If this property is defined and not
* null, false, or empty, a new element is created whose textContent is its value.
* @param {Object} [attributes] If defined, this object defines attributes to be added
* to the new element.
*/
function mapProperty(parentElement, elementName, property, attributes) {
if (!property && property !== 0) return null;
var doc = parentElement.ownerDocument,
newElement = doc.createElementNS(ns, elementName);
if (attributes) {
for (let i in attributes) {
newElement.setAttribute(i, attributes[i]);
}
}
newElement.appendChild(doc.createTextNode(property));
parentElement.appendChild(newElement);
return newElement;
}
function doExport() {
Zotero.setCharacterSet("utf-8");
var parser = new DOMParser();
var doc = parser.parseFromString('<modsCollection xmlns="http://www.loc.gov/mods/v3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.loc.gov/mods/v3 http://www.loc.gov/standards/mods/v3/mods-3-2.xsd" />', 'application/xml');
var item;
let titleInfo;
while (item = Zotero.nextItem()) { // eslint-disable-line no-cond-assign
// Don't export notes or standalone attachments
if (item.itemType === "note" || item.itemType === "attachment") continue;
var mods = doc.createElementNS(ns, "mods"),
isPartialItem = partialItemTypes.includes(item.itemType),
recordInfo = doc.createElementNS(ns, "recordInfo"),
host = doc.createElementNS(ns, "relatedItem"),
series = doc.createElementNS(ns, "relatedItem"),
topOrHost = (isPartialItem ? host : mods);
/** CORE FIELDS **/
// XML tag titleInfo; object field title
if (item.title) {
titleInfo = doc.createElementNS(ns, "titleInfo");
mapProperty(titleInfo, "title", item.title);
mods.appendChild(titleInfo);
}
if (item.shortTitle) {
titleInfo = doc.createElementNS(ns, "titleInfo");
titleInfo.setAttribute("type", "abbreviated");
mapProperty(titleInfo, "title", item.shortTitle);
mods.appendChild(titleInfo);
}
// XML tag typeOfResource/genre; object field type
mapProperty(mods, "typeOfResource", toTypeOfResource[item.itemType]);
mapProperty(mods, "genre", item.itemType, { authority: "local" });
mapProperty(topOrHost, "genre", toMarcGenre[item.itemType], { authority: "marcgt" });
// XML tag genre; object field thesisType, type
if (item.thesisType) {
mapProperty(mods, "genre", item.thesisType);
}
else if (item.type) {
mapProperty(mods, "genre", item.type);
}
// XML tag name; object field creators
for (let j = 0; j < item.creators.length; j++) {
var creator = item.creators[j],
roleTerm = "";
if (creator.creatorType == "author") {
roleTerm = item.itemType == "letter" ? "cre" : "aut";
}
else if (creator.creatorType == "editor") {
roleTerm = "edt";
}
else if (creator.creatorType == "translator") {
roleTerm = "trl";
}
else if (creator.creatorType == "seriesEditor") {
roleTerm = "pbd";
}
else if (creator.creatorType == "composer") {
roleTerm = "cmp";
}
else if (creator.creatorType == "wordsBy") {
roleTerm = "lyr";
}
else if (creator.creatorType == "performer") {
roleTerm = "prf";
}
else if (creator.creatorType == "recipient") {
roleTerm = "rcp";
}
else {
roleTerm = "ctb";
}
const name = doc.createElementNS(ns, "name");
if (creator.fieldMode == 1) {
name.setAttribute("type", "corporate");
mapProperty(name, "namePart", creator.lastName);
}
else {
name.setAttribute("type", "personal");
mapProperty(name, "namePart", creator.lastName, { type: "family" });
mapProperty(name, "namePart", creator.firstName, { type: "given" });
}
var role = doc.createElementNS(ns, "role");
mapProperty(role, "roleTerm", roleTerm,
{ type: "code", authority: "marcrelator" });
name.appendChild(role);
var creatorParent = (creator.creatorType === "seriesEditor")
? series
: ((creator.creatorType === "editor") ? topOrHost : mods);
creatorParent.appendChild(name);
}
// XML tag recordInfo.recordOrigin; used to store our generator note
// mods.recordInfo.recordOrigin = "Zotero for Firefox "+Zotero.Utilities.getVersion();
/** FIELDS ON NEARLY EVERYTHING BUT NOT A PART OF THE CORE **/
// XML tag recordInfo.recordContentSource; object field source
mapProperty(recordInfo, "recordContentSource", item.libraryCatalog);
// XML tag accessCondition; object field rights
mapProperty(mods, "accessCondition", item.rights);
/** SUPPLEMENTAL FIELDS **/
var part = doc.createElementNS(ns, "part");
// XML tag detail; object field volume
const details = ["volume", "issue", "section"];
for (let i = 0; i < details.length; i++) {
if (item[details[i]] || item[details[i]] === 0) {
const detail = doc.createElementNS(ns, "detail"),
number = doc.createElementNS(ns, "number");
detail.setAttribute("type", details[i]);
number.appendChild(doc.createTextNode(item[details[i]]));
detail.appendChild(number);
part.appendChild(detail);
}
}
// XML tag detail; object field pages
if (item.pages) {
var extent = doc.createElementNS(ns, "extent");
extent.setAttribute("unit", "pages");
if (item.pages.search(/^\d+[-–]\d+$/) != -1) {
var range = ZU.getPageRange(item.pages);
mapProperty(extent, "start", range[0]);
mapProperty(extent, "end", range[1]);
}
else {
extent.setAttribute("unit", "pages");
mapProperty(extent, "list", item.pages);
}
part.appendChild(extent);
}
// Assign part if something was assigned
if (part.hasChildNodes()) {
// For a journal article, bookSection, etc., the part is the host
topOrHost.appendChild(part);
}
var originInfo = doc.createElementNS(ns, "originInfo");
// XML tag originInfo; object fields edition, place, publisher, year, date
mapProperty(originInfo, "edition", item.edition);
if (item.place) {
var place = doc.createElementNS(ns, "place"),
placeTerm = doc.createElementNS(ns, "placeTerm");
placeTerm.setAttribute("type", "text");
placeTerm.appendChild(doc.createTextNode(item.place));
place.appendChild(placeTerm);
originInfo.appendChild(place);
}
if (item.publisher) {
mapProperty(originInfo, "publisher", item.publisher);
}
else if (item.distributor) {
mapProperty(originInfo, "distributor", item.publisher);
}
if (item.date) {
let dateType;
if (["book", "bookSection"].includes(item.itemType)) {
// Assume year is copyright date
dateType = "copyrightDate";
}
else if (["journalArticle", "magazineArticle", "newspaperArticle"].includes(item.itemType)) {
// Assume date is date issued
dateType = "dateIssued";
}
else {
// Assume date is date created
dateType = "dateCreated";
}
mapProperty(originInfo, dateType, item.date);
}
if (item.numPages) {
var physicalDescription = doc.createElementNS(ns, "physicalDescription");
mapProperty(physicalDescription, "extent", item.numPages + " p.");
mods.appendChild(physicalDescription);
}
if (isPartialItem) {
// eXist Solutions points out that these types are more often
// continuing than not & will use this internally.
// Perhaps comment this out in the main distribution, though.
if (["journalArticle", "magazineArticle", "newspaperArticle"].includes(item.itemType)) {
mapProperty(originInfo, "issuance", "continuing");
}
else if (["bookSection",
"conferencePaper",
"dictionaryEntry",
"encyclopediaArticle"].includes(item.itemType)) {
mapProperty(originInfo, "issuance", "monographic");
}
}
else {
// eXist Solutions points out that most types are more often
// monographic than not & will use this internally.
// Perhaps comment this out in the main distribution, though.
mapProperty(originInfo, "issuance", "monographic");
}
if (originInfo.hasChildNodes()) {
// For a journal article, bookSection, etc., the part is the host
topOrHost.appendChild(originInfo);
}
// XML tag identifier; object fields ISBN, ISSN
mapProperty(topOrHost, "identifier", item.ISBN, { type: "isbn" });
mapProperty(topOrHost, "identifier", item.ISSN, { type: "issn" });
mapProperty(mods, "identifier", item.DOI, { type: "doi" });
// XML tag relatedItem.name; object field conferenceName
if (item.conferenceName) {
const name = doc.createElementNS(ns, "name");
name.setAttribute("type", "conference");
mapProperty(name, "namePart", item.conferenceName);
}
// XML tag relatedItem.titleInfo; object field publication
if (item.publicationTitle) {
titleInfo = doc.createElementNS(ns, "titleInfo");
mapProperty(titleInfo, "title", item.publicationTitle);
host.appendChild(titleInfo);
}
// XML tag relatedItem.titleInfo; object field journalAbbreviation
if (item.journalAbbreviation) {
titleInfo = doc.createElementNS(ns, "titleInfo");
titleInfo.setAttribute("type", "abbreviated");
mapProperty(titleInfo, "title", item.journalAbbreviation);
host.appendChild(titleInfo);
}
// XML tag classification; object field callNumber
mapProperty(topOrHost, "classification", item.callNumber);
// XML tag location.url; object field url
if (item.url) {
const location = doc.createElementNS(ns, "location");
var url = mapProperty(location, "url", item.url, { usage: "primary display" });
if (url && item.accessDate) url.setAttribute("dateLastAccessed", item.accessDate);
mods.appendChild(location);
}
// XML tag location.physicalLocation; object field archiveLocation
if (item.archiveLocation) {
const location = doc.createElementNS(ns, "location");
mapProperty(location, "physicalLocation", item.archiveLocation);
topOrHost.appendChild(location);
}
// XML tag abstract; object field abstractNote
mapProperty(mods, "abstract", item.abstractNote);
// XML tag series/titleInfo; object field series, seriesTitle, seriesText, seriesNumber
titleInfo = doc.createElementNS(ns, "titleInfo");
mapProperty(titleInfo, "title", item.series);
mapProperty(titleInfo, "title", item.seriesTitle);
mapProperty(titleInfo, "subTitle", item.seriesText);
if (titleInfo.hasChildNodes()) series.appendChild(titleInfo);
if (item.seriesNumber) {
const seriesPart = doc.createElementNS(ns, "part"),
detail = doc.createElementNS(ns, "detail"),
number = doc.createElementNS(ns, "number");
detail.setAttribute("type", "volume");
number.appendChild(doc.createTextNode(item.seriesNumber));
detail.appendChild(number);
seriesPart.appendChild(detail);
series.appendChild(seriesPart);
}
/** NOTES **/
if (Zotero.getOption("exportNotes")) {
for (let j = 0; j < item.notes.length; j++) {
mapProperty(mods, "note", item.notes[j].note);
}
}
/** TAGS **/
for (let j = 0; j < item.tags.length; j++) {
var subject = doc.createElementNS(ns, "subject"),
topic = doc.createElementNS(ns, "topic");
topic.appendChild(doc.createTextNode(item.tags[j].tag));
subject.appendChild(topic);
mods.appendChild(subject);
}
/** LANGUAGE **/
if (item.language) {
var language = doc.createElementNS(ns, "language");
mapProperty(language, "languageTerm", item.language, { type: "text" });
mods.appendChild(language);
}
/** EXTRA->NOTE **/
mapProperty(mods, "note", item.extra);
if (recordInfo.hasChildNodes()) mods.appendChild(recordInfo);
if (host.hasChildNodes()) {
host.setAttribute("type", "host");
mods.appendChild(host);
}
if (series.hasChildNodes()) {
series.setAttribute("type", "series");
topOrHost.appendChild(series);
}
doc.documentElement.appendChild(mods);
}
Zotero.write('<?xml version="1.0"?>\n');
var serializer = new XMLSerializer();
Zotero.write(serializer.serializeToString(doc));
}
function processTitleInfo(titleInfo) {
var title = ZU.xpathText(titleInfo, "m:title[1]", xns).trim();
var subtitle = ZU.xpathText(titleInfo, "m:subTitle[1]", xns);
if (subtitle) title = title.replace(/:$/, '') + ": " + subtitle.trim();
var nonSort = ZU.xpathText(titleInfo, "m:nonSort[1]", xns);
if (nonSort) title = nonSort.trim() + " " + title;
var partNumber = ZU.xpathText(titleInfo, "m:partNumber[1]", xns);
var partName = ZU.xpathText(titleInfo, "m:partName[1]", xns);
if (partNumber && partName) title = title.replace(/\.$/, '') + ". " + partNumber.trim() + ": " + partName.trim();
else if (partNumber) title = title.replace(/\.$/, '') + ". " + partNumber.trim();
else if (partName) title = title.replace(/\.$/, '') + ". " + partName.trim();
return title;
}
function processTitle(contextElement) {
// Try to find a titleInfo element with no type specified and a title element as a
// child
var titleElements = ZU.xpath(contextElement, "m:titleInfo[not(@type)][m:title][1]", xns);
if (titleElements.length) return processTitleInfo(titleElements[0]);
// That failed, so look for any titleInfo element without no type secified
var title = ZU.xpathText(contextElement, "m:titleInfo[not(@type)][1]", xns);
if (title) return title;
// That failed, so just go for the first title
return ZU.xpathText(contextElement, "m:titleInfo[1]", xns);
}
function processGenre(contextElement) {
// Try to get itemType by treating local genre as Zotero item type
var genre = ZU.xpath(contextElement, 'm:genre[@authority="local"]', xns);
for (let i = 0; i < genre.length; i++) {
const genreStr = genre[i].textContent;
if (Zotero.Utilities.itemTypeExists(genreStr)) return genreStr;
}
// Try to get MARC genre and convert to an item type
genre = ZU.xpath(contextElement, 'm:genre[@authority="marcgt"] | m:genre[@authority="marc"]', xns);
for (let i = 0; i < genre.length; i++) {
const genreStr = genre[i].textContent;
if (fromMarcGenre[genreStr]) return fromMarcGenre[genreStr];
}
// Try to get DCT genre and convert to an item type
genre = ZU.xpath(contextElement, 'm:genre[@authority="dct"]', xns);
for (let i = 0; i < genre.length; i++) {
const genreStr = genre[i].textContent.replace(/\s+/g, "");
if (dctGenres[genreStr]) return dctGenres[genreStr];
}
// Try unlabeled genres
genre = ZU.xpath(contextElement, 'm:genre', xns);
for (let i = 0; i < genre.length; i++) {
const genreStr = genre[i].textContent;
// Zotero
if (Zotero.Utilities.itemTypeExists(genreStr)) return genreStr;
// MARC
if (fromMarcGenre[genreStr]) return fromMarcGenre[genreStr];
// DCT
var dctGenreStr = genreStr.replace(/\s+/g, "");
if (dctGenres[dctGenreStr]) return dctGenres[dctGenreStr];
// Try regexps
for (let type in modsTypeRegex) {
if (modsTypeRegex[type].exec(genreStr)) return type;
}
}
return undefined;
}
function processItemType(contextElement) {
var type = processGenre(contextElement);
if (type) return type;
// Try to get type information from typeOfResource
var typeOfResource = ZU.xpath(contextElement, 'm:typeOfResource', xns);
for (let i = 0; i < typeOfResource.length; i++) {
var typeOfResourceStr = typeOfResource[i].textContent.trim();
// Try list
if (fromTypeOfResource[typeOfResourceStr]) {
return fromTypeOfResource[typeOfResourceStr];
}
// Try regexps
for (let type in modsTypeRegex) {
if (modsTypeRegex[type].exec(typeOfResourceStr)) return type;
}
}
// Try to get genre data from host
var hosts = ZU.xpath(contextElement, 'm:relatedItem[@type="host"]', xns);
for (let i = 0; i < hosts.length; i++) {
type = processGenre(hosts[i]);
if (type) return type;
}
// Figure out if it's a periodical
var periodical = ZU.xpath(contextElement,
'm:relatedItem[@type="host"]/m:originInfo/m:issuance[text()="continuing" or text()="serial"]',
xns).length;
// Try physicalDescription/internetMediaType
var internetMediaTypes = ZU.xpath(contextElement, 'm:physicalDescription/m:internetMediaType', xns);
for (let i = 0; i < internetMediaTypes.length; i++) {
var internetMediaTypeStr = internetMediaTypes[i].textContent.trim();
if (modsInternetMediaTypes[internetMediaTypeStr]) {
return modsInternetMediaTypes[internetMediaTypeStr];
}
}
var isLetter = !!ZU.xpath(contextElement,
'm:name/m:role/m:roleTerm[@type="code"][contains(@authority, "marc") or contains(@authority, "MARC")][text()="rcp"]',
xns).length;
if (isLetter) {
return 'letter';
}
// for US congressional publications
// (these are nonstandard extension fields)
var isBill = !!ZU.xpath(contextElement, '//m:billNumber', xns).length;
if (isBill) {
return 'bill';
}
var isHearing = !!ZU.xpath(contextElement, '//m:congCommittee', xns).length;
if (isHearing) {
return 'hearing';
}
// As a last resort, if it has a host, let's set it to book chapter, so we can import
// more info. Otherwise default to document
if (hosts.length) {
if (periodical) return 'journalArticle';
return 'bookSection';
}
return "document";
}
function processCreator(name, itemType, defaultCreatorType) {
var creator = {};
creator.firstName = ZU.xpathText(name, 'm:namePart[@type="given"]', xns, " ") || undefined;
creator.lastName = ZU.xpathText(name, 'm:namePart[@type="family"]', xns, " ");
if (!creator.lastName) {
var isPersonalName = name.getAttribute("type") === "personal",
backupName = ZU.xpathText(name, 'm:namePart[not(@type="date")][not(@type="termsOfAddress")]', xns, (isPersonalName ? " " : ": "));
if (!backupName) return null;
if (isPersonalName) {
let cleanedBackupName = backupName.replace(/[[(][^A-Za-z]*[\])]/g, '');
creator = ZU.cleanAuthor(cleanedBackupName,
"author", cleanedBackupName.includes(','));
delete creator.creatorType;
}
else {
creator.lastName = ZU.trimInternal(backupName);
creator.fieldMode = 1;
}
}
if (!creator.lastName) return null;
// Look for roles
let roles = ZU.xpath(name, 'm:role/m:roleTerm[@type="text" or not(@type)]', xns);
var validCreatorsForItemType = ZU.getCreatorsForType(itemType);
for (let role of roles) {
const roleStr = role.textContent.toLowerCase();
if (validCreatorsForItemType.includes(roleStr)) {
creator.creatorType = roleStr;
}
}
// The below logic is going to want to make the committee, etc., of a bill into "sponsors"
// (MODS data from govinfo doesn't often [ever?] include the actual sponsors) - so let's stop
// that from happening while keeping the info
if (itemType == 'bill' && name.getAttribute('type') == 'corporate') {
creator.creatorType = 'contributor'; // Doesn't get cited
}
// we want to exclude names with no role other than publisher, distributor,
// etc., because they aren't really creators in Zotero's sense of the term
// (and they'll end up in other fields later). so we'll keep track of whether
// we've encountered one of [pbl, dst] and *no other* relator types, and if
// we do, we throw the creator away.
let onlyPublisher;
if (!creator.creatorType) {
// Look for MARC roles
roles = ZU.xpath(name, 'm:role/m:roleTerm[@type="code"][contains(@authority, "marc") or contains(@authority, "MARC")]', xns);
for (let i = 0; i < roles.length; i++) {
const roleStr = roles[i].textContent.toLowerCase();
if (roleStr == 'pbl' || roleStr == 'dst') {
if (onlyPublisher === undefined) {
onlyPublisher = true;
}
}
else {
onlyPublisher = false;
}
let marcType = marcRelators[roleStr];
if (marcType && validCreatorsForItemType.includes(marcType)) {
creator.creatorType = marcRelators[roleStr];
}
}
if (!creator.creatorType) creator.creatorType = defaultCreatorType;
}
if (onlyPublisher) {
return null;
}
return creator;
}
function processCreators(contextElement, newItem, defaultCreatorType) {
var names = ZU.xpath(contextElement, 'm:name', xns);
for (let i = 0; i < names.length; i++) {
var creator = processCreator(names[i], newItem.itemType, defaultCreatorType);
if (creator) newItem.creators.push(creator);
}
}
function processExtent(extent, newItem) {
// try to parse extent according to
// http://www.loc.gov/standards/mods/v3/mods-userguide-elements.html#extent
// i.e. http://www.loc.gov/marc/bibliographic/bd300.html
// and http://www.loc.gov/marc/bibliographic/bd306.html
var extentRe = new RegExp(
'^(.*?)(?=(?:[:;]|$))' // extent [1]
+ '(?::.*?(?=(?:;|$)))?' // other physical details
+ '(?:;(.*))?' // dimensions [2]
+ '$' // make sure to capture the rest of the line
);
var ma = extentRe.exec(extent);
if (ma && ma[1]) {
// drop supplemental info (i.e. everything after +)
if (ma[1].includes('+')) {
ma[1] = ma[1].slice(0, ma[1].indexOf('+'));
}
// pages
if (!newItem.pages && ZU.fieldIsValidForType('pages', newItem.itemType)) {
const pages = ma[1].match(/\bp(?:ages?)?\.?\s+([a-z]?\d+(?:\s*-\s*[a-z]?\d+))/i);
if (pages) {
newItem.pages = pages[1].replace(/\s+/, '');
}
}
// volume
if (!newItem.volume && ZU.fieldIsValidForType('volume', newItem.itemType)) {
var volume = ma[1].match(/\bv(?:ol(?:ume)?)?\.?\s+(\d+)/i);
if (volume) {
newItem.volume = volume[1];
}
}
// issue
if (!newItem.issue && ZU.fieldIsValidForType('issue', newItem.itemType)) {
var issue = ma[1].match(/\b(?:no?|iss(?:ue)?)\.?\s+(\d+)/i);
if (issue) {
newItem.issue = issue[1];
}
}
// numPages
if (!newItem.numPages && ZU.fieldIsValidForType('numPages', newItem.itemType)) {
const pages = ma[1].match(/(\d+)\s*p(?:ages?)?\b/i);
if (pages) {
newItem.numPages = pages[1];
}
}
// numberOfVolumes
if (!newItem.numberOfVolumes && ZU.fieldIsValidForType('numberOfVolumes', newItem.itemType)) {
// includes volumes, scores, sound (discs, but I think there could be others)
// video (cassette, but could have others)
var nVol = ma[1].match(/(\d+)\s+(?:v(?:olumes?)?|scores?|sound|video)\b/i);
if (nVol) {
newItem.numberOfVolumes = nVol[1];
}
}
// runningTime
if (!newItem.runningTime && ZU.fieldIsValidForType('runningTime', newItem.itemType)) {
// several possible formats:
var rt;
// 002016 = 20 min., 16 sec.
if (rt = ma[1].match(/\b(\d{2,3})(\d{2})(\d{2})\b/)) { // eslint-disable-line no-cond-assign
newItem.runningTime = rt[1] + ':' + rt[2] + ':' + rt[3];
// (ca. 124 min.)
}
// eslint-disable-next-line no-cond-assign
else if (rt = ma[1].match(/((\d+)\s*((?:hours?|hrs?)|(?:minutes?|mins?)|(?:seconds?|secs?))\.?\s+)?((\d+)\s*((?:hours?|hrs?)|(?:minutes?|mins?)|(?:seconds?|secs?))\.?\s+)?((\d+)\s*((?:hours?|hrs?)|(?:minutes?|mins?)|(?:seconds?|secs?))\.?)/i)) {
var hrs = 0, mins = 0, secs = 0;
for (let i = 2; i < 7; i += 2) {
if (!rt[i]) continue;
switch (rt[i].charAt(0).toLowerCase()) {
case 'h':
hrs = rt[i - 1];
break;
case 'm':
mins = rt[i - 1];
break;
case 's':
secs = rt[i - 1];
break;
}
}
if (secs > 59) {
mins += secs / 60;
secs %= 60;
}
if (secs < 10) {
secs = '0' + secs;
}
if (mins > 59) {
hrs += hrs / 60;
mins %= 60;
}
if (mins < 10) {
mins = '0' + mins;
}
newItem.runningTime = ((hrs * 1) ? hrs + ':' : '') + mins + ':' + secs;
// (46:00)
}
else if (rt = ma[1].match(/\b(\d{0,3}:\d{1,2}:\d{2})\b/)) { // eslint-disable-line no-cond-assign
newItem.runningTime = rt[1];
}
}
}
// dimensions: artworkSize
// only part of artwork right now, but maybe will be in other types in the future
if (!newItem.artworkSize && ma && ma[2] && ZU.fieldIsValidForType('artworkSize', newItem.itemType)) {
// drop supplemental info (i.e. everything after +)
if (ma[2].includes('+')) {
ma[2] = ma[2].slice(0, ma[2].indexOf('+'));
}
// 26 cm. or 33 x 15 cm. or 1/2 in. or 1 1/2 x 15/16 in.
var dim = ma[2].match(/(?:(?:(?:\d+\s+)?\d+\/)?\d+\s*x\s*)?(?:(?:\d+\s+)?\d+\/)?\d+\s*(?:cm|mm|m|in|ft)\./i);
if (dim) newItem.artworkSize = dim[0];
}
}
function processIdentifiers(contextElement, newItem) {
var isbnNodes = ZU.xpath(contextElement, './/m:identifier[@type="isbn"]', xns),
isbns = [];
for (let i = 0; i < isbnNodes.length; i++) {
const m = isbnNodes[i].textContent.replace(/\s*-\s*/g, '').match(/(?:[\dX]{10}|\d{13})/i);
if (m) isbns.push(m[0]);
}
if (isbns.length) newItem.ISBN = isbns.join(", ");
var issnNodes = ZU.xpath(contextElement, './/m:identifier[@type="issn"]', xns),
issns = [];
for (let i = 0; i < issnNodes.length; i++) {
const m = issnNodes[i].textContent.match(/\b\d{4}\s*-?\s*\d{4}\b/i);
if (m) issns.push(m[0]);
}
if (issns.length) newItem.ISSN = issns.join(", ");
newItem.DOI = ZU.xpathText(contextElement, 'm:identifier[@type="doi"]', xns);
}
function getFirstResult(contextNode, xpaths) {
for (let i = 0; i < xpaths.length; i++) {
var results = ZU.xpath(contextNode, xpaths[i], xns);
if (results.length) return results[0].textContent;
}
return null;
}
function doImport() {
var xml = Zotero.getXML();
var modsElements = ZU.xpath(xml, "/m:mods | /m:modsCollection/m:mods", xns);
for (let iModsElements = 0, nModsElements = modsElements.length;
iModsElements < nModsElements; iModsElements++) {
var modsElement = modsElements[iModsElements],
newItem = new Zotero.Item();
// title
newItem.title = processTitle(modsElement);
// shortTitle
var abbreviatedTitle = ZU.xpath(modsElement, 'm:titleInfo[@type="abbreviated"]', xns);
if (abbreviatedTitle.length) {
newItem.shortTitle = processTitleInfo(abbreviatedTitle[0]);
}
// itemType
newItem.itemType = processItemType(modsElement);
// TODO: thesisType, type
// creators
let defaultCreatorType = ZU.getCreatorsForType(newItem.itemType)[0];
processCreators(modsElement, newItem, defaultCreatorType);
// source
newItem.source = ZU.xpathText(modsElement, 'm:recordInfo/m:recordContentSource', xns);
// accessionNumber
newItem.accessionNumber = ZU.xpathText(modsElement, 'm:recordInfo/m:recordIdentifier', xns);
// rights
newItem.rights = ZU.xpathText(modsElement, 'm:accessCondition', xns);
/** US GOVERNMENT EXTENSIONS
* We very likely can add more here**/
if (newItem.itemType == 'hearing' || newItem.itemType == 'bill') {
// Common elements
newItem.committee = ZU.xpathText(modsElement,
'm:extension/m:congCommittee/m:name[@type="authority-standard"]', xns);
let chamber = ZU.xpathText(modsElement,
'm:extension/m:chamber|m:extension/m:originChamber', xns);
if (chamber) {
newItem.legislativeBody = ZU.capitalizeTitle(chamber, true);
}
newItem.session = ZU.xpathText(modsElement,
'm:extension/m:congress', xns); // this is not great
newItem.documentNumber = ZU.xpathText(modsElement,
'm:extension/m:number', xns);
// Specific for bill
if (newItem.itemType == 'bill') {
// sponsors aren't in MODS, imported creators are useless
newItem.creators = [];
newItem.shortTitle = ZU.xpathText(modsElement,
'm:extension/m:chamber|m:extension/m:shortTitle[1]', xns);
if (newItem.shortTitle) {
// The actual titles of bills are lengthy and never used; bills include
// official short titles
newItem.abstractNote = newItem.title;
newItem.title = newItem.shortTitle;
}
let billNumber = ZU.xpathText(modsElement,
'm:extension/m:chamber|m:extension/m:billNumber', xns);
let billType = ZU.xpathText(modsElement,
'm:extension/m:chamber|m:extension/m:docClass', xns);
var billTypeMap = { // From Indigobook: https://law.resource.org/pub/us/code/blue/IndigoBook.html#R21
hr: "H.R.",
s: "S.",
hjres: "H.R.J. Res.",
sjres: "S.J. Res.",
hconres: "H.R. Con. R.",
sconres: "S. Con. R.",
hres: "H.R. Res.",
sres: "S. Res."
};
if (billTypeMap[billType]) {
newItem.billNumber = billTypeMap[billType] + " " + billNumber;
}
else {
newItem.billNumber = billNumber;
}
if (ZU.xpath(modsElement, 'm:extension/m:USCode', xns).length) {
let usc = ZU.xpath(modsElement, 'm:extension/m:USCode', xns)[0];
newItem.code = 'U.S.C.';
newItem.codeVolume = usc.getAttribute('title');
newItem.codePages = [...usc.querySelectorAll('section')].map(e => e.getAttribute('number')).join(', ');
}
// remove other useless info
delete newItem.accessionNumber;
}
}
/** SUPPLEMENTAL FIELDS **/
var part = [], originInfo = [];
// host
var hostNodes = ZU.xpath(modsElement, 'm:relatedItem[@type="host"]', xns);
for (let i = 0; i < hostNodes.length; i++) {
var host = hostNodes[i];
// publicationTitle
if (!newItem.publicationTitle) newItem.publicationTitle = processTitle(host);
// journalAbbreviation
if (!newItem.journalAbbreviation) {
const titleInfo = ZU.xpath(host, 'm:titleInfo[@type="abbreviated"]', xns);
if (titleInfo.length) {
newItem.journalAbbreviation = processTitleInfo(titleInfo[0]);
}
}
// creators of host item will be evaluated by their role info
// and only if this is missing then they are connected by a generic
// contributor role
processCreators(host, newItem, "contributor");
// identifiers
processIdentifiers(host, newItem);
part = part.concat(ZU.xpath(host, 'm:part', xns));
originInfo = originInfo.concat(ZU.xpath(host, 'm:originInfo', xns));
}
if (!newItem.publicationTitle) newItem.publicationTitle = newItem.journalAbbreviation;
// series
var seriesNodes = ZU.xpath(modsElement, './/m:relatedItem[@type="series"]', xns);
for (let i = 0; i < seriesNodes.length; i++) {
var seriesNode = seriesNodes[i];
var series = ZU.xpathText(seriesNode, 'm:titleInfo/m:title', xns);
if (ZU.fieldIsValidForType('series', newItem.itemType)) {
newItem.series = series;
}
else if (ZU.fieldIsValidForType('seriesTitle', newItem.itemType)) {
newItem.seriesTitle = series;
}
if (!newItem.seriesText) {
newItem.seriesText = ZU.xpathText(seriesNode, 'm:titleInfo/m:subTitle', xns);
}
if (!newItem.seriesNumber) {
newItem.seriesNumber = getFirstResult(seriesNode,
['m:part/m:detail[@type="volume"]/m:number', 'm:titleInfo/m:partNumber']);
}
processCreators(seriesNode, newItem, "seriesEditor");
}
// Add part and originInfo from main entry
part = part.concat(ZU.xpath(modsElement, 'm:part', xns));
originInfo = originInfo.concat(ZU.xpath(modsElement, 'm:originInfo', xns));
if (part.length) {
// volume, issue, section
var details = ["volume", "issue", "section"];
for (let i = 0; i < details.length; i++) {
var detail = details[i];
newItem[detail] = getFirstResult(part, ['m:detail[@type="' + detail + '"]/m:number',
'm:detail[@type="' + detail + '"]']);
}
// pages and other extent information
const extents = ZU.xpath(part, "m:extent", xns);
for (let i = 0; i < extents.length; i++) {
var extent = extents[i],
unit = extent.getAttribute("unit");
if (unit === "pages" || unit === "page") {
if (newItem.pages) continue;
var pagesStart = ZU.xpathText(extent, "m:start[1]", xns);
var pagesEnd = ZU.xpathText(extent, "m:end[1]", xns);
if (pagesStart || pagesEnd) {
if (pagesStart == pagesEnd) {
newItem.pages = pagesStart;
}
else if (pagesStart && pagesEnd) {
newItem.pages = pagesStart + "-" + pagesEnd;
}
else {
newItem.pages = pagesStart + pagesEnd;
}
}
}
else {
processExtent(extent.textContent, newItem);
}
}
newItem.date = getFirstResult(part, ['m:date[not(@point="end")][@encoding]',
'm:date[not(@point="end")]',
'm:date']);
}
// physical description
const extents = ZU.xpath(modsElement, "m:physicalDescription/m:extent", xns);
for (let i = 0; i < extents.length; i++) {
processExtent(extents[i].textContent, newItem);
}
// identifier
processIdentifiers(modsElement, newItem);
if (originInfo.length) {
// edition
var editionNodes = ZU.xpath(originInfo, 'm:edition', xns);
if (editionNodes.length) newItem.edition = editionNodes[0].textContent;
// place
var placeNodes = ZU.xpath(originInfo, 'm:place/m:placeTerm[@type="text"]', xns);
if (placeNodes.length) newItem.place = placeNodes[0].textContent;
// publisher/distributor
var publisherNodes = ZU.xpath(originInfo, 'm:publisher', xns);
if (publisherNodes.length) {
newItem.publisher = publisherNodes[0].textContent;
if (newItem.itemType == "webpage" && !newItem.publicationTitle) {
newItem.publicationTitle = newItem.publisher;
}
}
// date
newItem.date = getFirstResult(originInfo, ['m:copyrightDate[@encoding]',
'm:copyrightDate',
'm:dateIssued[not(@point="end")][@encoding]',
'm:dateIssued[not(@point="end")]',
'm:dateIssued',
'm:dateCreated[@encoding]',
'm:dateCreated']) || newItem.date;
// lastModified
newItem.lastModified = getFirstResult(originInfo, ['m:dateModified[@encoding]',
'm:dateModified']);
// accessDate
newItem.accessDate = getFirstResult(originInfo, ['m:dateCaptured[@encoding]',
'm:dateCaptured[not(@encoding)]']);
}
// call number
newItem.callNumber = ZU.xpathText(modsElement, 'm:classification', xns);
// archiveLocation
newItem.archiveLocation = ZU.xpathText(modsElement, './/m:location/m:physicalLocation', xns, "; ");
// attachments and url
var urlNodes = ZU.xpath(modsElement, 'm:location/m:url', xns);
for (let urlNode of urlNodes) {
var access = urlNode.getAttribute("access"),
usage = urlNode.getAttribute("usage");
if (access === "raw object") {
var attachment = {
title: (urlNode.getAttribute("displayLabel") || "Attachment"),
url: urlNode.textContent
};
if (attachment.url.substr(-4) === ".pdf") {
attachment.mimeType = "application/pdf";
}
else if (/\.html?$/.test(attachment.url)) {
attachment.mimeType = "text/html";
}
else if (/\.jpe?g$/.test(attachment.url)) {
attachment.mimeType = "image/jpeg";
}
else if (/\.png$/.test(attachment.url)) {
attachment.mimeType = "image/png";
}
newItem.attachments.push(attachment);
}
if ((!newItem.url || usage === "primary" || usage === "primary display")
&& access !== "preview") {
newItem.url = urlNode.textContent;
}
if (!newItem.accessDate) {
newItem.accessDate = urlNode.getAttribute("dateLastAccessed");
}
}
// abstract
newItem.abstractNote = ZU.xpathText(modsElement, 'm:abstract', xns, "\n\n");
/** NOTES **/
var noteNodes = ZU.xpath(modsElement, 'm:note', xns);
for (let i = 0; i < noteNodes.length; i++) {
var note = noteNodes[i];
newItem.notes.push({ note:
(note.hasAttribute("type") ? note.getAttribute("type") + ': ' : '')
+ note.textContent });
}
// ToC - goes into notes
var tocNodes = ZU.xpath(modsElement, 'm:tableOfContents', xns);
for (let i = 0; i < tocNodes.length; i++) {
newItem.notes.push({ note: 'Table of Contents: ' + tocNodes[i].textContent });
}
/** TAGS **/
var tagNodes = ZU.xpath(modsElement, 'm:subject/m:topic', xns);
for (let i = 0; i < tagNodes.length; i++) {
newItem.tags.push(ZU.trimInternal(tagNodes[i].textContent));
}
// scale
if (ZU.fieldIsValidForType('scale', newItem.itemType)) {
var scale = ZU.xpathText(modsElement, 'm:subject/m:cartographics/m:scale', xns);
if (scale) {
var m = scale.match(/1\s*:\s*\d+(?:,\d+)/);
if (m) newItem.scale = m[0];
}
}
// Language
// create an array of languages
var languageNames = [];
var languageCodes = [];
var languageNodes = ZU.xpath(modsElement, 'm:language', xns);
for (let languageNode of languageNodes) {
var languageTerms = ZU.xpath(languageNode, 'm:languageTerm', xns);
if (!languageTerms.length
&& languageNode.childNodes.length === 1
&& languageNode.firstChild.nodeType === 3 /* Node.TEXT_NODE*/) {
languageCodes.push(languageNode.firstChild.nodeValue);
continue;
}
for (let term of languageTerms) {
var termType = term.getAttribute("type");
if (termType === "text") {
languageNames.push(term.textContent);
}
else if (termType === "code" || term.hasAttribute("authority")) {
languageCodes.push(term.textContent);
}
}
}
// prefer language codes to avoid localized language names in metadata
let languages = languageCodes.length ? languageCodes : languageNames;
// join the list separated by semicolons & add it to zotero item
newItem.language = languages.join('; ');
Zotero.setProgress(iModsElements / nModsElements * 100);
newItem.complete();
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "import",
"input": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<modsCollection xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://www.loc.gov/mods/v3\" xsi:schemaLocation=\"http://www.loc.gov/mods/v3 http://www.loc.gov/standards/mods/v3/mods-3-3.xsd\">\n<mods version=\"3.3\">\n <titleInfo>\n \t \t<title>FranUlmer.com -- Home Page</title>\n \t</titleInfo>\n \t<titleInfo type=\"alternative\"><title>Fran Ulmer, Democratic candidate for Governor, Alaska, 2002</title>\n \t</titleInfo>\n \t<name type=\"personal\">\n \t \t<namePart>Ulmer, Fran</namePart>\n \t</name>\n \t<genre>Web site</genre>\n \t<originInfo>\n \t \t<dateCaptured point=\"start\" encoding=\"iso8601\">20020702 </dateCaptured>\n \t \t<dateCaptured point=\"end\" encoding=\"iso8601\"> 20021203</dateCaptured>\n \t</originInfo>\n \t<language>\n \t \t<languageTerm authority=\"iso639-2b\">eng</languageTerm>\n \t</language>\n \t<physicalDescription>\n \t \t<internetMediaType>text/html</internetMediaType>\n \t \t<internetMediaType>image/jpg</internetMediaType>\n \t</physicalDescription>\n \t<abstract>Web site promoting the candidacy of Fran Ulmer, Democratic candidate for Governor, Alaska, 2002. Includes candidate biography, issue position statements, campaign contact information, privacy policy and campaign news press releases. Site features enable visitors to sign up for campaign email list, volunteer, make campaign contributions and follow links to other internet locations. </abstract>\n \t<subject>\n \t \t<topic>Elections</topic>\n \t \t<geographic>Alaska</geographic>\n \t</subject>\n \t<subject>\n \t \t<topic>Governors</topic>\n \t \t<geographic>Alaska</geographic>\n \t \t<topic>Election</topic>\n \t</subject>\n \t<subject>\n \t \t<topic>Democratic Party (AK)</topic>\n \t</subject>\n \t<relatedItem type=\"host\">\n \t \t<titleInfo>\n \t \t \t<title>Election 2002 Web Archive</title>\n \t \t</titleInfo>\n \t \t<location>\n \t \t \t<url>http://www.loc.gov/minerva/collect/elec2002/</url>\n \t \t</location>\n \t</relatedItem>\n \t<location>\n \t \t<url displayLabel=\"Active site (if available)\">http://www.franulmer.com/</url>\n \t</location>\n \t<location>\n \t \t<url displayLabel=\"Archived site\">http://wayback-cgi1.alexa.com/e2002/*/http://www.franulmer.com/</url>\n \t</location>\n</mods>\n</modsCollection>",
"items": [
{
"itemType": "webpage",
"title": "FranUlmer.com -- Home Page",
"creators": [
{
"firstName": "Fran",
"lastName": "Ulmer",
"creatorType": "author"
}
],
"abstractNote": "Web site promoting the candidacy of Fran Ulmer, Democratic candidate for Governor, Alaska, 2002. Includes candidate biography, issue position statements, campaign contact information, privacy policy and campaign news press releases. Site features enable visitors to sign up for campaign email list, volunteer, make campaign contributions and follow links to other internet locations.",
"language": "eng",
"url": "http://www.franulmer.com/",
"websiteTitle": "Election 2002 Web Archive",
"attachments": [],
"tags": [
{
"tag": "Democratic Party (AK)"
},
{
"tag": "Election"
},
{
"tag": "Elections"
},
{
"tag": "Governors"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<modsCollection xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://www.loc.gov/mods/v3\" xsi:schemaLocation=\"http://www.loc.gov/mods/v3 http://www.loc.gov/standards/mods/v3/mods-3-3.xsd\">\n<mods version=\"3.3\">\n <titleInfo>\n \t \t<title>At Gettysburg, or, What a Girl Saw and Heard of the Battle: A True Narrative</title>\n \t</titleInfo>\n \t<name type=\"personal\">\n \t \t<namePart>Alleman, Tillie Pierce [1848-1914]</namePart>\n \t \t<role>\n \t \t \t<roleTerm type=\"code\" authority=\"marcrelator\">aut</roleTerm>\n \t \t \t<roleTerm type=\"text\" authority=\"marcrelator\">Author</roleTerm>\n \t \t</role>\n \t</name>\n \t<typeOfResource>text</typeOfResource>\n \t<originInfo>\n \t \t<place>\n \t \t \t<placeTerm type=\"text\">New York</placeTerm>\n \t \t</place>\n \t \t<publisher>W. Lake Borland</publisher>\n \t \t<dateIssued keyDate=\"yes\" encoding=\"w3cdtf\">1889</dateIssued>\n \t</originInfo>\n \t<language>\n \t \t<languageTerm authority=\"iso639-2b\">eng</languageTerm>\n \t \t<languageTerm type=\"text\">English</languageTerm>\n \t</language>\n \t<physicalDescription>\n \t \t<internetMediaType>text/html</internetMediaType>\n \t \t<digitalOrigin>reformatted digital</digitalOrigin>\n \t</physicalDescription>\n \t<subject authority=\"lcsh\">\n \t \t<topic >Gettysburg, Battle of, Gettysburg, Pa., 1863</topic>\n \t</subject>\n \t<subject authority=\"lcsh\">\n \t \t<topic>Gettysburg (Pa.) -- History -- Civil War, 1861-1865</topic>\n \t</subject>\n \t<subject authority=\"lcsh\">\n \t \t<topic>United States -- History -- Civil War, 1861-1865 -- Campaigns</topic>\n \t</subject>\n \t<classification authority=\"lcc\">E475.53 .A42</classification>\n \t<relatedItem type=\"host\">\n \t \t<titleInfo type=\"uniform\" authority=\"dlfaqcoll\">\n \t \t \t<title>A Celebration of Women Writers: Americana</title>\n \t \t</titleInfo>\n \t</relatedItem>\n \t<location>\n \t \t<url usage=\"primary display\" access=\"object in context\"> http://digital.library.upenn.edu/women/alleman/gettysburg/gettysburg.html\n</url>\n \t</location>\n \t<accessCondition> Personal, noncommercial use of this item is permitted in the United States of America. Please see http://digital.library.upenn.edu/women/ for other rights and restrictions that may apply to this resource.\n</accessCondition>\n<recordInfo>\n \t<recordSource>University of Pennsylvania Digital Library</recordSource>\n \t<recordOrigin> MODS auto-converted from a simple Online Books Page metadata record. For details, see http://onlinebooks.library.upenn.edu/mods.html </recordOrigin>\n \t<languageOfCataloging>\n \t \t<languageTerm type=\"code\" authority=\"iso639-2b\">eng</languageTerm>\n \t</languageOfCataloging>\n</recordInfo>\n</mods>\n</modsCollection>",
"items": [
{
"itemType": "webpage",
"title": "At Gettysburg, or, What a Girl Saw and Heard of the Battle: A True Narrative",
"creators": [
{
"firstName": "Tillie Pierce",
"lastName": "Alleman",
"creatorType": "author"
}
],
"date": "1889",
"language": "eng",
"rights": "Personal, noncommercial use of this item is permitted in the United States of America. Please see http://digital.library.upenn.edu/women/ for other rights and restrictions that may apply to this resource.",
"url": "http://digital.library.upenn.edu/women/alleman/gettysburg/gettysburg.html",
"websiteTitle": "A Celebration of Women Writers: Americana",
"attachments": [],
"tags": [
{
"tag": "Gettysburg (Pa.) -- History -- Civil War, 1861-1865"
},
{
"tag": "Gettysburg, Battle of, Gettysburg, Pa., 1863"
},
{
"tag": "United States -- History -- Civil War, 1861-1865 -- Campaigns"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<modsCollection xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://www.loc.gov/mods/v3\" xsi:schemaLocation=\"http://www.loc.gov/mods/v3 http://www.loc.gov/standards/mods/v3/mods-3-3.xsd\">\n<mods version=\"3.3\">\n <titleInfo>\n \t \t<title>Telescope Peak from Zabriskie Point</title>\n \t</titleInfo>\n \t<titleInfo type=\"alternative\" >\n \t \t<title>Telescope PK from Zabriskie Pt.</title>\n \t</titleInfo>\n \t<name type=\"personal\">\n \t \t<namePart type=\"family\">Cushman</namePart>\n \t \t<namePart type=\"given\">Charles Weever</namePart>\n \t \t<namePart type=\"date\">1896-1972</namePart>\n \t \t<role>\n \t \t \t<roleTerm type=\"code\" authority=\"marcrelator\">pht</roleTerm>\n \t \t \t<roleTerm type=\"text\" authority=\"marcrelator\">Photographer</roleTerm>\n \t \t</role>\n \t</name>\n \t<typeOfResource>still image</typeOfResource>\n \t<genre authority=\"gmgpc\">Landscape photographs</genre>\n \t<originInfo>\n \t \t<dateCreated encoding=\"w3cdtf\" keyDate=\"yes\">1955-03-22</dateCreated>\n \t \t<copyrightDate encoding=\"w3cdtf\">2003</copyrightDate>\n \t</originInfo>\n \t<physicalDescription>\n \t \t<internetMediaType>image/jpeg</internetMediaType>\n \t \t<digitalOrigin>reformatted digital</digitalOrigin>\n \t \t<note> Original 35mm slide was digitized in 2003 as a TIFF image. Display versions in JPEG format in three sizes are available.</note>\n \t \t<note>100 f 6.3 tl</note>\n \t</physicalDescription>\n \t<subject authority=\"lctgm\">\n \t \t<topic>Mountains</topic>\n \t</subject>\n \t<subject authority=\"lctgm\">\n \t \t<topic>Snow</topic>\n \t</subject>\n \t<subject>\n \t \t<topic>Telescope Peak (Inyo County, Calif.)</topic>\n \t</subject>\n \t<subject>\n \t \t<topic>Zabriskie Point (Calif.)</topic>\n \t</subject>\n \t<subject>\n \t \t<hierarchicalGeographic>\n \t \t \t<country>United States</country>\n \t \t \t<state>California</state>\n \t \t \t<county>Inyo</county>\n \t \t</hierarchicalGeographic>\n \t</subject>\n \t<relatedItem type=\"original\">\n \t \t<originInfo>\n \t \t \t<dateCreated encoding=\"w3cdtf\" keyDate=\"yes\">1955-03-22</dateCreated>\n \t \t</originInfo>\n \t \t<physicalDescription>\n \t \t \t<form authority=\"gmd\">graphic</form>\n \t \t \t<extent>1 slide : col. ; 35mm</extent>\n \t \t \t<note>Original 35mm slide was digitized in 2003 as a TIFF image. Display versions in JPEG format in three sizes are available.</note>\n \t \t</physicalDescription>\n \t \t<location>\n \t \t \t<physicalLocation displayLabel=\"Original slide\"> Indiana University, Bloomington. University Archives P07803 </physicalLocation>\n \t \t</location>\n \t</relatedItem>\n \t<relatedItem type=\"host\">\n \t \t<titleInfo type=\"uniform\" authority=\"dlfaqcoll\">\n \t \t \t<title> Indiana University Digital Library Program: Charles W. Cushman Photograph Collection</title>\n \t \t</titleInfo>\n \t</relatedItem>\n \t<identifier displayLabel=\"Cushman number\" type=\"local\">955.11</identifier>\n \t<identifier displayLabel=\"IU Archives number\" type=\"local\">P07803</identifier>\n \t<location>\n \t \t<url>http://purl.dlib.indiana.edu/iudl/archives/cushman/P07803</url>\n \t \t<url access=\"preview\">http://quod.lib.umich.edu/m/mods/thumbs/Indiana/oai.dlib.indiana.edu/ archives/cushman/oai_3Aoai.dlib.indiana.edu_3Aarchives_5Ccushman_5CP07803.png</url>\n \t</location>\n \t<accessCondition> Copyright and reproduction rights for all Charles W. Cushman photographs are held by Indiana University and administered by the University Archives, Indiana University, Bloomington, IN 47405</accessCondition>\n \t<recordInfo>\n \t<recordContentSource>Indiana University Digital Library Program</recordContentSource>\n \t<recordCreationDate encoding=\"w3cdtf\">2004-09-09</recordCreationDate>\n \t<recordIdentifier>archives/cushman/P07803</recordIdentifier>\n \t</recordInfo>\n</mods>\n\n</modsCollection>",
"items": [
{
"itemType": "artwork",
"title": "Telescope Peak from Zabriskie Point",
"creators": [
{
"firstName": "Charles Weever",
"lastName": "Cushman",
"creatorType": "artist"
}
],
"date": "2003",
"archiveLocation": "Indiana University, Bloomington. University Archives P07803",
"rights": "Copyright and reproduction rights for all Charles W. Cushman photographs are held by Indiana University and administered by the University Archives, Indiana University, Bloomington, IN 47405",
"url": "http://purl.dlib.indiana.edu/iudl/archives/cushman/P07803",
"attachments": [],
"tags": [
{
"tag": "Mountains"
},
{
"tag": "Snow"
},
{
"tag": "Telescope Peak (Inyo County, Calif.)"
},
{
"tag": "Zabriskie Point (Calif.)"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "<modsCollection xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://www.loc.gov/mods/v3\" xsi:schemaLocation=\"http://www.loc.gov/mods/v3 http://www.loc.gov/standards/mods/v3/mods-3-3.xsd\">\n<mods version=\"3.3\">\n <titleInfo>\n \t \t<title>Hiring and recruitment practices in academic libraries</title>\n \t</titleInfo>\n \t<name type=\"personal\">\n \t \t<namePart>Raschke, Gregory K.</namePart>\n \t \t<displayForm>Gregory K. Raschke</displayForm>\n \t</name>\n \t<typeOfResource>text</typeOfResource>\n \t<genre>journal article</genre>\n \t<originInfo>\n \t \t<place>\n \t \t \t<text>Baltimore, Md.</text>\n \t \t</place>\n \t \t<publisher>Johns Hopkins University Press</publisher>\n \t \t<dateIssued>2003</dateIssued>\n \t \t<issuance>monographic</issuance>\n \t</originInfo>\n \t<language authority=\"iso639-2b\">eng</language>\n \t<physicalDescription>\n \t \t<form authority=\"marcform\">print</form>\n \t \t<extent>15 p.</extent>\n \t</physicalDescription>\n \t<abstract>\nAcademic libraries need to change their recruiting and hiring procedures to stay competitive in today's changing marketplace. By taking too long to find and to hire talented professionals in a tight labor market, academic libraries are losing out on top candidates and limiting their ability to become innovative and dynamic organizations. Traditional, deliberate, and risk-averse hiring models lead to positions remaining open for long periods, opportunities lost as top prospects find other positions, and a reduction in the overall talent level of the organization. To be more competitive and effective in their recruitment and hiring processes, academic libraries must foster manageable internal solutions, look to other professions for effective hiring techniques and models, and employ innovative concepts from modern personnel management literature. </abstract>\n \t<subject>\n \t \t<topic>College librarians</topic>\n \t \t<topic>Recruiting</topic>\n \t \t<geographic>United States</geographic>\n \t</subject>\n \t<subject>\n \t \t<topic>College librarians</topic>\n \t \t<topic>Selection and appointment</topic>\n \t \t<geographic>United States</geographic>\n \t</subject>\n \t<relatedItem type=\"host\">\n \t \t<titleInfo>\n \t \t \t<title>portal: libraries and the academy</title>\n \t \t</titleInfo>\n \t \t<part>\n \t \t \t<detail type=\"volume\">\n \t \t \t \t<number>3</number>\n \t \t \t \t<caption>vol.</caption>\n \t \t \t</detail>\n \t \t \t<detail type=\"number\">\n \t \t \t \t<number>1</number>\n \t \t \t \t<caption>no.</caption>\n \t \t \t</detail>\n \t \t \t<extent unit=\"page\">\n \t \t \t \t<start>53</start>\n \t \t \t \t<end>57</end>\n \t \t \t</extent>\n \t \t \t<date>Jan. 2003</date>\n \t \t</part>\n \t \t<identifier type=\"issn\">1531-2542</identifier>\n \t</relatedItem>\n</mods>\n\n</modsCollection>",
"items": [
{
"itemType": "journalArticle",
"title": "Hiring and recruitment practices in academic libraries",
"creators": [
{
"firstName": "Gregory K.",
"lastName": "Raschke",
"creatorType": "author"
}
],
"date": "2003",
"ISSN": "1531-2542",
"abstractNote": "Academic libraries need to change their recruiting and hiring procedures to stay competitive in today's changing marketplace. By taking too long to find and to hire talented professionals in a tight labor market, academic libraries are losing out on top candidates and limiting their ability to become innovative and dynamic organizations. Traditional, deliberate, and risk-averse hiring models lead to positions remaining open for long periods, opportunities lost as top prospects find other positions, and a reduction in the overall talent level of the organization. To be more competitive and effective in their recruitment and hiring processes, academic libraries must foster manageable internal solutions, look to other professions for effective hiring techniques and models, and employ innovative concepts from modern personnel management literature.",
"language": "eng",
"pages": "53-57",
"publicationTitle": "portal: libraries and the academy",
"volume": "3",
"attachments": [],
"tags": [
{
"tag": "College librarians"
},
{
"tag": "College librarians"
},
{
"tag": "Recruiting"
},
{
"tag": "Selection and appointment"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "<?xml version='1.0' encoding='UTF-8' ?>\n<mods xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"3.4\"\n xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://www.loc.gov/mods/v3\"\n xsi:schemaLocation=\"http://www.loc.gov/mods/v3 http://www.loc.gov/standards/mods/v3/mods-3-4.xsd\">\n\n <titleInfo>\n <title>Sound and fury</title>\n <subTitle>the making of the punditocracy</subTitle>\n </titleInfo>\n\n <name type=\"personal\" authorityURI=\"http://id.loc.gov/authorities/names\"\n valueURI=\"http://id.loc.gov/authorities/names/n92101908\">\n <namePart>Alterman, Eric</namePart>\n\n <role>\n <roleTerm type=\"text\">creator</roleTerm>\n </role>\n </name>\n\n <typeOfResource>text</typeOfResource>\n\n <genre authority=\"marcgt\">bibliography</genre>\n\n <originInfo>\n <place>\n <placeTerm authority=\"marccountry\" type=\"code\"\n authorityURI=\"http://id.loc.gov/vocabulary/countries\"\n valueURI=\"http://id.loc.gov/vocabulary/countries/nyu\">nyu</placeTerm>\n </place>\n <place>\n <placeTerm type=\"text\">Ithaca, N.Y</placeTerm>\n </place>\n\n <publisher>Cornell University Press</publisher>\n <dateIssued>c1999</dateIssued>\n <dateIssued encoding=\"marc\">1999</dateIssued>\n <issuance>monographic</issuance>\n </originInfo>\n\n <language>\n\n <languageTerm authority=\"iso639-2b\" type=\"code\"\n authorityURI=\"http://id.loc.gov/vocabulary/iso639-2\"\n valueURI=\"http://id.loc.gov/vocabulary/iso639-2/eng\">eng</languageTerm>\n </language>\n\n <physicalDescription>\n <form authority=\"marcform\">print</form>\n <extent>vii, 322 p. ; 23 cm.</extent>\n </physicalDescription>\n\n <note type=\"statement of responsibility\">Eric Alterman.</note>\n <note>Includes bibliographical references (p. 291-312) and index.</note>\n\n <subject authority=\"lcsh\" authorityURI=\"http://id.loc.gov/authorities/subjects\">\n <topic valueURI=\"http://id.loc.gov/authorities/subjects/sh85070736\">Journalism</topic>\n <topic valueURI=\"http://id.loc.gov/authorities/subjects/sh00005651\">Political aspects</topic>\n <geographic valueURI=\"http://id.loc.gov/authorities/names/n78095330\">United States</geographic>\n\n </subject>\n\n <subject authority=\"lcsh\" authorityURI=\"http://id.loc.gov/authorities/subjects\">\n <geographic valueURI=\"http://id.loc.gov/authorities/names/n78095330\">United States</geographic>\n <topic valueURI=\"http://id.loc.gov/authorities/subjects/sh2002011436\">Politics and\n government</topic>\n <temporal valueURI=\"http://id.loc.gov/authorities/subjects/sh2002012476\">20th century</temporal>\n </subject>\n\n <subject authority=\"lcsh\" authorityURI=\"http://id.loc.gov/authorities/subjects\"\n valueURI=\"http://id.loc.gov/authorities/subjects/sh2008107507\">\n <topic valueURI=\"http://id.loc.gov/authorities/subjects/sh85081863\">Mass media</topic>\n <topic valueURI=\"http://id.loc.gov/authorities/subjects/sh00005651\">Political aspects</topic>\n <geographic valueURI=\"http://id.loc.gov/authorities/names/n78095330\">United States</geographic>\n </subject>\n\n <subject authority=\"lcsh\" authorityURI=\"http://id.loc.gov/authorities/subjects\"\n valueURI=\"http://id.loc.gov/authorities/subjects/sh2010115992\">\n <topic valueURI=\"http://id.loc.gov/authorities/subjects/sh85133490\">Television and\n politics</topic>\n\n <geographic valueURI=\"http://id.loc.gov/authorities/names/n78095330\">United States</geographic>\n </subject>\n\n <subject authority=\"lcsh\" authorityURI=\"http://id.loc.gov/authorities/subjects\"\n valueURI=\"http://id.loc.gov/authorities/subjects/sh2008109555\">\n <topic valueURI=\"http://id.loc.gov/authorities/subjects/sh85106514\">Press and politics</topic>\n <geographic valueURI=\"http://id.loc.gov/authorities/names/n78095330\">United States</geographic>\n </subject>\n\n <subject authority=\"lcsh\" authorityURI=\"http://id.loc.gov/authorities/subjects\">\n <topic>Talk shows</topic>\n <geographic valueURI=\"http://id.loc.gov/authorities/names/n78095330\">United States</geographic>\n </subject>\n\n <classification authority=\"lcc\">PN4888.P6 A48 1999</classification>\n <classification edition=\"21\" authority=\"ddc\">071/.3</classification>\n\n <identifier type=\"isbn\">0801486394 (pbk. : acid-free, recycled paper)</identifier>\n <identifier type=\"lccn\">99042030</identifier>\n\n <recordInfo>\n <descriptionStandard>aacr</descriptionStandard>\n <recordContentSource>DLC</recordContentSource>\n <recordCreationDate encoding=\"marc\">990730</recordCreationDate>\n\n <recordChangeDate encoding=\"iso8601\">20000406144503.0</recordChangeDate>\n <recordIdentifier>11761548</recordIdentifier>\n <recordOrigin>Converted from MARCXML to MODS version 3.4 using MARC21slim2MODS3-4.xsl (Revision\n 1.74), valueURIs and authorityURIs added by hand 20120123</recordOrigin>\n </recordInfo>\n</mods>\n",
"items": [
{
"itemType": "book",
"title": "Sound and fury: the making of the punditocracy",
"creators": [
{
"firstName": "Eric",
"lastName": "Alterman",
"creatorType": "author"
}
],
"date": "1999",
"ISBN": "0801486394",
"callNumber": "PN4888.P6 A48 1999, 071/.3",
"language": "eng",
"numPages": "322",
"place": "Ithaca, N.Y",
"publisher": "Cornell University Press",
"attachments": [],
"tags": [
{
"tag": "Journalism"
},
{
"tag": "Mass media"
},
{
"tag": "Political aspects"
},
{
"tag": "Political aspects"
},
{
"tag": "Politics and government"
},
{
"tag": "Press and politics"
},
{
"tag": "Talk shows"
},
{
"tag": "Television and politics"
}
],
"notes": [
{
"note": "statement of responsibility: Eric Alterman."
},
{
"note": "Includes bibliographical references (p. 291-312) and index."
}
],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<mods xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"3.4\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://www.loc.gov/mods/v3\" xsi:schemaLocation=\"http://www.loc.gov/mods/v3 http://www.loc.gov/standards/mods/v3/mods-3-4.xsd\">\n <titleInfo>\n\t\t<title>Models, Fantasies and Phantoms of Transition</title>\n\t</titleInfo>\n\t<name type=\"personal\">\n\t\t<namePart type=\"given\">Ash</namePart>\n\t\t<namePart type=\"family\">Amin</namePart>\n\n\t\t<role>\n\t\t\t<roleTerm type=\"text\">author</roleTerm>\n\t\t</role>\n\t</name>\n\t<typeOfResource>text</typeOfResource>\n\t<relatedItem type=\"host\">\n\t\t<titleInfo>\n\t\t\t<title>Post-Fordism</title>\n\n\t\t\t<subTitle>A Reader</subTitle>\n\t\t</titleInfo>\n\t\t<name type=\"personal\">\n\t\t\t<namePart type=\"given\">Ash</namePart>\n\t\t\t<namePart type=\"family\">Amin</namePart>\n\t\t\t<role>\n\t\t\t\t<roleTerm type=\"text\">editor</roleTerm>\n\n\t\t\t</role>\n\t\t</name>\n\t\t<originInfo>\n\t\t\t<dateIssued>1994</dateIssued>\n\t\t\t<publisher>Blackwell Publishers</publisher>\n\t\t\t<place>\n\t\t\t\t<placeTerm type=\"text\">Oxford</placeTerm>\n\n\t\t\t</place>\n\t\t</originInfo>\n\t\t<part>\n\t\t\t<extent unit=\"page\">\n\t\t\t\t<start>23</start>\n\t\t\t\t<end>45</end>\n\t\t\t</extent>\n\t\t</part>\n\n\t</relatedItem>\n\t<identifier>Amin1994a</identifier>\n</mods>",
"items": [
{
"itemType": "bookSection",
"title": "Models, Fantasies and Phantoms of Transition",
"creators": [
{
"firstName": "Ash",
"lastName": "Amin",
"creatorType": "author"
},
{
"firstName": "Ash",
"lastName": "Amin",
"creatorType": "editor"
}
],
"date": "1994",
"bookTitle": "Post-Fordism: A Reader",
"pages": "23-45",
"place": "Oxford",
"publisher": "Blackwell Publishers",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "<mods xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"3.4\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://www.loc.gov/mods/v3\" xsi:schemaLocation=\"http://www.loc.gov/mods/v3 http://www.loc.gov/standards/mods/v3/mods-3-4.xsd\">\n \t<titleInfo>\n\t\t\t<nonSort>The</nonSort>\n\t\t\t<title>Urban Question as a Scale Question</title>\n\t\t\t<subTitle>Reflections on Henri Lefebre, Urban Theory and the Politics of Scale</subTitle>\n\t\t</titleInfo>\n\t\t<name type=\"personal\">\n\t\t\t<namePart type=\"given\">Neil</namePart>\n\n\t\t\t<namePart type=\"family\">Brenner</namePart>\n\t\t\t<role>\n\t\t\t\t<roleTerm type=\"text\">author</roleTerm>\n\t\t\t</role>\n\t\t</name>\n\t\t<typeOfResource>text</typeOfResource>\n\t\t<genre>article</genre>\n\n\t\t<originInfo>\n\t\t\t<issuance>monographic</issuance>\n\t\t</originInfo>\n\t\t<relatedItem type=\"host\">\n\t\t\t<titleInfo>\n\t\t\t\t<title>International Journal of Urban and Regional Research</title>\n\t\t\t</titleInfo>\n\t\t\t<originInfo>\n\n\t\t\t<issuance>continuing</issuance>\n\t\t</originInfo>\n\t\t\t<part>\n\t\t\t\t<detail type=\"volume\">\n\t\t\t\t\t<number>24</number>\n\t\t\t\t</detail>\n\t\t\t\t<detail type=\"issue\">\n\t\t\t\t\t<number>2</number>\n\n\t\t\t\t\t<caption>no.</caption>\n\t\t\t\t</detail>\n\t\t\t\t<extent unit=\"pages\">\n\t\t\t\t\t<start>361</start>\n\t\t\t\t\t<end>378</end>\n\t\t\t\t</extent>\n\t\t\t\t<date>2000</date>\n\n\t\t\t</part>\n\t\t</relatedItem>\n\t\t<identifier>BrennerN2000a</identifier>\n\t</mods>",
"items": [
{
"itemType": "journalArticle",
"title": "The Urban Question as a Scale Question: Reflections on Henri Lefebre, Urban Theory and the Politics of Scale",
"creators": [
{
"firstName": "Neil",
"lastName": "Brenner",
"creatorType": "author"
}
],
"date": "2000",
"issue": "2",
"pages": "361-378",
"publicationTitle": "International Journal of Urban and Regional Research",
"volume": "24",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "<mods xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"3.4\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://www.loc.gov/mods/v3\" xsi:schemaLocation=\"http://www.loc.gov/mods/v3 http://www.loc.gov/standards/mods/v3/mods-3-4.xsd\">\n \t<titleInfo>\n\t\t\t<title>Fifth-Grade Boys' Decisions about Participation in Sports Activities</title>\n\t\t</titleInfo>\n\t\t<name type=\"personal\">\n\t\t\t<namePart type=\"family\">Conley</namePart>\n\t\t\t<namePart type=\"given\">Alice</namePart>\n\t\t\t<role>\n\n\t\t\t\t<roleTerm type=\"text\">author</roleTerm>\n\t\t\t</role>\n\t\t</name>\n\t\t<typeOfResource>text</typeOfResource>\n\t\t<relatedItem type=\"host\">\n\t\t\t<titleInfo>\n\t\t\t\t<title>Non-subject-matter Outcomes of Schooling</title>\n\n\t\t\t</titleInfo>\n\t\t\t<name>\n\t\t\t\t<namePart>Good, Thomas L.</namePart>\n\t\t\t\t<role>\n\t\t\t\t\t<roleTerm>editor</roleTerm>\n\t\t\t\t</role>\n\t\t\t</name>\n\t\t\t<note type=\"statement of responsibility\">ed. Thomas L. Good</note>\n\n\t\t\t<originInfo>\n\t\t\t\t<issuance>continuing</issuance>\n\t\t\t</originInfo>\n\t\t\t<part>\n\t\t\t\t<detail type=\"title\">\n\t\t\t\t\t<title>Special issue, Elementary School Journal</title>\n\t\t\t\t</detail>\n\t\t\t\t<detail type=\"volume\">\n\n\t\t\t\t\t<number>99</number>\n\t\t\t\t</detail>\n\t\t\t\t<detail type=\"issue\">\n\t\t\t\t\t<number>5</number>\n\t\t\t\t\t<caption>no.</caption>\n\t\t\t\t</detail>\n\t\t\t\t<extent unit=\"pages\">\n\n\t\t\t\t\t<start>131</start>\n\t\t\t\t\t<end>146</end>\n\t\t\t\t</extent>\n\t\t\t\t<date>1999</date>\n\t\t\t</part>\n\t\t</relatedItem>\n\t</mods>",
"items": [
{
"itemType": "journalArticle",
"title": "Fifth-Grade Boys' Decisions about Participation in Sports Activities",
"creators": [
{
"firstName": "Alice",
"lastName": "Conley",
"creatorType": "author"
},
{
"lastName": "Good, Thomas L.",
"fieldMode": 1,
"creatorType": "editor"
}
],
"date": "1999",
"issue": "5",
"pages": "131-146",
"publicationTitle": "Non-subject-matter Outcomes of Schooling",
"volume": "99",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "<mods xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"3.4\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://www.loc.gov/mods/v3\" xsi:schemaLocation=\"http://www.loc.gov/mods/v3 http://www.loc.gov/standards/mods/v3/mods-3-4.xsd\">\n <titleInfo>\n\t\t<title>2700 MHz observations of 4c radio sources in the declination zone +4 to -4</title>\n\t</titleInfo>\n\t<name type=\"personal\">\n\t\t<namePart type=\"family\">Wall</namePart>\n\t\t<namePart type=\"given\">J. V.</namePart>\n\t\t<role>\n\n\t\t\t<roleTerm type=\"text\">author</roleTerm>\n\t\t</role>\n\t</name>\n\t<typeOfResource>text</typeOfResource>\n\t<relatedItem type=\"host\">\n\t<titleInfo>\n\t\t<title>Australian Journal of Physics and Astronphysics</title>\n\n\t</titleInfo>\n\t\t<titleInfo type=\"abbreviated\">\n\t\t\t<title>Australian J. Phys. Astronphys.</title>\n\t\t</titleInfo>\n\t\t<originInfo>\n\t\t\t<issuance>continuing</issuance>\n\t\t</originInfo>\n\t\t<genre>academic journal</genre>\n\n\t\t<part>\n\t\t\t<detail type=\"supplement\">\n\t\t\t\t<caption>Suppl. no.</caption>\n\t\t\t\t<number>20</number>\n\t\t\t</detail>\n\t\t\t<date>1971</date>\n\t\t</part>\n\n\t</relatedItem>\n</mods>",
"items": [
{
"itemType": "journalArticle",
"title": "2700 MHz observations of 4c radio sources in the declination zone +4 to -4",
"creators": [
{
"firstName": "J. V.",
"lastName": "Wall",
"creatorType": "author"
}
],
"date": "1971",
"journalAbbreviation": "Australian J. Phys. Astronphys.",
"publicationTitle": "Australian Journal of Physics and Astronphysics",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "<mods xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"3.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://www.loc.gov/mods/v3\" xsi:schemaLocation=\"http://www.loc.gov/mods/v3 http://www.loc.gov/standards/mods/v3/mods-3-0.xsd\">\n \t<titleInfo>\n\t\t\t<title>Emergence and Dissolvence in the Self-Organization of Complex Systems</title>\n\t\t</titleInfo>\n\t\t<name type=\"personal\">\n\t\t\t<namePart type=\"family\">Testa</namePart>\n\t\t\t<namePart type=\"given\">Bernard</namePart>\n\t\t\t<role>\n\n\t\t\t\t<roleTerm>author</roleTerm>\n\t\t\t</role>\n\t\t</name>\n\t\t<name type=\"personal\">\n\t\t\t<namePart type=\"family\">Kier</namePart>\n\t\t\t<namePart type=\"given\">Lamont B.</namePart>\n\t\t\t<role>\n\n\t\t\t\t<roleTerm>author</roleTerm>\n\t\t\t</role>\n\t\t</name>\n\t\t<typeOfResource>text</typeOfResource>\n\t\t<identifier type=\"uri\">http://www.mdpi.org/entropy/papers/e2010001.pdf</identifier>\n\t\t<relatedItem type=\"host\">\n\t\t\t<titleInfo>\n\n\t\t\t\t<title>Entropy</title>\n\t\t\t</titleInfo>\n\t\t\t<originInfo>\n\t\t\t\t<issuance>continuing</issuance>\n\t\t\t</originInfo>\n\t\t\t<part>\n\t\t\t\t<detail type=\"volume\">\n\t\t\t\t\t<number>2</number>\n\n\t\t\t\t</detail>\n\t\t\t\t<detail type=\"issue\">\n\t\t\t\t\t<caption>no.</caption>\n\t\t\t\t\t<number>1</number>\n\t\t\t\t</detail>\n\t\t\t\t<extent unit=\"pages\">\n\t\t\t\t\t<start>17</start>\n\n\t\t\t\t\t<end>17</end>\n\t\t\t\t</extent>\n\t\t\t\t<date>2000</date>\n\t\t\t</part>\n\t\t</relatedItem>\n\t</mods>",
"items": [
{
"itemType": "journalArticle",
"title": "Emergence and Dissolvence in the Self-Organization of Complex Systems",
"creators": [
{
"firstName": "Bernard",
"lastName": "Testa",
"creatorType": "author"
},
{
"firstName": "Lamont B.",
"lastName": "Kier",
"creatorType": "author"
}
],
"date": "2000",
"issue": "1",
"pages": "17",
"publicationTitle": "Entropy",
"volume": "2",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<mods xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"3.4\"\n xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://www.loc.gov/mods/v3\"\n\txsi:schemaLocation=\"http://www.loc.gov/mods/v3 http://www.loc.gov/standards/mods/v3/mods-3-4.xsd\">\n\n\t<titleInfo>\n\t\t<title>3 Viennese arias :</title>\n\t\t<subTitle>for soprano, obbligato clarinet in B flat, and piano</subTitle>\n\t</titleInfo>\n\n\t<name type=\"personal\" authorityURI=\"http://id.loc.gov/authorities/names\"\n\t\tvalueURI=\"http://id.loc.gov/authorities/names/n81100426\">\n\t\t<namePart>Lawson, Colin (Colin James)</namePart>\n\n\t</name>\n\n\t<typeOfResource>notated music</typeOfResource>\n\n\t<originInfo>\n\t\t<place>\n\t\t\t<placeTerm authority=\"marccountry\" type=\"code\"\n\t\t\t\tauthorityURI=\"http://id.loc.gov/vocabulary/countries\"\n\t\t\t\tvalueURI=\"http://id.loc.gov/vocabulary/countries/enk\">enk</placeTerm>\n\t\t</place>\n\t\t<place>\n\n\t\t\t<placeTerm type=\"text\">London</placeTerm>\n\t\t</place>\n\t\t<publisher>Nova Music</publisher>\n\t\t<dateIssued>c1984</dateIssued>\n\t\t<dateIssued encoding=\"marc\">1984</dateIssued>\n\t\t<issuance>monographic</issuance>\n\n\t</originInfo>\n\n\t<language>\n\t\t<languageTerm authority=\"iso639-2b\" type=\"code\"\n\t\t\tauthorityURI=\"http://id.loc.gov/vocabulary/iso639-2\"\n\t\t\tvalueURI=\"http://id.loc.gov/vocabulary/iso639-2/ita\">ita</languageTerm>\n\t</language>\n\t<language objectPart=\"libretto\">\n\t\t<languageTerm type=\"code\" authority=\"iso639-2b\">eng</languageTerm>\n\t</language>\n\n\t<physicalDescription>\n\t\t<form authority=\"marcform\">print</form>\n\t\t<extent>1 score (12 p.) + 2 parts ; 31 cm.</extent>\n\t</physicalDescription>\n\n\t<tableOfContents>Tutto in pianto il cor struggete / Emperor Joseph I -- E sempre inquieto quel\n\t\tcore infelice : from Endimione / G. Bononcini -- L'adorata genitrice : from Muzio [i.e.\n\t\tMutio] Scevola / G. Bononcini.</tableOfContents>\n\n\t<note type=\"statement of responsibility\">G.B. Bononcini and Emperor Joseph I ; edited by Colin\n\t\tLawson.</note>\n\n\t<note>Opera excerpts.</note>\n\t<note>Acc. arr. for piano; obbligato for the 2nd-3rd excerpts originally for chalumeau.</note>\n\t<note>Italian words.</note>\n\t<note>Cover title.</note>\n\t<note>The 1st excerpt composed for inclusion in M.A. Ziani's Chilonida.</note>\n\t<note>Texts with English translations on cover p. [2].</note>\n\n\t<subject authority=\"lcsh\" authorityURI=\"http://id.loc.gov/authorities/subjects\"\n\t\tvalueURI=\"http://id.loc.gov/authorities/subjects/sh2008108658\">\n\t\t<topic valueURI=\"http://id.loc.gov/authorities/subjects/sh85094914\">Operas</topic>\n\t\t<genre valueURI=\"http://id.loc.gov/authorities/subjects/sh99001548\">Excerpts,\n\t\t\tArranged</genre>\n\t\t<genre valueURI=\"http://id.loc.gov/authorities/subjects/sh99001780\">Scores and parts</genre>\n\t</subject>\n\n\t<subject authority=\"lcsh\" authorityURI=\"http://id.loc.gov/authorities/subjects\">\n\n\t\t<topic valueURI=\"http://id.loc.gov/authorities/subjects/sh85125142\">Songs (High voice) with\n\t\t\tinstrumental ensemble</topic>\n\t\t<genre valueURI=\"http://id.loc.gov/authorities/subjects/sh99001780\">Scores and parts</genre>\n\t</subject>\n\n\t<classification authority=\"lcc\">M1506 .A14 1984</classification>\n\n\t<relatedItem type=\"series\">\n\t\t<titleInfo>\n\n\t\t\t<title>Music for voice and instrument</title>\n\t\t</titleInfo>\n\t</relatedItem>\n\n\t<relatedItem type=\"constituent\">\n\t\t<titleInfo type=\"uniform\" authorityURI=\"http://id.loc.gov/authorities/names\"\n\t\t\tvalueURI=\"http://id.loc.gov/authorities/names/no97083914\">\n\t\t\t<title>Tutto in pianto il cor struggete</title>\n\t\t</titleInfo>\n\n\t\t<name type=\"personal\" authorityURI=\"http://id.loc.gov/authorities/names\"\n\t\t\tvalueURI=\"http://id.loc.gov/authorities/names/n79055650\">\n\t\t\t<namePart>Joseph I, Holy Roman Emperor,</namePart>\n\t\t\t<namePart type=\"date\">1678-1711</namePart>\n\t\t</name>\n\t</relatedItem>\n\n\t<relatedItem type=\"constituent\">\n\t\t<titleInfo type=\"uniform\" authorityURI=\"http://id.loc.gov/authorities/names\"\n\t\t\tvalueURI=\"http://id.loc.gov/authorities/names/n85337311\">\n\n\t\t\t<title>Endimione.</title>\n\t\t\t<partName>E sempre inquieto quel core infelice.</partName>\n\t\t</titleInfo>\n\t\t<name type=\"personal\" authorityURI=\"http://id.loc.gov/authorities/names\"\n\t\t\tvalueURI=\"http://id.loc.gov/authorities/names/n81005197\">\n\t\t\t<namePart>Bononcini, Giovanni,</namePart>\n\t\t\t<namePart type=\"date\">1670-1747</namePart>\n\t\t</name>\n\n\t</relatedItem>\n\n\t<relatedItem type=\"constituent\">\n\t\t<titleInfo type=\"uniform\" authorityURI=\"http://id.loc.gov/authorities/names\"\n\t\t\tvalueURI=\"http://id.loc.gov/authorities/names/n85337312\">\n\t\t\t<title>Mutio Scevola.</title>\n\t\t\t<partName>Adorata genitrice.</partName>\n\t\t</titleInfo>\n\t\t<name type=\"personal\" authorityURI=\"http://id.loc.gov/authorities/names\"\n\t\t\tvalueURI=\"http://id.loc.gov/authorities/names/n81005197\">\n\n\t\t\t<namePart>Bononcini, Giovanni,</namePart>\n\t\t\t<namePart type=\"date\">1670-1747</namePart>\n\t\t</name>\n\t</relatedItem>\n\n\t<relatedItem type=\"constituent\">\n\t\t<titleInfo>\n\t\t\t<title>Three Viennese arias.</title>\n\n\t\t</titleInfo>\n\t</relatedItem>\n\n\t<relatedItem type=\"constituent\">\n\t\t<titleInfo>\n\t\t\t<title>Viennese arias.</title>\n\t\t</titleInfo>\n\t</relatedItem>\n\n\t<recordInfo>\n\t\t<descriptionStandard>aacr</descriptionStandard>\n\t\t<recordContentSource>DLC</recordContentSource>\n\t\t<recordCreationDate encoding=\"marc\">850813</recordCreationDate>\n\t\t<recordChangeDate encoding=\"iso8601\">19950601141653.9</recordChangeDate>\n\t\t<recordIdentifier>5594130</recordIdentifier>\n\n\t\t<recordOrigin>Converted from MARCXML to MODS version 3.4 using MARC21slim2MODS3-4.xsl\n\t\t\t(Revision 1.74), valueURIs and authority URIs added by hand 20120124</recordOrigin>\n\t</recordInfo>\n</mods>",
"items": [
{
"itemType": "document",
"title": "3 Viennese arias : for soprano, obbligato clarinet in B flat, and piano",
"creators": [
{
"firstName": "Colin (Colin James)",
"lastName": "Lawson",
"creatorType": "author"
}
],
"date": "1984",
"callNumber": "M1506 .A14 1984",
"language": "ita; eng",
"publisher": "Nova Music",
"attachments": [],
"tags": [
{
"tag": "Operas"
},
{
"tag": "Songs (High voice) with instrumental ensemble"
}
],
"notes": [
{
"note": "statement of responsibility: G.B. Bononcini and Emperor Joseph I ; edited by Colin\n\t\tLawson."
},
{
"note": "Opera excerpts."
},
{
"note": "Acc. arr. for piano; obbligato for the 2nd-3rd excerpts originally for chalumeau."
},
{
"note": "Italian words."
},
{
"note": "Cover title."
},
{
"note": "The 1st excerpt composed for inclusion in M.A. Ziani's Chilonida."
},
{
"note": "Texts with English translations on cover p. [2]."
},
{
"note": "Table of Contents: Tutto in pianto il cor struggete / Emperor Joseph I -- E sempre inquieto quel\n\t\tcore infelice : from Endimione / G. Bononcini -- L'adorata genitrice : from Muzio [i.e.\n\t\tMutio] Scevola / G. Bononcini."
}
],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<mods xmlns=\"http://www.loc.gov/mods/v3\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.loc.gov/mods/v3 http://www.loc.gov/standards/mods/v3/mods-3-4.xsd\" version=\"3.4\">\n <titleInfo>\n <title>Directory of computer assisted research in musicology</title>\n </titleInfo>\n <titleInfo type=\"alternative\">\n <title>Computer assisted research in musicology</title>\n </titleInfo>\n <name type=\"corporate\">\n <namePart>Center for Computer Assisted Research in the Humanities</namePart>\n </name>\n <typeOfResource>text</typeOfResource>\n <genre authority=\"marcgt\">directory</genre>\n <originInfo>\n <place>\n <placeTerm type=\"code\" authority=\"marccountry\">cau</placeTerm>\n </place>\n <place>\n <placeTerm type=\"text\">Menlo Park, CA</placeTerm>\n </place>\n <publisher>Center for Computer Assisted Research in the Humanities</publisher>\n <dateIssued>-1988</dateIssued>\n <dateIssued point=\"start\" encoding=\"marc\">1985</dateIssued>\n <dateIssued point=\"end\" encoding=\"marc\">1988</dateIssued>\n <issuance>serial</issuance>\n <frequency authority=\"marcfrequency\">Annual</frequency>\n <frequency>Annual</frequency>\n </originInfo>\n <language>\n <languageTerm type=\"code\" authority=\"iso639-2b\">eng</languageTerm>\n </language>\n <physicalDescription>\n <form authority=\"marcform\">print</form>\n <extent>4 v. : ill., music ; 26 cm.</extent>\n </physicalDescription>\n <note type=\"date/sequential designation\">Began in 1985.</note>\n <note type=\"date/sequential designation\">-1988.</note>\n <note>Description based on: 1986.</note>\n <subject authority=\"lcsh\">\n <topic>Musicology</topic>\n <topic>Data processing</topic>\n <genre>Periodicals</genre>\n </subject>\n <subject authority=\"lcsh\">\n <topic>Music</topic>\n <genre>Bibliography</genre>\n <genre>Periodicals</genre>\n </subject>\n <subject authority=\"lcsh\">\n <topic>Musicians</topic>\n <genre>Directories</genre>\n </subject>\n <subject authority=\"lcsh\">\n <topic>Musicologists</topic>\n <genre>Directories</genre>\n </subject>\n <subject authority=\"lcsh\">\n <topic>Musicology</topic>\n <topic>Data processing</topic>\n <genre>Directories</genre>\n </subject>\n <classification authority=\"lcc\">ML73 .D57</classification>\n <classification authority=\"ddc\" edition=\"19\">780/.01/02584</classification>\n <relatedItem type=\"succeeding\">\n <titleInfo>\n <title>Computing in musicology</title>\n </titleInfo>\n <identifier type=\"issn\">1057-9478</identifier>\n <identifier type=\"local\">(DLC) 91656596</identifier>\n <identifier type=\"local\">(OCoLC)21202412</identifier>\n </relatedItem>\n <identifier type=\"lccn\">86646620</identifier>\n <identifier invalid=\"yes\" type=\"lccn\">86101572</identifier>\n <identifier type=\"oclc\">ocm14913926</identifier>\n <recordInfo>\n <descriptionStandard>aacr</descriptionStandard>\n <recordContentSource authority=\"marcorg\">DLC</recordContentSource>\n <recordCreationDate encoding=\"marc\">861202</recordCreationDate>\n <recordChangeDate encoding=\"iso8601\">20120109163740.0</recordChangeDate>\n <recordIdentifier>11315879</recordIdentifier>\n <recordOrigin>Converted from MARCXML to MODS version 3.4 using MARC21slim2MODS3-4.xsl\n \t\t(Revision 1.76 2012/02/01)</recordOrigin>\n </recordInfo>\n</mods>",
"items": [
{
"itemType": "document",
"title": "Directory of computer assisted research in musicology",
"creators": [
{
"lastName": "Center for Computer Assisted Research in the Humanities",
"fieldMode": 1,
"creatorType": "author"
}
],
"date": "1985",
"callNumber": "ML73 .D57, 780/.01/02584",
"language": "eng",
"publisher": "Center for Computer Assisted Research in the Humanities",
"attachments": [],
"tags": [
{
"tag": "Data processing"
},
{
"tag": "Data processing"
},
{
"tag": "Music"
},
{
"tag": "Musicians"
},
{
"tag": "Musicologists"
},
{
"tag": "Musicology"
},
{
"tag": "Musicology"
}
],
"notes": [
{
"note": "date/sequential designation: Began in 1985."
},
{
"note": "date/sequential designation: -1988."
},
{
"note": "Description based on: 1986."
}
],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<mods xmlns=\"http://www.loc.gov/mods/v3\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.loc.gov/mods/v3 http://www.loc.gov/standards/mods/v3/mods-3-4.xsd\" version=\"3.4\">\n <titleInfo>\n <nonSort>The </nonSort>\n <title>American ballroom companion</title>\n <subTitle>dance instruction manuals, ca. 1600-1920</subTitle>\n </titleInfo>\n <titleInfo type=\"alternative\">\n <title>Dance instruction manuals, ca. 1600-1920</title>\n </titleInfo>\n <name type=\"corporate\">\n <namePart>Library of Congress</namePart>\n <namePart>Music Division.</namePart>\n </name>\n <name type=\"corporate\">\n <namePart>Library of Congress</namePart>\n <namePart>National Digital Library Program.</namePart>\n </name>\n <typeOfResource>software, multimedia</typeOfResource>\n <originInfo>\n <place>\n <placeTerm type=\"code\" authority=\"marccountry\">dcu</placeTerm>\n </place>\n <place>\n <placeTerm type=\"text\">Washington, D.C</placeTerm>\n </place>\n <publisher>Library of Congress</publisher>\n <dateIssued>1998-]</dateIssued>\n <dateIssued point=\"start\" encoding=\"marc\">1998</dateIssued>\n <dateIssued point=\"end\" encoding=\"marc\">9999</dateIssued>\n <issuance>monographic</issuance>\n </originInfo>\n <language>\n <languageTerm type=\"code\" authority=\"iso639-2b\">eng</languageTerm>\n </language>\n <physicalDescription>\n <form authority=\"marcform\">electronic</form>\n <form authority=\"gmd\">electronic resource</form>\n <form>Computer data and programs.</form>\n </physicalDescription>\n <abstract>Presents over two hundred social dance manuals, pocket-sized books with diagrams used by itinerant dancing masters to teach the American gentry the latest dance steps. Includes anti-dance manuals as well as treatises on etiquette. Offered as part of the American Memory online resource compiled by the National Digital Library Program of the Library of Congress.</abstract>\n <note>Title from title screen dated Mar. 23, 1998.</note>\n <note type=\"system details\">System requirements: World Wide Web (WWW) browser software.</note>\n <note type=\"system details\">Mode of access: Internet.</note>\n <subject>\n <geographicCode authority=\"marcgac\">n-us---</geographicCode>\n </subject>\n <subject authority=\"lcsh\">\n <topic>Ballroom dancing</topic>\n <geographic>United States</geographic>\n </subject>\n <classification authority=\"lcc\">GV1623</classification>\n <classification authority=\"ddc\" edition=\"13\">793.3</classification>\n <location>\n <url displayLabel=\"electronic resource\" usage=\"primary display\">http://hdl.loc.gov/loc.music/collmus.mu000010</url>\n </location>\n <identifier type=\"lccn\">98801326</identifier>\n <identifier type=\"hdl\">hdl:loc.music/collmus.mu000010</identifier>\n <identifier type=\"hdl\">hdl:loc.music/collmus.mu000010</identifier>\n <recordInfo>\n <descriptionStandard>aacr</descriptionStandard>\n <recordContentSource authority=\"marcorg\">DLC</recordContentSource>\n <recordCreationDate encoding=\"marc\">980323</recordCreationDate>\n <recordChangeDate encoding=\"iso8601\">20060131154904.0</recordChangeDate>\n <recordIdentifier>5004836</recordIdentifier>\n <recordOrigin>Converted from MARCXML to MODS version 3.4 using MARC21slim2MODS3-4.xsl\n \t\t(Revision 1.76 2012/02/01)</recordOrigin>\n </recordInfo>\n</mods>",
"items": [
{
"itemType": "computerProgram",
"title": "The American ballroom companion: dance instruction manuals, ca. 1600-1920",
"creators": [
{
"lastName": "Library of Congress: Music Division.",
"fieldMode": 1,
"creatorType": "programmer"
},
{
"lastName": "Library of Congress: National Digital Library Program.",
"fieldMode": 1,
"creatorType": "programmer"
}
],
"date": "1998",
"abstractNote": "Presents over two hundred social dance manuals, pocket-sized books with diagrams used by itinerant dancing masters to teach the American gentry the latest dance steps. Includes anti-dance manuals as well as treatises on etiquette. Offered as part of the American Memory online resource compiled by the National Digital Library Program of the Library of Congress.",
"callNumber": "GV1623, 793.3",
"company": "Library of Congress",
"place": "Washington, D.C",
"url": "http://hdl.loc.gov/loc.music/collmus.mu000010",
"attachments": [],
"tags": [
{
"tag": "Ballroom dancing"
}
],
"notes": [
{
"note": "Title from title screen dated Mar. 23, 1998."
},
{
"note": "system details: System requirements: World Wide Web (WWW) browser software."
},
{
"note": "system details: Mode of access: Internet."
}
],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<mods xmlns=\"http://www.loc.gov/mods/v3\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.loc.gov/mods/v3 http://www.loc.gov/standards/mods/v3/mods-3-4.xsd\" version=\"3.4\">\n <titleInfo>\n <title>Papers from the First International Workshop on Plasma-Based Ion Implantation</title>\n <subTitle>4-6 August 1993, University of Wisconsin--Madison, Madison, Wisconsin</subTitle>\n </titleInfo>\n <name type=\"conference\">\n <namePart>International Workshop on Plasma-Based Ion Implantation 1993 : University of Wisconsin--Madison)</namePart>\n </name>\n <name type=\"personal\">\n <namePart>Conrad, John R.</namePart>\n </name>\n <name type=\"personal\">\n <namePart>Sridharan, Kumar.</namePart>\n </name>\n <name type=\"corporate\">\n <namePart>Applied Science and Technology (ASTeX), Inc</namePart>\n </name>\n <typeOfResource>text</typeOfResource>\n <genre authority=\"marcgt\">bibliography</genre>\n <genre authority=\"marcgt\">conference publication</genre>\n <originInfo>\n <place>\n <placeTerm type=\"code\" authority=\"marccountry\">nyu</placeTerm>\n </place>\n <place>\n <placeTerm type=\"text\">New York</placeTerm>\n </place>\n <publisher>Published for the American Vacuum Society by the American Institute of Physics</publisher>\n <dateIssued>1994</dateIssued>\n <issuance>monographic</issuance>\n </originInfo>\n <language>\n <languageTerm type=\"code\" authority=\"iso639-2b\">eng</languageTerm>\n </language>\n <physicalDescription>\n <form authority=\"marcform\">print</form>\n <extent>p. 813-998 : ill. ; 30 cm.</extent>\n </physicalDescription>\n <note>\"Published in both 1994 March/April issue of the Journal of vacuum science and technology B, vol. 12, no. 2\"--T.p. verso.</note>\n <note type=\"bibliography\">Includes bibliographical references and index.</note>\n <subject authority=\"lcsh\">\n <topic>Ion implantation</topic>\n <topic>Congresses</topic>\n </subject>\n <classification authority=\"lcc\">TS695.25 .I57 1993</classification>\n <classification authority=\"ddc\" edition=\"21\">621.3815/2</classification>\n <relatedItem type=\"host\">\n <titleInfo>\n <title>Journal of vacuum science & technology. B, Microelectronics and nanometer structures processing, measurement and phenomena</title>\n </titleInfo>\n <identifier type=\"issn\">1071-1023</identifier>\n <identifier type=\"local\">(OCoLC)23276603</identifier>\n <identifier type=\"local\">(DLC)sn 92021098</identifier>\n <part>\n <text>2nd ser., v. 12, no. 2</text>\n </part>\n </relatedItem>\n <identifier type=\"isbn\">1563963442</identifier>\n <identifier type=\"lccn\">97129132</identifier>\n <identifier type=\"oclc\">35547175</identifier>\n <recordInfo>\n <descriptionStandard>aacr</descriptionStandard>\n <recordContentSource authority=\"marcorg\">DLC</recordContentSource>\n <recordCreationDate encoding=\"marc\">940504</recordCreationDate>\n <recordChangeDate encoding=\"iso8601\">19970618142736.9</recordChangeDate>\n <recordIdentifier>4968605</recordIdentifier>\n <recordOrigin>Converted from MARCXML to MODS version 3.4 using MARC21slim2MODS3-4.xsl\n \t\t(Revision 1.76 2012/02/01)</recordOrigin>\n </recordInfo>\n</mods>",
"items": [
{
"itemType": "book",
"title": "Papers from the First International Workshop on Plasma-Based Ion Implantation: 4-6 August 1993, University of Wisconsin--Madison, Madison, Wisconsin",
"creators": [
{
"lastName": "International Workshop on Plasma-Based Ion Implantation 1993 : University of Wisconsin--Madison)",
"fieldMode": 1,
"creatorType": "author"
},
{
"firstName": "John R.",
"lastName": "Conrad",
"creatorType": "author"
},
{
"firstName": "Kumar",
"lastName": "Sridharan",
"creatorType": "author"
},
{
"lastName": "Applied Science and Technology (ASTeX), Inc",
"fieldMode": 1,
"creatorType": "author"
}
],
"date": "1994",
"ISBN": "1563963442",
"callNumber": "TS695.25 .I57 1993, 621.3815/2",
"language": "eng",
"place": "New York",
"publisher": "Published for the American Vacuum Society by the American Institute of Physics",
"attachments": [],
"tags": [
{
"tag": "Congresses"
},
{
"tag": "Ion implantation"
}
],
"notes": [
{
"note": "\"Published in both 1994 March/April issue of the Journal of vacuum science and technology B, vol. 12, no. 2\"--T.p. verso."
},
{
"note": "bibliography: Includes bibliographical references and index."
}
],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<mods xmlns=\"http://www.loc.gov/mods/v3\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.loc.gov/mods/v3 http://www.loc.gov/standards/mods/v3/mods-3-4.xsd\" version=\"3.4\">\n <titleInfo>\n <title>Campbell County, Wyoming</title>\n </titleInfo>\n <name type=\"corporate\">\n <namePart>Campbell County Chamber of Commerce</namePart>\n </name>\n <typeOfResource>cartographic</typeOfResource>\n <genre authority=\"marcgt\">map</genre>\n <originInfo>\n <place>\n <placeTerm type=\"code\" authority=\"marccountry\">wyu</placeTerm>\n </place>\n <place>\n <placeTerm type=\"text\">Gillette, Wyo.]</placeTerm>\n </place>\n <publisher>Campbell County Chamber of Commerce</publisher>\n <dateIssued>[1982?]</dateIssued>\n <dateIssued encoding=\"marc\">1982</dateIssued>\n <issuance>monographic</issuance>\n </originInfo>\n <language>\n <languageTerm type=\"code\" authority=\"iso639-2b\">eng</languageTerm>\n </language>\n <physicalDescription>\n <extent>1 map ; 33 x 15 cm.</extent>\n </physicalDescription>\n <note>In lower right corner: Kintzels-Casper.</note>\n <subject>\n <cartographics>\n <scale>Scale [ca. 1:510,000].</scale>\n </cartographics>\n </subject>\n <subject authority=\"lcsh\">\n <geographic>Campbell County (Wyo.)</geographic>\n <topic>Maps</topic>\n </subject>\n <classification authority=\"lcc\">G4263.C3 1982 .C3</classification>\n <identifier type=\"lccn\">83691515</identifier>\n <recordInfo>\n <descriptionStandard>aacr</descriptionStandard>\n <recordContentSource authority=\"marcorg\">DLC</recordContentSource>\n <recordCreationDate encoding=\"marc\">830222</recordCreationDate>\n <recordChangeDate encoding=\"iso8601\">19830426000000.0</recordChangeDate>\n <recordIdentifier>5466714</recordIdentifier>\n <recordOrigin>Converted from MARCXML to MODS version 3.4 using MARC21slim2MODS3-4.xsl\n \t\t(Revision 1.76 2012/02/01)</recordOrigin>\n </recordInfo>\n</mods>",
"items": [
{
"itemType": "map",
"title": "Campbell County, Wyoming",
"creators": [
{
"lastName": "Campbell County Chamber of Commerce",
"fieldMode": 1,
"creatorType": "cartographer"
}
],
"date": "1982",
"callNumber": "G4263.C3 1982 .C3",
"language": "eng",
"place": "Gillette, Wyo.]",
"publisher": "Campbell County Chamber of Commerce",
"scale": "1:510,000",
"attachments": [],
"tags": [
{
"tag": "Maps"
}
],
"notes": [
{
"note": "In lower right corner: Kintzels-Casper."
}
],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<mods xmlns=\"http://www.loc.gov/mods/v3\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.loc.gov/mods/v3 http://www.loc.gov/standards/mods/v3/mods-3-4.xsd\" version=\"3.4\">\n <titleInfo>\n <title>3 Viennese arias</title>\n <subTitle>for soprano, obbligato clarinet in B flat, and piano</subTitle>\n </titleInfo>\n <titleInfo type=\"alternative\">\n <title>Three Viennese arias</title>\n </titleInfo>\n <titleInfo type=\"alternative\">\n <title>Viennese arias</title>\n </titleInfo>\n <name type=\"personal\">\n <namePart>Lawson, Colin (Colin James)</namePart>\n </name>\n <name type=\"personal\">\n <namePart>Joseph</namePart>\n <namePart type=\"termsOfAddress\">I, Holy Roman Emperor</namePart>\n <namePart type=\"date\">1678-1711</namePart>\n </name>\n <name type=\"personal\">\n <namePart>Bononcini, Giovanni</namePart>\n <namePart type=\"date\">1670-1747</namePart>\n </name>\n <name type=\"personal\">\n <namePart>Bononcini, Giovanni</namePart>\n <namePart type=\"date\">1670-1747</namePart>\n </name>\n <typeOfResource>notated music</typeOfResource>\n <originInfo>\n <place>\n <placeTerm type=\"code\" authority=\"marccountry\">enk</placeTerm>\n </place>\n <place>\n <placeTerm type=\"text\">London</placeTerm>\n </place>\n <publisher>Nova Music</publisher>\n <dateIssued>c1984</dateIssued>\n <dateIssued encoding=\"marc\">1984</dateIssued>\n <issuance>monographic</issuance>\n </originInfo>\n <language>\n <languageTerm type=\"code\" authority=\"iso639-2b\">ita</languageTerm>\n </language>\n <language objectPart=\"libretto\">\n <languageTerm type=\"code\" authority=\"iso639-2b\">eng</languageTerm>\n </language>\n <physicalDescription>\n <form authority=\"marcform\">print</form>\n <extent>1 score (12 p.) + 2 parts ; 31 cm.</extent>\n </physicalDescription>\n <tableOfContents>Tutto in pianto il cor struggete / Emperor Joseph I -- E sempre inquieto quel core infelice : from Endimione / G. Bononcini -- L'adorata genitrice : from Muzio [i.e. Mutio] Scevola / G. Bononcini.</tableOfContents>\n <note>Opera excerpts.</note>\n <note>Acc. arr. for piano; obbligato for the 2nd-3rd excerpts originally for chalumeau.</note>\n <note>Italian words.</note>\n <note>Cover title.</note>\n <note>The 1st excerpt composed for inclusion in M.A. Ziani's Chilonida.</note>\n <note>Texts with English translations on cover p. [2].</note>\n <subject authority=\"lcsh\">\n <topic>Operas</topic>\n <topic>Excerpts, Arranged</topic>\n <topic>Scores and parts</topic>\n </subject>\n <subject authority=\"lcsh\">\n <topic>Songs (High voice) with instrumental ensemble</topic>\n <topic>Scores and parts</topic>\n </subject>\n <classification authority=\"lcc\">M1506 .A14 1984</classification>\n <relatedItem type=\"series\">\n <titleInfo>\n <title>Music for voice and instrument</title>\n </titleInfo>\n </relatedItem>\n <relatedItem type=\"constituent\">\n <titleInfo>\n <title>Tutto in pianto il cor struggete; arr. 1984</title>\n </titleInfo>\n <name type=\"personal\">\n <namePart>Joseph</namePart>\n <namePart type=\"termsOfAddress\">I, Holy Roman Emperor</namePart>\n <namePart type=\"date\">1678-1711</namePart>\n </name>\n </relatedItem>\n <relatedItem type=\"constituent\">\n <titleInfo>\n <title>Endimione. arr. 1984</title>\n <partName>E sempre inquieto quel core infelice; arr. 1984</partName>\n </titleInfo>\n <name type=\"personal\">\n <namePart>Bononcini, Giovanni,</namePart>\n <namePart type=\"date\">1670-1747</namePart>\n </name>\n </relatedItem>\n <relatedItem type=\"constituent\">\n <titleInfo>\n <title>Mutio Scevola. arr. 1984</title>\n <partName>Adorata genitrice; arr. 1984</partName>\n </titleInfo>\n <name type=\"personal\">\n <namePart>Bononcini, Giovanni,</namePart>\n <namePart type=\"date\">1670-1747</namePart>\n </name>\n </relatedItem>\n <identifier type=\"lccn\">85753651</identifier>\n <identifier type=\"music publisher\">N.M. 275 Nova Music</identifier>\n <recordInfo>\n <descriptionStandard>aacr</descriptionStandard>\n <recordContentSource authority=\"marcorg\">DLC</recordContentSource>\n <recordCreationDate encoding=\"marc\">850813</recordCreationDate>\n <recordChangeDate encoding=\"iso8601\">19950601141653.9</recordChangeDate>\n <recordIdentifier>5594130</recordIdentifier>\n <recordOrigin>Converted from MARCXML to MODS version 3.4 using MARC21slim2MODS3-4.xsl\n \t\t(Revision 1.76 2012/02/01)</recordOrigin>\n </recordInfo>\n</mods>",
"items": [
{
"itemType": "document",
"title": "3 Viennese arias: for soprano, obbligato clarinet in B flat, and piano",
"creators": [
{
"firstName": "Colin (Colin James)",
"lastName": "Lawson",
"creatorType": "author"
},
{
"firstName": "",
"lastName": "Joseph",
"creatorType": "author"
},
{
"firstName": "Giovanni",
"lastName": "Bononcini",
"creatorType": "author"
},
{
"firstName": "Giovanni",
"lastName": "Bononcini",
"creatorType": "author"
}
],
"date": "1984",
"callNumber": "M1506 .A14 1984",
"language": "ita; eng",
"publisher": "Nova Music",
"attachments": [],
"tags": [
{
"tag": "Excerpts, Arranged"
},
{
"tag": "Operas"
},
{
"tag": "Scores and parts"
},
{
"tag": "Scores and parts"
},
{
"tag": "Songs (High voice) with instrumental ensemble"
}
],
"notes": [
{
"note": "Opera excerpts."
},
{
"note": "Acc. arr. for piano; obbligato for the 2nd-3rd excerpts originally for chalumeau."
},
{
"note": "Italian words."
},
{
"note": "Cover title."
},
{
"note": "The 1st excerpt composed for inclusion in M.A. Ziani's Chilonida."
},
{
"note": "Texts with English translations on cover p. [2]."
},
{
"note": "Table of Contents: Tutto in pianto il cor struggete / Emperor Joseph I -- E sempre inquieto quel core infelice : from Endimione / G. Bononcini -- L'adorata genitrice : from Muzio [i.e. Mutio] Scevola / G. Bononcini."
}
],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<mods xmlns=\"http://www.loc.gov/mods/v3\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.loc.gov/mods/v3 http://www.loc.gov/standards/mods/v3/mods-3-4.xsd\" version=\"3.4\">\n <titleInfo>\n <title>2001 bluegrass odyssey</title>\n </titleInfo>\n <name type=\"corporate\">\n <namePart>Roustabouts (Musical group)</namePart>\n <role>\n <roleTerm type=\"code\" authority=\"marcrelator\">prf</roleTerm>\n </role>\n </name>\n <typeOfResource>sound recording-musical</typeOfResource>\n <originInfo>\n <place>\n <placeTerm type=\"code\" authority=\"marccountry\">ncu</placeTerm>\n </place>\n <place>\n <placeTerm type=\"text\">Charlotte, NC</placeTerm>\n </place>\n <publisher>Lamon Records</publisher>\n <dateIssued>p1980</dateIssued>\n <dateIssued encoding=\"marc\">1980</dateIssued>\n <issuance>monographic</issuance>\n </originInfo>\n <language>\n <languageTerm type=\"code\" authority=\"iso639-2b\">eng</languageTerm>\n </language>\n <physicalDescription>\n <form authority=\"gmd\">sound recording</form>\n <form authority=\"marccategory\">sound recording</form>\n <form authority=\"marcsmd\">sound disc</form>\n <extent>1 sound disc : analog, 33 1/3 rpm ; 12 in.</extent>\n </physicalDescription>\n <tableOfContents>Bluegrass odyssey -- Hills of Tennessee -- Sassafrass -- Muddy river -- Take your shoes off Moses -- Don't let Smokey Mountain smoke get in your eyes -- Farewell party -- Faded love -- Super sonic bluegrass -- Old love letters -- Will the circle be unbroken.</tableOfContents>\n <note>Brief record.</note>\n <note type=\"performers\">Performed by the Roustabouts.</note>\n <subject authority=\"lcsh\">\n <topic>Country music</topic>\n <temporal>1971-1980</temporal>\n </subject>\n <subject authority=\"lcsh\">\n <topic>Bluegrass music</topic>\n <temporal>1971-1980</temporal>\n </subject>\n <classification authority=\"lcc\">Lamon Records LR-4280</classification>\n <identifier type=\"lccn\">94759273</identifier>\n <identifier type=\"issue number\">LR-4280 Lamon Records</identifier>\n <identifier type=\"oclc\">31023015</identifier>\n <recordInfo>\n <descriptionStandard>aacr</descriptionStandard>\n <recordContentSource authority=\"marcorg\">DLC</recordContentSource>\n <recordCreationDate encoding=\"marc\">940829</recordCreationDate>\n <recordChangeDate encoding=\"iso8601\">19940830080228.8</recordChangeDate>\n <recordIdentifier>5718053</recordIdentifier>\n <recordOrigin>Converted from MARCXML to MODS version 3.4 using MARC21slim2MODS3-4.xsl\n \t\t(Revision 1.76 2012/02/01)</recordOrigin>\n </recordInfo>\n</mods>",
"items": [
{
"itemType": "audioRecording",
"title": "2001 bluegrass odyssey",
"creators": [
{
"lastName": "Roustabouts (Musical group)",
"fieldMode": 1,
"creatorType": "performer"
}
],
"date": "1980",
"callNumber": "Lamon Records LR-4280",
"label": "Lamon Records",
"language": "eng",
"numberOfVolumes": "1",
"place": "Charlotte, NC",
"attachments": [],
"tags": [
{
"tag": "Bluegrass music"
},
{
"tag": "Country music"
}
],
"notes": [
{
"note": "Brief record."
},
{
"note": "performers: Performed by the Roustabouts."
},
{
"note": "Table of Contents: Bluegrass odyssey -- Hills of Tennessee -- Sassafrass -- Muddy river -- Take your shoes off Moses -- Don't let Smokey Mountain smoke get in your eyes -- Farewell party -- Faded love -- Super sonic bluegrass -- Old love letters -- Will the circle be unbroken."
}
],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<mods xmlns=\"http://www.loc.gov/mods/v3\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.loc.gov/mods/v3 http://www.loc.gov/standards/mods/v3/mods-3-4.xsd\" version=\"3.4\">\n <titleInfo>\n <title>Massachusetts death and marriage records, 1837-1897</title>\n </titleInfo>\n <typeOfResource collection=\"yes\" manuscript=\"yes\">mixed material</typeOfResource>\n <originInfo>\n <issuance>monographic</issuance>\n </originInfo>\n <language>\n <languageTerm type=\"code\" authority=\"iso639-2b\">eng</languageTerm>\n </language>\n <physicalDescription>\n <extent>2 volumes.</extent>\n </physicalDescription>\n <abstract>Records of deaths and marriages in Millbury and Springfield, Mass.</abstract>\n <accessCondition type=\"restrictionOnAccess\">Open to research.</accessCondition>\n <note type=\"acquisition\">Purchase, 1946.</note>\n <note type=\"language\">Collection material in English.</note>\n <note>Forms part of: Miscellaneous Manuscripts collection.</note>\n <subject authority=\"lcsh\">\n <topic>Registers of births, etc</topic>\n <geographic>Massachusetts</geographic>\n <geographic>Millbury</geographic>\n </subject>\n <subject authority=\"lcsh\">\n <topic>Registers of births, etc</topic>\n <geographic>Massachusetts</geographic>\n <geographic>Springfield</geographic>\n </subject>\n <location>\n <physicalLocation>Library of Congress Manuscript Division Washington, D.C. 20540 USA</physicalLocation>\n <physicalLocation xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"http://hdl.loc.gov/loc.mss/mss.home\">http://hdl.loc.gov/loc.mss/mss.home</physicalLocation>\n </location>\n <identifier type=\"lccn\">mm 83001404</identifier>\n <recordInfo>\n <descriptionStandard>aacr</descriptionStandard>\n <descriptionStandard>dacs</descriptionStandard>\n <recordContentSource authority=\"marcorg\">DLC</recordContentSource>\n <recordCreationDate encoding=\"marc\">830926</recordCreationDate>\n <recordChangeDate encoding=\"iso8601\">20110707103737.0</recordChangeDate>\n <recordIdentifier>5810505</recordIdentifier>\n <recordOrigin>Converted from MARCXML to MODS version 3.4 using MARC21slim2MODS3-4.xsl\n \t\t(Revision 1.76 2012/02/01)</recordOrigin>\n </recordInfo>\n</mods>",
"items": [
{
"itemType": "document",
"title": "Massachusetts death and marriage records, 1837-1897",
"creators": [],
"abstractNote": "Records of deaths and marriages in Millbury and Springfield, Mass.",
"archiveLocation": "Library of Congress Manuscript Division Washington, D.C. 20540 USA; http://hdl.loc.gov/loc.mss/mss.home",
"language": "eng",
"rights": "Open to research.",
"attachments": [],
"tags": [
{
"tag": "Registers of births, etc"
},
{
"tag": "Registers of births, etc"
}
],
"notes": [
{
"note": "acquisition: Purchase, 1946."
},
{
"note": "language: Collection material in English."
},
{
"note": "Forms part of: Miscellaneous Manuscripts collection."
}
],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<mods version=\"3.6\" xmlns=\"http://www.loc.gov/mods/v3\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.loc.gov/mods/v3 http://www.loc.gov/standards/mods/v3/mods-3-6.xsd\">\n <titleInfo>\n <title>Ludvig Holbergs udvalgte Skrifter</title>\n <partNumber>D. 1-6 B. 4</partNumber>\n <partName>Holbergs Comedier</partName>\n </titleInfo>\n <titleInfo type=\"alternative\">\n <title>Den honette Ambition</title>\n </titleInfo>\n <titleInfo type=\"alternative\">\n <title>Den Stundesløse</title>\n </titleInfo>\n <titleInfo type=\"alternative\">\n <title>De Usynlige</title>\n </titleInfo>\n <titleInfo type=\"alternative\">\n <title>Pernilles korte Frøkenstand</title>\n </titleInfo>\n <titleInfo type=\"alternative\">\n <title>Erasmus Montanus</title>\n </titleInfo>\n <titleInfo type=\"alternative\">\n <title>Det lykkelige Skibbrud</title>\n </titleInfo>\n <titleInfo type=\"alternative\">\n <title>Den pantsatte Bondedreng</title>\n </titleInfo>\n <titleInfo type=\"alternative\">\n <title>Comedier</title>\n </titleInfo>\n <titleInfo type=\"alternative\">\n <title>Udvalgte Skrifter</title>\n </titleInfo>\n <name type=\"personal\" usage=\"primary\">\n <namePart>Holberg, Ludvig</namePart>\n <namePart type=\"date\">1684-1754</namePart>\n <nameIdentifier>bibsys.no:authority:90073658</nameIdentifier>\n </name>\n <name type=\"personal\">\n <namePart>Rahbek, K.L.</namePart>\n <nameIdentifier>bibsys.no:authority:90253663</nameIdentifier>\n </name>\n <typeOfResource>text</typeOfResource>\n <genre type=\"literaryform\">fiction</genre>\n <genre authority=\"marcgt\">fiction</genre>\n <originInfo>\n <place>\n <placeTerm authority=\"marccountry\" type=\"code\">dk</placeTerm>\n </place>\n <place>\n <placeTerm authority=\"iso3166\" type=\"code\">dk</placeTerm>\n </place>\n <place>\n <placeTerm type=\"text\">Kjøbenhavn</placeTerm>\n </place>\n <publisher>Schultz</publisher>\n <dateIssued>1805</dateIssued>\n <issuance>monographic</issuance>\n </originInfo>\n <language>\n <languageTerm authority=\"iso639-2b\" type=\"code\">dan</languageTerm>\n </language>\n <physicalDescription>\n <form authority=\"marcform\">print</form>\n <form authority=\"marccategory\">electronic resource</form>\n <form authority=\"marcsmd\">remote</form>\n <form authority=\"marccategory\">text</form>\n <form authority=\"marcsmd\">regular print</form>\n <extent>XII, 532 s.</extent>\n </physicalDescription>\n <accessCondition type=\"restriction on access\"/>\n <note type=\"reproduction\">Elektronisk reproduksjon [Norge] Nasjonalbiblioteket Digital 2014-02-07</note>\n <subject>\n <name type=\"personal\">\n <namePart>Holberg, Ludvig</namePart>\n <namePart type=\"date\">1684-1754</namePart>\n </name>\n </subject>\n <location>\n <url displayLabel=\"Fulltekst NB digitalisert\" note=\"Elektronisk reproduksjon. Gratis\" usage=\"primary display\">http://urn.nb.no/URN:NBN:no-nb_digibok_2012051624006</url>\n </location>\n <location>\n <url displayLabel=\"Fulltekst NB digitalisert\" note=\"Elektronisk reproduksjon. Gratis\">http://urn.nb.no/URN:NBN:no-nb_digibok_2014012024006</url>\n </location>\n <location>\n <url displayLabel=\"electronic resource\" note=\"Elektronisk reproduksjon. Gratis\" usage=\"primary display\">http://urn.nb.no/URN:NBN:no-nb_digibok_2012051624006</url>\n </location>\n <identifier type=\"urn\">URN:NBN:no-nb_digibok_2012051624006</identifier>\n <location>\n <url displayLabel=\"electronic resource\" note=\"Elektronisk reproduksjon. Gratis\">http://urn.nb.no/URN:NBN:no-nb_digibok_2014012024006</url>\n </location>\n <identifier type=\"urn\">URN:NBN:no-nb_digibok_2014012024006</identifier>\n <location>\n <physicalLocation authority=\"isil\">NO-0183300</physicalLocation>\n <holdingSimple>\n <copyInformation>\n <subLocation>0183300</subLocation>\n </copyInformation>\n </holdingSimple>\n </location>\n <location>\n <physicalLocation authority=\"isil\">NO-0030100</physicalLocation>\n <holdingSimple>\n <copyInformation>\n <subLocation>0030100</subLocation>\n <note>(ib.) (Proveniens Johan Schweigaard) (Til bruk på NB Oslos lesesal)</note>\n </copyInformation>\n </holdingSimple>\n </location>\n <location>\n <physicalLocation authority=\"isil\">NO-0030100</physicalLocation>\n <holdingSimple>\n <copyInformation>\n <subLocation>0030100</subLocation>\n <note>(ib.) (Til bruk på Spesiallesesalen)</note>\n </copyInformation>\n </holdingSimple>\n </location>\n <location>\n <physicalLocation authority=\"isil\">NO-0030100</physicalLocation>\n <holdingSimple>\n <copyInformation>\n <subLocation>0030100</subLocation>\n <note>(ib.) (Til bruk på Spesiallesesalen)</note>\n </copyInformation>\n </holdingSimple>\n </location>\n <relatedItem displayLabel=\"Inkludert i\" type=\"host\">\n <titleInfo>\n <title>Ludvig Holbergs udvalgte Skrifter. D. 1-6, Holbergs Comedier</title>\n </titleInfo>\n <name>\n <namePart>Holberg, Ludvig, 1684-1754</namePart>\n </name>\n <originInfo>\n <publisher>Kjøbenhavn : Schultz, 1804-1806</publisher>\n </originInfo>\n <identifier type=\"local\">999417135394702201</identifier>\n <part>\n <text>B. 4</text>\n </part>\n </relatedItem>\n <identifier type=\"oldoaiid\">oai:bibsys.no:biblio:941621081</identifier>\n <identifier type=\"oldoaiid\">oai:bibsys.no:biblio:121586413</identifier>\n <identifier type=\"uri\">http://urn.nb.no/URN:NBN:no-nb_digibok_2012051624006</identifier>\n <identifier type=\"uri\">http://urn.nb.no/URN:NBN:no-nb_digibok_2014012024006</identifier>\n <recordInfo>\n <descriptionStandard>katreg</descriptionStandard>\n <recordContentSource authority=\"marcorg\">NO-TrBIB</recordContentSource>\n <recordCreationDate encoding=\"marc\">120621</recordCreationDate>\n <recordChangeDate encoding=\"iso8601\">20170126171829.0</recordChangeDate>\n <recordIdentifier source=\"nb.bibsys.no\">999416210814702202</recordIdentifier>\n <recordOrigin>Converted from MARCXML to MODS version 3.6 using a customized MARC21slim2MODS3-5.xsl\n (based on 3.5 Revision 1.106 2014/12/19)</recordOrigin>\n <languageOfCataloging>\n <languageTerm authority=\"iso639-2b\" type=\"code\">nob</languageTerm>\n </languageOfCataloging>\n </recordInfo>\n <relatedItem displayLabel=\"Del av Bibliografien\" type=\"host\">\n <titleInfo>\n <title>Schweigaardsamlingen</title>\n </titleInfo>\n <genre authority=\"marcgt\">bibliography</genre>\n </relatedItem>\n <identifier type=\"sesamid\">4c8b333d27a2eb37c35f99ce42a679bf</identifier>\n <identifier type=\"oaiid\">oai:nb.bibsys.no:999416210814702202</identifier>\n</mods>",
"items": [
{
"itemType": "book",
"title": "Ludvig Holbergs udvalgte Skrifter. D. 1-6 B. 4: Holbergs Comedier",
"creators": [
{
"firstName": "Ludvig",
"lastName": "Holberg",
"creatorType": "author"
},
{
"firstName": "K. L.",
"lastName": "Rahbek",
"creatorType": "author"
},
{
"lastName": "Holberg, Ludvig, 1684-1754",
"fieldMode": 1,
"creatorType": "contributor"
}
],
"date": "1805",
"archiveLocation": "NO-0183300; NO-0030100; NO-0030100; NO-0030100",
"language": "dan",
"place": "Kjøbenhavn",
"publisher": "Kjøbenhavn : Schultz, 1804-1806",
"url": "http://urn.nb.no/URN:NBN:no-nb_digibok_2012051624006",
"attachments": [],
"tags": [],
"notes": [
{
"note": "reproduction: Elektronisk reproduksjon [Norge] Nasjonalbiblioteket Digital 2014-02-07"
}
],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<mods:mods xmlns:mods=\"http://www.loc.gov/mods/v3\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.loc.gov/mods/v3 http://www.loc.gov/standards/mods/v3/mods-3-7.xsd\" version=\"3.7\">\n\t<mods:titleInfo>\n\t\t<mods:title>[Brief Josef Blaas' an Albrecht Penck]</mods:title>\n\t</mods:titleInfo>\n\t<mods:name type=\"personal\" authority=\"DE-588\" authorityURI=\"http://d-nb.info/gnd/\" valueURI=\"http://d-nb.info/gnd/116198427\">\n\t\t<mods:displayForm>Blaas, Josef</mods:displayForm>\n\t\t<mods:namePart>Blaas, Josef</mods:namePart>\n\t\t<mods:role>\n\t\t\t<mods:roleTerm authority=\"MARC Code List for Relators Scheme\" authorityURI=\"http://id.loc.gov/vocabulary/relators/\" type=\"code\" lang=\"eng\" valueURI=\"http://id.loc.gov/vocabulary/relators/cre\">cre</mods:roleTerm>\n\t\t\t<mods:roleTerm type=\"text\" lang=\"ger\">Verfasser</mods:roleTerm>\n\t\t</mods:role>\n\t</mods:name>\n\t<mods:name type=\"personal\" authority=\"DE-588\" authorityURI=\"http://d-nb.info/gnd/\" valueURI=\"http://d-nb.info/gnd/118739883\">\n\t\t<mods:displayForm>Penck, Albrecht</mods:displayForm>\n\t\t<mods:namePart>Penck, Albrecht</mods:namePart>\n\t\t<mods:role>\n\t\t\t<mods:roleTerm authority=\"MARC Code List for Relators Scheme\" authorityURI=\"http://id.loc.gov/vocabulary/relators/\" type=\"code\" lang=\"eng\" valueURI=\"http://id.loc.gov/vocabulary/relators/rcp\">rcp</mods:roleTerm>\n\t\t\t<mods:roleTerm type=\"text\" lang=\"ger\">Adressat</mods:roleTerm>\n\t\t</mods:role>\n\t</mods:name>\n\t<mods:genre lang=\"ger\" authorityURI=\"http://d-nb.info/gnd/\" valueURI=\"http://d-nb.info/gnd/4008240-4\" authority=\"local\">Brief</mods:genre>\n\t<mods:originInfo>\n\t\t<mods:dateCreated encoding=\"w3cdtf\" keyDate=\"yes\">1930-01-14</mods:dateCreated>\n\t\t<mods:dateCreated>14.01.1930</mods:dateCreated>\n\t\t<mods:place>\n\t\t\t<mods:placeTerm type=\"text\" authorityURI=\"http://d-nb.info/gnd/\" valueURI=\"http://d-nb.info/gnd/4027096-8\">Innsbruck</mods:placeTerm>\n\t\t</mods:place>\n\t</mods:originInfo>\n\t<mods:originInfo>\n\t\t<mods:publisher>semantics</mods:publisher>\n\t\t<mods:place>\n\t\t\t<mods:placeTerm type=\"text\">Aachen</mods:placeTerm>\n\t\t</mods:place>\n\t\t<mods:dateIssued>2021</mods:dateIssued>\n\t\t<mods:edition>[Electronic ed.]</mods:edition>\n\t</mods:originInfo>\n\t<mods:language>\n\t\t<mods:languageTerm authority=\"iso639-2b\" authorityURI=\"http://id.loc.gov/vocabulary/iso639-2/\" valueURI=\"http://id.loc.gov/vocabulary/iso639-2/ger\" type=\"code\">ger</mods:languageTerm>\n\t\t<mods:languageTerm type=\"text\" lang=\"ger\">Deutsch</mods:languageTerm>\n\t</mods:language>\n\t<mods:physicalDescription>\n\t\t<mods:extent>1 Bl. ; 2 Bl.</mods:extent>\n\t</mods:physicalDescription>\n\t<mods:note type=\"formerShelvingLocation\">B E</mods:note>\n\t<mods:note type=\"systemDetails\">Handschrift</mods:note>\n\t<mods:identifier type=\"uri\">https://kalliope-verbund.info/DE-611-HS-3584958</mods:identifier>\n\t<mods:relatedItem type=\"host\">\n\t\t<mods:titleInfo>\n\t\t\t<mods:title>Korrespondenzen (Titel)</mods:title>\n\t\t</mods:titleInfo>\n\t\t<mods:name type=\"personal\" authority=\"DE-588\" authorityURI=\"http://d-nb.info/gnd/\" valueURI=\"http://d-nb.info/gnd/116198427\">\n\t\t\t<mods:displayForm>Blaas, Josef</mods:displayForm>\n\t\t\t<mods:namePart>Blaas, Josef</mods:namePart>\n\t\t\t<mods:namePart type=\"given\">J.</mods:namePart>\n\t\t\t<mods:namePart type=\"family\">Blaas</mods:namePart>\n\t\t\t<mods:namePart type=\"date\">1851-04-29</mods:namePart>\n\t\t\t<mods:role>\n\t\t\t\t<mods:roleTerm type=\"text\" lang=\"ger\">Bestandsbildner</mods:roleTerm>\n\t\t\t</mods:role>\n\t\t</mods:name>\n\t\t<mods:name type=\"personal\" authority=\"DE-588\" authorityURI=\"http://d-nb.info/gnd/\" valueURI=\"http://d-nb.info/gnd/1210871378\">\n\t\t\t<mods:displayForm>Blaas, Leo</mods:displayForm>\n\t\t\t<mods:namePart>Blaas, Leo</mods:namePart>\n\t\t\t<mods:namePart type=\"date\">1891-01-14</mods:namePart>\n\t\t\t<mods:role>\n\t\t\t\t<mods:roleTerm type=\"text\" lang=\"ger\">Bestandsbildner</mods:roleTerm>\n\t\t\t</mods:role>\n\t\t</mods:name>\n\t\t<mods:name type=\"personal\" authority=\"DE-588\" authorityURI=\"http://d-nb.info/gnd/\" valueURI=\"http://d-nb.info/gnd/1210871084\">\n\t\t\t<mods:displayForm>Blaas, Erich</mods:displayForm>\n\t\t\t<mods:namePart>Blaas, Erich</mods:namePart>\n\t\t\t<mods:namePart type=\"date\">1884-04-19</mods:namePart>\n\t\t\t<mods:role>\n\t\t\t\t<mods:roleTerm type=\"text\" lang=\"ger\">Bestandsbildner</mods:roleTerm>\n\t\t\t</mods:role>\n\t\t</mods:name>\n\t\t<mods:originInfo>\n\t\t\t<mods:edition>[Electronic ed.]</mods:edition>\n\t\t\t<mods:place>\n\t\t\t\t<mods:placeTerm type=\"text\">Aachen</mods:placeTerm>\n\t\t\t</mods:place>\n\t\t\t<mods:publisher>semantics</mods:publisher>\n\t\t\t<mods:dateIssued>2021</mods:dateIssued>\n\t\t</mods:originInfo>\n\t\t<mods:note type=\"systemDetails\">Nicht in EAD Vorhanden</mods:note>\n\t\t<mods:identifier type=\"uri\">https://kalliope-verbund.info/DE-611-BF-77880</mods:identifier>\n\t\t<mods:relatedItem type=\"host\">\n\t\t\t<mods:titleInfo>\n\t\t\t\t<mods:title>Teilnachlass Familie Blaas</mods:title>\n\t\t\t</mods:titleInfo>\n\t\t\t<mods:identifier type=\"uri\">https://kalliope-verbund.info/DE-611-BF-77879</mods:identifier>\n\t\t\t<mods:recordInfo>\n\t\t\t\t<mods:recordIdentifier source=\"DE-611\">DE-611-BF-77879</mods:recordIdentifier>\n\t\t\t</mods:recordInfo>\n\t\t</mods:relatedItem>\n\t\t<mods:relatedItem type=\"constituent\">\n\t\t\t<mods:titleInfo>\n\t\t\t\t<mods:title>Nachlass Blaas</mods:title>\n\t\t\t</mods:titleInfo>\n\t\t\t<mods:identifier type=\"uri\">https://kalliope-verbund.info/DE-611-BF-77878</mods:identifier>\n\t\t\t<mods:recordInfo>\n\t\t\t\t<mods:recordIdentifier source=\"DE-611\">DE-611-BF-77878</mods:recordIdentifier>\n\t\t\t</mods:recordInfo>\n\t\t</mods:relatedItem>\n\t\t<mods:location>\n\t\t\t<mods:physicalLocation authority=\"German ISIL- and Library Codes Agency\" authorityURI=\"http://ld.zdb-services.de/resource/organisations/\" valueURI=\"http://ld.zdb-services.de/resource/organisations/DE-2836\">Semantics Kommunikationsmanagement GmbH</mods:physicalLocation>\n\t\t\t<mods:shelfLocator>K</mods:shelfLocator>\n\t\t</mods:location>\n\t\t<mods:extension>\n\t\t\t<vlz:info xmlns:vlz=\"http://visuallibrary.net/vlz/1.0/\" version=\"2\" />\n\t\t</mods:extension>\n\t\t<mods:recordInfo>\n\t\t\t<mods:recordIdentifier source=\"DE-611\">DE-611-BF-77880</mods:recordIdentifier>\n\t\t\t<mods:recordCreationDate encoding=\"iso8601\">20200414</mods:recordCreationDate>\n\t\t\t<mods:recordChangeDate encoding=\"iso8601\">20200414</mods:recordChangeDate>\n\t\t\t<mods:recordChangeDate encoding=\"w3cdtf\">2020-12-16T14:37:29+01:00</mods:recordChangeDate>\n\t\t\t<mods:recordContentSource authority=\"German ISIL- and Library Codes Agency\" authorityURI=\"http://ld.zdb-services.de/resource/organisations/\" valueURI=\"http://ld.zdb-services.de/resource/organisations/DE-2836\">Semantics Kommunikationsmanagement GmbH</mods:recordContentSource>\n\t\t</mods:recordInfo>\n\t\t<mods:extension>\n\t\t\t<vl:id xmlns:vl=\"http://visuallibrary.net/vl\">510999</vl:id>\n\t\t\t<vl:odid xmlns:vl=\"http://visuallibrary.net/vl\">18</vl:odid>\n\t\t\t<vl:datatype xmlns:vl=\"http://visuallibrary.net/vl\">1</vl:datatype>\n\t\t\t<vl:type xmlns:vl=\"http://visuallibrary.net/vl\">60</vl:type>\n\t\t\t<vl:state xmlns:vl=\"http://visuallibrary.net/vl\">1</vl:state>\n\t\t</mods:extension>\n\t</mods:relatedItem>\n\t<mods:relatedItem type=\"constituent\">\n\t\t<mods:titleInfo>\n\t\t\t<mods:title>Nachlass Blaas</mods:title>\n\t\t</mods:titleInfo>\n\t\t<mods:identifier type=\"uri\">https://kalliope-verbund.info/DE-611-BF-77878</mods:identifier>\n\t\t<mods:recordInfo>\n\t\t\t<mods:recordIdentifier source=\"DE-611\">DE-611-BF-77878</mods:recordIdentifier>\n\t\t</mods:recordInfo>\n\t</mods:relatedItem>\n\t<mods:location>\n\t\t<mods:physicalLocation authority=\"German ISIL- and Library Codes Agency\" authorityURI=\"http://ld.zdb-services.de/resource/organisations/\" valueURI=\"http://ld.zdb-services.de/resource/organisations/DE-2836\">Semantics Kommunikationsmanagement GmbH</mods:physicalLocation>\n\t\t<mods:shelfLocator>Br E_O.</mods:shelfLocator>\n\t</mods:location>\n\t<mods:extension>\n\t\t<vlz:info xmlns:vlz=\"http://visuallibrary.net/vlz/1.0/\" version=\"2\" />\n\t</mods:extension>\n\t<mods:recordInfo>\n\t\t<mods:recordIdentifier source=\"DE-611\">DE-611-HS-3584958</mods:recordIdentifier>\n\t\t<mods:recordCreationDate encoding=\"iso8601\">20200428</mods:recordCreationDate>\n\t\t<mods:recordChangeDate encoding=\"iso8601\">20200428</mods:recordChangeDate>\n\t\t<mods:recordChangeDate encoding=\"w3cdtf\">2020-12-16T14:37:29+01:00</mods:recordChangeDate>\n\t\t<mods:recordContentSource authority=\"German ISIL- and Library Codes Agency\" authorityURI=\"http://ld.zdb-services.de/resource/organisations/\" valueURI=\"http://ld.zdb-services.de/resource/organisations/DE-2836\">Semantics Kommunikationsmanagement GmbH</mods:recordContentSource>\n\t</mods:recordInfo>\n\t<mods:identifier type=\"urn\">urn:nbn:de:s2w-13771</mods:identifier>\n</mods:mods>",
"items": [
{
"itemType": "letter",
"title": "[Brief Josef Blaas' an Albrecht Penck]",
"creators": [
{
"firstName": "Josef",
"lastName": "Blaas",
"creatorType": "author"
},
{
"firstName": "Albrecht",
"lastName": "Penck",
"creatorType": "recipient"
},
{
"firstName": "J.",
"lastName": "Blaas",
"creatorType": "contributor"
},
{
"firstName": "Leo",
"lastName": "Blaas",
"creatorType": "contributor"
},
{
"firstName": "Erich",
"lastName": "Blaas",
"creatorType": "contributor"
}
],
"date": "2021",
"archiveLocation": "Semantics Kommunikationsmanagement GmbH; Semantics Kommunikationsmanagement GmbH",
"language": "ger",
"attachments": [],
"tags": [],
"notes": [
{
"note": "formerShelvingLocation: B E"
},
{
"note": "systemDetails: Handschrift"
}
],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "<mods xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:exslt=\"http://exslt.org/common\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://www.loc.gov/mods/v3\" version=\"3.3\" xsi:schemaLocation=\"http://www.loc.gov/mods/v3 http://www.loc.gov/standards/mods/v3/mods-3-3.xsd\" ID=\"P0b002ee180250051\">\n<name type=\"corporate\">\n <namePart>United States Government Publishing Office</namePart>\n <role>\n <roleTerm authority=\"marcrelator\" type=\"text\">publisher</roleTerm>\n <roleTerm authority=\"marcrelator\" type=\"code\">pbl</roleTerm>\n</role>\n <role>\n <roleTerm authority=\"marcrelator\" type=\"text\">distributor</roleTerm>\n <roleTerm authority=\"marcrelator\" type=\"code\">dst</roleTerm>\n</role>\n</name>\n<name type=\"corporate\">\n <namePart>United States</namePart>\n <namePart>Congress</namePart>\n <namePart>Senate</namePart>\n <role>\n <roleTerm authority=\"marcrelator\" type=\"text\">author</roleTerm>\n <roleTerm authority=\"marcrelator\" type=\"code\">aut</roleTerm>\n</role>\n <description>Government Organization</description>\n</name>\n<typeOfResource>text</typeOfResource>\n<genre authority=\"marcgt\">government publication</genre>\n<language>\n <languageTerm type=\"code\" authority=\"iso639-2b\">eng</languageTerm>\n</language>\n<extension>\n <collectionCode>CHRG</collectionCode>\n <category>Congressional Committee Materials</category>\n <waisDatabaseName>111_senate_hearings</waisDatabaseName>\n <branch>legislative</branch>\n <dateIngested>2010-06-05</dateIngested>\n</extension>\n<titleInfo>\n <title>AFGHANISTAN</title>\n</titleInfo>\n<titleInfo type=\"alternative\"></titleInfo>\n<location>\n <url displayLabel=\"Content Detail\" access=\"object in context\">https://www.govinfo.gov/app/details/CHRG-111shrg56419</url>\n <url displayLabel=\"HTML rendition\" access=\"raw object\">https://www.govinfo.gov/content/pkg/CHRG-111shrg56419/html/CHRG-111shrg56419.htm</url>\n <url displayLabel=\"PDF rendition\" access=\"raw object\">https://www.govinfo.gov/content/pkg/CHRG-111shrg56419/pdf/CHRG-111shrg56419.pdf</url>\n</location>\n<originInfo>\n <publisher>U.S. Government Publishing Office</publisher>\n <dateIssued encoding=\"w3cdtf\">2009-12-02</dateIssued>\n <issuance>monographic</issuance>\n</originInfo>\n<physicalDescription>\n <note type=\"source content type\">deposited</note>\n <digitalOrigin>born digital</digitalOrigin>\n <extent>191 p.</extent>\n</physicalDescription>\n<classification authority=\"sudocs\">Y 4.AR 5/3:S.HRG.111-415</classification>\n<identifier type=\"uri\">https://www.govinfo.gov/app/details/CHRG-111shrg56419</identifier>\n<identifier type=\"local\">P0b002ee180250051</identifier>\n<identifier type=\"ILS system id\">000704270</identifier>\n<recordInfo>\n <recordContentSource authority=\"marcorg\">DGPO</recordContentSource>\n <recordCreationDate encoding=\"w3cdtf\">2010-06-05</recordCreationDate>\n <recordChangeDate encoding=\"w3cdtf\">2020-01-02</recordChangeDate>\n <recordIdentifier source=\"DGPO\">CHRG-111shrg56419</recordIdentifier>\n <recordOrigin>machine generated</recordOrigin>\n <languageOfCataloging>\n <languageTerm type=\"code\" authority=\"iso639-2b\">eng</languageTerm>\n</languageOfCataloging>\n</recordInfo>\n<accessCondition type=\"GPO scope determination\">fdlp</accessCondition>\n<extension>\n <docClass>SHRG</docClass>\n <accessId>CHRG-111shrg56419</accessId>\n <type>G</type>\n <chamber>SENATE</chamber>\n <congress>111</congress>\n <session>1</session>\n <number>415</number>\n <heldDate>2009-12-02</heldDate>\n <heldDate>2009-12-08</heldDate>\n</extension>\n<extension>\n <searchTitle>AFGHANISTAN</searchTitle>\n <granuleClass>OTHERPART</granuleClass>\n <accessId>CHRG-111shrg56419</accessId>\n <graphicsInPDF>true</graphicsInPDF>\n <isAppropriation>false</isAppropriation>\n <jacketId>56-419</jacketId>\n <congCommittee authorityId=\"ssas00\" chamber=\"S\" congress=\"111\" type=\"S\">\n <name type=\"authority-standard\">Committee on Armed Services</name>\n <name type=\"authority-short\">Armed Services</name>\n </congCommittee>\n <congMember authorityId=\"1226\" bioGuideId=\"W000437\" chamber=\"S\" congress=\"111\" gpoId=\"8263\" party=\"R\" role=\"COMMMEMBER\" state=\"MS\">\n <name type=\"parsed\">ROGER F. WICKER of Mississippi</name>\n <name type=\"authority-fnf\">Roger F. Wicker</name>\n <name type=\"authority-lnf\">Wicker, Roger F.</name>\n <name type=\"authority-other\">Roger Wicker</name>\n </congMember>\n <congMember authorityId=\"1299\" bioGuideId=\"B001210\" chamber=\"S\" congress=\"111\" gpoId=\"5833\" party=\"D\" role=\"COMMMEMBER\" state=\"WV\">\n <name type=\"parsed\">ROBERT C. BYRD of West Virginia</name>\n <name type=\"authority-fnf\">Robert C. Byrd</name>\n <name type=\"authority-lnf\">Byrd, Robert C.</name>\n <name type=\"authority-other\">Robert Carlyle Byrd</name>\n </congMember>\n <congMember authorityId=\"1384\" bioGuideId=\"L000261\" chamber=\"S\" congress=\"111\" gpoId=\"8243\" party=\"D\" role=\"COMMMEMBER\" state=\"MI\">\n <name type=\"parsed\">CARL LEVIN of Michigan</name>\n <name type=\"authority-fnf\">Carl Levin</name>\n <name type=\"authority-lnf\">Levin, Carl</name>\n <name type=\"authority-other\">Carl Milton Levin</name>\n </congMember>\n <congMember authorityId=\"1385\" bioGuideId=\"L000304\" chamber=\"S\" congress=\"111\" gpoId=\"8246\" party=\"I\" role=\"COMMMEMBER\" state=\"CT\">\n <name type=\"parsed\">JOSEPH I. LIEBERMAN of Connecticut</name>\n <name type=\"authority-fnf\">Joseph I. Lieberman</name>\n <name type=\"authority-lnf\">Lieberman, Joseph I.</name>\n <name type=\"authority-other\">Joseph Lieberman</name>\n </congMember>\n <congMember authorityId=\"1534\" bioGuideId=\"T000250\" chamber=\"S\" congress=\"111\" gpoId=\"8257\" party=\"R\" role=\"COMMMEMBER\" state=\"SD\">\n <name type=\"parsed\">JOHN THUNE of South Dakota</name>\n <name type=\"authority-fnf\">John Thune</name>\n <name type=\"authority-lnf\">Thune, John</name>\n <name type=\"authority-other\">John R. Thune</name>\n </congMember>\n <congMember authorityId=\"153\" bioGuideId=\"B001135\" chamber=\"S\" congress=\"111\" gpoId=\"8286\" party=\"R\" role=\"COMMMEMBER\" state=\"NC\">\n <name type=\"parsed\">RICHARD BURR of North Carolina</name>\n <name type=\"authority-fnf\">Richard Burr</name>\n <name type=\"authority-lnf\">Burr, Richard</name>\n </congMember>\n <congMember authorityId=\"1541\" bioGuideId=\"C001035\" chamber=\"S\" congress=\"111\" gpoId=\"8291\" party=\"R\" role=\"COMMMEMBER\" state=\"ME\">\n <name type=\"parsed\">SUSAN M. COLLINS of Maine</name>\n <name type=\"authority-fnf\">Susan M. Collins</name>\n <name type=\"authority-lnf\">Collins, Susan M.</name>\n <name type=\"authority-other\">Susan Margaret Collins</name>\n </congMember>\n <congMember authorityId=\"1548\" bioGuideId=\"S001141\" chamber=\"S\" congress=\"111\" gpoId=\"8281\" party=\"R\" role=\"COMMMEMBER\" state=\"AL\">\n <name type=\"parsed\">JEFF SESSIONS of Alabama</name>\n <name type=\"authority-fnf\">Jeff Sessions</name>\n <name type=\"authority-lnf\">Sessions, Jeff</name>\n </congMember>\n <congMember authorityId=\"1572\" bioGuideId=\"B001233\" chamber=\"S\" congress=\"111\" gpoId=\"5765\" party=\"D\" role=\"COMMMEMBER\" state=\"IN\">\n <name type=\"parsed\">EVAN BAYH of Indiana</name>\n <name type=\"authority-fnf\">Evan Bayh</name>\n <name type=\"authority-lnf\">Bayh, Evan</name>\n </congMember>\n <congMember authorityId=\"1595\" bioGuideId=\"U000038\" chamber=\"S\" congress=\"111\" gpoId=\"8259\" party=\"D\" role=\"COMMMEMBER\" state=\"CO\">\n <name type=\"parsed\">MARK UDALL of Colorado</name>\n <name type=\"authority-fnf\">Mark Udall</name>\n <name type=\"authority-lnf\">Udall, Mark</name>\n </congMember>\n <congMember authorityId=\"1609\" bioGuideId=\"V000127\" chamber=\"S\" congress=\"111\" gpoId=\"8267\" party=\"R\" role=\"COMMMEMBER\" state=\"LA\">\n <name type=\"parsed\">DAVID VITTER of Louisiana</name>\n <name type=\"authority-fnf\">David Vitter</name>\n <name type=\"authority-lnf\">Vitter, David</name>\n </congMember>\n <congMember authorityId=\"1820\" bioGuideId=\"M001170\" chamber=\"S\" congress=\"111\" gpoId=\"8252\" party=\"D\" role=\"COMMMEMBER\" state=\"MO\">\n <name type=\"parsed\">CLAIRE McCASKILL of Missouri</name>\n <name type=\"authority-fnf\">Claire McCaskill</name>\n <name type=\"authority-lnf\">McCaskill, Claire</name>\n </congMember>\n <congMember authorityId=\"1822\" bioGuideId=\"W000803\" chamber=\"S\" congress=\"111\" gpoId=\"8268\" party=\"D\" role=\"COMMMEMBER\" state=\"VA\">\n <name type=\"parsed\">JIM WEBB of Virginia</name>\n <name type=\"authority-fnf\">Jim Webb</name>\n <name type=\"authority-lnf\">Webb, Jim</name>\n <name type=\"authority-other\">Mr. James Webb</name>\n </congMember>\n <congMember authorityId=\"188\" bioGuideId=\"C000286\" chamber=\"S\" congress=\"111\" gpoId=\"8284\" party=\"R\" role=\"COMMMEMBER\" state=\"GA\">\n <name type=\"parsed\">SAXBY CHAMBLISS of Georgia</name>\n <name type=\"authority-fnf\">Saxby Chambliss</name>\n <name type=\"authority-lnf\">Chambliss, Saxby</name>\n </congMember>\n <congMember authorityId=\"1898\" bioGuideId=\"B001265\" chamber=\"S\" congress=\"111\" gpoId=\"8301\" party=\"D\" role=\"COMMMEMBER\" state=\"AK\">\n <name type=\"parsed\">MARK BEGICH of Alaska</name>\n <name type=\"authority-fnf\">Mark Begich</name>\n <name type=\"authority-lnf\">Begich, Mark</name>\n </congMember>\n <congMember authorityId=\"1902\" bioGuideId=\"H001049\" chamber=\"S\" congress=\"111\" gpoId=\"8318\" party=\"D\" role=\"COMMMEMBER\" state=\"NC\">\n <name type=\"parsed\">KAY R. HAGAN of North Carolina</name>\n <name type=\"authority-fnf\">Kay R. Hagan</name>\n <name type=\"authority-lnf\">Hagan, Kay R.</name>\n <name type=\"authority-other\">Mrs. Kay Hagan</name>\n </congMember>\n <congMember authorityId=\"1963\" bioGuideId=\"B001266\" chamber=\"S\" congress=\"111\" gpoId=\"7753\" party=\"D\" role=\"COMMMEMBER\" state=\"IL\">\n <name type=\"parsed\">ROLAND W. BURRIS of Illinois</name>\n <name type=\"authority-fnf\">Roland Burris</name>\n <name type=\"authority-lnf\">Burris, Roland</name>\n </congMember>\n <congMember authorityId=\"1971\" bioGuideId=\"L000572\" chamber=\"S\" congress=\"111\" gpoId=\"7772\" party=\"R\" role=\"COMMMEMBER\" state=\"FL\">\n <name type=\"parsed\">GEORGE S. LeMIEUX of Florida</name>\n <name type=\"authority-fnf\">George S. LeMieux</name>\n <name type=\"authority-lnf\">LeMieux, George S.</name>\n <name type=\"authority-other\">Mr. George Lemieux</name>\n </congMember>\n <congMember authorityId=\"452\" bioGuideId=\"G000359\" chamber=\"S\" congress=\"111\" gpoId=\"8335\" party=\"R\" role=\"COMMMEMBER\" state=\"SC\">\n <name type=\"parsed\">LINDSEY GRAHAM of South Carolina</name>\n <name type=\"authority-fnf\">Lindsey Graham</name>\n <name type=\"authority-lnf\">Graham, Lindsey</name>\n <name type=\"authority-other\">Lindsey O. Graham</name>\n </congMember>\n <congMember authorityId=\"583\" bioGuideId=\"I000024\" chamber=\"S\" congress=\"111\" gpoId=\"8322\" party=\"R\" role=\"COMMMEMBER\" state=\"OK\">\n <name type=\"parsed\">JAMES M. INHOFE of Oklahoma</name>\n <name type=\"authority-fnf\">James M. Inhofe</name>\n <name type=\"authority-lnf\">Inhofe, James M.</name>\n <name type=\"authority-other\">Jim Inhofe</name>\n </congMember>\n <congMember authorityId=\"754\" bioGuideId=\"M000303\" chamber=\"S\" congress=\"111\" gpoId=\"8253\" party=\"R\" role=\"COMMMEMBER\" state=\"AZ\">\n <name type=\"parsed\">JOHN McCAIN of Arizona</name>\n <name type=\"authority-fnf\">John McCain</name>\n <name type=\"authority-lnf\">McCain, John</name>\n <name type=\"authority-other\">John Sidney Mccain</name>\n </congMember>\n <congMember authorityId=\"7\" bioGuideId=\"A000069\" chamber=\"S\" congress=\"111\" gpoId=\"8305\" party=\"D\" role=\"COMMMEMBER\" state=\"HI\">\n <name type=\"parsed\">DANIEL K. AKAKA of Hawaii</name>\n <name type=\"authority-fnf\">Daniel K. Akaka</name>\n <name type=\"authority-lnf\">Akaka, Daniel K.</name>\n <name type=\"authority-other\">Daniel Kohikina Akaka</name>\n </congMember>\n <congMember authorityId=\"859\" bioGuideId=\"N000032\" chamber=\"S\" congress=\"111\" gpoId=\"8236\" party=\"D\" role=\"COMMMEMBER\" state=\"FL\">\n <name type=\"parsed\">BILL NELSON of Florida</name>\n <name type=\"authority-fnf\">Bill Nelson</name>\n <name type=\"authority-lnf\">Nelson, Bill</name>\n <name type=\"authority-other\">Clarence William Nelson</name>\n </congMember>\n <congMember authorityId=\"949\" bioGuideId=\"R000122\" chamber=\"S\" congress=\"111\" gpoId=\"8272\" party=\"D\" role=\"COMMMEMBER\" state=\"RI\">\n <name type=\"parsed\">JACK REED of Rhode Island</name>\n <name type=\"authority-fnf\">Jack Reed</name>\n <name type=\"authority-lnf\">Reed, Jack</name>\n <name type=\"authority-other\">John Reed</name>\n </congMember>\n <bill congress=\"111\" context=\"BODY\" number=\"2346\" type=\"HR\"></bill>\n <congReport congress=\"111\" number=\"105\" type=\"H\"></congReport>\n <isNomination>false</isNomination>\n <isErrata>false</isErrata>\n</extension>\n<name type=\"corporate\">\n <namePart>United States</namePart>\n <namePart>Congress</namePart>\n <namePart>Senate</namePart>\n <namePart>Committee on Armed Services</namePart>\n <role>\n <roleTerm authority=\"marcrelator\" type=\"text\">associated name</roleTerm>\n <roleTerm authority=\"marcrelator\" type=\"code\">asn</roleTerm>\n</role>\n <description>Government Organization</description>\n</name>\n<name type=\"personal\">\n <namePart>Roger F. Wicker</namePart>\n <affiliation>United States Senate</affiliation>\n <role>\n <roleTerm type=\"text\">committee member</roleTerm>\n</role>\n <description>United States Congressional Member</description>\n</name>\n<name type=\"personal\">\n <namePart>Robert C. Byrd</namePart>\n <affiliation>United States Senate</affiliation>\n <role>\n <roleTerm type=\"text\">committee member</roleTerm>\n</role>\n <description>United States Congressional Member</description>\n</name>\n<name type=\"personal\">\n <namePart>Carl Levin</namePart>\n <affiliation>United States Senate</affiliation>\n <role>\n <roleTerm type=\"text\">committee member</roleTerm>\n</role>\n <description>United States Congressional Member</description>\n</name>\n<name type=\"personal\">\n <namePart>Joseph I. Lieberman</namePart>\n <affiliation>United States Senate</affiliation>\n <role>\n <roleTerm type=\"text\">committee member</roleTerm>\n</role>\n <description>United States Congressional Member</description>\n</name>\n<name type=\"personal\">\n <namePart>John Thune</namePart>\n <affiliation>United States Senate</affiliation>\n <role>\n <roleTerm type=\"text\">committee member</roleTerm>\n</role>\n <description>United States Congressional Member</description>\n</name>\n<name type=\"personal\">\n <namePart>Richard Burr</namePart>\n <affiliation>United States Senate</affiliation>\n <role>\n <roleTerm type=\"text\">committee member</roleTerm>\n</role>\n <description>United States Congressional Member</description>\n</name>\n<name type=\"personal\">\n <namePart>Susan M. Collins</namePart>\n <affiliation>United States Senate</affiliation>\n <role>\n <roleTerm type=\"text\">committee member</roleTerm>\n</role>\n <description>United States Congressional Member</description>\n</name>\n<name type=\"personal\">\n <namePart>Jeff Sessions</namePart>\n <affiliation>United States Senate</affiliation>\n <role>\n <roleTerm type=\"text\">committee member</roleTerm>\n</role>\n <description>United States Congressional Member</description>\n</name>\n<name type=\"personal\">\n <namePart>Evan Bayh</namePart>\n <affiliation>United States Senate</affiliation>\n <role>\n <roleTerm type=\"text\">committee member</roleTerm>\n</role>\n <description>United States Congressional Member</description>\n</name>\n<name type=\"personal\">\n <namePart>Mark Udall</namePart>\n <affiliation>United States Senate</affiliation>\n <role>\n <roleTerm type=\"text\">committee member</roleTerm>\n</role>\n <description>United States Congressional Member</description>\n</name>\n<name type=\"personal\">\n <namePart>David Vitter</namePart>\n <affiliation>United States Senate</affiliation>\n <role>\n <roleTerm type=\"text\">committee member</roleTerm>\n</role>\n <description>United States Congressional Member</description>\n</name>\n<name type=\"personal\">\n <namePart>Claire McCaskill</namePart>\n <affiliation>United States Senate</affiliation>\n <role>\n <roleTerm type=\"text\">committee member</roleTerm>\n</role>\n <description>United States Congressional Member</description>\n</name>\n<name type=\"personal\">\n <namePart>Jim Webb</namePart>\n <affiliation>United States Senate</affiliation>\n <role>\n <roleTerm type=\"text\">committee member</roleTerm>\n</role>\n <description>United States Congressional Member</description>\n</name>\n<name type=\"personal\">\n <namePart>Saxby Chambliss</namePart>\n <affiliation>United States Senate</affiliation>\n <role>\n <roleTerm type=\"text\">committee member</roleTerm>\n</role>\n <description>United States Congressional Member</description>\n</name>\n<name type=\"personal\">\n <namePart>Mark Begich</namePart>\n <affiliation>United States Senate</affiliation>\n <role>\n <roleTerm type=\"text\">committee member</roleTerm>\n</role>\n <description>United States Congressional Member</description>\n</name>\n<name type=\"personal\">\n <namePart>Kay R. Hagan</namePart>\n <affiliation>United States Senate</affiliation>\n <role>\n <roleTerm type=\"text\">committee member</roleTerm>\n</role>\n <description>United States Congressional Member</description>\n</name>\n<name type=\"personal\">\n <namePart>Roland Burris</namePart>\n <affiliation>United States Senate</affiliation>\n <role>\n <roleTerm type=\"text\">committee member</roleTerm>\n</role>\n <description>United States Congressional Member</description>\n</name>\n<name type=\"personal\">\n <namePart>George S. LeMieux</namePart>\n <affiliation>United States Senate</affiliation>\n <role>\n <roleTerm type=\"text\">committee member</roleTerm>\n</role>\n <description>United States Congressional Member</description>\n</name>\n<name type=\"personal\">\n <namePart>Lindsey Graham</namePart>\n <affiliation>United States Senate</affiliation>\n <role>\n <roleTerm type=\"text\">committee member</roleTerm>\n</role>\n <description>United States Congressional Member</description>\n</name>\n<name type=\"personal\">\n <namePart>James M. Inhofe</namePart>\n <affiliation>United States Senate</affiliation>\n <role>\n <roleTerm type=\"text\">committee member</roleTerm>\n</role>\n <description>United States Congressional Member</description>\n</name>\n<name type=\"personal\">\n <namePart>John McCain</namePart>\n <affiliation>United States Senate</affiliation>\n <role>\n <roleTerm type=\"text\">committee member</roleTerm>\n</role>\n <description>United States Congressional Member</description>\n</name>\n<name type=\"personal\">\n <namePart>Daniel K. Akaka</namePart>\n <affiliation>United States Senate</affiliation>\n <role>\n <roleTerm type=\"text\">committee member</roleTerm>\n</role>\n <description>United States Congressional Member</description>\n</name>\n<name type=\"personal\">\n <namePart>Bill Nelson</namePart>\n <affiliation>United States Senate</affiliation>\n <role>\n <roleTerm type=\"text\">committee member</roleTerm>\n</role>\n <description>United States Congressional Member</description>\n</name>\n<name type=\"personal\">\n <namePart>Jack Reed</namePart>\n <affiliation>United States Senate</affiliation>\n <role>\n <roleTerm type=\"text\">committee member</roleTerm>\n</role>\n <description>United States Congressional Member</description>\n</name>\n<relatedItem type=\"isReferencedBy\">\n <identifier type=\"Jacket citation\"></identifier>\n</relatedItem>\n<relatedItem type=\"isReferencedBy\">\n <titleInfo>\n <title>United States House Bill 2346 (111th Congress)</title>\n</titleInfo>\n <identifier type=\"Congressional Bill citation\">H.R. 2346</identifier>\n <extension>\n <congress>111</congress>\n <context>BODY</context>\n</extension>\n</relatedItem>\n<relatedItem type=\"isReferencedBy\">\n <titleInfo>\n <title>United States House Report 105 (111th Congress)</title>\n</titleInfo>\n <identifier type=\"congressional report citation\">H. Rept. 111-105</identifier>\n</relatedItem>\n</mods>",
"items": [
{
"itemType": "hearing",
"title": "AFGHANISTAN",
"creators": [
{
"lastName": "United States: Congress: Senate",
"fieldMode": 1,
"creatorType": "contributor"
},
{
"lastName": "United States: Congress: Senate: Committee on Armed Services",
"fieldMode": 1,
"creatorType": "contributor"
},
{
"firstName": "Roger F.",
"lastName": "Wicker",
"creatorType": "contributor"
},
{
"firstName": "Robert C.",
"lastName": "Byrd",
"creatorType": "contributor"
},
{
"firstName": "Carl",
"lastName": "Levin",
"creatorType": "contributor"
},
{
"firstName": "Joseph I.",
"lastName": "Lieberman",
"creatorType": "contributor"
},
{
"firstName": "John",
"lastName": "Thune",
"creatorType": "contributor"
},
{
"firstName": "Richard",
"lastName": "Burr",
"creatorType": "contributor"
},
{
"firstName": "Susan M.",
"lastName": "Collins",
"creatorType": "contributor"
},
{
"firstName": "Jeff",
"lastName": "Sessions",
"creatorType": "contributor"
},
{
"firstName": "Evan",
"lastName": "Bayh",
"creatorType": "contributor"
},
{
"firstName": "Mark",
"lastName": "Udall",
"creatorType": "contributor"
},
{
"firstName": "David",
"lastName": "Vitter",
"creatorType": "contributor"
},
{
"firstName": "Claire",
"lastName": "McCaskill",
"creatorType": "contributor"
},
{
"firstName": "Jim",
"lastName": "Webb",
"creatorType": "contributor"
},
{
"firstName": "Saxby",
"lastName": "Chambliss",
"creatorType": "contributor"
},
{
"firstName": "Mark",
"lastName": "Begich",
"creatorType": "contributor"
},
{
"firstName": "Kay R.",
"lastName": "Hagan",
"creatorType": "contributor"
},
{
"firstName": "Roland",
"lastName": "Burris",
"creatorType": "contributor"
},
{
"firstName": "George S.",
"lastName": "LeMieux",
"creatorType": "contributor"
},
{
"firstName": "Lindsey",
"lastName": "Graham",
"creatorType": "contributor"
},
{
"firstName": "James M.",
"lastName": "Inhofe",
"creatorType": "contributor"
},
{
"firstName": "John",
"lastName": "McCain",
"creatorType": "contributor"
},
{
"firstName": "Daniel K.",
"lastName": "Akaka",
"creatorType": "contributor"
},
{
"firstName": "Bill",
"lastName": "Nelson",
"creatorType": "contributor"
},
{
"firstName": "Jack",
"lastName": "Reed",
"creatorType": "contributor"
}
],
"date": "2009-12-02",
"committee": "Committee on Armed Services",
"documentNumber": "415",
"language": "eng",
"legislativeBody": "Senate",
"publisher": "U.S. Government Publishing Office",
"rights": "fdlp",
"session": "111",
"url": "https://www.govinfo.gov/app/details/CHRG-111shrg56419",
"attachments": [
{
"title": "HTML rendition",
"mimeType": "text/html"
},
{
"title": "PDF rendition",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "<mods xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://www.loc.gov/mods/v3\" version=\"3.3\" xsi:schemaLocation=\"http://www.loc.gov/mods/v3 http://www.loc.gov/standards/mods/v3/mods-3-3.xsd\" ID=\"P0b002ee183d8e4ad\">\n<name type=\"corporate\">\n <namePart>United States Government Publishing Office</namePart>\n <role>\n <roleTerm authority=\"marcrelator\" type=\"text\">publisher</roleTerm>\n <roleTerm authority=\"marcrelator\" type=\"code\">pbl</roleTerm>\n</role>\n <role>\n <roleTerm authority=\"marcrelator\" type=\"text\">distributor</roleTerm>\n <roleTerm authority=\"marcrelator\" type=\"code\">dst</roleTerm>\n</role>\n</name>\n<name type=\"corporate\">\n <namePart>United States</namePart>\n <namePart>Commission on the Intelligence Capabilities of the United States Regarding Weapons of Mass Destruction</namePart>\n <role>\n <roleTerm authority=\"marcrelator\" type=\"text\">author</roleTerm>\n <roleTerm authority=\"marcrelator\" type=\"code\">aut</roleTerm>\n</role>\n <description>Government Organization</description>\n</name>\n<typeOfResource>text</typeOfResource>\n<genre authority=\"marcgt\">government publication</genre>\n<language>\n <languageTerm type=\"code\" authority=\"iso639-2b\">eng</languageTerm>\n</language>\n<extension>\n <collectionCode>GPO</collectionCode>\n <category>Executive Agency Publications</category>\n <branch>legislative</branch>\n <dateIngested>2013-02-25</dateIngested>\n</extension>\n<originInfo>\n <publisher>Commission on the Intelligence Capabilities of the United States Regarding Weapons of Mass Destruction</publisher>\n <dateIssued encoding=\"w3cdtf\">2005-03-31</dateIssued>\n <issuance>monographic</issuance>\n</originInfo>\n<physicalDescription>\n <note type=\"source content type\">Deposited</note>\n <digitalOrigin>born digital</digitalOrigin>\n</physicalDescription>\n<classification authority=\"sudocs\">PREX 1.19:IN 8/W 37</classification>\n<identifier type=\"uri\">https://www.govinfo.gov/app/details/GPO-WMD</identifier>\n<identifier type=\"local\">P0b002ee183d8e4ad</identifier>\n<identifier type=\"ILS system id\">000576953</identifier>\n<recordInfo>\n <recordContentSource authority=\"marcorg\">DGPO</recordContentSource>\n <recordCreationDate encoding=\"w3cdtf\">2013-02-25</recordCreationDate>\n <recordChangeDate encoding=\"w3cdtf\">2019-03-28</recordChangeDate>\n <recordIdentifier source=\"DGPO\">GPO-WMD</recordIdentifier>\n <recordOrigin>machine generated</recordOrigin>\n <languageOfCataloging>\n <languageTerm type=\"code\" authority=\"iso639-2b\">eng</languageTerm>\n</languageOfCataloging>\n</recordInfo>\n<accessCondition type=\"GPO scope determination\">fdlp</accessCondition>\n<extension>\n <docClass>GPO</docClass>\n <accessId>GPO-WMD</accessId>\n <ACCode>GPO</ACCode>\n <fedPubName>Featured Commission Publications</fedPubName>\n <description>The Commission on the Intelligence Capabilities of the United States Regarding Weapons of Mass Destruction was established in 2004 and charged with examining the capabilities and challenges of the American intelligence community concerning the capabilities, intentions, and activities of foreign powers relating to the design, development, manufacture, acquisition, possession, proliferation, transfer, testing, potential or threatened use, or use of weapons of mass destruction, related means of delivery, and other related threats of the 21st Century.</description>\n <image>thumbnails/GPO-WMD.jpg</image>\n <agency abbrev=\"\">Commission on the Intelligence Capabilities of the United States Regarding Weapons of Mass Destruction</agency>\n <genericNav1Value>Commission on the Intelligence Capabilities of the United States Regarding Weapons of Mass Destruction</genericNav1Value>\n <ggrank1>Weapons of Mass Destruction</ggrank1>\n</extension>\n<titleInfo>\n <title>Unclassified Version of the Report of the Commission on the Intelligence Capabilities of the United States Regarding Weapons of Mass Destruction</title>\n</titleInfo>\n<location>\n <url displayLabel=\"Content Detail\" access=\"object in context\">https://www.govinfo.gov/app/details/GPO-WMD</url>\n <url access=\"raw object\" displayLabel=\"JPEG rendition\">https://www.govinfo.gov/content/pkg/GPO-WMD/thumbnails/GPO-WMD.jpg</url>\n <url access=\"raw object\" displayLabel=\"PDF rendition\">https://www.govinfo.gov/content/pkg/GPO-WMD/pdf/GPO-WMD.pdf</url>\n</location>\n<abstract>The Commission on the Intelligence Capabilities of the United States Regarding Weapons of Mass Destruction was established in 2004 and charged with examining the capabilities and challenges of the American intelligence community concerning the capabilities, intentions, and activities of foreign powers relating to the design, development, manufacture, acquisition, possession, proliferation, transfer, testing, potential or threatened use, or use of weapons of mass destruction, related means of delivery, and other related threats of the 21st Century.</abstract>\n<name type=\"corporate\">\n <namePart>United States</namePart>\n <namePart>Commission on the Intelligence Capabilities of the United States Regarding Weapons of Mass Destruction</namePart>\n <role>\n <roleTerm authority=\"marcrelator\" type=\"text\">associated name</roleTerm>\n <roleTerm authority=\"marcrelator\" type=\"code\">asn</roleTerm>\n</role>\n <description>United States Government Agency</description>\n</name>\n<extension>\n <searchTitle>Unclassified Version of the Report of the Commission on the Intelligence Capabilities of the United States Regarding Weapons of Mass Destruction;\n </searchTitle>\n</extension>\n<relatedItem type=\"constituent\" ID=\"id-new_child1284384198823\" xlink:href=\"https://www.govinfo.gov/metadata/granule/GPO-WMD/GPO-WMD-1/mods.xml\">\n <titleInfo>\n <title>Report Section</title>\n</titleInfo>\n <identifier type=\"uri\">https://www.govinfo.gov/app/details/GPO-WMD/GPO-WMD-1</identifier>\n <location>\n <url displayLabel=\"Content Detail\" access=\"object in context\">https://www.govinfo.gov/app/details/GPO-WMD/GPO-WMD-1</url>\n</location>\n <subject>\n <hierarchicalGeographic>\n <country>United States of America</country>\n <state></state>\n</hierarchicalGeographic>\n</subject>\n <extension>\n <searchTitle>Unclassified Version of the Report of the Commission on the Intelligence Capabilities of the United States Regarding Weapons of Mass Destruction;\n Report Section;\n </searchTitle>\n <granuleClass>CONTENT</granuleClass>\n <accessId>GPO-WMD-1</accessId>\n <sequenceNumber>1</sequenceNumber>\n</extension>\n</relatedItem>\n<relatedItem type=\"constituent\" ID=\"id-new_child1284384234254\" xlink:href=\"https://www.govinfo.gov/metadata/granule/GPO-WMD/GPO-WMD-1-1/mods.xml\">\n <titleInfo>\n <title>Cover Matter</title>\n</titleInfo>\n <relatedItem type=\"otherFormat\" xlink:href=\"https://www.govinfo.gov/content/pkg/GPO-WMD/pdf/GPO-WMD-1-1.pdf\">\n <identifier type=\"FDsys Unique ID\">D09002ee1a025d824</identifier>\n</relatedItem>\n <identifier type=\"uri\">https://www.govinfo.gov/app/details/GPO-WMD/GPO-WMD-1-1</identifier>\n <location>\n <url displayLabel=\"Content Detail\" access=\"object in context\">https://www.govinfo.gov/app/details/GPO-WMD/GPO-WMD-1-1</url>\n <url access=\"raw object\" displayLabel=\"PDF rendition\">https://www.govinfo.gov/content/pkg/GPO-WMD/pdf/GPO-WMD-1-1.pdf</url>\n</location>\n <subject>\n <hierarchicalGeographic>\n <country>United States of America</country>\n <state></state>\n</hierarchicalGeographic>\n</subject>\n <extension>\n <searchTitle>Unclassified Version of the Report of the Commission on the Intelligence Capabilities of the United States Regarding Weapons of Mass Destruction;\n Cover Matter;\n </searchTitle>\n <granuleClass>CONTENT</granuleClass>\n <accessId>GPO-WMD-1-1</accessId>\n <sequenceNumber>2</sequenceNumber>\n</extension>\n</relatedItem>\n<relatedItem type=\"constituent\" ID=\"id-new_child1284384249152\" xlink:href=\"https://www.govinfo.gov/metadata/granule/GPO-WMD/GPO-WMD-1-2/mods.xml\">\n <titleInfo>\n <title>Letter to the President on FBI and CIA Transformation Plans</title>\n</titleInfo>\n <relatedItem type=\"otherFormat\" xlink:href=\"https://www.govinfo.gov/content/pkg/GPO-WMD/pdf/GPO-WMD-1-2.pdf\">\n <identifier type=\"FDsys Unique ID\">D09002ee1a025d82c</identifier>\n</relatedItem>\n <identifier type=\"uri\">https://www.govinfo.gov/app/details/GPO-WMD/GPO-WMD-1-2</identifier>\n <location>\n <url displayLabel=\"Content Detail\" access=\"object in context\">https://www.govinfo.gov/app/details/GPO-WMD/GPO-WMD-1-2</url>\n <url access=\"raw object\" displayLabel=\"PDF rendition\">https://www.govinfo.gov/content/pkg/GPO-WMD/pdf/GPO-WMD-1-2.pdf</url>\n</location>\n <subject>\n <hierarchicalGeographic>\n <country>United States of America</country>\n <state></state>\n</hierarchicalGeographic>\n</subject>\n <extension>\n <searchTitle>Unclassified Version of the Report of the Commission on the Intelligence Capabilities of the United States Regarding Weapons of Mass Destruction;\n Letter to the President on FBI and CIA Transformation Plans;\n </searchTitle>\n <granuleClass>CONTENT</granuleClass>\n <accessId>GPO-WMD-1-2</accessId>\n <sequenceNumber>3</sequenceNumber>\n</extension>\n</relatedItem>\n<relatedItem type=\"constituent\" ID=\"id-new_child1284384265001\" xlink:href=\"https://www.govinfo.gov/metadata/granule/GPO-WMD/GPO-WMD-1-3/mods.xml\">\n <titleInfo>\n <title>Transmittal Letter</title>\n</titleInfo>\n <relatedItem type=\"otherFormat\" xlink:href=\"https://www.govinfo.gov/content/pkg/GPO-WMD/pdf/GPO-WMD-1-3.pdf\">\n <identifier type=\"FDsys Unique ID\">D09002ee1a025d81c</identifier>\n</relatedItem>\n <identifier type=\"uri\">https://www.govinfo.gov/app/details/GPO-WMD/GPO-WMD-1-3</identifier>\n <location>\n <url displayLabel=\"Content Detail\" access=\"object in context\">https://www.govinfo.gov/app/details/GPO-WMD/GPO-WMD-1-3</url>\n <url access=\"raw object\" displayLabel=\"PDF rendition\">https://www.govinfo.gov/content/pkg/GPO-WMD/pdf/GPO-WMD-1-3.pdf</url>\n</location>\n <subject>\n <hierarchicalGeographic>\n <country>United States of America</country>\n <state></state>\n</hierarchicalGeographic>\n</subject>\n <extension>\n <searchTitle>Unclassified Version of the Report of the Commission on the Intelligence Capabilities of the United States Regarding Weapons of Mass Destruction;\n Transmittal Letter;\n </searchTitle>\n <granuleClass>CONTENT</granuleClass>\n <accessId>GPO-WMD-1-3</accessId>\n <sequenceNumber>4</sequenceNumber>\n</extension>\n</relatedItem>\n<relatedItem type=\"constituent\" ID=\"id-new_child1284384279456\" xlink:href=\"https://www.govinfo.gov/metadata/granule/GPO-WMD/GPO-WMD-1-4/mods.xml\">\n <titleInfo>\n <title>Overview of the Report</title>\n</titleInfo>\n <relatedItem type=\"otherFormat\" xlink:href=\"https://www.govinfo.gov/content/pkg/GPO-WMD/pdf/GPO-WMD-1-4.pdf\">\n <identifier type=\"FDsys Unique ID\">D09002ee1a025d822</identifier>\n</relatedItem>\n <identifier type=\"uri\">https://www.govinfo.gov/app/details/GPO-WMD/GPO-WMD-1-4</identifier>\n <location>\n <url displayLabel=\"Content Detail\" access=\"object in context\">https://www.govinfo.gov/app/details/GPO-WMD/GPO-WMD-1-4</url>\n <url access=\"raw object\" displayLabel=\"PDF rendition\">https://www.govinfo.gov/content/pkg/GPO-WMD/pdf/GPO-WMD-1-4.pdf</url>\n</location>\n <subject>\n <hierarchicalGeographic>\n <country>United States of America</country>\n <state></state>\n</hierarchicalGeographic>\n</subject>\n <extension>\n <searchTitle>Unclassified Version of the Report of the Commission on the Intelligence Capabilities of the United States Regarding Weapons of Mass Destruction;\n Overview of the Report;\n </searchTitle>\n <granuleClass>CONTENT</granuleClass>\n <accessId>GPO-WMD-1-4</accessId>\n <sequenceNumber>5</sequenceNumber>\n</extension>\n</relatedItem>\n<relatedItem type=\"constituent\" ID=\"id-new_child1284384293864\" xlink:href=\"https://www.govinfo.gov/metadata/granule/GPO-WMD/GPO-WMD-1-5/mods.xml\">\n <titleInfo>\n <title>Part One: Looking Back</title>\n</titleInfo>\n <relatedItem type=\"otherFormat\" xlink:href=\"https://www.govinfo.gov/content/pkg/GPO-WMD/pdf/GPO-WMD-1-5.pdf\">\n <identifier type=\"FDsys Unique ID\">D09002ee1a025d823</identifier>\n</relatedItem>\n <identifier type=\"uri\">https://www.govinfo.gov/app/details/GPO-WMD/GPO-WMD-1-5</identifier>\n <location>\n <url displayLabel=\"Content Detail\" access=\"object in context\">https://www.govinfo.gov/app/details/GPO-WMD/GPO-WMD-1-5</url>\n <url access=\"raw object\" displayLabel=\"PDF rendition\">https://www.govinfo.gov/content/pkg/GPO-WMD/pdf/GPO-WMD-1-5.pdf</url>\n</location>\n <subject>\n <hierarchicalGeographic>\n <country>United States of America</country>\n <state></state>\n</hierarchicalGeographic>\n</subject>\n <extension>\n <searchTitle>Unclassified Version of the Report of the Commission on the Intelligence Capabilities of the United States Regarding Weapons of Mass Destruction;\n Part One: Looking Back;\n </searchTitle>\n <granuleClass>CONTENT</granuleClass>\n <accessId>GPO-WMD-1-5</accessId>\n <sequenceNumber>6</sequenceNumber>\n</extension>\n</relatedItem>\n<relatedItem type=\"constituent\" ID=\"id-new_child1284384310096\" xlink:href=\"https://www.govinfo.gov/metadata/granule/GPO-WMD/GPO-WMD-1-6/mods.xml\">\n <titleInfo>\n <title>Chapter One Case Study: Iraq</title>\n</titleInfo>\n <relatedItem type=\"otherFormat\" xlink:href=\"https://www.govinfo.gov/content/pkg/GPO-WMD/pdf/GPO-WMD-1-6.pdf\">\n <identifier type=\"FDsys Unique ID\">D09002ee1a025d81b</identifier>\n</relatedItem>\n <identifier type=\"uri\">https://www.govinfo.gov/app/details/GPO-WMD/GPO-WMD-1-6</identifier>\n <location>\n <url displayLabel=\"Content Detail\" access=\"object in context\">https://www.govinfo.gov/app/details/GPO-WMD/GPO-WMD-1-6</url>\n <url access=\"raw object\" displayLabel=\"PDF rendition\">https://www.govinfo.gov/content/pkg/GPO-WMD/pdf/GPO-WMD-1-6.pdf</url>\n</location>\n <subject>\n <hierarchicalGeographic>\n <country>United States of America</country>\n <state></state>\n</hierarchicalGeographic>\n</subject>\n <extension>\n <searchTitle>Unclassified Version of the Report of the Commission on the Intelligence Capabilities of the United States Regarding Weapons of Mass Destruction;\n Chapter One Case Study: Iraq;\n </searchTitle>\n <granuleClass>CONTENT</granuleClass>\n <accessId>GPO-WMD-1-6</accessId>\n <sequenceNumber>7</sequenceNumber>\n</extension>\n</relatedItem>\n<relatedItem type=\"constituent\" ID=\"id-new_child1284384324472\" xlink:href=\"https://www.govinfo.gov/metadata/granule/GPO-WMD/GPO-WMD-1-7/mods.xml\">\n <titleInfo>\n <title>Chapter Two Case Study: Libya</title>\n</titleInfo>\n <relatedItem type=\"otherFormat\" xlink:href=\"https://www.govinfo.gov/content/pkg/GPO-WMD/pdf/GPO-WMD-1-7.pdf\">\n <identifier type=\"FDsys Unique ID\">D09002ee1a025d830</identifier>\n</relatedItem>\n <identifier type=\"uri\">https://www.govinfo.gov/app/details/GPO-WMD/GPO-WMD-1-7</identifier>\n <location>\n <url displayLabel=\"Content Detail\" access=\"object in context\">https://www.govinfo.gov/app/details/GPO-WMD/GPO-WMD-1-7</url>\n <url access=\"raw object\" displayLabel=\"PDF rendition\">https://www.govinfo.gov/content/pkg/GPO-WMD/pdf/GPO-WMD-1-7.pdf</url>\n</location>\n <subject>\n <hierarchicalGeographic>\n <country>United States of America</country>\n <state></state>\n</hierarchicalGeographic>\n</subject>\n <extension>\n <searchTitle>Unclassified Version of the Report of the Commission on the Intelligence Capabilities of the United States Regarding Weapons of Mass Destruction;\n Chapter Two Case Study: Libya;\n </searchTitle>\n <granuleClass>CONTENT</granuleClass>\n <accessId>GPO-WMD-1-7</accessId>\n <sequenceNumber>8</sequenceNumber>\n</extension>\n</relatedItem>\n<relatedItem type=\"constituent\" ID=\"id-new_child1284384341496\" xlink:href=\"https://www.govinfo.gov/metadata/granule/GPO-WMD/GPO-WMD-1-8/mods.xml\">\n <titleInfo>\n <title>Chapter Three Case Study: Al-Qa'ida in Afghanistan</title>\n</titleInfo>\n <relatedItem type=\"otherFormat\" xlink:href=\"https://www.govinfo.gov/content/pkg/GPO-WMD/pdf/GPO-WMD-1-8.pdf\">\n <identifier type=\"FDsys Unique ID\">D09002ee1a025d827</identifier>\n</relatedItem>\n <identifier type=\"uri\">https://www.govinfo.gov/app/details/GPO-WMD/GPO-WMD-1-8</identifier>\n <location>\n <url displayLabel=\"Content Detail\" access=\"object in context\">https://www.govinfo.gov/app/details/GPO-WMD/GPO-WMD-1-8</url>\n <url access=\"raw object\" displayLabel=\"PDF rendition\">https://www.govinfo.gov/content/pkg/GPO-WMD/pdf/GPO-WMD-1-8.pdf</url>\n</location>\n <subject>\n <hierarchicalGeographic>\n <country>United States of America</country>\n <state></state>\n</hierarchicalGeographic>\n</subject>\n <extension>\n <searchTitle>Unclassified Version of the Report of the Commission on the Intelligence Capabilities of the United States Regarding Weapons of Mass Destruction;\n Chapter Three Case Study: Al-Qa'ida in Afghanistan;\n </searchTitle>\n <granuleClass>CONTENT</granuleClass>\n <accessId>GPO-WMD-1-8</accessId>\n <sequenceNumber>9</sequenceNumber>\n</extension>\n</relatedItem>\n<relatedItem type=\"constituent\" ID=\"id-new_child1284384358383\" xlink:href=\"https://www.govinfo.gov/metadata/granule/GPO-WMD/GPO-WMD-1-9/mods.xml\">\n <titleInfo>\n <title>Chapter Four: Terrorism: Managing Today's Threat</title>\n</titleInfo>\n <relatedItem type=\"otherFormat\" xlink:href=\"https://www.govinfo.gov/content/pkg/GPO-WMD/pdf/GPO-WMD-1-9.pdf\">\n <identifier type=\"FDsys Unique ID\">D09002ee1a025d832</identifier>\n</relatedItem>\n <identifier type=\"uri\">https://www.govinfo.gov/app/details/GPO-WMD/GPO-WMD-1-9</identifier>\n <location>\n <url displayLabel=\"Content Detail\" access=\"object in context\">https://www.govinfo.gov/app/details/GPO-WMD/GPO-WMD-1-9</url>\n <url access=\"raw object\" displayLabel=\"PDF rendition\">https://www.govinfo.gov/content/pkg/GPO-WMD/pdf/GPO-WMD-1-9.pdf</url>\n</location>\n <subject>\n <hierarchicalGeographic>\n <country>United States of America</country>\n <state></state>\n</hierarchicalGeographic>\n</subject>\n <extension>\n <searchTitle>Unclassified Version of the Report of the Commission on the Intelligence Capabilities of the United States Regarding Weapons of Mass Destruction;\n Chapter Four: Terrorism: Managing Today's Threat;\n </searchTitle>\n <granuleClass>CONTENT</granuleClass>\n <accessId>GPO-WMD-1-9</accessId>\n <sequenceNumber>10</sequenceNumber>\n</extension>\n</relatedItem>\n<relatedItem type=\"constituent\" ID=\"id-new_child1284384376089\" xlink:href=\"https://www.govinfo.gov/metadata/granule/GPO-WMD/GPO-WMD-1-10/mods.xml\">\n <titleInfo>\n <title>Chapter Five: Iran and North Korea: Monitoring the Development of Nuclear Weapons</title>\n</titleInfo>\n <relatedItem type=\"otherFormat\" xlink:href=\"https://www.govinfo.gov/content/pkg/GPO-WMD/pdf/GPO-WMD-1-10.pdf\">\n <identifier type=\"FDsys Unique ID\">D09002ee1a025d82b</identifier>\n</relatedItem>\n <identifier type=\"uri\">https://www.govinfo.gov/app/details/GPO-WMD/GPO-WMD-1-10</identifier>\n <location>\n <url displayLabel=\"Content Detail\" access=\"object in context\">https://www.govinfo.gov/app/details/GPO-WMD/GPO-WMD-1-10</url>\n <url access=\"raw object\" displayLabel=\"PDF rendition\">https://www.govinfo.gov/content/pkg/GPO-WMD/pdf/GPO-WMD-1-10.pdf</url>\n</location>\n <subject>\n <hierarchicalGeographic>\n <country>United States of America</country>\n <state></state>\n</hierarchicalGeographic>\n</subject>\n <extension>\n <searchTitle>Unclassified Version of the Report of the Commission on the Intelligence Capabilities of the United States Regarding Weapons of Mass Destruction;\n Chapter Five: Iran and North Korea: Monitoring the Development of Nuclear Weapons;\n </searchTitle>\n <granuleClass>CONTENT</granuleClass>\n <accessId>GPO-WMD-1-10</accessId>\n <sequenceNumber>11</sequenceNumber>\n</extension>\n</relatedItem>\n<relatedItem type=\"constituent\" ID=\"id-new_child1284384389089\" xlink:href=\"https://www.govinfo.gov/metadata/granule/GPO-WMD/GPO-WMD-1-11/mods.xml\">\n <titleInfo>\n <title>Part Two: Looking Forward</title>\n</titleInfo>\n <relatedItem type=\"otherFormat\" xlink:href=\"https://www.govinfo.gov/content/pkg/GPO-WMD/pdf/GPO-WMD-1-11.pdf\">\n <identifier type=\"FDsys Unique ID\">D09002ee1a025d820</identifier>\n</relatedItem>\n <identifier type=\"uri\">https://www.govinfo.gov/app/details/GPO-WMD/GPO-WMD-1-11</identifier>\n <location>\n <url displayLabel=\"Content Detail\" access=\"object in context\">https://www.govinfo.gov/app/details/GPO-WMD/GPO-WMD-1-11</url>\n <url access=\"raw object\" displayLabel=\"PDF rendition\">https://www.govinfo.gov/content/pkg/GPO-WMD/pdf/GPO-WMD-1-11.pdf</url>\n</location>\n <subject>\n <hierarchicalGeographic>\n <country>United States of America</country>\n <state></state>\n</hierarchicalGeographic>\n</subject>\n <extension>\n <searchTitle>Unclassified Version of the Report of the Commission on the Intelligence Capabilities of the United States Regarding Weapons of Mass Destruction;\n Part Two: Looking Forward;\n </searchTitle>\n <granuleClass>CONTENT</granuleClass>\n <accessId>GPO-WMD-1-11</accessId>\n <sequenceNumber>12</sequenceNumber>\n</extension>\n</relatedItem>\n<relatedItem type=\"constituent\" ID=\"id-new_child1284384403849\" xlink:href=\"https://www.govinfo.gov/metadata/granule/GPO-WMD/GPO-WMD-1-12/mods.xml\">\n <titleInfo>\n <title>Chapter Six: Leadership and Management: Forging an Integrated Intelligence Community</title>\n</titleInfo>\n <relatedItem type=\"otherFormat\" xlink:href=\"https://www.govinfo.gov/content/pkg/GPO-WMD/pdf/GPO-WMD-1-12.pdf\">\n <identifier type=\"FDsys Unique ID\">D09002ee1a025d834</identifier>\n</relatedItem>\n <identifier type=\"uri\">https://www.govinfo.gov/app/details/GPO-WMD/GPO-WMD-1-12</identifier>\n <location>\n <url displayLabel=\"Content Detail\" access=\"object in context\">https://www.govinfo.gov/app/details/GPO-WMD/GPO-WMD-1-12</url>\n <url access=\"raw object\" displayLabel=\"PDF rendition\">https://www.govinfo.gov/content/pkg/GPO-WMD/pdf/GPO-WMD-1-12.pdf</url>\n</location>\n <subject>\n <hierarchicalGeographic>\n <country>United States of America</country>\n <state></state>\n</hierarchicalGeographic>\n</subject>\n <extension>\n <searchTitle>Unclassified Version of the Report of the Commission on the Intelligence Capabilities of the United States Regarding Weapons of Mass Destruction;\n Chapter Six: Leadership and Management: Forging an Integrated Intelligence Community;\n </searchTitle>\n <granuleClass>CONTENT</granuleClass>\n <accessId>GPO-WMD-1-12</accessId>\n <sequenceNumber>13</sequenceNumber>\n <law congress=\"108\" isPrivate=\"false\" number=\"458\"></law>\n</extension>\n <relatedItem type=\"isReferencedBy\">\n <titleInfo>\n <title>United States Public Law 458 (108th Congress)</title>\n</titleInfo>\n <identifier type=\"public law citation\">Public Law 108-458</identifier>\n</relatedItem>\n</relatedItem>\n<relatedItem type=\"constituent\" ID=\"id-new_child1284384424681\" xlink:href=\"https://www.govinfo.gov/metadata/granule/GPO-WMD/GPO-WMD-1-13/mods.xml\">\n <titleInfo>\n <title>Chapter Seven: Collection</title>\n</titleInfo>\n <relatedItem type=\"otherFormat\" xlink:href=\"https://www.govinfo.gov/content/pkg/GPO-WMD/pdf/GPO-WMD-1-13.pdf\">\n <identifier type=\"FDsys Unique ID\">D09002ee1a025d829</identifier>\n</relatedItem>\n <identifier type=\"uri\">https://www.govinfo.gov/app/details/GPO-WMD/GPO-WMD-1-13</identifier>\n <location>\n <url displayLabel=\"Content Detail\" access=\"object in context\">https://www.govinfo.gov/app/details/GPO-WMD/GPO-WMD-1-13</url>\n <url access=\"raw object\" displayLabel=\"PDF rendition\">https://www.govinfo.gov/content/pkg/GPO-WMD/pdf/GPO-WMD-1-13.pdf</url>\n</location>\n <subject>\n <hierarchicalGeographic>\n <country>United States of America</country>\n <state></state>\n</hierarchicalGeographic>\n</subject>\n <extension>\n <searchTitle>Unclassified Version of the Report of the Commission on the Intelligence Capabilities of the United States Regarding Weapons of Mass Destruction;\n Chapter Seven: Collection;\n </searchTitle>\n <granuleClass>CONTENT</granuleClass>\n <accessId>GPO-WMD-1-13</accessId>\n <sequenceNumber>14</sequenceNumber>\n</extension>\n</relatedItem>\n<relatedItem type=\"constituent\" ID=\"id-new_child1284384438074\" xlink:href=\"https://www.govinfo.gov/metadata/granule/GPO-WMD/GPO-WMD-1-14/mods.xml\">\n <titleInfo>\n <title>Chapter Eight: Analysis</title>\n</titleInfo>\n <relatedItem type=\"otherFormat\" xlink:href=\"https://www.govinfo.gov/content/pkg/GPO-WMD/pdf/GPO-WMD-1-14.pdf\">\n <identifier type=\"FDsys Unique ID\">D09002ee1a025d831</identifier>\n</relatedItem>\n <identifier type=\"uri\">https://www.govinfo.gov/app/details/GPO-WMD/GPO-WMD-1-14</identifier>\n <location>\n <url displayLabel=\"Content Detail\" access=\"object in context\">https://www.govinfo.gov/app/details/GPO-WMD/GPO-WMD-1-14</url>\n <url access=\"raw object\" displayLabel=\"PDF rendition\">https://www.govinfo.gov/content/pkg/GPO-WMD/pdf/GPO-WMD-1-14.pdf</url>\n</location>\n <subject>\n <hierarchicalGeographic>\n <country>United States of America</country>\n <state></state>\n</hierarchicalGeographic>\n</subject>\n <extension>\n <searchTitle>Unclassified Version of the Report of the Commission on the Intelligence Capabilities of the United States Regarding Weapons of Mass Destruction;\n Chapter Eight: Analysis;\n </searchTitle>\n <granuleClass>CONTENT</granuleClass>\n <accessId>GPO-WMD-1-14</accessId>\n <sequenceNumber>15</sequenceNumber>\n <law congress=\"108\" isPrivate=\"false\" number=\"458\"></law>\n</extension>\n <relatedItem type=\"isReferencedBy\">\n <titleInfo>\n <title>United States Public Law 458 (108th Congress)</title>\n</titleInfo>\n <identifier type=\"public law citation\">Public Law 108-458</identifier>\n</relatedItem>\n</relatedItem>\n<relatedItem type=\"constituent\" ID=\"id-new_child1284384454490\" xlink:href=\"https://www.govinfo.gov/metadata/granule/GPO-WMD/GPO-WMD-1-15/mods.xml\">\n <titleInfo>\n <title>Chapter Nine: Information Sharing</title>\n</titleInfo>\n <relatedItem type=\"otherFormat\" xlink:href=\"https://www.govinfo.gov/content/pkg/GPO-WMD/pdf/GPO-WMD-1-15.pdf\">\n <identifier type=\"FDsys Unique ID\">D09002ee1a025d82d</identifier>\n</relatedItem>\n <identifier type=\"uri\">https://www.govinfo.gov/app/details/GPO-WMD/GPO-WMD-1-15</identifier>\n <location>\n <url displayLabel=\"Content Detail\" access=\"object in context\">https://www.govinfo.gov/app/details/GPO-WMD/GPO-WMD-1-15</url>\n <url access=\"raw object\" displayLabel=\"PDF rendition\">https://www.govinfo.gov/content/pkg/GPO-WMD/pdf/GPO-WMD-1-15.pdf</url>\n</location>\n <subject>\n <hierarchicalGeographic>\n <country>United States of America</country>\n <state></state>\n</hierarchicalGeographic>\n</subject>\n <extension>\n <searchTitle>Unclassified Version of the Report of the Commission on the Intelligence Capabilities of the United States Regarding Weapons of Mass Destruction;\n Chapter Nine: Information Sharing;\n </searchTitle>\n <granuleClass>CONTENT</granuleClass>\n <accessId>GPO-WMD-1-15</accessId>\n <sequenceNumber>16</sequenceNumber>\n <law congress=\"108\" isPrivate=\"false\" number=\"458\"></law>\n</extension>\n <relatedItem type=\"isReferencedBy\">\n <titleInfo>\n <title>United States Public Law 458 (108th Congress)</title>\n</titleInfo>\n <identifier type=\"public law citation\">Public Law 108-458</identifier>\n</relatedItem>\n</relatedItem>\n<relatedItem type=\"constituent\" ID=\"id-new_child1284384470348\" xlink:href=\"https://www.govinfo.gov/metadata/granule/GPO-WMD/GPO-WMD-1-16/mods.xml\">\n <titleInfo>\n <title>Chapter Ten: Intelligence at Home: The FBI, Justice, and Homeland Security</title>\n</titleInfo>\n <relatedItem type=\"otherFormat\" xlink:href=\"https://www.govinfo.gov/content/pkg/GPO-WMD/pdf/GPO-WMD-1-16.pdf\">\n <identifier type=\"FDsys Unique ID\">D09002ee1a025d81f</identifier>\n</relatedItem>\n <identifier type=\"uri\">https://www.govinfo.gov/app/details/GPO-WMD/GPO-WMD-1-16</identifier>\n <location>\n <url displayLabel=\"Content Detail\" access=\"object in context\">https://www.govinfo.gov/app/details/GPO-WMD/GPO-WMD-1-16</url>\n <url access=\"raw object\" displayLabel=\"PDF rendition\">https://www.govinfo.gov/content/pkg/GPO-WMD/pdf/GPO-WMD-1-16.pdf</url>\n</location>\n <subject>\n <hierarchicalGeographic>\n <country>United States of America</country>\n <state></state>\n</hierarchicalGeographic>\n</subject>\n <extension>\n <searchTitle>Unclassified Version of the Report of the Commission on the Intelligence Capabilities of the United States Regarding Weapons of Mass Destruction;\n Chapter Ten: Intelligence at Home: The FBI, Justice, and Homeland Security;\n </searchTitle>\n <granuleClass>CONTENT</granuleClass>\n <accessId>GPO-WMD-1-16</accessId>\n <sequenceNumber>17</sequenceNumber>\n</extension>\n</relatedItem>\n<relatedItem type=\"constituent\" ID=\"id-new_child1284384484690\" xlink:href=\"https://www.govinfo.gov/metadata/granule/GPO-WMD/GPO-WMD-1-17/mods.xml\">\n <titleInfo>\n <title>Chapter Eleven: Counterintelligence</title>\n</titleInfo>\n <relatedItem type=\"otherFormat\" xlink:href=\"https://www.govinfo.gov/content/pkg/GPO-WMD/pdf/GPO-WMD-1-17.pdf\">\n <identifier type=\"FDsys Unique ID\">D09002ee1a025d825</identifier>\n</relatedItem>\n <identifier type=\"uri\">https://www.govinfo.gov/app/details/GPO-WMD/GPO-WMD-1-17</identifier>\n <location>\n <url displayLabel=\"Content Detail\" access=\"object in context\">https://www.govinfo.gov/app/details/GPO-WMD/GPO-WMD-1-17</url>\n <url access=\"raw object\" displayLabel=\"PDF rendition\">https://www.govinfo.gov/content/pkg/GPO-WMD/pdf/GPO-WMD-1-17.pdf</url>\n</location>\n <subject>\n <hierarchicalGeographic>\n <country>United States of America</country>\n <state></state>\n</hierarchicalGeographic>\n</subject>\n <extension>\n <searchTitle>Unclassified Version of the Report of the Commission on the Intelligence Capabilities of the United States Regarding Weapons of Mass Destruction;\n Chapter Eleven: Counterintelligence;\n </searchTitle>\n <granuleClass>CONTENT</granuleClass>\n <accessId>GPO-WMD-1-17</accessId>\n <sequenceNumber>18</sequenceNumber>\n <law congress=\"108\" isPrivate=\"false\" number=\"458\"></law>\n</extension>\n <relatedItem type=\"isReferencedBy\">\n <titleInfo>\n <title>United States Public Law 458 (108th Congress)</title>\n</titleInfo>\n <identifier type=\"public law citation\">Public Law 108-458</identifier>\n</relatedItem>\n</relatedItem>\n<relatedItem type=\"constituent\" ID=\"id-new_child1284384497155\" xlink:href=\"https://www.govinfo.gov/metadata/granule/GPO-WMD/GPO-WMD-1-18/mods.xml\">\n <titleInfo>\n <title>Chapter Twelve: Covert Action</title>\n</titleInfo>\n <relatedItem type=\"otherFormat\" xlink:href=\"https://www.govinfo.gov/content/pkg/GPO-WMD/pdf/GPO-WMD-1-18.pdf\">\n <identifier type=\"FDsys Unique ID\">D09002ee1a025d82f</identifier>\n</relatedItem>\n <identifier type=\"uri\">https://www.govinfo.gov/app/details/GPO-WMD/GPO-WMD-1-18</identifier>\n <location>\n <url displayLabel=\"Content Detail\" access=\"object in context\">https://www.govinfo.gov/app/details/GPO-WMD/GPO-WMD-1-18</url>\n <url access=\"raw object\" displayLabel=\"PDF rendition\">https://www.govinfo.gov/content/pkg/GPO-WMD/pdf/GPO-WMD-1-18.pdf</url>\n</location>\n <subject>\n <hierarchicalGeographic>\n <country>United States of America</country>\n <state></state>\n</hierarchicalGeographic>\n</subject>\n <extension>\n <searchTitle>Unclassified Version of the Report of the Commission on the Intelligence Capabilities of the United States Regarding Weapons of Mass Destruction;\n Chapter Twelve: Covert Action;\n </searchTitle>\n <granuleClass>CONTENT</granuleClass>\n <accessId>GPO-WMD-1-18</accessId>\n <sequenceNumber>19</sequenceNumber>\n</extension>\n</relatedItem>\n<relatedItem type=\"constituent\" ID=\"id-new_child1284384517435\" xlink:href=\"https://www.govinfo.gov/metadata/granule/GPO-WMD/GPO-WMD-1-19/mods.xml\">\n <titleInfo>\n <title>Chapter Thirteen: The Changing Proliferation Threat and the Intelligence Response</title>\n</titleInfo>\n <relatedItem type=\"otherFormat\" xlink:href=\"https://www.govinfo.gov/content/pkg/GPO-WMD/pdf/GPO-WMD-1-19.pdf\">\n <identifier type=\"FDsys Unique ID\">D09002ee1a025d835</identifier>\n</relatedItem>\n <identifier type=\"uri\">https://www.govinfo.gov/app/details/GPO-WMD/GPO-WMD-1-19</identifier>\n <location>\n <url displayLabel=\"Content Detail\" access=\"object in context\">https://www.govinfo.gov/app/details/GPO-WMD/GPO-WMD-1-19</url>\n <url access=\"raw object\" displayLabel=\"PDF rendition\">https://www.govinfo.gov/content/pkg/GPO-WMD/pdf/GPO-WMD-1-19.pdf</url>\n</location>\n <subject>\n <hierarchicalGeographic>\n <country>United States of America</country>\n <state></state>\n</hierarchicalGeographic>\n</subject>\n <extension>\n <searchTitle>Unclassified Version of the Report of the Commission on the Intelligence Capabilities of the United States Regarding Weapons of Mass Destruction;\n Chapter Thirteen: The Changing Proliferation Threat and the Intelligence Response;\n </searchTitle>\n <granuleClass>CONTENT</granuleClass>\n <accessId>GPO-WMD-1-19</accessId>\n <sequenceNumber>20</sequenceNumber>\n <law congress=\"108\" isPrivate=\"false\" number=\"458\"></law>\n</extension>\n <relatedItem type=\"isReferencedBy\">\n <titleInfo>\n <title>United States Public Law 458 (108th Congress)</title>\n</titleInfo>\n <identifier type=\"public law citation\">Public Law 108-458</identifier>\n</relatedItem>\n</relatedItem>\n<relatedItem type=\"constituent\" ID=\"id-new_child1284384532339\" xlink:href=\"https://www.govinfo.gov/metadata/granule/GPO-WMD/GPO-WMD-1-20/mods.xml\">\n <titleInfo>\n <title>Conclusion</title>\n</titleInfo>\n <relatedItem type=\"otherFormat\" xlink:href=\"https://www.govinfo.gov/content/pkg/GPO-WMD/pdf/GPO-WMD-1-20.pdf\">\n <identifier type=\"FDsys Unique ID\">D09002ee1a025d82e</identifier>\n</relatedItem>\n <identifier type=\"uri\">https://www.govinfo.gov/app/details/GPO-WMD/GPO-WMD-1-20</identifier>\n <location>\n <url displayLabel=\"Content Detail\" access=\"object in context\">https://www.govinfo.gov/app/details/GPO-WMD/GPO-WMD-1-20</url>\n <url access=\"raw object\" displayLabel=\"PDF rendition\">https://www.govinfo.gov/content/pkg/GPO-WMD/pdf/GPO-WMD-1-20.pdf</url>\n</location>\n <subject>\n <hierarchicalGeographic>\n <country>United States of America</country>\n <state></state>\n</hierarchicalGeographic>\n</subject>\n <extension>\n <searchTitle>Unclassified Version of the Report of the Commission on the Intelligence Capabilities of the United States Regarding Weapons of Mass Destruction;\n Conclusion;\n </searchTitle>\n <granuleClass>CONTENT</granuleClass>\n <accessId>GPO-WMD-1-20</accessId>\n <sequenceNumber>21</sequenceNumber>\n</extension>\n</relatedItem>\n<relatedItem type=\"constituent\" ID=\"id-new_child1284384560386\" xlink:href=\"https://www.govinfo.gov/metadata/granule/GPO-WMD/GPO-WMD-1-21/mods.xml\">\n <titleInfo>\n <title>Postscript: Additional Intelligence Challenges</title>\n</titleInfo>\n <relatedItem type=\"otherFormat\" xlink:href=\"https://www.govinfo.gov/content/pkg/GPO-WMD/pdf/GPO-WMD-1-21.pdf\">\n <identifier type=\"FDsys Unique ID\">D09002ee1a025d826</identifier>\n</relatedItem>\n <identifier type=\"uri\">https://www.govinfo.gov/app/details/GPO-WMD/GPO-WMD-1-21</identifier>\n <location>\n <url displayLabel=\"Content Detail\" access=\"object in context\">https://www.govinfo.gov/app/details/GPO-WMD/GPO-WMD-1-21</url>\n <url access=\"raw object\" displayLabel=\"PDF rendition\">https://www.govinfo.gov/content/pkg/GPO-WMD/pdf/GPO-WMD-1-21.pdf</url>\n</location>\n <subject>\n <hierarchicalGeographic>\n <country>United States of America</country>\n <state></state>\n</hierarchicalGeographic>\n</subject>\n <extension>\n <searchTitle>Unclassified Version of the Report of the Commission on the Intelligence Capabilities of the United States Regarding Weapons of Mass Destruction;\n Postscript: Additional Intelligence Challenges;\n </searchTitle>\n <granuleClass>CONTENT</granuleClass>\n <accessId>GPO-WMD-1-21</accessId>\n <sequenceNumber>22</sequenceNumber>\n</extension>\n</relatedItem>\n<relatedItem type=\"constituent\" ID=\"id-new_child1284384575827\" xlink:href=\"https://www.govinfo.gov/metadata/granule/GPO-WMD/GPO-WMD-1-22/mods.xml\">\n <titleInfo>\n <title>Appendix A: Authorizing Executive Order</title>\n</titleInfo>\n <relatedItem type=\"otherFormat\" xlink:href=\"https://www.govinfo.gov/content/pkg/GPO-WMD/pdf/GPO-WMD-1-22.pdf\">\n <identifier type=\"FDsys Unique ID\">D09002ee1a025d81d</identifier>\n</relatedItem>\n <identifier type=\"uri\">https://www.govinfo.gov/app/details/GPO-WMD/GPO-WMD-1-22</identifier>\n <location>\n <url displayLabel=\"Content Detail\" access=\"object in context\">https://www.govinfo.gov/app/details/GPO-WMD/GPO-WMD-1-22</url>\n <url access=\"raw object\" displayLabel=\"PDF rendition\">https://www.govinfo.gov/content/pkg/GPO-WMD/pdf/GPO-WMD-1-22.pdf</url>\n</location>\n <subject>\n <hierarchicalGeographic>\n <country>United States of America</country>\n <state></state>\n</hierarchicalGeographic>\n</subject>\n <extension>\n <searchTitle>Unclassified Version of the Report of the Commission on the Intelligence Capabilities of the United States Regarding Weapons of Mass Destruction;\n Appendix A: Authorizing Executive Order;\n </searchTitle>\n <granuleClass>CONTENT</granuleClass>\n <accessId>GPO-WMD-1-22</accessId>\n <sequenceNumber>23</sequenceNumber>\n <USCode title=\"5\">\n <section number=\"5701\"></section>\n <section number=\"5707\"></section>\n </USCode>\n <USCode title=\"50\">\n <section detail=\"(1)\" number=\"2302\"></section>\n <section detail=\"(4)\" number=\"401a\"></section>\n </USCode>\n <USCode title=\"5\">\n <section number=\"5701\"></section>\n <section number=\"5707\"></section>\n </USCode>\n <USCode title=\"50\">\n <section detail=\"(1)\" number=\"2302\"></section>\n <section detail=\"(4)\" number=\"401a\"></section>\n </USCode>\n <presidentialDoc date=\"1995-04-17\" number=\"12958\" type=\"EXECORD\"></presidentialDoc>\n</extension>\n <relatedItem type=\"isReferencedBy\">\n <titleInfo>\n <title>United States Code</title>\n <partNumber>Title 5 Section 5701</partNumber>\n <partNumber>Title 5 Section 5707</partNumber>\n</titleInfo>\n <identifier type=\"USC citation\">5 U.S.C. 5701</identifier>\n <identifier type=\"USC citation\">5 U.S.C. 5707</identifier>\n</relatedItem>\n <relatedItem type=\"isReferencedBy\">\n <titleInfo>\n <title>United States Code</title>\n <partNumber>Title 50 Section 2302(1)</partNumber>\n <partNumber>Title 50 Section 401a(4)</partNumber>\n</titleInfo>\n <identifier type=\"USC citation\">50 U.S.C. 2302(1)</identifier>\n <identifier type=\"USC citation\">50 U.S.C. 401a(4)</identifier>\n</relatedItem>\n <relatedItem type=\"isReferencedBy\">\n <titleInfo>\n <title>United States Code</title>\n <partNumber>Title 5 Section 5701</partNumber>\n <partNumber>Title 5 Section 5707</partNumber>\n</titleInfo>\n <identifier type=\"USC citation\">5 U.S.C. 5701</identifier>\n <identifier type=\"USC citation\">5 U.S.C. 5707</identifier>\n</relatedItem>\n <relatedItem type=\"isReferencedBy\">\n <titleInfo>\n <title>United States Code</title>\n <partNumber>Title 50 Section 2302(1)</partNumber>\n <partNumber>Title 50 Section 401a(4)</partNumber>\n</titleInfo>\n <identifier type=\"USC citation\">50 U.S.C. 2302(1)</identifier>\n <identifier type=\"USC citation\">50 U.S.C. 401a(4)</identifier>\n</relatedItem>\n <relatedItem type=\"isReferencedBy\">\n <titleInfo>\n <title>Presidential Executive Order Number 12958</title>\n</titleInfo>\n <identifier type=\"presidential executive order number\">Executive Order 12958</identifier>\n</relatedItem>\n</relatedItem>\n<relatedItem type=\"constituent\" ID=\"id-new_child1284384592754\" xlink:href=\"https://www.govinfo.gov/metadata/granule/GPO-WMD/GPO-WMD-1-23/mods.xml\">\n <titleInfo>\n <title>Appendix B: List of Findings and Recommendations</title>\n</titleInfo>\n <relatedItem type=\"otherFormat\" xlink:href=\"https://www.govinfo.gov/content/pkg/GPO-WMD/pdf/GPO-WMD-1-23.pdf\">\n <identifier type=\"FDsys Unique ID\">D09002ee1a025d833</identifier>\n</relatedItem>\n <identifier type=\"uri\">https://www.govinfo.gov/app/details/GPO-WMD/GPO-WMD-1-23</identifier>\n <location>\n <url displayLabel=\"Content Detail\" access=\"object in context\">https://www.govinfo.gov/app/details/GPO-WMD/GPO-WMD-1-23</url>\n <url access=\"raw object\" displayLabel=\"PDF rendition\">https://www.govinfo.gov/content/pkg/GPO-WMD/pdf/GPO-WMD-1-23.pdf</url>\n</location>\n <subject>\n <hierarchicalGeographic>\n <country>United States of America</country>\n <state></state>\n</hierarchicalGeographic>\n</subject>\n <extension>\n <searchTitle>Unclassified Version of the Report of the Commission on the Intelligence Capabilities of the United States Regarding Weapons of Mass Destruction;\n Appendix B: List of Findings and Recommendations;\n </searchTitle>\n <granuleClass>CONTENT</granuleClass>\n <accessId>GPO-WMD-1-23</accessId>\n <sequenceNumber>24</sequenceNumber>\n</extension>\n</relatedItem>\n<relatedItem type=\"constituent\" ID=\"id-new_child1284384604507\" xlink:href=\"https://www.govinfo.gov/metadata/granule/GPO-WMD/GPO-WMD-1-24/mods.xml\">\n <titleInfo>\n <title>Appendix C: An Intelligence Community Primer</title>\n</titleInfo>\n <relatedItem type=\"otherFormat\" xlink:href=\"https://www.govinfo.gov/content/pkg/GPO-WMD/pdf/GPO-WMD-1-24.pdf\">\n <identifier type=\"FDsys Unique ID\">D09002ee1a025d81e</identifier>\n</relatedItem>\n <identifier type=\"uri\">https://www.govinfo.gov/app/details/GPO-WMD/GPO-WMD-1-24</identifier>\n <location>\n <url displayLabel=\"Content Detail\" access=\"object in context\">https://www.govinfo.gov/app/details/GPO-WMD/GPO-WMD-1-24</url>\n <url access=\"raw object\" displayLabel=\"PDF rendition\">https://www.govinfo.gov/content/pkg/GPO-WMD/pdf/GPO-WMD-1-24.pdf</url>\n</location>\n <subject>\n <hierarchicalGeographic>\n <country>United States of America</country>\n <state></state>\n</hierarchicalGeographic>\n</subject>\n <extension>\n <searchTitle>Unclassified Version of the Report of the Commission on the Intelligence Capabilities of the United States Regarding Weapons of Mass Destruction;\n Appendix C: An Intelligence Community Primer;\n </searchTitle>\n <granuleClass>CONTENT</granuleClass>\n <accessId>GPO-WMD-1-24</accessId>\n <sequenceNumber>25</sequenceNumber>\n</extension>\n</relatedItem>\n<relatedItem type=\"constituent\" ID=\"id-new_child1284384621867\" xlink:href=\"https://www.govinfo.gov/metadata/granule/GPO-WMD/GPO-WMD-1-25/mods.xml\">\n <titleInfo>\n <title>Appendix D: Common Abbreviations</title>\n</titleInfo>\n <relatedItem type=\"otherFormat\" xlink:href=\"https://www.govinfo.gov/content/pkg/GPO-WMD/pdf/GPO-WMD-1-25.pdf\">\n <identifier type=\"FDsys Unique ID\">D09002ee1a025d828</identifier>\n</relatedItem>\n <identifier type=\"uri\">https://www.govinfo.gov/app/details/GPO-WMD/GPO-WMD-1-25</identifier>\n <location>\n <url displayLabel=\"Content Detail\" access=\"object in context\">https://www.govinfo.gov/app/details/GPO-WMD/GPO-WMD-1-25</url>\n <url access=\"raw object\" displayLabel=\"PDF rendition\">https://www.govinfo.gov/content/pkg/GPO-WMD/pdf/GPO-WMD-1-25.pdf</url>\n</location>\n <subject>\n <hierarchicalGeographic>\n <country>United States of America</country>\n <state></state>\n</hierarchicalGeographic>\n</subject>\n <extension>\n <searchTitle>Unclassified Version of the Report of the Commission on the Intelligence Capabilities of the United States Regarding Weapons of Mass Destruction;\n Appendix D: Common Abbreviations;\n </searchTitle>\n <granuleClass>CONTENT</granuleClass>\n <accessId>GPO-WMD-1-25</accessId>\n <sequenceNumber>26</sequenceNumber>\n</extension>\n</relatedItem>\n<relatedItem type=\"constituent\" ID=\"id-new_child1284384635060\" xlink:href=\"https://www.govinfo.gov/metadata/granule/GPO-WMD/GPO-WMD-1-26/mods.xml\">\n <titleInfo>\n <title>Appendix E: Biographical Information for Commissioners and List of Commission Staff</title>\n</titleInfo>\n <relatedItem type=\"otherFormat\" xlink:href=\"https://www.govinfo.gov/content/pkg/GPO-WMD/pdf/GPO-WMD-1-26.pdf\">\n <identifier type=\"FDsys Unique ID\">D09002ee1a025d821</identifier>\n</relatedItem>\n <identifier type=\"uri\">https://www.govinfo.gov/app/details/GPO-WMD/GPO-WMD-1-26</identifier>\n <location>\n <url displayLabel=\"Content Detail\" access=\"object in context\">https://www.govinfo.gov/app/details/GPO-WMD/GPO-WMD-1-26</url>\n <url access=\"raw object\" displayLabel=\"PDF rendition\">https://www.govinfo.gov/content/pkg/GPO-WMD/pdf/GPO-WMD-1-26.pdf</url>\n</location>\n <subject>\n <hierarchicalGeographic>\n <country>United States of America</country>\n <state></state>\n</hierarchicalGeographic>\n</subject>\n <extension>\n <searchTitle>Unclassified Version of the Report of the Commission on the Intelligence Capabilities of the United States Regarding Weapons of Mass Destruction;\n Appendix E: Biographical Information for Commissioners and List of Commission Staff;\n </searchTitle>\n <granuleClass>CONTENT</granuleClass>\n <accessId>GPO-WMD-1-26</accessId>\n <sequenceNumber>27</sequenceNumber>\n</extension>\n</relatedItem>\n</mods>",
"items": [
{
"itemType": "document",
"title": "Unclassified Version of the Report of the Commission on the Intelligence Capabilities of the United States Regarding Weapons of Mass Destruction",
"creators": [
{
"lastName": "United States: Commission on the Intelligence Capabilities of the United States Regarding Weapons of Mass Destruction",
"fieldMode": 1,
"creatorType": "author"
},
{
"lastName": "United States: Commission on the Intelligence Capabilities of the United States Regarding Weapons of Mass Destruction",
"fieldMode": 1,
"creatorType": "author"
}
],
"date": "2005-03-31",
"abstractNote": "The Commission on the Intelligence Capabilities of the United States Regarding Weapons of Mass Destruction was established in 2004 and charged with examining the capabilities and challenges of the American intelligence community concerning the capabilities, intentions, and activities of foreign powers relating to the design, development, manufacture, acquisition, possession, proliferation, transfer, testing, potential or threatened use, or use of weapons of mass destruction, related means of delivery, and other related threats of the 21st Century.",
"callNumber": "PREX 1.19:IN 8/W 37",
"language": "eng",
"publisher": "Commission on the Intelligence Capabilities of the United States Regarding Weapons of Mass Destruction",
"rights": "fdlp",
"url": "https://www.govinfo.gov/app/details/GPO-WMD",
"attachments": [
{
"title": "JPEG rendition",
"mimeType": "image/jpeg"
},
{
"title": "PDF rendition",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "<mods xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://www.loc.gov/mods/v3\" version=\"3.3\" xsi:schemaLocation=\"http://www.loc.gov/mods/v3 http://www.loc.gov/standards/mods/v3/mods-3-3.xsd\" ID=\"P0b002ee1b786fa55\">\r\n <name type=\"corporate\">\r\n <namePart>United States Government Publishing Office</namePart>\r\n <role>\r\n <roleTerm authority=\"marcrelator\" type=\"text\">publisher</roleTerm>\r\n <roleTerm authority=\"marcrelator\" type=\"code\">pbl</roleTerm>\r\n </role>\r\n <role>\r\n <roleTerm authority=\"marcrelator\" type=\"text\">distributor</roleTerm>\r\n <roleTerm authority=\"marcrelator\" type=\"code\">dst</roleTerm>\r\n </role>\r\n </name>\r\n <name type=\"corporate\">\r\n <namePart>United States</namePart>\r\n <namePart>Congress</namePart>\r\n <namePart>Senate</namePart>\r\n <role>\r\n <roleTerm authority=\"marcrelator\" type=\"text\">author</roleTerm>\r\n <roleTerm authority=\"marcrelator\" type=\"code\">aut</roleTerm>\r\n </role>\r\n <description>Government Organization</description>\r\n </name>\r\n <name type=\"corporate\">\r\n <namePart>United States</namePart>\r\n <namePart>Congress</namePart>\r\n <namePart>House of Representatives</namePart>\r\n <role>\r\n <roleTerm authority=\"marcrelator\" type=\"text\">author</roleTerm>\r\n <roleTerm authority=\"marcrelator\" type=\"code\">aut</roleTerm>\r\n </role>\r\n <description>Government Organization</description>\r\n </name>\r\n <typeOfResource>text</typeOfResource>\r\n <genre authority=\"marcgt\">government publication</genre>\r\n <language>\r\n <languageTerm type=\"code\" authority=\"iso639-2b\">eng</languageTerm>\r\n </language>\r\n <extension>\r\n <collectionCode>BILLS</collectionCode>\r\n <searchTitle>An Act To amend title 38, United States Code, to authorize the Secretary of Veterans Affairs to provide or assist in providing an additional vehicle adapted for operation by disabled individuals to certain eligible persons, and for other purposes.;Advancing Uniform Transportation Opportunities for Veterans Act;AUTO for Veterans Act;H.R. 3304 (RFS)\r\n </searchTitle>\r\n <category>Bills and Statutes</category>\r\n <waisDatabaseName>117_cong_bills</waisDatabaseName>\r\n <branch>legislative</branch>\r\n <dateIngested>2022-10-12</dateIngested>\r\n </extension>\r\n <titleInfo>\r\n <title>An Act To amend title 38, United States Code, to authorize the Secretary of Veterans Affairs to provide or assist in providing an additional vehicle adapted for operation by disabled individuals to certain eligible persons, and for other purposes.</title>\r\n </titleInfo>\r\n <titleInfo type=\"alternative\">\r\n <title>Advancing Uniform Transportation Opportunities for Veterans Act</title>\r\n </titleInfo>\r\n <titleInfo type=\"alternative\">\r\n <title>AUTO for Veterans Act</title>\r\n </titleInfo>\r\n <titleInfo type=\"alternative\">\r\n <title>H.R. 3304 (RFS)\r\n </title>\r\n </titleInfo>\r\n <originInfo>\r\n <publisher>U.S. Government Publishing Office</publisher>\r\n <dateIssued encoding=\"w3cdtf\">2022-10-11</dateIssued>\r\n <issuance>monographic</issuance>\r\n </originInfo>\r\n <physicalDescription>\r\n <note type=\"source content type\">deposited</note>\r\n <digitalOrigin>born digital</digitalOrigin>\r\n <extent>4 p.</extent>\r\n </physicalDescription>\r\n <classification authority=\"sudocs\">Y 1.6:</classification>\r\n <classification authority=\"sudocs\">Y 1.4/6:</classification>\r\n <identifier type=\"local\">P0b002ee1b786fa55</identifier>\r\n <identifier type=\"uri\">https://www.govinfo.gov/app/details/BILLS-117hr3304rfs</identifier>\r\n <identifier type=\"preferred citation\">H.R. 3304</identifier>\r\n <identifier type=\"stock number\">021-610-00252-9</identifier>\r\n <identifier type=\"Parent ILS system id\">000501532</identifier>\r\n <identifier type=\"Child ILS system id\">000325573</identifier>\r\n <identifier type=\"Parent ILS title\">Congressional bills</identifier>\r\n <identifier type=\"Child ILS title\">House bills</identifier>\r\n <identifier type=\"former package identifier\">f:h3304_rfs.txt</identifier>\r\n <location>\r\n <url displayLabel=\"Content Detail\" access=\"object in context\">https://www.govinfo.gov/app/details/BILLS-117hr3304rfs</url>\r\n <url displayLabel=\"HTML rendition\" access=\"raw object\">https://www.govinfo.gov/content/pkg/BILLS-117hr3304rfs/html/BILLS-117hr3304rfs.htm</url>\r\n <url displayLabel=\"PDF rendition\" access=\"raw object\">https://www.govinfo.gov/content/pkg/BILLS-117hr3304rfs/pdf/BILLS-117hr3304rfs.pdf</url>\r\n <url displayLabel=\"XML rendition\" access=\"raw object\">https://www.govinfo.gov/content/pkg/BILLS-117hr3304rfs/xml/BILLS-117hr3304rfs.xml</url>\r\n </location>\r\n <accessCondition type=\"GPO scope determination\">fdlp</accessCondition>\r\n <recordInfo>\r\n <recordContentSource authority=\"marcorg\">DGPO</recordContentSource>\r\n <recordCreationDate encoding=\"w3cdtf\">2022-10-12</recordCreationDate>\r\n <recordChangeDate encoding=\"w3cdtf\">2022-10-13</recordChangeDate>\r\n <recordIdentifier source=\"DGPO\">BILLS-117hr3304rfs</recordIdentifier>\r\n <recordOrigin>machine generated</recordOrigin>\r\n <languageOfCataloging>\r\n <languageTerm type=\"code\" authority=\"iso639-2b\">eng</languageTerm>\r\n </languageOfCataloging>\r\n </recordInfo>\r\n <name type=\"corporate\">\r\n <namePart>United States</namePart>\r\n <namePart>Congress</namePart>\r\n <namePart>Senate</namePart>\r\n <namePart>Committee on Veterans' Affairs</namePart>\r\n <role>\r\n <roleTerm authority=\"marcrelator\" type=\"text\">associated name</roleTerm>\r\n <roleTerm authority=\"marcrelator\" type=\"code\">asn</roleTerm>\r\n </role>\r\n </name>\r\n <relatedItem type=\"isReferencedBy\">\r\n <titleInfo>\r\n <title>United States Code</title>\r\n <partNumber>Title 38 Section 1701(6)</partNumber>\r\n <partNumber>Title 38 Section 3729(b)(2)</partNumber>\r\n <partNumber>Title 38 Section 3903(a)</partNumber>\r\n </titleInfo>\r\n <identifier type=\"USC citation\">38 U.S.C. 1701(6)</identifier>\r\n <identifier type=\"USC citation\">38 U.S.C. 3729(b)(2)</identifier>\r\n <identifier type=\"USC citation\">38 U.S.C. 3903(a)</identifier>\r\n </relatedItem>\r\n <extension>\r\n <docClass>hr</docClass>\r\n <accessId>BILLS-117hr3304rfs</accessId>\r\n <congress>117</congress>\r\n <session>2</session>\r\n <originChamber>HOUSE</originChamber>\r\n <currentChamber>SENATE</currentChamber>\r\n <billNumber>3304</billNumber>\r\n <billVersion reprint=\"false\">rfs</billVersion>\r\n <fileSuffix>rfs</fileSuffix>\r\n <shortTitle type=\"measure\">Advancing Uniform Transportation Opportunities for Veterans Act</shortTitle>\r\n <shortTitle type=\"measure\">AUTO for Veterans Act</shortTitle>\r\n <officialTitle>To amend title 38, United States Code, to authorize the Secretary of Veterans Affairs to provide or assist in providing an additional vehicle adapted for operation by disabled individuals to certain eligible persons, and for other purposes.</officialTitle>\r\n <action date=\"2022-10-11\">Received; read twice and referred to the Committee on Veterans' Affairs</action>\r\n <congCommittee authorityId=\"ssva00\" chamber=\"S\" congress=\"117\" type=\"S\">\r\n \r\n <name type=\"authority-standard\">Committee on Veterans' Affairs</name>\r\n \r\n <name type=\"authority-short\">Veterans' Affairs</name>\r\n \r\n </congCommittee>\r\n <isPrivate>false</isPrivate>\r\n <isAppropriation>false</isAppropriation>\r\n <USCode title=\"38\">\r\n \r\n <section detail=\"(6)\" number=\"1701\"></section>\r\n \r\n <section detail=\"(b)(2)\" number=\"3729\"></section>\r\n \r\n <section detail=\"(a)\" number=\"3903\"></section>\r\n \r\n </USCode>\r\n </extension>\r\n</mods>",
"items": [
{
"itemType": "bill",
"title": "Advancing Uniform Transportation Opportunities for Veterans Act",
"creators": [],
"date": "2022-10-11",
"billNumber": "H.R. 3304",
"code": "U.S.C.",
"codePages": "1701, 3729, 3903",
"codeVolume": "38",
"language": "eng",
"legislativeBody": "House",
"rights": "fdlp",
"session": "117",
"url": "https://www.govinfo.gov/app/details/BILLS-117hr3304rfs",
"attachments": [
{
"title": "HTML rendition",
"mimeType": "text/html"
},
{
"title": "PDF rendition",
"mimeType": "application/pdf"
},
{
"title": "XML rendition"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Sebastian Karcherhttps://www.hup.harvard.edu/(catalog.php|results-list.php)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2022 Sebastian Karcher
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (/[?&]isbn=/.test(url)) {
return 'book';
}
else if (getSearchResults(doc, true)) {
return 'multiple';
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.resultsContainer .title>a');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
async function doWeb(doc, url) {
if (detectWeb(doc, url) == 'multiple') {
let items = await Zotero.selectItems(getSearchResults(doc, false));
if (items) {
await Promise.all(
Object.keys(items)
.map(url => requestDocument(url).then(scrape))
);
}
}
else {
await scrape(doc);
}
}
async function scrape(doc) {
var item = new Zotero.Item("book");
let mainTitle = text(doc, '#mainTop h1');
let subTitle = text(doc, '#mainTop h2');
item.title = [mainTitle, subTitle].join(": ");
var creators = doc.querySelectorAll('#authorList>h3');
var role = "author";// default
for (var i = 0; i < creators.length; i++) {
var creator = creators[i].textContent;
if (creator.includes("Edited by")) {
role = "editor";
creator = creator.replace("Edited by ", "");
}
item.creators.push(ZU.cleanAuthor(creator, role));
}
var date = ZU.xpathText(doc, '//div[contains(@class, "product_sidebar")]/p[starts-with(., "Published:")]');
if (date) {
item.date = ZU.strToISO(date);
}
let isbn = text(doc, '#bookMeta p.isbn');
if (isbn) {
item.ISBN = ZU.cleanISBN(isbn);
}
var details = doc.getElementById('bookDetails').innerHTML;
if (details) {
let pages = details.match(/(\d+) pages/i);
if (pages) {
item.numPages = pages[1];
}
let publisher = details.match(/>([^<]+?Press)/);
if (publisher) {
item.publisher = publisher[1];
}
}
let series = text(doc, 'h5.series');
if (series) {
item.series = ZU.capitalizeTitle(series, true);
}
var meta = text(doc, '#bookMeta');
if (meta) {
let date = meta.match(/Publication Date:\s*(.+)/);
if (date) {
item.date = ZU.strToISO(date[1]);
}
}
if (!item.publisher) {
item.publisher = "Harvard University Press";
}
item.place = "Cambridge, MA";
// remove the pull quotes at the top of the "abstract"
var abstract = doc.querySelectorAll('#mainBottom #content>p:not(.keynote)');
if (abstract) {
let fullAbstract = [];
for (let paragraph of abstract) {
fullAbstract.push(paragraph.textContent);
}
item.abstractNote = fullAbstract.join("\n");
}
item.attachments.push({
title: "Snapshot",
document: doc
});
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.hup.harvard.edu/catalog.php?isbn=9780674276611",
"items": [
{
"itemType": "book",
"title": "Getting to Diversity: What Works and What Doesn’t",
"creators": [
{
"firstName": "Frank",
"lastName": "Dobbin",
"creatorType": "author"
},
{
"firstName": "Alexandra",
"lastName": "Kalev",
"creatorType": "author"
}
],
"date": "2022-09-13",
"ISBN": "9780674276611",
"abstractNote": "Every year America becomes more diverse, but change in the makeup of the management ranks has stalled. The problem has become an urgent matter of national debate. How do we fix it? Bestselling books preach moral reformation. Employers, however well intentioned, follow guesswork and whatever their peers happen to be doing. Arguing that it’s time to focus on changing systems rather than individuals, two of the world’s leading experts on workplace diversity show us a better way in the first comprehensive, data-driven analysis of what succeeds and what fails. The surprising results will change how America works.\nFrank Dobbin and Alexandra Kalev draw on more than thirty years of data from eight hundred companies as well as in-depth interviews with managers. The research shows just how little companies gain from standard practice: sending managers to diversity training to reveal their biases, then following up with hiring and promotion rules, and sanctions, to shape their behavior. Almost nothing changes. It’s time, Dobbin and Kalev argue, to focus on changing the management systems that make it hard for women and people of color to succeed. They show us how the best firms are pioneering new recruitment, mentoring, and skill training systems, and implementing strategies for mixing segregated work groups to increase diversity. They explain what a difference ambitious work–life programs make. And they argue that as firms adopt new systems, the key to making them work is to make them accessible to all—not just the favored few.\nPowerful, authoritative, and driven by a commitment to change, Getting to Diversity is the book we need now to address constructively one of the most fraught challenges in American life.",
"libraryCatalog": "Harvard University Press Books",
"numPages": "272",
"place": "Cambridge, MA",
"publisher": "Belknap Press",
"shortTitle": "Getting to Diversity",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.hup.harvard.edu/catalog.php?isbn=9780674271821",
"items": [
{
"itemType": "book",
"title": "The Critical Writings of Oscar Wilde: An Annotated Selection",
"creators": [
{
"firstName": "Oscar",
"lastName": "Wilde",
"creatorType": "author"
},
{
"firstName": "Nicholas",
"lastName": "Frankel",
"creatorType": "editor"
}
],
"date": "2022-12-13",
"ISBN": "9780674271821",
"abstractNote": "Though he is primarily acclaimed today for his drama and fiction, Oscar Wilde was also one of the greatest critics of his generation. Annotated and introduced by Wilde scholar Nicholas Frankel, this unique collection reveals Wilde as a writer who transformed criticism, giving the genre new purpose, injecting it with style and wit, and reorienting it toward the kinds of social concerns that still occupy our most engaging cultural commentators.\n“Criticism is itself an art,” Wilde wrote, and The Critical Writings of Oscar Wilde demonstrates this philosophy in action. Readers will encounter some of Wilde’s most quotable writings, such as “The Decay of Lying,” which famously avers that “Life imitates Art far more than Art imitates life.” But Frankel also includes lesser-known works like “The American Invasion,” a witty celebration of modern femininity, and “Aristotle at Afternoon Tea,” in which Wilde deftly (and anonymously) carves up his former tutor’s own criticism. The essays, reviews, dialogues, and epigrams collected here cover an astonishing range of themes: literature, of course, but also fashion, politics, masculinity, cuisine, courtship, marriage—the breadth of Victorian England. If today’s critics address such topics as a matter of course, it is because Wilde showed that they could. It is hard to imagine a twenty-first-century criticism without him.",
"libraryCatalog": "Harvard University Press Books",
"numPages": "400",
"place": "Cambridge, MA",
"publisher": "Harvard University Press",
"shortTitle": "The Critical Writings of Oscar Wilde",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.hup.harvard.edu/results-list.php?hcid=43",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.hup.harvard.edu/results-list.php?search=labor&submit=Search",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.hup.harvard.edu/catalog.php?isbn=9780674975736",
"items": [
{
"itemType": "book",
"title": "The Singer of Tales: Third Edition",
"creators": [
{
"firstName": "Albert B.",
"lastName": "Lord",
"creatorType": "author"
},
{
"firstName": "David F.",
"lastName": "Elmer",
"creatorType": "editor"
}
],
"date": "2019-04-02",
"ISBN": "9780674975736",
"abstractNote": "First published in 1960, Albert B. Lord’s The Singer of Tales remains the fundamental study of the distinctive techniques and aesthetics of oral epic poetry. Based upon pathbreaking fieldwork conducted in the 1930s and 1950s among oral epic singers of Bosnia, Croatia, and Serbia, Lord analyzes in impressive detail the techniques of oral composition in performance. He explores the consequences of this analysis for the interpretation of numerous works of traditional verbal art, including—in addition to South Slavic epic songs—the Homeric Iliad and Odyssey, Beowulf, the Chanson de Roland, and the Byzantine epic Digenis Akritas. A cardinal text for the study of oral traditions, The Singer of Tales also represents an exemplary use of the comparative method in literary criticism.\nThis third edition offers a corrected text of the second edition and is supplemented by an open-access website (in lieu of the second edition’s CD-ROM), providing all the recordings discussed by Lord, as well as a variety of other multimedia materials.",
"libraryCatalog": "Harvard University Press Books",
"numPages": "350",
"place": "Cambridge, MA",
"publisher": "Harvard University Press",
"series": "Hellenic Studies Series",
"shortTitle": "The Singer of Tales",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100czar^https?://maitron\.fr//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2018 czar
http://en.wikipedia.org/wiki/User_talk:Czar
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/spip.php?article')) {
return "encyclopediaArticle";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function scrape(doc, _url) {
var newItem = new Zotero.Item("encyclopediaArticle");
newItem.encyclopediaTitle = "Le Maitron";
newItem.language = "fr";
newItem.url = attr(doc, 'link[rel=canonical]', 'href'); // url.replace(/#$/,'');
newItem.title = text(doc, '.notice-titre');
// if title contains square brackets, take its contents and use as encyclopedia name
var subEncyc = newItem.title.match(/\[[^\]]+\]/g);
if (subEncyc) {
newItem.encyclopediaTitle = subEncyc[subEncyc.length - 1].slice(1, -1);
newItem.title = newItem.title.slice(0, -1 * (newItem.encyclopediaTitle.length + 3));
}
newItem.publisher = "Maitron/Editions de l'Atelier";
newItem.place = "Paris";
// ZU.strToISO chokes on diacritics
var prepdate = text(doc, '#copy-text').match(/\d{1,2}\s[^\s]+\s\d{4}/g);
prepdate = prepdate[prepdate.length - 1].normalize('NFD').replace(/[\u0300-\u036f]/g, "");
prepdate = prepdate
.replace('fev', 'feb')
.replace('avr', 'apr')
.replace('mai', 'may')
.replace('juin', 'jun')
.replace('juil', 'jul')
.replace('aout', 'aug');
newItem.date = ZU.strToISO(prepdate);
newItem.abstractNote = text(doc, '.intro');
// var articleID = newItem.url.match(/\d{2,}/);
newItem.attachments.push({
document: doc,
// the following archive URL displays better, but triggers a print dialog pop-up whenever it saves
// url: "/spip.php?page=imprimir_articulo&id_article="+articleID,
title: "Le Maitron snapshot",
mimeType: "text/html"
});
if (newItem.title.split('.').length > 1) {
newItem.shortTitle = newItem.title.split('.')[0];
}
// Authors – haven't seen more than one attributed at once
var authorMetadata = text(doc, '.notice-auteur').match(/\s*Par\s+(.*)/);
if (authorMetadata) {
// remove prefix text
authorMetadata[1] = authorMetadata[1].replace(/[Nn]otice complétée par |[Nn]otice complétée et corrigée par /, "");
for (var author of authorMetadata[1].split(/, | et /)) {
newItem.creators.push(ZU.cleanAuthor(author, "author"));
}
}
newItem.complete();
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.resultats-liste a, .liste-notices li a');
var titles = doc.querySelectorAll('.resultats-liste strong, .liste-notices li a');
for (let i = 0; i < rows.length; i++) {
let href = rows[i].href;
let title = ZU.trimInternal(titles[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) {
return;
}
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
}
else {
scrape(doc, url);
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://maitron.fr/spip.php?article155263",
"items": [
{
"itemType": "encyclopediaArticle",
"title": "CREAGH Ronald, Roberts",
"creators": [
{
"firstName": "Hugues",
"lastName": "Lenoir",
"creatorType": "author"
}
],
"date": "2014-04-14",
"abstractNote": "Né le 16 juin 1929 à Alexandrie (Égypte). Sociologue, professeur de civilisation américaine à Montpellier. Anarchiste.",
"encyclopediaTitle": "Dictionnaire des anarchistes",
"language": "fr",
"libraryCatalog": "Le Maitron",
"place": "Paris",
"publisher": "Maitron/Editions de l'Atelier",
"url": "https://maitron.fr/spip.php?article155263",
"attachments": [
{
"title": "Le Maitron snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://maitron.fr/spip.php?page=recherche_avanc&typerech=simple&lang=fr&swishe_exp=voline&OK=OK&swishe_type=and&swishe_from%5B%5D=full",
"items": "multiple"
},
{
"type": "web",
"url": "https://maitron.fr/spip.php?article154716",
"items": [
{
"itemType": "encyclopediaArticle",
"title": "VOLINE [Vsévolod Mikhaïlovitch Eichenbaum, dit]",
"creators": [
{
"firstName": "Sylvain",
"lastName": "Boulouque",
"creatorType": "author"
}
],
"date": "2022-07-05",
"abstractNote": "Né le 11 août 1882 à Tikhvine (Russie), mort le 18 septembre 1945 à Paris ; militant et théoricien du mouvement anarchiste ; historien du mouvement makhnoviste.",
"encyclopediaTitle": "Dictionnaire des anarchistes",
"language": "fr",
"libraryCatalog": "Le Maitron",
"place": "Paris",
"publisher": "Maitron/Editions de l'Atelier",
"url": "https://maitron.fr/spip.php?article154716",
"attachments": [
{
"title": "Le Maitron snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://maitron.fr/spip.php?mot9745&lettre=^(r|R)",
"items": "multiple"
},
{
"type": "web",
"url": "https://maitron.fr/spip.php?article149723&id_mot=216",
"items": [
{
"itemType": "encyclopediaArticle",
"title": "ABDALLAH (écrit aussi MHAMED Abdallah)",
"creators": [
{
"firstName": "Amar",
"lastName": "Benamrouche",
"creatorType": "author"
},
{
"firstName": "Louis-Pierre",
"lastName": "Montoy",
"creatorType": "author"
}
],
"date": "2014-01-09",
"abstractNote": "Syndicaliste CGTU puis CGT du port de Bône [Annaba] (Algérie) ; communiste puis candidat indépendant aux élections locales.",
"encyclopediaTitle": "Dictionnaire Algérie",
"language": "fr",
"libraryCatalog": "Le Maitron",
"place": "Paris",
"publisher": "Maitron/Editions de l'Atelier",
"url": "https://maitron.fr/spip.php?article149723",
"attachments": [
{
"title": "Le Maitron snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://maitron.fr/spip.php?article174841",
"items": [
{
"itemType": "encyclopediaArticle",
"title": "SALANNE René, Jean",
"creators": [
{
"firstName": "Claude",
"lastName": "Roccati",
"creatorType": "author"
}
],
"date": "2021-08-16",
"abstractNote": "Né le 31 janvier 1927 à Bayonne (Pyrénées-Atlantiques), mort le 16 avril 2021 à Paris (XIVe arr.) ; modeleur sur bois ; permanent JOC pour la région Sud-Ouest, secrétaire général adjoint (1951-1953) puis vice-président (1953-1955) et enfin président de la JOC (1955-1956), secrétaire général de la JOC internationale (1956-1961) ; secrétaire confédéral CFTC-CFDT (1962-1970), membre de la commission exécutive de la CFDT en charge du secteur international (1970-1979).",
"encyclopediaTitle": "Le Maitron",
"language": "fr",
"libraryCatalog": "Le Maitron",
"place": "Paris",
"publisher": "Maitron/Editions de l'Atelier",
"url": "https://maitron.fr/spip.php?article174841",
"attachments": [
{
"title": "Le Maitron snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://maitron.fr/spip.php?article154635",
"items": [
{
"itemType": "encyclopediaArticle",
"title": "MATHA Armand, Louis",
"creators": [
{
"firstName": "Guillaume",
"lastName": "Davranche",
"creatorType": "author"
}
],
"date": "2022-07-05",
"abstractNote": "Né le 10 avril 1861 à Casteljaloux (Lot-et-Garonne) ; mort le 12 février 1930 à Draveil (Seine-et-Oise) ; ouvrier coiffeur puis publiciste ; animateur du Libertaire de 1900 à 1910.",
"encyclopediaTitle": "Dictionnaire des anarchistes",
"language": "fr",
"libraryCatalog": "Le Maitron",
"place": "Paris",
"publisher": "Maitron/Editions de l'Atelier",
"url": "https://maitron.fr/spip.php?article154635",
"attachments": [
{
"title": "Le Maitron snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://maitron.fr/spip.php?article154635",
"items": [
{
"itemType": "encyclopediaArticle",
"title": "MATHA Armand, Louis",
"creators": [
{
"firstName": "Guillaume",
"lastName": "Davranche",
"creatorType": "author"
}
],
"date": "2022-07-05",
"abstractNote": "Né le 10 avril 1861 à Casteljaloux (Lot-et-Garonne) ; mort le 12 février 1930 à Draveil (Seine-et-Oise) ; ouvrier coiffeur puis publiciste ; animateur du Libertaire de 1900 à 1910.",
"encyclopediaTitle": "Dictionnaire des anarchistes",
"language": "fr",
"libraryCatalog": "Le Maitron",
"place": "Paris",
"publisher": "Maitron/Editions de l'Atelier",
"url": "https://maitron.fr/spip.php?article154635",
"attachments": [
{
"title": "Le Maitron snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://maitron.fr/spip.php?article154015",
"items": [
{
"itemType": "encyclopediaArticle",
"title": "WINTSCH Jean",
"creators": [
{
"firstName": "Gianpiero",
"lastName": "Bottinelli",
"creatorType": "author"
},
{
"firstName": "Marianne",
"lastName": "Enckell",
"creatorType": "author"
}
],
"date": "2021-08-05",
"abstractNote": "Né à Odessa le 19 janvier 1880, mort à Lausanne (Suisse) le 27 avril 1943 ; médecin ; collaborateur du Réveil anarchiste et de la Voix du Peuple, néomalthusien, fondateur de l’école Ferrer de Lausanne ; marié à Natalie Maléef, deux enfants.",
"encyclopediaTitle": "Dictionnaire des anarchistes",
"language": "fr",
"libraryCatalog": "Le Maitron",
"place": "Paris",
"publisher": "Maitron/Editions de l'Atelier",
"url": "https://maitron.fr/spip.php?article154015",
"attachments": [
{
"title": "Le Maitron snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://maitron.fr/spip.php?article153818",
"items": [
{
"itemType": "encyclopediaArticle",
"title": "BERTRAND Julia, Marie, Victorine",
"creators": [
{
"firstName": "Jean",
"lastName": "Maitron",
"creatorType": "author"
},
{
"firstName": "Guillaume",
"lastName": "Davranche",
"creatorType": "author"
},
{
"firstName": "Rolf",
"lastName": "Dupuy",
"creatorType": "author"
}
],
"date": "2022-08-25",
"abstractNote": "Née le 14 février 1877 à Gemaingoutte (Vosges), morte le 25 mars 1960 à Fontenay-aux-Roses (Seine, Hauts-de-Seine) ; institutrice ; syndicaliste et anarchiste.",
"encyclopediaTitle": "Le Maitron",
"language": "fr",
"libraryCatalog": "Le Maitron",
"place": "Paris",
"publisher": "Maitron/Editions de l'Atelier",
"url": "https://maitron.fr/spip.php?article153818",
"attachments": [
{
"title": "Le Maitron snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://maitron.fr/spip.php?article156858",
"items": [
{
"itemType": "encyclopediaArticle",
"title": "VOISIN Marcel",
"creators": [
{
"firstName": "René",
"lastName": "Bianco",
"creatorType": "author"
},
{
"firstName": "Marianne",
"lastName": "Enckell",
"creatorType": "author"
}
],
"date": "2014-02-20",
"abstractNote": "Né le 26 septembre 1892 à Tours (Indre-et-Loire), mort le 31 janvier 1981 à Paris ; trimardeur, puis gérant d’un magasin de nourriture rationnelle ; militant pacifiste et libertaire.",
"encyclopediaTitle": "Dictionnaire des anarchistes",
"language": "fr",
"libraryCatalog": "Le Maitron",
"place": "Paris",
"publisher": "Maitron/Editions de l'Atelier",
"url": "https://maitron.fr/spip.php?article156858",
"attachments": [
{
"title": "Le Maitron snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Jingjing Yin and Qiang Fang^https?://global\.oup\.com/academic//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2017 Philipp Zumstein
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
// The url of books contains the ISBN (i.e. 9 digits) where the
// url of journals contains the ISSN (i.e. 4 digits).
if (url.includes('/product/') && url.search(/\d{9}/) > -1) {
return 'book';
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = ZU.xpath(doc, '//td[contains(@class, "result_biblio")]//a[contains(@href, "/academic/product/")]');
for (var i = 0; i < rows.length; i++) {
var href = rows[i].href;
var title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) {
return;
}
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
}
else {
scrape(doc);
}
}
function scrape(doc) {
var item = new Zotero.Item("book");
var subTitle = doc.getElementsByClassName('product_biblio_strapline')[0];
item.title = ZU.trimInternal(doc.getElementsByClassName('product_biblio_title')[0].textContent);
if (subTitle) {
item.title += ': ' + ZU.trimInternal(subTitle.textContent);
}
var edition = ZU.xpathText(doc, '//div[@id="overview_tab"]/div[@id="content"]/p[contains(., "Edition")]');
if (edition) {
item.edition = edition;
}
var creators = ZU.xpath(doc, '//div[@id="content"]/h3[contains(@class, "product_biblio_author")]/b');
var role = "author";// default
if (ZU.xpathText(doc, '//div[@id="content"]/h3[contains(@class, "product_biblio_author")]').includes("Edited by")) {
role = "editor";
}
for (var i = 0; i < creators.length; i++) {
var creator = creators[i].textContent;
creator = creator.replace(/^(Prof|Dr)/, '');
item.creators.push(ZU.cleanAuthor(creator, role));
}
if (!item.creators.length) {
// In the cc=us version of the site, we somehow lose the defined bold authors and have to parse them
// more crudely
creators = text(doc, '#content>h3.product_biblio_author');
if (creators.length) {
creators = creators.split(/,\s|\sand\s/);
for (let creator of creators) {
creator = creator.replace(/^(Prof|Dr)/, '');
item.creators.push(ZU.cleanAuthor(creator, role));
}
}
}
var date = ZU.xpathText(doc, '//div[contains(@class, "product_sidebar")]/p[starts-with(., "Published:")]');
if (date) {
item.date = ZU.strToISO(date);
}
item.ISBN = ZU.xpathText(doc, '//div[contains(@class, "product_sidebar")]/p[starts-with(., "ISBN:")]');
var pages = ZU.xpathText(doc, '//div[contains(@class, "product_sidebar")]/p[contains(., "Pages")]');
if (pages) {
var m = pages.match(/(\d+) Pages/);
if (m) {
item.numPages = m[1];
}
}
item.series = ZU.xpathText(doc, '(//h3[contains(@class, "product_biblio_series_heading")])[1]');
item.publisher = "Oxford University Press";
item.place = "Oxford, New York";
var abs = ZU.xpathText(doc, '//div[@id="description_tab"]//div[contains(@class, "expanding_content_container_inner_narrow")]');
if (abs) {
item.abstractNote = abs;
}
item.attachments.push({
title: "Snapshot",
document: doc
});
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://global.oup.com/academic/product/flute-time-1-piano-accompaniment-book-9780193221031?cc=de&lang=en&",
"items": [
{
"itemType": "book",
"title": "Flute Time 1 Piano Accompaniment book",
"creators": [
{
"firstName": "Ian",
"lastName": "Denley",
"creatorType": "author"
}
],
"date": "2003-07-24",
"ISBN": "9780193221031",
"abstractNote": "Piano accompaniments to selected pieces in Flute Time 1",
"libraryCatalog": "Oxford University Press",
"numPages": "32",
"place": "Oxford, New York",
"publisher": "Oxford University Press",
"series": "Flute Time",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://global.oup.com/academic/product/education-9780198781875?cc=de&lang=en&",
"items": [
{
"itemType": "book",
"title": "Education: Culture, Economy, and Society",
"creators": [
{
"firstName": "A. H.",
"lastName": "Halsey",
"creatorType": "editor"
},
{
"firstName": "Hugh",
"lastName": "Lauder",
"creatorType": "editor"
},
{
"firstName": "Phillip",
"lastName": "Brown",
"creatorType": "editor"
},
{
"firstName": "Amy Stuart",
"lastName": "Wells",
"creatorType": "editor"
}
],
"date": "1997-04-17",
"ISBN": "9780198781875",
"abstractNote": "Education: Culture, Economy, and Society is a book for everyone concerned with the social study of education: students studying the sociology of education, foundations of education, educational policy, and other related courses. It aims to establish the social study of education at the centre stage of political and sociological debate about post-industrial societies. In examining major changes which have taken place in the late twentieth century, it gives students a comprehensive introduction to both the nature of these changes and to their interpretation in relation to long-standing debates within education, sociology, and cultural studies. The extensive editorial introduction outlines the major theoretical approaches within the sociology of education, assesses their contribution to an adequate understanding of the changing educational context, and sets out the key issues and areas for future research. The 52 papers in this wide-ranging thematic reader bring together the most powerful work in education into an international dialogue which is sure to become a classic text.",
"libraryCatalog": "Oxford University Press",
"numPages": "848",
"place": "Oxford, New York",
"publisher": "Oxford University Press",
"shortTitle": "Education",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://global.oup.com/academic/product/computer-law-9780199696468?lang=en&cc=de#",
"items": [
{
"itemType": "book",
"title": "Computer Law",
"creators": [
{
"firstName": "Chris",
"lastName": "Reed",
"creatorType": "author"
}
],
"date": "2011-12-01",
"ISBN": "9780199696468",
"abstractNote": "This edition is fully updated to reflect the Digital Economy Act 2010 and changes to consumer protection law at EU level including the Unfair Commercial Practices Directive. Analysis of recent case law is also incorporated including, amongst others, the series of trade mark actions against eBay and copyrights suits against Google as well as the implications for IT contracts of BSkyB Ltd v HP Enterprise Services UK Ltd. All chapters have been revised to take into account the rapid evolution of the ways in which we consume, generate, store and exchange information, such as cloud computing, off-shoring and Web 2.0.Now established as a standard text on computer and information technology law, this book analyses the unique legal problems which arise from computing technology and transactions carried out through the exchange of digital information rather than human interaction. Topics covered range from contractual matters and intellectual property protection to electronic commerce, data protection and liability of internet service providers. Competition law issues are integrated into the various commercial sections as they arise to indicate their interaction with information technology law.",
"edition": "Seventh Edition",
"libraryCatalog": "Oxford University Press",
"numPages": "800",
"place": "Oxford, New York",
"publisher": "Oxford University Press",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Abe Jellinekhttps?://www\.govinfo\.gov//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
// TEMP: Why doesn't monitorDOMChanges() work here?
// We'd like to wait for a #mods link, but instead we just have to use the URL for now
if (url.includes('/details/')) {
return 'document';
}
// no clear way to do multiples: metadata URLs differ depending on whether
// the item is a "granule" or a "package," and I can't find any clues in the
// static page. I'm really not sure how the app does it. that's a todo
return false;
}
function doWeb(doc, url) {
scrape(doc, url);
}
function scrape(doc, _url) {
let modsURL = attr(doc, '#mods', 'href');
ZU.doGet(modsURL, function (respText) {
var translator = Zotero.loadTranslator("import");
translator.setTranslator("0e2235e7-babf-413c-9acf-f27cce5f059c");
translator.setString(respText);
translator.setHandler("itemDone", function (obj, item) {
item.complete();
});
translator.translate();
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.govinfo.gov/app/details/GPO-WMD",
"defer": true,
"items": [
{
"itemType": "document",
"title": "Unclassified Version of the Report of the Commission on the Intelligence Capabilities of the United States Regarding Weapons of Mass Destruction",
"creators": [
{
"lastName": "United States: Commission on the Intelligence Capabilities of the United States Regarding Weapons of Mass Destruction",
"fieldMode": 1,
"creatorType": "author"
},
{
"lastName": "United States: Commission on the Intelligence Capabilities of the United States Regarding Weapons of Mass Destruction",
"fieldMode": 1,
"creatorType": "author"
}
],
"date": "2005-03-31",
"abstractNote": "The Commission on the Intelligence Capabilities of the United States Regarding Weapons of Mass Destruction was established in 2004 and charged with examining the capabilities and challenges of the American intelligence community concerning the capabilities, intentions, and activities of foreign powers relating to the design, development, manufacture, acquisition, possession, proliferation, transfer, testing, potential or threatened use, or use of weapons of mass destruction, related means of delivery, and other related threats of the 21st Century.",
"callNumber": "PREX 1.19:IN 8/W 37",
"language": "eng",
"libraryCatalog": "govinfo",
"publisher": "Commission on the Intelligence Capabilities of the United States Regarding Weapons of Mass Destruction",
"rights": "fdlp",
"url": "https://www.govinfo.gov/app/details/GPO-WMD",
"attachments": [
{
"title": "JPEG rendition",
"mimeType": "image/jpeg"
},
{
"title": "PDF rendition",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.govinfo.gov/app/details/GPO-PICTDIR-116/",
"defer": true,
"items": [
{
"itemType": "document",
"title": "Congressional Pictorial Directory: 116th Congress",
"creators": [
{
"lastName": "United States: Congress: Joint Committee on Printing",
"fieldMode": 1,
"creatorType": "author"
}
],
"date": "2019-12-20",
"abstractNote": "The 116th Congressional Pictorial Directory provides a color photograph of each member of the House of Representatives and the Senate for the 116th Congress. It also includes information about a Member of Congress' length of service, political party affiliations, and Congressional district. Also contains pictures of the President, Vice President, and House and Senate officers and officials.",
"callNumber": "Y 4.P 93/1:",
"language": "eng",
"libraryCatalog": "govinfo",
"publisher": "U.S. Government Publishing Office",
"rights": "fdlp",
"shortTitle": "Congressional Pictorial Directory",
"url": "https://www.govinfo.gov/app/details/GPO-PICTDIR-116",
"attachments": [
{
"title": "PDF rendition",
"mimeType": "application/pdf"
},
{
"title": "JPEG rendition",
"mimeType": "image/jpeg"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.govinfo.gov/app/details/GOVPUB-RR-e27242037b46c40b6e3d3c1f45d8a8cf",
"defer": true,
"items": [
{
"itemType": "document",
"title": "BCD 2021-27 Employer Status Determination",
"creators": [
{
"lastName": "United States: Railroad Retirement Board",
"fieldMode": 1,
"creatorType": "author"
}
],
"date": "2021-06-15",
"callNumber": "RR",
"language": "eng",
"libraryCatalog": "govinfo",
"publisher": "Railroad Retirement Board",
"rights": "fdlp",
"url": "https://www.govinfo.gov/app/details/GOVPUB-RR-e27242037b46c40b6e3d3c1f45d8a8cf",
"attachments": [
{
"title": "PDF rendition",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
270Sebastian Karcher and Abe Jellinek^https?://[^?#]+(/doi/((abs|abstract|full|figure|ref|citedby|book)/)?10\.|/action/doSearch\?)|^https?://[^/]+/toc//*
***** BEGIN LICENSE BLOCK *****
Atypon Journals Translator
Copyright © 2011-2022 Sebastian Karcher and Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.search(/^https?:\/\/[^/]+\/toc\/|\/action\/doSearch\?|\/doi\/book\//) != -1) {
return getSearchResults(doc, true) ? "multiple" : false;
}
var citLink = doc.querySelector('a[href*="/action/showCitFormats"], a[href*="#pill-citations"], .actions-block-container__export-citation, div.pill__item, section.pill__item div.citation-download, a[href*="#tab-citations"]');
if (citLink) {
if (url.includes('/doi/book/')) {
return 'book';
}
else if (url.search(/\.ch\d+$/) != -1) {
return 'bookSection';
}
else if (isConference(doc)) {
return 'conferencePaper';
}
return "journalArticle";
}
return false;
}
function getSearchResults(doc, checkOnly, extras) {
var articles = {};
var container = doc.getElementsByName('frmSearchResults')[0]
|| doc.getElementsByName('frmAbs')[0]
|| doc.querySelector('.search__body, .search-result, .table-of-content');
if (!container) {
Z.debug('Atypon: multiples container not found.');
return false;
}
// Add whole book entry for book ToCs, but require chapter entries
// before returning true if checkOnly
if (doc.querySelector('.book-toc')) {
let title = attr(doc, 'meta[property="og:title"]', 'content')
|| doc.title;
title = title.split('|')[0];
let url = doc.location.href;
if (title) {
articles[url] = title;
if (extras) {
extras[url] = {};
}
}
}
var rows = container.getElementsByClassName('articleEntry'),
found = false,
doiLink = 'a[contains(@href, "/doi/abs/") or contains(@href, "/doi/abstract/") or '
+ 'contains(@href, "/doi/full/") or contains(@href, "/doi/book/")]';
for (var i = 0; i < rows.length; i++) {
var title = rows[i].getElementsByClassName('art_title')[0];
if (!title) continue;
title = ZU.trimInternal(title.textContent);
var urlRow = rows[i];
var url = ZU.xpathText(urlRow, '(.//' + doiLink + ')[1]/@href');
if (!url) {
// e.g. http://pubs.rsna.org/toc/radiographics/toc/33/7 shows links in adjacent div
urlRow = rows[i].nextElementSibling;
if (!urlRow || urlRow.classList.contains('articleEntry')) continue;
url = ZU.xpathText(urlRow, '(.//' + doiLink + ')[1]/@href');
}
if (!url) continue;
if (checkOnly) return true;
found = true;
if (extras) {
extras[url] = { pdf: buildPdfUrl(url, urlRow) };
}
articles[url] = title;
}
if (!found) {
Z.debug("Trying alternate multiple format #1");
rows = container.getElementsByClassName("item-details");
for (let i = 0; i < rows.length; i++) {
let title = ZU.xpathText(rows[i], './h3');
if (!title) continue;
title = ZU.trimInternal(title);
let url = ZU.xpathText(rows[i], '(.//ul[contains(@class, "icon-list")]/li/'
+ doiLink + ')[1]/@href');
if (!url) continue;
if (checkOnly) return true;
found = true;
if (extras) {
extras[url] = { pdf: buildPdfUrl(url, rows[i]) };
}
articles[url] = title;
}
}
if (!found) {
Z.debug("Trying alternate multiple format #2");
rows = container.querySelectorAll('.issue-item, .item__body');
for (let row of rows) {
let title = text(row, 'a');
if (!title) continue;
title = ZU.trimInternal(title);
let url = attr(row, 'a', 'href');
if (!url) continue;
if (checkOnly) return true;
found = true;
if (extras) {
extras[url] = { pdf: buildPdfUrl(url, row) };
}
articles[url] = title;
}
}
if (!found) {
Z.debug("Trying alternate multiple format #3");
rows = container.querySelectorAll('.items-results .card');
for (let row of rows) {
let title = text(row, 'a');
if (!title) continue;
title = ZU.trimInternal(title);
let url = attr(row, 'a', 'href');
if (!url) continue;
if (checkOnly) return true;
found = true;
if (extras) {
extras[url] = { pdf: buildPdfUrl(url, rows[i]) };
}
articles[url] = title;
}
}
return found ? articles : false;
}
// Keep this in line with target regexp
var replURLRegExp = /\/doi\/((?:abs|abstract|full|figure|ref|citedby|book)\/)?/;
// Regex matching sites that load PDFs in an embedded reader
const NEED_BYPASS_EMBEDDED_READER = /^https?:\/\/www\.embopress\.org\//;
function buildPdfUrl(url, root) {
if (!replURLRegExp.test(url)) return false; // The whole thing is probably going to fail anyway
var pdfPaths = ['/doi/pdf/', '/doi/epdf/', '/doi/pdfplus/'];
for (let i = 0; i < pdfPaths.length; i++) {
if (ZU.xpath(root, './/a[contains(@href, "' + pdfPaths[i] + '")]').length) {
let pdfURL = url.replace(replURLRegExp, pdfPaths[i]);
if (NEED_BYPASS_EMBEDDED_READER.test(url)) {
Zotero.debug('Modifying PDF URL to avoid embedded reader page');
pdfURL = pdfURL.replace(/\/e?pdf\//, '/pdfdirect/')
+ (pdfURL.includes('?') ? '&' : '?')
+ 'download=true';
Zotero.debug(pdfURL);
}
return pdfURL;
}
}
Z.debug('PDF link not found.');
if (root.nodeType != 9 /* DOCUMENT_NODE*/) {
Z.debug('Available links:');
var links = root.getElementsByTagName('a');
if (!links.length) Z.debug('No links');
for (let i = 0; i < links.length; i++) {
Z.debug(links[i].href);
}
}
return false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
var extras = {};
Zotero.selectItems(getSearchResults(doc, false, extras), function (items) {
if (!items) {
return;
}
var articles = [];
for (var itemurl in items) {
articles.push({
url: itemurl.replace(/\?prev.+/, ""),
extras: extras[itemurl]
});
}
fetchArticles(articles);
});
}
else {
scrape(doc, url, { pdf: buildPdfUrl(url, doc) });
}
}
function fixCase(str, titleCase) {
if (str.toUpperCase() != str) return str;
if (titleCase) {
return ZU.capitalizeTitle(str, true);
}
return str.charAt(0) + str.substr(1).toLowerCase();
}
function isConference(doc) {
for (let label of doc.querySelectorAll('.publication-details__list .label')) {
if (label.innerText.trim() == 'Conference:') {
return true;
}
}
return false;
}
function fetchArticles(articles) {
if (!articles.length) return;
var article = articles.shift();
ZU.processDocuments(article.url, function (doc, url) {
scrape(doc, url, article.extras);
},
function () {
if (articles.length) fetchArticles(articles);
});
}
function scrape(doc, url, extras) {
url = url.replace(/[?#].*/, "");
var doi = url.match(/10\.[^?#]+/)[0];
var citationurl = url.replace(replURLRegExp, "/action/showCitFormats?doi=");
var abstract = doc.getElementsByClassName('abstractSection')[0]
|| doc.querySelector('#bookExcerpt, #abstract');
var tags = ZU.xpath(doc, '//a[contains(@href, "keyword") or contains(@href, "Keyword=")]');
Z.debug("Citation URL: " + citationurl);
function finalize(filename) {
Z.debug("Filename: " + filename);
var get = '/action/downloadCitation';
var post = 'doi=' + doi + '&downloadFileName=' + filename + '&format=ris&direct=true&include=cit';
ZU.doPost(get, post, function (risText) {
// Z.debug(risText);
var translator = Zotero.loadTranslator("import");
// Calling the RIS translator
translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7");
translator.setString(risText);
translator.setHandler("itemDone", function (obj, item) {
// Sometimes we get titles and authors in all caps
item.title = fixCase(item.title);
// Some special characters get corrupted in the RIS we get
if (/\b\?s/.test(item.title) && text(doc, 'h1.citation__title')) {
item.title = text(doc, 'h1.citation__title');
}
if (!item.date) {
item.date = text(doc, 'span[property="datePublished"]');
}
if (item.date) {
item.date = ZU.strToISO(item.date);
let parts = item.date.split('-');
if (parts.length == 3 && parts[2] == '01') {
item.date = parts[0] + '-' + parts[1];
}
}
if (item.journalAbbreviation == item.publicationTitle) {
delete item.journalAbbreviation;
}
if (item.itemType == 'journalArticle' && isConference(doc)) {
item.itemType = 'conferencePaper';
}
if (doc.querySelector('div.contributors [property="author"] a:first-child')) {
// the HTML is better, so we'll use that.
item.creators = [];
let contributors = doc.querySelector('div.contributors');
for (let authorLink of contributors.querySelectorAll('[property="author"] a:first-child')) {
let givenName = text(authorLink, '[property="givenName"]');
let familyName = text(authorLink, '[property="familyName"]');
if (!givenName && !familyName) {
item.creators.push({
lastName: authorLink.innerText,
creatorType: 'author',
fieldMode: 1
});
}
else {
item.creators.push({
firstName: givenName,
lastName: familyName,
creatorType: 'author'
});
}
}
}
else {
for (let creator of item.creators) {
if (creator.fieldMode == 1) {
// add a comma after the last name
// "Smith Todd G" -> "Smith, Todd G"
let name = creator.lastName.replace(/(\w+)/, '$1,');
let cleaned = ZU.cleanAuthor(name, creator.creatorType, true);
delete creator.fieldMode;
Object.assign(creator, cleaned);
}
creator.lastName = fixCase(creator.lastName, true);
if (creator.firstName) {
creator.firstName = fixCase(creator.firstName, true);
}
}
}
item.url = url;
item.notes = [];
for (var i in tags) {
item.tags.push(tags[i].textContent);
}
if (abstract) {
// Drop "Abstract" prefix
// This is not excellent, since some abstracts could
// conceivably begin with the word "abstract"
item.abstractNote = abstract.innerText
.replace(/^[^\w\d]*abstract\s*/i, '');
}
item.attachments = [];
if (extras.pdf) {
item.attachments.push({
url: extras.pdf,
title: "Full Text PDF",
mimeType: "application/pdf"
});
}
item.libraryCatalog = url.replace(/^https?:\/\/(?:www\.)?/, '')
.replace(/[/:].*/, '') + " (Atypon)";
if (item.series == 'Non-serials') {
delete item.series;
}
if (item.numberOfVolumes == '0') {
delete item.numberOfVolumes;
}
item.complete();
});
translator.translate();
});
}
// newer Atypon installs; 2nd one is Science, 3rd one ASM
if (doc.querySelector('a[href*="#pill-citations"], div.pill__item, section.pill__item div.citation-download')) {
let filename = attr(doc, 'input[name="downloadFileName"]', 'value');
finalize(filename);
}
else {
ZU.processDocuments(citationurl, function (citationDoc) {
let filename = attr(citationDoc, 'input[name="downloadFileName"]', 'value');
finalize(filename);
});
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://pubs.rsna.org/toc/radiographics/toc/33/7",
"items": "multiple"
},
{
"type": "web",
"url": "https://pubs.rsna.org/doi/full/10.1148/rg.337125073",
"items": [
{
"itemType": "journalArticle",
"title": "Congenital and Hereditary Causes of Sudden Cardiac Death in Young Adults: Diagnosis, Differential Diagnosis, and Risk Stratification",
"creators": [
{
"lastName": "Stojanovska",
"firstName": "Jadranka",
"creatorType": "author"
},
{
"lastName": "Garg",
"firstName": "Anubhav",
"creatorType": "author"
},
{
"lastName": "Patel",
"firstName": "Smita",
"creatorType": "author"
},
{
"lastName": "Melville",
"firstName": "David M.",
"creatorType": "author"
},
{
"lastName": "Kazerooni",
"firstName": "Ella A.",
"creatorType": "author"
},
{
"lastName": "Mueller",
"firstName": "Gisela C.",
"creatorType": "author"
}
],
"date": "2013-11",
"DOI": "10.1148/rg.337125073",
"ISSN": "0271-5333",
"abstractNote": "Sudden cardiac death is defined as death from unexpected circulatory arrest—usually a result of cardiac arrhythmia—that occurs within 1 hour of the onset of symptoms. Proper and timely identification of individuals at risk for sudden cardiac death and the diagnosis of its predisposing conditions are vital. A careful history and physical examination, in addition to electrocardiography and cardiac imaging, are essential to identify conditions associated with sudden cardiac death. Among young adults (18–35 years), sudden cardiac death most commonly results from a previously undiagnosed congenital or hereditary condition, such as coronary artery anomalies and inherited cardiomyopathies (eg, hypertrophic cardiomyopathy, arrhythmogenic right ventricular cardiomyopathy [ARVC], dilated cardiomyopathy, and noncompaction cardiomyopathy). Overall, the most common causes of sudden cardiac death in young adults are, in descending order of frequency, hypertrophic cardiomyopathy, coronary artery anomalies with an interarterial or intramural course, and ARVC. Often, sudden cardiac death is precipitated by ventricular tachycardia or fibrillation and may be prevented with an implantable cardioverter defibrillator (ICD). Risk stratification to determine the need for an ICD is challenging and involves imaging, particularly echocardiography and cardiac magnetic resonance (MR) imaging. Coronary artery anomalies, a diverse group of congenital disorders with a variable manifestation, may be depicted at coronary computed tomographic angiography or MR angiography. A thorough understanding of clinical risk stratification, imaging features, and complementary diagnostic tools for the evaluation of cardiac disorders that may lead to sudden cardiac death is essential to effectively use imaging to guide diagnosis and therapy.",
"issue": "7",
"libraryCatalog": "pubs.rsna.org (Atypon)",
"pages": "1977-2001",
"publicationTitle": "RadioGraphics",
"shortTitle": "Congenital and Hereditary Causes of Sudden Cardiac Death in Young Adults",
"url": "https://pubs.rsna.org/doi/full/10.1148/rg.337125073",
"volume": "33",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://pubs.rsna.org/action/doSearch?SeriesKey=&AllField=cardiac",
"items": "multiple"
},
{
"type": "web",
"url": "https://epubs.siam.org/doi/book/10.1137/1.9780898718553",
"items": "multiple"
},
{
"type": "web",
"url": "https://epubs.siam.org/doi/abs/10.1137/1.9780898718553.ch6",
"items": [
{
"itemType": "bookSection",
"title": "6. Extensions and Generalizations",
"creators": [],
"date": "2001-01",
"ISBN": "9780898714784",
"abstractNote": "6.1 Introduction\n\nThere are a variety of extensions of the topics introduced in the previous chapters that could be pursued, several of which have been mentioned earlier along with a comment that they would not be developed in any detail within this monograph. Among some of these possibilities are: (a) the development of a mechanism for generating all the optimal solutions for a specific optimization task when multiple optima may be present, not just one representative exemplar; (b) the incorporation of other loss or merit measures within the various sequencing and partitioning contexts discussed; (c) extensions to the analysis of arbitrary t-mode data, with possible (order) restrictions on some modes but not others, or to a framework in which proximity is given on more than just a pair of objects, e.g., proximity could be defined for all distinct object triples (see Daws (1996)); (d) the generalization of the task of constructing optimal ordered partitions to a two- or higher-mode context that may be hierarchical and/or have various types of order or precedence constraints imposed; and (e) the extension of object ordering constraints when they are to be imposed (e.g., in various partitioning and two-mode sequencing tasks) to the use of circular object orders, where optimal subsets or ordered sequences must now be consistent with respect to a circular contiguity structure.",
"bookTitle": "Combinatorial Data Analysis",
"extra": "DOI: 10.1137/1.9780898718553.ch6",
"libraryCatalog": "epubs.siam.org (Atypon)",
"pages": "103-114",
"publisher": "Society for Industrial and Applied Mathematics",
"series": "Discrete Mathematics and Applications",
"url": "https://epubs.siam.org/doi/abs/10.1137/1.9780898718553.ch6",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "combinatorial optimization"
},
{
"tag": "least-squares optimization"
},
{
"tag": "ultrametric and additive tree representations"
},
{
"tag": "unidimensional and multidimensional scaling"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.liebertpub.com/doi/full/10.1089/cmb.2009.0238",
"items": [
{
"itemType": "journalArticle",
"title": "Ray: Simultaneous Assembly of Reads from a Mix of High-Throughput Sequencing Technologies",
"creators": [
{
"lastName": "Boisvert",
"firstName": "Sébastien",
"creatorType": "author"
},
{
"lastName": "Laviolette",
"firstName": "François",
"creatorType": "author"
},
{
"lastName": "Corbeil",
"firstName": "Jacques",
"creatorType": "author"
}
],
"date": "2010-11",
"DOI": "10.1089/cmb.2009.0238",
"abstractNote": "An accurate genome sequence of a desired species is now a pre-requisite for genome research. An important step in obtaining a high-quality genome sequence is to correctly assemble short reads into longer sequences accurately representing contiguous genomic regions. Current sequencing technologies continue to offer increases in throughput, and corresponding reductions in cost and time. Unfortunately, the benefit of obtaining a large number of reads is complicated by sequencing errors, with different biases being observed with each platform. Although software are available to assemble reads for each individual system, no procedure has been proposed for high-quality simultaneous assembly based on reads from a mix of different technologies. In this paper, we describe a parallel short-read assembler, called Ray, which has been developed to assemble reads obtained from a combination of sequencing platforms. We compared its performance to other assemblers on simulated and real datasets. We used a combination of Roche/454 and Illumina reads to assemble three different genomes. We showed that mixing sequencing technologies systematically reduces the number of contigs and the number of errors. Because of its open nature, this new tool will hopefully serve as a basis to develop an assembler that can be of universal utilization (availability: http://deNovoAssembler.sf.Net/). For online Supplementary Material, see www.liebertonline.com.",
"issue": "11",
"libraryCatalog": "liebertpub.com (Atypon)",
"pages": "1519-1533",
"publicationTitle": "Journal of Computational Biology",
"shortTitle": "Ray",
"url": "https://www.liebertpub.com/doi/full/10.1089/cmb.2009.0238",
"volume": "17",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "de Bruijn graphs"
},
{
"tag": "genome assembly"
},
{
"tag": "high-throughput sequencing"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://journals.jps.jp/toc/jpsj/2014/83/6",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.worldscientific.com/doi/abs/10.1142/S0219749904000195",
"items": [
{
"itemType": "journalArticle",
"title": "Probabilities from envariance?",
"creators": [
{
"lastName": "Mohrhoff",
"firstName": "Ulrich",
"creatorType": "author"
}
],
"date": "2004-06",
"DOI": "10.1142/S0219749904000195",
"ISSN": "0219-7499",
"abstractNote": "Zurek claims to have derived Born's rule noncircularly in the context of an ontological no-collapse interpretation of quantum states, without any \"deus ex machina imposition of the symptoms of classicality\". After a brief review of Zurek's derivation it is argued that this claim is exaggerated if not wholly unjustified. In order to demonstrate that Born's rule arises noncircularly from deterministically evolving quantum states, it is not sufficient to assume that quantum states are somehow associated with probabilities and then prove that these probabilities are given by Born's rule. One has to show how irreducible probabilities can arise in the context of an ontological no-collapse interpretation of quantum states. It is argued that the reason why all attempts to do this have so far failed is that quantum states are fundamentally algorithms for computing correlations between possible measurement outcomes, rather than evolving ontological states.",
"issue": "02",
"journalAbbreviation": "Int. J. Quantum Inform.",
"libraryCatalog": "worldscientific.com (Atypon)",
"pages": "221-229",
"publicationTitle": "International Journal of Quantum Information",
"url": "https://www.worldscientific.com/doi/abs/10.1142/S0219749904000195",
"volume": "02",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Born's rule"
},
{
"tag": "Born's rule"
},
{
"tag": "envariance"
},
{
"tag": "envariance"
},
{
"tag": "interpretation of quantum mechanics"
},
{
"tag": "interpretation of quantum mechanics"
},
{
"tag": "probability"
},
{
"tag": "probability"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.annualreviews.org/doi/abs/10.1146/annurev.matsci.31.1.323",
"items": [
{
"itemType": "journalArticle",
"title": "Block Copolymer Thin Films: Physics and Applications",
"creators": [
{
"lastName": "Fasolka",
"firstName": "Michael J",
"creatorType": "author"
},
{
"lastName": "Mayes",
"firstName": "Anne M",
"creatorType": "author"
}
],
"date": "2001-08",
"DOI": "10.1146/annurev.matsci.31.1.323",
"ISSN": "1531-7331",
"abstractNote": "A two-part review of research concerning block copolymer thin films is presented. The first section summarizes experimental and theoretical studies of the fundamental physics of these systems, concentrating upon the forces that govern film morphology. The role of film thickness and surface energetics on the morphology of compositionally symmetric, amorphous diblock copolymer films is emphasized, including considerations of boundary condition symmetry, so-called hybrid structures, and surface chemical expression. Discussions of compositionally asymmetric systems and emerging research areas, e.g., liquid-crystalline and A-B-C triblock systems, are also included. In the second section, technological applications of block copolymer films, e.g., as lithographic masks and photonic materials, are considered. Particular attention is paid to means by which microphase domain order and orientation can be controlled, including exploitation of thickness and surface effects, the application of external fields, and the use of patterned substrates.",
"issue": "1",
"journalAbbreviation": "Annu. Rev. Mater. Res.",
"libraryCatalog": "annualreviews.org (Atypon)",
"pages": "323-355",
"publicationTitle": "Annual Review of Materials Research",
"shortTitle": "Block Copolymer Thin Films",
"url": "https://www.annualreviews.org/doi/abs/10.1146/annurev.matsci.31.1.323",
"volume": "31",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "confinement"
},
{
"tag": "nanoarray"
},
{
"tag": "nanopattern"
},
{
"tag": "self-assembly"
},
{
"tag": "self-consistent field"
},
{
"tag": "wetting"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://journals.asm.org/doi/10.1128/mSystems.00122-21",
"items": [
{
"itemType": "journalArticle",
"title": "Dietary Supplements and Nutraceuticals under Investigation for COVID-19 Prevention and Treatment",
"creators": [
{
"firstName": "Ronan",
"lastName": "Lordan",
"creatorType": "author"
},
{
"firstName": "Halie M.",
"lastName": "Rando",
"creatorType": "author"
},
{
"lastName": "COVID-19 Review Consortium",
"creatorType": "author",
"fieldMode": 1
},
{
"firstName": "Casey S.",
"lastName": "Greene",
"creatorType": "author"
}
],
"date": "2021-05-04",
"DOI": "10.1128/mSystems.00122-21",
"abstractNote": "Coronavirus disease 2019 (COVID-19) has caused global disruption and a significant loss of life. Existing treatments that can be repurposed as prophylactic and therapeutic agents may reduce the pandemic’s devastation. Emerging evidence of potential applications in other therapeutic contexts has led to the investigation of dietary supplements and nutraceuticals for COVID-19. Such products include vitamin C, vitamin D, omega 3 polyunsaturated fatty acids, probiotics, and zinc, all of which are currently under clinical investigation. In this review, we critically appraise the evidence surrounding dietary supplements and nutraceuticals for the prophylaxis and treatment of COVID-19. Overall, further study is required before evidence-based recommendations can be formulated, but nutritional status plays a significant role in patient outcomes, and these products may help alleviate deficiencies. For example, evidence indicates that vitamin D deficiency may be associated with a greater incidence of infection and severity of COVID-19, suggesting that vitamin D supplementation may hold prophylactic or therapeutic value. A growing number of scientific organizations are now considering recommending vitamin D supplementation to those at high risk of COVID-19. Because research in vitamin D and other nutraceuticals and supplements is preliminary, here we evaluate the extent to which these nutraceutical and dietary supplements hold potential in the COVID-19 crisis.\nIMPORTANCE Sales of dietary supplements and nutraceuticals have increased during the pandemic due to their perceived “immune-boosting” effects. However, little is known about the efficacy of these dietary supplements and nutraceuticals against the novel coronavirus (severe acute respiratory syndrome coronavirus 2 [SARS-CoV-2]) or the disease that it causes, CoV disease 2019 (COVID-19). This review provides a critical overview of the potential prophylactic and therapeutic value of various dietary supplements and nutraceuticals from the evidence available to date. These include vitamin C, vitamin D, and zinc, which are often perceived by the public as treating respiratory infections or supporting immune health. Consumers need to be aware of misinformation and false promises surrounding some supplements, which may be subject to limited regulation by authorities. However, considerably more research is required to determine whether dietary supplements and nutraceuticals exhibit prophylactic and therapeutic value against SARS-CoV-2 infection and COVID-19. This review provides perspective on which nutraceuticals and supplements are involved in biological processes that are relevant to recovery from or prevention of COVID-19.",
"issue": "3",
"libraryCatalog": "journals.asm.org (Atypon)",
"pages": "e00122-21",
"publicationTitle": "mSystems",
"url": "https://journals.asm.org/doi/10.1128/mSystems.00122-21",
"volume": "6",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://journals.asm.org/action/doSearch?AllField=E.+coli&SeriesKey=mra",
"items": "multiple"
},
{
"type": "web",
"url": "https://search.informit.org/doi/10.3316/informit.147509991486632",
"items": [
{
"itemType": "journalArticle",
"title": "Comparison of a micro-neutralization test with the rapid fluorescent focus inhibition test for measuring rabies virus neutralizing antibodies",
"creators": [
{
"lastName": "Smith",
"creatorType": "author",
"firstName": "Todd G."
},
{
"lastName": "Gilbert",
"creatorType": "author",
"firstName": "Amy T."
}
],
"DOI": "10.3316/informit.147509991486632",
"abstractNote": "The rapid fluorescent focus inhibition test (RFFIT) is routinely used in the United States to measure rabies virus neutralizing antibodies (rVNA). RFFIT has a long history of reproducible and reliable results. The test has been modified over the years to use smaller volumes of reagents and samples, but requires a 50 muL minimum volume of test serum. To conduct pathogenesis studies, small laboratory animals such as mice are regularly tested for rVNA, but the minimum volume for a standard RFFIT may be impossible to obtain, particularly in scenarios of repeated sampling. To address this problem, a micro-neutralization test was developed previously. In the current study, the micro-neutralization test was compared to the RFFIT using 129 mouse serum samples from rabies vaccine studies. Using a cut-off value of 0.1 IU/mL, the sensitivity, specificity, and concordance of the micro-neutralization test were 100%, 97.5%, and 98%, respectively. The geometric mean titer of all samples above the cut-off was 2.0 IU/mL using RFFIT and 3.4 IU/mL using the micro-neutralization test, indicating that titers determined using the micro-neutralization test are not equivalent to RFFIT titers. Based on four rVNA-positive hamster serum samples, the intra-assay coefficient of variability was 24% and inter-assay coefficient of variability was 30.4%. These results support continued use of the micro-neutralization test to determine rabies virus neutralizing antibody titers for low-volume serum samples.",
"issue": "3",
"libraryCatalog": "search.informit.org (Atypon)",
"pages": "1-5",
"publicationTitle": "Tropical Medicine and Infectious Disease",
"url": "https://search.informit.org/doi/10.3316/informit.147509991486632",
"volume": "2",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Diagnosis, Laboratory"
},
{
"tag": "Neutralization (Chemistry)"
},
{
"tag": "Rabies virus"
},
{
"tag": "Rabies--Diagnosis"
},
{
"tag": "Viral antibodies"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://search.informit.org/doi/10.3316/informit.745150560334180",
"items": [
{
"itemType": "conferencePaper",
"title": "The Defense Test and Evaluation Professional Institute’s Role in Supporting the Department of Defense Test and Evaluation Community",
"creators": [
{
"lastName": "Engel",
"creatorType": "author",
"firstName": "Jim"
}
],
"DOI": "10.3316/informit.745150560334180",
"libraryCatalog": "search.informit.org (Atypon)",
"pages": "29-31",
"proceedingsTitle": "AIM-TEC 94: Third Australasian Instrumentation and Measurement Conference; Test and Evaluation in the Asia-Pacific Region; Preprints of Papers",
"url": "https://search.informit.org/doi/10.3316/informit.745150560334180",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Defense Test and Evaluation Professional Institute (DTEPI)"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.science.org/doi/10.1126/science.aag1582",
"items": [
{
"itemType": "journalArticle",
"title": "Transient compartmentalization of RNA replicators prevents extinction due to parasites",
"creators": [
{
"firstName": "Shigeyoshi",
"lastName": "Matsumura",
"creatorType": "author"
},
{
"firstName": "Ádám",
"lastName": "Kun",
"creatorType": "author"
},
{
"firstName": "Michael",
"lastName": "Ryckelynck",
"creatorType": "author"
},
{
"firstName": "Faith",
"lastName": "Coldren",
"creatorType": "author"
},
{
"firstName": "András",
"lastName": "Szilágyi",
"creatorType": "author"
},
{
"firstName": "Fabrice",
"lastName": "Jossinet",
"creatorType": "author"
},
{
"firstName": "Christian",
"lastName": "Rick",
"creatorType": "author"
},
{
"firstName": "Philippe",
"lastName": "Nghe",
"creatorType": "author"
},
{
"firstName": "Eörs",
"lastName": "Szathmáry",
"creatorType": "author"
},
{
"firstName": "Andrew D.",
"lastName": "Griffiths",
"creatorType": "author"
}
],
"date": "2016-12-09",
"DOI": "10.1126/science.aag1582",
"abstractNote": "The appearance of molecular replicators (molecules that can be copied) was probably a critical step in the origin of life. However, parasitic replicators would take over and would have prevented life from taking off unless the replicators were compartmentalized in reproducing protocells. Paradoxically, control of protocell reproduction would seem to require evolved replicators. We show here that a simpler population structure, based on cycles of transient compartmentalization (TC) and mixing of RNA replicators, is sufficient to prevent takeover by parasitic mutants. TC tends to select for ensembles of replicators that replicate at a similar rate, including a diversity of parasites that could serve as a source of opportunistic functionality. Thus, TC in natural, abiological compartments could have allowed life to take hold.",
"issue": "6317",
"libraryCatalog": "science.org (Atypon)",
"pages": "1293-1296",
"publicationTitle": "Science",
"url": "https://www.science.org/doi/10.1126/science.aag1582",
"volume": "354",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.pnas.org/doi/10.1073/pnas.2117831119",
"items": [
{
"itemType": "journalArticle",
"title": "Inequality in science and the case for a new agenda",
"creators": [
{
"firstName": "Joseph L.",
"lastName": "Graves",
"creatorType": "author"
},
{
"firstName": "Maureen",
"lastName": "Kearney",
"creatorType": "author"
},
{
"firstName": "Gilda",
"lastName": "Barabino",
"creatorType": "author"
},
{
"firstName": "Shirley",
"lastName": "Malcom",
"creatorType": "author"
}
],
"date": "2022-03-08",
"DOI": "10.1073/pnas.2117831119",
"abstractNote": "The history of the scientific enterprise demonstrates that it has supported gender, identity, and racial inequity. Further, its institutions have allowed discrimination, harassment, and personal harm of racialized persons and women. This has resulted in a suboptimal and demographically narrow research and innovation system, a concomitant limited lens on research agendas, and less effective knowledge translation between science and society. We argue that, to reverse this situation, the scientific community must reexamine its values and then collectively embark upon a moonshot-level new agenda for equity. This new agenda should be based upon the foundational value that scientific research and technological innovation should be prefaced upon progress toward a better world for all of society and that the process of how we conduct research is just as important as the results of research. Such an agenda will attract individuals who have been historically excluded from participation in science, but we will need to engage in substantial work to overcome the longstanding obstacles to their full participation. We highlight the need to implement this new agenda via a coordinated systems approach, recognizing the mutually reinforcing feedback dynamics among all science system components and aligning our equity efforts across them.",
"issue": "10",
"libraryCatalog": "pnas.org (Atypon)",
"pages": "e2117831119",
"publicationTitle": "Proceedings of the National Academy of Sciences",
"url": "https://www.pnas.org/doi/10.1073/pnas.2117831119",
"volume": "119",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.science.org/doi/10.1126/sciadv.abj8030",
"items": [
{
"itemType": "journalArticle",
"title": "Electric field control of chirality",
"creators": [
{
"firstName": "Piush",
"lastName": "Behera",
"creatorType": "author"
},
{
"firstName": "Molly A.",
"lastName": "May",
"creatorType": "author"
},
{
"firstName": "Fernando",
"lastName": "Gómez-Ortiz",
"creatorType": "author"
},
{
"firstName": "Sandhya",
"lastName": "Susarla",
"creatorType": "author"
},
{
"firstName": "Sujit",
"lastName": "Das",
"creatorType": "author"
},
{
"firstName": "Christopher T.",
"lastName": "Nelson",
"creatorType": "author"
},
{
"firstName": "Lucas",
"lastName": "Caretta",
"creatorType": "author"
},
{
"firstName": "Shang-Lin",
"lastName": "Hsu",
"creatorType": "author"
},
{
"firstName": "Margaret R.",
"lastName": "McCarter",
"creatorType": "author"
},
{
"firstName": "Benjamin H.",
"lastName": "Savitzky",
"creatorType": "author"
},
{
"firstName": "Edward S.",
"lastName": "Barnard",
"creatorType": "author"
},
{
"firstName": "Archana",
"lastName": "Raja",
"creatorType": "author"
},
{
"firstName": "Zijian",
"lastName": "Hong",
"creatorType": "author"
},
{
"firstName": "Pablo",
"lastName": "García-Fernandez",
"creatorType": "author"
},
{
"firstName": "Stephen W.",
"lastName": "Lovesey",
"creatorType": "author"
},
{
"firstName": "Gerrit",
"lastName": "van der Laan",
"creatorType": "author"
},
{
"firstName": "Peter",
"lastName": "Ercius",
"creatorType": "author"
},
{
"firstName": "Colin",
"lastName": "Ophus",
"creatorType": "author"
},
{
"firstName": "Lane W.",
"lastName": "Martin",
"creatorType": "author"
},
{
"firstName": "Javier",
"lastName": "Junquera",
"creatorType": "author"
},
{
"firstName": "Markus B.",
"lastName": "Raschke",
"creatorType": "author"
},
{
"firstName": "Ramamoorthy",
"lastName": "Ramesh",
"creatorType": "author"
}
],
"date": "2022-01-05",
"DOI": "10.1126/sciadv.abj8030",
"abstractNote": "Polar textures have attracted substantial attention in recent years as a promising analog to spin-based textures in ferromagnets. Here, using optical second-harmonic generation–based circular dichroism, we demonstrate deterministic and reversible control of chirality over mesoscale regions in ferroelectric vortices using an applied electric field. The microscopic origins of the chirality, the pathway during the switching, and the mechanism for electric field control are described theoretically via phase-field modeling and second-principles simulations, and experimentally by examination of the microscopic response of the vortices under an applied field. The emergence of chirality from the combination of nonchiral materials and subsequent control of the handedness with an electric field has far-reaching implications for new electronics based on chirality as a field-controllable order parameter.",
"issue": "1",
"libraryCatalog": "science.org (Atypon)",
"pages": "eabj8030",
"publicationTitle": "Science Advances",
"url": "https://www.science.org/doi/10.1126/sciadv.abj8030",
"volume": "8",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.embopress.org/doi/abs/10.1002/j.1460-2075.1996.tb00576.x",
"items": [
{
"itemType": "journalArticle",
"title": "The Saccharomyces cerevisiae zinc finger proteins Msn2p and Msn4p are required for transcriptional induction through the stress response element (STRE).",
"creators": [
{
"lastName": "Martínez-Pastor",
"firstName": "M. T.",
"creatorType": "author"
},
{
"lastName": "Marchler",
"firstName": "G.",
"creatorType": "author"
},
{
"lastName": "Schüller",
"firstName": "C.",
"creatorType": "author"
},
{
"lastName": "Marchler-Bauer",
"firstName": "A.",
"creatorType": "author"
},
{
"lastName": "Ruis",
"firstName": "H.",
"creatorType": "author"
},
{
"lastName": "Estruch",
"firstName": "F.",
"creatorType": "author"
}
],
"date": "1996-05",
"DOI": "10.1002/j.1460-2075.1996.tb00576.x",
"ISSN": "0261-4189",
"abstractNote": "The MSN2 and MSN4 genes encode homologous and functionally redundant Cys2His2 zinc finger proteins. A disruption of both MSN2 and MSN4 genes results in a higher sensitivity to different stresses, including carbon source starvation, heat shock and severe osmotic and oxidative stresses. We show that MSN2 and MSN4 are required for activation of several yeast genes such as CTT1, DDR2 and HSP12, whose induction is mediated through stress-response elements (STREs). Msn2p and Msn4p are important factors for the stress-induced activation of STRE dependent promoters and bind specifically to STRE-containing oligonucleotides. Our results suggest that MSN2 and MSN4 encode a DNA-binding component of the stress responsive system and it is likely that they act as positive transcription factors.",
"issue": "9",
"libraryCatalog": "embopress.org (Atypon)",
"pages": "2227-2235",
"publicationTitle": "The EMBO Journal",
"url": "https://www.embopress.org/doi/abs/10.1002/j.1460-2075.1996.tb00576.x",
"volume": "15",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Abe Jellinek^https://[^.]+\.substack\.com/(p/|archive)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/p/')) {
return "blogPost";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('a.post-preview-title[href*="/p/"]');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
let jsonText = text(doc, 'script[type="application/ld+json"]');
if (jsonText) {
scrapeJSON(JSON.parse(jsonText), doc, url);
}
else {
scrapeHTML(doc, url);
}
}
function scrapeJSON(json, doc, url) {
let item = new Zotero.Item('blogPost');
item.title = json.headline;
item.abstractNote = json.description;
item.date = ZU.strToISO(json.dateModified || json.datePublished);
if (Array.isArray(json.author)) {
for (let author of json.author) {
item.creators.push(ZU.cleanAuthor(author.name, 'author'));
}
}
else if (json.author && json.author.name) {
item.creators.push(ZU.cleanAuthor(json.author.name, 'author'));
}
item.blogTitle = json.publisher.name;
item.url = attr(doc, 'link[rel="canonical"]', 'href');
item.attachments.push({
title: 'Snapshot',
document: doc
});
item.websiteType = 'Substack newsletter';
item.complete();
}
function scrapeHTML(doc, url) {
let item = new Zotero.Item('blogPost');
item.title = text(doc, 'h1.post-title');
item.abstractNote = attr(doc, 'meta[name="description"]', 'content');
item.date = ZU.strToISO(attr(doc, '.post-date time', 'datetime'));
item.creators.push(ZU.cleanAuthor(text(doc, '.author a'), 'author'));
item.blogTitle = text(doc, 'h1.navbar-title a');
item.url = attr(doc, 'link[rel="canonical"]', 'href');
item.attachments.push({
title: 'Snapshot',
document: doc
});
item.websiteType = 'Substack newsletter';
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://marcstein.substack.com/p/bucks-cp3-got-what-they-wanted",
"items": [
{
"itemType": "blogPost",
"title": "Bucks, CP3 got what they wanted",
"creators": [
{
"firstName": "Marc",
"lastName": "Stein",
"creatorType": "author"
}
],
"date": "2021-07-16",
"abstractNote": "After the Milwaukee Bucks lost so handily to Miami in the second round of last season’s bubble playoffs, they assembled a list of players to pursue to flank Giannis Antetokounmpo and Khris Middleton with a top-flight lead guard. One of Milwaukee’s best options to create a true championship-worthy troika, seemingly, was Chris Paul.",
"blogTitle": "Marc Stein",
"url": "https://marcstein.substack.com/p/bucks-cp3-got-what-they-wanted",
"websiteType": "Substack newsletter",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://worninwornout.substack.com/archive?utm_source=menu-dropdown&sort=search&search=test",
"items": "multiple"
},
{
"type": "web",
"url": "https://worninwornout.substack.com/p/get-a-move-on",
"items": [
{
"itemType": "blogPost",
"title": "Get a Move On",
"creators": [
{
"firstName": "Kitty",
"lastName": "Guo",
"creatorType": "author"
}
],
"date": "2021-06-09",
"abstractNote": "#81: a sleek AC unit, planet-saving shampoo bars, and a core-strengthening rocking chair",
"blogTitle": "Worn In, Worn Out",
"url": "https://worninwornout.substack.com/p/get-a-move-on",
"websiteType": "Substack newsletter",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://minter.substack.com/p/have-you-ever-thought-about-your/comments",
"items": [
{
"itemType": "blogPost",
"title": "Have you ever thought about your own legacy?",
"creators": [
{
"firstName": "Minter",
"lastName": "Dial",
"creatorType": "author"
}
],
"date": "2022-09-13",
"abstractNote": "Have you ever come across the poem by Rupert Brooke, The Soldier? It starts: If I should die, think only this of me: That there's some corner of…",
"blogTitle": "DIALOGOS - Meaningful Conversation",
"url": "https://minter.substack.com/p/have-you-ever-thought-about-your/comments",
"websiteType": "Substack newsletter",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Ben Parr, Sebastian Karcher^https?://(www\.)?engineeringvillage(2)?\.(com|org)//*
***** BEGIN LICENSE BLOCK *****
Engineering Village Translator - Copyright © 2018-2022 Sebastian Karcher
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes("docid=")) {
return "journalArticle";
}
Z.monitorDOMChanges(doc.getElementById("ev-application"));
if ((url.includes("quick.url?") || url.includes("expert.url?") || url.includes("thesaurus.url?")) && getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getDocIDs(url) {
var m = url.match(/\bdocid(?:list)?=([^&#]+)/);
if (!m) return false;
return decodeURIComponent(m[1]).split(',');
}
function getSearchResults(doc, checkOnly) {
var rows = doc.querySelectorAll('div[class*=result-row]'),
items = {},
found = false;
for (var i = 0; i < rows.length; i++) {
var checkbox = rows[i].querySelector('input[name="cbresult"]');
if (!checkbox) continue;
var docid = checkbox.getAttribute('docid');
if (!docid) continue;
var title = rows[i].querySelector('h3.result-title');
if (!title) continue;
if (checkOnly) return true;
found = true;
items[docid] = ZU.trimInternal(title.textContent);
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == 'multiple') {
Zotero.selectItems(getSearchResults(doc), function (items) {
if (!items) return;
var ids = [];
for (var i in items) {
ids.push(i);
}
fetchRIS(doc, ids);
});
}
else {
fetchRIS(doc, getDocIDs(url));
}
}
function fetchRIS(doc, docIDs) {
Z.debug(docIDs);
// handlelist to accompany the docidlist. Seems like it just has to be a
// list of numbers the same size as the docid list.
var handleList = new Array(docIDs.length);
for (var i = 0; i < docIDs.length; i++) {
handleList[i] = i + 1;
}
var db = doc.getElementsByName('database')[0];
if (db) db = db.value;
if (!db) db = "1";
var url = '/delivery/download/submit.url?downloadformat=ris'
+ '&filenameprefix=Engineering_Village&displayformat=abstract'
+ '&database=' + encodeURIComponent(db)
+ '&docidlist=' + encodeURIComponent(docIDs.join(','))
+ '&handlelist=' + encodeURIComponent(handleList.join(','));
// This is what their web page does. It also sends Content-type and
// Content-length parameters in the body, but seems like we can skip that
// part
ZU.doPost(url, "", function (text) {
// Z.debug(text);
var translator = Zotero.loadTranslator("import");
// RIS
translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7");
translator.setString(text);
translator.setHandler('itemDone', function (obj, item) {
item.attachments = [];
item.notes = [];
item.complete();
});
translator.translate();
});
}
/** BEGIN TEST CASES **/
var testCases = [
]
/** END TEST CASES **/
100Simon Kornblith, Sean Takats, Michael Berkowitz, Eli Osherovich, czar^https?://([^/]+\.)?jstor\.org/(discover/|action/(showArticle|doBasicSearch|doAdvancedSearch|doLocatorSearch|doAdvancedResults|doBasicResults)|stable/|pss/|openurl\?|sici\?)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2019-2022 Simon Kornblith, Sean Takats, Michael Berkowitz,
Eli Osherovich, czar
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
// See if this is a search results page or Issue content
if (doc.title == "JSTOR: Search Results") {
return "multiple";
}
// Issues with DOIs can't be identified by URL
else if (/stable|pss/.test(url)) {
if (getSearchResults(doc, true)) {
return "multiple";
}
else {
Z.monitorDOMChanges(doc.body,
{ attributeFilter: ['style'] });
}
}
// If this is a view page, find the link to the citation
var favLink = getFavLink(doc);
if ((favLink && getJID(favLink.href)) || getJID(url)) {
if (text(doc, '.book_info_button')) {
return "book";
}
else if (text(doc, 'script[data-analytics-provider]').includes('"chapter view"')) {
// might not stick around, but this is really just for the toolbar icon
// (and tests)
return "bookSection";
}
else {
return "journalArticle";
}
}
return false;
}
function getSearchResults(doc, checkOnly) {
var resultsBlock = doc.querySelectorAll('.media-body.media-object-section');
if (!resultsBlock.length) {
resultsBlock = doc.querySelectorAll('.result');
}
if (!resultsBlock.length) {
resultsBlock = doc.querySelectorAll('.toc-item');
}
if (!resultsBlock.length) return false;
var items = {}, found = false;
for (let row of resultsBlock) {
let title = text(row, '.title, .small-heading, toc-view-pharos-link');
let jid = getJID(attr(row, 'a', 'href'));
if (!jid) {
jid = getJID(attr(row, '[href]', 'href'));
}
if (!jid || !title) continue;
if (checkOnly) return true;
found = true;
items[jid] = title;
// Zotero.debug("Found title "+ title +" with JID "+ jid);
}
return found ? items : false;
}
function getFavLink(doc) {
var a = doc.getElementById('favorites');
if (a && a.href) return a;
return false;
}
function getJID(url) {
if (!url) return false;
var m = url.match(/(?:discover|pss|stable(?:\/info|\/pdf)?)\/(10\.\d+(?:%2F|\/)[^?]+|[a-z0-9.]*)/);
if (m) {
var jid = decodeURIComponent(m[1]);
if (jid.search(/10\.\d+\//) !== 0) {
if (jid.substr(-4) == ".pdf") {
jid = jid.substr(0, jid.length - 4);
}
Zotero.debug("Converting JID " + jid + " to JSTOR DOI");
jid = '10.2307/' + jid;
}
return jid;
}
return false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == 'multiple') {
Zotero.selectItems(getSearchResults(doc), function (selectedItems) {
if (selectedItems) {
var jids = [];
for (var j in selectedItems) {
jids.push(j);
}
scrape(jids);
}
});
}
else {
// If this is a view page, find the link to the citation
var favLink = getFavLink(doc);
var jid;
if (favLink && (jid = getJID(favLink.href))) {
Zotero.debug("JID found 1 " + jid);
scrape([jid]);
}
else if ((jid = getJID(url))) {
Zotero.debug("JID found 2 " + jid);
scrape([jid]);
}
}
}
function scrape(jids) {
var risURL = "/citation/ris/";
(function next() {
if (!jids.length) return;
var jid = jids.shift();
ZU.doGet(risURL + jid, function (text) {
processRIS(text, jid);
next();
});
})();
}
function convertCharRefs(string) {
// converts hex decimal encoded html entities used by JSTOR to regular utf-8
return string
.replace(/&#x([A-Za-z0-9]+);/g, function (match, num) {
return String.fromCharCode(parseInt(num, 16));
});
}
function processRIS(text, jid) {
// load translator for RIS
var translator = Zotero.loadTranslator("import");
translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7");
// Z.debug(text);
// Reviews have a RI tag now (official RIS for Reviewed Item)
var review = text.match(/^RI\s+-\s+(.+)/m);
// sometimes we have subtitles stored in T1. These are part of the title, we want to add them later
var subtitle = text.match(/^T1\s+-\s+(.+)/m);
var maintitle = text.match(/^TI\s+-\s+(.+)/m);
translator.setString(text);
translator.setHandler("itemDone", function (obj, item) {
// author names are not (always) supplied as lastName, firstName in RIS
// we fix it here (note sure if still need with new RIS)
var m;
for (var i = 0, n = item.creators.length; i < n; i++) {
if (!item.creators[i].firstName
&& (m = item.creators[i].lastName.match(/^(.+)\s+(\S+)$/))) {
item.creators[i].firstName = m[1];
item.creators[i].lastName = m[2];
delete item.creators[i].fieldMode;
}
}
// fix special characters in abstract, convert html linebreaks and italics, remove stray p tags; don't think they use anything else
if (item.abstractNote) {
item.abstractNote = convertCharRefs(item.abstractNote);
item.abstractNote = item.abstractNote.replace(/<\/p><p>/g, "\n").replace(/<em>(.+?)<\/em>/g, " <i>$1</i> ").replace(/<\/?p>/g, "");
item.abstractNote = item.abstractNote.replace(/^\[/, "").replace(/\]$/, "");
}
// Don't save HTML snapshot from 'UR' tag
item.attachments = [];
// not currently using but that's where the PDF link is
// var pdfurl = attr('a[data-qa="download-pdf"]', 'href');
// Books don't have PDFs
if (/stable\/([a-z0-9.]+)/.test(item.url) & item.itemType != "book") {
let pdfurl = "/stable/pdfplus/" + jid + ".pdf?acceptTC=true";
item.attachments.push({
url: pdfurl,
title: "JSTOR Full Text PDF",
mimeType: "application/pdf"
});
}
if (item.ISSN) {
item.ISSN = ZU.cleanISSN(item.ISSN);
}
// Only the DOIs mentioned in RIS are valid, and we don't
// add any other jid for DOI because they are only internal.
if (maintitle && subtitle) {
maintitle[1] = maintitle[1].replace(/:\s*$/, '');
item.title = maintitle[1] + ": " + subtitle[1];
}
// reviews don't have titles in RIS - we get them from the item page
if (!item.title && review) {
var reviewedTitle = review[1];
// A2 for reviews is actually the reviewed author
var reviewedAuthors = [];
for (i = 0; i < item.creators.length; i++) {
if (item.creators[i].creatorType == "editor") {
reviewedAuthors.push(item.creators[i].firstName + " " + item.creators[i].lastName);
item.creators[i].creatorType = "reviewedAuthor";
}
}
// remove any reviewed authors from the title
for (i = 0; i < reviewedAuthors.length; i++) {
reviewedTitle = reviewedTitle.replace(", " + reviewedAuthors[i], "");
}
item.title = "Review of " + reviewedTitle;
}
// titles may also contain escape characters
item.title = convertCharRefs(item.title);
item.url = item.url.replace('http:', 'https:'); // RIS still lists http addresses while JSTOR's stable URLs use https
if (item.url && !item.url.startsWith("http")) item.url = "https://" + item.url;
// remove all caps from titles and authors.
for (i = 0; i < item.creators.length; i++) {
if (item.creators[i].lastName && item.creators[i].lastName == item.creators[i].lastName.toUpperCase()) {
item.creators[i].lastName = ZU.capitalizeName(item.creators[i].lastName, true);
}
if (item.creators[i].firstName && item.creators[i].firstName == item.creators[i].firstName.toUpperCase()) {
item.creators[i].firstName = ZU.capitalizeName(item.creators[i].firstName, true);
}
}
if (item.title == item.title.toUpperCase()) {
item.title = ZU.capitalizeTitle(item.title.toLowerCase(), true);
}
// DB in RIS maps to archive; we don't want that
delete item.archive;
if (item.DOI || /DOI: 10\./.test(item.extra)) {
finalizeItem(item);
}
else {
item.complete();
}
});
translator.getTranslatorObject(function (trans) {
trans.doImport();
});
}
function finalizeItem(item) {
// Validate DOI
let doi = item.DOI || item.extra.match(/DOI: (10\..+)/)[1];
Zotero.debug("Validating DOI " + doi);
// This just returns two lines of JSON
ZU.doGet('https://doi.org/doiRA/' + encodeURIComponent(doi),
function (text) {
// Z.debug(text)
try {
var ra = JSON.parse(text);
// Z.debug(ra[0].status)
if (!ra[0] || ra[0].status == "DOI does not exist") {
Z.debug("DOI " + doi + " does not exist");
if (item.DOI) {
delete item.DOI;
}
else {
item.extra = item.extra.replace(/DOI: 10\..+\n?/, "");
}
}
}
catch (e) {
if (item.DOI) {
delete item.DOI;
}
else {
item.extra.replace(/DOI: 10\..+\n?/, "");
}
Zotero.debug("Could not parse JSON. Probably invalid DOI");
}
}, function () {
item.complete();
}
);
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://www.jstor.org/action/doBasicSearch?Query=chicken&Search.x=0&Search.y=0&wc=on",
"defer": true,
"items": "multiple"
},
{
"type": "web",
"url": "https://www.jstor.org/stable/1593514?Search=yes&searchText=chicken&list=hide&searchUri=%2Faction%2FdoBasicSearch%3FQuery%3Dchicken%26Search.x%3D0%26Search.y%3D0%26wc%3Don&prevSearch=&item=1&ttl=70453&returnArticleService=showFullText#metadata_info_tab_contents",
"items": [
{
"itemType": "journalArticle",
"title": "Chicken Primary Enterocytes: Inhibition of Eimeria tenella Replication after Activation with Crude Interferon-γ Supernatants",
"creators": [
{
"lastName": "Dimier-Poisson",
"firstName": "I. H.",
"creatorType": "author"
},
{
"lastName": "Bout",
"firstName": "D. T.",
"creatorType": "author"
},
{
"lastName": "Quéré",
"firstName": "P.",
"creatorType": "author"
}
],
"date": "2004",
"ISSN": "0005-2086",
"abstractNote": "A reproducible and original method for the preparation of chicken intestine epithelial cells from 18-day-old embryos for long-term culture was obtained by using a mechanical isolation procedure, as opposed to previous isolation methods using relatively high concentrations of trypsin, collagenase, or EDTA. Chicken intestine epithelial cells typically expressed keratin and chicken E-cadherin, in contrast to chicken embryo fibroblasts, and they increased cell surface MHC II after activation with crude IFN-γ containing supernatants, obtained from chicken spleen cells stimulated with concanavalin A or transformed by reticuloendotheliosis virus. Eimeria tenella was shown to be able to develop until the schizont stage after 46 hr of culture in these chicken intestinal epithelial cells, but it was not able to develop further. However, activation with IFN-γ containing supernatants resulted in strong inhibition of parasite replication, as shown by incorporation of [3 H]uracil. Thus, chicken enterocytes, which are the specific target of Eimeria development in vivo, could be considered as potential local effector cells involved in the protective response against this parasite. /// Se desarrolló un método reproducible y original para la preparación de células epiteliales de intestino de embriones de pollo de 18 días de edad para ser empleadas como cultivo primario de larga duración. Las células epiteliales de intestino fueron obtenidas mediante un procedimiento de aislamiento mecánico, opuesto a métodos de aislamientos previos empleando altas concentraciones de tripsina, colagenasa o EDTA. Las células epiteliales de intestino expresaron típicamente keratina y caderina E, a diferencia de los fibroblastos de embrión de pollo, e incrementaron el complejo mayor de histocompatibilidad tipo II en la superficie de la célula posterior a la activación con sobrenadantes de interferón gamma. Los sobrenadantes de interferón gamma fueron obtenidos a partir de células de bazos de pollos estimuladas con concanavalina A o transformadas con el virus de reticuloendoteliosis. Se observó el desarrollo de la Eimeria tenella hasta la etapa de esquizonte después de 46 horas de cultivo en las células intestinales epiteliales de pollo pero no se observó un desarrollo posterior. Sin embargo, la activación de los enterocitos con los sobrenadantes con interferón gamma resultó en una inhibición fuerte de la replicación del parásito, comprobada mediante la incorporación de uracilo [3 H]. Por lo tanto, los enterocitos de pollo, blanco específico del desarrollo in vivo de la Eimeria, podrían ser considerados como células efectoras locales, involucradas en la respuesta protectora contra este parásito.",
"issue": "3",
"libraryCatalog": "JSTOR",
"pages": "617-624",
"publicationTitle": "Avian Diseases",
"shortTitle": "Chicken Primary Enterocytes",
"url": "https://www.jstor.org/stable/1593514",
"volume": "48",
"attachments": [
{
"title": "JSTOR Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.jstor.org/stable/10.1086/245591?&Search=yes&searchText=bread&searchText=engel&searchText=alpern&searchText=barbara&searchText=alone&list=hide&searchUri=%2Faction%2FdoAdvancedSearch%3Fq0%3Dnot%2Bby%2Bbread%2Balone%26f0%3Dall%26c1%3DAND%26q1%3Dbarbara%2Balpern%2Bengel%26f1%3Dall%26acc%3Don%26wc%3Don%26Search%3DSearch%26sd%3D%26ed%3D%26la%3D%26jo%3D&prevSearch=&item=2&ttl=82&returnArticleService=showFullText",
"items": [
{
"itemType": "journalArticle",
"title": "Not by Bread Alone: Subsistence Riots in Russia during World War I",
"creators": [
{
"lastName": "Engel",
"firstName": "Barbara Alpern",
"creatorType": "author"
}
],
"date": "1997",
"DOI": "10.1086/245591",
"ISSN": "0022-2801",
"issue": "4",
"libraryCatalog": "JSTOR",
"pages": "696-721",
"publicationTitle": "The Journal of Modern History",
"shortTitle": "Not by Bread Alone",
"url": "https://www.jstor.org/stable/10.1086/245591",
"volume": "69",
"attachments": [
{
"title": "JSTOR Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.jstor.org/stable/10.1086/508232",
"items": [
{
"itemType": "journalArticle",
"title": "Remaking Families: A Review Essay",
"creators": [
{
"lastName": "Satz",
"firstName": "Debra",
"creatorType": "author"
}
],
"date": "2007",
"DOI": "10.1086/508232",
"ISSN": "0097-9740",
"issue": "2",
"libraryCatalog": "JSTOR",
"pages": "523-538",
"publicationTitle": "Signs",
"shortTitle": "Remaking Families",
"url": "https://www.jstor.org/stable/10.1086/508232",
"volume": "32",
"attachments": [
{
"title": "JSTOR Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.jstor.org/stable/131548",
"items": [
{
"itemType": "journalArticle",
"title": "Review of Soviet Criminal Justice under Stalin",
"creators": [
{
"lastName": "Burbank",
"firstName": "Jane",
"creatorType": "author"
},
{
"lastName": "Solomon",
"firstName": "Peter H.",
"creatorType": "reviewedAuthor"
}
],
"date": "1998",
"ISSN": "0036-0341",
"issue": "2",
"libraryCatalog": "JSTOR",
"pages": "310-311",
"publicationTitle": "The Russian Review",
"url": "https://www.jstor.org/stable/131548",
"volume": "57",
"attachments": [
{
"title": "JSTOR Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.jstor.org/stable/40398803",
"items": [
{
"itemType": "journalArticle",
"title": "Coauthorship Dynamics and Knowledge Capital: The Patterns of Cross-Disciplinary Collaboration in Information Systems Research",
"creators": [
{
"lastName": "Oh",
"firstName": "Wonseok",
"creatorType": "author"
},
{
"lastName": "Choi",
"firstName": "Jin Nam",
"creatorType": "author"
},
{
"lastName": "Kim",
"firstName": "Kimin",
"creatorType": "author"
}
],
"date": "2005",
"ISSN": "0742-1222",
"abstractNote": "From the social network perspective, this study explores the ontological structure of knowledge sharing activities engaged in by researchers in the field of information systems (IS) over the past three decades. We construct a knowledge network based on coauthorship patterns extracted from four major journals in the IS field in order to analyze the distinctive characteristics of each subfield and to assess the amount of internal and external knowledge exchange that has taken place among IS researchers. This study also tests the role of different types of social capital that influence the academic impact of researchers. Our results indicate that the proportion of coauthored IS articles in the four journals has doubled over the past 25 years, from merely 40 percent in 1978 to over 80 percent in 2002. However, a significant variation exists in terms of the shape, density, and centralization of knowledge exchange networks across the four subfields of IS—namely, behavioral science, organizational science, computer science, and economic science. For example, the behavioral science subgroup, in terms of internal cohesion among researchers, tends to develop the most dense collaborative relationships, whereas the computer science subgroup is the most fragmented. Moreover, external collaboration across these subfields appears to be limited and severely unbalanced. Across the four subfields, on average, less than 20 percent of the research collaboration ties involved researchers from different subdisciplines. Finally, the regression analysis reveals that knowledge capital derived from a network rich in structural holes has a positive influence on an individual researcher's academic performance.",
"issue": "3",
"libraryCatalog": "JSTOR",
"pages": "265-292",
"publicationTitle": "Journal of Management Information Systems",
"shortTitle": "Coauthorship Dynamics and Knowledge Capital",
"url": "https://www.jstor.org/stable/40398803",
"volume": "22",
"attachments": [
{
"title": "JSTOR Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.jstor.org/action/doBasicSearch?Query=%28solomon+criminal+justice%29+AND+disc%3A%28slavicstudies-discipline+OR+history-discipline%29&prq=%28criminal+justice%29+AND+disc%3A%28slavicstudies-discipline+OR+history-discipline%29&hp=25&acc=on&wc=on&fc=off&so=rel&racc=off",
"defer": true,
"items": "multiple"
},
{
"type": "web",
"url": "https://www.jstor.org/stable/10.1525/rep.2014.128.1.1#page_scan_tab_contents",
"items": [
{
"itemType": "journalArticle",
"title": "“Judaism” as Political Concept: Toward a Critique of Political Theology",
"creators": [
{
"lastName": "Nirenberg",
"firstName": "David",
"creatorType": "author"
}
],
"date": "2014",
"DOI": "10.1525/rep.2014.128.1.1",
"ISSN": "0734-6018",
"abstractNote": "This article traces a long history in Christian political thought of linking politics, statecraft, and worldly authority to the broader category of carnal literalism, typed as “Jewish” by the Pauline tradition. This tradition produced a tendency to discuss political error in terms of Judaism, with the difference between mortal and eternal, private and public, tyrant and legitimate monarch, mapped onto the difference between Jew and Christian. As a result of this history, transcendence as a political ideal has often figured (and perhaps still figures?) its enemies as Jewish.",
"issue": "1",
"libraryCatalog": "JSTOR",
"pages": "1-29",
"publicationTitle": "Representations",
"shortTitle": "“Judaism” as Political Concept",
"url": "https://www.jstor.org/stable/10.1525/rep.2014.128.1.1",
"volume": "128",
"attachments": [
{
"title": "JSTOR Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.jstor.org/stable/10.1086/378695",
"items": [
{
"itemType": "journalArticle",
"title": "Salaries, Turnover, and Performance in the Federal Criminal Justice System",
"creators": [
{
"lastName": "Boylan",
"firstName": "Richard T.",
"creatorType": "author"
}
],
"date": "2004",
"DOI": "10.1086/378695",
"ISSN": "0022-2186",
"abstractNote": "Abstract The effect of salaries on turnover and performance is analyzed for U.S. attorneys in office during the years 1969 through 1999. Lower salaries are shown to increase the turnover of U.S. attorneys, and higher turnover is shown to reduce output. Two features distinguish U.S. attorneys (chief federal prosecutors) from other public‐ and private‐sector employees. First, since 1977, U.S. attorney salaries have been tied to the salaries of members of Congress and are thus exogenously determined. Second, there are public measures for the output of U.S. attorneys. Both features simplify the study of the effect of salaries on turnover and performance.",
"issue": "1",
"libraryCatalog": "JSTOR",
"pages": "75-92",
"publicationTitle": "The Journal of Law & Economics",
"url": "https://www.jstor.org/stable/10.1086/378695",
"volume": "47",
"attachments": [
{
"title": "JSTOR Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.jstor.org/stable/i250748",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.jstor.org/stable/10.7312/kara15848",
"items": [
{
"itemType": "book",
"title": "Bonded Labor: Tackling the System of Slavery in South Asia",
"creators": [
{
"lastName": "Kara",
"firstName": "Siddharth",
"creatorType": "author"
}
],
"date": "2012",
"abstractNote": "Siddharth Kara's <i>Sex Trafficking</i> has become a critical resource for its revelations into an unconscionable business, and its detailed analysis of the trade's immense economic benefits and human cost. This volume is Kara's second, explosive study of slavery, this time focusing on the deeply entrenched and wholly unjust system of bonded labor. Drawing on eleven years of research in India, Nepal, Bangladesh, and Pakistan, Kara delves into an ancient and ever-evolving mode of slavery that ensnares roughly six out of every ten slaves in the world and generates profits that exceeded $17.6 billion in 2011. In addition to providing a thorough economic, historical, and legal overview of bonded labor, Kara travels to the far reaches of South Asia, from cyclone-wracked southwestern Bangladesh to the Thar desert on the India-Pakistan border, to uncover the brutish realities of such industries as hand-woven-carpet making, tea and rice farming, construction, brick manufacture, and frozen-shrimp production. He describes the violent enslavement of millions of impoverished men, women, and children who toil in the production of numerous products at minimal cost to the global market. He also follows supply chains directly to Western consumers, vividly connecting regional bonded labor practices to the appetites of the world. Kara's pioneering analysis encompasses human trafficking, child labor, and global security, and he concludes with specific initiatives to eliminate the system of bonded labor from South Asia once and for all.",
"libraryCatalog": "JSTOR",
"publisher": "Columbia University Press",
"shortTitle": "Bonded Labor",
"url": "https://www.jstor.org/stable/10.7312/kara15848",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.jstor.org/stable/j.ctt7ztj7f?seq=1#page_scan_tab_contents",
"items": [
{
"itemType": "book",
"title": "Ulysses' Sail: An Ethnographic Odyssey of Power, Knowledge, and Geographical Distance",
"creators": [
{
"lastName": "Helms",
"firstName": "Mary W.",
"creatorType": "author"
}
],
"date": "1988",
"abstractNote": "What do long-distance travelers gain from their voyages, especially when faraway lands are regarded as the source of esoteric knowledge? Mary Helms explains how various cultures interpret space and distance in cosmological terms, and why they associate political power with information about strange places, peoples, and things. She assesses the diverse goals of travelers, be they Hindu pilgrims in India, Islamic scholars of West Africa, Navajo traders, or Tlingit chiefs, and discusses the most extensive experience of longy2Ddistance contact on record--that between Europeans and native peoples--and the clash of cultures that arose from conflicting expectations about the \"faraway.\". The author describes her work as \"especially concerned with the political and ideological contexts or auras within which long-distance interests and activities may be conducted .. Not only exotic materials but also intangible knowledge of distant realms and regions can be politically valuable `goods,' both for those who have endured the perils of travel and for those sedentary homebodies who are able to acquire such knowledge by indirect means and use it for political advantage.\" Originally published in 1988. ThePrinceton Legacy Libraryuses the latest print-on-demand technology to again make available previously out-of-print books from the distinguished backlist of Princeton University Press. These paperback editions preserve the original texts of these important books while presenting them in durable paperback editions. The goal of the Princeton Legacy Library is to vastly increase access to the rich scholarly heritage found in the thousands of books published by Princeton University Press since its founding in 1905.",
"libraryCatalog": "JSTOR",
"publisher": "Princeton University Press",
"shortTitle": "Ulysses' Sail",
"url": "https://www.jstor.org/stable/j.ctt7ztj7f",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.jstor.org/action/doAdvancedSearch?q3=&re=on&q4=&f3=all&c3=AND&group=none&q1=&f5=all&c5=AND&la=&q2=&c6=AND&sd=&c2=AND&c1=AND&pt=&acc=off&q6=&q5=&c4=AND&f6=all&f0=all&q0=%22Reading+Rousseau+in+the+nuclear+age%22&f4=all&ed=&f2=all&f1=all&isbn=",
"defer": true,
"items": "multiple"
},
{
"type": "web",
"url": "https://www.jstor.org/tc/accept?origin=/stable/pdf/4308405.pdf",
"items": [
{
"itemType": "journalArticle",
"title": "Errors in Bibliographic Citations: A Continuing Problem",
"creators": [
{
"lastName": "Sweetland",
"firstName": "James H.",
"creatorType": "author"
}
],
"date": "1989",
"ISSN": "0024-2519",
"abstractNote": "Bibliographic references are an accepted part of scholarly publication. As such, they have been used for information retrieval, studies of scientific communication, collection development decisions, and even determination of salary raises, as well as for their primary purpose of documentation of authors' claims. However, there appears to be a high percentage of errors in these citations, seen in evidence from the mid-nineteenth century to the present. Such errors can be traced to a lack of standardization in citation formats, misunderstanding of foreign languages, general human inabilities to reproduce long strings of information correctly, and failure to examine the document cited, combined with a general lack of training in the norms of citation. The real problem, the failure to detect and correct citation errors, is due to a diffusion of responsibility in the publishing process.",
"issue": "4",
"libraryCatalog": "JSTOR",
"pages": "291-304",
"publicationTitle": "The Library Quarterly: Information, Community, Policy",
"shortTitle": "Errors in Bibliographic Citations",
"url": "https://www.jstor.org/stable/4308405",
"volume": "59",
"attachments": [
{
"title": "JSTOR Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.jstor.org/stable/40401968?seq=1#metadata_info_tab_contents",
"items": [
{
"itemType": "journalArticle",
"title": "Review of The Communards of Paris, 1871; The Paris Commune of 1871: The View from the Left",
"creators": [
{
"lastName": "Waldman",
"firstName": "Martin R.",
"creatorType": "author"
},
{
"lastName": "Edwards",
"firstName": "Stewart",
"creatorType": "reviewedAuthor"
},
{
"lastName": "Schulkind",
"firstName": "Eugene",
"creatorType": "reviewedAuthor"
}
],
"date": "1976",
"ISSN": "0036-8237",
"issue": "3",
"libraryCatalog": "JSTOR",
"pages": "378-381",
"publicationTitle": "Science & Society",
"shortTitle": "Review of The Communards of Paris, 1871; The Paris Commune of 1871",
"url": "https://www.jstor.org/stable/40401968",
"volume": "40",
"attachments": [
{
"title": "JSTOR Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.jstor.org/stable/j.ctt19jcg63.12",
"items": [
{
"itemType": "bookSection",
"title": "“OUR CLIMATE AND SOIL IS COMPLETELY ADAPTED TO THEIR CUSTOMS”: Whiteness, Railroad Promotion, and the Settlement of the Great Plains",
"creators": [
{
"lastName": "Pierce",
"firstName": "Jason E.",
"creatorType": "author"
}
],
"date": "2016",
"ISBN": "9781607323952",
"abstractNote": "Dr. William A. Bell, a transplanted English physician and promoter for the Denver and Rio Grande Western Railway, observed in his 1869 book <i>New Tracks in North America</i> that the West offered unlimited potential for creating prosperous new towns and generating profits for discerning investors, but its development would require men of vision, courage, and capital to make dreams a reality. The West stood forth as a vast region “where continuous settlement is impossible, where, instead of navigable rivers, we find arid deserts, but where, nevertheless, spots of great fertility and the richest prizes of the mineral kingdom tempt men",
"bookTitle": "Making the White Man's West",
"libraryCatalog": "JSTOR",
"pages": "151-178",
"publisher": "University Press of Colorado",
"series": "Whiteness and the Creation of the American West",
"shortTitle": "“OUR CLIMATE AND SOIL IS COMPLETELY ADAPTED TO THEIR CUSTOMS”",
"url": "https://www.jstor.org/stable/j.ctt19jcg63.12",
"attachments": [
{
"title": "JSTOR Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.jstor.org/stable/29533951",
"items": [
{
"itemType": "journalArticle",
"title": "Systems, Not Men: Producing People in Charlotte Perkins Gilman's \"Herland\"",
"creators": [
{
"lastName": "Fusco",
"firstName": "Katherine",
"creatorType": "author"
}
],
"date": "2009",
"ISSN": "0039-3827",
"issue": "4",
"libraryCatalog": "JSTOR",
"pages": "418-434",
"publicationTitle": "Studies in the Novel",
"shortTitle": "Systems, Not Men",
"url": "https://www.jstor.org/stable/29533951",
"volume": "41",
"attachments": [
{
"title": "JSTOR Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
{"getCollections":"true","dataMode":"rdf\/xml"}{"exportNotes":true}50Simon Kornblithrdfvar n = {
address:"http://schemas.talis.com/2005/address/schema#", // could also use vcard?
bibo:"http://purl.org/ontology/bibo/",
ctag:"http://commontag.org/ns#",
dcterms:"http://purl.org/dc/terms/",
doap:"http://usefulinc.com/ns/doap#",
foaf:"http://xmlns.com/foaf/0.1/",
link:"http://purl.org/rss/1.0/modules/link/",
po:"http://purl.org/ontology/po/",
rdf:"http://www.w3.org/1999/02/22-rdf-syntax-ns#",
rel:"http://www.loc.gov/loc.terms/relators/",
res:"http://purl.org/vocab/resourcelist/schema#",
sc:"http://umbel.org/umbel/sc/",
sioct:"http://rdfs.org/sioc/types#",
z:"http://www.zotero.org/namespaces/export#"
};
/**
Types should be in the form
<ZOTERO_TYPE>: [<ITEM_CLASS>, <SUBCONTAINER_CLASS>, <CONTAINER_CLASS>]
Item classes should be in the form
[[<PREDICATE>, <OBJECT>]+]
This generates the triples
(ITEM <PREDICATE> <OBJECT>)+
Subcontainer and container classes should be in the form
[<ALWAYS_INCLUDE>, <ITEM_PREDICATE>, [<CONTAINER_PREDICATE>, <CONTAINER_OBJECT>]*] | null
If there is a property to be applied to the container, or if <ALWAYS_INCLUDE> is true, then this
generates
ITEM <ITEM_PREDICATE> CONTAINER
(CONTAINER <CONTAINER_PREDICATE> <CONTAINER_OBJECT>)*
**/
// ZOTERO TYPE ITEM CLASS SUBCONTAINER CLASS CONTAINER CLASS
var TYPES = {
"artwork": [[[n.rdf+"type", n.bibo+"Image"]], null, null],
"attachment": [[[n.rdf+"type", n.z+"Attachment"]], null, null],
"audioRecording": [[[n.rdf+"type", n.bibo+"AudioDocument"]], null, null],
"bill": [[[n.rdf+"type", n.bibo+"Bill"]], null, [false, n.dcterms+"isPartOf", [[n.rdf+"type", n.bibo+"Code"]]]],
"blogPost": [[[n.rdf+"type", n.sioct+"BlogPost"],
[n.rdf+"type", n.bibo+"Article"]], null, [false, n.dcterms+"isPartOf", [[n.rdf+"type", n.sioct+"Weblog"],
[n.rdf+"type", n.bibo+"Website"]]]],
"book": [[[n.rdf+"type", n.bibo+"Book"]], null, null],
"bookSection": [[[n.rdf+"type", n.bibo+"BookSection"]], null, [false, n.dcterms+"isPartOf", [[n.rdf+"type", n.bibo+"EditedBook"]]]],
"case": [[[n.rdf+"type", n.bibo+"LegalCaseDocument"]], null, [false, n.dcterms+"isPartOf", [[n.rdf+"type", n.bibo+"CourtReporter"]]]],
"computerProgram": [[[n.rdf+"type", n.sc+"ComputerProgram_CW"],
[n.rdf+"type", n.bibo+"Document"]], null, null],
"conferencePaper": [[[n.rdf+"type", n.bibo+"Article"]], null, [true, n.dcterms+"isPartOf", [[n.rdf+"type", n.bibo+"Proceedings"]]]],
"dictionaryEntry": [[[n.rdf+"type", n.bibo+"Article"]], null, [true, n.dcterms+"isPartOf", [[n.rdf+"type", n.sc+"Dictionary"],
[n.rdf+"type", n.bibo+"ReferenceSource"]]]],
"document": [[[n.rdf+"type", n.bibo+"Document"]], null, null],
"email": [[[n.rdf+"type", n.bibo+"Email"]], null, null],
"encyclopediaArticle": [[[n.rdf+"type", n.bibo+"Article"]], null, [true, n.dcterms+"isPartOf", [[n.rdf+"type", n.sc+"Encyclopedia"],
[n.rdf+"type", n.bibo+"ReferenceSource"]]]],
"forumPost": [[[n.rdf+"type", n.sioct+"BoardPost"],
[n.rdf+"type", n.bibo+"Article"]], null, [false, n.dcterms+"isPartOf", [[n.rdf+"type", n.sioct+"MessageBoard"],
[n.rdf+"type", n.bibo+"Website"]]]],
"film": [[[n.rdf+"type", n.bibo+"Film"]], null, null],
"hearing": [[[n.rdf+"type", n.bibo+"Hearing"]], null, null],
"instantMessage": [[[n.rdf+"type", n.sioct+"InstantMessage"],
[n.rdf+"type", n.bibo+"PersonalCommunication"]], null, null],
"interview": [[[n.rdf+"type", n.bibo+"Interview"]], null, null],
"journalArticle": [[[n.rdf+"type", n.bibo+"AcademicArticle"]], [true, n.dcterms+"isPartOf",
[[n.rdf+"type", n.bibo+"Issue"]]], [true, n.dcterms+"isPartOf", [[n.rdf+"type", n.bibo+"Journal"]]]],
"letter": [[[n.rdf+"type", n.bibo+"Letter"]], null, null],
"magazineArticle": [[[n.rdf+"type", n.bibo+"Article"]], [true, n.dcterms+"isPartOf",
[[n.rdf+"type", n.bibo+"Issue"]]], [true, n.dcterms+"isPartOf", [[n.rdf+"type", n.bibo+"Magazine"]]]],
"manuscript": [[[n.rdf+"type", n.bibo+"Manuscript"]], null, null],
"map": [[[n.rdf+"type", n.bibo+"Map"]], null, null],
"newspaperArticle": [[[n.rdf+"type", n.bibo+"Article"]], [true, n.dcterms+"isPartOf",
[[n.rdf+"type", n.bibo+"Issue"]]], [true, n.dcterms+"isPartOf", [[n.rdf+"type", n.bibo+"Newspaper"]]]],
"note": [[[n.rdf+"type", n.bibo+"Note"]], null, null],
"patent": [[[n.rdf+"type", n.bibo+"Patent"]], null, null],
"podcast": [[[n.rdf+"type", n.z+"Podcast"],
[n.rdf+"type", n.bibo+"AudioDocument"]], null, null],
"presentation": [[[n.rdf+"type", n.bibo+"Slideshow"]], null, null],
"radioBroadcast": [[[n.rdf+"type", n.po+"AudioDocument"],
[n.rdf+"type", n.po+"Episode"],
[n.po+"broadcast_on", n.po+"Radio"]], null, [false, n.dcterms+"isPartOf", [[n.rdf+"type", n.po+"Programme"]]]],
"report": [[[n.rdf+"type", n.bibo+"Report"]], null, null],
"statute": [[[n.rdf+"type", n.bibo+"Statute"]], null, [false, n.dcterms+"isPartOf", [[n.rdf+"type", n.bibo+"Code"]]]],
"thesis": [[[n.rdf+"type", n.bibo+"Thesis"]], null, null],
"tvBroadcast": [[[n.rdf+"type", n.bibo+"AudioVisualDocument"],
[n.rdf+"type", n.po+"Episode"],
[n.po+"broadcast_on", n.po+"TV"]], null, [false, n.dcterms+"isPartOf", [[n.rdf+"type", n.po+"Programme"]]]],
"videoRecording": [[[n.rdf+"type", n.bibo+"AudioVisualDocument"]], null, null],
"webpage": [[[n.rdf+"type", n.bibo+"Webpage"]], null, [false, n.dcterms+"isPartOf", [[n.rdf+"type", n.bibo+"Website"]]]]
};
/**
* This is just a map of un-namespaced BIBO item types to Zotero item types
*/
var BIBO_TYPES = {
"Article": "magazineArticle",
"Brief": "case",
"Chapter": "bookSection",
"CollectedDocument": "document",
"DocumentPart": "document",
"EditedBook": "book",
"Excerpt": "note",
"Quote": "note",
"Film": "videoRecording",
"LegalDecision": "case",
"LegalDocument": "case",
"Legislation": "bill",
"Manual": "book",
"Performance": "presentation",
"PersonalCommunication": "letter",
"PersonalCommunicationDocument": "letter",
"Slide": "presentation",
"Standard": "report",
"Website": "webpage"
};
var USERITEM = 1;
var ITEM = 2;
var SUBCONTAINER = 3;
var CONTAINER = 4;
var ITEM_SERIES = 5;
var SUBCONTAINER_SERIES = 6; // not used
var CONTAINER_SERIES = 7;
/**
Fields should be in the form
<ZOTERO_FIELD>: ([<SUBJECT>, <PREDICATE>] | <FUNCTION>)
If a <FUNCTION> is specified, then it is passed the item and should return a set of triples in
the form
[[<SUBJECT>, <PREDICATE>, <OBJECT>, <LITERAL>]*]
where <SUBJECT> refers to one of the constants defined above. If <LITERAL> is true, then
<OBJECT> is treated as a literal.
If a <FUNCTION> is not used and <PREDICATE> is a string, then the parameters generate a triple
in the form
<SUBJECT> <PREDICATE> FIELD_CONTENT
where <SUBJECT> refers to one of the constants defined above. Alternatively, <PREDICATE> may be
an array in the form
[<ITEM_PREDICATE>, [<BLANK_NODE_PREDICATE>, <BLANK_NODE_OBJECT>]*, <PREDICATE>]
This generates the triples
<SUBJECT> <ITEM_PREDICATE> <BLANK_NODE>
(<BLANK_NODE> <BLANK_NODE_PREDICATE> <BLANK_NODE_OBJECT>)*
<BLANK_NODE> <PREDICATE> FIELD_CONTENT
**/
var FIELDS = {
"url": [ITEM, n.bibo+"uri"],
"rights": [USERITEM, n.dcterms+"rights"],
"series": [CONTAINER_SERIES, n.dcterms+"title"],
"volume": [SUBCONTAINER, n.bibo+"volume"],
"issue": [SUBCONTAINER, n.bibo+"issue"],
"edition": [SUBCONTAINER, n.bibo+"edition"],
"place": [CONTAINER, [n.dcterms+"publisher", [[n.rdf+"type", n.foaf+"Organization"]], n.address+"localityName"]],
"country": [CONTAINER, [n.dcterms+"publisher", [[n.rdf+"type", n.foaf+"Organization"]], n.address+"countryName"]],
"publisher": [CONTAINER, [n.dcterms+"publisher", [[n.rdf+"type", n.foaf+"Organization"]], n.foaf+"name"]],
"pages": [ITEM, n.bibo+"pages"],
"firstPage": [ITEM, n.bibo+"pageStart"],
"ISBN": [function(item) {
var isbns = item.ISBN.split(/, ?| /g);
var triples = [];
for (var i=0; i<isbns.length; i++) {
var isbn = isbns[i];
if (isbn.length == 10) {
triples.push([CONTAINER, n.bibo+"isbn10", isbn, true]);
} else {
triples.push([CONTAINER, n.bibo+"isbn13", isbn, true]);
}
}
return triples;
}, function(nodes) {
var isbns = [];
var propList = [n.bibo+"isbn13", n.bibo+"isbn10"];
for (var i=0; i<propList.length; i++) {
var statements = Zotero.RDF.getStatementsMatching(nodes[CONTAINER], propList[i], null);
if (statements) {
for (var j=0; j<statements.length; j++) {
isbns.push(statements[j][2]);
}
}
}
if (!isbns.length) return false;
return isbns.join(", ");
}],
"publicationTitle": [CONTAINER, n.dcterms+"title"],
"ISSN": [CONTAINER, n.bibo+"issn"],
"date": [SUBCONTAINER, n.dcterms+"date"],
"section": [ITEM, n.bibo+"section"],
"callNumber": [SUBCONTAINER, n.bibo+"lccn"],
"archiveLocation": [ITEM, n.dcterms+"source"],
"distributor": [SUBCONTAINER, n.bibo+"distributor"],
"extra": [ITEM, n.z+"extra"],
"journalAbbreviation": [CONTAINER, n.bibo+"shortTitle"],
"DOI": [ITEM, n.bibo+"doi"],
"accessDate": [USERITEM, n.z+"accessDate"],
"seriesTitle": [ITEM_SERIES, n.dcterms+"title"],
"seriesText": [ITEM_SERIES, n.dcterms+"description"],
"seriesNumber": [CONTAINER_SERIES, n.bibo+"number"],
"code": [CONTAINER, n.dcterms+"title"],
"session": [ITEM, [n.bibo+"presentedAt", [[n.rdf+"type", n.bibo+"Conference"]], n.dcterms+"title"]],
"legislativeBody": [ITEM, [n.bibo+"organizer", [[n.rdf+"type", n.sc+"LegalGovernmentOrganization"], [n.rdf+"type", n.foaf+"Organization"]], n.foaf+"name"]],
"history": [ITEM, n.z+"history"],
"reporter": [CONTAINER, n.dcterms+"title"],
"court": [CONTAINER, n.bibo+"court"],
"numberOfVolumes": [CONTAINER_SERIES, n.bibo+"numberOfVolumes"],
"committee": [ITEM, [n.bibo+"organizer", [[n.rdf+"type", n.sc+"Committee_Organization"], [n.rdf+"type", n.foaf+"Organization"]], n.foaf+"name"]],
"assignee": [ITEM, n.z+"assignee"], // TODO
"priorityNumbers": [function(item) { // TODO
var priorityNumbers = item.priorityNumbers.split(/, ?| /g);
var returnNumbers = [];
for (var i=0; i<priorityNumbers.length; i++) {
returnNumbers.push([ITEM, n.z+"priorityNumber", priorityNumbers[i], true]);
}
return returnNumbers;
}, function(nodes) {
var statements = Zotero.RDF.getStatementsMatching(nodes[ITEM], n.z+"priorityNumber", null);
if (!statements) return false;
var predicates = [];
for (var i=0; i<statements.length; i++) {
predicates.push(statements[i][2]);
}
return predicates.join(", ");
}],
"references": [ITEM, n.z+"references"],
"legalStatus": [ITEM, n.bibo+"status"],
"codeNumber": [CONTAINER, n.bibo+"number"],
"number": [ITEM, n.bibo+"number"],
"artworkSize": [ITEM, n.dcterms+"extent"],
"libraryCatalog": [USERITEM, n.z+"repository"],
"archive": [ITEM, n.z+"repository"],
"scale": [ITEM, n.z+"scale"],
"meetingName": [ITEM, [n.bibo+"presentedAt", [[n.rdf+"type", n.bibo+"Conference"]], n.dcterms+"title"]],
"runningTime": [ITEM, n.po+"duration"],
"version": [ITEM, n.doap+"revision"],
"system": [ITEM, n.doap+"os"],
"conferenceName": [ITEM, [n.bibo+"presentedAt", [[n.rdf+"type", n.bibo+"Conference"]], n.dcterms+"title"]],
"language": [ITEM, n.dcterms+"language"],
"programmingLanguage": [ITEM, n.doap+"programming-language"],
"abstractNote": [ITEM, n.dcterms+"abstract"],
"type": [ITEM, n.dcterms+"type"],
"medium": [ITEM, n.dcterms+"medium"],
"title": [ITEM, n.dcterms+"title"],
"shortTitle": [ITEM, n.bibo+"shortTitle"],
"numPages": [ITEM, n.bibo+"numPages"],
"applicationNumber": [ITEM, n.z+"applicationNumber"],
"issuingAuthority": [ITEM, [n.bibo+"issuer", [[n.rdf+"type", n.foaf+"Organization"]], n.foaf+"name"]],
"filingDate": [ITEM, n.dcterms+"dateSubmitted"]
};
var AUTHOR_LIST = 1;
var EDITOR_LIST = 2;
var CONTRIBUTOR_LIST = 3;
var CREATOR_LISTS = {
1:n.bibo+"authorList",
2:n.bibo+"editorList",
3:n.bibo+"contributorList"
};
var CREATORS = {
"author": [ITEM, AUTHOR_LIST, n.dcterms+"creator"],
"attorneyAgent": [ITEM, CONTRIBUTOR_LIST, n.z+"attorneyAgent"],
"bookAuthor": [CONTAINER, AUTHOR_LIST, n.dcterms+"creator"],
"castMember": [ITEM, CONTRIBUTOR_LIST, n.rel+"ACT"],
"commenter": [ITEM, CONTRIBUTOR_LIST, [n.sioct+"has_reply", [[n.rdf+"type", n.sioct+"Comment"]], n.dcterms+"creator"]],
"composer": [ITEM, CONTRIBUTOR_LIST, n.rel+"CMP"],
"contributor": [ITEM, CONTRIBUTOR_LIST, n.dcterms+"contributor"],
"cosponsor": [ITEM, CONTRIBUTOR_LIST, n.rel+"SPN"],
"counsel": [ITEM, CONTRIBUTOR_LIST, n.z+"counsel"],
"director": [ITEM, CONTRIBUTOR_LIST, n.bibo+"director"],
"editor": [SUBCONTAINER, EDITOR_LIST, n.bibo+"editor"],
"guest": [ITEM, CONTRIBUTOR_LIST, n.po+"participant"],
"interviewer": [ITEM, CONTRIBUTOR_LIST, n.bibo+"interviewer"],
"interviewee": [ITEM, CONTRIBUTOR_LIST, n.bibo+"interviewee"],
"performer": [ITEM, CONTRIBUTOR_LIST, n.bibo+"performer"],
"producer": [ITEM, CONTRIBUTOR_LIST, n.bibo+"producer"],
"recipient": [ITEM, CONTRIBUTOR_LIST, n.bibo+"recipient"],
"reviewedAuthor": [ITEM, CONTRIBUTOR_LIST, [n.bibo+"reviewOf", [], n.dcterms+"creator"]],
"scriptwriter": [ITEM, CONTRIBUTOR_LIST, n.rel+"AUS"],
"seriesEditor": [CONTAINER_SERIES, EDITOR_LIST, n.bibo+"editor"],
"translator": [SUBCONTAINER, CONTRIBUTOR_LIST, n.bibo+"translator"],
"wordsBy": [ITEM, CONTRIBUTOR_LIST, n.rel+"LYR"]
};
var SAME_ITEM_RELATIONS = [n.dcterms+"isPartOf", n.dcterms+"isVersionOf", n.bibo+"affirmedBy",
n.bibo+"presentedAt", n.bibo+"presents", n.bibo+"reproducedIn",
n.bibo+"reviewOf", n.bibo+"translationOf", n.bibo+"transcriptOf"];
/** COMMON FUNCTIONS **/
var BIBO_NS_LENGTH = n.bibo.length;
var RDF_TYPE = n.rdf+"type";
function getBlankNode(attachToNode, itemPredicate, blankNodePairs, create) {
// check if a node with the same relation and properties already exists
var blankNode = null;
// look for blank node
var statements1 = Zotero.RDF.getStatementsMatching(attachToNode, itemPredicate, undefined);
for (var i=0; i<statements1.length; i++) {
// look for appropriate statements on the blank node
var testNode = statements1[i][2];
var statements2 = true;
for (var j=0; j<blankNodePairs.length; j++) {
statements2 = Zotero.RDF.getStatementsMatching(testNode, blankNodePairs[j][0], blankNodePairs[j][1], false, true);
if (!statements2) break;
}
if (statements2) {
// if statements are good, then this is our node
blankNode = testNode;
break;
}
}
// if no suitable node exists, generate a new one and add blank node statements
if (!blankNode && create) {
blankNode = Zotero.RDF.newResource();
Zotero.RDF.addStatement(attachToNode, itemPredicate, blankNode, false);
for (var i=0; i<blankNodePairs.length; i++) {
Zotero.RDF.addStatement(blankNode, blankNodePairs[i][0], blankNodePairs[i][1], false);
}
}
return blankNode;
}
/**
* A class representing a Zotero-to-BIBO type mapping
* @property zoteroType {String} The corresponding Zotero type name
*/
Type = function(type, typeDefinition) {
this.zoteroType = type;
this[ITEM] = {"pairs":typeDefinition[0]};
this[SUBCONTAINER] = typeDefinition[1] ? {"alwaysAdd":typeDefinition[1][0],
"predicate":typeDefinition[1][1],
"pairs":typeDefinition[1][2]} : null;
this[CONTAINER] = typeDefinition[2] ? {"alwaysAdd":typeDefinition[2][0],
"predicate":typeDefinition[2][1],
"pairs":typeDefinition[2][2]} : null;
}
/**
* Score a node to determine how well it matches our type definition
* @returns {[Integer, Object]} The score, and an object containing ITEM, SUBCONTAINER, and
* CONTAINER nodes
*/
Type.prototype.getMatchScore = function(node) {
var nodes = {2:node};
// check item (+2 for each match, -1 for each nonmatch)
var score = -this[ITEM].pairs.length;
for (var i=0; i<this[ITEM].pairs.length; i++) {
var pair = this[ITEM].pairs[i];
if (Zotero.RDF.getStatementsMatching(node, pair[0], pair[1])) score += 3;
}
// check subcontainer
var sub = this._scoreNodeRelationship(node, this[SUBCONTAINER], score);
score = sub[0];
nodes[SUBCONTAINER] = sub[1];
// check container
sub = this._scoreNodeRelationship(
(nodes[SUBCONTAINER] ? nodes[SUBCONTAINER] : nodes[ITEM]),
this[CONTAINER], score
);
score = sub[0];
nodes[CONTAINER] = sub[1];
if (!nodes[CONTAINER]) nodes[CONTAINER] = nodes[ITEM];
if (!nodes[SUBCONTAINER]) nodes[SUBCONTAINER] = nodes[CONTAINER];
return [score, nodes];
}
/**
* Score a CONTAINER/SUBCONTAINTER node
* @returns {[Integer, Object]} The score, and the node (if it existed)
*/
Type.prototype._scoreNodeRelationship = function(node, definition, score) {
var subNode = null;
if (definition) {
statements = Zotero.RDF.getStatementsMatching(node, definition.predicate, null);
if (statements) {
var bestScore = -9999;
for (var i=0; i<statements.length; i++) {
var statement = statements[i];
// +2 for each match, -1 for each nonmatch
var testScore = -definition.pairs.length;
for (var j=0; j<definition.pairs.length; j++) {
var pair = definition.pairs[j];
if (Zotero.RDF.getStatementsMatching(statement[2], pair[0], pair[1])) testScore += 3;
}
if (testScore > bestScore) {
subNode = statement[2];
bestScore = testScore;
}
}
score += bestScore;
} else if (definition.alwaysAdd) {
score -= definition.pairs.length;
}
}
return [score, subNode];
}
/**
* Get USERITEM and SERIES nodes for this type
*/
Type.prototype.getItemSeriesNodes = function(nodes) {
const seriesDefinition = {"alwaysAdd":true, "predicate":n.dcterms+"isPartOf", "pairs":[[n.rdf+"type", n.bibo+"Series"]]};
// get user item node
var stmt = Zotero.RDF.getStatementsMatching(null, n.res+"resource", nodes[ITEM]);
nodes[USERITEM] = stmt ? stmt[0][0] : nodes[ITEM];
// get ITEM_SERIES node
var tmp = this._scoreNodeRelationship(nodes[ITEM], seriesDefinition, 0);
var score = tmp[0];
var subNode = tmp[1];
//Zotero.debug("got itemSeries with score "+score);
if (score >= 1) nodes[ITEM_SERIES] = subNode;
// get SUBCONTAINER_SERIES node
tmp = this._scoreNodeRelationship(nodes[SUBCONTAINER], seriesDefinition, 0);
score = tmp[0];
subNode = tmp[1];
//Zotero.debug("got subcontainerSeries with score "+score);
if (score >= 1) nodes[CONTAINER_SERIES] = subNode;
// get CONTAINER_SERIES node
tmp = this._scoreNodeRelationship(nodes[CONTAINER], seriesDefinition, 0);
score = tmp[0];
subNode = tmp[1];
//Zotero.debug("got containerSeries with score "+score);
if (score >= 1) nodes[CONTAINER_SERIES] = subNode;
}
/**
* Add triples to relate nodes. Called after all properties have been added, so we know which nodes
* need to be related.
*/
Type.prototype.addNodeRelations = function(nodes) {
// add node relations
var list = [ITEM_SERIES, SUBCONTAINER_SERIES, CONTAINER_SERIES];
for (var h=0; h<list.length; h++) {
var i=list[h];
// don't add duplicate nodes
if (!this[i-3]) continue;
// don't add nodes with no arcs
if (!Zotero.RDF.getArcsOut(nodes[i])) continue;
Zotero.RDF.addStatement(nodes[i], RDF_TYPE, n.bibo+"Series", false);
Zotero.RDF.addStatement(nodes[i-3], n.dcterms+"isPartOf", nodes[i], false);
}
var list = [ITEM, SUBCONTAINER, CONTAINER];
for (var h=0; h<list.length; h++) {
var i=list[h];
if (nodes[i]) {
// find predicate
if (i == ITEM) {
var j = 1;
var predicate = n.res+"resource";
} else if (i == SUBCONTAINER || i == CONTAINER) {
// don't add duplicate nodes
if (!this[i]) continue;
// don't add nodes with no arcs
if (!this[i][0] && !Zotero.RDF.getArcsOut(nodes[i])) {
nodes[i] = nodes[i-1];
continue;
}
var predicate = this[i].predicate;
}
// add type
for (var j=0; j<this[i].pairs.length; j++) {
var pair = this[i].pairs[j];
Zotero.RDF.addStatement(nodes[i], pair[0], pair[1], false)
}
// add relation to parent
for (var j = i-1; j>1; j--) {
if (Zotero.RDF.getResourceURI(nodes[j]) != Zotero.RDF.getResourceURI(nodes[i])) {
Zotero.RDF.addStatement(nodes[j], predicate, nodes[i], false);
break;
}
}
}
}
}
/**
* Create USERITEM/ITEM/CONTAINER/SUBCONTAINER nodes for this type
* @returns {Object} The created nodes
*/
Type.prototype.createNodes = function(item) {
var nodes = {};
nodes[USERITEM] = (item.uri ? item.uri : "#item_"+item.itemID);
// come up with an item node URI
nodes[ITEM] = null;
// try the URL as URI
if (item.url) {
nodes[ITEM] = encodeURI(item.url);
if (usedURIs[nodes[ITEM]]) nodes[ITEM] = null;
}
// try the DOI as URI
if (!nodes[ITEM] && item.DOI) {
var doi = item.DOI;
if (doi.substr(0, 4) == "doi:") {
doi = doi.substr(4);
} else if (doi.substr(0, 8) == "urn:doi:") {
doi = doi.substr(8);
} else if (doi.substr(0, 9) == "info:doi/") {
doi = doi.substr(9);
} else if (doi.substr(0, 18) == "http://dx.doi.org/") {
doi = doi.substr(18);
}
nodes[ITEM] = "info:doi/"+encodeURI(doi);
if (usedURIs[nodes[ITEM]]) nodes[ITEM] = null;
}
// try the ISBN as URI
if (!nodes[ITEM] && item.ISBN) {
var isbn = item.ISBN.split(/, ?| /g)[0];
nodes[ITEM] = "urn:isbn:"+encodeURI(isbn);
if (usedURIs[nodes[ITEM]]) nodes[ITEM] = null;
}
// no suitable item URI; fall back to a blank node
if (!nodes[ITEM]) nodes[ITEM] = Zotero.RDF.newResource();
usedURIs[Zotero.RDF.getResourceURI(nodes[ITEM])] = true;
// attach item node to user item node
Zotero.RDF.addStatement(nodes[USERITEM], RDF_TYPE, n.z+"UserItem", false);
Zotero.RDF.addStatement(nodes[USERITEM], n.res+"resource", nodes[ITEM], false);
// container node
nodes[CONTAINER] = (this[CONTAINER] ? Zotero.RDF.newResource() : nodes[ITEM]);
// subcontainer node
nodes[SUBCONTAINER] = (this[SUBCONTAINER] ? Zotero.RDF.newResource() : nodes[CONTAINER]);
// series nodes
nodes[ITEM_SERIES] = Zotero.RDF.newResource();
nodes[CONTAINER_SERIES] = (this[CONTAINER] ? Zotero.RDF.newResource() : nodes[ITEM_SERIES]);
nodes[SUBCONTAINER_SERIES] = (this[SUBCONTAINER] ? Zotero.RDF.newResource() : nodes[CONTAINER_SERIES]);
return nodes;
}
/**
* A class representing a BIBO-to-Zotero literal property mapping
*/
LiteralProperty = function(field) {
this.field = field;
this.mapping = FIELDS[field];
if (!this.mapping) {
//Zotero.debug("WARNING: unrecognized field "+field+" in Bibliontology RDF; mapping to Zotero namespace");
this.mapping = [ITEM, n.z+field];
}
}
/**
* Maps property from a set of RDF nodes to an item
*/
LiteralProperty.prototype.mapToItem = function(newItem, nodes) {
if (typeof this.mapping[0] == "function") { // function case: triples returned
// check function case
var content = this.mapping[1](nodes);
if (!content) return false;
newItem[this.field] = content;
} else {
var node = nodes[this.mapping[0]];
if (!node) return false;
var statements = getStatementsByDefinition(this.mapping[1], node);
if (!statements) return false;
var content = [];
for (var i=0; i<statements.length; i++) {
content.push(statements[i][2].toString());
}
newItem[this.field] = content.join(",");
}
return true;
}
/**
* Maps property from an item to a set of RDF nodes
*/
LiteralProperty.prototype.mapFromItem = function(item, nodes) {
if (typeof this.mapping[0] == "function") { // function case: triples returned
// check function case
var triples = this.mapping[0](item);
for (i=0; i<triples.length; i++) {
Zotero.RDF.addStatement(nodes[triples[i][0]], triples[i][1], triples[i][2], triples[i][3])
}
} else if (typeof this.mapping[1] == "string") { // string case: simple predicate
Zotero.RDF.addStatement(nodes[this.mapping[0]],
this.mapping[1], item.uniqueFields[this.field], true);
} else { // array case: complex predicate
var blankNode = getBlankNode(nodes[this.mapping[0]],
this.mapping[1][0], this.mapping[1][1], true);
Zotero.RDF.addStatement(blankNode, this.mapping[1][2], item.uniqueFields[this.field], true);
}
}
/**
* A class representing a BIBO-to-Zotero creator mapping
*/
CreatorProperty = function(field) {
this.field = field;
this.mapping = CREATORS[field];
}
/**
* Maps creator from an foaf:Agent
*/
CreatorProperty.prototype.mapToCreator = function(creatorNode, zoteroType) {
//Zotero.debug("mapping "+Zotero.RDF.getResourceURI(creatorNode)+" to a creator");
var lastNameStmt = Zotero.RDF.getStatementsMatching(creatorNode, n.foaf+"surname", null);
if (lastNameStmt) { // look for a person with a last name
creator = {lastName:lastNameStmt[0][2].toString()};
var firstNameStmt = Zotero.RDF.getStatementsMatching(creatorNode, n.foaf+"givenname", null)
|| Zotero.RDF.getStatementsMatching(creatorNode, n.foaf+"givenName", null);
if (firstNameStmt) creator.firstName = firstNameStmt[0][2].toString();
} else {
var nameStmt = Zotero.RDF.getStatementsMatching(creatorNode, n.foaf+"name", null);
if (nameStmt) { // an organization
creator = {lastName:nameStmt[0][2].toString(), fieldMode:1};
} else { // an unnamed entity; ignore it
//Zotero.debug("Dropping unnamed creator "+creatorNode.toString());
return false;
}
}
// birthYear and shortName
var birthStmt = Zotero.RDF.getStatementsMatching(creatorNode, n.foaf+"birthday", null, true);
if (birthStmt) creator.birthYear = birthStmt[2].toString();
var nickStmt = Zotero.RDF.getStatementsMatching(creatorNode, n.foaf+"nick", null, true);
if (nickStmt) creator.shortName = nickStmt[2].toString();
if (this.field == "author") {
// could be another primary creator
var creatorsForType = Zotero.Utilities.getCreatorsForType(zoteroType);
if (creatorsForType.indexOf("author") == -1) {
creator.creatorType = creatorsForType[0];
}
} else {
creator.creatorType = this.field;
}
return creator;
}
/**
* Maps creators from a top-level (ITEM/SUBCONTAINER/CONTAINER/SERIES) node to a list
*/
CreatorProperty.prototype.mapToCreators = function(node, zoteroType) {
var creators = [];
var creatorNodes = [];
var statements = getStatementsByDefinition(this.mapping[2], node);
if (statements) {
for (var i=0; i<statements.length; i++) {
var stmt = statements[i];
var creator = this.mapToCreator(stmt[2], zoteroType);
if (creator) {
creators.push(creator);
creatorNodes.push(stmt[2]);
}
}
}
return [creators, creatorNodes];
}
/**
* Maps property from a Zotero creator array to a set of RDF nodes
*/
CreatorProperty.prototype.mapFromCreator = function(item, creator, nodes) {
var creatorsForType = Zotero.Utilities.getCreatorsForType(item.itemType);
var isPrimary = creatorsForType[0] == this.field;
if (this.mapping) {
var mapping = this.mapping;
} else {
if (isPrimary && creatorsForType.indexOf("author") == -1) {
// treat other primary creators as dcterms:creators
var mapping = CREATORS["author"];
} else {
//Zotero.debug("WARNING: unrecognized creator type "+this.field+" in Bibliontology RDF; mapping to Zotero namespace");
var mapping = [ITEM, AUTHOR_LIST, n.z+this.field];
}
}
var creatorNode = Zotero.RDF.newResource();
if (creator.fieldMode == 1) {
Zotero.RDF.addStatement(creatorNode, RDF_TYPE, n.foaf+"Organization");
if (creator.lastName) Zotero.RDF.addStatement(creatorNode, n.foaf+"name", creator.lastName, true);
} else {
Zotero.RDF.addStatement(creatorNode, RDF_TYPE, n.foaf+"Person");
if (creator.firstName) Zotero.RDF.addStatement(creatorNode, n.foaf+"givenName", creator.firstName, true);
if (creator.lastName) Zotero.RDF.addStatement(creatorNode, n.foaf+"surname", creator.lastName, true);
}
if (creator.birthYear) Zotero.RDF.addStatement(creatorNode, n.foaf+"birthday", creator.birthYear, true);
if (creator.shortName) Zotero.RDF.addStatement(creatorNode, n.foaf+"nick", creator.shortName, true);
// attach creator node
var attachTo = nodes[mapping[0]];
if (typeof mapping[2] == "string") {
var relation = mapping[2];
} else {
var relation = mapping[2][2];
var attachTo = getBlankNode(attachTo, mapping[2][0], mapping[2][1], true);
}
Zotero.RDF.addStatement(attachTo, relation, creatorNode, false);
// get appropriate creator list
var list = mapping[1];
if (list == CONTRIBUTOR_LIST && isPrimary) {
// always attach primary to author list instead of contributor list
list = AUTHOR_LIST;
}
// add to creator list
var creatorList = Zotero.RDF.getStatementsMatching(nodes[mapping[0]], CREATOR_LISTS[list], null);
if (creatorList) {
var creatorList = creatorList[0][2];
} else {
var creatorList = Zotero.RDF.newResource();
Zotero.RDF.newContainer("seq", creatorList);
Zotero.RDF.addStatement(nodes[mapping[0]], CREATOR_LISTS[list], creatorList, false);
}
Zotero.RDF.addContainerElement(creatorList, creatorNode, false);
}
/** IMPORT FUNCTIONS **/
/**
* Gets statements matching a statement definition, if it exists
*/
function getStatementsByDefinition(definition, node) {
var statements = null;
if (typeof definition == "string") { // string case: simple predicate
statements = Zotero.RDF.getStatementsMatching(node, definition, null);
} else { // array case: complex
var blankNode = getBlankNode(node, definition[0], definition[1], false);
if (blankNode) {
statements = Zotero.RDF.getStatementsMatching(blankNode, definition[2], null);
}
}
return statements;
}
function detectImport() {
// look for a bibo item type
let rdfTypes = null;
try {
rdfTypes = Zotero.RDF.getStatementsMatching(null, RDF_TYPE, null);
}
catch (err) {
// probably just not RDF
return false;
}
if (rdfTypes) {
for (var i=0; i<rdfTypes.length; i++) {
if (typeof rdfTypes[i][2] === "object" && Z.RDF.getResourceURI(rdfTypes[i][2]).substr(0, BIBO_NS_LENGTH) == n.bibo) return true;
}
}
return false;
}
function doImport() {
// collapse list of BIBO-only types
var collapsedTypes = {};
for (var unprefixedBiboType in BIBO_TYPES) {
var biboType = n.bibo+unprefixedBiboType;
var type = new Type(BIBO_TYPES[unprefixedBiboType], [[[RDF_TYPE, n.bibo+biboType]], null, null]);
if (!collapsedTypes[biboType]) {
collapsedTypes[biboType] = [type];
} else {
collapsedTypes[biboType].push(type);
}
}
// collapse Zotero-to-BIBO type mappings
for (var zoteroType in TYPES) {
var type = new Type(zoteroType, TYPES[zoteroType]);
for (var i=0; i<TYPES[zoteroType][0].length; i++) {
var pair = TYPES[zoteroType][0][i];
if (!collapsedTypes[pair[1]]) {
collapsedTypes[pair[1]] = [type];
} else {
collapsedTypes[pair[1]].push(type);
}
}
}
// collapse list of field mappings
var collapsedProperties = {1:{}, 2:{}, 3:{}, 4:{}, 5:{}, 6:{}, 7:{}};
var functionProperties = {};
for (var zoteroField in FIELDS) {
if (typeof FIELDS[zoteroField][0] == "function") {
functionProperties[zoteroField] = new LiteralProperty(zoteroField);
} else {
var domain = FIELDS[zoteroField][0];
var predicate = FIELDS[zoteroField][1];
if (typeof predicate == "object") predicate = predicate[0];
var prop = new LiteralProperty(zoteroField);
if (collapsedProperties[domain][predicate]) {
collapsedProperties[domain][predicate].push(prop);
} else {
collapsedProperties[domain][predicate] = [prop];
}
}
}
// collapse list of creators
for (var creatorType in CREATORS) {
var domain = CREATORS[creatorType][0];
var predicate = CREATORS[creatorType][2];
if (typeof predicate == "object") predicate = predicate[0];
var prop = new CreatorProperty(creatorType);
if (collapsedProperties[domain][predicate]) {
collapsedProperties[domain][predicate].unshift(prop);
} else {
collapsedProperties[domain][predicate] = [prop];
}
}
// Go through all type arcs to find items
var itemNode, predicateNode, objectNode;
var rdfTypes = Zotero.RDF.getStatementsMatching(null, RDF_TYPE, null);
var itemNodes = {}, tmp;
for (var i=0; i<rdfTypes.length; i++) {
var rdfType = rdfTypes[i];
tmp = rdfType;
itemNode = tmp[0];
predicateNode = tmp[1];
objectNode = tmp[2];
if (typeof objectNode !== "object") continue;
var uri = Zotero.RDF.getResourceURI(itemNode);
if (!uri) continue;
itemNodes[uri] = itemNode;
}
// Look through found items to see if their rdf:type matches a Zotero item type URI, and if so,
// subject to further processing
for (var h in itemNodes) {
var itemNode = itemNodes[h];
// check whether the relationship to another item precludes us from extracting this as
// top-level
var skip = false;
var arcs = Zotero.RDF.getArcsIn(itemNode);
for (var j=0; j<arcs.length; j++) {
if (SAME_ITEM_RELATIONS.indexOf( arcs[j] ) !== -1) {
skip = true;
break;
}
}
if (skip) continue;
var itemRDFTypes = Zotero.RDF.getStatementsMatching(itemNode, RDF_TYPE, null);
// score types by the number of triples they share with our types
var bestTypeScore = -9999;
var bestType, score, nodes, bestNodes;
for (var j=0; j<itemRDFTypes.length; j++) {
var rdfType = itemRDFTypes[j];
if (typeof rdfType[2] !== "object") continue;
var collapsedTypesForItem = collapsedTypes[Z.RDF.getResourceURI(rdfType[2])];
if (!collapsedTypesForItem) continue;
for (var k=0; k<collapsedTypesForItem.length; k++) {
var type = collapsedTypesForItem[k];
tmp = type.getMatchScore(itemNode);
score = tmp[0];
nodes = tmp[1];
//Zotero.debug("Type "+type.zoteroType+" has score "+score);
// check if this is the best we can do
if (score > bestTypeScore) {
bestTypeScore = score;
bestType = type;
bestNodes = nodes;
}
}
}
// skip if this doesn't fit any type very well
if (bestTypeScore < 1) {
//Zotero.debug("No good type mapping; best type was "+bestType.zoteroType+" with score "+bestTypeScore);
continue;
}
//Zotero.debug("Got item of type "+bestType.zoteroType+" with score "+bestTypeScore);
nodes = bestNodes;
bestType.getItemSeriesNodes(nodes);
// create item
var zoteroType = bestType.zoteroType;
var newItem = new Zotero.Item(zoteroType);
// handle ordinary properties
var allCreators = {}
for (var i in nodes) {
var propertiesHandled = {};
var properties = Zotero.RDF.getArcsOut(nodes[i]);
for (var g=0; g<properties.length; g++) {
var property = properties[g];
// only handle each property once
if (propertiesHandled[property]) continue;
propertiesHandled[property] = true;
//Zotero.debug("handling "+property);
var propertyMappings = collapsedProperties[i][property];
if (propertyMappings) {
for (var k=0; k<propertyMappings.length; k++) {
var propertyMapping = propertyMappings[k];
if (propertyMapping.mapToItem) { // LiteralProperty
propertyMapping.mapToItem(newItem, nodes);
} else if (propertyMapping.mapToCreator) { // CreatorProperty
var creators, creatorNodes;
tmp = propertyMapping.mapToCreators(nodes[i], zoteroType);
creators = tmp[0];
creatorNodes = tmp[1];
if (creators.length) {
for (var j in creators) {
var creatorNodeURI = Zotero.RDF.getResourceURI(creatorNodes[j]);
if (!allCreators[creatorNodeURI]) {
allCreators[creatorNodeURI] = creators[j];
}
}
}
}
}
}
}
}
// handle function properties
for (var j in functionProperties) {
functionProperties[j].mapToItem(newItem, nodes);
}
// handle creators and tags
var creatorLists = {};
var creatorsAdded = {};
for (var i in nodes) {
// take DC subjects as tags
var statements = Zotero.RDF.getStatementsMatching(nodes[i], n.dcterms+"subject", null);
for (var j=0; j<statements.length; j++) {
var stmt = statements[j];
// if attached to the user item, it's a user tag; otherwise, an automatic tag
newItem.tags.push({tag:stmt[2], type:(i == USERITEM ? 0 : 1)});
}
// also take ctags as tags
var statements = Zotero.RDF.getStatementsMatching(nodes[i], n.ctag+"tagged", null);
for (var j=0; j<statements.length; j++) {
var stmt = statements[j];
var tag = {type:0};
// AutoTags are automatic tags
var types = Zotero.RDF.getStatementsMatching(stmt[2], n.rdf+"type", null);
for (var k=0; k<types.length; k++) {
var type = types[k];
var uri = Zotero.RDF.getResourceURI(type[2]);
if ([n.ctag+"AutoTag", n.ctag+"AuthorTag"].indexOf(uri) != -1) tag.type = 1;
break;
}
// labels are tag content
var labels = Zotero.RDF.getStatementsMatching(stmt[2], n.ctag+"label", null);
if (labels.length) {
tag.tag = labels[0][2];
newItem.tags.push(tag);
}
}
for (var j in CREATOR_LISTS) {
var statements = Zotero.RDF.getStatementsMatching(nodes[i], CREATOR_LISTS[j], null);
for (var k=0; k<statements.length; k++) {
var stmt = statements[k];
var creatorListURI = Zotero.RDF.getResourceURI(stmt[2]);
if (creatorLists[creatorListURI]) continue;
creatorLists[creatorListURI] = true;
var creatorNodes = Zotero.RDF.getContainerElements(stmt[2]);
for (var l=0; l<creatorNodes.length; l++) {
var creatorNode = creatorNodes[l];
var creatorNodeURI = Zotero.RDF.getResourceURI(creatorNode);
if (!creatorsAdded[creatorNodeURI]) {
creatorsAdded[creatorNodeURI] = true;
if (allCreators[creatorNodeURI]) {
// just add to creators list
newItem.creators.push(allCreators[creatorNodeURI]);
} else {
// creator not already processed, use default for this list type
if (j == AUTHOR_LIST) {
//Zotero.debug("WARNING: creator in authorList lacks relationship to item in Bibliontology RDF; treating as primary creator");
var prop = new CreatorProperty("author");
} else if (j == EDITOR_LIST) {
//Zotero.debug("WARNING: creator in editorList lacks relationship to item in Bibliontology RDF; treating as editor");
var prop = new CreatorProperty("editor");
} else {
//Zotero.debug("WARNING: creator in contributorList lacks relationship to item in Bibliontology RDF; treating as contributor");
var prop = new CreatorProperty("contributor");
}
var creator = prop.mapToCreator(creatorNode, zoteroType);
if (creator) newItem.creators.push(creator);
}
}
}
}
}
}
for (var creatorNodeURI in allCreators) {
if (!creatorsAdded[creatorNodeURI]) {
newItem.creators.push(allCreators[creatorNodeURI]);
}
}
newItem.complete();
}
}
/** EXPORT FUNCTIONS **/
var usedURIs = {};
function doExport() {
// add namespaces
for (var i in n) Zotero.RDF.addNamespace(i, n[i]);
// compile references and create URIs
var item;
var items = {};
while (item = Zotero.nextItem()) {
// Skip standalone notes
if (item.itemType == 'note') {
continue;
}
items[item.itemID] = item;
}
var autoTags = {};
var userTags = {};
// now that we've collected our items, start building the RDF
for (var h in items) {
var item = items[h];
// set type on item node
var type = new Type(item.itemType, TYPES[item.itemType]);
var nodes = type.createNodes(item);
// add fields
for (var field in item.uniqueFields) {
if (!item.uniqueFields[field] && item.uniqueFields[field] !== 0) continue;
var property = new LiteralProperty(field);
property.mapFromItem(item, nodes);
}
//Zotero.debug("fields added");
// add creators
var creatorLists = [];
for (var i=0; i<item.creators.length; i++) {
var creator = item.creators[i];
// create creator
var property = new CreatorProperty(creator.creatorType);
property.mapFromCreator(item, creator, nodes);
}
//Zotero.debug("creators added");
// add tags
for (var i=0; i<item.tags.length; i++) {
var tag = item.tags[i];
var tagCollection = tag.type == 0 ? userTags : autoTags;
if (tagCollection[tag.tag]) {
var tagNode = tagCollection[tag.tag];
} else {
var tagNode = Zotero.RDF.newResource();
Zotero.RDF.addStatement(tagNode, n.rdf+"type",
(tag.type == 0 ? n.ctag+"UserTag" : n.ctag+"AutoTag"), false);
Zotero.RDF.addStatement(tagNode, n.ctag+"label", tag.tag, true);
tagCollection[tag.tag] = tagNode;
}
Zotero.RDF.addStatement(nodes[USERITEM], n.ctag+"tagged", tagNode, false);
}
type.addNodeRelations(nodes);
//Zotero.debug("relations added");
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "import",
"input": "<rdf:RDF\n xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"\n xmlns:res=\"http://purl.org/vocab/resourcelist/schema#\"\n xmlns:z=\"http://www.zotero.org/namespaces/export#\"\n xmlns:bibo=\"http://purl.org/ontology/bibo/\"\n xmlns:dcterms=\"http://purl.org/dc/terms/\"\n xmlns:foaf=\"http://xmlns.com/foaf/0.1/\">\n <z:UserItem rdf:about=\"http://zotero.org/users/96641/items/XW66MVF4\">\n <res:resource rdf:resource=\"http://libreas.eu/ausgabe29/05kim/\"/>\n <z:accessDate>2017-05-28 14:08:38</z:accessDate>\n <z:repository>libreas.eu</z:repository>\n </z:UserItem>\n <bibo:AcademicArticle rdf:about=\"http://libreas.eu/ausgabe29/05kim/\">\n <bibo:uri>http://libreas.eu/ausgabe29/05kim/</bibo:uri>\n <dcterms:language>de</dcterms:language>\n <dcterms:abstract>Im Folgenden soll aufgezeigt werden, wie derzeit das Literaturverwaltungsprogramm Zotero innerhalb des Index Theologicus genutzt wird, um unselbstständige Literatur in einem bibliothekarischen Katalogisierungssystem zu erfassen. Die modulare und flexible Architektur der Open Source Software erlaubt es, die bereits kollaborativ zusammengetragene Programmierarbeit zur Datenextraktion mitzunutzen. Das vorgestellte semiautomatische Verfahren bringt auch bei der Verknüpfung von Normdaten erhebliche Vorteile für die Medienbearbeitung. </br> <b>Schlüsselwörter</b>: Literaturverwaltungsprogramm, Zotero, Katalogisierung, Unselbständige Werke, Aufsatzliteratur, Index Theologicus, Online-Bibliographie, WinIBW, Fachinformationsdienst Theologie <hr> This article presents an approach to use the reference management software Zotero within the theological article database Index Theologicus to catalogue article metadata for a library management system. Zotero's Open Source nature and flexible architecture allowed us to seamlessly reuse the vast amount of data extraction routines collaboratively developed for the software. We will show how the semi-automatic workflow we developed will make authority linking fun again. </br> <b>Keywords:</b> Reference Management System, Zotero, Cataloguing, Journal articles, Index Theologicus, Theological database, Academic Information Services for Theology</dcterms:abstract>\n <dcterms:title>Semiautomatische Katalogisierung und Normdatenverknüpfung mit Zotero im Index Theologicus</dcterms:title>\n <dcterms:creator rdf:nodeID=\"n5\"/>\n <bibo:authorList>\n <rdf:Seq><rdf:li rdf:nodeID=\"n5\"/><rdf:li rdf:nodeID=\"n7\"/></rdf:Seq>\n </bibo:authorList>\n <dcterms:creator rdf:nodeID=\"n7\"/>\n <dcterms:isPartOf>\n <bibo:Issue>\n <bibo:issue>29</bibo:issue>\n <dcterms:date>2016</dcterms:date>\n <dcterms:isPartOf>\n <bibo:Journal>\n <dcterms:title>LIBREAS. Library Ideas</dcterms:title>\n <bibo:issn>1860-7950</bibo:issn>\n </bibo:Journal>\n </dcterms:isPartOf>\n </bibo:Issue>\n </dcterms:isPartOf>\n </bibo:AcademicArticle>\n <foaf:Person rdf:nodeID=\"n5\">\n <foaf:givenname>Timotheus Chang-whae</foaf:givenname>\n <foaf:surname>Kim</foaf:surname>\n </foaf:Person>\n <foaf:Person rdf:nodeID=\"n7\">\n <foaf:givenName>Philipp</foaf:givenName>\n <foaf:surname>Zumstein</foaf:surname>\n </foaf:Person>\n</rdf:RDF>\n",
"items": [
{
"itemType": "journalArticle",
"title": "Semiautomatische Katalogisierung und Normdatenverknüpfung mit Zotero im Index Theologicus",
"creators": [
{
"lastName": "Kim",
"firstName": "Timotheus Chang-whae"
},
{
"lastName": "Zumstein",
"firstName": "Philipp"
}
],
"date": "2016",
"ISSN": "1860-7950",
"abstractNote": "Im Folgenden soll aufgezeigt werden, wie derzeit das Literaturverwaltungsprogramm Zotero innerhalb des Index Theologicus genutzt wird, um unselbstständige Literatur in einem bibliothekarischen Katalogisierungssystem zu erfassen. Die modulare und flexible Architektur der Open Source Software erlaubt es, die bereits kollaborativ zusammengetragene Programmierarbeit zur Datenextraktion mitzunutzen. Das vorgestellte semiautomatische Verfahren bringt auch bei der Verknüpfung von Normdaten erhebliche Vorteile für die Medienbearbeitung. </br> <b>Schlüsselwörter</b>: Literaturverwaltungsprogramm, Zotero, Katalogisierung, Unselbständige Werke, Aufsatzliteratur, Index Theologicus, Online-Bibliographie, WinIBW, Fachinformationsdienst Theologie <hr> This article presents an approach to use the reference management software Zotero within the theological article database Index Theologicus to catalogue article metadata for a library management system. Zotero's Open Source nature and flexible architecture allowed us to seamlessly reuse the vast amount of data extraction routines collaboratively developed for the software. We will show how the semi-automatic workflow we developed will make authority linking fun again. </br> <b>Keywords:</b> Reference Management System, Zotero, Cataloguing, Journal articles, Index Theologicus, Theological database, Academic Information Services for Theology",
"issue": "29",
"language": "de",
"libraryCatalog": "libreas.eu",
"publicationTitle": "LIBREAS. Library Ideas",
"url": "http://libreas.eu/ausgabe29/05kim/",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
{"dataMode":"xml\/dom","getCollections":"true"}{"exportNotes":false,"Export Tags":false,"Generate XML IDs":true,"Full TEI Document":false,"Export Collections":false}25Stefan Majewskixml// ********************************************************************
//
// tei-zotero-translator. Zotero 2 to TEI P5 exporter.
//
// Copyright (C) 2010 Stefan Majewski <xml@stefanmajewski.eu>
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
// *********************************************************************
//
// This script does fairly well with papers, theses, websites and
// books. Some item properties, important for the more exotic
// publication types, are still missing. That means, the first 30 are
// implemented, the rest may be added when I need them. If you like to
// see some particular item property and you also have a basic idea
// how to represent them in TEI (without breaking the, to me, more
// important ones), please contact me or send a patch.
//
// <analytic> vs <monogr> Both elements are used. The script tries to
// figure out where which information might be appropriately placed. I
// hope this works.
//
// Zotero.addOption("exportNotes", false);
// Zotero.addOption("generateXMLIds", true);
var ns = {
tei: "http://www.tei-c.org/ns/1.0",
xml: "http://www.w3.org/XML/1998/namespace"
};
var exportedXMLIds = {};
var generatedItems = {};
var allItems = {};
// replace formatting with TEI tags
function replaceFormatting(title) {
var titleText = title;
// italics
titleText = titleText.replace(/<i>/g, '<hi rend="italics">');
titleText = titleText.replace(/<\/i>/g, '</hi>');
// bold
titleText = titleText.replace(/<b>/g, '<hi rend="bold">');
titleText = titleText.replace(/<\/b>/g, '</hi>');
// subscript
titleText = titleText.replace(/<sub>/g, '<hi rend="sub">');
titleText = titleText.replace(/<\/sub>/g, '</hi>');
// superscript
titleText = titleText.replace(/<sup>/g, '<hi rend="sup">');
titleText = titleText.replace(/<\/sup>/g, '</hi>');
// small caps
titleText = titleText.replace(/<span style="font-variant:\s*small-caps;">(.*?)<\/span>/g, '<hi rend="smallcaps">$1</hi>');
titleText = titleText.replace(/<sc>/g, '<hi rend="smallcaps">');
titleText = titleText.replace(/<\/sc>/g, '</hi>');
// no capitalization
titleText = titleText.replace(/<span class="nocase">(.*?)<\/span>/g, '<hi rend="nocase">$1</hi>');
return titleText;
}
function genXMLId(item) {
// use Better BibTeX for Zotero citation key if available
if (item.extra) {
item.extra = item.extra.replace(/(?:^|\n)citation key\s*:\s*([^\s]+)(?:\n|$)/i, (m, citationKey) => {
item.citationKey = citationKey;
return '\n';
}).trim();
}
if (item.citationKey) return item.citationKey;
var xmlid = '';
if (item.creators && item.creators[0] && (item.creators[0].lastName || item.creators[0].name)) {
if (item.creators[0].lastName) {
xmlid = item.creators[0].lastName;
}
if (item.creators[0].name) {
xmlid = item.creators[0].name;
}
if (item.date) {
var date = Zotero.Utilities.strToDate(item.date);
if (date.year) {
xmlid += date.year;
}
}
// Replace space, tabulations, colon, punctuation, parenthesis and apostrophes by "_"
xmlid = xmlid.replace(/([ \t[\]:\u00AD\u0021-\u002C\u2010-\u2021])+/g, "_");
// Remove any non xml NCName characters
// Namestart = ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] |
// [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF]
// | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] |
// [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] |
// [#x10000-#xEFFFF]
// Name = NameStartChar | "-" | "." | [0-9] | #xB7 |
// [#x0300-#x036F] | [#x203F-#x2040]
xmlid = xmlid.replace(/^[^A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u10000-\uEFFFF]/, "");
xmlid = xmlid.replace(/[^-A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u10000-\uEFFFF.0-9\u00B7\u0300-\u036F\u203F-\u2040]/g, "");
}
else {
// "zoteroItem_item.key" as value for entries without creator
var str = item.uri;
var n = str.lastIndexOf('/');
var result = str.substring(n + 1);
xmlid += 'zoteroItem_' + result;
}
// this is really inefficient
var curXmlId = xmlid;
if (exportedXMLIds[curXmlId]) {
// append characters to make xml:id unique
// a-z aa-az ba-bz
var charA = 97;
var charZ = 122;
var firstId = xmlid + "a";
// reset id of previous date-only item to <date> + "a";
if (exportedXMLIds[curXmlId]
&& !exportedXMLIds[firstId]) {
exportedXMLIds[curXmlId].setAttributeNS(ns.xml, "xml:id", firstId);
exportedXMLIds[firstId] = exportedXMLIds[curXmlId];
}
// then start from b
for (var i = charA + 1; exportedXMLIds[curXmlId]; i++) {
curXmlId = xmlid + String.fromCharCode(i);
if (i == charZ) {
i = charA;
xmlid += String.fromCharCode(charA);
}
}
xmlid = curXmlId;
}
// set in main loop
// exportedXMLIds[xmlid] = true;
return xmlid;
}
function generateItem(item, teiDoc) {
// fixme not all conferencepapers are analytic!
var analyticItemTypes = {
journalArticle: true,
bookSection: true,
magazineArticle: true,
newspaperArticle: true,
conferencePaper: true,
encyclopediaArticle: true,
dictionaryEntry: true,
webpage: true
};
var isAnalytic = !!analyticItemTypes[item.itemType];
var bibl = teiDoc.createElementNS(ns.tei, "biblStruct");
bibl.setAttribute("type", item.itemType);
if (Zotero.getOption("Generate XML IDs")) {
var xmlid;
if (!generatedItems[item.uri]) {
xmlid = genXMLId(item);
bibl.setAttributeNS(ns.xml, "xml:id", xmlid);
exportedXMLIds[xmlid] = bibl;
}
else {
xmlid = "#" + generatedItems[item.uri].getAttributeNS(ns.xml, "id");
var myXmlid = "zoteroItem_" + item.uri;
bibl.setAttribute("sameAs", xmlid);
bibl.setAttributeNS(ns.xml, "xml:id", myXmlid);
exportedXMLIds[myXmlid] = bibl;
}
// create attribute for Zotero item URI
bibl.setAttribute("corresp", item.uri);
}
generatedItems[item.uri] = bibl;
/** CORE FIELDS **/
var monogr = teiDoc.createElementNS(ns.tei, "monogr");
var analytic = null;
var series = null;
var title, shortTitle, idno, edition, date, note;
// create title or monogr
if (isAnalytic) {
analytic = teiDoc.createElementNS(ns.tei, "analytic");
bibl.appendChild(analytic);
bibl.appendChild(monogr);
var analyticTitle = teiDoc.createElementNS(ns.tei, "title");
analyticTitle.setAttribute("level", "a");
analytic.appendChild(analyticTitle);
if (item.title) {
analyticTitle.appendChild(teiDoc.createTextNode(replaceFormatting(item.title)));
}
// A DOI is presumably for the article, not the journal.
if (item.DOI) {
idno = teiDoc.createElementNS(ns.tei, "idno");
idno.setAttribute("type", "DOI");
idno.appendChild(teiDoc.createTextNode(item.DOI));
analytic.appendChild(idno);
}
// publication title
var publicationTitle = item.bookTitle || item.proceedingsTitle || item.encyclopediaTitle || item.dictionaryTitle || item.publicationTitle || item.websiteTitle;
if (publicationTitle) {
var pubTitle = teiDoc.createElementNS(ns.tei, "title");
if (item.itemType == "journalArticle") {
pubTitle.setAttribute("level", "j");
}
else {
pubTitle.setAttribute("level", "m");
}
pubTitle.appendChild(teiDoc.createTextNode(replaceFormatting(publicationTitle)));
monogr.appendChild(pubTitle);
}
// short title
if (item.shortTitle) {
shortTitle = teiDoc.createElementNS(ns.tei, "title");
shortTitle.setAttribute("type", "short");
shortTitle.appendChild(teiDoc.createTextNode(item.shortTitle));
analytic.appendChild(shortTitle);
}
}
else {
bibl.appendChild(monogr);
if (item.title) {
title = teiDoc.createElementNS(ns.tei, "title");
title.setAttribute("level", "m");
title.appendChild(teiDoc.createTextNode(replaceFormatting(item.title)));
monogr.appendChild(title);
}
else if (!item.conferenceName) {
title = teiDoc.createElementNS(ns.tei, "title");
monogr.appendChild(title);
}
// short title
if (item.shortTitle) {
shortTitle = teiDoc.createElementNS(ns.tei, "title");
shortTitle.setAttribute("type", "short");
shortTitle.appendChild(teiDoc.createTextNode(item.shortTitle));
monogr.appendChild(shortTitle);
}
// A DOI where there's no analytic must be for the monogr.
if (item.DOI) {
idno = teiDoc.createElementNS(ns.tei, "idno");
idno.setAttribute("type", "DOI");
idno.appendChild(teiDoc.createTextNode(item.DOI));
analytic.appendChild(idno);
}
}
// add name of conference
if (item.conferenceName) {
var conferenceName = teiDoc.createElementNS(ns.tei, "title");
conferenceName.setAttribute("type", "conferenceName");
conferenceName.appendChild(teiDoc.createTextNode(replaceFormatting(item.conferenceName)));
monogr.appendChild(conferenceName);
}
// itemTypes in Database do unfortunately not match fields
// of item
if (item.series || item.seriesTitle) {
series = teiDoc.createElementNS(ns.tei, "series");
bibl.appendChild(series);
if (item.series) {
title = teiDoc.createElementNS(ns.tei, "title");
title.setAttribute("level", "s");
title.appendChild(teiDoc.createTextNode(replaceFormatting(item.series)));
series.appendChild(title);
}
if (item.seriesTitle) {
var seriesTitle = teiDoc.createElementNS(ns.tei, "title");
seriesTitle.setAttribute("level", "s");
seriesTitle.setAttribute("type", "alternative");
seriesTitle.appendChild(teiDoc.createTextNode(replaceFormatting(item.seriesTitle)));
series.appendChild(seriesTitle);
}
if (item.seriesText) {
var seriesText = teiDoc.createElementNS(ns.tei, "note");
seriesText.setAttribute("type", "description");
seriesText.appendChild(teiDoc.createTextNode(item.seriesText));
series.appendChild(seriesText);
}
if (item.seriesNumber) {
var seriesNumber = teiDoc.createElementNS(ns.tei, "biblScope");
seriesNumber.setAttribute("unit", "volume");
seriesNumber.appendChild(teiDoc.createTextNode(item.seriesNumber));
series.appendChild(seriesNumber);
}
}
// Other canonical ref nos come right after the title(s) in monogr.
if (item.ISBN) {
idno = teiDoc.createElementNS(ns.tei, "idno");
idno.setAttribute("type", "ISBN");
idno.appendChild(teiDoc.createTextNode(item.ISBN));
monogr.appendChild(idno);
}
if (item.ISSN) {
idno = teiDoc.createElementNS(ns.tei, "idno");
idno.setAttribute("type", "ISSN");
idno.appendChild(teiDoc.createTextNode(item.ISSN));
monogr.appendChild(idno);
}
if (item.callNumber) {
idno = teiDoc.createElementNS(ns.tei, "idno");
idno.setAttribute("type", "callNumber");
idno.appendChild(teiDoc.createTextNode(item.callNumber));
monogr.appendChild(idno);
}
// multivolume works
if (item.numberOfVolumes) {
var volumes = teiDoc.createElementNS(ns.tei, "extent");
volumes.appendChild(teiDoc.createTextNode(item.numberOfVolumes));
monogr.appendChild(volumes);
}
// creators are all people only remotely involved into the creation of
// a resource
for (let creator of item.creators) {
var curCreator = '';
var curRespStmt = null;
var type = creator.creatorType;
if (type == "author") {
curCreator = teiDoc.createElementNS(ns.tei, "author");
}
else if (type == "editor") {
curCreator = teiDoc.createElementNS(ns.tei, "editor");
}
else if (type == "seriesEditor") {
curCreator = teiDoc.createElementNS(ns.tei, "editor");
}
else if (type == "bookAuthor") {
curCreator = teiDoc.createElementNS(ns.tei, "author");
}
else {
curRespStmt = teiDoc.createElementNS(ns.tei, "respStmt");
var resp = teiDoc.createElementNS(ns.tei, "resp");
resp.appendChild(teiDoc.createTextNode(type));
curRespStmt.appendChild(resp);
curCreator = teiDoc.createElementNS(ns.tei, "persName");
curRespStmt.appendChild(curCreator);
}
// add the names of a particular creator
if (creator.firstName) {
var forename = teiDoc.createElementNS(ns.tei, "forename");
forename.appendChild(teiDoc.createTextNode(creator.firstName));
curCreator.appendChild(forename);
}
if (creator.lastName) {
var surname = null;
if (creator.firstName) {
surname = teiDoc.createElementNS(ns.tei, "surname");
}
else {
surname = teiDoc.createElementNS(ns.tei, "name");
}
surname.appendChild(teiDoc.createTextNode(creator.lastName));
curCreator.appendChild(surname);
}
if (creator.name) {
let name = teiDoc.createElementNS(ns.tei, "name");
name.appendChild(teiDoc.createTextNode(creator.name));
curCreator.appendChild(name);
}
// make sure the right thing gets added
if (curRespStmt) {
curCreator = curRespStmt;
}
// decide where the creator shall appear
if (type == "seriesEditor" && series) {
series.appendChild(curCreator);
}
else if (isAnalytic && (type != 'editor' && type != 'bookAuthor')) {
// assuming that only authors go here
analytic.appendChild(curCreator);
}
else {
monogr.appendChild(curCreator);
}
}
if (item.edition) {
edition = teiDoc.createElementNS(ns.tei, "edition");
edition.appendChild(teiDoc.createTextNode(item.edition));
monogr.appendChild(edition);
}
// software
else if (item.versionNumber) {
edition = teiDoc.createElementNS(ns.tei, "edition");
edition.appendChild(teiDoc.createTextNode(item.versionNumber));
monogr.appendChild(edition);
}
// create the imprint
var imprint = teiDoc.createElementNS(ns.tei, "imprint");
monogr.appendChild(imprint);
if (item.place) {
var pubPlace = teiDoc.createElementNS(ns.tei, "pubPlace");
pubPlace.appendChild(teiDoc.createTextNode(item.place));
imprint.appendChild(pubPlace);
}
if (item.volume) {
var volume = teiDoc.createElementNS(ns.tei, "biblScope");
volume.setAttribute("unit", "volume");
volume.appendChild(teiDoc.createTextNode(item.volume));
imprint.appendChild(volume);
}
if (item.issue) {
var issue = teiDoc.createElementNS(ns.tei, "biblScope");
issue.setAttribute("unit", "issue");
issue.appendChild(teiDoc.createTextNode(item.issue));
imprint.appendChild(issue);
}
if (item.section) {
var section = teiDoc.createElementNS(ns.tei, "biblScope");
section.setAttribute("unit", "chapter");
section.appendChild(teiDoc.createTextNode(item.section));
imprint.appendChild(section);
}
if (item.pages) {
var pages = teiDoc.createElementNS(ns.tei, "biblScope");
pages.setAttribute("unit", "page");
pages.appendChild(teiDoc.createTextNode(item.pages));
imprint.appendChild(pages);
}
if (item.publisher) {
var publisher = teiDoc.createElementNS(ns.tei, "publisher");
publisher.appendChild(teiDoc.createTextNode(item.publisher));
imprint.appendChild(publisher);
}
if (item.date) {
date = Zotero.Utilities.strToDate(item.date);
var imprintDate = teiDoc.createElementNS(ns.tei, "date");
if (date.year) {
imprintDate.appendChild(teiDoc.createTextNode(date.year));
}
else {
imprintDate.appendChild(teiDoc.createTextNode(item.date));
}
imprint.appendChild(imprintDate);
}
// If no date exists, add an empty date node so that spec minimum requirement for one imprint element is met
else {
date = teiDoc.createElementNS(ns.tei, "date");
imprint.appendChild(date);
}
if (item.accessDate) {
note = teiDoc.createElementNS(ns.tei, "note");
note.setAttribute("type", "accessed");
note.appendChild(teiDoc.createTextNode(item.accessDate));
imprint.appendChild(note);
}
if (item.url) {
note = teiDoc.createElementNS(ns.tei, "note");
note.setAttribute("type", "url");
note.appendChild(teiDoc.createTextNode(item.url));
imprint.appendChild(note);
}
if (item.thesisType) {
note = teiDoc.createElementNS(ns.tei, "note");
note.setAttribute("type", "thesisType");
note.appendChild(teiDoc.createTextNode(item.thesisType));
imprint.appendChild(note);
}
// export notes
if (item.notes && Zotero.getOption("exportNotes")) {
for (let singleNote of item.notes) {
// do only some basic cleaning of the html
// strip HTML tags
var noteText = Zotero.Utilities.cleanTags(singleNote.note);
// unescape remaining entities -> no double escapes
noteText = Zotero.Utilities.unescapeHTML(noteText);
note = teiDoc.createElementNS(ns.tei, "note");
note.appendChild(teiDoc.createTextNode(noteText));
bibl.appendChild(note);
}
}
// export tags, if available
if (Zotero.getOption("Export Tags") && item.tags && item.tags.length > 0) {
var tags = teiDoc.createElementNS(ns.tei, "note");
tags.setAttribute("type", "tags");
for (let singleTag of item.tags) {
var tag = teiDoc.createElementNS(ns.tei, "note");
tag.setAttribute("type", "tag");
tag.appendChild(teiDoc.createTextNode(singleTag.tag));
tags.appendChild(tag);
}
bibl.appendChild(tags);
}
return bibl;
}
function generateCollection(collection, teiDoc) {
var listBibl;
var children = collection.children ? collection.children : collection.descendents;
if (children.length > 0) {
listBibl = teiDoc.createElementNS(ns.tei, "listBibl");
var colHead = teiDoc.createElementNS(ns.tei, "head");
colHead.appendChild(teiDoc.createTextNode(collection.name));
listBibl.appendChild(colHead);
for (var i = 0; i < children.length; i++) {
var child = children[i];
if (child.type == "collection") {
listBibl.appendChild(generateCollection(child, teiDoc));
}
else if (allItems[child.id]) {
listBibl.appendChild(generateItem(allItems[child.id], teiDoc));
}
}
}
return listBibl;
}
function generateTEIDocument(listBibls, teiDoc) {
var text = teiDoc.createElementNS(ns.tei, "text");
var body = teiDoc.createElementNS(ns.tei, "body");
teiDoc.documentElement.appendChild(text);
text.appendChild(body);
for (var i = 0; i < listBibls.length; i++) {
body.appendChild(listBibls[i]);
}
return teiDoc;
}
function doExport() {
Zotero.debug("starting TEI-XML export");
Zotero.setCharacterSet("utf-8");
Zotero.debug("TEI-XML Exporting items");
// Initialize XML Doc
var parser = new DOMParser();
var teiDoc // <TEI/>
= parser.parseFromString('<TEI xmlns="http://www.tei-c.org/ns/1.0"><teiHeader><fileDesc><titleStmt><title>Exported from Zotero</title></titleStmt><publicationStmt><p>unpublished</p></publicationStmt><sourceDesc><p>Generated from Zotero database</p></sourceDesc></fileDesc></teiHeader></TEI>', 'application/xml');
var item = null;
while (item = Zotero.nextItem()) { // eslint-disable-line no-cond-assign
// Skip standalone notes
if (item.itemType == 'note') {
continue;
}
allItems[item.uri] = item;
}
var collection = Zotero.nextCollection();
var listBibls = [];
if (Zotero.getOption("Export Collections") && collection) {
var curListBibl = generateCollection(collection, teiDoc);
if (curListBibl) {
listBibls.push(curListBibl);
}
while (collection = Zotero.nextCollection()) { // eslint-disable-line no-cond-assign
curListBibl = generateCollection(collection, teiDoc);
if (curListBibl) {
listBibls.push(curListBibl);
}
}
}
else {
var listBibl = teiDoc.createElementNS(ns.tei, "listBibl");
for (let i in allItems) {
item = allItems[i];
// skip attachments
if (item.itemType == "attachment") {
continue;
}
listBibl.appendChild(generateItem(item, teiDoc));
}
listBibls.push(listBibl);
}
var outputElement;
if (Zotero.getOption("Full TEI Document")) {
outputElement = generateTEIDocument(listBibls, teiDoc);
}
else if (listBibls.length > 1) {
outputElement = teiDoc.createElementNS(ns.tei, "listBibl");
for (let i = 0; i < listBibls.length; i++) {
outputElement.appendChild(listBibls[i]);
}
}
else if (listBibls.length == 1) {
outputElement = listBibls[0];
}
else {
outputElement = teiDoc.createElement("empty");
}
// write to file.
Zotero.write('<?xml version="1.0" encoding="UTF-8"?>\n');
var serializer = new XMLSerializer();
Zotero.write(serializer.serializeToString(outputElement));
}
{"async":true}100Simon Kornblithjson/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2022 Simon Kornblith and Sebastian Karcher
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function parseInput() {
var str, json = "";
// Read in the whole file at once, since we can't easily parse a JSON stream. The
// chunk size here is pretty arbitrary, although larger chunk sizes may be marginally
// faster. We set it to 1MB.
while ((str = Z.read(1048576)) !== false) json += str;
try {
return JSON.parse(json);
}
catch (e) {
Zotero.debug(e);
}
return false;
}
function detectImport() {
/* eslint-disable camelcase */
const CSL_TYPES = { article: true, "article-journal": true, "article-magazine": true,
"article-newspaper": true, bill: true, book: true, broadcast: true,
chapter: true, classic: true, collection: true, dataset: true, document: true,
entry: true, "entry-dictionary": true, "entry-encyclopedia": true, event: true,
figure: true, graphic: true, hearing: true, interview: true, legal_case: true,
legislation: true, manuscript: true, map: true, motion_picture: true,
musical_score: true, pamphlet: true, "paper-conference": true, patent: true,
performance: true, personal_communication: true, periodical: true, post: true,
"post-weblog": true, regulation: true, report: true, review: true, "review-book": true,
song: true, speech: true, standard: true, thesis: true, treaty: true, webpage: true };
/* eslint-enable camelcase*/
var parsedData = parseInput();
if (!parsedData) return false;
if (typeof parsedData !== "object") return false;
if (!(parsedData instanceof Array)) parsedData = [parsedData];
for (var i = 0; i < parsedData.length; i++) {
var item = parsedData[i];
if (typeof item !== "object" || !item.type || !(item.type in CSL_TYPES)) {
return false;
}
}
return true;
}
function doImport() {
if (typeof Promise == 'undefined') {
startImport(
function () {},
function (e) {
throw e;
}
);
}
else {
return new Promise(function (resolve, reject) {
startImport(resolve, reject);
});
}
return false;
}
function startImport(resolve, reject) {
try {
var parsedData = parseInput();
if (!parsedData) resolve();
if (!Array.isArray(parsedData)) parsedData = [parsedData];
importNext(parsedData, resolve, reject);
}
catch (e) {
reject(e);
}
}
function importNext(data, resolve, reject) {
try {
var d;
while (d = data.shift()) { // eslint-disable-line no-cond-assign
var item = new Z.Item();
// Default to 'article' (Document) if no type given. 'type' is required in CSL-JSON,
// but some DOI registration agencies provide bad data, and this is better than failing.
// (itemFromCSLJSON() will already default to 'article' for unknown 'type' values.)
//
// Technically this should go in the DOI Content Negotation translator, but it's easier
// to do this here after the JSON has been parsed, and it might benefit other translators.
//
// This is just for imports from other translators. File/clipboard imports without
// 'type' still won't work, because a valid 'type' is required in detectImport().
//
// https://forums.zotero.org/discussion/85273/error-importing-dois-via-add-item-by-identifier
if (!d.type) {
d.type = 'article';
}
ZU.itemFromCSLJSON(item, d);
var maybePromise = item.complete();
if (maybePromise) {
maybePromise.then(function () {
importNext(data, resolve, reject);
});
return;
}
}
}
catch (e) {
reject(e);
}
resolve();
}
function doExport() {
var item, data = [];
while (item = Z.nextItem()) { // eslint-disable-line no-cond-assign
if (item.extra) {
item.extra = item.extra.replace(/(?:^|\n)citation key\s*:\s*([^\s]+)(?:\n|$)/i, (m, citationKey) => { // eslint-disable-line no-loop-func
item.citationKey = citationKey;
return '\n';
}).trim();
}
var cslItem = ZU.itemToCSLJSON(item);
if (item.citationKey) cslItem.id = item.citationKey;
data.push(cslItem);
}
Z.write(JSON.stringify(data, null, "\t"));
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "import",
"input": "[\n\t{\n\t\t\"id\": \"http://zotero.org/users/96641/items/BDQRTS3T\",\n\t\t\"type\": \"book\",\n\t\t\"title\": \"Stochastic biomathematical models: With applications to neuronal modeling\",\n\t\t\"collection-title\": \"Lecture notes in mathematics\",\n\t\t\"publisher\": \"Springer\",\n\t\t\"publisher-place\": \"Heidelberg\",\n\t\t\"volume\": \"2058\",\n\t\t\"number-of-pages\": \"206\",\n\t\t\"event-place\": \"Heidelberg\",\n\t\t\"ISBN\": \"978-3-642-32156-6\",\n\t\t\"language\": \"en\",\n\t\t\"author\": [\n\t\t\t{\n\t\t\t\t\"family\": \"Bachar\",\n\t\t\t\t\"given\": \"Mostafa\"\n\t\t\t}\n\t\t],\n\t\t\"issued\": {\n\t\t\t\"date-parts\": [\n\t\t\t\t[\n\t\t\t\t\t\"2013\",\n\t\t\t\t\t1,\n\t\t\t\t\t1\n\t\t\t\t]\n\t\t\t]\n\t\t}\n\t}\n]",
"items": [
{
"itemType": "book",
"title": "Stochastic biomathematical models: With applications to neuronal modeling",
"creators": [
{
"lastName": "Bachar",
"firstName": "Mostafa",
"creatorType": "author"
}
],
"date": "January 1, 2013",
"ISBN": "978-3-642-32156-6",
"itemID": "http://zotero.org/users/96641/items/BDQRTS3T",
"language": "en",
"numPages": "206",
"place": "Heidelberg",
"publisher": "Springer",
"series": "Lecture notes in mathematics",
"volume": "2058",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Frank Bennett^https?://(www\.)?heinonline\.org/HOL/(LuceneSearch|Page|IFLPMetaData|AuthorProfile)\?/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2015-2016 Frank Bennett
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
/*
***************
** Utilities **
***************
*/
// Get any search results from current page
// Used in detectWeb() and doWeb()
function getSearchResults(doc) {
var results = doc.getElementsByClassName("lucene_search_result_b"),
items = {},
found = false;
for (var i = 0, ilen = results.length; i < ilen; i++) {
var url = getXPathStr("href", results[i], './/a[1]');
var title = getXPathStr("textContent", results[i], './/a[1]');
title = ZU.trimInternal(title);
// title = title.replace(/\s*\[[^\]]*\]$/, '');
if (!title || !url) continue;
items[url] = title;
found = true;
}
return found ? items : false;
}
// Get the string value of the first object matching XPath
function getXPathStr(attr, elem, path) {
var res = ZU.xpath(elem, path);
res = res.length ? res[0][attr] : '';
return res ? res : '';
}
// Extract query values to keys on an object
function extractQueryValues(url) {
var ret = {};
ret.base = url.replace(/[a-zA-Z]+\?.*/, "");
var query = url.replace(/.*?\?/, "");
query = query.split("&");
for (var i = 0, ilen = query.length; i < ilen; i++) {
var pair = query[i].split("=");
ret[pair[0]] = pair[1];
}
return ret;
}
// Not all pages have a downloadable PDF
function translateRIS(ris, pdfURL) {
var trans = Zotero.loadTranslator('import');
trans.setTranslator('32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7');// https://github.com/zotero/translators/blob/master/RIS.js
trans.setString(ris);
trans.setHandler('itemDone', function (obj, item) {
if (pdfURL) {
item.attachments = [{
title: "Full Text PDF",
url: pdfURL,
mimeType: "application/pdf"
}];
}
item.complete();
});
trans.getTranslatorObject(function (transObject) {
transObject.options.fieldMap = {
VO: "volume"
};
transObject.doImport();
});
}
function translateCOinS(COinS) {
var item = new Zotero.Item();
Zotero.Utilities.parseContextObject(COinS, item);
item.complete();
}
// Build URL for RIS, and for PDF if available
function scrapePage(doc, url) {
// We need the id= and the handle= of the current target item.
// From that, we can build URL for RIS.
// Check for an RIS popup link in the page.
var risPopupLink = getXPathStr("href", doc, '//form[@id="pagepicker"]//a[contains(@href, "PrintRequest")][1]');
if (risPopupLink) {
// Get the id from pageSelect.
var pageID = doc.getElementById("pageSelect").value;
// Get other parameters from the page URL.
var docParams = extractQueryValues(url);
// Compose the RIS link.
var risURL = docParams.base
+ "CitationFile?kind=ris&handle=" + docParams.handle
+ "&id=" + pageID
+ "&base=js";
ZU.doGet(risURL, function (ris) {
// the PDF URL gives us a page that will refresh itself to the PDF.
var pdfPageURL = attr(doc, '[data-original-title*="Download PDF"]', 'href');
if (pdfPageURL) {
pdfPageURL = docParams.base + pdfPageURL;
// Z.debug(pdfPageURL)
ZU.processDocuments(pdfPageURL, function (pdfDoc) {
// Call to pdfPageURL prepares PDF for download via META refresh URL
var pdfURL = null;
var m = pdfDoc.querySelector('meta[http-equiv="Refresh"]');
// Z.debug(pdfPage)
// Z.debug(m)
if (m) {
var refreshURL;
var parts = m.getAttribute('content').split(/;\s*url=/);
if (parts.length === 2) {
refreshURL = parts[1].trim().replace(/^'(.+)'/, '$1');
}
else {
refreshURL = m.getAttribute('url');
}
pdfURL = docParams.base + refreshURL;
}
translateRIS(ris, pdfURL);
});
}
else {
translateRIS(ris);
}
}, null);
}
else {
// No RIS available in page, try COinS
var COinS = getXPathStr("title", doc, '//span[contains(@class, "Z3988")]');
if (COinS) {
translateCOinS(COinS);
}
}
}
/*
*********
** API **
*********
*/
function detectWeb(doc, url) {
var COinS = getXPathStr("title", doc, '//span[contains(@class, "Z3988")]');
var RIS = getXPathStr("href", doc, '//form[@id="pagepicker"]//a[contains(@href, "PrintRequest")][1]');
if (url.includes("/LuceneSearch?") || url.includes("/AuthorProfile?")) {
if (getSearchResults(doc)) {
return "multiple";
}
}
else if (COinS || RIS) {
return "journalArticle";
}
return false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) === "multiple") {
Zotero.selectItems(getSearchResults(doc), function (items) {
if (!items) {
return;
}
var urls = [];
for (var i in items) {
urls.push(i);
}
ZU.processDocuments(urls, scrapePage);
});
}
else {
scrapePage(doc, url);
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://heinonline.org/HOL/IFLPMetaData?type=article&id=53254&collection=iflp&men_tab=srchresults&set_as_cursor=8",
"items": [
{
"itemType": "journalArticle",
"title": "Initiative test.",
"creators": [
{
"firstName": "D.",
"lastName": "Andrews",
"creatorType": "author"
}
],
"date": "2007",
"libraryCatalog": "HeinOnline",
"pages": "38",
"publicationTitle": "International Financial Law Review",
"url": "https://heinonline.org/HOL/IFLPMetaData?type=article&id=53254&collection=iflp",
"volume": "26",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://heinonline.org/HOL/LuceneSearch?terms=test&collection=all&searchtype=advanced&typea=text&tabfrom=&submit=Go&all=true",
"items": "multiple"
},
{
"type": "web",
"url": "https://heinonline.org/HOL/Page?handle=hein.journals/alterlj18&div=22&start_page=76&collection=journals&set_as_cursor=4&men_tab=srchresults",
"items": [
{
"itemType": "journalArticle",
"title": "Means Test or Mean Test Pension Entitlements for Farmers",
"creators": [
{
"lastName": "Voyce",
"firstName": "Malcolm",
"creatorType": "author"
}
],
"date": "1993",
"issue": "2",
"journalAbbreviation": "Alternative L.J.",
"language": "eng",
"libraryCatalog": "HeinOnline",
"pages": "76-85",
"publicationTitle": "Alternative Law Journal",
"url": "https://heinonline.org/HOL/P?h=hein.journals/alterlj18&i=80",
"volume": "18",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://heinonline.org/HOL/AuthorProfile?action=edit&search_name=de%20Silva%20de%20Alwis%2C%20Rangita&collection=journals",
"items": "multiple"
}
]
/** END TEST CASES **/
280Sebastian Karcher/(article|fullarticle|advance-article|advance-article-abstract|article-abstract|book|edited-volume)(/|\.aspx)|search-results?|\/issue(/|s\.aspx|$)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2020-2022 Sebastian Karcher and Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
let articleRegex = /\/(article|fullarticle|advance-article|advance-article-abstract|article-abstract|chapter|chapter-abstract)(\/|\.aspx)/;
if (articleRegex.test(url)) {
if (getArticleId(doc)) {
if (url.includes("/chapter/") || url.includes("/chapter-abstract/")) {
return "bookSection";
}
else {
return "journalArticle";
}
}
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
// First one is issue, 2nd one search results
var rows = doc.querySelectorAll('#ArticleList h5.item-title>a, .al-title a[href*="article"], .al-article-items > .customLink > a[href*="article"], a[class="tocLink"]');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function getArticleId(doc) {
let id = attr(doc, '.citation-download-wrap input[name="resourceId"]', "value");
if (!id) {
id = attr(doc, 'a[data-article-id]', 'data-article-id');
}
if (!id) {
id = attr(doc, '[data-resource-id]', 'data-resource-id');
}
// Z.debug(id)
return id;
}
function scrape(doc, url) {
let id = getArticleId(doc);
let type = attr(doc, '.citation-download-wrap input[name="resourceType"]', "value");
// Z.debug(type)
if (!type) {
if (detectWeb(doc, url) == "bookSection") {
type = "5";
}
else {
type = "3";
}
}
let chapterTitle = text(doc, '.chapter-title-without-label');
var risURL = "/Citation/Download?resourceId=" + id + "&resourceType=" + type + "&citationFormat=0";
// Z.debug(risURL);
var pdfURL = attr(doc, 'a.article-pdfLink', 'href');
// Z.debug("pdfURL: " + pdfURL);
ZU.doGet(risURL, function (text) {
if (text.includes('We are sorry, but we are experiencing unusual traffic at this time.')) {
throw new Error('Rate-limited');
}
// Z.debug(text);
var translator = Zotero.loadTranslator("import");
translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7");
translator.setString(text);
translator.setHandler("itemDone", function (obj, item) {
if (item.pages) {
// if item.pages only spans one page (4-4), replace the range
// with a single page number (4).
item.pages = item.pages.trim().replace(/^([^-]+)-\1$/, '$1');
}
if (item.itemType == "bookSection" && chapterTitle) {
item.title = chapterTitle;
}
if (pdfURL) {
item.attachments.push({
url: pdfURL,
title: "Full Text PDF",
mimeType: "application/pdf"
});
}
item.attachments.push({
title: "Snapshot",
document: doc
});
item.complete();
});
translator.translate();
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://academic.oup.com/isq/article-abstract/57/1/128/1796931?redirectedFrom=fulltext",
"items": [
{
"itemType": "journalArticle",
"title": "Assessing the Causes of Capital Account Liberalization: How Measurement Matters1",
"creators": [
{
"lastName": "Karcher",
"firstName": "Sebastian",
"creatorType": "author"
},
{
"lastName": "Steinberg",
"firstName": "David A.",
"creatorType": "author"
}
],
"date": "March 1, 2013",
"DOI": "10.1111/isqu.12001",
"ISSN": "0020-8833",
"abstractNote": "Why do countries open their economies to global capital markets? A number of recent articles have found that two types of factors encourage politicians to liberalize their capital accounts: strong macroeconomic fundamentals and political pressure from proponents of open capital markets. However, these conclusions need to be re-evaluated because the most commonly used measure of capital account openness, Chinn and Ito's (2002) Kaopen index, suffers from systematic measurement error. We modify the Chinn–Ito variable and replicate two studies (Brooks and Kurtz 2007; Chwieroth 2007) to demonstrate that our improved measure overturns some prior findings. Some political variables have stronger effects on capital account policy than previously recognized, while macroeconomic fundamentals are less important than previous research suggests.",
"issue": "1",
"journalAbbreviation": "International Studies Quarterly",
"libraryCatalog": "Silverchair",
"pages": "128-137",
"publicationTitle": "International Studies Quarterly",
"shortTitle": "Assessing the Causes of Capital Account Liberalization",
"url": "https://doi.org/10.1111/isqu.12001",
"volume": "57",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://academic.oup.com/isq/article/64/2/419/5808900",
"items": [
{
"itemType": "journalArticle",
"title": "Civil Conflict and Agenda-Setting Speed in the United Nations Security Council",
"creators": [
{
"lastName": "Binder",
"firstName": "Martin",
"creatorType": "author"
},
{
"lastName": "Golub",
"firstName": "Jonathan",
"creatorType": "author"
}
],
"date": "June 1, 2020",
"DOI": "10.1093/isq/sqaa017",
"ISSN": "0020-8833",
"abstractNote": "The United Nations Security Council (UNSC) can respond to a civil conflict only if that conflict first enters the Council's agenda. Some conflicts reach the Council's agenda within days after they start, others after years (or even decades), and some never make it. So far, only a few studies have looked at the crucial UNSC agenda-setting stage, and none have examined agenda-setting speed. To fill this important gap, we develop and test a novel theoretical framework that combines insights from realist and constructivist theory with lessons from institutionalist theory and bargaining theory. Applying survival analysis to an original dataset, we show that the parochial interests of the permanent members (P-5) matter, but they do not determine the Council's agenda-setting speed. Rather, P-5 interests are constrained by normative considerations and concerns for the Council's organizational mission arising from the severity of a conflict (in terms of spillover effects and civilian casualties); by the interests of the widely ignored elected members (E-10); and by the degree of preference heterogeneity among both the P-5 and the E-10. Our findings contribute to a better understanding of how the United Nations (UN) works, and they have implications for the UN's legitimacy.",
"issue": "2",
"journalAbbreviation": "International Studies Quarterly",
"libraryCatalog": "Silverchair",
"pages": "419-430",
"publicationTitle": "International Studies Quarterly",
"url": "https://doi.org/10.1093/isq/sqaa017",
"volume": "64",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://academic.oup.com/isq/advance-article-abstract/doi/10.1093/isq/sqaa085/5999080?redirectedFrom=fulltext",
"items": [
{
"itemType": "journalArticle",
"title": "Angling for Influence: Institutional Proliferation in Development Banking",
"creators": [
{
"lastName": "Pratt",
"firstName": "Tyler",
"creatorType": "author"
}
],
"date": "November 23, 2020",
"DOI": "10.1093/isq/sqaa085",
"ISSN": "0020-8833",
"abstractNote": "Why do states build new international organizations (IOs) in issue areas where many institutions already exist? Prevailing theories of institutional creation emphasize their ability to resolve market failures, but adding new IOs can increase uncertainty and rule inconsistency. I argue that institutional proliferation occurs when existing IOs fail to adapt to shifts in state power. Member states expect decision-making rules to reflect their underlying power; when it does not, they demand greater influence in the organization. Subsequent bargaining over the redistribution of IO influence often fails due to credibility and information problems. As a result, under-represented states construct new organizations that provide them with greater institutional control. To test this argument, I examine the proliferation of multilateral development banks since 1944. I leverage a novel identification strategy rooted in the allocation of World Bank votes at Bretton Woods to show that the probability of institutional proliferation is higher when power is misaligned in existing institutions. My results suggest that conflict over shifts in global power contribute to the fragmentation of global governance.",
"issue": "sqaa085",
"journalAbbreviation": "International Studies Quarterly",
"libraryCatalog": "Silverchair",
"publicationTitle": "International Studies Quarterly",
"shortTitle": "Angling for Influence",
"url": "https://doi.org/10.1093/isq/sqaa085",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://rupress.org/jcb/article-abstract/220/1/e202004184/211570/Katanin-p60-like-1-sculpts-the-cytoskeleton-in?redirectedFrom=fulltext",
"items": [
{
"itemType": "journalArticle",
"title": "Katanin p60-like 1 sculpts the cytoskeleton in mechanosensory cilia",
"creators": [
{
"lastName": "Sun",
"firstName": "Landi",
"creatorType": "author"
},
{
"lastName": "Cui",
"firstName": "Lihong",
"creatorType": "author"
},
{
"lastName": "Liu",
"firstName": "Zhen",
"creatorType": "author"
},
{
"lastName": "Wang",
"firstName": "Qixuan",
"creatorType": "author"
},
{
"lastName": "Xue",
"firstName": "Zhaoyu",
"creatorType": "author"
},
{
"lastName": "Wu",
"firstName": "Menghua",
"creatorType": "author"
},
{
"lastName": "Sun",
"firstName": "Tianhui",
"creatorType": "author"
},
{
"lastName": "Mao",
"firstName": "Decai",
"creatorType": "author"
},
{
"lastName": "Ni",
"firstName": "Jianquan",
"creatorType": "author"
},
{
"lastName": "Pastor-Pareja",
"firstName": "José Carlos",
"creatorType": "author"
},
{
"lastName": "Liang",
"firstName": "Xin",
"creatorType": "author"
}
],
"date": "December 2, 2020",
"DOI": "10.1083/jcb.202004184",
"ISSN": "0021-9525",
"abstractNote": "Mechanoreceptor cells develop a specialized cytoskeleton that plays structural and sensory roles at the site of mechanotransduction. However, little is known about how the cytoskeleton is organized and formed. Using electron tomography and live-cell imaging, we resolve the 3D structure and dynamics of the microtubule-based cytoskeleton in fly campaniform mechanosensory cilia. Investigating the formation of the cytoskeleton, we find that katanin p60-like 1 (kat-60L1), a neuronal type of microtubule-severing enzyme, serves two functions. First, it amplifies the mass of microtubules to form the dense microtubule arrays inside the sensory cilia. Second, it generates short microtubules that are required to build the nanoscopic cytoskeleton at the mechanotransduction site. Additional analyses further reveal the functional roles of Patronin and other potential factors in the local regulatory network. In all, our results characterize the specialized cytoskeleton in fly external mechanosensory cilia at near-molecular resolution and provide mechanistic insights into how it is formed.",
"issue": "e202004184",
"journalAbbreviation": "Journal of Cell Biology",
"libraryCatalog": "Silverchair",
"publicationTitle": "Journal of Cell Biology",
"url": "https://doi.org/10.1083/jcb.202004184",
"volume": "220",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://ashpublications.org/blood/article-abstract/doi/10.1182/blood.2019004397/474417/Preleukemic-and-Leukemic-Evolution-at-the-Stem?redirectedFrom=fulltext",
"items": [
{
"itemType": "journalArticle",
"title": "Preleukemic and Leukemic Evolution at the Stem Cell Level",
"creators": [
{
"lastName": "Stauber",
"firstName": "Jacob",
"creatorType": "author"
},
{
"lastName": "Greally",
"firstName": "John",
"creatorType": "author"
},
{
"lastName": "Steidl",
"firstName": "Ulrich",
"creatorType": "author"
}
],
"date": "December 4, 2020",
"DOI": "10.1182/blood.2019004397",
"ISSN": "0006-4971",
"abstractNote": "Hematological malignancies are an aggregate of diverse populations of cells that arise following a complex process of clonal evolution and selection. Recent approaches have facilitated the study of clonal populations and their evolution over time across multiple phenotypic cell populations. In this review, we present current concepts on the role of clonal evolution in leukemic initiation, disease progression, and relapse. We highlight recent advances and unanswered questions on the contribution of the hemopoietic stem cell population on these processes.",
"issue": "blood.2019004397",
"journalAbbreviation": "Blood",
"libraryCatalog": "Silverchair",
"publicationTitle": "Blood",
"url": "https://doi.org/10.1182/blood.2019004397",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://ashpublications.org/search-results?page=1&q=blood",
"items": "multiple"
},
{
"type": "web",
"url": "https://academic.oup.com/isq/search-results?page=1&q=test&fl_SiteID=5394&SearchSourceType=1&allJournals=1",
"items": "multiple"
},
{
"type": "web",
"url": "https://rupress.org/jcb/issue",
"items": "multiple"
},
{
"type": "web",
"url": "https://ashpublications.org/hematology/issue/2019/1",
"items": "multiple"
},
{
"type": "web",
"url": "https://jamanetwork.com/journals/jama/fullarticle/2645104",
"items": [
{
"itemType": "journalArticle",
"title": "Clinicopathological Evaluation of Chronic Traumatic Encephalopathy in Players of American Football",
"creators": [
{
"lastName": "Mez",
"firstName": "Jesse",
"creatorType": "author"
},
{
"lastName": "Daneshvar",
"firstName": "Daniel H.",
"creatorType": "author"
},
{
"lastName": "Kiernan",
"firstName": "Patrick T.",
"creatorType": "author"
},
{
"lastName": "Abdolmohammadi",
"firstName": "Bobak",
"creatorType": "author"
},
{
"lastName": "Alvarez",
"firstName": "Victor E.",
"creatorType": "author"
},
{
"lastName": "Huber",
"firstName": "Bertrand R.",
"creatorType": "author"
},
{
"lastName": "Alosco",
"firstName": "Michael L.",
"creatorType": "author"
},
{
"lastName": "Solomon",
"firstName": "Todd M.",
"creatorType": "author"
},
{
"lastName": "Nowinski",
"firstName": "Christopher J.",
"creatorType": "author"
},
{
"lastName": "McHale",
"firstName": "Lisa",
"creatorType": "author"
},
{
"lastName": "Cormier",
"firstName": "Kerry A.",
"creatorType": "author"
},
{
"lastName": "Kubilus",
"firstName": "Caroline A.",
"creatorType": "author"
},
{
"lastName": "Martin",
"firstName": "Brett M.",
"creatorType": "author"
},
{
"lastName": "Murphy",
"firstName": "Lauren",
"creatorType": "author"
},
{
"lastName": "Baugh",
"firstName": "Christine M.",
"creatorType": "author"
},
{
"lastName": "Montenigro",
"firstName": "Phillip H.",
"creatorType": "author"
},
{
"lastName": "Chaisson",
"firstName": "Christine E.",
"creatorType": "author"
},
{
"lastName": "Tripodis",
"firstName": "Yorghos",
"creatorType": "author"
},
{
"lastName": "Kowall",
"firstName": "Neil W.",
"creatorType": "author"
},
{
"lastName": "Weuve",
"firstName": "Jennifer",
"creatorType": "author"
},
{
"lastName": "McClean",
"firstName": "Michael D.",
"creatorType": "author"
},
{
"lastName": "Cantu",
"firstName": "Robert C.",
"creatorType": "author"
},
{
"lastName": "Goldstein",
"firstName": "Lee E.",
"creatorType": "author"
},
{
"lastName": "Katz",
"firstName": "Douglas I.",
"creatorType": "author"
},
{
"lastName": "Stern",
"firstName": "Robert A.",
"creatorType": "author"
},
{
"lastName": "Stein",
"firstName": "Thor D.",
"creatorType": "author"
},
{
"lastName": "McKee",
"firstName": "Ann C.",
"creatorType": "author"
}
],
"date": "2017-07-25",
"DOI": "10.1001/jama.2017.8334",
"ISSN": "0098-7484",
"abstractNote": "Players of American football may be at increased risk of long-term neurological conditions, particularly chronic traumatic encephalopathy (CTE).To determine the neuropathological and clinical features of deceased football players with CTE.Case series of 202 football players whose brains were donated for research. Neuropathological evaluations and retrospective telephone clinical assessments (including head trauma history) with informants were performed blinded. Online questionnaires ascertained athletic and military history.Participation in American football at any level of play.Neuropathological diagnoses of neurodegenerative diseases, including CTE, based on defined diagnostic criteria; CTE neuropathological severity (stages I to IV or dichotomized into mild [stages I and II] and severe [stages III and IV]); informant-reported athletic history and, for players who died in 2014 or later, clinical presentation, including behavior, mood, and cognitive symptoms and dementia.Among 202 deceased former football players (median age at death, 66 years [interquartile range, 47-76 years]), CTE was neuropathologically diagnosed in 177 players (87%; median age at death, 67 years [interquartile range, 52-77 years]; mean years of football participation, 15.1 [SD, 5.2]), including 0 of 2 pre–high school, 3 of 14 high school (21%), 48 of 53 college (91%), 9 of 14 semiprofessional (64%), 7 of 8 Canadian Football League (88%), and 110 of 111 National Football League (99%) players. Neuropathological severity of CTE was distributed across the highest level of play, with all 3 former high school players having mild pathology and the majority of former college (27 [56%]), semiprofessional (5 [56%]), and professional (101 [86%]) players having severe pathology. Among 27 participants with mild CTE pathology, 26 (96%) had behavioral or mood symptoms or both, 23 (85%) had cognitive symptoms, and 9 (33%) had signs of dementia. Among 84 participants with severe CTE pathology, 75 (89%) had behavioral or mood symptoms or both, 80 (95%) had cognitive symptoms, and 71 (85%) had signs of dementia.In a convenience sample of deceased football players who donated their brains for research, a high proportion had neuropathological evidence of CTE, suggesting that CTE may be related to prior participation in football.",
"issue": "4",
"journalAbbreviation": "JAMA",
"libraryCatalog": "Silverchair",
"pages": "360-370",
"publicationTitle": "JAMA",
"url": "https://doi.org/10.1001/jama.2017.8334",
"volume": "318",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://pubs.geoscienceworld.org/georef/search-results?page=1&q=test&SearchSourceType=1",
"items": "multiple"
},
{
"type": "web",
"url": "https://jov.arvojournals.org/article.aspx?articleid=2503433",
"items": [
{
"itemType": "journalArticle",
"title": "Testing models of peripheral encoding using metamerism in an oddity paradigm",
"creators": [
{
"lastName": "Wallis",
"firstName": "Thomas S. A.",
"creatorType": "author"
},
{
"lastName": "Bethge",
"firstName": "Matthias",
"creatorType": "author"
},
{
"lastName": "Wichmann",
"firstName": "Felix A.",
"creatorType": "author"
}
],
"date": "2016-03-11",
"DOI": "10.1167/16.2.4",
"ISSN": "1534-7362",
"abstractNote": "Most of the visual field is peripheral, and the periphery encodes visual input with less fidelity compared to the fovea. What information is encoded, and what is lost in the visual periphery? A systematic way to answer this question is to determine how sensitive the visual system is to different kinds of lossy image changes compared to the unmodified natural scene. If modified images are indiscriminable from the original scene, then the information discarded by the modification is not important for perception under the experimental conditions used. We measured the detectability of modifications of natural image structure using a temporal three-alternative oddity task, in which observers compared modified images to original natural scenes. We consider two lossy image transformations, Gaussian blur and Portilla and Simoncelli texture synthesis. Although our paradigm demonstrates metamerism (physically different images that appear the same) under some conditions, in general we find that humans can be capable of impressive sensitivity to deviations from natural appearance. The representations we examine here do not preserve all the information necessary to match the appearance of natural scenes in the periphery.",
"issue": "2",
"journalAbbreviation": "Journal of Vision",
"libraryCatalog": "Silverchair",
"pages": "4",
"publicationTitle": "Journal of Vision",
"url": "https://doi.org/10.1167/16.2.4",
"volume": "16",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://jov.arvojournals.org/issues.aspx?issueid=934904&journalid=178#issueid=934904",
"items": "multiple"
},
{
"type": "web",
"url": "https://academic.oup.com/book/26783/chapter/195715678",
"items": [
{
"itemType": "bookSection",
"title": "Statistical inference with probabilistic graphical models",
"creators": [
{
"lastName": "Shah",
"firstName": "Devavrat",
"creatorType": "author"
},
{
"lastName": "Krzakala",
"firstName": "Florent",
"creatorType": "editor"
},
{
"lastName": "Ricci-Tersenghi",
"firstName": "Federico",
"creatorType": "editor"
},
{
"lastName": "Zdeborova",
"firstName": "Lenka",
"creatorType": "editor"
},
{
"lastName": "Zecchina",
"firstName": "Riccardo",
"creatorType": "editor"
},
{
"lastName": "Tramel",
"firstName": "Eric W.",
"creatorType": "editor"
},
{
"lastName": "Cugliandolo",
"firstName": "Leticia F.",
"creatorType": "editor"
}
],
"date": "2015-12-01",
"ISBN": "9780198743736",
"abstractNote": "This chapter introduces graphical models as a powerful tool to derive efficient algorithms for inference problems. When dealing with complex interdependent variables, inference problems may become of huge complexity. In this context, the structure of the variables is of great interest. In this chapter, directed and undirected graphical models are first defined, before some crucial results are stated, such as the Hammersley–Clifford theorem of Markov random fields and the junction tree property aimed at finding groupings under which a graphical model becomes a tree. Taking advantage of the structure of the variables, belief propagation is then described, including two particular instances: the sum–product and max–sum algorithms. In the final section, the learning problem is addressed in three different contexts: parameter learning, graphical model learning, and latent graphical model learning.",
"bookTitle": "Statistical Physics, Optimization, Inference, and Message-Passing Algorithms: Lecture Notes of the Les Houches School of Physics: Special Issue, October 2013",
"extra": "DOI: 10.1093/acprof:oso/9780198743736.003.0001",
"libraryCatalog": "Silverchair",
"pages": "0",
"publisher": "Oxford University Press",
"url": "https://doi.org/10.1093/acprof:oso/9780198743736.003.0001",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://academic.oup.com/book/26783",
"items": "multiple"
},
{
"type": "web",
"url": "https://pubs.geoscienceworld.org/books/book/2212/chapter-abstract/123622472/Understanding-subsurface-fluvial-architecture-from?redirectedFrom=fulltext",
"items": [
{
"itemType": "bookSection",
"title": "Understanding subsurface fluvial architecture from a combination of geological well test models and well test data",
"creators": [
{
"lastName": "Corbett",
"firstName": "Patrick William Michael",
"creatorType": "author"
},
{
"lastName": "Duarte",
"firstName": "Gleyden Lucila Benítez",
"creatorType": "author"
},
{
"lastName": "Corbett",
"firstName": "P. W. M.",
"creatorType": "editor"
},
{
"lastName": "Owen",
"firstName": "A.",
"creatorType": "editor"
},
{
"lastName": "Hartley",
"firstName": "A. J.",
"creatorType": "editor"
},
{
"lastName": "Pla-Pueyo",
"firstName": "S.",
"creatorType": "editor"
},
{
"lastName": "Barreto",
"firstName": "D.",
"creatorType": "editor"
},
{
"lastName": "Hackney",
"firstName": "C.",
"creatorType": "editor"
},
{
"lastName": "Kape",
"firstName": "S. J.",
"creatorType": "editor"
}
],
"date": "2019-12-02",
"ISBN": "9781786204318",
"abstractNote": "Two decades of geological modelling have resulted in the ability to study single-well geological models at a sufficiently high resolution to generate synthetic well test responses from numerical simulations in realistic geological models covering a range of fluvial styles. These 3D subsurface models are useful in aiding our understanding and mapping of the geological variation (as quantified by porosity and permeability contrasts) in the near-wellbore region. The building and analysis of these models enables many workflow steps, from matching well test data to improving history-matching. Well testing also has a key potential role in reservoir characterization for an improved understanding of the near-wellbore subsurface architecture in fluvial systems. Developing an understanding of well test responses from simple through increasingly more complex geological scenarios leads to a realistic, real-life challenge: a well test in a small fluvial reservoir. The geological well testing approach explained here, through a recent fluvial case study in South America, is considered to be useful in improving our understanding of reservoir performance. This approach should lead to more geologically and petrophysically consistent models, and to geologically assisted models that are both more correct and quicker to match to history, and thus, ultimately, to more useful reservoir models. It also allows the testing of a more complex geological model through the well test response.",
"bookTitle": "River to Reservoir: Geoscience to Engineering",
"extra": "DOI: 10.1144/SP488.7",
"libraryCatalog": "Silverchair",
"pages": "0",
"publisher": "Geological Society of London",
"url": "https://doi.org/10.1144/SP488.7",
"volume": "488",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://academic.oup.com/edited-volume/28005",
"items": "multiple"
}
]
/** END TEST CASES **/
280Sebastian Karcher^https?://elcomercio\.pe/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2022 Sebsatian Karcher
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
async function detectWeb(doc, url) {
if (doc.getElementsByClassName('story').length) {
return 'newspaperArticle';
}
// Search results don't work; excluding
else if (!url.includes("buscar") && getSearchResults(doc, true)) {
return 'multiple';
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('h2.fs-wi__title > a, h2 > a.story-item__title');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
async function doWeb(doc, url) {
if (await detectWeb(doc, url) == 'multiple') {
let items = await Zotero.selectItems(getSearchResults(doc, false));
if (items) {
await Promise.all(
Object.keys(items)
.map(url => requestDocument(url).then(scrape))
);
}
}
else {
await scrape(doc, url);
}
}
async function scrape(doc, url = doc.location.href) {
var item = new Zotero.Item("newspaperArticle");
let authors = doc.getElementsByClassName('s-aut__n');
// Most authors in El Comercio appear to have two last names, one first name;
for (let author of authors) {
author = author.textContent;
let authorName = author.match(/^(.+?)\s(.+)$/);
if (!authorName || author == 'Redacción EC' || author.includes("Agencia")) {
item.creators.push({ lastName: author, creatorType: "author", fieldMode: 1 });
}
else {
let firstName = authorName[1];
let lastName = authorName[2];
item.creators.push({ firstName: firstName, lastName: lastName, creatorType: "author" });
}
}
let tags = attr('meta[name="keywords"]', 'content');
tags = tags.split(/\s*,\s*/);
for (let tag of tags) {
item.tags.push(tag);
}
item.attachments.push({ document: doc, title: "Article Snapshot" });
item.title = text('h1', doc);
item.date = ZU.strToISO(attr('meta[property="article:published_time"]', 'content'));
item.url = url;
item.abstractNote = attr('meta[name="DC.description"]', 'content', doc);
item.language = "es-PE";
item.ISSN = "1605-3052";
item.place = "Lima";
item.publicationTitle = "El Comercio";
// item.section = 'News';
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://elcomercio.pe/mundo/latinoamerica/nueva-constitucion-chile-aprobar-o-rechazar-el-desafio-de-la-nueva-constitucion-chilena-gabriel-boric-plebiscito-de-salida-noticia/?ref=ecr",
"items": [
{
"itemType": "newspaperArticle",
"title": "Aprobar o rechazar: el desafío de la nueva Constitución chilena",
"creators": [
{
"firstName": "Gisella",
"lastName": "López Lenci",
"creatorType": "author"
}
],
"date": "2022-08-21",
"ISSN": "1605-3052",
"abstractNote": "Tras el estallido social del 2019, los chilenos se pusieron de acuerdo en que ya no quieren la vigente Carta Magna, pero las encuestas muestran que están lejos de estar entusiasmados con el texto elaborado por la Convención Constitucional, y por la que deberán votar en solo dos semanas.",
"language": "es-PE",
"libraryCatalog": "El Comercio (Perú)",
"place": "Lima",
"publicationTitle": "El Comercio",
"shortTitle": "Aprobar o rechazar",
"url": "https://elcomercio.pe/mundo/latinoamerica/nueva-constitucion-chile-aprobar-o-rechazar-el-desafio-de-la-nueva-constitucion-chilena-gabriel-boric-plebiscito-de-salida-noticia/?ref=ecr",
"attachments": [
{
"title": "Article Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Chile"
},
{
"tag": "Gabriel Boric"
},
{
"tag": "Nueva Constitución"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://elcomercio.pe/politica/yenifer-paredes-poder-judicial-evalua-36-meses-de-prision-preventiva-contra-cunada-de-pedro-castillo-este-domingo-21-de-agosto-video-ministerio-publico-rmmn-noticia/",
"items": [
{
"itemType": "newspaperArticle",
"title": "Poder Judicial reprograma audiencia por pedido de 36 meses de prisión preventiva contra Yenifer Paredes",
"creators": [
{
"lastName": "Redacción EC",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "2022-08-21",
"ISSN": "1605-3052",
"abstractNote": "El Poder Judicial evaluará este domingo 21 de agosto el pedido de la Fiscalía de 36 meses de prisión preventiva en contra de la cuñada del presidente Pedro Castillo, Yenifer Paredes.",
"language": "es-PE",
"libraryCatalog": "El Comercio (Perú)",
"place": "Lima",
"publicationTitle": "El Comercio",
"url": "https://elcomercio.pe/politica/yenifer-paredes-poder-judicial-evalua-36-meses-de-prision-preventiva-contra-cunada-de-pedro-castillo-este-domingo-21-de-agosto-video-ministerio-publico-rmmn-noticia/",
"attachments": [
{
"title": "Article Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Ministerio Público"
},
{
"tag": "Pedro Castillo"
},
{
"tag": "Poder Judicial"
},
{
"tag": "Yenifer Paredes"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://elcomercio.pe/mundo/latinoamerica/chile-existe-una-tendencia-a-rechazar-nueva-constitucion-en-chile-revelan-los-ultimos-sondeos-gabriel-boric-rmmn-noticia/",
"items": [
{
"itemType": "newspaperArticle",
"title": "Existe una tendencia a rechazar nueva Constitución en Chile, revelan los últimos sondeos",
"creators": [
{
"lastName": "Agencia EFE",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "2022-08-20",
"ISSN": "1605-3052",
"abstractNote": "Los últimos sondeos publicados en Chile este jueves, cuando a partir de la medianoche comienza la veda para divulgar encuestas electorales, revelaron que se mantiene la tendencia a rechazar la propuesta de nueva Constitución en el plebiscito de septiembre.",
"language": "es-PE",
"libraryCatalog": "El Comercio (Perú)",
"place": "Lima",
"publicationTitle": "El Comercio",
"url": "https://elcomercio.pe/mundo/latinoamerica/chile-existe-una-tendencia-a-rechazar-nueva-constitucion-en-chile-revelan-los-ultimos-sondeos-gabriel-boric-rmmn-noticia/",
"attachments": [
{
"title": "Article Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Augusto Pinochet"
},
{
"tag": "Chile"
},
{
"tag": "Gabriel Boric"
},
{
"tag": "Pulso Ciudadano"
},
{
"tag": "constitución de Augusto Pinochet"
},
{
"tag": "nueva Constitución"
},
{
"tag": "nueva constitución chile"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://elcomercio.pe/deporte-total/seleccion/siete-hijos-de-juan-reynoso-cuentan-quien-es-realmente-el-nuevo-entrenador-de-la-seleccion-peruana-liga-1-universitario-melgar-coronel-bolognesi-rmmd-dtcc-noticia/",
"items": [
{
"itemType": "newspaperArticle",
"title": "Siete ‘hijos’ de Juan Reynoso cuentan quién es realmente el nuevo entrenador de la selección",
"creators": [
{
"firstName": "Eliezer",
"lastName": "Benedetti",
"creatorType": "author"
},
{
"firstName": "Marco",
"lastName": "Quilca León",
"creatorType": "author"
}
],
"date": "2022-08-21",
"ISSN": "1605-3052",
"abstractNote": "Siete futbolistas que fueron dirigidos por Juan Reynoso nos cuentan cómo era ser entrenado por él, los especiales pedidos que les hacía dentro y fuera de la cancha, además de las parrillas, apuestas y otras anécdotas especiales que tuvieron con el ‘Cabezón’.",
"language": "es-PE",
"libraryCatalog": "El Comercio (Perú)",
"place": "Lima",
"publicationTitle": "El Comercio",
"url": "https://elcomercio.pe/deporte-total/seleccion/siete-hijos-de-juan-reynoso-cuentan-quien-es-realmente-el-nuevo-entrenador-de-la-seleccion-peruana-liga-1-universitario-melgar-coronel-bolognesi-rmmd-dtcc-noticia/",
"attachments": [
{
"title": "Article Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Diego Penny"
},
{
"tag": "Hernán Rengifo"
},
{
"tag": "Jonathan Acasiete"
},
{
"tag": "Juan Reynoso"
},
{
"tag": "Junior Ross"
},
{
"tag": "Liga 1"
},
{
"tag": "Minzum Quina"
},
{
"tag": "Rainer Torres"
},
{
"tag": "Reynoso"
},
{
"tag": "Selección peruana"
},
{
"tag": "Ysrael Zúñiga"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://elcomercio.pe/economia/",
"items": "multiple"
}
]
/** END TEST CASES **/
{"dataMode":"xml\/dom","async":true}100Philipp Zumstein, Tomasz Najdekxml/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2016 Philipp Zumstein
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
/*
TEST DATA can be found here:
- Single reference (162 KB) text: https://gist.github.com/zuphilip/02d6478ace4636e4e090e348443c551e
- Larger project (1221 KB): https://gist.github.com/zuphilip/76ce89ebbdac0386507b36cff3fd499a
- Other project (1,11 MB): https://gist.github.com/anonymous/10fc363b6d79dae897e296a4327aa707
- Citavi 6 project (935 KB): https://gist.github.com/zuphilip/00a4ec6df58ac24b68366e32531bae4b
- Nested categories: (34 KB): https://gist.github.com/tnajdek/b2375e52b48c7bf82f9f592b4f2122f5
*/
function detectImport() {
var text = Zotero.read(1000);
return text.includes("<CitaviExchangeData");
}
// This maps the Citavi types to the Zotero types.
// https://www.citavi.com/sub/manual5/en/referencetypeselectiondialog.html
var typeMapping = {
ArchiveMaterial: "manuscript", // Archivgut
AudioBook: "book", // Hörbuch
AudioOrVideoDocument: "document", // Ton- oder Filmdokument
Book: "book", // Buch (Monographie)
BookEdited: "book", // Buch (Sammelwerk)
Broadcast: "tvBroadcast", // Radio- oder Fernsehsendung
CollectedWorks: "book", // Schriften eines Autors
ComputerProgram: "computerProgram", // Software
ConferenceProceedings: "book", // Tagungsband
Contribution: "bookSection", // Beitrag in ...
ContributionInLegalCommentary: "bookSection", // Beitrag in Gesetzeskommentar
CourtDecision: "case", // Gerichtsentscheid
File: "manuscript", // Akte
InternetDocument: "webpage", // Internetdokument
InterviewMaterial: "interview", // Interviewmaterial
JournalArticle: "journalArticle", // Zeitschriftenaufsatz
Lecture: "presentation", // Vortrag
LegalCommentary: "book", // Gesetzeskommentar
Manuscript: "manuscript", // Manuskript
Map: "map", // Geographische Karte
Movie: "videoRecording", // Spielfilm
MusicTrack: "audioRecording", // Musiktitel in ...
MusicAlbum: "audioRecording", // Musikwerk / Musikalbum
NewsAgencyReport: "report", // Agenturmeldung
NewspaperArticle: "newspaperArticle", // Zeitungsartikel
Patent: "patent", // Patentschrift
PersonalCommunication: "email", // Persönliche Mitteilung
PressRelease: "report", // Pressemitteilung
RadioPlay: "podcast", // Hörspiel
SpecialIssue: "book", // Sonderheft, Beiheft
Standard: "report", // Norm
StatuteOrRegulation: "statute", // Gesetz / Verordnung
Thesis: "thesis", // Hochschulschrift
Unknown: "document", // Unklarer Dokumententyp
UnpublishedWork: "report" // Graue Literatur / Bericht / Report
};
async function importItems({ references, doc, citaviVersion, rememberTags, itemIdList, unfinishedReferences, progress }) {
for (var i = 0, n = references.length; i < n; i++) {
var type = ZU.xpathText(references[i], 'ReferenceType');
let item;
if (type && typeMapping[type]) {
item = new Zotero.Item(typeMapping[type]);
}
else {
Z.debug("Not yet supported type: " + type);
Z.debug("Therefore use default type 'journalArticle'");
item = new Zotero.Item("journalArticle");
}
item.itemID = ZU.xpathText(references[i], './@id');
// Z.debug(item.itemID);
item.title = ZU.xpathText(references[i], './Title');
var subtitle = ZU.xpathText(references[i], './Subtitle');
if (subtitle) {
item.title += ": " + subtitle;
}
item.abstractNote = ZU.xpathText(references[i], './Abstract');
item.url = ZU.xpathText(references[i], './OnlineAddress');
item.volume = ZU.xpathText(references[i], './Volume');
item.issue = ZU.xpathText(references[i], './Number');
item.DOI = ZU.xpathText(references[i], './DOI');
item.ISBN = ZU.xpathText(references[i], './ISBN');
item.edition = ZU.xpathText(references[i], './Edition');
item.place = ZU.xpathText(references[i], './PlaceOfPublication');
item.numberOfVolumes = ZU.xpathText(references[i], './NumberOfVolumes');
addExtraLine(item, "PMID", ZU.xpathText(references[i], './PubMedID'));
item.pages = extractPages(ZU.xpathText(references[i], './PageRange'));
item.numPages = extractPages(ZU.xpathText(references[i], './PageCount'));
item.date = ZU.xpathText(references[i], './DateForSorting')
|| ZU.xpathText(references[i], './Date')
|| ZU.xpathText(references[i], './Year');
item.accessDate = ZU.xpathText(references[i], './AccessDate');
for (var field of ['Notes', 'TableOfContents', 'Evaluation']) {
var note = ZU.xpathText(references[i], './' + field);
if (note) {
item.notes.push({ note: note, tags: ["#" + field] });
}
}
var seriesID = ZU.xpathText(references[i], './SeriesTitleID');
if (seriesID) {
item.series = ZU.xpathText(doc.getElementById(seriesID), './Name');
}
var periodicalID = ZU.xpathText(references[i], './PeriodicalID');
if (periodicalID) {
var periodical = doc.getElementById(periodicalID);
item.publicationTitle = ZU.xpathText(periodical, './Name');
item.ISSN = ZU.xpathText(periodical, './ISSN');
item.journalAbbreviation = ZU.xpathText(periodical, './StandardAbbreviation')
|| ZU.xpathText(periodical, './UserAbbreviation1')
|| ZU.xpathText(periodical, './UserAbbreviation2');
}
var authors = ZU.xpathText(doc, '//ReferenceAuthors/OnetoN[starts-with(text(), "' + item.itemID + '")]');
attachPersons(doc, item, authors, "author");
var editors = ZU.xpathText(doc, '//ReferenceEditors/OnetoN[starts-with(text(), "' + item.itemID + '")]');
attachPersons(doc, item, editors, "editor");
var collaborators = ZU.xpathText(doc, '//ReferenceCollaborators/OnetoN[starts-with(text(), "' + item.itemID + '")]');
attachPersons(doc, item, collaborators, "contributor");
var organizations = ZU.xpathText(doc, '//ReferenceOrganizations/OnetoN[starts-with(text(), "' + item.itemID + '")]');
attachPersons(doc, item, organizations, "contributor");
var publishers = ZU.xpathText(doc, '//ReferencePublishers/OnetoN[starts-with(text(), "' + item.itemID + '")]');
if (publishers && publishers.length > 0) {
item.publisher = attachName(doc, publishers).join('; ');
}
var keywords = ZU.xpathText(doc, '//ReferenceKeywords/OnetoN[starts-with(text(), "' + item.itemID + '")]');
if (keywords && keywords.length > 0) {
item.tags = attachName(doc, keywords);
}
if (rememberTags[item.itemID]) {
for (var j = 0; j < rememberTags[item.itemID].length; j++) {
item.tags.push(rememberTags[item.itemID][j]);
}
}
// For all corresponding knowledge items attach a note containing
// the information of it.
var citations = ZU.xpath(doc, '//KnowledgeItem[ReferenceID="' + item.itemID + '"]');
for (let j = 0; j < citations.length; j++) {
var noteObject = {};
noteObject.id = ZU.xpathText(citations[j], '@id');
var title = ZU.xpathText(citations[j], 'CoreStatement');
var text = ZU.xpathText(citations[j], 'Text');
var pages = extractPages(ZU.xpathText(citations[j], 'PageRange'));
noteObject.note = '';
if (title) {
noteObject.note += '<h1>' + title + "</h1>\n";
}
if (text) {
noteObject.note += "<p>" + ZU.xpathText(citations[j], 'Text') + "</p>\n";
}
if (pages) {
noteObject.note += "<i>" + pages + "</i>";
}
if (rememberTags[noteObject.id]) {
noteObject.tags = rememberTags[noteObject.id];
}
if (noteObject.note != "") {
item.notes.push(noteObject);
}
}
// Locations will be saved as URIs in attachments, DOI, extra etc.
var locations = ZU.xpath(doc, '//Locations/Location[ReferenceID="' + item.itemID + '"]');
// If we only have partial information about the callnumber or
// library location, then we save this info in these two arrays
// which will then processed after the for loop if no other info
// was found.
var onlyLibraryInfo = [];
var onlyCallNumber = [];
for (let j = 0; j < locations.length; j++) {
var address = ZU.xpathText(locations[j], 'Address');
if (address && citaviVersion[0] !== "5") {
var jsonAddress = JSON.parse(address);
// Z.debug(jsonAddress);
address = jsonAddress.UriString;
}
var addressType = ZU.xpathText(locations[j], 'MirrorsReferencePropertyId');
if (address) {
if (addressType == "Doi" && !item.DOI) {
item.DOI = address;
}
else if (addressType == "PubMedId" && ((item.extra && !item.extra.includes("PMID")) || !item.extra)) {
addExtraLine(item, "PMID", address);
}
else {
// distinguish between local paths and internet addresses
// (maybe also encoded in AddressInfo subfield?)
item.attachments.push(
(address.indexOf('http://') == 0 || address.indexOf('https://') == 0)
? { url: address, title: "Online" }
: { path: address, title: "Full Text" }
);
}
}
var callNumber = ZU.xpathText(locations[j], 'CallNumber');
var libraryId = ZU.xpathText(locations[j], 'LibraryID');
if (callNumber && libraryId) {
item.callNumber = callNumber;
item.libraryCatalog = ZU.xpathText(doc.getElementById(libraryId), "Name");
}
else if (callNumber) {
onlyCallNumber.push(callNumber);
}
else if (libraryId) {
onlyLibraryInfo.push(ZU.xpathText(doc.getElementById(libraryId), "Name"));
}
}
if (!item.callNumber) {
if (onlyCallNumber.length > 0) {
item.callNumber = onlyCallNumber[0];
}
else if (onlyLibraryInfo.length > 0) {
item.libraryCatalog = onlyLibraryInfo[0];
}
}
// Only for journalArticle and conferencePaper the DOI field is
// currently established and therefore we need to add the info for
// all other itemTypes in the extra field.
if (item.DOI && item.itemType != "journalArticle" && item.itemType != "conferencePaper") {
addExtraLine(item, "DOI", item.DOI);
}
// The items of type contribution need more data from their container
// element and are therefore not yet finished. The other items can
// be completed here.
itemIdList[item.itemID] = item;
if (type == "Contribution") {
unfinishedReferences.push(item);
}
else {
await item.complete(); // eslint-disable-line no-await-in-loop
Z.setProgress(++progress.current / progress.total * 100);
}
}
}
// For unfinished references we add additional data from the
// container item and save the relation between them as well.
async function importUnfinished({ doc, itemIdList, progress, unfinishedReferences }) {
for (var i = 0; i < unfinishedReferences.length; i++) {
var item = unfinishedReferences[i];
var containerString = ZU.xpathText(doc, `//ReferenceReferences/OnetoN[contains(text(), "${item.itemID}")]`);
if (containerString) {
var containerId = containerString.split(';')[0];
var containerItem = itemIdList[containerId];
if (containerItem.type == "ConferenceProceedings") {
item.itemType = "conferencePaper";
}
item.publicationTitle = containerItem.title;
item.place = containerItem.place;
item.publisher = containerItem.publisher;
item.ISBN = containerItem.ISBN;
item.volume = containerItem.volume;
item.edition = containerItem.edition;
item.series = containerItem.series;
for (var j = 0; j < containerItem.creators.length; j++) {
var creatorObject = containerItem.creators[j];
var role = creatorObject.creatorType;
if (role == "author") {
creatorObject.creatorType = "bookAuthor";
}
item.creators.push(creatorObject);
}
item.seeAlso.push(containerItem.itemID);
}
await item.complete(); // eslint-disable-line no-await-in-loop
Z.setProgress(++progress.current / progress.total * 100);
}
}
// Task items will be mapped to new standalone note
async function importTasks({ tasks, progress }) {
for (var i = 0, n = tasks.length; i < n; i++) {
let item = new Zotero.Item("note");
var dueDate = ZU.xpathText(tasks[i], './DueDate');
if (dueDate) {
item.note = "<h1>" + ZU.xpathText(tasks[i], './Name') + " until " + dueDate + "</h1>";
}
else {
item.note = "<h1>" + ZU.xpathText(tasks[i], './Name') + "</h1>";
}
var noteText = ZU.xpathText(tasks[i], './Notes');
if (noteText) {
item.note += "\n" + noteText;
}
item.seeAlso.push(ZU.xpathText(tasks[i], './ReferenceID'));
item.tags.push("#todo");
await item.complete(); // eslint-disable-line no-await-in-loop
Z.setProgress(++progress.current / progress.total * 100);
}
}
function addHierarchyNumberRecursive(collections, level = null) {
let index = 1;
for (const collection of collections) {
const hierarchyNumber = level === null ? `${index++}` : `${level}.${index++}`;
collection.name = `${hierarchyNumber} ${collection.name}`;
addHierarchyNumberRecursive(
collection.children.filter(c => c instanceof Zotero.Collection), hierarchyNumber
);
}
}
function importCategories({ categories, doc, progress }) {
// typo CategoryCatgories was fixed in Citavi 6
var hierarchy = ZU.xpath(doc, '//CategoryCatgories/OnetoN|//CategoryCategories/OnetoN');
const parentMap = new Map();
for (let i = 0, n = hierarchy.length; i < n; i++) {
var categoryLists = hierarchy[i].textContent.split(";");
parentMap.set(categoryLists[0], categoryLists.slice(1));
}
// Create a Zotero collection for each Citavi category
const collectionsMap = new Map();
for (let i = 0, n = categories.length; i < n; i++) {
var collection = new Zotero.Collection();
collection.id = ZU.xpathText(categories[i], './@id');
collection.name = ZU.xpathText(categories[i], './Name');
collection.type = 'collection';
collection.children = [];
// Assign items to collections
var referenceCategories = ZU.xpath(doc, '//ReferenceCategories/OnetoN[contains(text(), "' + collection.id + '")]');
for (let j = 0; j < referenceCategories.length; j++) {
var refid = referenceCategories[j].textContent.split(';')[0];
collection.children.push({ type: 'item', id: refid });
}
collectionsMap.set(collection.id, collection);
}
const addedChildIDs = [];
// Recreate collections hierarchy
for (const [parentID, childIDs] of parentMap.entries()) {
if (!collectionsMap.has(parentID)) {
continue;
}
const parentCollection = collectionsMap.get(parentID);
childIDs.forEach((childID) => {
if (collectionsMap.has(childID)) {
parentCollection.children.push(collectionsMap.get(childID));
addedChildIDs.push(childID);
}
});
}
// skip collections that were successfuly assigned to a parent
for (const childID of addedChildIDs) {
collectionsMap.delete(childID);
}
// add hierarchy number to a collection name (e.g. 1 for first root
// collection and 1.1, 1.2 etc. for subcollections)
addHierarchyNumberRecursive(collectionsMap.values());
for (const collection of collectionsMap.values()) {
collection.complete();
Z.setProgress(++progress.current / progress.total * 100);
}
}
async function doImport() {
var doc = Zotero.getXML();
var citaviVersion = ZU.xpathText(doc, '//CitaviExchangeData/@Version');
// Groups will also be mapped to tags which can be assigned to
// items or notes.
var groups = ZU.xpath(doc, '//Groups/Group');
var rememberTags = {};
for (var i = 0; i < groups.length; i++) {
var id = ZU.xpathText(groups[i], './@id');
var name = ZU.xpathText(groups[i], './Name');
var referenceGroups = ZU.xpath(doc, `//ReferenceGroups/OnetoN[contains(text(), "${id}")]|//KnowledgeItemGroups/OnetoN[contains(text(), "${id}")]`);
for (var j = 0; j < referenceGroups.length; j++) {
var refid = referenceGroups[j].textContent.split(';')[0];
if (rememberTags[refid]) {
rememberTags[refid].push(name);
}
else {
rememberTags[refid] = [name];
}
}
}
var tasks = ZU.xpath(doc, '//TaskItems/TaskItem');
var categories = ZU.xpath(doc, '//Categories/Category');
// Main information for each reference.
var references = ZU.xpath(doc, '//References/Reference');
var unfinishedReferences = [];
var itemIdList = {};
// Because Zotero may also import annotations, we only move progress within 0-50% range, hence `totalProgress * 2`
// https://github.com/zotero/zotero/blob/6ca854a018e8bfe4251fbf42610276c441b5d943/chrome/content/zotero/import/citavi.js#L28
const totalProgress = references.length + tasks.length + categories.length;
const progress = { total: totalProgress * 2, current: 0 };
await importItems({ references, doc, citaviVersion, rememberTags, itemIdList, progress, unfinishedReferences });
await importUnfinished({ doc, itemIdList, unfinishedReferences, progress });
await importTasks({ tasks, progress });
importCategories({ categories, doc, progress });
}
function attachName(doc, ids) {
var valueList = [];
if (!ids || !ids.length || ids.length <= 0) {
return valueList;
}
var idList = ids.split(';');
// skip the first element which is the id of reference
for (var j = 1; j < idList.length; j++) {
var author = doc.getElementById(idList[j]);
valueList.push(ZU.xpathText(author, 'Name'));
}
return valueList;
}
// For each id in the list of ids, find the
// corresponding node in the document and
// attach the data to the creators array.
function attachPersons(doc, item, ids, type) {
if (!ids || !ids.length || ids.length <= 0) {
return;
}
var authorIds = ids.split(';');
// skip the first element which is the id of reference
for (var j = 1; j < authorIds.length; j++) {
var author = doc.getElementById(authorIds[j]);
var lastName = ZU.xpathText(author, 'LastName');
var firstName = ZU.xpathText(author, 'FirstName');
var middleName = ZU.xpathText(author, 'MiddleName');
if (firstName && lastName) {
if (middleName) {
firstName += ' ' + middleName;
}
item.creators.push({ lastName, firstName, creatorType: type });
}
if (!firstName && lastName) {
item.creators.push({ lastName, creatorType: type, fieldMode: true });
}
}
}
function addExtraLine(item, prefix, text) {
if (text) {
if (!item.extra) {
item.extra = '';
}
item.extra += prefix + ': ' + text + "\n";
}
}
function extractPages(multilineText) {
if (multilineText) {
var parts = multilineText.split("\n");
return parts[parts.length - 1].replace(/[^0-9\-–]/g, '');
}
return '';
}
100Matt Teichman^https?://([^/]+\.)?lib\.uchicago\.edu//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2022 Matt Teichman
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
// MARC retrieval code: run the MARC import translator, then perform a
// few adjustments to the output by looking things up in the MARC
// record
// scrapeMARC function, overall design based on Finna translator
const scrapeMARC = (doc, url) => {
// look up all hits for a MARC field in a MARC record
const lookupValues = (key, table) => {
// starting position of the content of a record
const basePos = table => parseInt(table.substring(12, 17));
// directory substring of a MARC record
const rawDirectory = table => table.substring(24, basePos(table));
// the MARC directory as an association list
const directory = (table) => {
const raw = rawDirectory(table);
const twelves = raw.match(/.{12}/g);
const processEntry = (str) => {
const field = str.substring(0, 3);
const valueLength = parseInt(str.substring(3, 7));
const valuePos = parseInt(str.substring(7, 12));
return [field, valueLength, valuePos];
};
return twelves.map(processEntry);
};
// for any MARC field, return the length and starting position of
// the value
const lookupInDirectory = (key, threes) => {
const assocs = threes.filter(three => three[0] == key);
return assocs.map(x => x.slice(1));
};
// the data portion of a MARC record
const dataPortion = table.substring(basePos(table));
// the information needed to retrieve all values for a given field
const fields = lookupInDirectory(key, directory(table));
// retrieve the value for a single length and position
const lookupValue = ([l, s]) => dataPortion.substring(s, l + s - 1).trim();
return fields.map(lookupValue);
};
// look up the subfields under all the values associated with a
// given field
const lookupSubfields = (key, subfield, table) => {
// look up subfield values for each field, length, and start index
const subfields = subfield => (value) => {
const startswith = chr => str => str[0] === chr;
const values = value.split('\x1F');
const correctValues = values.filter(startswith(subfield));
return correctValues.map(v => v.substring(1));
};
// all the values associated with the input MARC field
const values = lookupValues(key, table);
// flatten a list of lists
const flatten = arr => arr.reduce((acc, elm) => acc.concat(elm), []);
// return a simple list of all field/subfield values
return flatten(values.map(subfields(subfield)));
};
// predicate saying whether input field is present in a MARC record
const fieldExists = (key, table) => {
const values = lookupValues(key, table);
return values.length !== 0;
};
// custom UChicago tweaks to the return of the Zotero MARC translator
const customizeMARC = (doc, item, marc) => {
// put catalog URL in the entry
const addUrl = item => item.url = doc.location.href;
// replace general call number with UChicago-internal call number
const updateCN = (item) => {
const callNumbers = lookupSubfields('928', 'a', marc);
if (callNumbers.length === 1) {
item.callNumber = callNumbers[0];
}
};
// if there's a 502 field, it should be a thesis
const isDissertation = marc => fieldExists('502', marc);
// correct errors in identifying dissertations, maps,
// manuscripts, and films
const fixItemType = (item) => {
// if the record type is 'p', it's a manuscript
const isManuscript = marc => marc.substring(6, 7) == 'p';
// if the item type is film, it's a film
const isFilm = item => item.itemType === 'film';
// if the record type is 'e', it's a map
const isMap = marc => marc.substring(6, 7) == 'e';
if (isDissertation(marc)) {
// a dissertation is a 'thesis'
item.itemType = "thesis";
}
else if (isManuscript(marc)) {
// a manuscript is a 'manuscript';
item.itemType = "manuscript";
}
else if (isFilm(item)) {
// a film is a 'videoRecording' since we don't have
// any film prints
item.itemType = "videoRecording";
}
else if (isMap(marc)) {
// a map is a 'map';
item.itemType = "map";
}
};
// relocate 264|b of a dissertation to the 'archive'
// Zotero field
const archivePublisher = (item) => {
const publisher = lookupSubfields('264', 'b', marc);
if (isDissertation(marc) && publisher.length === 1) {
item.archive = publisher[0];
}
};
// make 710|a field into the publisher of a dissertation
const makeUniversityPublisher = (item) => {
// does 710|e say 'degree granting institution.'?
const degreeGranting = lookupSubfields('710', 'e', marc);
let isDG = false;
if (degreeGranting.length === 1) {
isDG = degreeGranting[0] == 'degree granting institution.';
}
// is there a 710|a MARC field?
const university = lookupSubfields('710', 'a', marc);
// if both conditions hold, 710|a becomes the publisher
if (isDissertation(marc) && isDG && university.length === 1) {
// strip possible trailing period from the MARC field
item.publisher = university[0].replace(/([a-z])\.\s*$/, '$1');
}
};
// perform the fixes
addUrl(item);
fixItemType(item);
updateCN(item);
archivePublisher(item);
makeUniversityPublisher(item);
};
// this part is based on the Finna translator code
let cleanURL = url.replace(/[#?].*$/, '').replace(/\/$/, '');
let marcURL = cleanURL + '/Export?style=MARC';
// use MARC import translator to ingest binary MARC records
ZU.doGet(marcURL, function (marcData) {
var success = false;
var translator = Zotero.loadTranslator("import");
translator.setTranslator("a6ee60df-1ddc-4aae-bb25-45e0537be973");
translator.setString(marcData);
translator.setHandler('itemDone', function (_, item) {
if (item.place) {
item.place = item.place.replace(/\[[^[]+\]/, '');
}
if (item.publisher) {
item.publisher = item.publisher.replace(/&/g, '&');
}
success = true;
// apply the above UChicago customizations
customizeMARC(doc, item, marcData);
item.complete();
});
translator.setHandler('done', () => {});
translator.translate();
});
};
const getSearchResults = (doc) => {
// get every search result DOM element
const rowNodes = doc.querySelectorAll('li[id^=result]');
// make the node list into an array
const a = Array.from(rowNodes);
let obj = {};
// extract information from each li element for output
const buildOutput = (r) => {
const linkElement = r.querySelector('.title.getFull');
const entryUrl = linkElement.href;
if (!linkElement) return;
const title = ZU.trimInternal(linkElement.textContent);
if (entryUrl && title) {
obj[entryUrl] = title;
}
};
a.map(buildOutput);
return obj;
};
const detectWeb = (doc, url) => {
// VuFind URL patterns starting with 'Record' are for single items
if (url.includes('vufind/Record')) {
if (doc.querySelector('.format.video')) {
return 'videoRecording';
}
else if (doc.querySelector('.format.dissertations')) {
return 'thesis';
}
else if (doc.querySelector('.format.archivesmanuscripts')) {
return 'manuscript';
}
else if (doc.querySelector('.format.audio')) {
return 'audioRecording';
}
else if (doc.querySelector('.format.map')) {
return 'map';
}
else {
return 'book';
}
// VuFind URL patterns starting with 'Search' are for search results
}
else if (url.includes('vufind/Search/Results')) {
return 'multiple';
// the translator should do nothing on every other URL pattern
}
else {
return false;
}
};
const doWeb = (doc, url) => {
if (detectWeb(doc, url) == 'multiple') {
// ingest multiple MARC records
Zotero.selectItems(getSearchResults(doc), (items) => {
if (items) {
let itemURLs = Object.keys(items);
itemURLs.map(url => scrapeMARC(doc, url));
}
});
}
else {
// ingest single MARC record
scrapeMARC(doc, url);
}
};
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://catalog.lib.uchicago.edu/vufind/Record/6422153",
"items": [
{
"itemType": "book",
"title": "Eat, pray, love: one woman's search for everything across Italy, India, and Indonesia",
"creators": [
{
"firstName": "Elizabeth",
"lastName": "Gilbert",
"creatorType": "author"
}
],
"date": "2007",
"ISBN": "9780143038412",
"callNumber": "G154.5.G55 A3 2007",
"extra": "OCLC: 82462742",
"libraryCatalog": "UChicago VuFind",
"numPages": "334",
"place": "New York",
"publisher": "Penguin",
"shortTitle": "Eat, pray, love",
"url": "https://catalog.lib.uchicago.edu/vufind/Record/6422153",
"attachments": [],
"tags": [
{
"tag": "Biography"
},
{
"tag": "Biography"
},
{
"tag": "Gilbert, Elizabeth"
},
{
"tag": "Gilbert, Elizabeth"
},
{
"tag": "Travel"
},
{
"tag": "Travel"
},
{
"tag": "Travel writers"
},
{
"tag": "Travel writers"
},
{
"tag": "United States"
},
{
"tag": "United States"
}
],
"notes": [
{
"note": "Previously published: New York : Viking Penguin, 2006"
},
{
"note": "Italy, or, \"Say it like you eat it,\" or, 36 tales about the pursuit of pleasure -- India, or, \"Congratulations to meet you,\" or, 36 tales about the pursuit of devotion -- Indonesia, or, \"Even in my underpants, I feel different,\" or, 36 tales about the pursuit of balance"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://catalog.lib.uchicago.edu/vufind/Record/11893824",
"items": [
{
"itemType": "audioRecording",
"title": "Love's philosophy",
"creators": [
{
"firstName": "Brian",
"lastName": "Knowles",
"creatorType": "author"
},
{
"firstName": "Percy Bysshe",
"lastName": "Shelley",
"creatorType": "author"
},
{
"firstName": "William",
"lastName": "Shakespeare",
"creatorType": "author"
},
{
"firstName": "George Gordon Byron",
"lastName": "Byron",
"creatorType": "author"
},
{
"firstName": "Walter",
"lastName": "De la Mare",
"creatorType": "author"
},
{
"firstName": "Robert",
"lastName": "Burns",
"creatorType": "author"
},
{
"firstName": "Craig",
"lastName": "Ogden",
"creatorType": "author"
},
{
"firstName": "David",
"lastName": "Angus",
"creatorType": "author"
},
{
"firstName": "James",
"lastName": "Gilchrist",
"creatorType": "author"
},
{
"firstName": "Brian",
"lastName": "Knowles",
"creatorType": "author"
},
{
"firstName": "Brian",
"lastName": "Knowles",
"creatorType": "author"
},
{
"firstName": "Brian",
"lastName": "Knowles",
"creatorType": "author"
},
{
"firstName": "Brian",
"lastName": "Knowles",
"creatorType": "author"
},
{
"lastName": "English Northern Philharmonia",
"creatorType": "contributor",
"fieldMode": true
}
],
"date": "2017",
"extra": "OCLC: 1104495515",
"label": "Rubicon Classics",
"libraryCatalog": "UChicago VuFind",
"place": "Eastbourne, England",
"url": "https://catalog.lib.uchicago.edu/vufind/Record/11893824",
"attachments": [],
"tags": [
{
"tag": "Burns, Robert"
},
{
"tag": "Byron, George Gordon Byron"
},
{
"tag": "Chamber music"
},
{
"tag": "Concertos"
},
{
"tag": "Concertos (Guitar)"
},
{
"tag": "De la Mare, Walter"
},
{
"tag": "Guitar with orchestra"
},
{
"tag": "Musical settings"
},
{
"tag": "Musical settings"
},
{
"tag": "Musical settings"
},
{
"tag": "Musical settings"
},
{
"tag": "Musical settings"
},
{
"tag": "Musical settings"
},
{
"tag": "Rondos"
},
{
"tag": "Rondos (Guitar)"
},
{
"tag": "Shakespeare, William"
},
{
"tag": "Shelley, Percy Bysshe"
},
{
"tag": "Songs"
},
{
"tag": "Songs (High voice) with guitar"
},
{
"tag": "Streaming audio"
}
],
"notes": [
{
"note": "Guitar concerto : Visiones de Andalucia (22:12) -- Poco rondo : for solo guitar (3:00) -- Eight songs from Poetry serenade. Love's philosophy (Shelley) ; Let me not to the marriage of true minds (Shakespeare) ; O mistress mine (Shakespeare) ; Shall I compare thee to a summer's day (Shakespeare) ; When icicles hang by the wall (Shakespeare) ; She walks in beauty (Byron) ; The listeners (De la Mare) ; A red, red rose (Burns) (26:32) -- A fond farewell : for guitar & orchestra (7:45)"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://catalog.lib.uchicago.edu/vufind/Record/4362914",
"items": [
{
"itemType": "map",
"title": "Iowa",
"creators": [
{
"lastName": "G.W. & C.B. Colton & Co",
"creatorType": "contributor",
"fieldMode": true
}
],
"date": "1876",
"callNumber": "G4104.C6 1876 .G2",
"extra": "OCLC: 12373755",
"libraryCatalog": "UChicago VuFind",
"place": "[New York",
"publisher": "G.W. & C.B. Colton & Co",
"url": "https://catalog.lib.uchicago.edu/vufind/Record/4362914",
"attachments": [],
"tags": [
{
"tag": "Iowa"
},
{
"tag": "Iowa"
},
{
"tag": "Maps"
},
{
"tag": "Maps"
}
],
"notes": [
{
"note": "On same sheet with: Chicago; verso: Illinois"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://catalog.lib.uchicago.edu/vufind/Record/269312",
"items": [
{
"itemType": "book",
"title": "Color: universal language and dictionary of names",
"creators": [
{
"firstName": "Kenneth L.",
"lastName": "Kelly",
"creatorType": "author"
},
{
"firstName": "Deane Brewster",
"lastName": "Judd",
"creatorType": "author"
},
{
"firstName": "Kenneth Low",
"lastName": "Kelly",
"creatorType": "author"
},
{
"firstName": "Kenneth Low",
"lastName": "Kelly",
"creatorType": "author"
}
],
"date": "1976",
"callNumber": "QC100.U524 no.440",
"language": "eng",
"libraryCatalog": "UChicago VuFind",
"numPages": "19",
"place": "Washington",
"publisher": "U.S. Dept. of Commerce, National Bureau of Standards : for sale by the Supt. of Docs., U.S. Govt. Print. Off",
"series": "NBS special publication",
"seriesNumber": "440",
"shortTitle": "Color",
"url": "https://catalog.lib.uchicago.edu/vufind/Record/269312",
"attachments": [],
"tags": [
{
"tag": "Color"
},
{
"tag": "Color"
},
{
"tag": "Colors"
},
{
"tag": "Colors"
},
{
"tag": "Dictionaries"
},
{
"tag": "Terminology"
},
{
"tag": "Terminology"
}
],
"notes": [
{
"note": "Supersedes and combines The ISCC-NBS method of designating colors and a dictionary of color names by K. L. Kelly and D. B. Judd and A universal color language by K. L. Kelly"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://catalog.lib.uchicago.edu/vufind/Record/8066283",
"items": [
{
"itemType": "manuscript",
"title": "The Columbia Physics Department: a brief history",
"creators": [
{
"firstName": "I.",
"lastName": "Tramm",
"creatorType": "editor"
},
{
"lastName": "Niels Bohr Library & Archives",
"creatorType": "editor",
"fieldMode": true
}
],
"date": "1992",
"abstractNote": "A booklet of reproductions of some of the archival documents, correspondence, and photographs relating to the history of the Physics department of Columbia. Includes listing and photos of Columbia's Nobel Laureates and discussion of Columbia's involvment in the Manhattan Project. Correspondents include Niels Bohr, Albert Einstein, Enrico Fermi, H. A. Lorentz, R. A. Millikan, and Max Planck",
"callNumber": "QC9.U5C658 1992",
"extra": "OCLC: 83949670",
"libraryCatalog": "UChicago VuFind",
"numPages": "48",
"place": "[College Park, MD?",
"shortTitle": "The Columbia Physics Department",
"url": "https://catalog.lib.uchicago.edu/vufind/Record/8066283",
"attachments": [],
"tags": [
{
"tag": "1900-1999"
},
{
"tag": "20th century"
},
{
"tag": "Bohr, Niels"
},
{
"tag": "Bohr, Niels"
},
{
"tag": "Columbia University"
},
{
"tag": "Columbia University"
},
{
"tag": "Department of Physics"
},
{
"tag": "Dept. of Physics"
},
{
"tag": "Einstein, Albert"
},
{
"tag": "Einstein, Albert"
},
{
"tag": "Fermi, Enrico"
},
{
"tag": "Fermi, Enrico"
},
{
"tag": "Hendrik Antoon"
},
{
"tag": "Hendrik Antoon"
},
{
"tag": "History"
},
{
"tag": "History"
},
{
"tag": "History"
},
{
"tag": "History"
},
{
"tag": "History"
},
{
"tag": "Lorentz, H. A"
},
{
"tag": "Lorentz, H. A"
},
{
"tag": "Manhattan Project (U.S.)"
},
{
"tag": "Manhattan Project (U.S.)"
},
{
"tag": "Millikan, Robert Andrews"
},
{
"tag": "Millikan, Robert Andrews"
},
{
"tag": "Nobel Prize winners"
},
{
"tag": "Nobel Prize winners"
},
{
"tag": "Physicists"
},
{
"tag": "Physicists"
},
{
"tag": "Physics"
},
{
"tag": "Physics"
},
{
"tag": "Pictorial works"
},
{
"tag": "Pictorial works"
},
{
"tag": "Pictorial works"
},
{
"tag": "Pictorial works"
},
{
"tag": "Pictorial works"
},
{
"tag": "Pictorial works"
},
{
"tag": "Pictorial works"
},
{
"tag": "Pictorial works"
},
{
"tag": "Pictorial works"
},
{
"tag": "Pictorial works"
},
{
"tag": "Pictorial works"
},
{
"tag": "Pictorial works"
},
{
"tag": "Planck, Max"
},
{
"tag": "Planck, Max"
},
{
"tag": "United States"
},
{
"tag": "United States"
},
{
"tag": "United States"
},
{
"tag": "United States"
}
],
"notes": [
{
"note": "Forms part of the Niels Bohr Library Institutional Histories Collection Cover title"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://catalog.lib.uchicago.edu/vufind/Search/Results?lookfor=andre+gide&type=AllFields",
"items": "multiple"
},
{
"type": "web",
"url": "https://catalog.lib.uchicago.edu/vufind/Record/10773190",
"items": [
{
"itemType": "thesis",
"title": "Characterizing kinds: A semantics for generic sentences",
"creators": [
{
"firstName": "Matthew",
"lastName": "Teichman",
"creatorType": "author"
},
{
"lastName": "University of Chicago",
"creatorType": "contributor",
"fieldMode": true
}
],
"date": "2015",
"abstractNote": "In this text, I argue that generic statements---statements of the form Fs are G, such as 'Bears are furry'---are particular statements about kinds, rather than general statements about individual objects. Although statements of this form intuitively seem like generalizations, I claim that in this case, appearances are deceptive. First, I present new linguistic evidence which raises problems for the standard quantificational theory of generic sentences, according to which generic sentences contain a hidden, unpronounced quantifier. Though the simple kind theory has served as a standard alternative to quantificational approaches in the literature on generics since Carlson (1977), it also has a more sophisticated cousin, which has largely been ignored. I develop an extension of the sophisticated kind theory and show how it can neatly account for these phenomena while sidestepping the standard objections to the simple kind theory. At a broader level, I would like to claim that if a kind theory provides the best explanation for the truth conditions of these sentences in English, then it tells us something interesting about English speakers: namely, that in virtue of their speaking English, they implicitly presuppose an ontology with kinds as possible objects. In this way, I suggest, the search for the best semantic theory of generic sentences has the potential to lead us towards a new, philosophically valuable conception of kindhood",
"archive": "ProQuest Dissertations & Theses,",
"libraryCatalog": "UChicago VuFind",
"numPages": "1",
"place": "Ann Arbor",
"shortTitle": "Characterizing kinds",
"university": "University of Chicago",
"url": "https://catalog.lib.uchicago.edu/vufind/Record/10773190",
"attachments": [],
"tags": [],
"notes": [
{
"note": "Advisors: Jason Bridges; Christopher Kennedy Committee members: Frank Veltman; Malte Willer"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://catalog.lib.uchicago.edu/vufind/Record/7143200",
"items": [
{
"itemType": "thesis",
"title": "Modern ethical skepticism",
"creators": [
{
"firstName": "Zed",
"lastName": "Adams",
"creatorType": "author"
}
],
"date": "2008",
"callNumber": "BJ2999 Adams",
"extra": "OCLC: 232302765",
"libraryCatalog": "UChicago VuFind",
"numPages": "212",
"url": "https://catalog.lib.uchicago.edu/vufind/Record/7143200",
"attachments": [],
"tags": [
{
"tag": "1900-1999"
},
{
"tag": "20th century"
},
{
"tag": "Ethics, Modern"
},
{
"tag": "Ethics, Modern"
},
{
"tag": "Values"
},
{
"tag": "Values"
}
],
"notes": [
{
"note": "Thesis (Ph. D.)--University of Chicago, Dept. of Philosophy, June 2008"
}
],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Michael Berkowitz and Rintze Zelle^https://(www\.)?ncbi\.nlm\.nih\.gov/pmc/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2017-2019 Michael Berkowitz and Rintze Zelle
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
// Make sure the page have a PMCID and we're on a valid item page,
// or looking at a PDF
if (getPMCID(url) && (url.includes(".pdf")
|| doc.getElementsByClassName('fm-ids').length)) {
return "journalArticle";
}
if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
var results = getSearchResults(doc);
Zotero.selectItems(results.ids, function (ids) {
if (!ids) {
return true;
}
var pmcids = [];
for (var i in ids) {
pmcids.push(i);
}
lookupPMCIDs(pmcids, doc, results.pdfs);
return true;
});
}
else {
var pmcid = getPMCID(url);
var pdf = getPDF(doc, '//td[@class="format-menu"]//a[contains(@href,".pdf")]'
+ '|//div[@class="format-menu"]//a[contains(@href,".pdf")]'
+ '|//aside[@id="jr-alt-p"]/div/a[contains(@href,".pdf")]'
+ '|//li[contains(@class, "pdf-link")]/a');
// Z.debug(pdf);
// if we're looking at a pdf, just use the current url
if (!pdf && url.search(/\/pdf\/.+.pdf/) != -1) {
pdf = url;
}
var pdfCollection = {};
if (pdf) pdfCollection[pmcid] = pdf;
lookupPMCIDs([pmcid], doc, pdfCollection);
}
}
function getPMCID(url) {
var pmcid = url.match(/\/articles\/PMC([\d]+)/);
return pmcid ? pmcid[1] : false;
}
function getPDF(doc, xpath) {
var pdf = ZU.xpath(doc, xpath);
return pdf.length ? pdf[0].href : false;
}
function getSearchResults(doc, checkOnly) {
var articles = doc.getElementsByClassName('rprt'),
ids = {},
pdfCollection = {},
found = false;
for (var i = 0; i < articles.length; i++) {
var article = articles[i],
pmcid = ZU.xpathText(article, './/dl[@class="rprtid"]/dd');
if (pmcid) pmcid = pmcid.match(/PMC([\d]+)/);
if (pmcid) {
if (checkOnly) return true;
var title = ZU.xpathText(article, './/div[@class="title"]');
var pdf = getPDF(article, './/div[@class="links"]/a'
+ '[@class="view" and contains(@href,".pdf")][1]');
const cb = article.querySelector('input[type=checkbox]');
ids[pmcid[1]] = {
title,
checked: cb && cb.checked,
};
found = true;
if (pdf) pdfCollection[pmcid[1]] = pdf;
}
}
return found ? { ids: ids, pdfs: pdfCollection } : false;
}
function lookupPMCIDs(ids, doc, pdfLink) {
var newUri = "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=pmc&retmode=xml&id="
+ encodeURIComponent(ids.join(","));
Zotero.debug(newUri);
ZU.doGet(newUri, function (text) {
text = text.replace(/(<[^!>][^>]*>)/g, function (str) {
return str.replace(/[-:]/gm, "");
}); // Strip hyphens and colons from element names, attribute names and attribute values
text = text.replace(/<xref[^</]*<\/xref>/g, ""); // Strip xref cross reference from e.g. title
// Z.debug(text)
var parser = new DOMParser();
var doc = parser.parseFromString(text, "text/xml");
var articles = ZU.xpath(doc, '/pmcarticleset/article');
for (var i in articles) {
var newItem = new Zotero.Item("journalArticle");
var journal = ZU.xpath(articles[i], 'front/journalmeta');
newItem.journalAbbreviation = ZU.xpathText(journal, 'journalid[@journalidtype="nlmta"]');
var journalTitle;
if ((journalTitle = ZU.xpathText(journal, 'journaltitlegroup/journaltitle'))) {
newItem.publicationTitle = journalTitle;
}
else if ((journalTitle = ZU.xpathText(journal, 'journaltitle'))) {
newItem.publicationTitle = journalTitle;
}
var issn;
if ((issn = ZU.xpathText(journal, 'issn[@pubtype="ppub"]'))) {
newItem.ISSN = issn;
}
else if ((issn = ZU.xpathText(journal, 'issn[@pubtype="epub"]'))) {
newItem.ISSN = issn;
}
var article = ZU.xpath(articles[i], 'front/articlemeta');
var abstract;
if ((abstract = ZU.xpathText(article, 'abstract/p'))) {
newItem.abstractNote = abstract;
}
else {
var abstractSections = ZU.xpath(article, 'abstract/sec');
abstract = [];
for (const j in abstractSections) {
abstract.push(ZU.xpathText(abstractSections[j], 'title') + "\n" + ZU.xpathText(abstractSections[j], 'p'));
}
newItem.abstractNote = abstract.join("\n\n");
}
newItem.DOI = ZU.xpathText(article, 'articleid[@pubidtype="doi"]');
newItem.extra = "PMID: " + ZU.xpathText(article, 'articleid[@pubidtype="pmid"]') + "\n";
newItem.extra = newItem.extra + "PMCID: PMC" + ids[i];
newItem.title = ZU.trim(ZU.xpathText(article, 'titlegroup/articletitle'));
newItem.volume = ZU.xpathText(article, 'volume');
newItem.issue = ZU.xpathText(article, 'issue');
var lastPage = ZU.xpathText(article, 'lpage');
var firstPage = ZU.xpathText(article, 'fpage');
if (firstPage && lastPage && (firstPage != lastPage)) {
newItem.pages = firstPage + "-" + lastPage;
}
else if (firstPage) {
newItem.pages = firstPage;
}
// use elocationid where we don't have itemIDs
if (!newItem.pages) {
newItem.pages = ZU.xpathText(article, 'elocationid');
}
var pubDate = ZU.xpath(article, 'pubdate[@pubtype="ppub"]');
if (!pubDate.length) {
pubDate = ZU.xpath(article, 'pubdate[@pubtype="epub"]');
}
if (pubDate) {
if (ZU.xpathText(pubDate, 'day')) {
newItem.date = ZU.xpathText(pubDate, 'year') + "-" + ZU.xpathText(pubDate, 'month') + "-" + ZU.xpathText(pubDate, 'day');
}
else if (ZU.xpathText(pubDate, 'month')) {
newItem.date = ZU.xpathText(pubDate, 'year') + "-" + ZU.xpathText(pubDate, 'month');
}
else if (ZU.xpathText(pubDate, 'year')) {
newItem.date = ZU.xpathText(pubDate, 'year');
}
}
var contributors = ZU.xpath(article, 'contribgroup/contrib');
if (contributors) {
var authors = ZU.xpath(article, 'contribgroup/contrib[@contribtype="author"]');
for (const j in authors) {
var lastName = ZU.xpathText(authors[j], 'name/surname');
var firstName = ZU.xpathText(authors[j], 'name/givennames');
if (firstName || lastName) {
newItem.creators.push({
lastName: lastName,
firstName: firstName,
creatorType: "author"
});
}
}
}
var linkurl = "https://www.ncbi.nlm.nih.gov/pmc/articles/PMC" + ids[i] + "/";
newItem.url = linkurl;
newItem.attachments = [{
url: linkurl,
title: "PubMed Central Link",
mimeType: "text/html",
snapshot: false
}];
let pdfFileName;
if (pdfLink) {
pdfFileName = pdfLink[ids[i]];
}
else if (ZU.xpathText(article, 'selfuri/@xlinktitle') == "pdf") {
pdfFileName = "https://www.ncbi.nlm.nih.gov/pmc/articles/PMC"
+ ids[i] + "/pdf/" + ZU.xpathText(article, 'selfuri/@xlinkhref');
}
else if (ZU.xpathText(article, 'articleid[@pubidtype="publisherid"]')) {
// this should work on most multiples
pdfFileName = "https://www.ncbi.nlm.nih.gov/pmc/articles/PMC"
+ ids[i] + "/pdf/" + ZU.xpathText(article, 'articleid[@pubidtype="publisherid"]') + ".pdf";
}
if (pdfFileName) {
newItem.attachments.push({
title: "PubMed Central Full Text PDF",
mimeType: "application/pdf",
url: pdfFileName
});
}
newItem.complete();
}
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2377243/?tool=pmcentrez",
"items": [
{
"itemType": "journalArticle",
"title": "Effects of long-term low-dose oxygen supplementation on the epithelial function, collagen metabolism and interstitial fibrogenesis in the guinea pig lung",
"creators": [
{
"lastName": "Aoki",
"firstName": "Takuya",
"creatorType": "author"
},
{
"lastName": "Yamasawa",
"firstName": "Fumihiro",
"creatorType": "author"
},
{
"lastName": "Kawashiro",
"firstName": "Takeo",
"creatorType": "author"
},
{
"lastName": "Shibata",
"firstName": "Tetsuichi",
"creatorType": "author"
},
{
"lastName": "Ishizaka",
"firstName": "Akitoshi",
"creatorType": "author"
},
{
"lastName": "Urano",
"firstName": "Tetsuya",
"creatorType": "author"
},
{
"lastName": "Okada",
"firstName": "Yasumasa",
"creatorType": "author"
}
],
"date": "2008",
"DOI": "10.1186/1465-9921-9-37",
"ISSN": "1465-9921",
"abstractNote": "Background\nThe patient population receiving long-term oxygen therapy has increased with the rising morbidity of COPD. Although high-dose oxygen induces pulmonary edema and interstitial fibrosis, potential lung injury caused by long-term exposure to low-dose oxygen has not been fully analyzed. This study was designed to clarify the effects of long-term low-dose oxygen inhalation on pulmonary epithelial function, edema formation, collagen metabolism, and alveolar fibrosis.\n\nMethods\nGuinea pigs (n = 159) were exposed to either 21% or 40% oxygen for a maximum of 16 weeks, and to 90% oxygen for a maximum of 120 hours. Clearance of inhaled technetium-labeled diethylene triamine pentaacetate (Tc-DTPA) and bronchoalveolar lavage fluid-to-serum ratio (BAL/Serum) of albumin (ALB) were used as markers of epithelial permeability. Lung wet-to-dry weight ratio (W/D) was measured to evaluate pulmonary edema, and types I and III collagenolytic activities and hydroxyproline content in the lung were analyzed as indices of collagen metabolism. Pulmonary fibrotic state was evaluated by histological quantification of fibrous tissue area stained with aniline blue.\n\nResults\nThe clearance of Tc-DTPA was higher with 2 week exposure to 40% oxygen, while BAL/Serum Alb and W/D did not differ between the 40% and 21% groups. In the 40% oxygen group, type I collagenolytic activities at 2 and 4 weeks and type III collagenolytic activity at 2 weeks were increased. Hydroxyproline and fibrous tissue area were also increased at 2 weeks. No discernible injury was histologically observed in the 40% group, while progressive alveolar damage was observed in the 90% group.\n\nConclusion\nThese results indicate that epithelial function is damaged, collagen metabolism is affected, and both breakdown of collagen fibrils and fibrogenesis are transiently induced even with low-dose 40% oxygen exposure. However, these changes are successfully compensated even with continuous exposure to low-dose oxygen. We conclude that long-term low-dose oxygen exposure does not significantly induce permanent lung injury in guinea pigs.",
"extra": "PMID: 18439301\nPMCID: PMC2377243",
"issue": "1",
"journalAbbreviation": "Respir Res",
"libraryCatalog": "PubMed Central",
"pages": "37",
"publicationTitle": "Respiratory Research",
"url": "https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2377243/",
"volume": "9",
"attachments": [
{
"title": "PubMed Central Link",
"mimeType": "text/html",
"snapshot": false
},
{
"title": "PubMed Central Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.ncbi.nlm.nih.gov/pmc/?term=anger",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.ncbi.nlm.nih.gov/pmc/issues/184700/",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3139813/?report=classic",
"items": [
{
"itemType": "journalArticle",
"title": "Evaluation Metrics for Biostatistical and Epidemiological Collaborations",
"creators": [
{
"lastName": "Rubio",
"firstName": "Doris McGartland",
"creatorType": "author"
},
{
"lastName": "del Junco",
"firstName": "Deborah J.",
"creatorType": "author"
},
{
"lastName": "Bhore",
"firstName": "Rafia",
"creatorType": "author"
},
{
"lastName": "Lindsell",
"firstName": "Christopher J.",
"creatorType": "author"
},
{
"lastName": "Oster",
"firstName": "Robert A.",
"creatorType": "author"
},
{
"lastName": "Wittkowski",
"firstName": "Knut M.",
"creatorType": "author"
},
{
"lastName": "Welty",
"firstName": "Leah J.",
"creatorType": "author"
},
{
"lastName": "Li",
"firstName": "Yi-Ju",
"creatorType": "author"
},
{
"lastName": "DeMets",
"firstName": "Dave",
"creatorType": "author"
}
],
"date": "2011-10-15",
"DOI": "10.1002/sim.4184",
"ISSN": "0277-6715",
"abstractNote": "Increasing demands for evidence-based medicine and for the translation of biomedical research into individual and public health benefit have been accompanied by the proliferation of special units that offer expertise in biostatistics, epidemiology, and research design (BERD) within academic health centers. Objective metrics that can be used to evaluate, track, and improve the performance of these BERD units are critical to their successful establishment and sustainable future. To develop a set of reliable but versatile metrics that can be adapted easily to different environments and evolving needs, we consulted with members of BERD units from the consortium of academic health centers funded by the Clinical and Translational Science Award Program of the National Institutes of Health. Through a systematic process of consensus building and document drafting, we formulated metrics that covered the three identified domains of BERD practices: the development and maintenance of collaborations with clinical and translational science investigators, the application of BERD-related methods to clinical and translational research, and the discovery of novel BERD-related methodologies. In this article, we describe the set of metrics and advocate their use for evaluating BERD practices. The routine application, comparison of findings across diverse BERD units, and ongoing refinement of the metrics will identify trends, facilitate meaningful changes, and ultimately enhance the contribution of BERD activities to biomedical research.",
"extra": "PMID: 21284015\nPMCID: PMC3139813",
"issue": "23",
"journalAbbreviation": "Stat Med",
"libraryCatalog": "PubMed Central",
"pages": "2767-2777",
"publicationTitle": "Statistics in medicine",
"url": "https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3139813/",
"volume": "30",
"attachments": [
{
"title": "PubMed Central Link",
"mimeType": "text/html",
"snapshot": false
},
{
"title": "PubMed Central Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.ncbi.nlm.nih.gov/pmc/?term=test",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2801612/?report=reader",
"items": [
{
"itemType": "journalArticle",
"title": "Cdk4 Regulates Recruitment of Quiescent β-Cells and Ductal Epithelial Progenitors to Reconstitute β-Cell Mass",
"creators": [
{
"lastName": "Lee",
"firstName": "Ji-Hyeon",
"creatorType": "author"
},
{
"lastName": "Jo",
"firstName": "Junghyo",
"creatorType": "author"
},
{
"lastName": "Hardikar",
"firstName": "Anandwardhan A.",
"creatorType": "author"
},
{
"lastName": "Periwal",
"firstName": "Vipul",
"creatorType": "author"
},
{
"lastName": "Rane",
"firstName": "Sushil G.",
"creatorType": "author"
}
],
"date": "2010-1-13",
"DOI": "10.1371/journal.pone.0008653",
"ISSN": "1932-6203",
"abstractNote": "Insulin-producing pancreatic islet β cells (β-cells) are destroyed, severely depleted or functionally impaired in diabetes. Therefore, replacing functional β-cell mass would advance clinical diabetes management. We have previously demonstrated the importance of Cdk4 in regulating β-cell mass. Cdk4-deficient mice display β-cell hypoplasia and develop diabetes, whereas β-cell hyperplasia is observed in mice expressing an active Cdk4R24C kinase. While β-cell replication appears to be the primary mechanism responsible for β-cell mass increase, considerable evidence also supports a contribution from the pancreatic ductal epithelium in generation of new β-cells. Further, while it is believed that majority of β-cells are in a state of ‘dormancy’, it is unclear if and to what extent the quiescent cells can be coaxed to participate in the β-cell regenerative response. Here, we address these queries using a model of partial pancreatectomy (PX) in Cdk4 mutant mice. To investigate the kinetics of the regeneration process precisely, we performed DNA analog-based lineage-tracing studies followed by mathematical modeling. Within a week after PX, we observed considerable proliferation of islet β-cells and ductal epithelial cells. Interestingly, the mathematical model showed that recruitment of quiescent cells into the active cell cycle promotes β-cell mass reconstitution in the Cdk4R24C pancreas. Moreover, within 24–48 hours post-PX, ductal epithelial cells expressing the transcription factor Pdx-1 dramatically increased. We also detected insulin-positive cells in the ductal epithelium along with a significant increase of islet-like cell clusters in the Cdk4R24C pancreas. We conclude that Cdk4 not only promotes β-cell replication, but also facilitates the activation of β-cell progenitors in the ductal epithelium. In addition, we show that Cdk4 controls β-cell mass by recruiting quiescent cells to enter the cell cycle. Comparing the contribution of cell proliferation and islet-like clusters to the total increase in insulin-positive cells suggests a hitherto uncharacterized large non-proliferative contribution.",
"extra": "PMID: 20084282\nPMCID: PMC2801612",
"issue": "1",
"journalAbbreviation": "PLoS One",
"libraryCatalog": "PubMed Central",
"pages": "e8653",
"publicationTitle": "PLoS ONE",
"url": "https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2801612/",
"volume": "5",
"attachments": [
{
"title": "PubMed Central Link",
"mimeType": "text/html",
"snapshot": false
},
{
"title": "PubMed Central Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4368415/pdf/imr0264-0088.pdf",
"items": [
{
"itemType": "journalArticle",
"title": "The human immune response to tuberculosis and its treatment: a view from the blood",
"creators": [
{
"lastName": "Cliff",
"firstName": "Jacqueline M",
"creatorType": "author"
},
{
"lastName": "Kaufmann",
"firstName": "Stefan H E",
"creatorType": "author"
},
{
"lastName": "McShane",
"firstName": "Helen",
"creatorType": "author"
},
{
"lastName": "van Helden",
"firstName": "Paul",
"creatorType": "author"
},
{
"lastName": "O'Garra",
"firstName": "Anne",
"creatorType": "author"
}
],
"date": "2015-3",
"DOI": "10.1111/imr.12269",
"ISSN": "0105-2896",
"abstractNote": "The immune response upon infection with the pathogen Mycobacterium tuberculosis is poorly understood, hampering the discovery of new treatments and the improvements in diagnosis. In the last years, a blood transcriptional signature in tuberculosis has provided knowledge on the immune response occurring during active tuberculosis disease. This signature was absent in the majority of asymptomatic individuals who are latently infected with M. tuberculosis (referred to as latent). Using modular and pathway analyses of the complex data has shown, now in multiple studies, that the signature of active tuberculosis is dominated by overexpression of interferon-inducible genes (consisting of both type I and type II interferon signaling), myeloid genes, and inflammatory genes. There is also downregulation of genes encoding B and T-cell function. The blood signature of tuberculosis correlates with the extent of radiographic disease and is diminished upon effective treatment suggesting the possibility of new improved strategies to support diagnostic assays and methods for drug treatment monitoring. The signature suggested a previously under-appreciated role for type I interferons in development of active tuberculosis disease, and numerous mechanisms have now been uncovered to explain how type I interferon impedes the protective response to M. tuberculosis infection.",
"extra": "PMID: 25703554\nPMCID: PMC4368415",
"issue": "1",
"journalAbbreviation": "Immunol Rev",
"libraryCatalog": "PubMed Central",
"pages": "88-102",
"publicationTitle": "Immunological Reviews",
"shortTitle": "The human immune response to tuberculosis and its treatment",
"url": "https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4368415/",
"volume": "264",
"attachments": [
{
"title": "PubMed Central Link",
"mimeType": "text/html",
"snapshot": false
},
{
"title": "PubMed Central Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Philipp Zumstein and Tim Sherratt^https?://catalogue\.nla\.gov\.au/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2018 Philipp Zumstein
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.match("/Record/[0-9]+")) {
var format = doc.getElementById("myformat").textContent;
return computeFormat(format);
}
else if (url.includes("/Search/Home") && doc.getElementById("resultItemLine1")) {
return "multiple";
}
return "book";
}
// map the nla formats to zotero formats
function computeFormat(format) {
// clean up whitespace and remove commas from items with multiple formats
format = Zotero.Utilities.trimInternal(format.replace(',', ''));
if (format == "Audio") return "audioRecording";
if (format == "Book") return "book";
if (format == "Journal/Newspaper") return "journalArticle";
if (format == "Manuscript") return "manuscript";
if (format == "Map") return "map";
if (format == "Music") return "audioRecording";
if (format == "Online") return "webpage";
if (format == "Picture") return "artwork";
if (format == "Video") return "videoRecording";
// default
return "book";
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.resultitem a.title');
for (let i = 0; i < rows.length; i++) {
let href = rows[i].href;
if (!/\/Record\/\d+/.test(href)) continue;
let title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) return;
processUrls(Object.keys(items));
});
}
else {
processUrls([url]);
}
}
function processUrls(urls) {
for (let i = 0; i < urls.length; i++) {
var bibid = urls[i].match(/\/Record\/(\d+)\b/);
if (bibid) {
var marcUrl = "/Record/" + bibid[1] + "/Export?style=marc";
ZU.doGet(marcUrl, scrapeMarc);
}
}
}
function scrapeMarc(text) {
var translator = Zotero.loadTranslator("import");
translator.setTranslator("a6ee60df-1ddc-4aae-bb25-45e0537be973");
translator.setString(text);
translator.getTranslatorObject(function (obj) {
var record = new obj.record();
// Populate the record from the MARC
record.importBinary(text);
var item = new Zotero.Item();
// If there is a url for the digitised item add it
var [url] = record.getFieldSubfields("856");
if (url && url.u && url.z && url.z.startsWith("National Library of Australia digitised item")) {
item.url = url.u;
}
record.translate(item);
item.complete();
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://catalogue.nla.gov.au/Record/773336?lookfor=labor&offset=10&max=65985",
"items": [
{
"itemType": "book",
"title": "Labor: readings on major issues",
"creators": [
{
"firstName": "Richard Allen",
"lastName": "Lester",
"creatorType": "author"
}
],
"date": "1967",
"callNumber": "331.082",
"libraryCatalog": "National Library of Australia (new catalog)",
"place": "New York",
"publisher": "Random House",
"shortTitle": "Labor",
"attachments": [],
"tags": [
{
"tag": "Labor unions"
},
{
"tag": "United States"
},
{
"tag": "United States"
},
{
"tag": "Working class"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://catalogue.nla.gov.au/Search/Home?lookfor=labor&type=all&limit%5B%5D=&submit=Find&filter[]=language:%22eng%22",
"items": "multiple"
},
{
"type": "web",
"url": "https://catalogue.nla.gov.au/Record/296911",
"items": [
{
"itemType": "book",
"title": "Australian almanack and general directory: for the year of Our Lord",
"creators": [
{
"firstName": "E. W.",
"lastName": "O'Shaughnessey",
"creatorType": "editor"
}
],
"date": "1835",
"libraryCatalog": "National Library of Australia (new catalog)",
"numPages": "1",
"place": "Sydney",
"publisher": "Printed at the Gazette Office by Anne Howe; published and sold by John Innes",
"shortTitle": "Australian almanack and general directory",
"url": "https://nla.gov.au/nla.obj-2976853543",
"attachments": [],
"tags": [
{
"tag": "Almanacs, Australian"
},
{
"tag": "Directories"
},
{
"tag": "Directories"
},
{
"tag": "New South Wales"
},
{
"tag": "Sydney (N.S.W.)"
}
],
"notes": [
{
"note": "National Library of Australia's FRM F1878 (N1) copy is bound in black leather with much decorative gilt embossing, including the inner edged of the covers, marbled endpapers and has the name of the owner highlighted onthe front cover: Rev Dr Fletcher. This copy contains the dedication: \"To Eliza Coster from Wm. Fletcher, September 21st, 1843\""
}
],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
150Aurimas Vinckevicius and Abe Jellinek^https?://[^/]*annualreviews\.org(:[\d]+)?(?=/)[^?]*(/(toc|journal|doi)/|showMost(Read|Cited)Articles|doSearch)/**
Copyright (c) 2012-2021 Aurimas Vinckevicius and Abe Jellinek
This program is free software: you can redistribute it and/or
modify it under the terms of the GNU Affero General Public License
as published by the Free Software Foundation, either version 3 of
the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public
License along with this program. If not, see
<http://www.gnu.org/licenses/>.
*/
// add using BibTex
function addByBibTex(doi, tags) {
var baseUrl = 'http://www.annualreviews.org';
var risRequest = baseUrl + '/action/downloadCitation';
var pdfUrl = baseUrl + '/doi/pdf/' + doi;
var postData = 'include=abs&direct=on&submit=Download+chapter+metadata&downloadFileName=citation'
+ '&format=bibtex' // bibtex
+ '&doi=' + encodeURIComponent(doi);
Zotero.Utilities.HTTP.doPost(risRequest, postData, function (text) {
var translator = Zotero.loadTranslator('import');
translator.setTranslator('9cb70025-a888-4a29-a210-93ec52da40d4'); // bibtex
translator.setString(text);
translator.setHandler('itemDone', function (obj, item) {
// title is sometimes in all caps
if (item.title == item.title.toUpperCase()) item.title = ZU.capitalizeTitle(item.title, true);
if (item.abstractNote) {
item.abstractNote = item.abstractNote.replace(/^...?Abstract/, "");
}
// add tags
if (tags) {
item.tags = tags;
}
// set PDF file
item.attachments = [{
url: pdfUrl,
title: 'Full Text PDF',
mimeType: 'application/pdf'
}];
item.complete();
});
translator.translate();
});
}
function detectWeb(doc, url) {
if (/\/doi\/(abs|full|pdf|10\.)/.test(url)) {
return 'journalArticle';
}
else if (getSearchResults(doc, true)) {
return 'multiple';
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.articleBoxWrapper');
if (!rows.length) rows = doc.querySelectorAll('.teaser');
for (let row of rows) {
let doi = attr(row, 'input[name="doi"]', 'value');
if (!doi) doi = ZU.cleanDOI(attr(row, 'h2 > a', 'href'));
let title = ZU.trimInternal(text(row, 'h2 > a'));
if (!doi || !title) continue;
if (checkOnly) return true;
found = true;
items[doi] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) Object.keys(items).forEach(addByBibTex);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
// match both /doi/abs/10.1146 (etc.) and /doi/10.1146
var match = url.match(/\/(?:doi)\/(?:abs|full|pdf)?\/?([^?]+)/);
if (match) {
let tags = attr(doc, 'meta[name="dc.Subject"]', 'content')
.split('; ')
.map(tag => ({ tag }));
addByBibTex(match[1], tags);
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://www.annualreviews.org/action/doSearch?pageSize=20&sortBy=relevancy&text1=something&field1=AllField&logicalOpe1=and&text2=&field2=Abstract&logicalOpe2=and&text3=&field3=Title&filterByPub=all&publication=1449&AfterYear=&BeforeYear=",
"items": "multiple"
},
{
"type": "web",
"url": "http://www.annualreviews.org/journal/biophys",
"items": "multiple"
},
{
"type": "web",
"url": "http://www.annualreviews.org/toc/biophys/40/1",
"items": "multiple"
},
{
"type": "web",
"url": "http://www.annualreviews.org/action/showMostCitedArticles?topArticlesType=sinceInception&journalCode=biophys",
"items": "multiple"
},
{
"type": "web",
"url": "http://www.annualreviews.org/action/showMostReadArticles?topArticlesType=sinceInception&journalCode=biophys",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.annualreviews.org/doi/abs/10.1146/annurev.biophys.29.1.545?prevSearch=&searchHistoryKey=",
"items": [
{
"itemType": "journalArticle",
"title": "Molecular Mechanisms Controlling Actin Filament Dynamics in Nonmuscle Cells",
"creators": [
{
"firstName": "Thomas D.",
"lastName": "Pollard",
"creatorType": "author"
},
{
"firstName": "Laurent",
"lastName": "Blanchoin",
"creatorType": "author"
},
{
"firstName": "R. Dyche",
"lastName": "Mullins",
"creatorType": "author"
}
],
"date": "2000",
"DOI": "10.1146/annurev.biophys.29.1.545",
"abstractNote": "We review how motile cells regulate actin filament assembly at their leading edge. Activation of cell surface receptors generates signals (including activated Rho family GTPases) that converge on integrating proteins of the WASp family (WASp, N-WASP, and Scar/WAVE). WASP family proteins stimulate Arp2/3 complex to nucleate actin filaments, which grow at a fixed 70° angle from the side of pre-existing actin filaments. These filaments push the membrane forward as they grow at their barbed ends. Arp2/3 complex is incorporated into the network, and new filaments are capped rapidly, so that activated Arp2/3 complex must be supplied continuously to keep the network growing. Hydrolysis of ATP bound to polymerized actin followed by phosphate dissociation marks older filaments for depolymerization by ADF/cofilins. Profilin catalyzes exchange of ADP for ATP, recycling actin back to a pool of unpolymerized monomers bound to profilin and thymosin-β4 that is poised for rapid elongation of new barbed ends.",
"extra": "PMID: 10940259",
"issue": "1",
"itemID": "doi:10.1146/annurev.biophys.29.1.545",
"libraryCatalog": "Annual Reviews",
"pages": "545-576",
"publicationTitle": "Annual Review of Biophysics and Biomolecular Structure",
"url": "https://doi.org/10.1146/annurev.biophys.29.1.545",
"volume": "29",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "ADF/cofilins"
},
{
"tag": "Arp2/3 complex"
},
{
"tag": "WASp"
},
{
"tag": "cell motility"
},
{
"tag": "profilin"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.annualreviews.org/toc/anchem/5/1",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.annualreviews.org/toc/linguistics/current",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.annualreviews.org/doi/abs/10.1146/annurev-linguistics-081720-111352",
"items": [
{
"itemType": "journalArticle",
"title": "Linguistics Then and Now: Some Personal Reflections",
"creators": [
{
"firstName": "Noam",
"lastName": "Chomsky",
"creatorType": "author"
}
],
"date": "2021",
"DOI": "10.1146/annurev-linguistics-081720-111352",
"abstractNote": "By mid-twentieth century, a working consensus had been reached in the linguistics community, based on the great achievements of preceding years. Synchronic linguistics had been established as a science, a “taxonomic” science, with sophisticated procedures of analysis of data. Taxonomic science has limits. It does not ask “why?” The time was ripe to seek explanatory theories, using insights provided by the theory of computation and studies of explanatory depth. That effort became the generative enterprise within the biolinguistics framework. Tensions quickly arose: The elements of explanatory theories (generative grammars) were far beyond the reach of taxonomic procedures. The structuralist principle that language is a matter of training and habit, extended by analogy, was unsustainable. More generally, the mood of “virtually everything is known” became “almost nothing is understood,” a familiar phenomenon in the history of science, opening a new and exciting era for a flourishing discipline.",
"issue": "1",
"itemID": "doi:10.1146/annurev-linguistics-081720-111352",
"libraryCatalog": "Annual Reviews",
"pages": "1-11",
"publicationTitle": "Annual Review of Linguistics",
"shortTitle": "Linguistics Then and Now",
"url": "https://doi.org/10.1146/annurev-linguistics-081720-111352",
"volume": "7",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "autobiography"
},
{
"tag": "biolinguistics program"
},
{
"tag": "explanatory linguistic theory"
},
{
"tag": "explanatory theories"
},
{
"tag": "generative enterprise"
},
{
"tag": "history of linguistics"
},
{
"tag": "history of science"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.annualreviews.org/doi/10.1146/annurev-physchem-040513-103712",
"items": [
{
"itemType": "journalArticle",
"title": "Phase Separation in Bulk Heterojunctions of Semiconducting Polymers and Fullerenes for Photovoltaics",
"creators": [
{
"firstName": "Neil D.",
"lastName": "Treat",
"creatorType": "author"
},
{
"firstName": "Michael L.",
"lastName": "Chabinyc",
"creatorType": "author"
}
],
"date": "2014",
"DOI": "10.1146/annurev-physchem-040513-103712",
"abstractNote": "Thin-film solar cells are an important source of renewable energy. The most efficient thin-film solar cells made with organic materials are blends of semiconducting polymers and fullerenes called the bulk heterojunction (BHJ). Efficient BHJs have a nanoscale phase-separated morphology that is formed during solution casting. This article reviews recent work to understand the nature of the phase-separation process resulting in the formation of the domains in polymer-fullerene BHJs. The BHJ is now viewed as a mixture of polymer-rich, fullerene-rich, and mixed polymer-fullerene domains. The formation of this structure can be understood through fundamental knowledge of polymer physics. The implications of this structure for charge transport and charge generation are given.",
"extra": "PMID: 24689796",
"issue": "1",
"itemID": "doi:10.1146/annurev-physchem-040513-103712",
"libraryCatalog": "Annual Reviews",
"pages": "59-81",
"publicationTitle": "Annual Review of Physical Chemistry",
"url": "https://doi.org/10.1146/annurev-physchem-040513-103712",
"volume": "65",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "organic electronics"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Avram Lyonhtml/*
Browser bookmarks translator
Copyright (C) 2011 Avram Lyon, ajlyon@gmail.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/* This translator imports and exports browser bookmark files in the standard
* "Netscape Bookmark Format".
* See http://msdn.microsoft.com/en-us/library/aa753582%28VS.85%29.aspx
* This code draws from the CSL style for bookmark export, by Rintze Zelle
* http://www.zotero.org/styles/bookmark-export
* Input looks like:
<!DOCTYPE NETSCAPE-Bookmark-file-1>
<!-- This is an automatically generated file.
It will be read and overwritten.
DO NOT EDIT! -->
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
<TITLE>Bookmarks</TITLE>
<H1>Bookmarks Menu</H1>
<DL>
<DT><A HREF="http://www.example.com/">Example Site</A></DT>
<DD>Longer title</DD>
</DL>
*/
var MAX_DETECT_LINES = 150;
var bookmarkRE = /<DT>[\s\r\n]*<A[^>]+HREF[\s\r\n]*=[\s\r\n]*(['"])([^"]+)\1[^>]*>([^<\n]+?)<\/A>/gi;
var collectionRE = /<DT>[\s\r\n]*<H3[^>]*>([^<]+?)<\/H3>/gi;
var collectionEndRE = /<\/DL>/gi;
var descriptionRE = /<DD>([\s\S]*?)(?=<(?:DT|\/DL|HR)>)/gi;
var bookmarkDetailsRE = /[\s\r\n](HREF|TAGS|ADD_DATE|SHORTCUTURL|DESCRIPTION)[s\r\n]*=[s\r\n]*(['"])([\s\S]*?)\2/gi;
function detectImport() {
var text = "";
var line, m;
var lastIndex = 0;
var i = 0;
while ((line = Zotero.read()) !== false && (i++ < MAX_DETECT_LINES)) {
text += line;
bookmarkRE.lastIndex = lastIndex; //don't restart searches from begining
m = bookmarkRE.exec(text);
if (m && lastIndex < bookmarkRE.lastIndex) lastIndex = bookmarkRE.lastIndex;
if (m && m[2].toUpperCase().indexOf('PLACE:') !== 0) {
Zotero.debug("Found a match with line: "+m[0]);
return true;
}
}
return false;
}
function doImport() {
var itemID = 0;
var l, m, re, line = '';
var allREs = {
b: bookmarkRE,
c: collectionRE,
ce: collectionEndRE,
d: descriptionRE
};
var firstMatch, firstMatchAt, openItem, lastIndex = 0;
var collectionStack = [], collection;
while ((l = Zotero.read()) !== false) {
line += '\n' + l;
bookmarkRE.lastIndex = collectionRE.lastIndex = descriptionRE.lastIndex = 0;
do {
firstMatch = false;
firstMatchType = false;
for (var re in allREs) {
if (re == 'd' && !openItem) {
continue;
}
allREs[re].lastIndex = lastIndex;
m = allREs[re].exec(line);
if (m && (!firstMatchType || m.index < firstMatch.index)) {
firstMatch = m;
firstMatchType = re;
}
}
if (firstMatchType) {
m = firstMatch;
lastIndex = allREs[firstMatchType].lastIndex;
}
switch (firstMatchType) {
case 'b': //create new webpage item
if (openItem) openItem.complete();
var title = m[3].trim();
if (!title || m[2].toUpperCase().indexOf('PLACE:') == 0) {
Z.debug('Skipping item with no title or special "place:" item');
openItem = false;
break;
}
openItem = new Zotero.Item("webpage");
openItem.title = ZU.unescapeHTML(title);
openItem.itemID = openItem.id = itemID++;
if (collection) collection.children.push(openItem);
bookmarkDetailsRE.lastIndex = 0;
var detailMatch;
while (detailMatch = bookmarkDetailsRE.exec(m[0])) {
switch (detailMatch[1].toUpperCase()) {
case 'HREF':
openItem.url = detailMatch[3];
break;
case 'DESCRIPTION':
openItem.abstractNote = detailMatch[3];
break;
case 'TAGS':
case 'SHORTCUTURL':
openItem.tags = openItem.tags.concat(detailMatch[3].split(/[\s\r\n]*,[\s\r\n]*/));
break;
case 'ADD_DATE':
openItem.accessDate = convertDate(detailMatch[3])
break;
}
}
break;
case 'c': //start a collection
if (openItem) {
openItem.complete();
openItem = false;
}
if (collection) collectionStack.push(collection)
collection = new Zotero.Collection();
collection.type = 'collection';
collection.name = ZU.unescapeHTML(m[1]);
Zotero.debug("Starting collection: "+ collection.name);
collection.children = new Array();
break;
case 'ce': //end a collection
if (openItem) {
openItem.complete();
openItem = false;
}
var parentCollection = collectionStack.pop();
if (parentCollection) {
if (collection.children.length) {
parentCollection.children.push(collection);
}
collection = parentCollection;
} else if (collection && collection.children.length) {
collection.complete();
collection = false;
}
break;
case 'd': //add description to bookmark and complete item
openItem.abstractNote = ZU.trimInternal(m[1]);
openItem.complete();
openItem = false;
break;
}
} while (firstMatch);
line = line.substr(lastIndex);
lastIndex = 0;
}
if (openItem) openItem.complete();
if (collection) {
var parentCollection;
while (parentCollection = collectionStack.pop()) {
if (collection.children.length) {
parentCollection.children.push(collection);
}
collection = parentCollection;
}
if (collection.children.length) {
collection.complete();
}
}
}
function convertDate(timestamp){
var d = new Date(timestamp*1000);
function pad(n) { return ZU.lpad(n, '0', 2) };
return ZU.lpad(d.getUTCFullYear(), '0', 4)+'-'
+ pad(d.getUTCMonth()+1)+'-'
+ pad(d.getUTCDate())+' '
+ pad(d.getUTCHours())+':'
+ pad(d.getUTCMinutes())+':'
+ pad(d.getUTCSeconds());
}
function doExport() {
var item;
var header = '<!DOCTYPE NETSCAPE-Bookmark-file-1>\n'+
'<!-- This is an automatically generated file.\n'+
' It will be read and overwritten.\n'+
' DO NOT EDIT! -->\n'+
'<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">\n'+
'<TITLE>Bookmarks</TITLE>\n'+
'<H1>Bookmarks Menu</H1>\n'+
'<DL>\n';
var footer = '</DL>';
Zotero.write(header);
while (item = Zotero.nextItem()) {
// TODO Be more verbose, making an informative title and including more metadata
let tags = item.tags.map(tag => tag.tag).join(',');
if (item.url) {
Zotero.write(' <DT><A HREF="'+item.url+'"');
if (tags) {
Zotero.write(' TAGS="' + tags + '"');
}
Zotero.write('>'+item.title+'</A>\n');
}
else Zotero.debug("Skipping item without URL: "+item.title);
}
Zotero.write(footer);
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "import",
"input": "<!DOCTYPE NETSCAPE-Bookmark-file-1>\n<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=UTF-8\" /><!-- This is an automatically generated file. -->\n<TITLE>Bookmarks</TITLE>\n<H1 LAST_MODIFIED=\"1396239625\">Bookmarks for anarcat from SemanticScuttle</H1>\n<DL>\n <DT><A HREF=\"https://pond.imperialviolet.org\" description=\"For secure, synchronous communication we have OTR and, when run over Tor, this is pretty good. But while we have secure asynchronous messaging in the form of PGP email, it's not forward secure and it gratuitously leaks traffic information. While a desire for forward secure PGP is hardly new, it still hasn't materialised in a widely usable manner.\n\nAdditionally, email is used predominately for insecure communications (mailing lists, etc) and is useful because it allows previously unconnected people to communicate as long as a (public) email address is known to one party. But the flip side to this is that volume and spam are driving people to use centralised email services. These provide such huge benefits to the majority of email communication, so it's unlikely that this trend is going to reverse. But, even with PGP, these services are trusted with hugely valuable traffic information if any party uses them.\n\nSo Pond is not email. Pond is forward secure, asynchronous messaging for the discerning. Pond messages are asynchronous, but are not a record; they expire automatically a week after they are received. Pond seeks to prevent leaking traffic information against everyone except a global passive attacker.\" hash=\"192dd9819b1e763872f6cf6a9ac1be26\" tags=\"software,security,social_networking,todo\" ADD_DATE=\"1396253182\" >Pond - Pond</a>\n\n",
"items": [
{
"itemType": "webpage",
"creators": [],
"notes": [],
"tags": [
"software",
"security",
"social_networking",
"todo"
],
"seeAlso": [],
"attachments": [],
"title": "Pond - Pond",
"id": 0,
"itemID": 0,
"url": "https://pond.imperialviolet.org",
"abstractNote": "For secure, synchronous communication we have OTR and, when run over Tor, this is pretty good. But while we have secure asynchronous messaging in the form of PGP email, it's not forward secure and it gratuitously leaks traffic information. While a desire for forward secure PGP is hardly new, it still hasn't materialised in a widely usable manner.\n\nAdditionally, email is used predominately for insecure communications (mailing lists, etc) and is useful because it allows previously unconnected people to communicate as long as a (public) email address is known to one party. But the flip side to this is that volume and spam are driving people to use centralised email services. These provide such huge benefits to the majority of email communication, so it's unlikely that this trend is going to reverse. But, even with PGP, these services are trusted with hugely valuable traffic information if any party uses them.\n\nSo Pond is not email. Pond is forward secure, asynchronous messaging for the discerning. Pond messages are asynchronous, but are not a record; they expire automatically a week after they are received. Pond seeks to prevent leaking traffic information against everyone except a global passive attacker.",
"accessDate": "2014-03-31 08:06:22"
}
]
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://larepublica\.pe//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2022 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
async function detectWeb(doc, url) {
if (doc.querySelector('.DefaultTitle')) {
return 'newspaperArticle';
}
return false;
}
async function doWeb(doc, url) {
await scrape(doc, url);
}
async function scrape(doc, url = doc.location.href) {
let translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', (_obj, item) => {
item.creators = [];
let authors = doc.querySelectorAll('.comp-autor-description a');
for (let author of authors) {
let authorName = author.textContent;
if (authorName) {
let parts = authorName.split(' ');
let firstName = parts.shift();
let fullNameWithComma = parts.join(' ') + ', ' + firstName;
item.creators.push(ZU.cleanAuthor(fullNameWithComma, 'author', true));
}
}
item.ISSN = '1605-3052';
item.complete();
});
let em = await translator.getTranslatorObject();
em.itemType = 'newspaperArticle';
await em.doWeb(doc, url);
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://larepublica.pe/politica/2022/06/22/elecciones-2022-peru-libre-sentenciados-y-acusados-buscan-ocupar-gobiernos-regionales-vladimir-cerron-pedro-castillo-jne/",
"items": [
{
"itemType": "newspaperArticle",
"title": "Candidatos por Perú Libre sentenciados y acusados buscan ocupar Gobiernos regionales",
"creators": [
{
"firstName": "María",
"lastName": "de los Angeles Morales Isla",
"creatorType": "author"
}
],
"date": "2022-06-22T10:54:17-05:00",
"ISSN": "1605-3052",
"abstractNote": "Afanes peligrosos. El partido de Vladimir Cerrón incluye a candidatos sentenciados por peculado y difamación, acusados de encubrir violencia sexual, clanes familiares de corrupción y maestros sancionados. Estos son los rostros con los que Perú Libre competirá en las elecciones regionales 2022.",
"language": "es",
"libraryCatalog": "larepublica.pe",
"section": "Política",
"url": "https://larepublica.pe/politica/2022/06/22/elecciones-2022-peru-libre-sentenciados-y-acusados-buscan-ocupar-gobiernos-regionales-vladimir-cerron-pedro-castillo-jne/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Elecciones 2022"
},
{
"tag": "Impresa"
},
{
"tag": "Perú Libre"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://larepublica.pe/economia/2022/06/22/minem-precio-de-combustibles-se-encarecio-hasta-en-s7-en-lo-que-va-del-ano-petroleo-wti-petroperu-osinergmin-gnv/",
"items": [
{
"itemType": "newspaperArticle",
"title": "Precio de combustibles se encareció hasta en S/7 en lo que va del año",
"creators": [
{
"firstName": "Hernán",
"lastName": "Torres",
"creatorType": "author"
},
{
"firstName": "Fernando",
"lastName": "Cuadros",
"creatorType": "author"
}
],
"date": "2022-06-22T04:52:40-05:00",
"ISSN": "1605-3052",
"abstractNote": "Efecto. El alza interminable del WTI, que actualmente oscila en US$ 109, mantiene contra las cuerdas a nuestro dependiente mercado. Es crucial masificar el uso de GNV en el parque automotor para aliviar economía de los hogares.",
"language": "es",
"libraryCatalog": "larepublica.pe",
"section": "Economía",
"url": "https://larepublica.pe/economia/2022/06/22/minem-precio-de-combustibles-se-encarecio-hasta-en-s7-en-lo-que-va-del-ano-petroleo-wti-petroperu-osinergmin-gnv/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Combustibles"
},
{
"tag": "Impresa"
},
{
"tag": "Ministerio de Energía y Minas"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Tim Sherratt (tim@timsherratt.org)^https?://librariestas\.ent\.sirsidynix\.net\.au/client/en_AU//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2022 Tim Sherratt
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
const formatMapping = {
photograph: "artwork",
"image (online)": "artwork",
eMusic: "audioRecording",
cd: "audioRecording",
"audiobook cd": "audioRecording",
eAudiobook: "audioRecording",
dvd: "videoRecording",
"archived website": "webpage",
manuscript: "manuscript",
map: "map",
picture: "artwork",
print: "artwork",
postcard: "artwork"
};
function detectWeb(doc, url) {
let catType = url.match(/en_AU\/(library|tas|names)\/search/);
if (url.includes("results") && getSearchResults(doc, true)) {
return "multiple";
}
else if ((catType && catType[1] == "tas") || url.includes("ARCHIVES_")) {
return "manuscript";
}
else if ((catType && catType[1] == "names") || url.includes("NAME_INDEXES")) {
return "manuscript";
}
else {
var formats = doc.querySelectorAll(".displayElementText.LOCAL_FORMAT");
for (let i = 0; i < formats.length; i++) {
if (formats[i].textContent in formatMapping) {
return formatMapping[formats[i].textContent];
}
}
return "book";
}
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) return;
ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll(".displayDetailLink a");
for (let i = 0; i < rows.length; i++) {
let href = rows[i].href;
let title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function getFieldText(doc, label) {
let fields = doc.querySelectorAll(".displayElementText." + label);
if (fields) {
let fieldTexts = [];
for (let i = 0; i < fields.length; ++i) {
fieldTexts.push(ZU.trimInternal(fields[i].textContent));
}
return fieldTexts.join(" | ");
}
return "";
}
function getLinkLists(doc, label, idx) {
var values = [];
let links = doc.querySelectorAll("." + label + " a[href*='" + idx + "']");
if (links) {
for (let i = 0; i < links.length; ++i) {
values.push(links[i].textContent);
}
}
return values;
}
function addPermalink(doc, item, idType) {
// The permalink is rendered via Javascript so not always available when you save mutiple items.
// The logic to create the permalinks is quite complicated for library items,
// so best to fallback to the system url for now.
// Try permalink first
let permalink = doc.querySelector("a[onclick^='return permalink']");
let archivesId = getFieldText(doc, "ARCHIVE_915");
let namesId = getFieldText(doc, "DOC_ID");
if (permalink) {
item.url = permalink.getAttribute("onclick").match(/(https.+)'\);$/)[1];
}
// Archives and Names indexes seem to have a consistent permalink pattern
else if (idType == "AI" && archivesId) {
item.url = "https://stors.tas.gov.au/" + idType + "/" + archivesId.replace(/\//g, "-");
}
else if (idType == "NI" && namesId) {
namesId = ZU.trim(namesId.split(":")[1]);
item.url = "https://stors.tas.gov.au/" + idType + "/" + namesId;
}
// Fall back to system url
else {
item.url = doc.location.href;
}
return item;
}
function addDigitalFiles(doc, item) {
// Add snapshots
item.attachments.push({
title: "Snapshot",
mimeType: "text/html",
document: doc
});
var digitalUrls = [];
var digitalLabels = {};
// Some digital file links are in hidden cells, with the links generated by JS.
// Scraping the generated links fails when processing multiple, presumably because
// the scrape completed before the links appeared. So we'll get them from the hidden cells.
var embeddedLinks = doc.querySelectorAll('.NI_URL_value');
if (embeddedLinks.length > 0) {
for (let i = 0; i < embeddedLinks.length; ++i) {
var url = text(embeddedLinks[i], "subfield_u");
// Link labels
let labelParts = [];
// Record type
if (embeddedLinks[i].querySelector("subfield_x")) {
labelParts.push(embeddedLinks[i].querySelector("subfield_x").textContent);
}
// Record ID
if (embeddedLinks[i].querySelector("subfield_z")) {
labelParts.push(embeddedLinks[i].querySelector("subfield_z").textContent);
}
// Convict records
if (url.includes("image_viewer.htm")) {
let urlParts = url.match(/image_viewer\.htm\?([A-Z0-9]+-\d+-\d+),\d+,(\d+)/);
// Z.debug(urlParts);
url = "https://stors.tas.gov.au/" + urlParts[1] + "p" + urlParts[2];
digitalUrls.push(url);
digitalLabels[url] = labelParts.join(", ") + ", page " + urlParts[2];
}
// Other records
else if (url.includes("stors.tas.gov.au")) {
// Z.debug(url);
let initPath = url.match(/\$init=(.+)/);
if (initPath) {
url = "https://stors.tas.gov.au/" + initPath[1];
}
var page = "";
if (url.match(/p(\d+)$/)) {
page = ", page " + url.match(/p(\d+)$/)[1];
}
digitalUrls.push(url);
digitalLabels[url] = labelParts.join(", ") + page;
}
}
}
// If the values aren't in hidden cells we'll get the links instead.
// Links to digital versions have a range of labels in the catalogue
// so we'll look for any links that look right.
else {
let digitalLinks = doc.querySelectorAll("a[href^='https://stors.tas.gov.au'][target='_new'], a[href^='https://stors.tas.gov.au'][target='_blank']");
for (let i = 0; i < digitalLinks.length; ++i) {
url = digitalLinks[i].href;
// If there's an init value we can use this to get the url for a specific page
let initPath = url.match(/\$init=(.+)/);
if (initPath) {
url = "https://stors.tas.gov.au/" + initPath[1];
}
digitalUrls.push(url);
// Save the link's text to use in the attachment label
digitalLabels[url] = digitalLinks[i].textContent;
}
}
// Zotero.debug(digitalUrls);
// Zotero.debug(digitalLabels);
// Process image viewer links
// This will only attach single images or PDFs
// The multi-page viewers use iFrames and seem to draw images from a couple of different sources.
// This makes it difficult to get at them reliably.
// Because there are so many variations that could break things, processDocs calls item.done() on error.
if (digitalUrls.length > 0) {
ZU.processDocuments(digitalUrls, function (digitalDoc) {
var mimeType = "image/jpeg";
// Find the download link
var downloadLink = digitalDoc.querySelector("a[title='Download'], a[id='downloadLink']");
// Sometimes the download link opens a modal, if so get the link from the modal code
if (downloadLink && !downloadLink.href.includes("/download/")) {
downloadLink = digitalDoc.querySelector("div.downloadDialog a");
}
if (downloadLink) {
// Z.debug(downloadLink.href);
// If the page is using a PDF viewer, set mime type to pdf
// Otherwise use default jpeg mimetype
let viewer = digitalDoc.querySelector("#viewer");
if (viewer && viewer.className.startsWith("pdf")) {
mimeType = "application/pdf";
}
// Zotero.debug(digitalDoc.location.href);
// Add file as attachment
item.attachments.push({
title: 'Libraries Tasmania digital item: ' + digitalLabels[digitalDoc.location.href],
mimeType: mimeType,
url: downloadLink.href
});
}
},
// On complete
function () {
item.complete();
},
// On error
function (e) {
Z.debug(e);
item.complete();
});
}
else {
item.complete();
}
}
function cleanText(text) {
// Removes unnecessary stuff from catalogue strings
var replace = ["[", "]", "<", ">"];
text = ZU.trim(text);
for (let i = 0; i < replace.length; ++i) {
text = text.replace(replace[i], "");
}
text = text.replace(/\.$/, "");
return text;
}
function scrape(doc, url) {
// Catalogue search type
var catType = url.match(/en_AU\/(library|tas|names|all)\/search/)[1];
// The 'all' search type can include anything.
// In this case URL checks should identify archives and names.
// Including both checks to try and catch as much as possible.
if (catType == "tas" || url.includes("ARCHIVES_")) {
scrapeArchives(doc, url);
}
else if (catType == "names" || url.includes("NAME_INDEXES")) {
scrapeNames(doc, url);
}
else {
scrapeLibrary(doc, url);
}
}
function scrapeLibrary(doc, url) {
// Format of item
var format = detectWeb(doc, url);
// If there's a 'Library View' tab we can use MARC
if (doc.querySelector("div#marc-tab0")) {
// call MARC translator
var translator = Zotero.loadTranslator("import");
translator.setTranslator("a6ee60df-1ddc-4aae-bb25-45e0537be973");
translator.getTranslatorObject(function (marc) {
var record = new marc.record();
var item = new Zotero.Item();
var fieldTag, indicators, fieldContent;
for (let row of doc.querySelectorAll("div#marc-tab0 table tr")) {
let fields = row.querySelectorAll("td");
fieldTag = ZU.trim(fields[0].textContent);
indicators = ZU.trim(fields[1].textContent);
// There don't seem to be any subfields in the records.
// Or at least I haven't found any.
// Adding in a subfield is necessary to get the translator to work.
fieldContent = marc.subfieldDelimiter + "a" + ZU.trim(fields[2].textContent);
record.addField(fieldTag, indicators, fieldContent);
}
record.translate(item);
// Doesn't seem to get format correctly from MARC, so add manually
item.itemType = format;
// Add reference number
item.callNumber = getFieldText(doc, "DOC_ID");
// Add permalink
item = addPermalink(doc, item, null);
// Add digitised files as attachments
addDigitalFiles(doc, item);
});
// No MARC so we have to scrape manually
}
else {
var item = new Zotero.Item(format);
item.title = getFieldText(doc, "T245_DISPLAY");
item.callNumber = getFieldText(doc, "DOC_ID");
// Creators
let authors = getLinkLists(doc, "AUTHOR_TALIS_FULL", "AUTHOR_INDEX");
for (let i = 0; i < authors.length; ++i) {
item.creators.push(ZU.cleanAuthor(authors[i], "author", true));
}
let contribs = getLinkLists(doc, "AUTHOR_OTHER_TALIS_FULL", "AUTHOR_INDEX");
for (let i = 0; i < contribs.length; ++i) {
item.creators.push(ZU.cleanAuthor(contribs[i], "contributor", true));
}
// PUBLICATION DETAILS
var pubInfo = getFieldText(doc, "PUBLICATION_INFO");
// Music can have a distributor
if (!pubInfo) {
pubInfo = getFieldText(doc, "DISTRIBUTION_264");
}
// eBooks?
if (!pubInfo) {
pubInfo = getFieldText(doc, "PUBLICATION_264");
}
// See if it matches standard format
var pubParts = pubInfo.match(/^(.+):(.+),(.+)$/);
if (pubParts) {
item.place = cleanText(pubParts[1]);
item.publisher = cleanText(pubParts[2]);
item.date = cleanText(pubParts[3]);
}
else {
item.publisher = pubInfo;
}
let contents = getFieldText(doc, "CONTENTS_TALIS");
let summary = getFieldText(doc, "SUMMARY_TALIS");
let notes = getFieldText(doc, "NOTES_TALIS");
let combined = [summary, contents, notes].join("\n\n");
item.abstractNote = combined ? combined : "";
// Physical description
let physDesc = getFieldText(doc, "DESC_TALIS");
let physParts = physDesc.split(";");
if (physParts.length == 2 && format == "book") {
item.numPages = cleanText(physParts[0]);
item["physical description"] = cleanText(physParts[1]);
}
else {
item["physical description"] = cleanText(physDesc);
}
item = addPermalink(doc, item, null);
addDigitalFiles(doc, item);
}
}
function scrapeArchives(doc) {
var item = new Zotero.Item("manuscript");
// Types should be Agency, Series, or Item
let typeLabel = ZU.trim(text(doc, ".T245_DISPLAY_label")).replace(/:$/, "").toLowerCase();
if (typeLabel == "description") {
item.manuscriptType = "item";
}
else {
item.manuscriptType = typeLabel;
}
item.title = getFieldText(doc, "T245_DISPLAY");
item.callNumber = getFieldText(doc, "ARCHIVE_915");
item.archiveLocation = getFieldText(doc, "ARCHIVES_ITEM_LOCN_BAY");
var description = getFieldText(doc, "ARCHIVES_ITEM_FURTHER_DESC");
// Agencies and series have a different note field
if (!description) {
description = getFieldText(doc, "TAS_IDX_500");
}
item.abstractNote = description;
// If there are start and end dates (as for series) save as a range
let startDate = getFieldText(doc, "ARCHIVES_SERIES_START_DATE");
let endDate = getFieldText(doc, "ARCHIVES_SERIES_END_DATE");
if (startDate && endDate) {
item.date = ZU.strToISO(startDate) + "/" + ZU.strToISO(endDate);
}
else if (startDate) {
item.date = ZU.strToISO(startDate);
}
// Save linked agencies as contributors
let agencyLabel = doc.querySelector("div[class*='ARCHIVES_SERIES_CREATING_AGEN'");
if (agencyLabel) {
let agencies = agencyLabel.nextElementSibling.querySelectorAll("td.ASlink");
for (let i = 0; i < agencies.length; ++i) {
item.creators.push({ lastName: agencies[i].innerText, creatorType: "contributor" });
}
}
// Save additional information to Extra
// Series
item.series = text(doc, "a[href*='ARCHIVES_SERIES']");
// Functions
let functions = getLinkLists(doc, "ARCHIVES_FUN_DIX");
if (functions.length > 0) {
item.functions = functions.join(", ");
}
// Descriptive fields -- add values to Extra
var tasFields = [
"ARCHIVES_ACCESS",
"ARCHIVES_AGENCY_SOURCES",
"ARCHIVES_AGENCIES_CREATING",
"ARCHIVES_SERIES_ARRANGEMENT"
];
for (let i = 0; i < tasFields.length; ++i) {
let label = doc.querySelector("." + tasFields[i] + "_label");
if (label) {
item[ZU.trim(label.textContent).replace(/:$/, "")] = getFieldText(doc, tasFields[i]);
}
}
item = addPermalink(doc, item, "AI");
addDigitalFiles(doc, item);
}
function scrapeNames(doc) {
var item = new Zotero.Item("manuscript");
// There can be multiple entries for title -- eg in case of divorce there are two names.
// getFieldText() will join multiple values with | delimiters
item.title = getFieldText(doc, "NI_NAME_FULL_DISPLAY");
item.callNumber = getFieldText(doc, "DOC_ID");
item.manuscriptType = "item";
item.index = getFieldText(doc, "NI_INDEX");
// Dates have many different labels, loop through this list until one is found
// then save to item.date
// Dates will also be saved to Extra (see below) with their specific labels.
const dateLabels = [
"NI_YEAR_DISPLAY",
"NI_ADMISS_DATE",
"NI_TRIAL_DATE",
"NI_BIRTH_DATE",
"NI_DEATH_DATE",
"NI_MARRIAGE_DATE",
"NI_ARRIVAL_DATE",
"NI_DEPARTURE_DATE",
"NI_INQUEST_DATE",
"NI_LAND_DATE",
"NI_DOC_HEALTH_DATE",
"NI_EMPLOY_DATE",
];
for (let i = 0; i < dateLabels.length; ++i) {
let displayDate = getFieldText(doc, dateLabels[i]);
if (displayDate) {
item.date = displayDate;
break;
}
}
// Name index records have many possible fields.
// This list was made by scanning sample records, so labels could be missing.
// Loop through this list, and if values exist save them to Extra.
const fields = [
"NI_OCCUP",
"NI_YEAR_DISPLAY",
"NI_SHIP_NATIVE_PLACE",
"NI_REMARKS",
"NI_GENDER",
"NI_MOTHER",
"NI_P_OCCUP",
"NI_BIRTH_DATE",
"NI_BAPTISM_DATE",
"NI_REG_PLACE",
"NI_REG_YEAR",
"NI_AGE",
"NI_DEATH_DATE",
"NI_SPOUSE",
"NI_SPOUSE_GENDER",
"NI_SPOUSE_AGE",
"NI_MARRIAGE_DATE",
"NI_NAME_RANK",
"NI_DEPARTURE_DATE",
"NI_DEPARTURE_PORT",
"NI_SHIP",
"NI_BOUND",
"NI_WILL_NO",
"NI_PAGE",
"NI_NAME_TITLE",
"NI_ARRIVAL_DATE",
"NI_VOYAGE_NO",
"NI_CON_IDX",
"NI_SHIP_OR_FREE1",
"NI_NAME2",
"NI_SHIP_OR_FREE2",
"NI_MP_DATE",
"NI_CORONER",
"NI_DESC",
"NI_INQUEST_DATE",
"NI_VERDICT",
"NI_LAND_DATE",
"NI_LOCATION",
"NI_DOC_HEALTH_DATE",
"NI_UNDER14",
"NI_CENSUS_DISTRICT",
"NI_NAME_STATUS",
"NI_TRIAL_DATE",
"NI_OFFENSE",
"NI_VERDICT",
"NI_PP_ID",
"NI_EMPLOYER",
"NI_PROPERTY",
"NI_EMPLOY_DATE",
"NI_NOMINATOR",
"NI_DOC_DATE",
"NI_FATHER",
"NI_P_OCCUP",
"NI_PRE_SCHOOL",
"NI_ADMISS_DATE"
];
// Add field values to Extras
for (let i = 0; i < fields.length; ++i) {
let label = doc.querySelector("." + fields[i] + "_label");
if (label) {
item[ZU.trim(label.textContent).replace(/:$/, "")] = getFieldText(doc, fields[i]);
}
}
item = addPermalink(doc, item, "NI");
addDigitalFiles(doc, item);
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://librariestas.ent.sirsidynix.net.au/client/en_AU/tas/search/detailnonmodal/ent:$002f$002fARCHIVES_SERIES$002f0$002fARCHIVES_SER_DIX:AD940/one",
"defer": true,
"items": [
{
"itemType": "manuscript",
"title": "Minutes of Meetings of Council",
"creators": [
{
"lastName": "University of Tasmania (TA92)",
"creatorType": "contributor"
}
],
"date": "1890-01-19/1992-07-10",
"abstractNote": "Official minutes of meetings. | These records are part of the holdings of the Tasmanian Archives",
"callNumber": "AD940",
"libraryCatalog": "Libraries Tasmania",
"manuscriptType": "series",
"url": "https://stors.tas.gov.au/AI/AD940",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://librariestas.ent.sirsidynix.net.au/client/en_AU/tas/search/detailnonmodal/ent:$002f$002fARCHIVES_DIGITISED$002f0$002fARCHIVES_DIG_DIX:NS6985-1-1/one",
"defer": true,
"items": [
{
"itemType": "manuscript",
"title": "COVID-19 Story / Elizabeth Kelly (Beth)",
"creators": [
{
"lastName": "Covid-19 Stories Project (TA2205)",
"creatorType": "contributor"
}
],
"date": "2021-01-20/2021-01-20",
"archiveLocation": "Hobart X 1 1",
"callNumber": "NS6985/1/1",
"libraryCatalog": "Libraries Tasmania",
"manuscriptType": "item",
"url": "https://stors.tas.gov.au/AI/NS6985-1-1",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
},
{
"title": "Libraries Tasmania digital item: NS6985-1-1",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://librariestas.ent.sirsidynix.net.au/client/en_AU/library/search/detailnonmodal/ent:$002f$002fSD_ILS$002f0$002fSD_ILS:491298/one",
"defer": true,
"items": [
{
"itemType": "book",
"title": "Lives of the most eminent English poets, with critical observations on their works: to which are added the \"Preface to Shakespeare\" and the review of \"The origin of evil\" / With a sketch of the author's life by Walter Scott",
"creators": [
{
"firstName": "Samuel",
"lastName": "Johnson",
"creatorType": "author"
}
],
"callNumber": "SD_ILS:491298",
"extra": "OCLC: 614762888",
"libraryCatalog": "Libraries Tasmania",
"numPages": "588",
"place": "London : Warne, [187- ]",
"shortTitle": "Lives of the most eminent English poets, with critical observations on their works",
"url": "https://stors.tas.gov.au/ILS/SD_ILS-491298",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "English poetry--18th century--History and criticism"
},
{
"tag": "English poetry--Early modern, 1500-1700--History and criticism"
},
{
"tag": "Poets, English"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://librariestas.ent.sirsidynix.net.au/client/en_AU/library/search/detailnonmodal/ent:$002f$002fLT_NAXOS_DIX$002f0$002fLT_NAXOS_DIX:TC871901/one",
"defer": true,
"items": [
{
"itemType": "audioRecording",
"title": "SCALERO, R.: Violin and Piano Works (M. Tortorelli, Meluso)",
"creators": [
{
"firstName": "Rosario",
"lastName": "Scalero",
"creatorType": "author"
},
{
"lastName": "Naxos Digital Services US",
"creatorType": "contributor"
}
],
"abstractNote": "I. Allegro (08 min. 26 sec.) / Scalero -- II. Adagio (06 min. 21 sec.) / Scalero -- III. Vivace, ma appassionato (08 min. 13 sec.) / Scalero -- No. 1. Lento, poi tempo di walzer (04 min. 31 sec.) / Scalero -- No. 2. Andante malinconico (03 min. 48 sec.) / Scalero -- No. 3. Allegro con brio (05 min. 39 sec.) / Scalero -- No. 1. Allegro (04 min. 50 sec.) / Scalero -- No. 2. Allegro, alla Scarlatti (03 min. 31 sec.) / Scalero -- No. 3. Allegro giusto (05 min. 30 sec.) / Scalero -- 12 Variazioni nach den Barucaba von Paganini, Op. 15 (16 min. 44 sec.) / Scalero",
"callNumber": "LT_NAXOS_DIX:TC871901",
"label": "Hong Kong : Naxos Digital Services US Inc. 3014",
"libraryCatalog": "Libraries Tasmania",
"shortTitle": "SCALERO, R.",
"url": "https://librariestas.ent.sirsidynix.net.au/client/en_AU/library/search/detailnonmodal/ent:$002f$002fLT_NAXOS_DIX$002f0$002fLT_NAXOS_DIX:TC871901/one",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://librariestas.ent.sirsidynix.net.au/client/en_AU/names/search/detailnonmodal/ent:$002f$002fNAME_INDEXES$002f0$002fNAME_INDEXES:1384365/one",
"defer": true,
"items": [
{
"itemType": "manuscript",
"title": "Crimey, Mary",
"creators": [],
"date": "10 Apr 1842",
"callNumber": "NAME_INDEXES:1384365",
"libraryCatalog": "Libraries Tasmania",
"manuscriptType": "item",
"url": "https://stors.tas.gov.au/NI/1384365",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
},
{
"title": "Libraries Tasmania digital item: Conduct Record, CON40/1/2, page 224",
"mimeType": "image/jpeg"
},
{
"title": "Libraries Tasmania digital item: Description List, CON19/1/3, page 139",
"mimeType": "image/jpeg"
},
{
"title": "Libraries Tasmania digital item: Indent, CON15/1/1 Pages 48-49",
"mimeType": "image/jpeg"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://librariestas.ent.sirsidynix.net.au/client/en_AU/names/search/detailnonmodal/ent:$002f$002fNAME_INDEXES$002f0$002fNAME_INDEXES:974802/one",
"defer": true,
"items": [
{
"itemType": "manuscript",
"title": "Crothers, Louisa",
"creators": [],
"date": "10 Sep 1872",
"callNumber": "NAME_INDEXES:974802",
"libraryCatalog": "Libraries Tasmania",
"manuscriptType": "item",
"url": "https://stors.tas.gov.au/NI/974802",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
},
{
"title": "Libraries Tasmania digital item: RGD33/1/10/ no 2801",
"mimeType": "image/jpeg"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Michael Berkowitz^https?://(www\.)?ingentaconnect\.com/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2020 Michael Berkowitz
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
// attr()/text() v2
// eslint-disable-next-line
function attr(docOrElem,selector,attr,index){var elem=index?docOrElem.querySelectorAll(selector).item(index):docOrElem.querySelector(selector);return elem?elem.getAttribute(attr):null;}function text(docOrElem,selector,index){var elem=index?docOrElem.querySelectorAll(selector).item(index):docOrElem.querySelector(selector);return elem?elem.textContent:null;}
function detectWeb(doc, url) {
if (url.includes("article?") || url.includes("article;") || url.includes("/art")) {
return "journalArticle";
}
// permalinks
else if (url.includes("/content/") && getRisUrl(doc)) {
return "journalArticle";
}
else if ((url.includes("search")) && getSearchResults(doc)) {
return "multiple";
}
return false;
}
function getSearchResults(doc) {
var items = {}, found = false;
var rows = doc.getElementsByClassName('searchResultTitle');
for (var i = 0; i < rows.length; i++) {
var id = ZU.xpathText(rows[i], './a/@href');
var title = ZU.xpathText(rows[i], './a/@title');
if (!id || !title) {
continue;
}
else {
found = true;
items[id] = title;
}
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) {
return;
}
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
}
else {
scrape(doc, url);
}
}
function getRisUrl(doc) {
return ZU.xpathText(doc, '//div[contains(@class,"export-formats")]/ul/li/a[contains(text(), "EndNote")]/@href');
}
function scrape(newDoc, url) {
var abs;
var risurl = getRisUrl(newDoc);
if (ZU.xpathText(newDoc, '//div[@id="abstract"]')) {
abs = Zotero.Utilities.trimInternal(ZU.xpathText(newDoc, '//div[@id="abstract"]')).substr(10);
}
var pdf = attr(newDoc, 'a.fulltext.pdf', 'data-popup');
if (!pdf) {
Z.debug("PDF URL not found - constructing from main URL");
pdf = url
.replace(/[?&#;].*/, '')
.replace('/content/', '/search/download?pub=infobike://')
+ '&mimetype=application/pdf&host=https://www.ingentaconnect.com';
}
if (ZU.xpathText(newDoc, '//div[@id="info"]/p[1]/a')) {
var keywords = ZU.xpathText(newDoc, '//div[@id="info"]/p[1]/a');
var key;
var keys = [];
while (key == keywords.iterateNext()) {
keys.push(Zotero.Utilities.capitalizeTitle(key.textContent, true));
}
}
Zotero.Utilities.HTTP.doGet(risurl, function (text) {
// fix spacing per spec
text = text.replace(/([A-Z0-9]{2}) ?-/g, "$1 -");
// Zotero.debug(text);
text = text.replace(/(PY\s+-\s+)\/+/, "$1");
text = text.replace(/ER\s\s-/, "") + "\nER - ";
var translator = Zotero.loadTranslator("import");
translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7");
translator.setString(text);
translator.setHandler("itemDone", function (obj, item) {
if (abs) item.abstractNote = abs;
if (pdf) item.attachments.push({ url: pdf, title: "IngentaConnect Full Text PDF", mimeType: "application/pdf" });
// Note that the RIS translator gives us a link to the record already
item.url = null;
if (keys) item.tags = keys;
if (item.date) item.date = item.date.replace(/T00:00:00\/*/, "");
if (item.DOI) {
if (item.DOI.match(/^doi:/)) {
item.DOI = item.DOI.substr(4);
}
}
item.complete();
});
translator.translate();
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.ingentaconnect.com/search%3bjsessionid=296g394n0j012.alice?form_name=quicksearch&ie=%25E0%25A5%25B0&value1=argentina&option1=tka&x=0&y=0",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.ingentaconnect.com/content/tpp/ep/2014/00000010/00000001/art00001",
"items": [
{
"itemType": "journalArticle",
"title": "Strategies for enabling the use of research evidence",
"creators": [
{
"lastName": "Gough",
"firstName": "David",
"creatorType": "author"
},
{
"lastName": "Boaz",
"firstName": "Annette",
"creatorType": "author"
}
],
"date": "2014-01-01",
"DOI": "10.1332/174426413X13836441441630",
"issue": "1",
"journalAbbreviation": "Evidence & Policy: A Journal of Research, Debate and Practice",
"libraryCatalog": "IngentaConnect",
"pages": "3-4",
"publicationTitle": "Evidence & Policy: A Journal of Research, Debate and Practice",
"volume": "10",
"attachments": [
{
"title": "IngentaConnect Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.ingentaconnect.com/search/article?option1=title&value1=credibility+associated+with+how+often+they+present+research+evidence+to+public+or+partly+government-owned+organisations&sortDescending=true&sortField=default&pageSize=10&index=1",
"items": [
{
"itemType": "journalArticle",
"title": "Are indicators of faculty members' credibility associated with how often they present research evidence to public or partly government-owned organisations? A cross-sectional survey",
"creators": [
{
"lastName": "Ouimet",
"firstName": "Mathieu",
"creatorType": "author"
},
{
"lastName": "Bédard",
"firstName": "Pierre-Olivier",
"creatorType": "author"
},
{
"lastName": "Léon",
"firstName": "Grégory",
"creatorType": "author"
},
{
"lastName": "Dagenais",
"firstName": "Christian",
"creatorType": "author"
}
],
"date": "2014-01-01",
"DOI": "10.1332/174426413X662699",
"abstractNote": "This study provides an empirical test of the assumption that the credibility of the messenger is one of the factors that influence knowledge mobilisation among policy makers. This general hypothesis was tested using a database of 321 social scientists from the province of Quebec that\ncombines survey and bibliometric data. A regression model was used to study the association between indicators of faculty members' credibility and the number of times they have presented research evidence to public or partly government-owned organisations over an 18-month period. Overall,\nempirical results provide new evidence supporting the credibility hypothesis.",
"issue": "1",
"journalAbbreviation": "Evidence & Policy: A Journal of Research, Debate and Practice",
"libraryCatalog": "IngentaConnect",
"pages": "5-27",
"publicationTitle": "Evidence & Policy: A Journal of Research, Debate and Practice",
"shortTitle": "Are indicators of faculty members' credibility associated with how often they present research evidence to public or partly government-owned organisations?",
"volume": "10",
"attachments": [
{
"title": "IngentaConnect Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "CREDIBILITY"
},
{
"tag": "CROSS-SECTIONAL SURVEY"
},
{
"tag": "FACULTY MEMBERS"
},
{
"tag": "KNOWLEDGE TRANSFER"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.ingentaconnect.com/search/article?option1=tka&value1=search&pageSize=10&index=1",
"items": [
{
"itemType": "journalArticle",
"title": "Search engine optimisation in 2017: A new world where old rules still matter",
"creators": [
{
"lastName": "Alpert",
"firstName": "Brian",
"creatorType": "author"
}
],
"date": "2017-03-01",
"abstractNote": "The ability for website content to be found on search engines has always been a concern for anyone managing a website. Search has evolved, however, and improving ‘findability’ means more today than ever, in no small part due to the sophisticated technologies underpinning\ntoday’s search engines. This paper discusses the current state of search, provides an overview of still-important variables and techniques for search engine optimisation, and discusses newer, important considerations. Also discussed are priorities for relaunching an existing site (or\nlaunching a new one), and a look at current trends that illuminate where things are heading.",
"issue": "1",
"journalAbbreviation": "Journal of Digital & Social Media Marketing",
"libraryCatalog": "IngentaConnect",
"pages": "39-60",
"publicationTitle": "Journal of Digital & Social Media Marketing",
"shortTitle": "Search engine optimisation in 2017",
"volume": "5",
"attachments": [
{
"title": "IngentaConnect Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "SEO"
},
{
"tag": "engine"
},
{
"tag": "findability"
},
{
"tag": "marketing"
},
{
"tag": "optimisation"
},
{
"tag": "rank"
},
{
"tag": "search"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
{"exportCharset":"UTF-8xBOM","exportNotes":false}100Philipp Zumstein and Aurimas Vinckeviciuscsv/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2014 Philipp Zumstein, Aurimas Vinckevicius
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
// The export will be stuck if you try to export to a csv-file
// which is already opend with Excel. Thus, close it before or rename
// the new csv-file.
var recordDelimiter = "\n",
fieldDelimiter = ",",
fieldWrapperCharacter = '"',
replaceNewlinesWith = " ", // Set to `false` for no replacement
valueSeparator = "; "; // For multi-value fields, like creators, tags, etc.
var normalizeDate = true; // Set to `false` if the date should be written as it is
// Exported columns in order of export
var exportedFields = [
// "Important" metadata
"key",
"itemType",
"publicationYear",
"creators/author",
"title",
"publicationTitle",
"ISBN",
"ISSN",
"DOI",
"url",
"abstractNote",
"date",
"dateAdded",
"dateModified",
// Other common fields
"accessDate",
"pages",
"numPages",
"issue",
"volume",
"numberOfVolumes",
"journalAbbreviation",
"shortTitle",
"series",
"seriesNumber",
"seriesText",
"seriesTitle",
"publisher",
"place",
"language",
"rights",
"type",
"archive",
"archiveLocation",
"libraryCatalog",
"callNumber",
"extra",
"notes",
"attachments/path",
"attachments/url",
"tags/own",
"tags/automatic",
// Creators
"creators/editor",
"creators/seriesEditor",
"creators/translator",
"creators/contributor",
"creators/attorneyAgent",
"creators/bookAuthor",
"creators/castMember",
"creators/commenter",
"creators/composer",
"creators/cosponsor",
"creators/counsel",
"creators/interviewer",
"creators/producer",
"creators/recipient",
"creators/reviewedAuthor",
"creators/scriptwriter",
"creators/wordsBy",
"creators/guest",
// Other fields
"number",
"edition",
"runningTime",
"scale",
"medium",
"artworkSize",
"filingDate",
"applicationNumber",
"assignee",
"issuingAuthority",
"country",
"meetingName",
"conferenceName",
"court",
"references",
"reporter",
"legalStatus",
"priorityNumbers",
"programmingLanguage",
"version",
"system",
"code",
"codeNumber",
"section",
"session",
"committee",
"history",
"legislativeBody"
];
// Creators that should map to base type
var creatorBaseTypes = {
interviewee: 'author',
director: 'author',
artist: 'author',
sponsor: 'author',
contributor: 'author',
inventor: 'author',
cartographer: 'author',
performer: 'author',
presenter: 'author',
podcaster: 'author',
programmer: 'author'
};
var exportNotes;
function doExport() {
exportNotes = Zotero.getOption("exportNotes");
// Until we fix UTF-8xBOM export, we'll write the BOM manually
Zotero.write("\uFEFF");
writeColumnHeaders();
var item;
while ((item = Zotero.nextItem())) {
if (item.itemType == "note" || item.itemType == "attachment") continue;
let line = '';
for (let i = 0; i < exportedFields.length; i++) {
line += (i ? fieldDelimiter : recordDelimiter)
+ getValue(item, exportedFields[i]);
}
Zotero.write(line);
}
}
var escapeRE = new RegExp(fieldWrapperCharacter, 'g');
function escapeValue(str) {
if (typeof replaceNewlinesWith == 'string') {
str = str.replace(/[\r\n]+/g, replaceNewlinesWith);
}
return str.replace(escapeRE, fieldWrapperCharacter + '$&');
}
function writeColumnHeaders() {
var line = '';
for (let i = 0; i < exportedFields.length; i++) {
line += (i ? fieldDelimiter : '') + fieldWrapperCharacter;
var label = exportedFields[i].split('/');
switch (label[0]) {
case 'creators':
label = label[1];
break;
case 'tags':
label = (label[1] == 'own' ? 'Manual Tags' : 'Automatic Tags');
break;
case 'attachments':
label = (label[1] == 'url' ? 'Link Attachments' : 'File Attachments');
break;
default:
label = label[0];
}
// Split individual words in labels and capitalize property
label = label[0].toUpperCase() + label.substr(1);
label = label.replace(/([a-z])([A-Z])/g, '$1 $2');
line += escapeValue(label) + fieldWrapperCharacter;
}
Zotero.write(line);
}
function getValue(item, field) {
var split = field.split('/'), value = fieldWrapperCharacter;
switch (split[0]) {
// Get key from URI (which on translation-server might just be the key)
case 'key':
value += item.uri.match(/([A-Z0-9]+)$/)[1];
break;
case 'publicationYear':
if (item.date) {
var date = ZU.strToDate(item.date);
if (date.year) value += escapeValue(date.year);
}
break;
case 'creators':
var creators = [];
for (let i = 0; i < item.creators.length; i++) {
var creator = item.creators[i];
var baseCreator = creatorBaseTypes[creator.creatorType];
if (creator.creatorType != split[1] && baseCreator !== split[1]) {
continue;
}
creators.push(creator.lastName
+ (creator.firstName ? ', ' + creator.firstName : ''));
}
value += escapeValue(creators.join(valueSeparator));
break;
case 'tags':
var tags = [];
var tagType = split[1] == 'automatic' ? 1 : 0;
for (let i = 0; i < item.tags.length; i++) {
if ((item.tags[i].type || 0) === tagType) {
tags.push(item.tags[i].tag);
}
}
value += escapeValue(tags.join(valueSeparator));
break;
case 'attachments':
var paths = [];
for (let i = 0; i < item.attachments.length; i++) {
if (split[1] == 'path') {
paths.push(item.attachments[i].localPath);
}
else if (split[1] == 'url' && !item.attachments[i].localPath) {
paths.push(item.attachments[i].url);
}
}
value += escapeValue(paths.join(valueSeparator));
break;
case 'notes':
if (!exportNotes) break;
var notes = [];
for (let i = 0; i < item.notes.length; i++) {
notes.push(item.notes[i].note);
}
value += escapeValue(notes.join(valueSeparator));
break;
case 'date':
if (item.date) {
var dateISO = ZU.strToISO(item.date);
if (normalizeDate && dateISO) {
value += dateISO;
}
else {
value += item.date;
}
}
break;
default:
if (item[field] || (item.uniqueFields && item.uniqueFields[field])) {
value += escapeValue('' + (item[field] || (item.uniqueFields && item.uniqueFields[field])));
}
}
return value + fieldWrapperCharacter;
}
/** BEGIN TEST CASES **/
var testCases = [
]
/** END TEST CASES **/
250Matt Burton, Sebastian Karcher^[^?#]+(/content/([0-9.]+[A-Z\-]*/|current|firstcite|early)|/search\?.*?\bsubmit=|/search(/results)?\?fulltext=|/cgi/collection/.|/search/.)/*
Highwire 2.0 Translator Copyright (C) 2014-2020 Matt Burton,
Sebastian Karcher, and Zotero contributors
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
const preprintType = ZU.fieldIsValidForType('title', 'preprint')
? 'preprint'
: 'report';
function getSearchResults(doc, url, checkOnly) {
var xpaths = [
{
searchx: '//li[contains(@class, "toc-cit") and not(ancestor::div/h2/a/text() = "Correction" or ancestor::div/h2/a/text() = "Corrections")]',
titlex: './/h4'
},
{
searchx: '//div[@id="normal-search-results"]//*[contains(@class, "results-cit cit")]',
titlex: './/*[contains(@class, "cit-title")]'
},
{
searchx: '//div[contains(@class, "toc-level level3")]//ul[@class="cit-list"]/div',
titlex: './/span[contains(@class, "cit-title")]'
},
{
searchx: '//div[contains(@class,"main-content-wrapper")]//div[contains(@class, "highwire-article-citation")]',
titlex: './/a[contains(@class, "highwire-cite-linked-title")]'
},
{
// BMJ quick search
searchx: '//ol[contains(@class, "search-results")]/li[h3[@class="title"]]',
titlex: './h3[@class="title"]'
},
{
// BMJ advanced search
searchx: '//ul[contains(@class,"highwire-search-results-list")]//li[contains(@class, "search-result")]',
titlex: './/a[contains(@class, "highwire-cite-linked-title")]'
}
];
var found = false, items = {},
// exclude cit-site-url for Sage Advanced Search (no stable URLs for testing)
linkx = '(.//a[not(contains(@href, "hasaccess.xhtml")) and not(@class="cit-site-url")])[1]';
for (var i = 0; i < xpaths.length && !found; i++) {
var rows = ZU.xpath(doc, xpaths[i].searchx);
if (!rows.length) continue;
for (var j = 0, n = rows.length; j < n; j++) {
var title = ZU.xpath(rows[j], xpaths[i].titlex)[0];
if (!title) continue;
var link;
if (title.nodeName == 'A') {
link = title;
}
else {
link = ZU.xpath(rows[j], linkx)[0];
if (!link || !link.href) continue;
}
items[link.href] = ZU.trimInternal(title.textContent);
found = true;
if (checkOnly) return true;
}
}
if (found) Zotero.debug('Found search results using xpath set #' + (i - 1));
return found ? items : null;
}
// get abstract
function getAbstract(doc) {
// abstract, summary
var abstrSections = ZU.xpath(doc,
'//div[contains(@id,"abstract") or @class="abstractSection"]/*[not(contains(@class,"section-nav")) and not(contains(@class,"kwd"))]');
var abstr = '';
var paragraph;
for (var i = 0, n = abstrSections.length; i < n; i++) {
paragraph = abstrSections[i].textContent.trim();
// ignore the abstract heading
if (paragraph.toLowerCase() == 'abstract'
|| paragraph.toLowerCase() == 'summary') {
continue;
}
// put all lines of a paragraph on a single line
paragraph = paragraph.replace(/\s+/g, ' ');
abstr += paragraph + "\n";
}
return abstr.trim();
}
// some journals display keywords
function getKeywords(doc) {
// some journals are odd and don't work with this.
// e.g. http://jn.nutrition.org/content/130/12/3122S.abstract
var keywords = ZU.xpath(doc, '//ul[contains(@class,"kwd-group")]//a');
var kwds = [];
for (var i = 0, n = keywords.length; i < n; i++) {
// don't break for empty nodes
if (keywords[i].textContent) kwds.push(keywords[i].textContent.trim());
}
return kwds;
}
// mimetype map for supplementary attachments
// intentionally excluding potentially large files like videos and zip files
var suppTypeMap = {
pdf: 'application/pdf',
// 'zip': 'application/zip',
doc: 'application/msword',
docx: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
xls: 'application/vnd.ms-excel',
xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
};
// attach supplementary information
function attachSupplementary(doc, item, next) {
var navDiv = doc.getElementById('article-cb-main')
|| doc.getElementById('article-views')
|| ZU.xpath(doc, '//div[contains(@class, "cb-section")]')[0]; // http://www.plantphysiol.org/content/162/1/9.abstract
if (navDiv) {
var suppLink = ZU.xpath(navDiv, './/a[@rel="supplemental-data"]')[0]
|| ZU.xpath(doc, '//a[@rel="supplemental-data"]')[0];
if (suppLink) {
var attachAsLink = Z.getHiddenPref("supplementaryAsLink");
if (attachAsLink) {
item.attachments.push({
title: "Supplementary info",
url: suppLink.href,
mimeType: 'text/html',
snapshot: false
});
}
else {
ZU.processDocuments(suppLink.href, function (newDoc, url) {
// sciencemag.org
var container = newDoc.getElementById('sci-bd');
if (container) {
var dts = ZU.xpath(container, './dl/dt');
for (let i = 0, n = dts.length; i < n; i++) {
let dt = dts[i];
let title = ZU.trimInternal(dt.textContent);
let dd = dt.nextElementSibling;
let description;
if (dd.nodeName.toUpperCase() == 'DD') {
if (dd.firstElementChild
&& dd.firstElementChild.nodeName.toUpperCase() == 'UL') {
description = ZU.xpathText(dd, './ul/li', null, '; ');
}
else {
description = dd.textContent;
}
if (description) {
description = ZU.trimInternal(description)
.replace(/\s;/g, ';');
if (description.indexOf(title) === 0
|| title.toUpperCase() == 'DOWNLOAD SUPPLEMENT') {
title = '';
}
else {
title += '. ';
}
title += description;
}
}
if (title.toUpperCase() == 'DOWNLOAD SUPPLEMENT') {
title = 'Supplementary Data';
}
let suppUrl = dt.getElementsByTagName('a')[0];
if (!suppUrl) continue;
suppUrl = suppUrl.href;
let type = suppTypeMap[url.substr(url.lastIndexOf('.') + 1).toLowerCase()];
// don't download files with unknown type.
// Could be large files we're not accounting for, like videos,
// or HTML pages that we would end up taking snapshots of
let snapshot = !attachAsLink && type;
item.attachments.push({
title: title,
url: suppUrl,
mimeType: type,
snapshot: !!snapshot
});
}
next(doc, item);
return;
}
// others
container = newDoc.getElementById('content-block');
if (container) {
var links = ZU.xpath(container, './h1[@class="data-supp-article-title"]/following-sibling::div//ul//a');
var counters = {};
for (let i = 0, n = links.length; i < n; i++) {
let title = links[i].nextSibling; // http://www.plantphysiol.org/content/162/1/9.abstract
if (title) {
title = title.textContent
.replace(/^[^a-z]+/i, '').trim();
}
if (!title) {
title = ZU.trimInternal(links[i].textContent.trim())
.replace(/^download\s+/i, '')
.replace(/\([^()]+\)$/, '');
}
let tUC = title.toUpperCase();
if (!counters[tUC]) { // when all supp data has the same title, we'll add some numbers
counters[tUC] = 1;
}
else {
title += ' ' + (++counters[tUC]);
}
let suppUrl = links[i].href;
// determine type by extension
let type = suppTypeMap[url.substr(url.lastIndexOf('.') + 1).toLowerCase()];
// don't download files with unknown type.
// Could be large files we're not accounting for, like videos,
// or HTML pages that we would end up taking snapshots of
let snapshot = !attachAsLink && type;
item.attachments.push({
title: title,
url: suppUrl,
mimeType: type,
snapshot: !!snapshot
});
}
next(doc, item);
}
});
}
}
}
}
// add using embedded metadata
function addEmbMeta(doc, url) {
var translator = Zotero.loadTranslator("web");
// Embedded Metadata translator
translator.setTranslator("951c027d-74ac-47d4-a107-9c3069ab7b48");
translator.setDocument(doc);
translator.setHandler("itemDone", function (obj, item) {
if (item.publicationTitle.endsWith('Rxiv')) {
item.itemType = preprintType;
if (preprintType != 'preprint') {
item.extra = (item.extra || '') + '\nType: article';
}
item.libraryCatalog = item.publisher = item.publicationTitle;
delete item.publicationTitle;
delete item.institution;
}
// remove all caps in Names and Titles
for (let i = 0; i < item.creators.length; i++) {
// Z.debug(item.creators[i])
if (item.creators[i].lastName == item.creators[i].lastName.toUpperCase()) {
item.creators[i].lastName
= ZU.capitalizeTitle(item.creators[i].lastName, true);
}
// we test for existence of first Name to not fail with spotty data.
if (item.creators[i].firstName && item.creators[i].firstName == item.creators[i].firstName.toUpperCase()) {
item.creators[i].firstName
= ZU.capitalizeTitle(item.creators[i].firstName, true);
}
}
if (item.title == item.title.toUpperCase()) {
item.title = ZU.capitalizeTitle(item.title, true);
}
// BMJ doesn't include pages in metadata; grab article number from recommended citation
if (!item.pages) {
let pages = ZU.xpathText(doc, '//span[@class="highwire-cite-article-as"]');
if (pages && pages.includes(":")) {
item.pages = pages.trim().match(/:([^:]+)$/)[1];
}
}
var abs = getAbstract(doc);
if (abs) item.abstractNote = abs;
var kwds = getKeywords(doc);
if (kwds) item.tags = kwds;
if (item.notes) item.notes = [];
// try to get PubMed ID and link if we don't already have it from EM
var pmDiv;
if ((!item.extra || item.extra.search(/\bPMID:/) == -1)
&& (pmDiv = doc.getElementById('cb-art-pm'))) {
var pmId = ZU.xpathText(pmDiv, './/a[contains(@class, "cite-link")]/@href')
|| ZU.xpathText(pmDiv, './ol/li[1]/a/@href'); // e.g. http://www.pnas.org/content/108/52/20881.full
if (pmId) pmId = pmId.match(/access_num=(\d+)/);
if (pmId) {
if (item.extra) item.extra += '\n';
else item.extra = '';
item.extra += 'PMID: ' + pmId[1];
item.attachments.push({
title: "PubMed entry",
url: "http://www.ncbi.nlm.nih.gov/pubmed/" + pmId[1],
mimeType: "text/html",
snapshot: false
});
}
}
if (Z.getHiddenPref && Z.getHiddenPref("attachSupplementary")) {
try { // don't fail if we can't attach supplementary data
var async = attachSupplementary(doc, item, function (doc, item) {
item.complete();
});
}
catch (e) {
Z.debug("Error attaching supplementary information.");
Z.debug(e);
if (async) item.complete();
}
if (!async) {
item.complete();
}
}
else {
item.complete();
}
});
translator.getTranslatorObject(function (trans) {
trans.doWeb(doc, url);
});
}
function detectWeb(doc, url) {
var highwiretest = false;
// quick test for highwire embedded pdf page
highwiretest = url.includes('.pdf+html');
// only queue up the sidebar for data extraction (it seems to always be present)
if (highwiretest && url.includes('?frame=sidebar')) {
return false;
}
if (!highwiretest) {
// lets hope this installations don't tweak this...
highwiretest = ZU.xpath(doc,
"//link[@href='/shared/css/hw-global.css']|//link[contains(@href,'highwire.css')]").length;
}
if (!highwiretest) {
// (they did)
highwiretest = doc.querySelector('.highwire-article-citation');
}
if (highwiretest) {
if (/content\/(early\/)?[0-9]+/.test(url)
&& !url.includes('/suppl/')
) {
if (url.includes('medrxiv.org') || url.includes('biorxiv.org')) {
return preprintType;
}
else {
return "journalArticle";
}
}
else if (getSearchResults(doc, url, true)) {
return "multiple";
}
}
return false;
}
function doWeb(doc, url) {
if (!url) url = doc.documentElement.location;
// Z.debug(items)
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), addEmbMeta);
});
}
else if (url.includes('.full.pdf+html')) {
// abstract in EM is not reliable. Fetch abstract page and scrape from there.
ZU.processDocuments(url.replace(/\.full\.pdf\+html.*/, ''), addEmbMeta);
}
else {
addEmbMeta(doc, url);
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.pnas.org/content/108/52/20881.full",
"items": [
{
"itemType": "journalArticle",
"title": "A yeast functional screen predicts new candidate ALS disease genes",
"creators": [
{
"firstName": "Julien",
"lastName": "Couthouis",
"creatorType": "author"
},
{
"firstName": "Michael P.",
"lastName": "Hart",
"creatorType": "author"
},
{
"firstName": "James",
"lastName": "Shorter",
"creatorType": "author"
},
{
"firstName": "Mariely",
"lastName": "DeJesus-Hernandez",
"creatorType": "author"
},
{
"firstName": "Renske",
"lastName": "Erion",
"creatorType": "author"
},
{
"firstName": "Rachel",
"lastName": "Oristano",
"creatorType": "author"
},
{
"firstName": "Annie X.",
"lastName": "Liu",
"creatorType": "author"
},
{
"firstName": "Daniel",
"lastName": "Ramos",
"creatorType": "author"
},
{
"firstName": "Niti",
"lastName": "Jethava",
"creatorType": "author"
},
{
"firstName": "Divya",
"lastName": "Hosangadi",
"creatorType": "author"
},
{
"firstName": "James",
"lastName": "Epstein",
"creatorType": "author"
},
{
"firstName": "Ashley",
"lastName": "Chiang",
"creatorType": "author"
},
{
"firstName": "Zamia",
"lastName": "Diaz",
"creatorType": "author"
},
{
"firstName": "Tadashi",
"lastName": "Nakaya",
"creatorType": "author"
},
{
"firstName": "Fadia",
"lastName": "Ibrahim",
"creatorType": "author"
},
{
"firstName": "Hyung-Jun",
"lastName": "Kim",
"creatorType": "author"
},
{
"firstName": "Jennifer A.",
"lastName": "Solski",
"creatorType": "author"
},
{
"firstName": "Kelly L.",
"lastName": "Williams",
"creatorType": "author"
},
{
"firstName": "Jelena",
"lastName": "Mojsilovic-Petrovic",
"creatorType": "author"
},
{
"firstName": "Caroline",
"lastName": "Ingre",
"creatorType": "author"
},
{
"firstName": "Kevin",
"lastName": "Boylan",
"creatorType": "author"
},
{
"firstName": "Neill R.",
"lastName": "Graff-Radford",
"creatorType": "author"
},
{
"firstName": "Dennis W.",
"lastName": "Dickson",
"creatorType": "author"
},
{
"firstName": "Dana",
"lastName": "Clay-Falcone",
"creatorType": "author"
},
{
"firstName": "Lauren",
"lastName": "Elman",
"creatorType": "author"
},
{
"firstName": "Leo",
"lastName": "McCluskey",
"creatorType": "author"
},
{
"firstName": "Robert",
"lastName": "Greene",
"creatorType": "author"
},
{
"firstName": "Robert G.",
"lastName": "Kalb",
"creatorType": "author"
},
{
"firstName": "Virginia M.-Y.",
"lastName": "Lee",
"creatorType": "author"
},
{
"firstName": "John Q.",
"lastName": "Trojanowski",
"creatorType": "author"
},
{
"firstName": "Albert",
"lastName": "Ludolph",
"creatorType": "author"
},
{
"firstName": "Wim",
"lastName": "Robberecht",
"creatorType": "author"
},
{
"firstName": "Peter M.",
"lastName": "Andersen",
"creatorType": "author"
},
{
"firstName": "Garth A.",
"lastName": "Nicholson",
"creatorType": "author"
},
{
"firstName": "Ian P.",
"lastName": "Blair",
"creatorType": "author"
},
{
"firstName": "Oliver D.",
"lastName": "King",
"creatorType": "author"
},
{
"firstName": "Nancy M.",
"lastName": "Bonini",
"creatorType": "author"
},
{
"firstName": "Vivianna Van",
"lastName": "Deerlin",
"creatorType": "author"
},
{
"firstName": "Rosa",
"lastName": "Rademakers",
"creatorType": "author"
},
{
"firstName": "Zissimos",
"lastName": "Mourelatos",
"creatorType": "author"
},
{
"firstName": "Aaron D.",
"lastName": "Gitler",
"creatorType": "author"
}
],
"date": "2011/12/27",
"DOI": "10.1073/pnas.1109434108",
"ISSN": "0027-8424, 1091-6490",
"abstractNote": "Amyotrophic lateral sclerosis (ALS) is a devastating and universally fatal neurodegenerative disease. Mutations in two related RNA-binding proteins, TDP-43 and FUS, that harbor prion-like domains, cause some forms of ALS. There are at least 213 human proteins harboring RNA recognition motifs, including FUS and TDP-43, raising the possibility that additional RNA-binding proteins might contribute to ALS pathogenesis. We performed a systematic survey of these proteins to find additional candidates similar to TDP-43 and FUS, followed by bioinformatics to predict prion-like domains in a subset of them. We sequenced one of these genes, TAF15, in patients with ALS and identified missense variants, which were absent in a large number of healthy controls. These disease-associated variants of TAF15 caused formation of cytoplasmic foci when expressed in primary cultures of spinal cord neurons. Very similar to TDP-43 and FUS, TAF15 aggregated in vitro and conferred neurodegeneration in Drosophila, with the ALS-linked variants having a more severe effect than wild type. Immunohistochemistry of postmortem spinal cord tissue revealed mislocalization of TAF15 in motor neurons of patients with ALS. We propose that aggregation-prone RNA-binding proteins might contribute very broadly to ALS pathogenesis and the genes identified in our yeast functional screen, coupled with prion-like domain prediction analysis, now provide a powerful resource to facilitate ALS disease gene discovery.",
"extra": "PMID: 22065782",
"issue": "52",
"journalAbbreviation": "PNAS",
"language": "en",
"libraryCatalog": "www.pnas.org",
"pages": "20881-20890",
"publicationTitle": "Proceedings of the National Academy of Sciences",
"rights": "© . Freely available online through the PNAS open access option.",
"url": "https://www.pnas.org/content/108/52/20881",
"volume": "108",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Snapshot",
"mimeType": "text/html"
},
{
"title": "PubMed entry",
"mimeType": "text/html",
"snapshot": false
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://genesdev.cshlp.org/content/16/14/1779",
"items": [
{
"itemType": "journalArticle",
"title": "G9a histone methyltransferase plays a dominant role in euchromatic histone H3 lysine 9 methylation and is essential for early embryogenesis",
"creators": [
{
"firstName": "Makoto",
"lastName": "Tachibana",
"creatorType": "author"
},
{
"firstName": "Kenji",
"lastName": "Sugimoto",
"creatorType": "author"
},
{
"firstName": "Masami",
"lastName": "Nozaki",
"creatorType": "author"
},
{
"firstName": "Jun",
"lastName": "Ueda",
"creatorType": "author"
},
{
"firstName": "Tsutomu",
"lastName": "Ohta",
"creatorType": "author"
},
{
"firstName": "Misao",
"lastName": "Ohki",
"creatorType": "author"
},
{
"firstName": "Mikiko",
"lastName": "Fukuda",
"creatorType": "author"
},
{
"firstName": "Naoki",
"lastName": "Takeda",
"creatorType": "author"
},
{
"firstName": "Hiroyuki",
"lastName": "Niida",
"creatorType": "author"
},
{
"firstName": "Hiroyuki",
"lastName": "Kato",
"creatorType": "author"
},
{
"firstName": "Yoichi",
"lastName": "Shinkai",
"creatorType": "author"
}
],
"date": "07/15/2002",
"DOI": "10.1101/gad.989402",
"ISSN": "0890-9369, 1549-5477",
"abstractNote": "Covalent modification of histone tails is crucial for transcriptional regulation, mitotic chromosomal condensation, and heterochromatin formation. Histone H3 lysine 9 (H3-K9) methylation catalyzed by the Suv39h family proteins is essential for establishing the architecture of pericentric heterochromatin. We recently identified a mammalian histone methyltransferase (HMTase), G9a, which has strong HMTase activity towards H3-K9 in vitro. To investigate the in vivo functions of G9a, we generated G9a-deficient mice and embryonic stem (ES) cells. We found that H3-K9 methylation was drastically decreased in G9a-deficient embryos, which displayed severe growth retardation and early lethality. G9a-deficient ES cells also exhibited reduced H3-K9 methylation compared to wild-type cells, indicating that G9a is a dominant H3-K9 HMTase in vivo. Importantly, the loss of G9a abolished methylated H3-K9 mostly in euchromatic regions. Finally, G9a exerted a transcriptionally suppressive function that depended on its HMTase activity. Our results indicate that euchromatic H3-K9 methylation regulated by G9a is essential for early embryogenesis and is involved in the transcriptional repression of developmental genes.",
"extra": "PMID: 12130538",
"issue": "14",
"journalAbbreviation": "Genes Dev.",
"language": "en",
"libraryCatalog": "genesdev.cshlp.org",
"pages": "1779-1791",
"publicationTitle": "Genes & Development",
"url": "http://genesdev.cshlp.org/content/16/14/1779",
"volume": "16",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Snapshot",
"mimeType": "text/html"
},
{
"title": "PubMed entry",
"mimeType": "text/html",
"snapshot": false
}
],
"tags": [
{
"tag": "Euchromatin"
},
{
"tag": "G9a HMTase"
},
{
"tag": "heterochromatin"
},
{
"tag": "histone H3-K9 methylation"
},
{
"tag": "mammalian development"
},
{
"tag": "transcriptional regulation"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://science.sciencemag.org/content/340/6131/483",
"items": [
{
"itemType": "journalArticle",
"title": "Potent Social Learning and Conformity Shape a Wild Primate’s Foraging Decisions",
"creators": [
{
"firstName": "Erica van de",
"lastName": "Waal",
"creatorType": "author"
},
{
"firstName": "Christèle",
"lastName": "Borgeaud",
"creatorType": "author"
},
{
"firstName": "Andrew",
"lastName": "Whiten",
"creatorType": "author"
}
],
"date": "2013/04/26",
"DOI": "10.1126/science.1232769",
"ISSN": "0036-8075, 1095-9203",
"abstractNote": "Animal Culture\nCultural transmission of information occurs when individuals learn from others with more experience or when individuals come to accept particular modes of behavior as the local norm. Such information transfer can be expected in highly social or long-lived species where contact and time for learning are maximized and are seen in humans (see the Perspective by de Waal). Using a network-based diffusion analysis on a long-term data set that includes tens of thousands of observations of individual humpback whales, Allen et al. (p. 485) show that an innovative feeding behavior has spread through social transmission since it first emerged in a single individual in 1980. The “lobtail” feeding has passed among associating individuals for more than three decades. Van de Waal et al. (p. 483), on the other hand, used a controlled experimental approach in vervet monkeys to show that individuals learn what to eat from more experienced individuals within their social group. Not only did young animals learn from observing older animals, but immigrating males switched their food preference to that of their new group.\nConformity to local behavioral norms reflects the pervading role of culture in human life. Laboratory experiments have begun to suggest a role for conformity in animal social learning, but evidence from the wild remains circumstantial. Here, we show experimentally that wild vervet monkeys will abandon personal foraging preferences in favor of group norms new to them. Groups first learned to avoid the bitter-tasting alternative of two foods. Presentations of these options untreated months later revealed that all new infants naïve to the foods adopted maternal preferences. Males who migrated between groups where the alternative food was eaten switched to the new local norm. Such powerful effects of social learning represent a more potent force than hitherto recognized in shaping group differences among wild animals.\nA natural experiment reveals that wild vervet migrants adopt local norms when it comes to choosing foods. [Also see Perspective by de Waal]\nA natural experiment reveals that wild vervet migrants adopt local norms when it comes to choosing foods. [Also see Perspective by de Waal]",
"extra": "PMID: 23620053",
"issue": "6131",
"language": "en",
"libraryCatalog": "science.sciencemag.org",
"pages": "483-485",
"publicationTitle": "Science",
"rights": "Copyright © 2013, American Association for the Advancement of Science",
"url": "https://science.sciencemag.org/content/340/6131/483",
"volume": "340",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Snapshot",
"mimeType": "text/html"
},
{
"title": "PubMed entry",
"mimeType": "text/html",
"snapshot": false
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.bmj.com/search/cell",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.bmj.com/content/322/7277/29.1",
"items": [
{
"itemType": "journalArticle",
"title": "Islet and stem cell transplantation for treating diabetes",
"creators": [
{
"firstName": "Palle",
"lastName": "Serup",
"creatorType": "author"
},
{
"firstName": "Ole D.",
"lastName": "Madsen",
"creatorType": "author"
},
{
"firstName": "Thomas",
"lastName": "Mandrup-Poulsen",
"creatorType": "author"
}
],
"date": "2001/01/06",
"DOI": "10.1136/bmj.322.7277.29",
"ISSN": "0959-8138, 1468-5833",
"abstractNote": "By 2010 the number of people with diabetes is expected to exceed 350 million. Late diabetic complications will cause considerable morbidity in 5-10% of these patients and place an enormous burden on society. Transplantation of insulin producing islet cells isolated in vitro from a donor pancreas could be a cure for type 1 and some cases of type 2 diabetes. Currently, however, lack of sufficient donor organs and the side effects of immunosuppressive therapy limit its potential. Ways to overcome these problems include deriving islet cells from other sources such as pigs, human pancreatic duct cells, fetal pancreatic stem cells, embryonic stem cells, and by therapeutic cloning. This article outlines these developments and discusses how islet cell transplantation is likely to become the treatment of choice for most insulin dependent diabetics within the next five to 10 years.\n\nOur article is based on information from the following core references: the international islet transplant registry; recently published articles describing improvements in islet cell transplantation, reporting treatment of diabetes in animal models with islet cells grown in vitro, and describing novel molecular mechanisms in pancreatic endocrine development (including our own recent work); papers in embryonic and adult stem cell research that have had a major influence on our thinking; and the seminal work from the Roslin Institute and other groups on nuclear transfer.\n\nIn many cases current diabetes drug therapies do not provide sufficiently tight control of blood glucose to avoid diabetic late complications. 1 2 Transplantation of whole donor pancreas is an effective form of treatment but is of limited application since it entails major surgery and long term immunosuppression. This failure to prevent the morbidity associated with diabetes places an enormous burden not only on patients and their relatives but also on society. The costs of treating late diabetic complications …",
"extra": "PMID: 11141151",
"issue": "7277",
"journalAbbreviation": "BMJ",
"language": "en",
"libraryCatalog": "www.bmj.com",
"pages": "29-32",
"publicationTitle": "BMJ",
"rights": "© 2001 BMJ Publishing Group Ltd.",
"url": "https://www.bmj.com/content/322/7277/29.1",
"volume": "322",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Snapshot",
"mimeType": "text/html"
},
{
"title": "PubMed entry",
"mimeType": "text/html",
"snapshot": false
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.bmj.com/search/advanced/title%3Acell%20title_flags%3Amatch-all%20limit_from%3A1840-01-01%20limit_to%3A2015-02-25%20numresults%3A10%20sort%3Arelevance-rank%20format_result%3Astandard",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.bmj.com/content/350/bmj.h696",
"items": [
{
"itemType": "journalArticle",
"title": "Length of hospital stay after hip fracture and short term risk of death after discharge: a total cohort study in Sweden",
"creators": [
{
"firstName": "Peter",
"lastName": "Nordström",
"creatorType": "author"
},
{
"firstName": "Yngve",
"lastName": "Gustafson",
"creatorType": "author"
},
{
"firstName": "Karl",
"lastName": "Michaëlsson",
"creatorType": "author"
},
{
"firstName": "Anna",
"lastName": "Nordström",
"creatorType": "author"
}
],
"date": "2015/02/20",
"DOI": "10.1136/bmj.h696",
"ISSN": "1756-1833",
"abstractNote": "Objective To investigate relation between inpatient length of stay after hip fracture and risk of death after hospital discharge.\nSetting Population ≥50 years old living in Sweden as of 31 December 2005 with a first hip fracture the years 2006-12.\nParticipants 116 111 patients with an incident hip fracture from a closed nationwide cohort.\nMain outcome measure Death within 30 days of hospital discharge in relation to hospital length of stay after adjustment for multiple covariates.\nResults Mean inpatient length of stay after a hip fracture decreased from 14.2 days in 2006 to 11.6 days in 2012 (P<0.001). The association between length of stay and risk of death after discharge was non-linear (P<0.001), with a threshold for this non-linear effect of about 10 days. Thus, for patients with length of stay of ≤10 days (n=59 154), each 1-day reduction in length of stay increased the odds of death within 30 days of discharge by 8% in 2006 (odds ratio 1.08 (95% confidence interval 1.04 to 1.12)), which increased to16% in 2012 (odds ratio 1.16 (1.12 to 1.20)). In contrast, for patients with a length of stay of ≥11 days (n=56 957), a 1-day reduction in length of stay was not associated with an increased risk of death after discharge during any of the years of follow up.\nLimitations No accurate evaluation of the underlying cause of death could be performed.\nConclusion Shorter length of stay in hospital after hip fracture is associated with increased risk of death after hospital discharge, but only among patients with length of stay of 10 days or less. This association remained robust over consecutive years.",
"extra": "PMID: 25700551",
"journalAbbreviation": "BMJ",
"language": "en",
"libraryCatalog": "www.bmj.com",
"pages": "h696",
"publicationTitle": "BMJ",
"rights": "© Nordström et al 2015. This is an Open Access article distributed in accordance with the Creative Commons Attribution Non Commercial (CC BY-NC 4.0) license, which permits others to distribute, remix, adapt, build upon this work non-commercially, and license their derivative works on different terms, provided the original work is properly cited and the use is non-commercial. See: http://creativecommons.org/licenses/by-nc/4.0/.",
"shortTitle": "Length of hospital stay after hip fracture and short term risk of death after discharge",
"url": "https://www.bmj.com/content/350/bmj.h696",
"volume": "350",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Snapshot",
"mimeType": "text/html"
},
{
"title": "PubMed entry",
"mimeType": "text/html",
"snapshot": false
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.pnas.org/content/early/recent",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.pnas.org/content/117/50/31591.long",
"items": [
{
"itemType": "journalArticle",
"title": "Functional characterization of 67 endocytic accessory proteins using multiparametric quantitative analysis of CCP dynamics",
"creators": [
{
"firstName": "Madhura",
"lastName": "Bhave",
"creatorType": "author"
},
{
"firstName": "Rosa E.",
"lastName": "Mino",
"creatorType": "author"
},
{
"firstName": "Xinxin",
"lastName": "Wang",
"creatorType": "author"
},
{
"firstName": "Jeon",
"lastName": "Lee",
"creatorType": "author"
},
{
"firstName": "Heather M.",
"lastName": "Grossman",
"creatorType": "author"
},
{
"firstName": "Ashley M.",
"lastName": "Lakoduk",
"creatorType": "author"
},
{
"firstName": "Gaudenz",
"lastName": "Danuser",
"creatorType": "author"
},
{
"firstName": "Sandra L.",
"lastName": "Schmid",
"creatorType": "author"
},
{
"firstName": "Marcel",
"lastName": "Mettlen",
"creatorType": "author"
}
],
"date": "2020/12/15",
"DOI": "10.1073/pnas.2020346117",
"ISSN": "0027-8424, 1091-6490",
"abstractNote": "Clathrin-mediated endocytosis (CME) begins with the nucleation of clathrin assembly on the plasma membrane, followed by stabilization and growth/maturation of clathrin-coated pits (CCPs) that eventually pinch off and internalize as clathrin-coated vesicles. This highly regulated process involves a myriad of endocytic accessory proteins (EAPs), many of which are multidomain proteins that encode a wide range of biochemical activities. Although domain-specific activities of EAPs have been extensively studied, their precise stage-specific functions have been identified in only a few cases. Using single-guide RNA (sgRNA)/dCas9 and small interfering RNA (siRNA)-mediated protein knockdown, combined with an image-based analysis pipeline, we have determined the phenotypic signature of 67 EAPs throughout the maturation process of CCPs. Based on these data, we show that EAPs can be partitioned into phenotypic clusters, which differentially affect CCP maturation and dynamics. Importantly, these clusters do not correlate with functional modules based on biochemical activities. Furthermore, we discover a critical role for SNARE proteins and their adaptors during early stages of CCP nucleation and stabilization and highlight the importance of GAK throughout CCP maturation that is consistent with GAK’s multifunctional domain architecture. Together, these findings provide systematic, mechanistic insights into the plasticity and robustness of CME.",
"extra": "PMID: 33257546",
"issue": "50",
"journalAbbreviation": "PNAS",
"language": "en",
"libraryCatalog": "www.pnas.org",
"pages": "31591-31602",
"publicationTitle": "Proceedings of the National Academy of Sciences",
"rights": "Copyright © 2020 the Author(s). Published by PNAS.. https://creativecommons.org/licenses/by-nc-nd/4.0/This open access article is distributed under Creative Commons Attribution-NonCommercial-NoDerivatives License 4.0 (CC BY-NC-ND).",
"url": "https://www.pnas.org/content/117/50/31591",
"volume": "117",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Snapshot",
"mimeType": "text/html"
},
{
"title": "PubMed entry",
"mimeType": "text/html",
"snapshot": false
}
],
"tags": [
{
"tag": "CRISPRi screen"
},
{
"tag": "GAK"
},
{
"tag": "SNAREs"
},
{
"tag": "clathrin-mediated endocytosis"
},
{
"tag": "total internal reflection fluorescence microscopy"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.pnas.org/content/114/13/3521",
"items": [
{
"itemType": "journalArticle",
"title": "Overcoming catastrophic forgetting in neural networks",
"creators": [
{
"firstName": "James",
"lastName": "Kirkpatrick",
"creatorType": "author"
},
{
"firstName": "Razvan",
"lastName": "Pascanu",
"creatorType": "author"
},
{
"firstName": "Neil",
"lastName": "Rabinowitz",
"creatorType": "author"
},
{
"firstName": "Joel",
"lastName": "Veness",
"creatorType": "author"
},
{
"firstName": "Guillaume",
"lastName": "Desjardins",
"creatorType": "author"
},
{
"firstName": "Andrei A.",
"lastName": "Rusu",
"creatorType": "author"
},
{
"firstName": "Kieran",
"lastName": "Milan",
"creatorType": "author"
},
{
"firstName": "John",
"lastName": "Quan",
"creatorType": "author"
},
{
"firstName": "Tiago",
"lastName": "Ramalho",
"creatorType": "author"
},
{
"firstName": "Agnieszka",
"lastName": "Grabska-Barwinska",
"creatorType": "author"
},
{
"firstName": "Demis",
"lastName": "Hassabis",
"creatorType": "author"
},
{
"firstName": "Claudia",
"lastName": "Clopath",
"creatorType": "author"
},
{
"firstName": "Dharshan",
"lastName": "Kumaran",
"creatorType": "author"
},
{
"firstName": "Raia",
"lastName": "Hadsell",
"creatorType": "author"
}
],
"date": "2017/03/28",
"DOI": "10.1073/pnas.1611835114",
"ISSN": "0027-8424, 1091-6490",
"abstractNote": "The ability to learn tasks in a sequential fashion is crucial to the development of artificial intelligence. Until now neural networks have not been capable of this and it has been widely thought that catastrophic forgetting is an inevitable feature of connectionist models. We show that it is possible to overcome this limitation and train networks that can maintain expertise on tasks that they have not experienced for a long time. Our approach remembers old tasks by selectively slowing down learning on the weights important for those tasks. We demonstrate our approach is scalable and effective by solving a set of classification tasks based on a hand-written digit dataset and by learning several Atari 2600 games sequentially.",
"extra": "PMID: 28292907",
"issue": "13",
"journalAbbreviation": "PNAS",
"language": "en",
"libraryCatalog": "www.pnas.org",
"pages": "3521-3526",
"publicationTitle": "Proceedings of the National Academy of Sciences",
"rights": "© . Freely available online through the PNAS open access option.",
"url": "https://www.pnas.org/content/114/13/3521",
"volume": "114",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Snapshot",
"mimeType": "text/html"
},
{
"title": "PubMed entry",
"mimeType": "text/html",
"snapshot": false
}
],
"tags": [
{
"tag": "artificial intelligence"
},
{
"tag": "continual learning"
},
{
"tag": "deep learning"
},
{
"tag": "stability plasticity"
},
{
"tag": "synaptic consolidation"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.biorxiv.org/content/10.1101/2021.08.03.454978v1",
"items": [
{
"itemType": "preprint",
"title": "Endothelial Semaphorin 3fb regulates Vegf pathway-mediated angiogenic sprouting",
"creators": [
{
"firstName": "Charlene",
"lastName": "Watterston",
"creatorType": "author"
},
{
"firstName": "Rami",
"lastName": "Halabi",
"creatorType": "author"
},
{
"firstName": "Sarah",
"lastName": "McFarlane",
"creatorType": "author"
},
{
"firstName": "Sarah J.",
"lastName": "Childs",
"creatorType": "author"
}
],
"date": "2021-08-05",
"DOI": "10.1101/2021.08.03.454978",
"abstractNote": "Vessel growth integrates diverse extrinsic signals with intrinsic signaling cascades to coordinate cell migration and sprouting morphogenesis. The pro-angiogenic effects of Vascular Endothelial Growth Factor (VEGF) are carefully controlled during sprouting to generate an efficiently patterned vascular network. We identify crosstalk between VEGF signaling and that of the secreted ligand Semaphorin 3fb (Sema3fb), one of two zebrafish paralogs of mammalian Sema3F. The sema3fb gene is expressed by endothelial cells in actively sprouting vessels. Loss of sema3fb results in abnormally wide and stunted intersegmental vessel artery sprouts. Although the sprouts initiate at the correct developmental time, they have a reduced migration speed. These sprouts have persistent filopodia and abnormally spaced nuclei suggesting dysregulated control of actin assembly. sema3fb mutants show simultaneously higher expression of pro-angiogenic (VEGF receptor 2 (vegfr2) and delta-like 4 (dll4)) and anti-angiogenic (soluble VEGF receptor 1 (svegfr1)/ soluble Fms Related Receptor Tyrosine Kinase 1 (sflt1)) pathway components. We show increased phospho-ERK staining in migrating angioblasts, consistent with enhanced Vegf activity. Reducing Vegfr2 kinase activity in sema3fb mutants rescues angiogenic sprouting. Our data suggest that Sema3fb plays a critical role in promoting endothelial sprouting through modulating the VEGF signaling pathway, acting as an autocrine cue that modulates intrinsic growth factor signaling.\nAuthor summary To supply tissues with essential oxygen and nutrients, blood vessel development is carefully orchestrated by positive ‘go’ and negative ‘stop’ growth signals as well as directional cues to shape patterning. Semaphorin proteins are named after the ‘Semaphore’ railway signaling system that directed trains along the appropriate tracks. Our work highlights the role of the Semaphorin 3fb protein in providing a pro-growth signal to developing vessels. Semaphorin 3fb is both produced by, and acts on the precursors of blood vessels as they migrate, a process known as autocrine control. We find that losing Semaphorin 3fb leads to stalled blood vessel growth, indicating it normally acts as a positive signal. It acts via modulating the VEGF growth factor signaling pathway that in turn, controls the migration process. We propose that Semaphorin3b fine-tunes vessel growth, thus ensuring a properly patterned network develops.",
"language": "en",
"libraryCatalog": "bioRxiv",
"repository": "bioRxiv",
"rights": "© 2021, Posted by Cold Spring Harbor Laboratory. This pre-print is available under a Creative Commons License (Attribution-NonCommercial-NoDerivs 4.0 International), CC BY-NC-ND 4.0, as described at http://creativecommons.org/licenses/by-nc-nd/4.0/",
"url": "https://www.biorxiv.org/content/10.1101/2021.08.03.454978v1",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.medrxiv.org/content/10.1101/2021.06.16.21258632v1",
"items": [
{
"itemType": "preprint",
"title": "A System Dynamics Model for Effects of Workplace Violence and Clinician Burnout on Agitation Management in the Emergency Department",
"creators": [
{
"firstName": "Ambrose H.",
"lastName": "Wong",
"creatorType": "author"
},
{
"firstName": "Nasim S.",
"lastName": "Sabounchi",
"creatorType": "author"
},
{
"firstName": "Hannah R.",
"lastName": "Roncallo",
"creatorType": "author"
},
{
"firstName": "Jessica M.",
"lastName": "Ray",
"creatorType": "author"
},
{
"firstName": "Rebekah",
"lastName": "Heckmann",
"creatorType": "author"
}
],
"date": "2021-06-22",
"DOI": "10.1101/2021.06.16.21258632",
"abstractNote": "Background Over 1.7 million episodes of agitation occur annually across the United States in emergency departments (EDs), some of which lead to workplace assaults on clinicians and require invasive methods like physical restraints to maintain staff and patient safety. Recent studies demonstrated that experiences of workplace violence lead to symptoms of burnout, which may impact future decisions regarding use of physical restraints on agitated patients. To capture the dynamic interactions between clinicians and agitated patients under their care, we applied qualitative system dynamics methods to develop a model that describes causal feedback mechanisms of clinician burnout and the use of physical restraints to manage agitation.\nMethods We convened an interprofessional panel of clinician stakeholders and agitation experts for a series of model building sessions to develop the current model. The panel derived the final version of our model over ten sessions of iterative refinement and modification, each lasting approximately three to four hours. We incorporated findings from prior studies on agitation and burnout as a result of workplace violence, identifying interpersonal and psychological factors likely to influence our outcomes of interest to form the basis of our model.\nResults The final model resulted in five main sets of feedback loops that describe key narratives regarding the relationship between clinician burnout and agitated patients becoming physically restrained: (1) use of restraints decreases agitation and risk of assault, leading to increased perceptions of safety and decreasing use of restraints in a balancing feedback loop which stabilizes the system; (2) clinician stress leads to a perception of decreased safety and lower threshold to restrain, causing more stress in a negatively reinforcing loop; (3) clinician burnout leads to a decreased perception of colleague support which leads to more burnout in a negatively reinforcing loop; (4) clinician burnout leads to negative perceptions of patient intent during agitation, thus lowering threshold to restrain and leading to higher task load, more likelihood of workplace assaults, and higher burnout in a negatively reinforcing loop; and (5) mutual trust between clinicians causes increased perceptions of safety and improved team control, leading to decreased clinician stress and further increased mutual trust in a positively reinforcing loop.\nConclusions Our system dynamics approach led to the development of a robust qualitative model that illustrates a number of important feedback cycles that underly the relationships between clinician experiences of workplace violence, stress and burnout, and impact on decisions to physically restrain agitated patients. This work identifies potential opportunities at multiple targets to break negatively reinforcing cycles and support positive influences on safety for both clinicians and patients in the face of physical danger.",
"language": "en",
"libraryCatalog": "medRxiv",
"repository": "medRxiv",
"rights": "© 2021, Posted by Cold Spring Harbor Laboratory. The copyright holder for this pre-print is the author. All rights reserved. The material may not be redistributed, re-used or adapted without the author's permission.",
"url": "https://www.medrxiv.org/content/10.1101/2021.06.16.21258632v1",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Sebastian Karcher^https?://((www\.)?beobachter\.ch/.)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2022 Sebastian Karcher
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, _url) {
if (doc.getElementsByClassName('article-header').length > 0) {
return "magazineArticle";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('a[class*="teaser"]');
for (let row of rows) {
let href = row.href;
let title = text(row, 'span');
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var authors = doc.querySelectorAll('meta[name="parsely-author"]');
var date = attr(doc, 'meta[name="published_at"]', 'content');
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
// translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
for (let author of authors) {
item.creators.push(ZU.cleanAuthor(author.content, "author"));
}
item.title = item.title.replace(/\s*\|\s*Beobachter/, "");
item.date = date;
item.ISSN = "1661-7444";
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.itemType = "magazineArticle";
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://www.beobachter.ch/natur/forschung-wissen/",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.beobachter.ch/umwelt/blitze-suche-nicht-die-buche",
"items": [
{
"itemType": "magazineArticle",
"title": "Blitze: Suche nicht die Buche!",
"creators": [
{
"firstName": "Tanja",
"lastName": "Polli",
"creatorType": "author"
}
],
"date": "2013-08-16T16:28:50+02:00",
"ISSN": "1661-7444",
"abstractNote": "Acht Tipps, was man tun und lassen soll, wenn man von Blitz und Donner überrascht wird.",
"language": "de-CH",
"libraryCatalog": "www.beobachter.ch",
"shortTitle": "Blitze",
"url": "https://www.beobachter.ch/umwelt/blitze-suche-nicht-die-buche",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.beobachter.ch/gesundheit/medizin-krankheit/immer-schlapp-wieso-fuhlen-wir-uns-standig-mude",
"items": [
{
"itemType": "magazineArticle",
"title": "Immer schlapp: Wieso fühlen wir uns ständig müde?",
"creators": [
{
"firstName": "Andreas",
"lastName": "Grote",
"creatorType": "author"
}
],
"date": "2022-01-11T09:30:00+01:00",
"ISSN": "1661-7444",
"abstractNote": "Wer andauernd schläfrig und erschöpft ist, leidet – und nervt andere. Ein kurzer Selbsttest zeigt, ob Ihre Müdigkeit normal ist und was dagegen helfen kann.",
"language": "de-CH",
"libraryCatalog": "www.beobachter.ch",
"shortTitle": "Immer schlapp",
"url": "https://www.beobachter.ch/gesundheit/medizin-krankheit/immer-schlapp-wieso-fuhlen-wir-uns-standig-mude",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Philipp Zumstein^https://search\.library\.wisc\.edu/(catalog|search)//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2017 Philipp Zumstein
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
/*
They use Primo and Alma as their backend and have programmed an
individual frontend called Forward for their catalog. We can simply
use their RIS data.
*/
function detectWeb(doc, url) {
if (url.includes('/search/') && getSearchResults(doc, true)) {
return "multiple";
}
else if (url.includes('/catalog/')) {
var format = getFormat(doc);
// Z.debug(format);
switch (format) {
case "Sound Recordings":
return "audioRecording";
case "Videos, Slides, Films":
return "videoRecording";
case "Maps, Atlases":
return "map";
case "Computer software":
return "computerProgramm";
case "Photos, Drawings, Prints":
return "artwork";
case "Music Scores":
case "Journals, Magazines, Newspapers": // there is no such itemType yet
default:
return "book";
}
}
return false;
}
function getFormat(doc) {
return text(doc, '.type');
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('a.item_path[href*="/catalog/"]');
for (var i = 0; i < rows.length; i++) {
var href = rows[i].href;
var title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) return;
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var risURL = url.replace(/[#?].*$/, '') + '.ris';
// there is also a link tag for RIS but the href is currently missing
ZU.doGet(risURL, function (text) {
// delete birth/death year from author name
text = text.replace(/^(AU\s+-.*), \d\d\d\d-(\d\d\d\d)?$/m, "$1");
// music scores should be treated as book
text = text.replace('TY - MUSIC', 'TY - BOOK');
if (getFormat(doc) && getFormat(doc).includes('Book')) {
// fix for an odd RIS issue in one of the tests - a book is tagged
// as a presentation
text = text.replace('TY - SLIDE', 'TY - BOOK');
}
// Z.debug(text);
var translator = Zotero.loadTranslator("import");
translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7");
translator.setString(text);
translator.setHandler("itemDone", function (obj, item) {
if (item.abstractNote) {
// sometimes the physical description is saved in the abstract
// e.g. 38 pages ; 24 cm
var m = item.abstractNote.match(/(\d+)\spages\b/);
if (m) {
item.numPages = m[1];
delete item.abstractNote;
}
}
// clean-up the information for publisher
// e.g. Chicago : Association of College and Research Libraries, 2011.
if (item.publisher) {
item.publisher = item.publisher.replace(/,\s\d\d\d\d\.?$/, '');
var parts = item.publisher.split(' : ');
if (parts.length == 2) {
item.place = parts[0];
item.publisher = parts[1];
}
}
item.complete();
});
translator.translate();
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://search.library.wisc.edu/catalog/9910104568102121",
"items": [
{
"itemType": "book",
"title": "Zotero : a guide for librarians, researchers, and educators",
"creators": [
{
"lastName": "Puckett",
"firstName": "Jason",
"creatorType": "author"
}
],
"date": "2011",
"callNumber": "025.30285 P961z",
"libraryCatalog": "University of Wisconsin-Madison Libraries Catalog",
"numPages": "159",
"place": "Chicago",
"publisher": "Association of College and Research Libraries",
"shortTitle": "Zotero",
"url": "https://search.library.wisc.edu/catalog/9910104568102121",
"attachments": [],
"tags": [],
"notes": [
{
"note": "<p>Includes bibliographical references.</p>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://search.library.wisc.edu/catalog/9912283572402121",
"items": [
{
"itemType": "book",
"title": "Fiscal year 2017 budget amendments : communication from the President of the United States transmitting FY 2017 budget amendments for national security activities at the Department of Defense, the Department of State, and the U.S. Agency for International Development to fund overseas contingency operations",
"creators": [
{
"lastName": "United States. President (2009-2017 : Obama)",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "2016",
"callNumber": "Y 1.1/7:114-178",
"libraryCatalog": "University of Wisconsin-Madison Libraries Catalog",
"numPages": "38",
"place": "Washington",
"publisher": "U.S. Government Publishing Office",
"shortTitle": "Fiscal year 2017 budget amendments",
"url": "https://search.library.wisc.edu/catalog/9912283572402121",
"attachments": [],
"tags": [],
"notes": [
{
"note": "<p>Shipping list no.: 2017-0071-P.;"November 14, 2016.";"Referred to the Committee on Appropriations."</p>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://search.library.wisc.edu/catalog/999618880602121",
"items": [
{
"itemType": "audioRecording",
"title": "Settimo in mi bem. magg., op. 20 = Septet in E flat major, op. 20",
"creators": [
{
"lastName": "Beethoven",
"firstName": "Ludwig van",
"creatorType": "composer"
}
],
"date": "[1988]",
"abstractNote": "1 audio disc (43 min.) : digital ; 4 3/4 in",
"callNumber": "COMP DISC 385",
"label": "Pontelambro, Como, Italy : Nuova Era, [1988] ℗1988",
"libraryCatalog": "University of Wisconsin-Madison Libraries Catalog",
"url": "https://search.library.wisc.edu/catalog/999618880602121",
"attachments": [],
"tags": [],
"notes": [
{
"note": "<p>For clarinet, horn, bassoon, violin, viola, violoncello, and double bass.;Compact disc.;Duration: 42:10.;Program notes by Paolo Petazzi in Italian and English ([14] p. : ill.) inserted in container.;Forms part of: Curtiss Blake Collection.;Recorded June 11-13, 1988, at the Villa Litta Modigliani, Milan.</p>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://search.library.wisc.edu/catalog/9910065379202121",
"items": [
{
"itemType": "book",
"title": "Oktett für vier Violinen, zwei Violen und zwei Violoncelli, op. 20 : Arrangement für Klavier zu vier Händen",
"creators": [
{
"lastName": "Mendelssohn-Bartholdy",
"firstName": "Felix",
"creatorType": "author"
}
],
"date": "2004",
"callNumber": "M3 M236 1997 Ser.3 v.5a",
"libraryCatalog": "University of Wisconsin-Madison Libraries Catalog",
"numPages": "101",
"place": "Wiesbaden",
"publisher": "Breitkopf & Härtel",
"shortTitle": "Oktett für vier Violinen, zwei Violen und zwei Violoncelli, op. 20",
"url": "https://search.library.wisc.edu/catalog/9910065379202121",
"attachments": [],
"tags": [],
"notes": [
{
"note": "<p>Arrangement by the composer.;"Herausgegeben von der Sächsischen Akademie der Wissenschaften zu Leipzig."--Series t.p.;Added t.p. in English.;Introd. in German with English translation; critical commentary in German on p. 95-101.;Includes bibliographical references.</p>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://search.library.wisc.edu/search/catalog?q=zotero",
"items": "multiple"
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://[^/]+\.mikromarc\.no/mikromarc3//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2022 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
async function detectWeb(doc, url) {
if (url.includes('/detail.aspx')) {
return 'book';
}
else if (getSearchResults(doc, true)) {
return 'multiple';
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('#ctl00_PageContent_hitlist .rgRow a');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
async function doWeb(doc, url) {
if (await detectWeb(doc, url) == 'multiple') {
let items = await Zotero.selectItems(getSearchResults(doc, false));
if (items) {
await Promise.all(
Object.keys(items)
.map(url => requestDocument(url).then(doc => scrape(doc, url)))
);
}
}
else {
await scrape(doc, url);
}
}
async function scrape(doc, url) {
let id = url.match(/[&?]Id=([^&#]+)/)[1];
let db = url.match(/[&?]db=([^&#]+)/)[1];
let unit = url.match(/[&?]Unit=([^&#]+)/)[1];
let risURL = `/mikromarc3/RISHandler.ashx?marcId=${id}&db=${db}&Unit=${unit}`;
let risText = await requestText(risURL);
let translator = Zotero.loadTranslator('import');
translator.setTranslator('32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7'); // RIS
translator.setString(risText);
translator.setHandler('itemDone', (_, item) => {
item.title = item.title.replace(' :', ':');
if (item.numPages) {
item.numPages = item.numPages.replace('s.', '');
}
item.complete();
});
await translator.translate();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://fjellhaug.mikromarc.no/mikromarc3/detail.aspx?Unit=6473&db=fjellhaug&Id=25197&SW=test%25&SC=FT&LB=FT&MT=0&SU=6475&DG=0&ST=Normal&Browse=1&P=1",
"items": [
{
"itemType": "book",
"title": "A concise New Testament theology",
"creators": [
{
"lastName": "Marshall",
"firstName": "I. Howard",
"creatorType": "author"
}
],
"date": "2008",
"ISBN": "9780830827787",
"libraryCatalog": "Mikromarc 3",
"numPages": "310",
"place": "Downers Grove, Ill.",
"publisher": "IVP Academic",
"attachments": [],
"tags": [
{
"tag": "Bibelteologi. NT"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://fjellhaug.mikromarc.no/mikromarc3/detail.aspx?Unit=6473&db=fjellhaug&Id=16363&SW=sherlock%25&SC=FT&LB=FT&MT=0&SU=6475&DG=0&ST=Normal&Browse=1&P=1",
"items": [
{
"itemType": "book",
"title": "The illustrated Sherlock Holmes treasury: including the complete adventures and memoirs of Sherlock Holmes",
"creators": [
{
"lastName": "Doyle",
"firstName": "Arthur Conan",
"creatorType": "author"
},
{
"lastName": "Paget",
"firstName": "Sidney",
"creatorType": "author"
}
],
"date": "1976",
"libraryCatalog": "Mikromarc 3",
"numPages": "631",
"place": "New York (NY)",
"publisher": "Avenel Books",
"shortTitle": "The illustrated Sherlock Holmes treasury",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://ansgarskolen.mikromarc.no/mikromarc3/detail.aspx?Unit=6463&db=ansgarskolen&Id=20597&SW=physics%25&SC=FT&LB=FT&MT=0&SU=7821&DG=0&ST=Normal&Browse=1&P=1",
"items": [
{
"itemType": "book",
"title": "Time in eternity: Pannenberg, physics, and eschatology in creative mutual interaction",
"creators": [
{
"lastName": "Russell",
"firstName": "Robert J",
"creatorType": "author"
}
],
"date": "0000 c",
"libraryCatalog": "Mikromarc 3",
"numPages": "XIII, 440",
"place": "Notre Dame, Ind.",
"publisher": "University of Notre Dame Press",
"shortTitle": "Time in eternity",
"attachments": [],
"tags": [
{
"tag": "Eskatologi"
},
{
"tag": "Evigheten"
},
{
"tag": "Kosmologi"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://ansgarskolen.mikromarc.no/mikromarc3/search.aspx?Unit=6463&db=ansgarskolen&SC=FT&SW=test%25&LB=FT&IN=&SU=0&DG=0",
"items": "multiple"
}
]
/** END TEST CASES **/
100Sebastian Karcher^https?://www\.dart-europe\.org/**
Copyright (c) 2013 Sebastian Karcher
This program is free software: you can redistribute it and/or
modify it under the terms of the GNU Affero General Public License
as published by the Free Software Foundation, either version 3 of
the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public
License along with this program. If not, see
<http://www.gnu.org/licenses/>.
*/
function detectWeb(doc, url) {
if (url.indexOf("full.php?") != -1) return "thesis";
if (url.indexOf("results.php?") != -1) return "multiple";
}
function scrape(doc, url) {
var newItem = new Zotero.Item("thesis");
var title = ZU.xpathText(doc, '//tr[contains(@class, "result")]/th[@class="field-name" and contains(text(), "Title")]/following-sibling::td');
var thesisType = ZU.xpathText(doc, '//tr[contains(@class, "result")]/th[@class="field-name" and contains(text(), "Type")]/following-sibling::td');
var date = ZU.xpathText(doc, '//tr[contains(@class, "result")]/th[@class="field-name" and contains(text(), "Date")]/following-sibling::td');
var language = ZU.xpathText(doc, '//tr[contains(@class, "result")]/th[@class="field-name" and contains(text(), "Language")]/following-sibling::td');
var abstract = ZU.xpathText(doc, '//tr[contains(@class, "result")]/th[@class="field-name" and contains(text(), "Abstract")]/following-sibling::td');
var publisherinfo = ZU.xpathText(doc, '//tr[contains(@class, "result")]/th[@class="field-name" and contains(text(), "Publisher")]/following-sibling::td');
var fulltext = ZU.xpathText(doc, '//tr[th[@class="field-name" and contains(text(), "Identifier")]][1]/th[@class="field-name" and contains(text(), "Identifier")]/following-sibling::td');
//Publisher field may have place
var place;
if (publisherinfo && publisherinfo.indexOf(":") !=-1){
var publisher = publisherinfo.match(/:\s*(.+)/)[1]
var place =publisherinfo.match(/(.+):/)[1]
}
else var publisher = publisherinfo;
//Authors and Tags can have multiple rows. In that case the td[1] remains empty we loop through them until that's no longer the case
var author = ZU.xpathText(doc, '//tr[contains(@class, "result")]/th[@class="field-name" and contains(text(), "Author")]/following-sibling::td');
if (author) newItem.creators.push(ZU.cleanAuthor(author, "author", true))
var tags = ZU.xpathText(doc, '//tr[contains(@class, "result")]/th[@class="field-name" and contains(text(), "Subject(s)")]/following-sibling::td');
if (tags) {
tags = tags.split(/\s*,\s*/);
for (var i in tags) {
newItem.tags.push(tags[i])
}
}
if (fulltext) {
fulltext = fulltext.trim();
if (fulltext.search(/\.pdf/) != -1) {
newItem.attachments.push({
url: fulltext,
title: "Dart-Europe Full Text PDF",
mimeType: "application/pdf"
})
} else if (fulltext.search(/http\:\/\//) != -1){
newItem.attachments.push({
url: fulltext,
title: "DART-Europe Thesis Page",
mimeType: "text/html"
})
}
}
newItem.attachments.push({
document: doc,
title: "DART-Europe Record Snapshot",
mimeType: "text/html"
})
newItem.title = title;
newItem.thesisType = thesisType;
newItem.date = date;
newItem.abstractNote = abstract;
newItem.language = language;
newItem.publisher = publisher;
newItem.place = place;
newItem.complete();
}
function doWeb(doc, url) {
var articles = new Array();
var items = {};
if (detectWeb(doc, url) == "multiple") {
//this currently doesn't do anything as multiple detect is disabled
var titles = doc.evaluate('//table[@id="search-results"]//a[contains(@href, "full.php?")]', doc, null, XPathResult.ANY_TYPE, null);
var next_title;
while (next_title = titles.iterateNext()) {
items[next_title.href] = next_title.textContent;
}
Zotero.selectItems(items, function (items) {
if (!items) {
return true;
}
for (var i in items) {
articles.push(i);
}
Z.debug(articles)
Zotero.Utilities.processDocuments(articles, scrape);
})
} else {
scrape(doc, url);
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://www.dart-europe.org/basic-results.php?kw[]=labor&f=n&hist=y",
"items": "multiple"
},
{
"type": "web",
"url": "http://www.dart-europe.org/full.php?id=284332",
"items": [
{
"itemType": "thesis",
"creators": [
{
"firstName": "Charles Edmund Richard",
"lastName": "Pennell",
"creatorType": "author"
}
],
"notes": [],
"tags": [],
"seeAlso": [],
"attachments": [
{
"title": "Dart-Europe Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "DART-Europe Record Snapshot",
"mimeType": "text/html"
}
],
"title": "A critical investigation of the opposition of the Rifi confederation led by Muhammed bin 'Abd al-Karim al-Khattabi to Spanish colonial expansion in northern Morocco, 1920-1925, and its political and social background",
"thesisType": "Thesis, NonPeerReviewed",
"date": "1979",
"abstractNote": "This thesis examines the course and political\naction of the war in the Rif mountains in northern Morocco\nbetween 1921 and 1926.\n\nAfter the declaration of a joint Franco-Spanish\nProtectorate over Morocco in 1912, the Spanish army\nattempted to impose its authority over the part of north\nMorocco which was included in its zone. After the end of\nthe First World War the Spanish were opposed in their\nefforts by a slowly growing coalition of tribes in the\ncentral Rif mountains. After the emergence of Mubammad\nbin 'Abd al-Karim al-Khattdbl as leader of the coalition,\nit was able to inflict a series of military defeats on the\nSpanish in the summer of 1921, a success which led to the'\nexpansion of the coalition and, in 1923, to the announcement\nof an independent state in the Rif under the leadership of\nbin 'Abd al-Karim.\n\nThis state was able to defeat another Spanish army\nin 1924 and, in 1925, to inflict a series of defeats upon\nthe French army in that, country's zone of Protectorate,\nbefore an alliance between France and Spain crushed the new\nstate in 1926.\n\nPrevious work has concentrated more on the\nmilitary aspects of the conflict from a European point of\nview, and examination of the Moroccan side has dwelt almost\nexclusively on the personality of the Rifi leader, bin 'Abd\nal-Karim. This thesis, however, is concerned with the\npolitical and social aspects of the war from the Moroccan\npoint of view. While it recognises the importance of bin\n'Abd al-Karim, it tries to explain his role in terms of his\npolitical position in Rifi society as'a whole. It examines\nhis political, social. and religious reforms'l not only from\nthe point of view of their importance in the overall--\nmovement for Islamic reform, but also from that of their\npractical necessity and effects.",
"publisher": "University of Leeds",
"libraryCatalog": "DART-Europe"
}
]
}
]
/** END TEST CASES **/
100Philipp Zumstein(/primo-explore/|/discovery/(search|fulldisplay|jsearch|dbsearch|npsearch|openurl|jfulldisplay|dbfulldisplay|npfulldisplay|collectionDiscovery)\?)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2018-2021 Philipp Zumstein
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, _url) {
var rows = getPnxElems(doc);
if (rows.length == 1) return "book";
if (rows.length > 1) return "multiple";
let exploreElem = doc.querySelector('primo-explore');
if (exploreElem) {
Z.monitorDOMChanges(exploreElem, { childList: true, subtree: true });
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = getPnxElems(doc);
for (let row of rows) {
let href = row.dataset.url;
let title = text(row.parentNode, '.item-title')
|| row.parentNode.textContent;
if (!href || !title) continue;
title = title.replace(/^;/, '');
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) {
return;
}
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
}
else {
let pnxElems = getPnxElems(doc);
let pnxURL = pnxElems[0].getAttribute('data-url');
scrape(doc, pnxURL);
}
}
function scrape(doc, pnxURL) {
ZU.doGet(pnxURL, function (text) {
var translator = Zotero.loadTranslator("import");
translator.setTranslator("efd737c9-a227-4113-866e-d57fbc0684ca");
translator.setString(text);
translator.setHandler("itemDone", function (obj, item) {
if (pnxURL) {
item.libraryCatalog = pnxURL.match(/^https?:\/\/(.+?)\//)[1].replace(/\.hosted\.exlibrisgroup/, "");
}
item.complete();
});
translator.translate();
});
}
function getPnxElems(doc) {
let single = doc.querySelectorAll('.urlToXmlPnxSingleRecord[data-url]');
if (single.length == 1) return single;
return doc.querySelectorAll('.urlToXmlPnx[data-url]');
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://virtuose.uqam.ca/primo-explore/fulldisplay?vid=UQAM&docid=UQAM_BIB000969205&context=L",
"defer": true,
"items": [
{
"itemType": "book",
"title": "War",
"creators": [
{
"lastName": "Baynes",
"firstName": "Ken",
"creatorType": "author"
},
{
"firstName": "Ken",
"lastName": "Baynes",
"creatorType": "author"
},
{
"lastName": "Welsh Arts Council",
"creatorType": "contributor",
"fieldMode": 1
},
{
"lastName": "Glynn Vivian Art Gallery",
"creatorType": "contributor",
"fieldMode": 1
}
],
"date": "1970",
"callNumber": "NX650G8B38",
"language": "eng",
"libraryCatalog": "virtuose.uqam.ca",
"place": "Boston",
"publisher": "Book and Art Chop",
"series": "Art and society 1",
"attachments": [],
"tags": [
{
"tag": "ART; GUERRE; WAR"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://bcujas-catalogue.univ-paris1.fr/primo-explore/fulldisplay?vid=CUJAS_V1&docid=33CUJAS_ALEPH000070200&context=L&search_scope=LSCOP_ALL",
"defer": true,
"items": [
{
"itemType": "book",
"title": "Test pattern for living",
"creators": [
{
"firstName": "Nicholas",
"lastName": "Johnson",
"creatorType": "author"
}
],
"date": "1972",
"callNumber": "203.206",
"language": "eng",
"libraryCatalog": "bcujas-catalogue.univ-paris1.fr",
"numPages": "xx+154",
"place": "Toronto New York",
"publisher": "Bantam Books",
"attachments": [],
"tags": [
{
"tag": "Mass media"
},
{
"tag": "Social aspects"
},
{
"tag": "United States"
},
{
"tag": "United States"
},
{
"tag": "Social conditions"
},
{
"tag": "1960-"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://explore.lib.uliege.be/discovery/collectionDiscovery?vid=32ULG_INST:ULIEGE&collectionId=81129164700002321&lang=fr",
"defer": true,
"items": "multiple"
},
{
"type": "web",
"url": "https://search.library.berkeley.edu/discovery/search?vid=01UCS_BER:UCB&tab=Default_UCLibrarySearch&search_scope=DN_and_CI&offset=0&query=any,contains,test",
"defer": true,
"items": "multiple"
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://digitalarchive\.wilsoncenter\.org/(document|search-results)//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2022 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
async function detectWeb(doc, url) {
if (url.includes('/document/')) {
return 'manuscript';
}
else if (getSearchResults(doc, true)) {
return 'multiple';
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.search-res li');
for (let row of rows) {
let href = attr(row, '.lnk-res', 'href');
let title = ZU.trimInternal(text(row, '.itm-title'));
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
async function doWeb(doc, url) {
if (await detectWeb(doc, url) == 'multiple') {
let items = await Zotero.selectItems(getSearchResults(doc, false));
if (items) {
await Promise.all(
Object.keys(items)
.map(url => requestDocument(url).then(scrape))
);
}
}
else {
await scrape(doc, url);
}
}
async function scrape(doc, url = doc.location.href) {
let risURL = url.replace(/[?#].*$/, '') + '.ris';
let risText = await requestText(risURL);
let translator = Zotero.loadTranslator('import');
translator.setTranslator('32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7'); // RIS
translator.setString(risText);
translator.setHandler('itemDone', (_obj, item) => {
if (item.abstractNote) {
item.abstractNote = ZU.unescapeHTML(item.abstractNote);
}
if (!item.manuscriptType) {
for (let h4 of doc.querySelectorAll('.doc-inf-information h4')) {
if (h4.textContent.includes('Type')) {
item.manuscriptType = h4.nextElementSibling.textContent;
}
}
}
for (let subject of doc.querySelectorAll('#subj-list li')) {
item.tags.push({ tag: subject.textContent });
}
let pdfURL = attr(doc, 'a.down[href*=".pdf"]', 'href');
if (pdfURL) {
item.attachments.push({
title: 'Full Text PDF',
mimeType: 'application/pdf',
url: pdfURL
});
}
for (let creator of item.creators) {
if (creator.firstName && creator.firstName.includes(',')) {
creator.firstName = creator.firstName.split(',')[0];
}
}
item.complete();
});
await translator.translate();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://digitalarchive.wilsoncenter.org/document/280697",
"items": [
{
"itemType": "manuscript",
"title": "Letter to the Deputy Chairman of the Soviet Committee of the MGG, Prof. Pushkov",
"creators": [],
"date": "1958",
"archive": "History and Public Policy Program Digital Archive",
"archiveLocation": "RGANI, f. 5, op. 49, d. 131, ll. 193-194. Translated by Gary Goldberg.",
"language": "Russian",
"libraryCatalog": "Woodrow Wilson International Center for Scholars",
"url": "https://digitalarchive.wilsoncenter.org/document/280697",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "China--Foreign relations--Soviet Union"
},
{
"tag": "China--Foreign relations--Taiwan"
},
{
"tag": "Taiwan--Foreign relations--United States"
},
{
"tag": "Taiwan--International status"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://digitalarchive.wilsoncenter.org/document/209833",
"items": [
{
"itemType": "manuscript",
"title": "Djilas's First Conversation with Stalin",
"creators": [
{
"lastName": "Djilas",
"firstName": "Milovan",
"creatorType": "author"
},
{
"lastName": "Stalin",
"firstName": "Joseph",
"creatorType": "author"
},
{
"lastName": "Molotov",
"firstName": "Vyacheslav Mikhaylovich",
"creatorType": "author"
}
],
"date": "1944-05-19",
"abstractNote": "Milovan Djilas recounts his first meeting and impressions of Stalin and discuss wartime matters.",
"archive": "History and Public Policy Program Digital Archive",
"archiveLocation": "Milovan Djilas. Wartime. Translated by Michael B. Petrovich. (New York: Harcourt Brace Jovanovich, 1977), 385-387.",
"language": "English",
"libraryCatalog": "Woodrow Wilson International Center for Scholars",
"url": "https://digitalarchive.wilsoncenter.org/document/209833",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Soviet Union--Foreign relations--Yugoslavia"
},
{
"tag": "World War, 1939-1945--Yugoslavia"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://digitalarchive.wilsoncenter.org/document/121893",
"items": [
{
"itemType": "manuscript",
"title": "Report of the Hungarian Ministry of Foreign Affairs [F. Somogyi] for the Council of Ministers about the Meeting of the leaders of the Warsaw Pact on 4 December",
"creators": [
{
"lastName": "Somogyi",
"firstName": "Ferenc",
"creatorType": "author"
}
],
"date": "1989-12-06",
"abstractNote": "Summary of the meeting of the leaders of the Warsaw Pact. The document is not signed, but it is highly likely it was authorized by Ferenc Somogyi, Deputy Minister of the Hungarian Ministry of Foreign Affairs, who was present at the meeting in Moscow.",
"archive": "History and Public Policy Program Digital Archive",
"archiveLocation": "Obtained by Béla Révész; translated and edited by Barnabás Vajd, Laura Deal, and Karl P. Benziger.",
"language": "Hungarian",
"libraryCatalog": "Woodrow Wilson International Center for Scholars",
"manuscriptType": "Report",
"url": "https://digitalarchive.wilsoncenter.org/document/121893",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Bush, George, 1924-"
},
{
"tag": "Catholic Church"
},
{
"tag": "Gorbachev, Mikhail Sergeevich, 1931-"
},
{
"tag": "John Paul II, Pope, 1920-2005"
},
{
"tag": "Perestroika"
},
{
"tag": "Soviet Union--Foreign relations--United States"
},
{
"tag": "Soviet Union--Foreign relations--Vatican City"
},
{
"tag": "Soviet Union--Religion"
},
{
"tag": "Summit meetings--Malta"
},
{
"tag": "Warsaw Treaty Organization"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://digitalarchive.wilsoncenter.org/search-results/1/%7B%22search-in%22%3A%22all%22%2C%22term%22%3A%22test%22%7D?recordType=Record",
"items": "multiple"
},
{
"type": "web",
"url": "https://digitalarchive.wilsoncenter.org/document/134696",
"items": [
{
"itemType": "manuscript",
"title": "TASS Digest Distributed to Cde. I.V. Stalin and Cde. C.M. Molotov, 'The Anti-Soviet Fabrications of a Mexican Newspaper; Etc.'",
"creators": [
{
"lastName": "Telegraph Agency of the Soviet Union (TASS)",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "1945-10-16",
"abstractNote": "Summary of news reports from Mexico, Sweden, Canada, and Great Britain, most on Stalin's alleged illness.",
"archive": "History and Public Policy Program Digital Archive",
"archiveLocation": "RGASPI, f. 558, op. 11, d. 97, ll. 67-70. Contributed by Sergey Radchenko and translated by Gary Goldberg.",
"language": "Russian",
"libraryCatalog": "Woodrow Wilson International Center for Scholars",
"url": "https://digitalarchive.wilsoncenter.org/document/134696",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Stalin, Joseph, 1879-1953"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Göktuğ Kayaalp and Abe Jellinek^https://(ling\.auf|lingbuzz)\.net/lingbuzz/(repo/semanticsArchive/article/)?(\d+|_search)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Göktuğ Kayaalp <self at gkayaalp dot com> and Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
const preprintType = ZU.fieldIsValidForType('title', 'preprint')
? 'preprint'
: 'report';
function detectWeb(doc, url) {
if (url.includes("/_search") && getSearchResults(doc, true)) {
return "multiple";
}
return preprintType;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
// exclude author links
var rows = doc.querySelectorAll('td a:not([href*="?_s="])');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(
row.textContent.replace(/\s+\[semanticsArchive\]$/, "")
);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
if (url.match(/semanticsArchive/)) {
scrapeSA(doc, url);
return;
}
var newItem = new Zotero.Item(preprintType);
if (preprintType == "report") {
newItem.extra = "type: article\n";
}
// Collect information.
var idBlock = doc.querySelector("center");
var title = text(idBlock, "a[href*='.pdf']");
var authors = idBlock.querySelectorAll("a[href*='_k=']");
// These are unpleasant but they're the best we have.
var date = idBlock.lastChild.textContent;
var abstract = idBlock.nextElementSibling.nextSibling.textContent;
var tableRows = doc.querySelectorAll("tbody tr");
for (let row of tableRows) {
let [left, right] = row.querySelectorAll("td");
if (!left || !right) continue;
let fieldName = left.innerText.toLowerCase();
if (fieldName.includes("format")) {
let pdfUrl = right.querySelector("a[href*='.pdf']").href;
newItem.attachments.push({ url: pdfUrl, title: "LingBuzz Full Text PDF", mimeType: "application/pdf" });
}
else if (fieldName.includes("keywords")) {
newItem.tags.push(...right.innerText.split(/[;,] /));
}
else if (fieldName.includes("published in")) {
newItem.extra = (newItem.extra || '') + 'LingBuzz Published In: ' + right.innerText + '\n';
}
}
newItem.title = title;
for (let authorLink of authors) {
newItem.creators.push(
Zotero.Utilities.cleanAuthor(authorLink.innerText, "author"));
}
newItem.abstractNote = abstract;
newItem.date = ZU.strToISO(date);
newItem.url = url;
newItem.attachments.push({ document: doc, title: "Snapshot" });
newItem.publisher = "LingBuzz";
newItem.complete();
}
function scrapeSA(doc, url) {
var newItem = new Zotero.Item(preprintType);
if (preprintType == "report") {
newItem.extra = "type: article\n";
}
// Collect information.
var idBlock = doc.querySelector("center");
// This is even worse than the usual LingBuzz pages.
var title = text(idBlock, "a:first-child");
var authors = idBlock.querySelectorAll("a:not(:first-child)");
// These are unpleasant but they're the best we have.
var date = idBlock.lastChild.textContent;
let pdfUrl = idBlock.querySelector("a:first-child").href;
newItem.attachments.push({ url: pdfUrl,
title: "LingBuzz (SemanticsArchive) Full Text PDF",
mimeType: "application/pdf" });
var tableRows = doc.querySelectorAll("tbody tr");
for (let row of tableRows) {
let [left, right] = row.querySelectorAll("td");
if (!left || !right) continue;
let fieldName = left.innerText.toLowerCase();
if (fieldName.includes("keywords")) {
newItem.tags.push(...right.innerText.split(/[;,] /));
}
}
newItem.title = title;
for (let authorLink of authors) {
newItem.creators.push(
Zotero.Utilities.cleanAuthor(authorLink.innerText, "author"));
}
newItem.date = ZU.strToISO(date);
newItem.url = url;
newItem.attachments.push({ document: doc, title: "Snapshot" });
newItem.publisher = "LingBuzz (SemanticsArchive)";
newItem.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://ling.auf.net/lingbuzz/005988",
"items": [
{
"itemType": "preprint",
"title": "Verb height indeed determines prosodic phrasing: evidence from Iron Ossetic",
"creators": [
{
"firstName": "Lena",
"lastName": "Borise",
"creatorType": "author"
},
{
"firstName": "David",
"lastName": "Erschler",
"creatorType": "author"
}
],
"date": "2021-05",
"abstractNote": "We provide novel evidence in favor of the proposal by Hamlaoui and Szendrői (2015, 2017), who argue for a flexible mapping between an Intonational Phrase (ɩ) and syntactic constituents. According to them, ɩ corresponds to the highest projection that hosts verbal material, together with its specifier. The prediction is that the size of ɩ co-varies with the height of the verb, if the latter is variable. Our evidence comes from Iron Ossetic (East Iranian), a language with multiple projections available for verb raising, depending on context. The flexible ɩ-mapping approach – but not more rigid approaches to ɩ-formation – can account for the properties of ɩ-formation in Iron Ossetic. This applies to the prosody of utterances that contain negative indefinites, narrow foci, and single wh-phrases. More complex wh-questions (those with multiple wh-phrases and/or negative indefinites) provide evidence that syntax-based flexible ɩ-mapping approach interacts with language-specific eurhythmic constraints. The Iron Ossetic facts, therefore, provide support for the flexible ɩ-mapping approach, which has not been tested until now on languages of this type.",
"extra": "LingBuzz Published In: Proceedings of NELS 51",
"libraryCatalog": "LingBuzz",
"repository": "LingBuzz",
"shortTitle": "Verb height indeed determines prosodic phrasing",
"url": "https://ling.auf.net/lingbuzz/005988",
"attachments": [
{
"title": "LingBuzz Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "focus"
},
{
"tag": "iranian"
},
{
"tag": "iron ossetic"
},
{
"tag": "phonology"
},
{
"tag": "prosodic phrasing"
},
{
"tag": "syntax"
},
{
"tag": "syntax-prosody interface"
},
{
"tag": "wh-questions"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://ling.auf.net/lingbuzz/repo/semanticsArchive/article/001471",
"items": [
{
"itemType": "preprint",
"title": "Review of Barker and Shan (2015) Continuations and Natural Language",
"creators": [
{
"firstName": "Yusuke",
"lastName": "Kubota",
"creatorType": "author"
}
],
"date": "2015-06",
"libraryCatalog": "LingBuzz",
"repository": "LingBuzz (SemanticsArchive)",
"url": "https://ling.auf.net/lingbuzz/repo/semanticsArchive/article/001471",
"attachments": [
{
"title": "LingBuzz (SemanticsArchive) Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "binding"
},
{
"tag": "categorial grammar"
},
{
"tag": "continuations"
},
{
"tag": "crossover"
},
{
"tag": "reconstruction"
},
{
"tag": "scope"
},
{
"tag": "semantics"
},
{
"tag": "semanticsarchive"
},
{
"tag": "syntax"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://ling.auf.net/lingbuzz/_search?q=svan",
"items": "multiple"
},
{
"type": "web",
"url": "https://ling.auf.net/lingbuzz/_search?q=construction+grammar",
"items": "multiple"
},
{
"type": "web",
"url": "https://ling.auf.net/lingbuzz/_search?q=semanticsarchive",
"items": "multiple"
},
{
"type": "web",
"url": "https://lingbuzz.net/lingbuzz/006559",
"items": [
{
"itemType": "preprint",
"title": "Object drop in Spanish is not island-sensitive",
"creators": [
{
"firstName": "Matías",
"lastName": "Verdecchia",
"creatorType": "author"
}
],
"date": "2022-04",
"abstractNote": "Campos (1986) argues that object drop in Spanish exhibits island effects. This claim has remained unchallenged up to date and is largely assumed in the literature. In this squib, I show that this characterization is not empirically correct: given a proper discourse context, null objects can easily appear within a syntactic island in Spanish. This observation constitutes a non-trivial problem for object drop analyses based on movement.",
"extra": "LingBuzz Published In: To appear in Journal of Linguistics",
"libraryCatalog": "LingBuzz",
"repository": "LingBuzz",
"url": "https://lingbuzz.net/lingbuzz/006559",
"attachments": [
{
"title": "LingBuzz Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "object drop - islands - spanish - movement"
},
{
"tag": "syntax"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Jonas Skorzak^https?://hudoc\.echr\.coe\.int/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2020 JONAS SKORZAK
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
/*
Key guides for citation:
- French: https://www.echr.coe.int/documents/note_citation_fra.pdf
- English: https://www.echr.coe.int/documents/note_citation_eng.pdf
- OSCOLA: https://www.law.ox.ac.uk/sites/files/oxlaw/oscola_4th_edn_hart_2012.pdf#page=37&zoom=auto,-270,529
*/
/*
TODO:
- Handle friendly settlements (the addition to the case name)
- Handle more than judgments or decisions (summaries, translations, search results)
- Handle reports
- Handle resolutions and advisory opinions properly (esp. title)
- Handle different types of documents via the API.
- Use keywords for tags
- Use references to create "related" entries if they exist
- Put in short titles
=> All relate to one thing: This translator is currently unable to access the API
to query it for the taxonomies/thesauruses used for decision type ("typedescription"),
decision-making body ("originatingbody"), keywords ("kpthesaurus"), ...
Check compiled.js on the HUDOC website in order to learn how to query these aspects.
Search for "// ###..//sites/echr/echr.js ###"" in compiled.js to find most API fields.
*/
// After removing text(), eslint complains
/* eslint-disable no-undef */
// Scrapes some metadata from the document
// TODO: integrate function into scrape
function scrapeMetaData(doc, detail) { // Only scrapes the header of the main page
switch (detail) {
case "appno": return text(doc, "span.column01");
case "typedescription": return text(doc, "span.column02");
case "originatingbody": return text(doc, "span.column03");
case "judgementdate": return text(doc, "span.column04");
default: return null;
}
}
// Gets the itemid of the document
function getItemID(url) {
var urlRegex = /%22itemid%22:\[%22([\d-]*)%22]|\?i=([\d-]*)/i;
var id = url.match(urlRegex);
return id[1];
}
// Adds the type of judgment at the end of the name
function getTypeBit(doc, url) { // TODO: Switch to 'url' once we use the API instead
var description = scrapeMetaData(doc, "typedescription");
// The logic assumes the user wants French descriptors if they use the French website
if (url.includes("hudoc.echr.coe.int/fre#")) {
if (description.includes("Arrêt")) {
if (description.includes("satisfaction équitable") && !description.includes("au principal")) {
return " (satisfaction équitable)"; // Some papers use "(arrêt satisfaction équitable)"
}
if (description.includes("exception préliminaire") || description.includes("incompétence")) {
return " (exception préliminaire)";
}
if (description.includes("radiation du rôle")) return " (radiation)";
if (description.includes("interprétation")) return " (interprétation)";
if (description.includes("révision")) return " (révision)";
}
if (description.includes("Décision")) return " (déc.)";
if (description.includes("Affaire Communiquée")) return " (communiquée)"; // TODO: Rather use abbreviation?
if (description.includes("Révision")) return " (déc. de révision)"; // TODO: Rather use abbreviation?
return "";
// return " (" + description.split("(")[0].toLowerCase() + ")";
}
if (description.includes("Judgment")) {
if (description.includes("Just Satisfaction") && !description.includes("Merits")) {
return " (just satisfaction)";
}
if (description.includes("Objection") || description.includes("Jurisdiction")) {
return " (preliminary objections)";
}
// TODO: Distinguish " (friendly settlement)" and " (striking out)"
// Requires a queryMetaData function
if (description.includes("Struck out")) return " (striking out)";
if (description.includes("Interpretation")) return " (interpretation)";
if (description.includes("Revision")) return " (revision)";
return "";
}
if (description.includes("Decision")) return " (dec.)";
if (description.includes("Communicated")) return " (communicated)"; // TODO: Rather use abbreviation?
if (description.includes("Revision")) return " (dec. on revision)"; // TODO: Rather use abbreviation?
return "";
}
// Downloads the legal summary in HUDOC
function getLegalSummary(item, appno) {
var appnoString = appno.join(" AND appno:");
// Save the French version if user visited the French version of the judgment
var doctypeString = "";
if (item.language == "fre") {
doctypeString = "doctype:CLINF";
}
else {
doctypeString = "doctype:CLIN";
}
var summaryUrl = "https://hudoc.echr.coe.int/app/query/results?query=contentsitename=ECHR "
+ appnoString + " AND "
+ doctypeString + " AND "
+ "(kpdate=\"" + item.dateDecided + "\")"
+ "&select=itemid"
+ "&sort=&start=0&length=500";
// Request id of legal summary
ZU.doGet(summaryUrl, function (json) {
json = JSON.parse(json);
if (json.resultcount >= 1) {
var textUrl = "https://hudoc.echr.coe.int/app/conversion/docx/html/body?library=ECHR&id="
+ json.results[0].columns.itemid;
Zotero.debug("Getting text of legal summary at: " + textUrl);
// Request text of legal summary
ZU.doGet(textUrl, function (text) {
// Remove styles and span tags
text = text
.replace(/<style>[\s\S]*<\/style>/g, "")
.replace(/<\/?span[^>]*>/g, "")
.replace(/class='s\S+'/g, "");
item.notes.push({
note: "<h1> HUDOC Legal Summary </h1> <br/>" + text // H1 necessary, otherwise title is lost
});
item.complete();
});
}
else {
item.complete();
}
});
}
// eslint-disable-next-line no-unused-vars: "url "
function detectWeb(doc, url) {
// We're waiting until the loading symbol is gone
Zotero.monitorDOMChanges(doc.querySelector("#notification div"), { attributes: true, attributeFilter: ["style"] });
var docType = scrapeMetaData(doc, "typedescription");
if (url.includes("hudoc.echr.coe.int/fre#")) {
// French website
if ((docType.includes("Arrêt")
|| docType.includes("Décision")
|| docType.includes("Avis consultatif")
// || docType.includes("Res-") // Removed support for resolutions (not a case and requires info scraped from the text)
|| docType.includes("Affaire Communiquée"))
// Exclude translations and press releases.
&& !(text(doc, "title").toLowerCase().includes("translation]") // toLowerCase() is added because "translati o n" is sometimes capitalized
|| docType.includes("Communiqué de presse")
|| text(doc, "title").toLowerCase().includes("résumé juridique"))) {
return "case";
}
}
else if (url.includes("hudoc.echr.coe.int/eng#")) {
// English website (so won't work for Spanish or German)
if ((docType.includes("Judgment")
|| docType.includes("Decision")
|| docType.includes("Advisory Opinion")
// || docType.includes("Res-") // Removed support for resolutions (not a case and requires info scraped from the text)
|| docType.includes("Communicated"))
// Exclude translations and press releases.
&& !(text(doc, "title").toLowerCase().includes("translation]") // toLow er Case() is added because "translation" is sometimes capitalized
|| docType.includes("Press Release")
|| text(doc, "title").toLowerCase().includes("legal summary"))) {
return "case";
}
}
return false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "case") {
scrapeDecision(doc, url);
}
}
function scrapeDecision(doc, url) { // Works for both Court judgments and decisions
// Item type: case
var item = new Zotero.Item("case");
// Title
// FIXME: Abbreviations in the form of A.B.C. or N.A.T.O are capitalized like A.b.c or N.a.t.o. That is a problem in capitalizeText()
var capTitle = ZU.capitalizeTitle(text(doc, "title").toLowerCase(), true);
var splitTitle = capTitle.split(/\(/);
// If title already contains the type, remove it.
// Exclude non-split titles and advisory opinions
if (!(splitTitle.length == 1)
&& !(scrapeMetaData(doc, "typedescription").includes("Advisory Opinion")
|| scrapeMetaData(doc, "typedescription").includes("Avis consultatif"))) {
// Find right cut-off point: Either the part that contains the v./c. or the part that contains the number of the case
let titleVersusMatch = splitTitle.findIndex(function (elem) {
if (elem.includes("V.") || elem.includes("C.")) {
return true;
}
return false;
});
let titleNumMatch = splitTitle.findIndex(function (elem) {
if (/^((No\.|N°)|(II|III|IV|V|VI|VII|VIII|IX|X)\))/i.test(elem)) {
return true;
}
return false;
});
let titleIndex = Math.max(titleVersusMatch, titleNumMatch);
capTitle = splitTitle.slice(0, titleIndex + 1).join("(");
}
// Zotero capitalizes the "v."/"c.", so we need to correct that for English and French cases
if (capTitle.includes(" V. ")) {
capTitle = capTitle.replace(" V. ", " v. ");
}
else if (capTitle.includes(" C. ")) {
capTitle = capTitle.replace(" C. ", " c. ");
}
item.caseName = capTitle + getTypeBit(doc, url);
// Court
var court = scrapeMetaData(doc, "originatingbody");
if (url.includes("hudoc.echr.coe.int/fre#")) {
if (text(doc, "title").includes("Avis consultatif")) {
item.court = "ECtHR [GC]";
}
else if (court.includes("Grande Chambre")) {
item.court = "ECtHR [GC]";
}
else if (court.includes("Commission")) {
item.court = "EComHR"; // TODO: Since the Commission is defunct, should the full title maybe be used instead?
}
else if (court == "Comité des Ministres") { // For resolutions (which are currently not supported)
item.court = "Comité des Ministres";
}
else {
item.court = "ECtHR";
}
}
/* eslint-disable no-lonely-if */
else {
if (text(doc, "title").includes("Advisory Opinion")) {
item.court = "ECtHR [GC]";
}
else if (court.includes("Grand Chamber")) {
item.court = "ECtHR [GC]";
}
else if (court.includes("Commission")) {
item.court = "EComHR"; // TODO: Since the Commission is defunct, should the full title maybe be used instead?
}
else if (court == "Committee of Ministers") { // For resolutions (which are currently not supported)
item.court = "Committee of Ministers";
}
else {
item.court = "ECtHR";
}
/* eslint-enable no-lonely-if */
}
// Date of decision
// convert to simple ISO: yyyy-mm-dd dd.mm.yyyy.
item.dateDecided = scrapeMetaData(doc, "judgementdate").split("/")
.reverse()
.join('-');
// URL
if (url.includes("hudoc.echr.coe.int/fre#")) {
item.url = "https://hudoc.echr.coe.int/fre?i=" + getItemID(url);
}
else {
item.url = "https://hudoc.echr.coe.int/eng?i=" + getItemID(url);
}
// Query remaining metadata from API
var queryUrl = "https://hudoc.echr.coe.int/app/query/results?query=(contentsitename=ECHR) AND "
+ getItemID(url)
+ "&select=appno,conclusion,docname,languageisocode" // Adapt based on what is needed
+ "&sort=&start=0&length=1";
ZU.doGet(queryUrl, function (json) {
json = JSON.parse(json).results[0].columns;
Zotero.debug("Queried HUDOC API at: " + queryUrl);
// Docket number
// NOTE: This translator doesn't add "app. no.". (See commit history for alternative)
// Some styles add "no." (Chicago), while other styles don't add anything (OSCOLA, APA)
// However, most citation style guides require adding the numbering system to the docket number ("app. no."/"no."),
// so users may need to correct their fields, depending on the style used.
// TODO: For advisory opinions, scrape the number from the text
var appno = json.appno.split(";");
item.docketNumber = appno.join(", ");
// Abstract
item.abstractNote = json.conclusion.replace(/;/g, "; ");
// Language
item.language = json.languageisocode.toLowerCase();
// Download PDF
var docname = json.docname;
var pdfurl = "https://hudoc.echr.coe.int/app/conversion/docx/pdf?library=ECHR&id="
+ getItemID(url) + "&filename=" + encodeURIComponent(docname) + ".pdf";
// pdfurl = encodeURI(pdfurl); // the "docname" may contain chars not part of the URI schema
Zotero.debug("Getting PDF at: " + pdfurl);
item.attachments.push({
title: "HUDOC Full Text PDF",
mimeType: "application/pdf",
url: pdfurl
});
// Download Legal Summary
if (appno.length !== 0) { // without app. nos. we can't find a legal summary
getLegalSummary(item, appno);
}
else {
item.complete();
}
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://hudoc.echr.coe.int/eng#{%22fulltext%22:[%22varnava%22],%22itemid%22:[%22001-94162%22]}",
"defer": true,
"items": [
{
"itemType": "case",
"caseName": "Varnava and Others v. Turkey",
"creators": [],
"dateDecided": "2009-09-18",
"abstractNote": "Preliminary objections dismissed (substantially the same, disappearance of object of proceedings, ratione temporis, six month period); Violation of Art. 2 (procedural aspect); Violation of Art. 3 (substantive aspect); Violation of Art. 5; No violation of Art. 5; Non-pecuniary damage - award",
"court": "ECtHR [GC]",
"docketNumber": "16064/90, 16065/90, 16066/90, 16068/90, 16069/90, 16070/90, 16071/90, 16072/90, 16073/90",
"language": "eng",
"url": "https://hudoc.echr.coe.int/eng?i=001-94162",
"attachments": [
{
"title": "HUDOC Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [
{
"note": "<h1> HUDOC Legal Summary </h1> <br/>\r\n<div><p >Information Note on the Court’s case-law No. 122</p><p >August-September 2009</p><p >Varnava and Others v. Turkey [GC] - 16064/90, 16065/90, 16066/90 et al.</p><p >Judgment 18.9.2009 [GC]</p><p >Article 2</p><p >Positive obligations</p><p >Article 2-1</p><p >Effective investigation</p><p >Failure to conduct effective investigation into fate of Greek Cypriots missing since Turkish military operations in northern Cyprus in 1974: violation</p><p > </p><p >Article 3</p><p >Inhuman treatment</p><p >Silence of authorities in face of real concerns about the fate of Greek Cypriots missing since Turkish military operations in northern Cyprus in 1974: violation</p><p > </p><p >Article 5</p><p >Article 5-1</p><p >Liberty of person</p><p >Failure to conduct effective investigation into arguable claim that missing Greek Cypriots may have been detained during Turkish military operations in northern Cyprus in 1974: violation</p><p > </p><p >Article 35</p><p >Article 35-1</p><p >Six month period</p><p >Application in disappearance case lodged more than six months after the respondent State’s ratification of the right of individual petition: preliminary objection dismissed</p><p > </p><p >Article 35-2</p><p >Same as matter already examined</p><p >Court’s jurisdiction where it had already examined case concerning substantially same facts in an inter-State case: preliminary objection dismissed</p><p > </p><p >Article 35-3</p><p >Ratione temporis</p><p s temporal jurisdiction in respect of disappearances that had occurred some thirteen years before the respondent State recognised the right of individual petition: preliminary objection dismissed</p><p > </p><p >Facts – The applicants were relatives of nine Cypriot nationals who disappeared during Turkish military operations in northern Cyprus in July and August 1974. The facts were disputed. Eight of the missing men were members of the Greek-Cypriot forces and it is alleged by the applicants that they disappeared after being captured and detained by Turkish military forces. Witnesses had testified to seeing them in Turkish prisons in 1974 and some of the men were identified by their families from photographs of Greek-Cypriot prisoners of war that were published in the Greek press. The Turkish Government denied that the men had been taken into captivity by Turkish forces and maintained that they had died in action during the conflict. The ninth missing man, Mr Hadjipanteli, was a bank employee. The applicants alleged that he was one of a group of people taken by Turkish forces for questioning in August 1974 and who had been missing ever since. His body was discovered in 2007 in the context of the activity of the United Nations Committee of Missing Persons in Cyprus (CMP). The CMP was set up in 1981 with the task of drawing up comprehensive lists of missing persons on both sides and specifying whether they were alive or dead. It has no power to attribute responsibility or to make findings as to the cause of death. Mr Hadjipanteli’s remains were exhumed from a mass grave near a Turkish-Cypriot village. A medical certificate indicated that he had received bullet wounds to the skull and right arm and a wound to the right thigh. The Turkish Government denied he had been taken prisoner, noting that his name was not on the list of Greek Cypriots held in the alleged place of detention, which had been visited by the International Red Cross.</p><p >In a judgment of 10 January 2008 (see Information Note no. 104) a Chamber of the Court held that there had been continuing procedural violations of Articles 2 and 5, and a violation of Article 3. It found no substantive violation of Article 5.</p><p >Law</p><p >(a)  Preliminary objections – The respondent Government challenged the Court’s jurisdiction to examine the case on several counts. Firstly, they submitted that there was no legal interest in determining the applications as the Court had already decided the question of the disappearances of all missing Greek Cypriots in the fourth inter-State case (Cyprus v. Turkey [GC], no. 25781/94, 10 May 2001, Information Note no. 30). Secondly, the applications fell outside the Court’s temporal jurisdiction as the missing men had to be presumed to have died long before Turkey’s acceptance of the right of individual petition on 28 January 1987 and there could be no freestanding procedural obligation, divorced from the factual origin of the complaints. In any event, the procedural obligation under Articles 2 and 3 was a recent jurisprudential development and could not be regarded as binding the States beforehand. Lastly, the applications had been lodged on 25 January 1990, more than six months after Turkey’s acceptance of the right to individual petition, and so were out of time.</p><p >(i)  Legal interest: For the purposes of Article 35 § 2 (b) of the Convention, an application was only “substantially the same” as another which had already been examined if it concerned substantially not only the same facts and complaints but was introduced by the same persons. An inter-State application did not, therefore, deprive individual applicants of the possibility of introducing, or pursuing, their own claims. As to the question whether the applications should be struck from the Court’s list under Article 37 § 1 (c), the findings in the fourth inter-State case had not specified in respect of which individual missing persons they were made. Moreover, in individual applications, the Court had the competence to issue just satisfaction awards to individual applicants and to indicate measures under Article 46. A legal interest therefore remained in pursuing the examination of the applications.</p><p >Conclusion: preliminary objection dismissed (sixteen votes to one).</p><p >(ii)  Temporal jurisdiction: The procedural obligation to carry out an investigation into deaths under Article 2 had evolved into a separate and autonomous duty and could be considered a “detachable obligation” capable of binding the State even when the death took place before the entry into force of the Convention (see Šilih v. Slovenia [GC], no. 71463/01, 9 April 2009, Information Note no. 118). It was immaterial that that procedural obligation had only developed in the Court’s case-law after Turkey’s acceptance of the right of individual petition as case-law was a means of clarifying pre-existing texts to which the principle of non-retroactivity did not apply in the same manner as to legislative enactments.</p><p >As to the argument that the missing men had to be presumed dead long before any temporal jurisdiction had arisen in 1987, the Court distinguished between the making of a factual presumption and the legal consequences that flowed from it. The procedural obligation to investigate disappearances in life-threatening circumstances could hardly come to an end on discovery of the body or the presumption of death as an obligation to account for the disappearance and death, and to identify and prosecute any perpetrator of unlawful acts, would generally remain. Accordingly, even though a lapse of over thirty-four years without any news could provide strong circumstantial evidence of intervening death, this did not remove the procedural obligation to investigate.</p><p >Further, there was an important distinction to be drawn between the obligation to investigate a suspicious death and the obligation to investigate a suspicious disappearance. A disappearance was a distinct phenomenon, characterised by an ongoing situation of uncertainty and unaccountability in which there was a lack of information or even a deliberate concealment and obfuscation of what had occurred. It was not an “instantaneous” act or event; the additional distinctive element of subsequent failure to account for the whereabouts and fate of the missing person gave rise to a continuing situation, with the procedural obligation potentially persisting as long as the fate of the missing person was unaccounted for, even where death was presumed. In that connection, the requirement for proximity of the death and investigative steps to the date of entry into force of the Convention (see Šilih) applied only in the context of killings or suspicious deaths.</p><p >Conclusion: preliminary objection dismissed (sixteen votes to one).</p><p >(iii)  Six-month rule: Applicants in disappearance cases had to make proof of a certain amount of diligence and initiative and introduce their complaints without undue delay. While the standard of expedition expected of relatives should not be too rigorous in view of the serious nature of disappearance offences, applications could be rejected where there had been excessive or unexplained delay by applicants who were, or should have been, aware that no investigation had been instigated or that it had lapsed into inaction or become ineffective and that there was no immediate, realistic prospect of an effective investigation in the future. When that stage was reached depended on the circumstances of the particular case.</p><p >In the exceptional circumstances of the instant case, which involved an international conflict with no normal investigative procedures available, it had been reasonable for the applicants to await the outcome of the Government and United Nations initiatives, as these could have resulted in steps being taken to investigate known sites of mass graves and provided the basis for further measures. While it must have been apparent by the end of 1990 that those processes no longer offered any realistic hope of progress in either finding bodies or accounting for the fate of their relatives in the near future, the applicants had applied to the Court in January of that year. Accordingly, they had, in the special circumstances of the case, acted with reasonable expedition.</p><p >Conclusion: preliminary objection dismissed (fifteen votes to two).</p><p >(b)  Merits</p><p >Article 2: The Court was satisfied that there was an at least arguable case that the missing men had last been seen in an area under, or about to come under, the control of the Turkish armed forces. Whether they had died or been taken prisoner, those men still had to be accounted for. Article 2 had to be interpreted in so far as possible in the light of the general principles of international law, including the rules of international humanitarian law, which played an indispensable and universally-accepted role in mitigating the savagery and inhumanity of armed conflict. In a zone of international conflict Contracting States were under obligation to protect the lives of those not, or no longer, engaged in hostilities. That obligation also extended to the provision of medical assistance to the wounded, the proper disposal of remains and the provision of information on the identity and fate of those concerned. The respondent Government had not produced any evidence or convincing explanation to counter the applicants’ claims that the missing men had disappeared in areas under the former’s exclusive control. As the disappearances had occurred in life-threatening circumstances where the conduct of military operations was accompanied by widespread arrests and killings, Article 2 imposed a continuing obligation on the respondent Government to account for the missing men’s whereabouts and fate.</p><p >On the question of compliance with that obligation, the Court fully acknowledged the importance of the CMP’s ongoing exhumations and identifications of remains and gave full credit to the work being done in providing information and returning remains to relatives. It noted, however, that while the CMP’s work was an important first step in the investigative process, it was not sufficient to meet the Government’s obligation under Article 2 to carry out effective investigations. From the materials provided in respect of one of the missing men, Mr Hadjipanteli, it appeared that the procedure on identification of remains was to issue a medical certificate of death, briefly indicating the fatal injuries. There was, however, no report analysing the circumstances or even the dating of death and no investigative measures to locate or question witnesses. Thus, even though the location of the body had been established it could not be said that any clear light had been shed on how the victim had met his fate.</p><p >While recognising the considerable difficulty in assembling evidence and mounting a case so long after the events, the Court reiterated that to be effective an investigation had to be capable of leading to a determination of whether the death was caused unlawfully and, if so, to the identification and punishment of those responsible. There was no indication that the CMP had gone beyond its limited terms of reference and no other body or authority had taken on the role of determining the facts or collecting and assessing evidence with a view to a prosecution. While an investigation might prove inconclusive, such an outcome was not inevitable and the respondent Government could not be absolved from making the requisite efforts. The fact that both sides in the conflict may have preferred a “politically-sensitive” approach and that the CMP with its limited remit was the only solution which could be agreed under the brokerage of the UN could have no bearing on the application of the Convention. There had thus been a continuing failure to effectively investigate the fate of the nine missing men.</p><p >Conclusion: continuing procedural violation (sixteen votes to one).</p><p >Article 3: The Court found no reason to differ from its finding in the fourth inter-State case that the Turkish authorities’ silence in the face of the real concerns of the applicants over the fate of their missing relatives could only be categorised as inhuman treatment.</p><p >Conclusion: continuing violation (sixteen votes to one).</p><p >Article 5: There was an arguable case that two of the missing men, both of whom had been included on International Red Cross lists as detainees, had last been seen in circumstances falling within the control of the Turkish or Turkish-Cypriot forces. However, the Turkish authorities had not acknowledged their detention, nor had they provided any documentary evidence giving official trace of their movements. While there had been no evidence that any of the missing persons had been in detention in the period under the Court’s consideration, the Turkish Government had to show that they had carried out an effective investigation into the arguable claim that the two missing men had been taken into custody and had not been seen subsequently. The Court’s findings above in relation to Article 2 left no doubt that the authorities had also failed to conduct the necessary investigation in that regard.</p><p >Conclusion: continuing violation in respect of two of the missing men (sixteen votes to one).</p><p >Article 41: EUR 12,000 in respect of non-pecuniary damage to each of the applicants, in view of the grievous nature of the case and decades of uncertainty the applicants had endured. The Court explained that it did not apply specific scales of damages to awards in disappearance cases, but was guided by equity, which involved flexibility and an objective consideration of what was just, fair and reasonable in all the circumstances.</p><p > </p><p >© Council of Europe/European Court of Human Rights<br />This summary by the Registry does not bind the Court.</p><p >Click here for the <a href=\"http://www.echr.coe.int/ECHR/EN/Header/Case-Law/Case-law+analysis/Information+notes/\">Case-Law Information Notes</a></p><p > </p></div>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://hudoc.echr.coe.int/eng#{%22fulltext%22:[%22loizidou%22],%22itemid%22:[%22001-57920%22]}",
"defer": true,
"items": [
{
"itemType": "case",
"caseName": "Loizidou v. Turkey (preliminary objections)",
"creators": [],
"dateDecided": "1995-03-23",
"abstractNote": "Question of procedure rejected (locus standi of the applicant Government); Preliminary objection rejected (abuse of process); Preliminary objection rejected (ratione loci); Preliminary objection joined to merits (ratione temporis)",
"court": "ECtHR [GC]",
"docketNumber": "15318/89",
"language": "eng",
"url": "https://hudoc.echr.coe.int/eng?i=001-57920",
"attachments": [
{
"title": "HUDOC Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [
{
"note": "<h1> HUDOC Legal Summary </h1> <br/>\r\n<div><p >Information Note on the Court’s case-law No.</p><p >March 1995</p><p >Loizidou v. Turkey (preliminary objections) - 15318/89</p><p >Judgment 23.3.1995 [GC]</p><p >Article 1</p><p >Jurisdiction of states</p><p >Jurisdiction of Turkey in case concerning access to property in northern Cyprus</p><p >Article 35</p><p >Article 35-3</p><p >Ratione temporis</p><p >Restrictions ratione temporis des déclarations turques relatives à la Convention: preliminary objection joined to the merits</p><p >[This summary is extracted from the Court’s official reports (Series A or Reports of Judgments and Decisions). Its formatting and structure may therefore differ from the Case-Law Information Note summaries.]</p><p >I.STANDING OF THE APPLICANT GOVERNMENT</p><p >The applicant Government have been recognised by the international community as the Government of the Republic of Cyprus. </p><p >Conclusion: their locus standi as the Government of a High Contracting Party not in doubt.</p><p >II.ALLEGED ABUSE OF PROCESS</p><p >Since objection not raised before the Commission the Turkish Government is estopped from raising it before the Court in so far as it applies to the applicant.</p><p >In so far as objection is directed to the applicant Government, the Court notes that this Government have referred the case to the Court inter alia because of concern for the rights of the applicant and other citizens in the same situation. Such motivation not an abuse of Court's procedures.</p><p >Conclusion: objection rejected (unanimously).</p><p >III.THE TURKISH GOVERNMENT'S ROLE IN THE PROCEEDINGS</p><p >Not within the discretion of a Contracting Party to characterise its standing in the proceedings before the Court in the manner it sees fit. Case originates in a petition made under Article 25 against Turkey in her capacity as a High Contracting Party and has been referred to the Court under Article 48 (b) by another High Contracting Party.</p><p >Conclusion: Turkey is the respondent party in this case.</p><p >IV.SCOPE OF THE CASE</p><p >The applicant Government have confined themselves to seeking a ruling on the complaints under Article 1 of Protocol No. 1 and Article 8, in so far as they have been declared admissible by the Commission, concerning access to the applicant's property.</p><p >Not necessary to give a general ruling on the question whether it is permissible to limit a referral to the Court to some of the issues on which the Commission has stated its opinion.</p><p >Conclusion: only the above complaints are before the Court. </p><p >V.OBJECTIONS RATIONE LOCI</p><p >A.Whether the facts alleged by the applicant are capable of falling within the jurisdiction of Turkey under Article 1 of the Convention</p><p >Court is not called upon at the preliminary objections stage to examine whether Turkey is actually responsible. This falls to be determined at the merits phase. Its enquiry is limited to determining whether the matters complained of are capable of falling within the \"jurisdiction\" of Turkey even though they occur outside her national territory.</p><p >The concept of \"jurisdiction\" under Article 1 is not restricted to the national territory of the High Contracting Parties. Responsibility may also arise when as a consequence of military action, whether lawful or unlawful, a Contracting Party exercises effective control of an area outside its national territory.</p><p >Not disputed that the applicant was prevented by Turkish troops from gaining access to her property. </p><p >Conclusion: facts alleged by the applicant are capable of falling within Turkish \"jurisdiction\" within the meaning of Article 1 (sixteen votes to two). </p><p >B.Validity of the territorial restrictions attached to Turkey's Article 25 and 46 declarations</p><p >Court has regard to the special character of the Convention as a treaty for the collective enforcement of human rights; the fact that it is a living instrument to be interpreted in the light of present-day conditions. In addition, its provisions are to be interpreted and applied so as to make its safeguards effective.</p><p >Court seeks to ascertain the ordinary meaning given to Articles 25 and 46 in their context and in the light of their object and purpose. Regard also had to subsequent practice in the application of the treaty. </p><p >If Articles 25 and 46 were to be interpreted as permitting restrictions (other than of a temporal nature) States would be enabled to qualify their consent under the optional clauses. This would severely weaken the role of the Commission and Court and diminish the effectiveness of the Convention as a constitutional instrument of European public order. The consequences for the enforcement of the Convention would be so far-reaching that a power should have been expressly provided for. No such provision in either Article 25 or 46.</p><p >The subsequent practice of Contracting Parties of not attaching restrictions ratione loci or ratione materiae confirms the view that these are not permitted. </p><p >Not contested that Article 46 of the Convention was modelled on Article 36 of the Statute of the International Court of Justice. However, the fundamental difference in the role and purpose of the respective tribunals, coupled with the existence of a practice of unconditional acceptance, provides a compelling basis for distinguishing Convention practice from that of the International Court.</p><p >Finally, the application of Article 63 § 4, by analogy, does not provide support for the claim that a territorial restriction is permissible.</p><p >C.Validity of the Turkish declarations under Articles 25 and 46</p><p >Court does not consider that the issue of the severability of the invalid parts of Turkey's declarations can be decided by reference to the statements of her representatives expressed subsequent to the filing of the declarations. Turkey must have been aware, in view of the consistent practice of Contracting Parties, that the impugned clauses were of questionable validity. </p><p >Court finds that the impugned restrictions can be separated from the remainder of the text, leaving intact the acceptance of the optional clauses.</p><p >Conclusion: the territorial restrictions are invalid but the declarations under Articles 25 and 46 contain valid acceptances of the competence of the Commission and Court (sixteen votes to two).</p><p >VI.OBJECTION RATIONE TEMPORIS</p><p >The correct interpretation and application of the restrictions ratione temporis, in the Turkish declarations under Articles 25 and 46, and the notion of continuing violations of the Convention, raise difficult legal and factual questions. On the present state of the file, Court does not have sufficient elements enabling it to decide these questions.</p><p >Conclusion: objection joined to the merits of the case (unanimously).</p><p > </p><p >© Council of Europe/European Court of Human Rights<br />This summary by the Registry does not bind the Court.</p><p >Click here for the <a href=\"http://www.echr.coe.int/ECHR/EN/Header/Case-Law/Case-law+analysis/Information+notes/\">Case-Law Information Notes</a></p><p > </p></div>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://hudoc.echr.coe.int/eng#{%22typedescription%22:[%2224%22],%22itemid%22:[%22003-3004688-3312583%22]}",
"defer": true,
"items": [
{
"itemType": "case",
"caseName": "Advisory Opinion (no. 2) 22.01.2010",
"creators": [],
"dateDecided": "2010-01-22",
"court": "ECtHR [GC]",
"language": "eng",
"url": "https://hudoc.echr.coe.int/eng?i=003-3004688-3312583",
"attachments": [
{
"title": "HUDOC Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://hudoc.echr.coe.int/eng#{%22itemid%22:[%22001-194320%22]}",
"defer": true,
"items": [
{
"itemType": "case",
"caseName": "Romeo Castaño c. Belgique",
"creators": [],
"dateDecided": "2019-07-09",
"abstractNote": "Violation de l'article 2 - Droit à la vie (Article 2-1 - Enquête effective) (Volet procédural); Préjudice moral - réparation (Article 41 - Préjudice moral; Satisfaction équitable)",
"court": "ECtHR",
"docketNumber": "8351/17",
"language": "fre",
"url": "https://hudoc.echr.coe.int/eng?i=001-194320",
"attachments": [
{
"title": "HUDOC Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [
{
"note": "<h1> HUDOC Legal Summary </h1> <br/>\r\n<div><p >Note d’information sur la jurisprudence de la Cour 231</p><p >Juillet 2019</p><p >Romeo Castaño c. Belgique - 8351/17</p><p >Arrêt 9.7.2019 [Section II]</p><p >Article 1</p><p >Juridiction des États</p><p >Juridiction de la Belgique née du refus d’exécuter un mandat d’arrêt européen, empêchant une enquête sur un meurtre en Espagne</p><p >Article 2</p><p >Article 2-1</p><p >Enquête effective</p><p >Refus d’exécuter un mandat d’arrêt européen, empêchant une enquête sur un meurtre en Espagne, au motif insuffisamment étayé du risque de mauvaises conditions de détention : violation</p><p >En fait – En 1981, le père des requérants fut assassiné par un commando appartenant à l’organisation terroriste ETA. En 2007, tous les membres du commando furent condamnés par la justice espagnole, hormis N.J.E., qui s’est réfugiée en Belgique. </p><p >Des mandats d’arrêt européens (ci-après « MAE ») ont été décernés par un juge d’instruction espagnol en 2004, 2005 et 2015 à l’encontre de N.J.E. aux fins de poursuites pénales. Mais en 2013 et 2016, la chambre des mises en accusation belge refusa toutefois l’exécution des MAE estimant qu’il y avait de sérieux motifs de croire que l’exécution du MAE porterait atteinte aux droits fondamentaux de N.J.E. Le parquet fédéral belge se pourvut en cassation contre ces arrêts. Mais la Cour de cassation rejeta les pourvois en 2013 et 2016.</p><p >Les requérants se plaignent que l’Espagne ait été empêchée de poursuivre N.J.E. par le refus des autorités belges d’exécuter les MAE, système mis en place au sein de l’Union européenne (UE).</p><p >En droit</p><p >Article 1 (compétence ratione loci) : Le grief que les requérants tirent de l’article 2 de la Convention à l’égard de la Belgique concerne le manquement allégué des autorités belges à coopérer avec les autorités espagnoles en prenant les mesures nécessaires pour permettre que l’auteure présumée de l’assassinat de leur père, réfugiée en Belgique, soit jugée en Espagne. Il ne repose donc pas sur l’affirmation d’un manquement de la Belgique à une éventuelle obligation procédurale d’enquêter elle-même sur cet assassinat.</p><p >Dans le cadre de l’existence d’engagements de coopération en matière pénale liant les deux États concernés par le biais du MAE, les autorités belges ont été informées de l’intention des autorités espagnoles de poursuivre N.J.E., et sollicitées de procéder à son arrestation et à sa remise.</p><p >Ces circonstances suffisent à considérer qu’un lien juridictionnel existe entre les requérants et la Belgique au sens de l’article 1 concernant le grief soulevé par les requérants sous l’angle du volet procédural de l’article 2.</p><p >Conclusion : exception préliminaire rejetée (unanimité).</p><p >Article 2 (volet procédural) : Dans le cadre de l’exécution d’un MAE par un État membre de l’UE, il convient de ne pas appliquer le mécanisme de reconnaissance mutuelle de manière automatique et mécanique, au détriment des droits fondamentaux. Compte tenu de la présomption de respect par l’État d’émission des droits fondamentaux qui prévaut dans la logique de la confiance mutuelle entre États membres de l’UE, le refus de remise doit être justifié par des éléments circonstanciés indiquant un danger manifeste pour les droits fondamentaux de l’intéressé de nature à renverser ladite présomption. En l’espèce, les juridictions belges ont justifié leur décision de refus d’exécuter les MAE émis par le juge d’instruction espagnol en raison du risque, en cas de remise à l’Espagne, que N.J.E. y subisse une détention dans des conditions contraires à l’article 3 de la Convention. Cette justification peut constituer un motif légitime pour refuser l’exécution du MAE, et donc pour refuser la coopération avec l’Espagne. Encore faut-il, vu la présence de droits de tiers, que le constat d’un tel risque repose sur des bases factuelles suffisantes.</p><p >La chambre des mises en accusation s’est fondée essentiellement sur des rapports internationaux en date de 2011 à 2014 ainsi que sur le contexte de « l’histoire politique contemporaine de l’Espagne ». Elle n’a pas procédé à un examen actualisé et circonstancié de la situation qui prévalait en 2016 et n’a pas cherché à identifier un risque réel et individualisable de violation des droits de la Convention dans le cas de N.J.E. ni des défaillances structurelles quant aux conditions de détention en Espagne.</p><p >De nombreux MAE ont été émis et exécutés précédemment à l’égard de membres présumés de l’ETA sans que les pays d’exécution des MAE, dont la Belgique, y aient vu des risques de violation des droits fondamentaux des personnes faisant l’objet de la remise.</p><p >Les circonstances de l’espèce et les intérêts en cause auraient dû amener les autorités belges, en faisant usage de la possibilité que la loi nationale leur donnait, à demander des informations complémentaires quant à l’application du régime de détention dans le cas de N.J.E., plus particulièrement quant à l’endroit et aux conditions de détention, afin de vérifier l’existence d’un risque concret et réel de violation de la Convention en cas de remise.</p><p >Ainsi, l’examen effectué par les juridictions belges lors des procédures de remise n’a pas été assez complet pour considérer le motif invoqué par elles pour refuser la remise de N.J.E. au détriment des droits des requérants comme reposant sur une base factuelle suffisante. La Belgique a donc manqué à l’obligation de coopérer qui découlait pour elle du volet procédural de l’article 2 et il y a eu violation de cette disposition.</p><p >Ce constat n’implique pas nécessairement que la Belgique ait l’obligation de remettre N.J.E. aux autorités espagnoles. C’est l’insuffisance de la base factuelle du motif pour refuser la remise qui a conduit la Cour à constater une violation de l’article 2. Cela n’enlève rien à l’obligation des autorités belges de s’assurer qu’en cas de remise aux autorités espagnoles N.J.E. ne courra pas de risque de traitement contraire à l’article 3. Plus généralement, le présent arrêt ne saurait être interprété comme réduisant l’obligation des États de ne pas extrader une personne vers un pays qui demande son extradition lorsqu’il y a des motifs sérieux de croire que l’intéressé, si on l’extrade vers ce pays, y courra un risque réel d’être soumis à un traitement contraire à l’article 3, et donc de s’assurer qu’un tel risque n’existe pas.</p><p >Conclusion : violation (unanimité).</p><p >Article 41 : 5 000 EUR à chacun des requérants pour préjudice moral.</p><p >(Voir aussi Soering c. Royaume-Uni, <a href=\"http://hudoc.echr.coe.int/fre?i=001-62176\">14038/88</a>, 7 juillet 1989 ; Mamatkoulov et Askarov c. Turquie [GC], 46827/99 et 46951/99, 4 février 2005, <a href=\"http://hudoc.echr.coe.int/fre?i=002-4001\">Note d’information 72</a> ; Rantsev c. Chypre et Russie, 25965/04, 7 janvier 2010, <a href=\"http://hudoc.echr.coe.int/fre?i=002-1143\">Note d’information 126</a> ; Trabelsi c. Belgique, 140/10, 4 septembre 2014, <a href=\"http://hudoc.echr.coe.int/fre?i=002-10080\">Note d’information 177</a> ; Avotiņš c. Lettonie [GC], 17502/07, 23 mai 2016, <a href=\"http://hudoc.echr.coe.int/fre?i=002-11062\">Note d’information 196</a> ; Pirozzi c. Belgique, <a href=\"http://hudoc.echr.coe.int/fre?i=001-182231\">21055/11</a>, 17 avril 2018 ; et Güzelyurtlu et autres c. Chypre et Turquie [GC], 36925/07, 29 janvier 2019, <a href=\"http://hudoc.echr.coe.int/fre?i=002-12316\">Note d’information 225</a> ; ainsi que la fiche thématique <a href=\"https://www.echr.coe.int/Documents/FS_European_Union_FRA.pdf\">Jurisprudence relative à l’Union européenne</a>)</p><p > </p><p >© Conseil de l’Europe/Cour européenne des droits de l’homme<br />Rédigé par le greffe, ce résumé ne lie pas la Cour.</p><p >Cliquez ici pour accéder aux <a href=\"http://www.echr.coe.int/NoteInformation/fr\">Notes d'information sur la jurisprudence</a></p></div>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://hudoc.echr.coe.int/eng#{%22fulltext%22:[%22hanan%22],%22typedescription%22:[%2223%22],%22itemid%22:[%22001-166884%22]}",
"defer": true,
"items": [
{
"itemType": "case",
"caseName": "Hanan v. Germany (communicated)",
"creators": [],
"dateDecided": "2016-09-02",
"abstractNote": "Communicated",
"court": "ECtHR",
"docketNumber": "4871/16",
"language": "eng",
"url": "https://hudoc.echr.coe.int/eng?i=001-166884",
"attachments": [
{
"title": "HUDOC Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://hudoc.echr.coe.int/fre#{%22itemid%22:[%22001-207757%22]}",
"defer": true,
"items": [
{
"itemType": "case",
"caseName": "Georgia v. Russia (ii)",
"creators": [],
"dateDecided": "2021-01-21",
"abstractNote": "Preliminary objections dismissed (Art. 35) Admissibility criteria; (Art. 35-1) Exhaustion of domestic remedies; Remainder inadmissible (Art. 35) Admissibility criteria; (Art. 35-3-a) Ratione loci; Violation of Article 2 - Right to life (Article 2-1 - Life; Article 2-2 - Use of force) (Substantive aspect); Violation of Article 3 - Prohibition of torture (Article 3 - Degrading treatment; Inhuman treatment) (Substantive aspect); Violation of Article 8 - Right to respect for private and family life (Article 8-1 - Respect for home); Violation of Article 1 of Protocol No. 1 - Protection of property (Article 1 para. 1 of Protocol No. 1 - Peaceful enjoyment of possessions); Violation of Article 3 - Prohibition of torture (Article 3 - Degrading treatment; Inhuman treatment) (Substantive aspect); Violation of Article 5 - Right to liberty and security (Article 5-1 - Liberty of person); Violation of Article 3 - Prohibition of torture (Article 3 - Torture) (Substantive aspect); Violation of Article 2 of Protocol No. 4 - Freedom of movement-{general}; No violation of Article 2 of Protocol No. 1 - Right to education-{general} (Article 2 of Protocol No. 1 - Right to education); Violation of Article 2 - Right to life (Article 2-1 - Effective investigation) (Procedural aspect); Violation of Article 38 - Examination of the case-{general} (Article 38 - Obligation to furnish all necessary facilities); Just satisfaction reserved (Article 41 - Just satisfaction)",
"court": "ECtHR [GC]",
"docketNumber": "38263/08",
"language": "eng",
"url": "https://hudoc.echr.coe.int/fre?i=001-207757",
"attachments": [
{
"title": "HUDOC Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [
{
"note": "<h1> HUDOC Legal Summary </h1> <br/>\r\n<div><p >Information Note on the Court’s case-law 247</p><p >January 2021</p><p >Georgia v. Russia (II) [GC] - 38263/08</p><p >Judgment 21.1.2021 [GC]</p><p >Article 1</p><p >Jurisdiction of States</p><p >Jurisdiction of Russia over Abkhazia and South Ossetia during the active phase of hostilities and after their cessation</p><p >Article 2</p><p >Article 2-1</p><p >Effective investigation</p><p >Russia’s failure to comply with procedural obligation to investigate effectively the events that occurred both during the active phase of the hostilities and after their cessation: violation</p><p >Article 2 of Protocol No. 4</p><p >Article 2 para. 1 of Protocol No. 4</p><p >Freedom of movement</p><p >Administrative practice as regards the inability of Georgian nationals to return to their respective homes in Abkhazia and South Ossetia: violation</p><p >Facts – As in the case of Georgia v. Russia (I), the application was lodged in the context of the armed conflict between Georgia and the Russian Federation in August 2008 following an extended period of ever-mounting tensions, provocations and incidents that opposed the two countries.</p><p >The applicant Government submitted that, in the course of indiscriminate and disproportionate attacks by Russian forces and/or by the separatist forces under their control, hundreds of civilians were injured, killed, detained or went missing, thousands of civilians had their property and homes destroyed, and over 300,000 people were forced to leave Abkhazia and South Ossetia. In their submission, these consequences and the subsequent lack of any investigation engaged Russia’s responsibility under Articles 2, 3, 5, 8 and 13 of the Convention, Articles 1 and 2 of Protocol No. 1 and Article 2 of Protocol No. 4.</p><p >Law</p><p >Article 1- Jurisdiction</p><p >The Court made a distinction between the military operations carried out during the active phase of hostilities and the other events which require examining in the context of the present international armed conflict, including those that occurred during the “occupation” phase after the active phase of hostilities had ceased, and the detention and treatment of civilians and prisoners of war, freedom of movement of displaced persons, the right to education and the obligation to investigate.</p><p >Active phase of hostilities during the five-day war (from 8 to 12 August 2008) </p><p >The present case marked the first time since the decision in Banković and Others (concerning the NATO bombing of the Radio‑Television Serbia headquarters in Belgrade) that the Court had been required to examine the question of jurisdiction in relation to military operations (armed attacks, bombing, shelling) in the context of an international armed conflict. However, the Court’s case-law on the concept of extraterritorial jurisdiction had evolved since that decision, in that the Court had, inter alia, established a number of criteria for the exercise of extraterritorial jurisdiction by a State, which had to remain exceptional, the two main criteria being that of “effective control” by the State over an area (spatial concept of jurisdiction) and that of “State agent authority and control” over individuals (personal concept of jurisdiction). Subsequently, in Medvedyev and Others the Court had explicitly reiterated, with reference to the Banković and Others decision, that a State’s responsibility could not be engaged in respect of “an instantaneous extraterritorial act, as the provisions of Article 1 did not admit a ‘cause and effect’ notion of ‘jurisdiction’” (see also also <a href=\"http://hudoc.echr.coe.int/eng?i=001-202468\">M.N. and Others v. Belgium</a> (dec.) [GC]).</p><p >In that connection it could be considered from the outset that, in the event of military operations – including, for example, armed attacks, bombing or shelling – carried out during an international armed conflict, one could not generally speak of “effective control” over an area. The very reality of armed confrontation and fighting between enemy military forces seeking to establish control over an area in a context of chaos meant that there was no control over an area. It also excluded any form of “State agent authority and control” over individuals. This was also true in the present case, given that the majority of the fighting had taken place in areas that had previously been under Georgian control. This conclusion was confirmed by the practice of the High Contracting Parties in not derogating under Article 15 of the Convention in situations where they had engaged in an international armed conflict outside their own territory. In the Court’s view, this might be interpreted as the High Contracting Parties considering that, in such situations, they did not exercise jurisdiction within the meaning of Article 1.</p><p >However, having regard in particular to the large number of alleged victims and contested incidents, the magnitude of the evidence produced, the difficulty in establishing the relevant circumstances and the fact that such situations were predominantly regulated by legal norms other than those of the Convention (specifically, international humanitarian law or the law of armed conflict), the Court was not in a position to develop its case-law beyond the understanding of the notion of “jurisdiction” as established to date. If, as in the present case, the Court was to be entrusted with the task of assessing acts of war and active hostilities in the context of an international armed conflict outside the territory of a respondent State, it had to be for the Contracting Parties to provide the necessary legal basis for such a task. This did not mean that States could act outside any legal framework; they were obliged to comply with the very detailed rules of international humanitarian law in such a context.</p><p >Conclusion: The events that had occurred during the active phase of the hostilities did not fall within the jurisdiction of the Russian Federation for the purposes of Article 1; inadmissible (eleven votes to six).</p><p >Occupation phase after the cessation of hostilities (ceasefire agreement of 12 August 2008)</p><p >In their observations the respondent Government had acknowledged a substantial Russian military presence after hostilities had ceased, and provided numerous indications showing the extent of the economic and financial support that the Russian Federation had provided and continued to provide to South Ossetia and to Abkhazia. The EU’s Fact-Finding Mission had also pointed to the relationship of dependency not only in economic and financial terms, but also in military and political ones; the information provided by it was also revealing as to the pre-existing relationship of subordination between the separatist entities and the Russian Federation, which had lasted throughout the active phase of the hostilities and after their cessation.  In its report, the EU Fact-Finding Mission had referred to “creeping annexation” of South Ossetia and Abkhazia by the Russian Federation.</p><p >The Russian Federation had therefore exercised “effective control”, within the meaning of the Court’s case-law, over South Ossetia, Abkhazia and the “buffer zone” from 12 August to 10 October 2008, the date of the official withdrawal of the Russian troops. Even after that period, the strong Russian presence and the South Ossetian and Abkhazian authorities’ dependency on the Russian Federation, on whom their survival depended, as was shown particularly by the cooperation and assistance agreements signed with the latter, indicated that there had been continued “effective control” over South Ossetia and Abkhazia.</p><p >Conclusion: The events that had occurred after the cessation of hostilities fell within the jurisdiction of the Russian Federation for the purposes of Article 1 (sixteen votes to one).</p><p >Interrelation between the provisions of the Convention and the rules of international humanitarian law (IHL)</p><p >The Court examined the interrelation between the two legal regimes with regard to each aspect of the case and each Convention Article alleged to have been breached. In doing so, it ascertained each time whether there was a conflict between the two legal regimes.</p><p >Definition of the concept of “administrative practice”</p><p >While the criteria set out in <a href=\"http://hudoc.echr.coe.int/eng?i=001-145546\">Georgia v. Russia (I)</a> [GC] defined a general framework, they did not indicate the number of incidents required to establish the existence of an administrative practice: that was a question left for the Court to assess having regard to the particular circumstances of each case.</p><p >Articles 2, 3 and 8 of the Convention and Article 1 of Protocol No. 1</p><p >Generally speaking, IHL applied in a situation of “occupation”. In the Court’s view, the concept of “occupation” for the purposes of IHL included a requirement of “effective control”. If there was “occupation” for the purposes of IHL there would also be “effective control” within the meaning of the Court’s case-law, although the term “effective control” was broader and covered situations that did not necessarily amount to a situation of “occupation” for the purposes of IHL. Having regard to the complaints raised in the present case, there was no conflict between Articles 2, 3 and 8 of the Convention and Article 1 of Protocol No. 1 and the rules of IHL applicable in a situation of occupation.</p><p >From the time when the Russian Federation had exercised “effective control” over the territories of South Ossetia and the “buffer zone” after the active conduct of hostilities had ceased, it was also responsible for the actions of the South Ossetian forces, including an array of irregular militias, in those territories, without it being necessary to provide proof of “detailed control” of each of those actions. The Court had sufficient evidence in its possession to enable it to conclude beyond reasonable doubt that there had been an administrative practice contrary to Articles 2 and 8 of the Convention and Article 1 of Protocol No. 1 as regards the killing of civilians and the torching and looting of houses in Georgian villages in South Ossetia and in the “buffer zone”. Having regard to the seriousness of the abuses committed, which could be classified as “inhuman and degrading treatment” owing to the feelings of anguish and distress suffered by the victims, who, furthermore, had been targeted as an ethnic group, this administrative practice was also contrary to Article 3.</p><p >Conclusion: violation (sixteen votes to one).</p><p >Articles 3 and 5 (treatment of civilian detainees and lawfulness of their detention)</p><p >There was no conflict between Article 3 and the provisions of IHL, which provided in a general way that detainees were to be treated humanely and detained in decent conditions. As for Article 5, there might be such a conflict (see <a href=\"http://hudoc.echr.coe.int/eng?i=001-146501\">Hassan v. the United Kingdom</a> [GC], §§ 97-98); however, there was none in the present case since the justification for detaining civilians put forward by the respondent Government was not permitted under either set of rules.</p><p >Some 160 Georgian civilians detained by the South Ossetian forces in the basement of the “Ministry of Internal Affairs of South Ossetia” in Tskhinvali between approximately 10 and 27 August 2008 fell within the jurisdiction of the Russian Federation for the purposes of Article 1. There had been an administrative practice contrary to Article 3 as regards their conditions of detention and the humiliating acts to which they had been exposed, which had to be regarded as inhuman and degrading treatment. There had also been an administrative practice contrary to Article 5 as regards their arbitrary detention.</p><p >Conclusion: violation (unanimously).</p><p >Article 3 (treatment of prisoners of war)</p><p >There was no conflict between Article 3 and the provisions of IHL, which provided that prisoners of war had to be treated humanely and held in decent conditions.</p><p >The Georgian prisoners of war who had been detained in Tskhinvali between 8 and 17 August 2008 by the South Ossetian forces fell within the jurisdiction of the Russian Federation for the purposes of Article 1. There had been an administrative practice contrary to Article 3 as regards the acts of torture of which they had been victims.</p><p >Conclusion: violation (sixteen votes to one).</p><p >Article 2 of Protocol No. 4 (freedom of movement of displaced persons)</p><p >There was no conflict between Article 2 of Protocol No. 4 and the relevant provisions of IHL concerning a situation of occupation.</p><p >A large number of Georgian nationals who had fled the conflict no longer resided in South Ossetia, but in undisputed Georgian territory. However, in the Court’s view, the fact that their respective homes, to which they had been prevented from returning, were situated in areas under the “effective control” of the Russian Federation, and the fact that the Russian Federation exercised “effective control” over the administrative borders, were sufficient to establish a jurisdictional link for the purposes of Article 1 between the Russian Federation and the Georgian nationals in question. There had been an administrative practice contrary to Article 2 of Protocol No. 4 as regards the inability of Georgian nationals to return to their respective homes.</p><p >Conclusion: violation (sixteen votes to one).</p><p >Article 2 of Protocol No. 1 (alleged looting and destruction of public schools and libraries and intimidation of ethnic Georgian pupils and teachers)</p><p >There was no conflict between Article 2 of Protocol No. 1 and the relevant provisions of IHL concerning a situation of occupation.</p><p >The Court did not have sufficient evidence in its possession to conclude beyond reasonable doubt that there had been incidents contrary to Article 2 of Protocol No. 1.</p><p >Conclusion: violation (unanimously).</p><p >Article 2 (obligation to investigate)</p><p >In general, the obligation to carry out an effective investigation under Article 2 was broader than the corresponding obligation in IHL. Otherwise, there was no conflict between the applicable standards in this regard under Article 2 and the relevant provisions of IHL.</p><p >In the present case, in view of the allegations that it had committed war crimes during the active phase of the hostilities, the Russian Federation had an obligation to investigate the events in issue, in accordance with the relevant rules of IHL and domestic law. Indeed, the prosecuting authorities of the Russian Federation had taken steps to investigate those allegations. Furthermore, although the events that had occurred during the active phase of the hostilities did not fall within the jurisdiction of the Russian Federation, it had established “effective control” over the territories in question shortly afterwards. Lastly, given that all the potential suspects among the Russian service personnel were located either in the Russian Federation or in territories under the control of the Russian Federation, Georgia had been prevented from carrying out an adequate and effective investigation into the allegations. Accordingly, having regard to the “special features” of the case, the Russian Federation’s jurisdiction within the meaning of Article 1 was established in respect of this complaint (see, mutatis mutandis, Güzelyurtlu and Others [GC]). </p><p >The Russian Federation had therefore a procedural obligation under Article 2 to carry out an adequate and effective investigation not only into the events that occurred after the cessation of hostilities but also into the events that occurred during the active phase of the hostilities. Having regard to the seriousness of the crimes allegedly committed during the active phase of the hostilities, and the scale and nature of the violations found during the period of occupation, the investigations carried out by the Russian authorities had been neither prompt nor effective nor independent, and accordingly had not satisfied the requirements of Article 2.</p><p >Conclusion: violation (sixteen votes to one).</p><p >Article 38 </p><p >The respondent Government had refused to submit the “combat reports”, on the grounds that the documents in question constituted a “State secret”, despite the practical arrangements proposed by the Court to submit non-confidential extracts. Nor had they submitted any practical proposals of their own to the Court that would have allowed them to satisfy their obligation to cooperate while preserving the secret nature of certain items of information.</p><p >Conclusion: violation (sixteen votes to one).</p><p >The Court also held, unanimously, that there was no need to examine separately the applicant Government’s complaint under Article 13 in conjunction with Articles 3, 5 and 8 and with Articles 1 and 2 of Protocol No. 1 and Article 2 of Protocol No. 4.</p><p >Article 41: reserved. </p><p >(See also <a href=\"http://hudoc.echr.coe.int/eng?i=001-145546\">Georgia v. Russia (I)</a> [GC], no. 13255/07, ECHR 2014 (extracts), <a href=\"http://hudoc.echr.coe.int/eng?i=002-9584\">Legal summary</a>; <a href=\"http://hudoc.echr.coe.int/eng?i=001-146501\">Hassan v. the United Kingdom</a> [GC], no. 29750/09, ECHR 2014, <a href=\"http://hudoc.echr.coe.int/eng?i=002-10082\">Legal summary</a>; Güzelyurtlu and Others v. Cyprus and Turkey [GC], no. 36925/07, 29 January 2019, <a href=\"http://hudoc.echr.coe.int/eng?i=002-12315\">Legal summary</a>; Medvedyev and Others v. France [GC], no. 3394/03, ECHR 2010, Legal summary; Banković and Others (dec), no. 52207/99, 12 December 2001, <a href=\"https://echr.coe.int/Documents/Reports_Recueil_2001-XII.pdf\">Legal summary</a>; <a href=\"http://hudoc.echr.coe.int/eng?i=001-202468\">M.N. and Others v. Belgium</a> (dec.) [GC], no. 3599/18, 5 May 2020, <a href=\"http://hudoc.echr.coe.int/eng?i=002-12810\">Legal summary</a>)</p><p > </p><p >© Council of Europe/European Court of Human Rights<br />This summary by the Registry does not bind the Court.</p><p >Click here for the <a href=\"http://www.echr.coe.int/NoteInformation/en\">Case-Law Information Notes</a></p></div>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://hudoc.echr.coe.int/eng#{%22fulltext%22:[%22r%C3%A9vision%22],%22importance%22:[%221%22],%22documentcollectionid2%22:[%22JUDGMENTS%22],%22itemid%22:[%22001-175647%22]}",
"defer": true,
"items": [
{
"itemType": "case",
"caseName": "Moreira Ferreira c. Portugal (n° 2)",
"creators": [],
"dateDecided": "2017-07-11",
"abstractNote": "Exception préliminaire rejetée (Article 35-3-a - Ratione materiae); Partiellement irrecevable (Article 35-3-a - Ratione materiae); Non-violation de l'article 6 - Droit à un procès équitable (Article 6 - Procédure pénale; Article 6-1 - Accès à un tribunal; Accusation en matière pénale; Procès équitable)",
"court": "ECtHR [GC]",
"docketNumber": "19867/12",
"language": "fre",
"url": "https://hudoc.echr.coe.int/eng?i=001-175647",
"attachments": [
{
"title": "HUDOC Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [
{
"note": "<h1> HUDOC Legal Summary </h1> <br/>\r\n<div><p >Note d’information sur la jurisprudence de la Cour 209</p><p >Juillet 2017</p><p >Moreira Ferreira c. Portugal (n° 2) [GC] - 19867/12</p><p >Arrêt 11.7.2017 [GC]</p><p >Article 6</p><p >Procédure pénale</p><p >Article 6-1</p><p >Accès à un tribunal</p><p >Accusation en matière pénale</p><p >Procès équitable</p><p >Plainte concernant le refus par une juridiction nationale de rouvrir une procédure pénale suite au constat d’une violation de l’article 6 par la Cour européenne : recevable</p><p >Rejet par la Cour suprême d’une demande de révision d’un jugement pénal suite à un arrêt de la Cour européenne concluant à violation de l’article 6 : non-violation</p><p >En fait – Un arrêt de la Cour suprême du 21 mars 2012 a rejeté la demande de révision d’un jugement pénal qui avait été présentée par la requérante suite à un arrêt rendu par la Cour européenne des droits de l’homme (« la Cour ») concluant à une violation de l’article 6 § 1 (Moreira Ferreira c. Portugal, <a href=\"http://hudoc.echr.coe.int/fre?i=001-105519\">19808/08</a>, 5 juillet 2011). Au regard de l’article 41, la Cour concluait qu’un nouveau procès ou une réouverture de la procédure à la demande de l’intéressé représenterait en principe un moyen approprié de redresser la violation constatée. À cet égard, elle notait que l’article 449 du code de procédure pénale portugais permet la révision d’un procès sur le plan interne lorsque la Cour a constaté la violation des droits et libertés fondamentaux de l’intéressé.</p><p >La Cour suprême a considéré que l’arrêt de la Cour n’était pas inconciliable avec la condamnation qui avait été prononcée à l’encontre de la requérante et ne soulevait pas de doutes graves sur son bien-fondé comme l’exige l’article 449 § 1 g) du code de procédure pénale.</p><p >La requérante se plaint d’une mauvaise interprétation faite par la Cour suprême de l’arrêt de la Cour, emportant une violation des articles 6 § 1 et 46 § 1 de la Convention. </p><p >En droit – Article 6 § 1</p><p >a)  Recevabilité</p><p >i.  L’article 46 de la Convention fait-il obstacle à l’examen par la Cour du grief tiré de l’article 6 de la Convention ? – Le manque d’équité allégué de la procédure conduite dans le cadre de la demande de révision, et plus précisément les erreurs qui, selon la requérante, ont entaché le raisonnement de la Cour suprême, constituent des éléments nouveaux par rapport au précédent arrêt de la Cour.</p><p >Par ailleurs, la procédure de surveillance de l’exécution de l’arrêt, à ce jour pendante devant le Comité des Ministres, n’empêche pas la Cour d’examiner une nouvelle requête dès lors que celle-ci renferme des éléments nouveaux non tranchés dans l’arrêt initial.</p><p >Partant, l’article 46 de la Convention ne fait pas obstacle à l’examen par la Cour du grief nouveau tiré de l’article 6 de la Convention.</p><p >ii.  Le nouveau grief de la requérante est-il compatible ratione materiae avec l’article 6 § 1 de la Convention ? – La Cour suprême doit confronter la condamnation en question aux motifs retenus par la Cour pour conclure à la violation de la Convention. Aussi appelée à statuer sur la demande d’autorisation de révision, la Cour suprême a fait un réexamen sur le fond d’un certain nombre d’éléments de la question litigieuse de la non-comparution de la requérante en appel et des conséquences de cette absence sur le bien-fondé de sa condamnation et de l’établissement de sa peine. Au vu de la portée du contrôle opéré par la haute juridiction, celui-ci doit être considéré comme un prolongement de la procédure close par l’arrêt du 19 décembre 2007 confirmant la condamnation de la requérante. Ce contrôle a donc une nouvelle fois porté sur le bien-fondé, au sens de l’article 6 § 1 de la Convention, de l’accusation pénale dirigée contre la requérante. Dès lors, les garanties de l’article 6 § 1 s’appliquaient à la procédure devant la Cour suprême.</p><p >L’exception du Gouvernement tirée d’une incompétence ratione materiae de la Cour pour connaître du fond du grief soulevé par la requérante sous l’angle de l’article 6 de la Convention doit, par conséquence, être rejetée.</p><p >Conclusion : recevable (majorité).</p><p >b)  Fond – Selon l’interprétation donnée par la Cour suprême à l’article 449 § 1 g) du code de procédure pénale, les irrégularités procédurales du type de celle constatée en l’espèce n’entraînent pas de plein droit la réouverture de la procédure. </p><p >Cette interprétation, qui a pour conséquence de limiter les cas de réouverture des procédures pénales définitivement closes ou au moins de les assujettir à des critères soumis à l’appréciation des juridictions internes, n’apparaît pas arbitraire et elle est en outre confortée par la jurisprudence constante de la Cour selon laquelle la Convention ne garantit pas le droit à la réouverture d’une procédure ou à d’autres formes de recours permettant d’annuler ou de réviser des décisions de justice définitive et par l’absence d’approche uniforme parmi les États membres quant aux modalités de fonctionnement des mécanismes de réouverture existants. Par ailleurs, un constat de violation de l’article 6 de la Convention ne crée pas généralement une situation continue et ne met pas à la charge de l’État défendeur une obligation procédurale continue.</p><p >La chambre, dans son arrêt du 5 juillet 2011, avait dit qu’un nouveau procès ou une réouverture de la procédure à la demande de l’intéressé représentait « en principe un moyen approprié de redresser la violation constatée ». Un nouveau procès ou une réouverture de la procédure étaient ainsi qualifiés de moyens appropriés mais non pas nécessaires ou uniques. De plus, l’emploi de l’expression « en principe » relativise la portée de la recommandation, laissant supposer que dans certaines situations, un nouveau procès ou la réouverture de la procédure n’apparaîtront pas comme des moyens appropriés. Ainsi la Cour s’est abstenue de donner des indications contraignantes quant aux modalités d’exécution de son arrêt et a choisi de laisser à l’État une marge de manœuvre étendue dans ce domaine. En outre, la Cour ne saurait préjuger de l’issue de l’examen par les juridictions internes de la question de l’opportunité d’autoriser, compte tenu des circonstances particulières de l’affaire, le réexamen ou la réouverture.</p><p >Dès lors, la révision du procès n’apparaissait pas comme la seule façon d’exécuter l’arrêt de la Cour du 5 juillet 2011 ; elle constituait tout au plus l’option la plus souhaitable dont l’opportunité en l’espèce devait être examinée par les juridictions internes au regard du droit national et des circonstances particulières de l’affaire.</p><p >La Cour suprême, dans la motivation de son arrêt du 21 mars 2012, a analysé le contenu de l’arrêt de la Cour du 5 juillet 2011 et en a donné sa propre interprétation. Compte tenu de la marge d’appréciation dont jouissent les autorités internes dans l’interprétation des arrêts de la Cour, à la lumière des principes relatifs à l’exécution, celle-ci estime qu’il n’est pas nécessaire de se prononcer sur la validité de cette interprétation. En effet, il lui suffit de s’assurer que l’arrêt du 21 mars 2012 n’est pas entaché d’arbitraire, en ce qu’il y aurait eu une déformation ou une dénaturation par les juges de la Cour suprême de l’arrêt rendu par la Cour.</p><p >La Cour ne saurait conclure que la lecture par la Cour suprême de l’arrêt rendu par la Cour en 2011, était, dans son ensemble, le résultat d’une erreur de fait ou de droit manifeste aboutissant à un « déni de justice ». Eu égard au principe de subsidiarité et aux formules employées par la Cour dans l’arrêt de 2011, le refus par la Cour suprême d’octroyer à la requérante la réouverture de la procédure n’a pas été arbitraire. L’arrêt rendu par cette juridiction indique de manière suffisante les motifs sur lesquels il se fonde. Ces motifs relèvent de la marge d’appréciation des autorités nationales et n’ont pas dénaturé les constats de l’arrêt de la Cour.</p><p >Les considérations ci-dessus n’ont pas pour but de nier l’importance qu’il y a à garantir la mise en place de procédures internes permettant le réexamen d’une affaire à la lumière d’un constat de violation de l’article 6 de la Convention. Au contraire, de telles procédures peuvent être considérées comme un aspect important de l’exécution de ses arrêts et leur existence démontre l’engagement d’un État contractant de respecter la Convention et la jurisprudence de la Cour.</p><p >Conclusion : non-violation (neuf voix contre huit).</p><p >(Voir aussi Meftah et autres c. France [GC], 32911/96 et al., 26 juillet 2002, <a href=\"http://hudoc.echr.coe.int/fre?i=002-5259\">Note d’information 44</a> ; Lenskaïa c. Russie, 28730/03, 29 janvier 2009, <a href=\"http://hudoc.echr.coe.int/fre?i=002-1727\">Note d’information 115</a> ; Verein gegen Tierfabriken Schweiz (VgT) c. Suisse (no 2) [GC], 32772/02, 30 juin 2009, <a href=\"http://hudoc.echr.coe.int/fre?i=002-1482\">Note d’information 120</a> ; Egmez c. Chypre (déc.), 12214/07, 18 septembre 2012, <a href=\"http://hudoc.echr.coe.int/fre?i=002-6465\">Note d’information 155</a> ; Bochan c. Ukraine (no 2) [GC], 22251/08, 5 février 2015, <a href=\"http://hudoc.echr.coe.int/fre?i=002-10507\">Note d’information 182</a> ; et Yaremenko c. Ukraine (no 2), <a href=\"http://hudoc.echr.coe.int/fre?i=001-154306\">66338/09</a>, 30 avril 2015)</p><p > </p><p >© Conseil de l’Europe/Cour européenne des droits de l’homme<br />Rédigé par le greffe, ce résumé ne lie pas la Cour.</p><p >Cliquez ici pour accéder aux <a href=\"http://www.echr.coe.int/NoteInformation/fr\">Notes d'information sur la jurisprudence</a></p></div>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://hudoc.echr.coe.int/fre#{%22tabview%22:[%22document%22],%22itemid%22:[%22001-211069%22]}",
"defer": true,
"items": [
{
"itemType": "case",
"caseName": "Sa Casino, Guichard-Perrachon Et Sas A.m.c. c. France (communiquée)",
"creators": [],
"dateDecided": "2021-06-15",
"abstractNote": "Affaire communiquée",
"court": "ECtHR",
"docketNumber": "59031/19",
"language": "fre",
"url": "https://hudoc.echr.coe.int/fre?i=001-211069",
"attachments": [
{
"title": "HUDOC Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://hudoc.echr.coe.int/fre#{%22tabview%22:[%22document%22],%22languageisocode%22:[%22FRE%22],%22documentcollectionid2%22:[%22ADVISORYOPINIONS%22],%22itemid%22:[%22003-6380431-8364345%22]}",
"defer": true,
"items": [
{
"itemType": "case",
"caseName": "Avis Consultatif Relatif À La Reconnaissance En Droit Interne D’un Lien De Filiation Entre Un Enfant Né D’une Gestation Pour Autrui Pratiquée À L’étranger Et La Mère D’intention",
"creators": [],
"dateDecided": "2019-04-10",
"court": "ECtHR [GC]",
"language": "fre",
"url": "https://hudoc.echr.coe.int/fre?i=003-6380431-8364345",
"attachments": [
{
"title": "HUDOC Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Richard Palmer - V&A Digital Media & Publishing^https?://collections\.vam\.ac\.uk/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2022 V&A Museum
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes("/item/")) {
return "artwork";
}
else if (url.includes("/search/") && getRecords(doc).length) {
return "multiple";
}
return false;
}
function scrape(doc, url) {
var id = url.match(/item\/(O[0-9]+)/i)[1];
var apiUrl = "https://api.vam.ac.uk/v2/museumobject/" + id;
Zotero.Utilities.doGet(apiUrl, function (respText) {
var museumobject = JSON.parse(respText);
var data = museumobject.record;
var item = new Zotero.Item("artwork");
if (data.titles.length > 0) {
item.title = data.titles[0].title;
item.shortTitle = data.objectType;
}
else if (data.objectType) {
item.title = data.objectType;
item.shortTitle = data.objectType;
}
item.abstractNote = data.briefDescription;
item.medium = data.materialsAndTechniques;
item.artworkSize = data.dimensionsNote;
if (data.productionDates.length > 1) {
item.date = data.productionDates[0].date.text;
}
else if (data.productionDates.length > 0) {
item.date = data.productionDates[0].date.text;
}
let collection = text(doc, 'a[href*="/search/?id_collection="]')
|| data.collectionCode.text;
item.archive = `Victoria & Albert Museum ${collection}`;
item.libraryCatalog = 'Victoria & Albert Museum';
item.callNumber = data.accessionNumber;
item.rights = data.creditLine;
item.url = url;
var artistMakerPerson = data.artistMakerPerson;
for (var i = 0; i < artistMakerPerson.length; i++) {
// This is not ideal and assume surname, firstnames convention is correct
var fullName = artistMakerPerson[i].name.text;
var lastComma = fullName.lastIndexOf(",");
var firstName = "";
var lastName = "";
if (lastComma > 0) {
lastName = fullName.substring(0, lastComma);
firstName = fullName.substring(lastComma + 1);
}
else {
firstName = fullName;
}
firstName = firstName
.replace('(Senior)', 'Sr.')
.replace('(Junior)', 'Jr.');
item.creators.push({
lastName: lastName,
firstName: firstName,
creatorType: "author"
});
}
var artistMakerPeople = data.artistMakerPeople;
for (var j = 0; j < artistMakerPeople.length; j++) {
item.creators.push({
lastName: artistMakerPeople[j].name.text,
fieldMode: 1,
creatorType: "author"
});
}
var artistMakerOrganisations = data.artistMakerOrganisations;
for (var k = 0; k < artistMakerOrganisations.length; k++) {
item.creators.push({
lastName: artistMakerOrganisations[k].name.text,
fieldMode: 1,
creatorType: "author"
});
}
item.attachments.push({
document: doc,
title: "Snapshot"
});
item.complete();
});
}
function getRecords(doc) {
return ZU.xpath(doc, '//figure[contains(@class, "b-object-card--etc")]//a');
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
var artworks = {};
var items = getRecords(doc);
for (var item in items) {
var title = ZU.xpathText(items[item], './/div[@class="b-object-card__caption"]');
var href = items[item].href;
artworks[href] = title;
}
Zotero.selectItems(artworks, function (artworks) {
if (artworks) ZU.processDocuments(Object.keys(artworks), scrape);
});
}
else {
scrape(doc, url);
}
return false;
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://collections.vam.ac.uk/item/O4293/ripple-pattern-vase-imperial-glass-co/",
"items": [
{
"itemType": "artwork",
"title": "'Ripple' pattern",
"creators": [
{
"lastName": "Imperial Glass Co.",
"fieldMode": 1,
"creatorType": "author"
}
],
"date": "ca. 1914",
"abstractNote": "Vase of glass, made by Imperial Glass Company, Ohio, c. 1914-25",
"archive": "Victoria & Albert Museum Ceramics Collection",
"artworkMedium": "Press moulded glass, heated",
"callNumber": "C.32-1992",
"libraryCatalog": "Victoria & Albert Museum",
"rights": "Given by Raymond and Michel Lerpiniere",
"shortTitle": "Vase",
"url": "https://collections.vam.ac.uk/item/O4293/ripple-pattern-vase-imperial-glass-co/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://collections.vam.ac.uk/item/O19135/graphic-permutations-four-cubes-barton-glenys/",
"items": [
{
"itemType": "artwork",
"title": "Graphic Permutations",
"creators": [
{
"lastName": "Barton",
"firstName": " Glenys",
"creatorType": "author"
}
],
"date": "1971",
"abstractNote": "E, SP, BARTON GLENYS, 20",
"archive": "Victoria & Albert Museum Ceramics Collection",
"artworkMedium": "Bone china, slip-cast, with silk-screened decoration",
"callNumber": "CIRC.277 to C-1973",
"libraryCatalog": "Victoria & Albert Museum",
"shortTitle": "Four cubes",
"url": "https://collections.vam.ac.uk/item/O19135/graphic-permutations-four-cubes-barton-glenys/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://collections.vam.ac.uk/item/O11451/the-garrick-bed-bed-chippendale-thomas-senior/",
"items": [
{
"itemType": "artwork",
"title": "The Garrick Bed",
"creators": [
{
"lastName": "Chippendale",
"firstName": " Thomas Sr.",
"creatorType": "author"
}
],
"date": "ca. 1775",
"abstractNote": "A bed of softwood, with fluted foot columns, painted white and green. The tester is edged with carved lappets painted in green and white. The current hangings of screen printed cotton date from 2001.",
"archive": "Victoria & Albert Museum Furniture and Woodwork Collection",
"artworkMedium": "Japanned (painted) beech and pine, with 20th century reproduction hangings.",
"artworkSize": "The bed has been reduced in width.",
"callNumber": "W.70-1916",
"libraryCatalog": "Victoria & Albert Museum",
"rights": "Given by H. E. Trevor, a direct descendant of David Garrick's brother, George",
"shortTitle": "Bed",
"url": "https://collections.vam.ac.uk/item/O11451/the-garrick-bed-bed-chippendale-thomas-senior/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://collections.vam.ac.uk/search/?q=beach&year_made_from=&year_made_to=",
"defer": true,
"items": "multiple"
}
]
/** END TEST CASES **/
100Sebastian Karcher^https?://www\.freitag\.de/*
***** BEGIN LICENSE BLOCK *****
Der Freitag Translator
Copyright © 2012 Sebatian Karcher
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
let articleDataTagSelector = 'script.qa-structured-data[type="application/ld+json"]';
function detectWeb(doc) {
if (doc.querySelector(articleDataTagSelector)) {
let type = JSON.parse(text(doc, articleDataTagSelector))['@type'];
if (type == 'NewsArticle'
|| (Array.isArray(type) && type.includes('NewsArticle'))
) {
return "newspaperArticle";
}
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function getSearchResults(doc, checkOnly) {
let items = {};
let found = false;
let rows = doc.querySelectorAll('.o-search-results__container .c-article-card a.js-article-card-url');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function scrape(doc, url) {
let json = JSON.parse(text(doc, 'script.qa-structured-data[type="application/ld+json"]'));
let translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setHandler('itemDone', function (obj, item) {
item.ISSN = '0945-2095';
item.libraryCatalog = 'Der Freitag';
item.publicationTitle = 'Der Freitag';
if (!Array.isArray(json.author)) {
json.author = [json.author];
}
item.creators = [];
item.creators.push(...cleanAuthorObjects(json.author));
// First li is the home page, second the divider, third the section.
item.section = text(doc, 'section ul li:nth-child(3) a span');
/* Identify the latest date manually
* since dateModified can sometimes be behind datePublished.
*/
let date = json.dateModified;
if (date === null || (json.datePublished && json.datePublished > date)) {
date = json.datePublished;
}
item.date = date;
item.tags = [];
let tags = doc.querySelectorAll(".qa-tags-container .qa-tags-item");
tags.forEach(function (node) {
item.tags.push(node.textContent.trim());
});
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.itemType = "newspaperArticle";
trans.doWeb(doc, url);
});
}
function cleanAuthorObjects(authors) {
let creators = [];
for (let author of authors) {
if (author['@type'] != 'Person') continue;
// if one item contains a list of authors, split value
if (author.name.includes(',')) {
for (let oneAuthor of author.name.split(',')) {
creators.push(ZU.cleanAuthor(oneAuthor, 'author'));
}
}
else {
creators.push(ZU.cleanAuthor(author.name, 'author'));
}
}
return creators;
}/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.freitag.de/@@search?SearchableText=Gaddafi",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.freitag.de/autoren/der-freitag/201evolksverdummung-ist-nicht-links201c",
"items": [
{
"itemType": "newspaperArticle",
"title": "Im Gespräch - „Volksverdummung ist nicht links“",
"creators": [
{
"firstName": "Philip",
"lastName": "Grassmann",
"creatorType": "author"
},
{
"firstName": "Verena",
"lastName": "Schmitt-Roschmann",
"creatorType": "author"
}
],
"date": "2018-02-11T08:42:55.204871+01:00",
"ISSN": "0945-2095",
"abstractNote": "Sigmar Gabriel attackiert im Freitag-Interview den griechischen Linken Alexis Tsipras. Die Piratenpartei hält der SPD-Chef für ein Zeitgeist-Phänomen",
"language": "de",
"libraryCatalog": "Der Freitag",
"publicationTitle": "Der Freitag",
"section": "Politik",
"url": "https://www.freitag.de/autoren/der-freitag/201evolksverdummung-ist-nicht-links201c",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
"inland",
"piraten",
"sigmar gabriel",
"spd"
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.freitag.de/autoren/der-freitag/corona-klima-kriege-lauterbach-will-den-nostand-fuer-immer",
"items": [
{
"itemType": "newspaperArticle",
"title": "Lauterbachs Fantasien vom permanenten Ausnahmezustand",
"creators": [
{
"firstName": "Velten",
"lastName": "Schäfer",
"creatorType": "author"
}
],
"date": "2022-04-09T04:00:00+02:00",
"ISSN": "0945-2095",
"abstractNote": "Wir werden ab jetzt für immer mit Freiheitsbeschneidungen à la Corona leben, sagt Karl Lauterbach. Auch die Linke hat Sehnsucht nach einer starken Hand. Ein dringlicher Weckruf",
"language": "de",
"libraryCatalog": "Der Freitag",
"publicationTitle": "Der Freitag",
"section": "Debatte",
"url": "https://www.freitag.de/autoren/der-freitag/corona-klima-kriege-lauterbach-will-den-nostand-fuer-immer",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
"klimawandel",
"lauterbach",
"ausnahmezustand",
"corona",
"freiheitsrechte"
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Abe Jellinek^https://elicit\.org//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2022 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (doc.querySelector('.MuiModal-root a[href*="//doi.org/"]')) {
return 'journalArticle';
}
else if (getSearchResults(doc)) {
return 'multiple';
}
Z.monitorDOMChanges(doc.body, { childList: true });
return false;
}
function getSearchResults(doc) {
// Disable for now - not reliably able to detect or fetch results
return false;
// We have to make an HTTP request to actually get results,
// so just cheat if we're checking in detectWeb()
// return !!doc.querySelector('table[class^="ResultsTable"] tbody tr');
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == 'multiple') {
let idToken = doc.cookie
.split(';')
.map(row => row.split('='))
.find(row => row[0].trim() == 'idToken')[1];
Zotero.debug(idToken)
let postBody = JSON.stringify({
input: text(doc, 'textarea'),
requestOptions: { qaColumns: [] },
seenPaperIds: [],
starredPaperIds: [],
start: 0,
stop: doc.querySelectorAll('table[class^="ResultsTable"] tbody tr').length
});
Zotero.debug(postBody)
ZU.doPost(
'https://inference.elicit.org/elicit-red/lit-review',
postBody,
(respText) => {
let json = JSON.parse(respText);
let items = {};
Object.values(json.papers)
.forEach(p => items[p.doi || p.doiUrl] = p.title);
Zotero.selectItems(items, (items) => {
if (items) Object.keys(items).map(scrape);
});
},
{
'Authorization': 'Bearer ' + idToken,
'Content-Type': 'application/json'
}
);
}
else {
scrape(attr(doc, '.MuiModal-root a[href*="//doi.org/"]', 'href'));
}
}
function scrape(doi) {
let search = { DOI: ZU.cleanDOI(doi) };
let trans = Zotero.loadTranslator('search');
trans.setSearch(search);
trans.setHandler('itemDone', (obj, item) => {
item.complete();
});
trans.setHandler('translators', (obj, translators) => {
trans.setTranslator(translators);
trans.translate();
});
trans.getTranslators();
}
/** BEGIN TEST CASES **/
var testCases = [
]
/** END TEST CASES **/
100Philipp Zumstein^https?://(www\.)?nzz\.ch//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2016 Philipp Zumstein
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (doc.querySelector('#page .article')) {
return "newspaperArticle";
}
if (getSearchResults(doc, true)) {
return "multiple";
}
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = ZU.xpath(doc, '//article/a|//div[contains(@class, "teaser")]/a');
for (var i=0; i<rows.length; i++) {
var href = rows[i].href;
var title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) {
return true;
}
var articles = new Array();
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
} else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
item.title = item.title.split(' | ')[0];
// Problem: also the place will be taken as part of the autor name
// e.g. <meta name="author" content="Matthias Müller, Peking">
// e.g. <meta name="author" content="Marco Metzler und Birgit Voigt" />
var authorString = ZU.xpathText(doc, '//meta[@name="author"]/@content');
if (authorString) {
item.creators = [];
var authors = authorString.split("und");
for (var i=0; i<authors.length; i++) {
if (i == authors.length-1) {
authors[i] = authors[i].split(",")[0];
}
item.creators.push( ZU.cleanAuthor(authors[i] , "author") );
}
}
item.ISSN = "0376-6829";
item.language = "de-CH";
item.libraryCatalog = "NZZ";
item.section = text(doc, '.breadcrumbs > a:last-child');
if (item.section == "NZZ am Sonntag" || item.section == "NZZaS") {
item.publicationTitle = "NZZ am Sonntag";
item.ISSN = "1660-0851";
item.section = "";
}
item.complete();
});
translator.getTranslatorObject(function(trans) {
trans.itemType = "newspaperArticle";
trans.addCustomFields({
'date': 'date'
});
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.nzz.ch/kuoni_gta-uebernahme-ld.692744?reduced=true",
"items": [
{
"itemType": "newspaperArticle",
"title": "Kuoni profitiert von der GTA-Übernahme",
"creators": [],
"date": "2011-11-10T06:55:41.000Z",
"ISSN": "0376-6829",
"abstractNote": "Der Reisekonzern Kuoni hat in den ersten neun Monaten von der Übernahme des Reisekonzerns Gullivers Travel Associates (GTA) profitiert. Der Umsatz stieg, und der Konzern machte Gewinn.",
"language": "de-CH",
"libraryCatalog": "NZZ",
"publicationTitle": "Neue Zürcher Zeitung",
"url": "https://www.nzz.ch/kuoni_gta-uebernahme-ld.692744",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.nzz.ch/wie-ein-mexikanisches-staedtchen-die-boesewichte-vertrieb-ld.656525?reduced=true",
"items": [
{
"itemType": "newspaperArticle",
"title": "Wie ein mexikanisches Städtchen die Bösewichte vertrieb",
"creators": [
{
"firstName": "Matthias",
"lastName": "Knecht",
"creatorType": "author"
}
],
"date": "2012-05-30T09:00:00.000Z",
"ISSN": "0376-6829",
"abstractNote": "Mit einem Aufstand haben die Einwohner der mexikanischen Gemeinde Cherán die Holzfällermafia vertrieben. Sie haben eine Landsgemeinde gegründet und entdeckt, dass direktdemokratische Institutionen Korruption verhindern.",
"language": "de-CH",
"libraryCatalog": "NZZ",
"publicationTitle": "Neue Zürcher Zeitung",
"url": "https://www.nzz.ch/wie-ein-mexikanisches-staedtchen-die-boesewichte-vertrieb-ld.656525",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.nzz.ch/nzzas/nzz-am-sonntag/bildung-der-weg-ans-gymnasium-wird-steiniger-ld.85602?reduced=true",
"items": [
{
"itemType": "newspaperArticle",
"title": "Der Weg ans Gymnasium wird steiniger",
"creators": [
{
"firstName": "René",
"lastName": "Donzé",
"creatorType": "author"
}
],
"date": "2016-05-31T07:45:25.872Z",
"ISSN": "1660-0851",
"abstractNote": "Im Kanton Zürich werden pro Jahr bis zu 400 Schüler weniger den Sprung ans Langgymnasium schaffen Aus Spargründen sollen künftig weniger Schüler die Gymiprüfung bestehen. Darum müssen die Kriterien verschärft werden.",
"language": "de-CH",
"libraryCatalog": "NZZ",
"publicationTitle": "NZZ am Sonntag",
"url": "https://www.nzz.ch/nzzas/nzz-am-sonntag/bildung-der-weg-ans-gymnasium-wird-steiniger-ld.85602",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://magazin.nzz.ch/wirtschaft/gerd-gigerenzer-manipulation-mit-risiken-zu-viel-desinformation-ld.145017?reduced=true",
"items": [
{
"itemType": "newspaperArticle",
"title": "Gerd Gigerenzer: «Wir haben zu viel Desinformation»",
"creators": [
{
"firstName": "Marco",
"lastName": "Metzler",
"creatorType": "author"
},
{
"firstName": "Birgit",
"lastName": "Voigt",
"creatorType": "author"
}
],
"date": "2016-05-29T08:55:00.000Z",
"ISSN": "0376-6829",
"abstractNote": "Im Gesundheitswesen wird heftig über den Sinn von teuren Tests zur Krebs-Früherkennung gestritten. Psychologie-Professor Gerd Gigerenzer stellt deren Nutzen infrage.",
"language": "de-CH",
"libraryCatalog": "NZZ",
"publicationTitle": "NZZ Magazin",
"shortTitle": "Gerd Gigerenzer",
"url": "https://magazin.nzz.ch/wirtschaft/gerd-gigerenzer-manipulation-mit-risiken-zu-viel-desinformation-ld.145017",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.nzz.ch/suche?q=Schweiz&filter=",
"defer": true,
"items": "multiple"
}
]
/** END TEST CASES **/
100Michael Berkowitz, Philipp Zumstein, Abe Jellinek^https?://(papers\.|www2?\.)?nber\.org/(system/files/)?(papers|s|new|custom|books-and-chapters|chapters)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2018-2021 Philipp Zumstein and Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
const pdfSlugRe = /\/files(\/[^/]+\/[^/]+)/;
const preprintType = ZU.fieldIsValidForType('title', 'preprint')
? 'preprint'
: 'report';
function detectWeb(doc, url) {
if (doc.querySelector('meta[name="citation_title"]')
|| (pdfSlugRe.test(url) && url.endsWith('.pdf'))) {
if (url.includes('/papers/')) {
return preprintType;
}
else if (url.includes('/books-and-chapters/')) {
if (url.match(/\/books-and-chapters\/[^/]+\/[^/]+/)) {
// if the URL has two locators, we're on a chapter
return "bookSection";
}
else {
return "book";
}
}
else if (url.includes('/chapters/')) {
return "bookSection";
}
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.digest-card__title a');
for (let i = 0; i < rows.length; i++) {
let href = rows[i].href;
let title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (href.match(/\.pdf$/)) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
if (doc.querySelector('form.download-citation')) {
scrapeWithBib(doc, url, getBibURL(doc));
}
else if (doc.querySelector('a[href$=".bib"]')) {
scrapeWithBib(doc, url, attr(doc, 'a[href$=".bib"]', 'href'));
}
else if (url.endsWith('.pdf')) {
let catalogSlug = url.match(pdfSlugRe);
if (catalogSlug && catalogSlug != url) {
catalogSlug = catalogSlug[1];
ZU.processDocuments(catalogSlug, doc => scrape(doc, catalogSlug));
}
}
else if (doc.querySelector('.table-of-contents__title a')) {
// if we're on a book page without a citation form, we'll navigate to
// the first chapter and grab the BibTeX from there. it'll contain a
// citation for the book.
ZU.processDocuments(attr(doc, '.table-of-contents__title a', 'href'),
chapterDoc => scrapeWithBib(doc, url, getBibURL(chapterDoc)));
}
else {
throw new Error('No BibTeX source found');
}
}
function scrapeWithBib(doc, url, bibURL) {
ZU.doGet(bibURL, function (respText) {
// first we preprocess a bit: the BibTeX sometimes contains unescaped
// quotes within the quoted title, so we'll fix it
respText = respText.replace(/(^\s*)title = "(.+)"/gm, (_, spaces, title) => {
let escapedTitle = title.replace(/"(.+)"/g, "``$1''");
return `${spaces}title = "${escapedTitle}"`;
});
var translator = Zotero.loadTranslator("import");
translator.setTranslator("9cb70025-a888-4a29-a210-93ec52da40d4");
translator.setString(respText);
translator.setHandler("itemDone", function (obj, item) {
// NBER gives us a BibTeX citation for the book when we try to pull
// the citation for one chapter, so we'll just skip it. vice versa
// for generating book citations by grabbing a chapter detail page.
// we don't want to blindly skip when itemType != detected, because
// detectWeb might make mistakes.
let detected = detectWeb(doc, url);
if ((item.itemType == 'book' && detected == 'bookSection')
|| (item.itemType == 'bookSection' && detected == 'book')) {
return;
}
if (item.itemType == 'report' && detected == 'preprint') {
item.itemType = 'preprint';
item.archiveID = item.reportNumber;
delete item.reportNumber;
}
if (item.itemType == 'book' && item.publisher.includes(', volume ')) {
let [series, vol, issue] = item.publisher.split(', ');
delete item.publisher;
item.series = series;
item.volume = vol.replace(/^volume\b/, '');
item.seriesNumber = issue.replace(/^issue\b/, '');
}
var pdfURL = attr(doc, 'meta[name="citation_pdf_url"]', 'content');
if (!pdfURL) {
pdfURL = attr(doc, '.page-header__intro-links a[href$=".pdf"]', 'href');
}
item.attachments.push({
url: pdfURL,
title: "Full Text PDF",
mimeType: "application/pdf"
});
item.url = attr(doc, 'link[rel="canonical"]', 'href') || item.url;
for (let creator of item.creators) {
// fix initials without period ("William H Macy")
if (creator.firstName && creator.firstName.match(/\b[A-Z]$/)) {
creator.firstName += '.';
}
}
item.complete();
});
translator.translate();
});
}
function getBibURL(doc) {
let paperNumber = attr(doc, 'meta[name="citation_technical_report_number"]', 'content');
return `https://back.nber.org/bibliographic/${paperNumber}.bib`;
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.nber.org/papers/w17577",
"items": [
{
"itemType": "preprint",
"title": "The Dynamics of Firm Lobbying",
"creators": [
{
"firstName": "William R.",
"lastName": "Kerr",
"creatorType": "author"
},
{
"firstName": "William F.",
"lastName": "Lincoln",
"creatorType": "author"
},
{
"firstName": "Prachi",
"lastName": "Mishra",
"creatorType": "author"
}
],
"date": "2011-11",
"DOI": "10.3386/w17577",
"abstractNote": "We study the determinants of the dynamics of firm lobbying behavior using a panel data set covering 1998-2006. Our data exhibit three striking facts: (i) few firms lobby, (ii) lobbying status is strongly associated with firm size, and (iii) lobbying status is highly persistent over time. Estimating a model of a firm's decision to engage in lobbying, we find significant evidence that up-front costs associated with entering the political process help explain all three facts. We then exploit a natural experiment in the expiration in legislation surrounding the H-1B visa cap for high-skilled immigrant workers to study how these costs affect firms' responses to policy changes. We find that companies primarily adjusted on the intensive margin: the firms that began to lobby for immigration were those who were sensitive to H-1B policy changes and who were already advocating for other issues, rather than firms that became involved in lobbying anew. For a firm already lobbying, the response is determined by the importance of the issue to the firm's business rather than the scale of the firm's prior lobbying efforts. These results support the existence of significant barriers to entry in the lobbying process.",
"archiveID": "17577",
"extra": "DOI: 10.3386/w17577",
"genre": "Working Paper",
"itemID": "NBERw17577",
"libraryCatalog": "National Bureau of Economic Research",
"repository": "National Bureau of Economic Research",
"series": "Working Paper Series",
"url": "https://www.nber.org/papers/w17577",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://papers.nber.org/s/search?restrict_papers=yes&whichsearch=db&client=test3_fe&proxystylesheet=test3_fe&site=default_collection&entqr=0&ud=1&output=xml_no_dtd&oe=UTF-8&ie=UTF-8&sort=date%253AD%253AL%253Ad1&q=labor",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.nber.org/papers?page=1&perPage=50&sortBy=public_date",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.nber.org/books-and-chapters/economics-research-and-innovation-agriculture/introduction-economics-research-and-innovation-agriculture",
"items": [
{
"itemType": "bookSection",
"title": "Introduction to “Economics of Research and Innovation in Agriculture”",
"creators": [
{
"firstName": "Petra",
"lastName": "Moser",
"creatorType": "author"
}
],
"date": "2020-09",
"bookTitle": "Economics of Research and Innovation in Agriculture",
"itemID": "NBERc14291",
"libraryCatalog": "National Bureau of Economic Research",
"pages": "1-19",
"publisher": "University of Chicago Press",
"url": "https://www.nber.org/books-and-chapters/economics-research-and-innovation-agriculture/introduction-economics-research-and-innovation-agriculture",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.nber.org/books-and-chapters/incentives-and-limitations-employment-policies-retirement-transitions-comparisons-public-and-private",
"items": [
{
"itemType": "book",
"title": "Incentives and Limitations of Employment Policies on Retirement Transitions: Comparisons of Public and Private Sectors",
"creators": [
{
"firstName": "Robert L.",
"lastName": "Clark",
"creatorType": "author"
},
{
"firstName": "Joseph P.",
"lastName": "Newhouse",
"creatorType": "author"
}
],
"date": "2021",
"itemID": "NBERclar-12",
"libraryCatalog": "National Bureau of Economic Research",
"series": "Journal of Pension Economics and Finance",
"seriesNumber": "special issue 3",
"shortTitle": "Incentives and Limitations of Employment Policies on Retirement Transitions",
"url": "https://www.nber.org/books-and-chapters/incentives-and-limitations-employment-policies-retirement-transitions-comparisons-public-and-private",
"volume": "20",
"attachments": [
{
"url": "",
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.nber.org/books-and-chapters/economics-research-and-innovation-agriculture/introduction-economics-research-and-innovation-agriculture",
"items": [
{
"itemType": "bookSection",
"title": "Introduction to “Economics of Research and Innovation in Agriculture”",
"creators": [
{
"firstName": "Petra",
"lastName": "Moser",
"creatorType": "author"
}
],
"date": "2020-09",
"bookTitle": "Economics of Research and Innovation in Agriculture",
"itemID": "NBERc14291",
"libraryCatalog": "National Bureau of Economic Research",
"pages": "1-19",
"publisher": "University of Chicago Press",
"url": "https://www.nber.org/books-and-chapters/economics-research-and-innovation-agriculture/introduction-economics-research-and-innovation-agriculture",
"attachments": [
{
"url": "",
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Sebastian Karcher^https?://(www|papers|hq)\.ssrn\.com//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2013-2022 Sebastian Karcher and Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
const preprintType = ZU.fieldIsValidForType('title', 'preprint')
? 'preprint'
: 'report';
function detectWeb(doc, _url) {
if (doc.querySelector('meta[name="citation_title"]')) {
return preprintType;
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = ZU.xpath(doc, "//tr/td//strong/a[(@class='textlink' or @class='textLink') and contains(@href, 'papers.cfm?abstract_id')]");
if (!rows.length) {
rows = ZU.xpath(doc, "//div[contains(@class, 'trow')]//a[contains(@class, 'title') and contains(@href, 'ssrn.com/abstract=')]");
}
if (!rows.length) {
rows = doc.querySelectorAll('h3 a.title:not([href*="javascript:"])');
}
if (!rows.length) {
rows = doc.querySelectorAll('.title > a:not([href*="javascript:"])');
}
if (!rows.length) {
rows = doc.querySelectorAll('a.paper-title');
}
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var abstract = ZU.xpathText(doc, '//div[@class="abstract-text"]/p[1]');
// We call the Embedded Metadata translator to do the actual work
var translator = Zotero.loadTranslator("web");
translator.setTranslator("951c027d-74ac-47d4-a107-9c3069ab7b48");
translator.setDocument(doc);
translator.setHandler("itemDone", function (obj, item) {
if (item.date) {
item.date = ZU.strToISO(item.date);
}
item.itemType = preprintType;
var number = url.match(/abstract_id=(\d+)/);
if (preprintType == 'preprint') {
item.genre = "SSRN Scholarly Paper";
item.repository = "Social Science Research Network";
if (number) item.archiveID = number[1];
}
else {
item.reportType = "SSRN Scholarly Paper";
item.institution = "Social Science Research Network";
if (number) item.reportNumber = number[1];
}
item.place = "Rochester, NY";
if (abstract) item.abstractNote = abstract.trim();
// The pdfurl in the meta tag 'citation_pdf_url' is just pointing
// to the entry itself --> Delete this non-working attachment.
for (var i = 0; i < item.attachments.length; i++) {
if (item.attachments[i].title == "Full Text PDF") {
item.attachments.splice(i, 1);
}
}
// Extract the correct PDF URL from the download button
var pdfURL = attr(doc, 'a.primary[data-abstract-id]', 'href');
if (pdfURL) {
item.attachments.push({
title: "Full Text PDF",
url: pdfURL,
mimeType: "application/pdf"
});
}
item.complete();
});
translator.translate();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.ssrn.com/index.cfm/en/mit-political-science-dept/",
"defer": true,
"items": "multiple"
},
{
"type": "web",
"url": "https://papers.ssrn.com/sol3/cf_dev/AbsByAuth.cfm?per_id=16042",
"items": "multiple"
},
{
"type": "web",
"url": "https://papers.ssrn.com/sol3/papers.cfm?abstract_id=1450387",
"items": [
{
"itemType": "preprint",
"title": "Who Doesn't Support the Genocide Convention? A Nested Analysis",
"creators": [
{
"firstName": "Michael",
"lastName": "Strausz",
"creatorType": "author"
},
{
"firstName": "Brian D.",
"lastName": "Greenhill",
"creatorType": "author"
}
],
"date": "2009",
"abstractNote": "What explains the large variation in the time taken by different countries to ratify the 1948 Genocide Convention? The costs of ratification would appear to be relatively low, yet many countries have waited for years, and even decades, before ratifying this symbolically important treaty. This study employs a \"nested analysis\" that combines a large-n event history analysis with a detailed study of an important outlying case in order to explain the main sources of this variation. The initial event history history produces a puzzling finding: countries appear to be less likely to ratify the treaty if relevant peer countries have already done so. We use the case of Japan -- which has not yet ratified the Genocide Convention, despite the predictions of the event history model -- to explore the proposed causes of ratification in more detail. Based on these findings, we suggest that once the norms embodied in a treaty take on a sufficiently \"taken-for-granted\" character, many countries decide that the costs of ratification outweigh its marginal benefits. The pattern of ratification of the Genocide Convention therefore does not appear to fit the classic model of the \"norm cascade\" that has been used to explain the adoption of other human rights norms. We conclude with suggestions for how the validity of our theory could be tested through a combination of further large-n and small-n analysis.",
"archiveID": "1450387",
"genre": "SSRN Scholarly Paper",
"language": "en",
"libraryCatalog": "Social Science Research Network",
"place": "Rochester, NY",
"shortTitle": "Who Doesn't Support the Genocide Convention?",
"url": "https://papers.ssrn.com/abstract=1450387",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
},
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Japan"
},
{
"tag": "event history analysis"
},
{
"tag": "genocide"
},
{
"tag": "hazard models"
},
{
"tag": "human rights"
},
{
"tag": "international law"
},
{
"tag": "international norms"
},
{
"tag": "mixed methods"
},
{
"tag": "nested analysis"
},
{
"tag": "norm cascades"
},
{
"tag": "survival models"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://papers.ssrn.com/sol3/JELJOUR_Results.cfm?form_name=journalBrowse&journal_id=3671899",
"items": "multiple"
}
]
/** END TEST CASES **/
100Abe Jellinek^https://([^/]+\.)?(((stack(overflow|exchange)|serverfault|askubuntu|superuser|stackapps)\.com)|mathoverflow\.net)//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2022 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
async function detectWeb(doc, _url) {
if (doc.querySelector('div[itemprop="mainEntity"][itemtype="https://schema.org/Question"]')
|| doc.querySelector('#content > [itemscope]')) {
return 'multiple';
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('#question, .answer');
for (let row of rows) {
let id = row.id;
let summary = ZU.trimInternal(text(row, '[itemprop="text"] p'));
if (!id || !summary) continue;
if (checkOnly) return true;
if (id == 'question') {
summary = 'Q: ' + summary;
}
else {
summary = 'A: ' + summary;
}
found = true;
items[id] = summary;
}
return found ? items : false;
}
async function doWeb(doc, _url) {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) {
Object.keys(items).forEach(id => scrape(doc, id));
}
});
}
function scrape(doc, id) {
let el = doc.getElementById(id);
let item = new Zotero.Item('forumPost');
item.forumTitle = attr(doc, 'meta[property="og:site_name"]', 'content');
item.date = ZU.strToISO(attr(el, 'time[itemprop="dateCreated"]', 'datetime')
|| attr(el, '.relativetime', 'title'));
// .href converts the URL to absolute
item.url = el.querySelector('a[itemprop="url"]').href;
item.creators.push(ZU.cleanAuthor(text(el, '[itemprop="author"] a'), 'author'));
item.attachments.push({
title: 'Snapshot',
document: doc
});
if (id == 'question') {
item.title = attr(doc, 'meta[itemprop="name"]', 'content');
item.postType = 'Forum post';
}
else {
item.title = `Answer to "${attr(doc, 'meta[itemprop="name"]', 'content')}"`;
}
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://mathoverflow.net/questions/318890/steepest-descent-integration-in-several-dimensions/418958",
"items": "multiple"
},
{
"type": "web",
"url": "https://stats.stackexchange.com/questions/210352/do-cohens-d-and-hedges-g-apply-to-the-welch-t-test",
"items": "multiple"
},
{
"type": "web",
"url": "https://es.stackoverflow.com/questions/524520/eliminar-espacio-de-fields-vac%c3%ados-en-reporte-con-jasperreport",
"items": "multiple"
},
{
"type": "web",
"url": "https://stackoverflow.com/questions/178325/how-do-i-check-if-an-element-is-hidden-in-jquery",
"items": "multiple"
},
{
"type": "web",
"url": "https://stackapps.com/questions/9281/whats-the-next-the-script-app-library-of-the-month",
"items": "multiple"
},
{
"type": "web",
"url": "https://superuser.com/questions/1714304/ram-no-longer-working-after-adding-a-second-stick",
"items": "multiple"
}
]
/** END TEST CASES **/
100Fei Qi, Sebastian Karcher, Guy Aglionby, and Abe Jellinek^https?://(papers|proceedings)\.n(eur)?ips\.cc//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2014-2021 Fei Qi, Sebastian Karcher, Guy Aglionby, and Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (getSearchResults(doc, true)) {
return "multiple";
}
else if (url.includes('/paper/') && /-Paper\.pdf$|-Abstract\.html$/.test(url)) {
return "conferencePaper";
}
return false;
}
function scrape(doc, url) {
// Unfortunately, the abstract isn't semantically marked at all; this is the best we can do
let abstract = ZU.xpathText(doc, '//h4[text()="Abstract"]/following-sibling::p[2]');
let pdfURL = attr(doc, 'a[href$="-Paper.pdf"]', 'href');
let bibURL = attr(doc, 'a[href$="-Bibtex.bib"], a[href$="/bibtex"]', 'href');
if (bibURL) {
ZU.doGet(bibURL, function (text) {
let translator = Zotero.loadTranslator("import");
// BibTeX
translator.setTranslator("9cb70025-a888-4a29-a210-93ec52da40d4");
translator.setString(text);
translator.setHandler("itemDone", function (obj, item) {
// NeurIPS puts journal/proceedings editors in the BibTeX,
// but we don't really want them.
item.creators = item.creators.filter(c => c.creatorType != 'editor');
item.url = url;
item.abstractNote = abstract;
item.attachments.push({
url: pdfURL,
title: "Full Text PDF",
mimeType: "application/pdf"
});
item.complete();
});
translator.translate();
});
}
else {
// fall back to EM for newer items (pre-conference, typically)
let translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', (_obj, item) => {
item.publisher = "Curran Associates, Inc.";
item.abstractNote = abstract;
item.attachments = item.attachments.filter(a => a.title != 'Snapshot');
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.itemType = "conferencePaper";
trans.doWeb(doc, url);
});
}
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
let items = getSearchResults(doc, false);
Zotero.selectItems(items, function (items) {
if (!items) {
return;
}
ZU.processDocuments(Object.keys(items), scrape);
});
}
else if (url.endsWith('-Paper.pdf')) {
let abstractURL = url
.replace('/file/', '/hash/')
.replace('-Paper.pdf', '-Abstract.html');
ZU.processDocuments(abstractURL, scrape);
}
else {
scrape(doc, url);
}
}
function getSearchResults(doc, checkOnly) {
let items = {};
let found = false;
let rows = doc.querySelectorAll('li a[href*="/paper/"]');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://proceedings.neurips.cc/paper/2009/hash/2387337ba1e0b0249ba90f55b2ba2521-Abstract.html",
"items": [
{
"itemType": "conferencePaper",
"title": "Information-theoretic lower bounds on the oracle complexity of convex optimization",
"creators": [
{
"firstName": "Alekh",
"lastName": "Agarwal",
"creatorType": "author"
},
{
"firstName": "Martin J",
"lastName": "Wainwright",
"creatorType": "author"
},
{
"firstName": "Peter",
"lastName": "Bartlett",
"creatorType": "author"
},
{
"firstName": "Pradeep",
"lastName": "Ravikumar",
"creatorType": "author"
}
],
"date": "2009",
"abstractNote": "Despite the large amount of literature on upper bounds on complexity of convex analysis, surprisingly little is known about the fundamental hardness of these problems. The extensive use of convex optimization in machine learning and statistics makes such an understanding critical to understand fundamental computational limits of learning and estimation. In this paper, we study the complexity of stochastic convex optimization in an oracle model of computation. We improve upon known results and obtain tight minimax complexity estimates for some function classes. We also discuss implications of these results to the understanding the inherent complexity of large-scale learning and estimation problems.",
"itemID": "NIPS2009_2387337b",
"libraryCatalog": "Neural Information Processing Systems",
"proceedingsTitle": "Advances in Neural Information Processing Systems",
"publisher": "Curran Associates, Inc.",
"url": "https://proceedings.neurips.cc/paper/2009/hash/2387337ba1e0b0249ba90f55b2ba2521-Abstract.html",
"volume": "22",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://proceedings.neurips.cc/paper/2009",
"items": "multiple"
},
{
"type": "web",
"url": "https://proceedings.neurips.cc/papers/search?q=richard+zemel",
"items": "multiple"
},
{
"type": "web",
"url": "https://proceedings.neurips.cc/paper/2019/hash/d0921d442ee91b896ad95059d13df618-Abstract.html",
"items": [
{
"itemType": "conferencePaper",
"title": "Efficient Graph Generation with Graph Recurrent Attention Networks",
"creators": [
{
"firstName": "Renjie",
"lastName": "Liao",
"creatorType": "author"
},
{
"firstName": "Yujia",
"lastName": "Li",
"creatorType": "author"
},
{
"firstName": "Yang",
"lastName": "Song",
"creatorType": "author"
},
{
"firstName": "Shenlong",
"lastName": "Wang",
"creatorType": "author"
},
{
"firstName": "Will",
"lastName": "Hamilton",
"creatorType": "author"
},
{
"firstName": "David K",
"lastName": "Duvenaud",
"creatorType": "author"
},
{
"firstName": "Raquel",
"lastName": "Urtasun",
"creatorType": "author"
},
{
"firstName": "Richard",
"lastName": "Zemel",
"creatorType": "author"
}
],
"date": "2019",
"abstractNote": "We propose a new family of efficient and expressive deep generative models of graphs, called Graph Recurrent Attention Networks (GRANs).\nOur model generates graphs one block of nodes and associated edges at a time.\nThe block size and sampling stride allow us to trade off sample quality for efficiency.\nCompared to previous RNN-based graph generative models, our framework better captures the auto-regressive conditioning between the already-generated and to-be-generated parts of the graph using Graph Neural Networks (GNNs) with attention.\nThis not only reduces the dependency on node ordering but also bypasses the long-term bottleneck caused by the sequential nature of RNNs.\nMoreover, we parameterize the output distribution per block using a mixture of Bernoulli, which captures the correlations among generated edges within the block. \nFinally, we propose to handle node orderings in generation by marginalizing over a family of canonical orderings.\nOn standard benchmarks, we achieve state-of-the-art time efficiency and sample quality compared to previous models.\nAdditionally, we show our model is capable of generating large graphs of up to 5K nodes with good quality.\nOur code is released at: \\url{https://github.com/lrjconan/GRAN}.",
"itemID": "NEURIPS2019_d0921d44",
"libraryCatalog": "Neural Information Processing Systems",
"proceedingsTitle": "Advances in Neural Information Processing Systems",
"publisher": "Curran Associates, Inc.",
"url": "https://proceedings.neurips.cc/paper/2019/hash/d0921d442ee91b896ad95059d13df618-Abstract.html",
"volume": "32",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://proceedings.neurips.cc/paper/2020/hash/0060ef47b12160b9198302ebdb144dcf-Abstract.html",
"items": [
{
"itemType": "conferencePaper",
"title": "Self-Supervised MultiModal Versatile Networks",
"creators": [
{
"firstName": "Jean-Baptiste",
"lastName": "Alayrac",
"creatorType": "author"
},
{
"firstName": "Adria",
"lastName": "Recasens",
"creatorType": "author"
},
{
"firstName": "Rosalia",
"lastName": "Schneider",
"creatorType": "author"
},
{
"firstName": "Relja",
"lastName": "Arandjelović",
"creatorType": "author"
},
{
"firstName": "Jason",
"lastName": "Ramapuram",
"creatorType": "author"
},
{
"firstName": "Jeffrey",
"lastName": "De Fauw",
"creatorType": "author"
},
{
"firstName": "Lucas",
"lastName": "Smaira",
"creatorType": "author"
},
{
"firstName": "Sander",
"lastName": "Dieleman",
"creatorType": "author"
},
{
"firstName": "Andrew",
"lastName": "Zisserman",
"creatorType": "author"
}
],
"date": "2020",
"abstractNote": "Videos are a rich source of multi-modal supervision. In this work, we learn representations using self-supervision by leveraging three modalities naturally present in videos: visual, audio and language streams.\nTo this end, we introduce the notion of a multimodal versatile network -- a network that can ingest multiple modalities and whose representations enable downstream tasks in multiple modalities. In particular, we explore how best to combine the modalities, such that fine-grained representations of the visual and audio modalities can be maintained, whilst also integrating text into a common embedding.\nDriven by versatility, we also introduce a novel process of deflation, so that the networks can be effortlessly applied to the visual data in the form of video or a static image.\nWe demonstrate how such networks trained on large collections of unlabelled video data can be applied on video, video-text, image and audio tasks.\nEquipped with these representations, we obtain state-of-the-art performance on multiple challenging benchmarks including UCF101, HMDB51, Kinetics600, AudioSet and ESC-50 when compared to previous self-supervised work. Our models are publicly available.",
"itemID": "NEURIPS2020_0060ef47",
"libraryCatalog": "Neural Information Processing Systems",
"pages": "25–37",
"proceedingsTitle": "Advances in Neural Information Processing Systems",
"publisher": "Curran Associates, Inc.",
"url": "https://proceedings.neurips.cc/paper/2020/hash/0060ef47b12160b9198302ebdb144dcf-Abstract.html",
"volume": "33",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://proceedings.neurips.cc/papers/search?q=Lehrach",
"items": "multiple"
},
{
"type": "web",
"url": "https://proceedings.neurips.cc/paper/2021/hash/003dd617c12d444ff9c80f717c3fa982-Abstract.html",
"items": [
{
"itemType": "conferencePaper",
"title": "Learning One Representation to Optimize All Rewards",
"creators": [
{
"firstName": "Ahmed",
"lastName": "Touati",
"creatorType": "author"
},
{
"firstName": "Yann",
"lastName": "Ollivier",
"creatorType": "author"
}
],
"date": "2021-12-06",
"abstractNote": "We introduce the forward-backward (FB) representation of the dynamics of a reward-free Markov decision process. It provides explicit near-optimal policies for any reward specified a posteriori. During an unsupervised phase, we use reward-free interactions with the environment to learn two representations via off-the-shelf deep learning methods and temporal difference (TD) learning. In the test phase, a reward representation is estimated either from reward observations or an explicit reward description (e.g., a target state). The optimal policy for thatreward is directly obtained from these representations, with no planning. We assume access to an exploration scheme or replay buffer for the first phase.The corresponding unsupervised loss is well-principled: if training is perfect, the policies obtained are provably optimal for any reward function. With imperfect training, the sub-optimality is proportional to the unsupervised approximation error. The FB representation learns long-range relationships between states and actions, via a predictive occupancy map, without having to synthesize states as in model-based approaches.This is a step towards learning controllable agents in arbitrary black-box stochastic environments. This approach compares well to goal-oriented RL algorithms on discrete and continuous mazes, pixel-based MsPacman, and the FetchReach virtual robot arm. We also illustrate how the agent can immediately adapt to new tasks beyond goal-oriented RL.",
"language": "en",
"libraryCatalog": "proceedings.neurips.cc",
"proceedingsTitle": "Advances in Neural Information Processing Systems",
"publisher": "Curran Associates, Inc.",
"url": "https://proceedings.neurips.cc/paper/2021/hash/003dd617c12d444ff9c80f717c3fa982-Abstract.html",
"volume": "34",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100George Gebbett^https://uk\.westlaw\.com/Document//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 George Gebbett
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc) {
if (text(doc, ".kh_toc-list.ukResearch_toc-list").includes("Case Analysis")) {
return "case";
}
else if (text(doc, ".kh_toc-list.ukResearch_toc-list").includes("Arrangement of Act")) {
return "statute";
}
else if (doc.title.includes("s.")) {
return "statuteSection";
}
else {
return false;
}
}
function doWeb(doc, url) {
const detectedType = detectWeb(doc, url);
switch (detectedType) {
case "case":
return scrapeCase(doc, url);
case "statute":
return scrapeStatute(doc, url);
case "statuteSection":
return scrapeStatuteSection(doc, url);
default:
return false;
}
}
function scrapeCase(doc, url) {
const translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setHandler('itemDone', function (obj, item) {
const citationArray = parseCitationList(text(doc, "#co_docContentWhereReported", 0));
item.title = text(doc, "#co_docHeaderContainer") ? text(doc, "#co_docHeaderContainer") : /(.+)\|/.exec(doc.title)[1];
item.reporter = citationArray[3];
item.reporterVolume = citationArray[2];
item.firstPage = citationArray[4];
item.dateDecided = citationArray[1];
item.court = /Court(.+)/.exec(text(doc, "#co_docContentCourt"))[1];
item.abstractNote = "";
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.itemType = "case";
trans.doWeb(doc, url);
});
}
function scrapeStatute(doc, url) {
const translator = Zotero.loadTranslator('web');
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setHandler('itemDone', function (obj, item) {
const fullTitle = text(doc, "#co_documentTitle");
item.date = /(\D+) (\d+)/.exec(fullTitle)[2];
item.title = /(\D+) (\d+)/.exec(fullTitle)[1];
item.abstractNote = "";
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.itemType = "statute";
trans.doWeb(doc, url);
});
}
function scrapeStatuteSection(doc, url) {
const translator = Zotero.loadTranslator('web');
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setHandler('itemDone', function (obj, item) {
const fullTitle = /([^\n]+)/.exec(text(doc, ".co_title, .noTOC"))[0];
item.date = /(\D+) (\d+)/.exec(fullTitle)[2];
item.title = /(\D+) (\d+)/.exec(fullTitle)[1];
item.abstractNote = "";
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.itemType = "statute";
trans.doWeb(doc, url);
});
}
function parseCitationList(citList) {
let citationRe = /[[|(](\d+)[\]|)] (\d*) ?([A-z. ]+) (\w[^Judgment])+/g;
let citationAsArray;
while ((citationAsArray = citationRe.exec(citList))) {
if (citationAsArray[3] !== "WLUK") {
return citationAsArray;
}
}
return citationAsArray;
}/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://uk.westlaw.com/Document/I1A0179A0E42811DA8FC2A0F0355337E9/View/FullText.html?transitionType=Default&contextData=%28sc.Default%29",
"items": [
{
"itemType": "case",
"caseName": "Parker-Tweedale v Dunbar Bank Plc (No.1)",
"creators": [],
"dateDecided": "1991",
"court": "Court of Appeal (Civil Division)",
"firstPage": "12",
"language": "en-GB",
"reporter": "Ch.",
"url": "http://uk.practicallaw.thomsonreuters.com/Document/I1A0179A0E42811DA8FC2A0F0355337E9/View/FullText.html?transitionType=Default&contextData=%28sc.Default%29",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://uk.westlaw.com/Document/I67088A508B0211DBB4C6A18EEE1C8BDD/View/FullText.html?transitionType=SearchItem&contextData=(sc.Search)",
"items": [
{
"itemType": "statute",
"nameOfAct": "Companies Act",
"creators": [],
"dateEnacted": "2006",
"language": "en-GB",
"url": "http://uk.practicallaw.thomsonreuters.com/Document/I67088A508B0211DBB4C6A18EEE1C8BDD/View/FullText.html?transitionType=SearchItem&contextData=(sc.Search)",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Hasan Huseyin DER^https?://www\.kitapyurdu\.com//*
***** BEGIN LICENSE BLOCK *****
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/kitap/') || url.includes('product_id')) {
return 'book';
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = ZU.xpath(doc, '//a[contains(@href, "/kitap/")]|//a[contains(@href, "product_id")]');
for (var i = 0; i < rows.length; i++) {
var href = rows[i].href;
var title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
/*
remove titles from creators
*/
function cleanCreatorTitles(str) {
return str.replace(/Prof.|Doç.|Yrd.|Dr.|Arş.|Öğr.|Gör.|Çevirmen:|Editor:|Derleyici:/g, '');
}
function localeCapitalizeTitle(name) {
return name
.split(/\s+/)
.map(part => part[0] + part.slice(1).toLocaleLowerCase('tr'))
.join(' ');
}
function scrape(doc, _url) {
var item = new Zotero.Item("book");
let json = JSON.parse(text(doc, 'body script[type="application/ld+json"]'));
item.title = ZU.unescapeHTML(json.name);
var authors = doc.querySelectorAll('.pr_producers__manufacturer .pr_producers__link');
for (var i = 0; i < authors.length; i++) {
var creator = cleanCreatorTitles(authors[i].textContent);
item.creators.push(ZU.cleanAuthor(creator, "author"));
}
var translators = ZU.xpath(doc, '//tr[contains(., "Çevirmen")]');
for (let i = 0; i < translators.length; i++) {
let creator = cleanCreatorTitles(translators[i].textContent);
item.creators.push(ZU.cleanAuthor(creator, "translator"));
}
var editors = ZU.xpath(doc, '//tr[contains(., "Editor")]|//tr[contains(., "Derleyici")]');
for (let i = 0; i < editors.length; i++) {
let creator = cleanCreatorTitles(editors[i].textContent);
item.creators.push(ZU.cleanAuthor(creator, "editor"));
}
var edition = doc.querySelector('[itemprop=bookEdition]');
if (edition) {
edition = ZU.trimInternal(edition.textContent);
// don't add first edition:
if (edition.split('.')[0] != "1") {
item.edition = edition.split('.')[0];
}
}
var language = ZU.xpathText(doc, '//tr/td[contains(., "Dil")]//following-sibling::td');
if (language) {
switch (language.trim()) {
case "İNGİLİZCE":
item.language = "en";
break;
default:
item.language = "tr";
}
}
var publisher = json.publisher.name;
if (publisher) {
publisher = ZU.trimInternal(publisher);
if (item.language == "tr") {
item.publisher = localeCapitalizeTitle(publisher);
}
else {
item.publisher = ZU.capitalizeTitle(publisher, true);
}
}
for (let tr of doc.querySelectorAll('.attributes tr')) {
if (text(tr, 'td', 0).startsWith('Yayın Tarihi')) {
item.date = ZU.strToISO(text(tr, 'td', 1));
}
}
item.ISBN = json.isbn;
item.numPages = json.numberOfPages;
item.abstractNote = ZU.unescapeHTML(json.description);
item.attachments.push({
title: "Snapshot",
document: doc
});
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.kitapyurdu.com/kitap/makroekonomi/139156.html",
"items": [
{
"itemType": "book",
"title": "Makroekonomi",
"creators": [
{
"firstName": "N. Gregory",
"lastName": "Mankiw",
"creatorType": "author"
},
{
"firstName": "Ömer Faruk",
"lastName": "Çolak",
"creatorType": "translator"
}
],
"date": "2018-03-31",
"ISBN": "9786054160389",
"abstractNote": "Gregory Mankiw’in Makroekonomi kitabı tüm dünya da ders kitabı olarak geniş kabul görmüştür. Kitap bugüne kadar altı baskı yaparken, başta Almanca, Fransızca, İtalyanca, İspanyolca, Çince, Rusça, Japonca ve Portekizce olmak üzere 16 dile çevrilmiştir. Elinizde tuttuğunuz Türkçe çeviride altıncı baskıdan yapılmıştır. Mankiw’in makroekonomi kitabını bu kadar önemli kılan nokta kitabın öğrenci ve öğretici dostu olmasıdır. Kitap makroekonomideki son gelişmeleri teorik olarak anlatırken ekonomideki gerçekleşmelere ilişkin verdiği örneklerle de teorik bilginin ayakları üzerine basmasını sağlamaktadır. Kitapta konular anlatıldıktan sonra her bölümün sonuna özet, anahtar kelimeler ile problemler ve uygulama soruları koyulmuştur. Kitaba sahip olan öğrenciler Eflatun Yayınevi’nin web sayfasına kayıt olup kitaptaki kodu girdiklerinde süresiz olarak kitaptaki sorular için istedikleri yardımı mail yoluyla alabileceklerdir. Böylece öğrenci, çalıştığı konular üzerinde kendisini interaktif hale getirmiş olacaktır.",
"language": "tr",
"libraryCatalog": "KitapYurdu.com",
"numPages": "688",
"publisher": "Efil Yayınevi",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.kitapyurdu.com/kitap/temel-ekonometri/22831.html",
"items": [
{
"itemType": "book",
"title": "Temel Ekonometri",
"creators": [
{
"firstName": "Damodar N.",
"lastName": "Gujarati",
"creatorType": "author"
},
{
"firstName": "Dawn",
"lastName": "Porter",
"creatorType": "author"
},
{
"firstName": "Gülay Günlük",
"lastName": "Şenesen",
"creatorType": "translator"
},
{
"firstName": "Ümit",
"lastName": "Şenesen",
"creatorType": "translator"
}
],
"date": "2014-10-21",
"ISBN": "9789750406171",
"abstractNote": "Temel Ekonometri’nin ilk baskısı otuz üç yıl önce yapılmıştı. Ekonometrinin hem kuramında hem uygulamasında önemli gelişmeler oldu. Her bir yeni basımında önemli gelişmeler kitaba yansımış ve kitap dünyanın bir çok üniversitesinde ders kitabı olarak kullanılmıştır. Bu kadar uzun ömürlü olan kitap iktisat ve finansman öğrencilerinin yanı sıra siyaset, kamu yönetimi, uluslararası ilişkiler, eğitim, tarım ve sağlık bilimlerinde de yaygın kullanılmaktadır. Yazar Gujarati’nin kitabın önsözünde yazdığı gibi: “Yıllar boyunca ekonometrinin, yeni başlayanlara, matris cebiri, yüksek matematik, giriş düzeyinin ötesinde istatistik kullanmadan, sezgisel ve anlaşılır biçimde öğretilebileceğini ilişkin olan kesin inancımı hiç değişmemiştir. Bazı konular özünde tekniktir. Böyle durumlarda ya uygun bir ek koydum ya da okuyucuyu ilgili kaynaklara yönlendirdim. O zaman bile teknik malzemeyi okuyucunun sezgisel anlayışını sağlayacak biçimde basitleştirmeye çalıştım. “ Yeni basımda öğrenciler kitabın, konuları geliştirilmiş, somut örnekli yeni basımını çok yararlı bulacaktır. Bu basımda kitapta kullanılan gerçek verilerin konuyla ilgili ve güncel olmasına özen gösterilmiştir. Kitaba on beş yeni açıklayıcı örnekle otuzdan fazla bölüm sonu alıştırması eklenmiştir. Ayrıca daha önceki basımda yirmi beşe yakın örnek ve yirmiden çok alıştırmanın da verileri güncellenmiştir. Beşinci basımın çevirisinde kitapta Damodar Gujarati ile yeni ortak yazar Dawn Porter, ekonometrinin temellerini güncel araştırmalarla harmanladılar. Öğrencilere yönelik olarak da kitaptaki örneklerde kullanılan veri setleri bütün olarak Excel formatında hazırlanmıştır. Kitabın ilk bölümünde klasik modelin varsayımlarının genişletilmesini ele alıyor ve ardından çoklu doğrusallık, küçük örneklem, değişen varyans, ardışık bağımlılık, geleneksel ve almaşık ekonometrik modellemeler konularını beş bölümde inceleniyor. Daha sonra kitapta, gölge değişkenlerle regresyon, gölge bağımlı değişkenle regresyon, DOM, LOgit, Probit, Tobit modelleri, dinamik ekonometri modelleri, ardışık bağlanımlı ve gecikmesi dağıtılmış modeller anlatılıyor. Diğer bölümlerde eşanlı denklem modelleri konusu, zaman serileri ekonometrisi ele alınıyor. Durağanlık, birim kökler, eşbütünleşim konularının yanı sıra ABBHO ve VAB modelleriyle kestrim açıklanıyor. Ekonometri, özellikle de son yirmi-otuz yıldır bilgisayardaki kapasite ve hız artışlarıyla birlikte, hızlı bir gelişme gösteren, dolayısıyla sürekli yeni terimler doğuran bir bilim dalıdır. Bu nedenle çeviride, bu terimlerin Türkçe karşılıklarının kullanılmasına özen gösterilmiş ve olası bir karışıklığı önlemek için de, kitabın sonundaki Konu Dizini'nde her terimin hem Türkçe, hem İngilizce karşılıkları verilmiştir. İçindekiler; • Tek Denklemli Bağlamın (Regresyon) Modelleri • Bağlanım (Regresyon) Çözümlemesinin Niteliği • İki Değişkenli Bağlanım (Regresyon) Çözümlemesi: Bazı Temel Bilgiler • İki Değişkenli Bağlanım (Regresyon) Modeli: Tahmin Sorunu • Klasik Normal Doğrusal Bağlanım (Regresyon) Modeli (KNDBM) • İki Değişkenli Bağlanım (Regresyon)- Aralık Tahmini ve Önsav Sınaması • İki Değişkenli Doğrusal Bağlanım (Regresyon) Modelinin Uzantıları • Çoklu Bağlanım (Regresyon) Çözümlemesi: Tahmin Sorunu • Çoklu Bağlanım Çözümlemesi: Çıkarsama Sorunu • Yapay Değişkenlerle Bağlanım (Regresyon) Modelleri • Klasik Modelin Varsayımlarının Gevşetilmesi • Çoklu Doğrusallık: Açıklayıcı Değişkenler İlişkiliyse Ne Olur? • Değişen Varyans: Hata Varyansı Sabit Değilse Ne Olur? • Ardışık İlişki: Hata Terimleri İlişkiliyse Ne Olur? • Ekonometrik Modelleme: Model Kurma, Tanı Koyma Sınamaları",
"language": "tr",
"libraryCatalog": "KitapYurdu.com",
"numPages": "972",
"publisher": "Literatür - Ders Kitapları",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.kitapyurdu.com/kitap/iktisadi-krizler-ve-turkiye-ekonomisi/375871.html",
"items": [
{
"itemType": "book",
"title": "İktisadi Krizler ve Türkiye Ekonomisi",
"creators": [
{
"firstName": "",
"lastName": "Kolektif",
"creatorType": "author"
},
{
"firstName": "Nadir",
"lastName": "Eroğlu",
"creatorType": "editor"
},
{
"firstName": "İlhan",
"lastName": "Eroğlu",
"creatorType": "editor"
},
{
"firstName": "Halil İbrahim",
"lastName": "Aydın",
"creatorType": "editor"
}
],
"date": "2015-09-16",
"ISBN": "9786055145545",
"abstractNote": "Prof Dr. İlker Parasız'ın onlarca kitabı ve bilimsel çalışmaları iktisat bilimine, akademisyenlere, öğrencilere rehber olmuştur. Bu önemli çalışmaların pek çoğu iktisadi krizler üzerine kaleme alınmıştır. Bu armağan kitap da kıymetli bilim adamı İlker Hoca'ya bir minnet ve şükran ifadesi olarak hazırlanmıştır. Kitap 25 değişik üniversiteden ve Türkiye Cumhuriyet Merkez Bankası'ndan toplam 39 yazarın kaleme aldığı 28 makaleden ve dört bölüm başlığından oluşmaktadır. Kitapta iktisadi kriz konusu, teoriden pratiğe ve küresel boyuttan ulusal boyuta dizayn edilmeye çalışılmıştır. Üniversite ve kurum çeşitliliği, yazar portföyünün farklı bakış açılarına sahip akademisyenlerden oluşması bu çalışmanın en dikkat çeken özelliklerinden birisidir. Kitapta, krizlerin genel olarak nedenleri, özellikleri, yayılma yolları ile teorik ve kavramsal arka planı ve kriz kuramları tartışılmış, krizlerin çıkış nedenleri olarak teknoloji, politika, para ve banka ilişkilerinin yanı sıra ticaret ve sermaye ilişkileri de incelenmiş, liberal e Marksist görüşlerin ekonomik krizler hakkındaki yaklaşımları analiz edilmiştir. Dünyada yaşanan krizleri tarihsel perspektifte değerlendirmeyi amaçlayan bu kitap, daha çok günümüzde etkilerini devam ettiren 2008 küresel kriz üzerine yoğunlaşmakta, 2008'e kadar, 1929 krizi ile başlayan, petrol krizi, Latin Amerika, Asya ve Rusya krizlerini de derinlemesine analiz etmektedir. Özellikle, 2008 krizi, finansallaşma ve gelir adaletsiziliği ilişkisine vurgu yapmakta, yaşanan küresel kriz sonrası dünya ekonomisinin genel görünümü ve akabinde uygulanan iktisat politikalarını değerlenmektedir. Çalışmada ayrıca Türkiye'de yaşanan iktisadi krizler ile küresel krizlerinin Türkiye'ye etkilerini inceleme konusu yapılmaktadır. Ulusal ölçekte 1994 krizi bir başlıkta, 1994 sonrası dönem de 2000 ve 2001 krizi olarak iki ayrı başlıkta değerlendirilmektedir. 2008 krizi öncesi ve sonrası Türkiye ekonomisi ve 2008 krizi sonrası borç krizine yakalanan Avrupa Birliği'ndeki krizin Türkiye'ye yansımaları da ayrı makalelerde ele alınmaktadır. Kriz göstergeleri, krizden alınan dersler, risk yönetimi ve krize karşı alınacak uluslararası önlemlerle ilgili önemli makalelerin yer aldığı bu eserde risk yönetimi kavramı tartışılarak bilimsel bir temele oturtulmakta, kantitatif olarak kriz kriterleri kapsamında uluslararası işbirliği çerçevesinde yapılan G-20 toplantıları değerlendirmektedir. Kitap, iktisadi krizleri çok yönlü ele alarak bu konunun hem teorideki yerini hem de pratikteki yansımalarını yüksek öğrenimin ve konuya ilgi duyan diğer kesimlerin istifadesine sunmaktadır.",
"language": "tr",
"libraryCatalog": "KitapYurdu.com",
"numPages": "661",
"publisher": "Orion Kitabevi Akademik Kitaplar",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.kitapyurdu.com/kitap/ekonomi-politikasi--teori-ve-turkiye-uygulamasi/59581.html",
"items": [
{
"itemType": "book",
"title": "Ekonomi Politikası / Teori ve Türkiye Uygulaması",
"creators": [
{
"firstName": "Mahfi",
"lastName": "Eğilmez",
"creatorType": "author"
},
{
"firstName": "Ercan",
"lastName": "Kumcu",
"creatorType": "author"
}
],
"date": "2020-02-18",
"ISBN": "9789751415851",
"abstractNote": "İlk olarak 2002’de yayımlanan Ekonomi Politikası, bugüne kadar defalarca basıldı. Kitap, üniversitelerde ders kitabı olarak okutuldu, çeşitli mesleklere giriş sınavlarında temel soru kitapları arasında yer aldı. Yalnızca bir ders kitabı olmakla kalmadı, aynı zamanda ekonomi öğrenmek ve izlemek isteyenlerin de elkitabı haline geldi. Bu kez kitap, güncel gelişmeleri de kapsayacak biçimde yeniden yazıldı. Kitap, bu yapısıyla ekonomi ve işletme öğrencileri için olduğu kadar ekonomi konularını merak edenler için de vazgeçilmez bir başvuru kitabı olma özelliği taşıyor.",
"language": "tr",
"libraryCatalog": "KitapYurdu.com",
"numPages": "344",
"publisher": "Remzi Kitabevi",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.kitapyurdu.com/kitap/dinler-sosyolojisi/420519.html",
"items": [
{
"itemType": "book",
"title": "Dinler Sosyolojisi",
"creators": [
{
"firstName": "Jean Paul",
"lastName": "Willaime",
"creatorType": "author"
},
{
"firstName": "Ramazan",
"lastName": "Adıbelli",
"creatorType": "translator"
}
],
"date": "2017-03-04",
"ISBN": "9786059460132",
"abstractNote": "Dinler sosyolojisi, dinin toplumsal tezahürlerini ve bunların tarihsel gelişimini ele alır. Modern toplumu araştıran ilk sosyologlar, dini fenomenleri de incelemek zorunda kalmıştı. Ancak dini evren üzerine yöneltilen sosyolojik bakış o dönemden beri birçok kez değişti ve zenginleşti. Weber ve Durkheim’dan itibaren süregelen yaklaşımlarla birlikte en güncel sorunları da işleyen bu eser, dinlerin toplumsal olgular olduğunu ve bu olguları analiz etmenin toplumu ve gelişimini anlamada temel önem taşıdığını gösterir.",
"language": "tr",
"libraryCatalog": "KitapYurdu.com",
"numPages": "136",
"publisher": "Pinhan Yayıncılık",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Robert Sim^https?:\/\/(www.)?straitstimes.com\//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2020 Robert Sim
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
var pageClass = ZU.xpathText(doc, '//meta[@property="og:type"]/@content');
if (pageClass === 'article') {
var testPath = url.replace(/^https?:\/\/(www.)?straitstimes.com\//, '');
if (testPath.split('/').length > 1) {
return 'newspaperArticle';
}
}
if (pageClass === 'Website') {
return 'multiple';
}
return false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) === "multiple") {
getMultipleItems(doc, url);
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var newItem = new Zotero.Item('newspaperArticle');
newItem.ISSN = '0585-3923';
newItem.url = url;
newItem.publicationTitle = 'The Straits Times';
newItem.title = ZU.xpathText(doc, '//meta[@property="og:title"]/@content');
newItem.abstractNote = (ZU.xpathText(doc, '//meta[@property="og:description"]/@content') || '').replace('\n. Read more at straitstimes.com.', '').trim();
newItem.date = ZU.xpathText(doc, '//meta[@property="article:published_time"]/@content');
newItem.place = 'Singapore';
newItem.language = 'en';
var authors = ZU.xpathText(doc, '//div[contains(@class, "field-byline")]//div[contains(@itemprop, "author")]'); // single author article. https://www.straitstimes.com/singapore/more-employees-eligible-for-covid-19-support-grant-application-start-date-pushed-back-msf
if (authors !== null && authors.length) {
authors = authors.trim();
insertCreator(authors, newItem);
}
else {
authors = ZU.xpathText(doc, '//div[contains(@class, "field-byline")]//span[contains(@itemprop, "author")]'); // multiple authors article. https://www.straitstimes.com/singapore/community/sporeans-going-ahead-with-cny-plans-amid-surge-in-covid-19-cases-as-businesses-see-boost-in-sales
if (authors !== null && authors.length) {
var authorsArr = authors.split(',');
for (var i = 0; i < authorsArr.length; i++) {
insertCreator(authorsArr[i], newItem);
}
}
}
// for opinion/forum contributors. https://www.straitstimes.com/opinion/facebooks-next-frontier-the-metaverse-what-does-that-mean
if (authors === null || !authors.length) {
var author = ZU.xpathText(doc, '//div[contains(@class, "group-byline-info")]//div[contains(@class, "field-byline")]');
if (author !== null && author.length) {
var authorArr = author.trim().replace(' For The Straits Times', '').split(' and '); // https://www.straitstimes.com/singapore/environment/science-talk-when-climate-change-impacts-human-health
for (var i2 = 0; i2 < authorArr.length; i2++) {
insertCreator(authorArr[i2], newItem);
}
}
}
newItem.attachments = [{
document: doc,
title: "Snapshot",
}];
if (doc.evaluate('//div[@class="paid-premium st-flag-1"]', doc, null, XPathResult.ANY_TYPE, null).iterateNext()) {
newItem.extra = "Straits Times Access: Subscription only";
}
newItem.complete();
}
function getMultipleItems(doc, url) {
var items = [];
var rows;
if (url.includes('/search?') && url.includes('searchKey')) {
rows = ZU.xpath(doc, '//div[@class="queryly_item_row"]');
if (rows.length) {
for (var i = 0; i < rows.length; i++) {
var searchItem = rows[i];
var searchItemUrl = attr(searchItem, 'a', 'href');
items.push(searchItemUrl);
}
}
}
else {
rows = ZU.xpath(doc, '//a[@class="block-link"]|//span[@class="story-headline"]/a');
if (rows.length) {
for (var k = 0; k < rows.length; k++) {
var headlineItem = rows[k];
var headlineItemUrl = headlineItem.href;
items.push(headlineItemUrl);
}
}
}
if (!!items && items.length) {
items = items.filter(function (item) {
return (!!item.match(/^https:\/\/www\.straitstimes.com/));
});
if (items.length) {
ZU.processDocuments(items, scrape);
}
}
}
function insertCreator(authorName, newItem) {
// to account for mostly Chinese names in formats of: <last> <first>, <first (typically English)> <last> <first (typically Chinese)>
// list derived from searching in Google with the follow search pattern: authors site:straitstimes.com/authors
var authorList = {
'Alison de Souza': { first: 'Alison', last: 'de Souza' },
'Arnoud de Meyer': { first: 'Arnoud', last: 'de Meyer' },
'Ang Yiying': { first: 'Yiying', last: 'Ang' },
'Ang Qing': { first: 'Qing', last: 'Ang' },
'Aw Cheng Wei': { first: 'Cheng Wei', last: 'Aw' },
'Baey Zo-Er': { first: 'Zo-Er', last: 'Baey' },
'Benjamin Lim Kang': { first: 'Benjamin, Kang', last: 'Lim' },
'Chang Ai-Lien': { first: 'Ai-Lien', last: 'Chang' },
'Chang May Choon': { first: 'May Choon', last: 'Chang' },
'Chang Tou Liang': { first: 'Tou Liang', last: 'Chang' },
'Cheong Suk-Wai': { first: 'Suk-Wai', last: 'Cheong' },
'Cheow Sue-Ann': { first: 'Sue-Ann', last: 'Cheow' },
'Cheryl Teh TL': { first: 'Cheryl, TL', last: 'Teh' },
'Chew Hui Min': { first: 'Hui Min', last: 'Chew' },
'Chin Hui Shan': { first: 'Hui Shan', last: 'Chin' },
'Chng Choon Hiong': { first: 'Choon Hion', last: 'Chng' },
'Chong Jun Liang': { first: 'Jun Liang', last: 'Chong' },
'Choo Yun Ting': { first: 'Yun Ting', last: 'Choo' },
'Christian de Boisredon': { first: 'Christian', last: 'de Boisredon' },
'Chua Mui Hoong': { first: 'Mui Hoong', last: 'Chua' },
'Chua Siang Yee': { first: 'Siang Yee', last: 'Chua' },
'Feng Zengkun': { first: 'Zengkun', last: 'Feng' },
'Goh Ruoxue': { first: 'Ruoxue', last: 'Goh' },
'Goh Sui Noi': { first: 'Sui Noi', last: 'Goh' },
'Goh Yan Han': { first: 'Yan Han', last: 'Goh' },
'Han Fook Kwang': { first: 'Fook Kwang', last: 'Han' },
'Ho Ai Li': { first: 'Ai Li', last: 'Ho' },
'Ho Cai Jun': { first: 'Cai Jun', last: 'Ho' },
'Jeremy Au Yong': { first: 'Jeremy', last: 'Au Yong' },
'Joy Pang Minle': { first: 'Joy, Minle', last: 'Pang' },
'Kang Wan Chern': { first: 'Wan Chern', last: 'Kang' },
'Khoe Wei Jun': { first: 'Wei Jun', last: 'Khoe' },
'Kok Xing Hui': { first: 'Xing Hui', last: 'Kok' },
'Kua Chee Siong': { first: 'Chee Siong', last: 'Kua' },
'Lai Shueh Yuan': { first: 'Shueh Yuan', last: 'Lai' },
'Lee Chee Chew': { first: 'Chee Chew', last: 'Lee' },
'Lee Choo Kiong': { first: 'Choo Kiong', last: 'Lee' },
'Lee Jian Xuan': { first: 'Jian Xuan', last: 'Lee' },
'Lee Min Kok': { first: 'Min Kok', last: 'Lee' },
'Lee Nian Tjoe': { first: 'Nian Tjoe', last: 'Lee' },
'Lee Qing Ping': { first: 'Qing Ping', last: 'Lee' },
'Lee Seok Hwai': { first: 'Seok Hwai', last: 'Lee' },
'Lee Si Xuan': { first: 'Si Xuan', last: 'Lee' },
'Lee Siew Hua': { first: 'Siew Hua', last: 'Lee' },
'Lee Wei Ling': { first: 'Wei Ling', last: 'Lee' },
'Lee Xin En': { first: 'Xin En', last: 'Lee' },
'Li Xueying': { first: 'Xueying', last: 'Li' },
'Lian Szu Jin': { first: 'Szu Jin', last: 'Lian' },
'Liew Ai Xin': { first: 'Ai Xin', last: 'Liew' },
'Lim Ai Leen': { first: 'Ai Leen', last: 'Lim' },
'Lim Min Zhang': { first: 'Min Zhang', last: 'Lim' },
'Lim Rei Enn': { first: 'Rei Enn', last: 'Lim' },
'Lim Ruey Yan': { first: 'Ruey Yan', last: 'Lim' },
'Lim Yan Liang': { first: 'Yan Liang', last: 'Lim' },
'Lim Yaohui': { first: 'Yaohui', last: 'Lim' },
'Lim Yi Han': { first: 'Yi Han', last: 'Lim' },
'Lin Yangchen': { first: 'Yangchen', last: 'Lin' },
'Ling Chang Hong': { first: 'Chang Hong', last: 'Ling' },
'Loh Guo Pei': { first: 'Guo Pei', last: 'Loh' },
'Loh Keng Fatt': { first: 'Keng Fatt', last: 'Loh' },
'Low Lin Fhoong': { first: 'Lin Fhoong', last: 'Low' },
'Mok Qiu Lin': { first: 'Qiu Lin', last: 'Mok' },
'Moon Jae-in': { first: 'Jae-in', last: 'Moon' },
'Nicholas De Silva': { first: 'Nicholas', last: 'De Silva' },
'Ng Kane Gene': { first: 'Kane Gene', last: 'Ng' },
'Ng Huiwen': { first: 'Huiwen', last: 'Ng' },
'Ng Wei Kai': { first: 'Wei Kai', last: 'Ng' },
'Nur Asyiqin Mohamad Salleh': { first: 'Nur Asyiqin', last: 'Mohamad Salleh' },
'Ong Sor Fern': { first: 'Sor Fern', last: 'Ong' },
'Poon Chian Hui': { first: 'Chain Hui', last: 'Poon' },
'Quah Ting Wen': { first: 'Ting Wen', last: 'Quah' },
'Raynold Toh YK': { first: 'Raynold, YK', last: 'Toh' },
'Rebecca Tan Hui Qing': { first: 'Rebecca, Hui Qing', last: 'Tan' },
'Seow Bei Yi': { first: 'Bei Yi', last: 'Seow' },
'Siow Li Sen': { first: 'Li Sen', last: 'Siow' },
'Tan Dawn Wei': { first: 'Dawn Wei', last: 'Tan' },
'Tan Fong Han': { first: 'Fong Han', last: 'Tan' },
'Tan Hsueh Yun': { first: 'Hsueh Yun', last: 'Tan' },
'Tan Hui Yee': { first: 'Hui Yee', last: 'Tan' },
'Tan Jia Ning': { first: 'Jia Ning', last: 'Tan' },
'Tan Ooi Boon': { first: 'Ooi Boon', last: 'Tan' },
'Tan Shu Yan': { first: 'Shu Yan', last: 'Tan' },
'Tan Tai Yong': { first: 'Tai Yong', last: 'Tan' },
'Tan Tam Mei': { first: 'Tam Mei', last: 'Tan' },
'Tan Weizhen': { first: 'Weizhen', last: 'Tan' },
'Tang Fan Xi': { first: 'Fan Xi', last: 'Tang' },
'Tang Wee Cheow': { first: 'Wee Choew', last: 'Tang' },
'Tay Hong Yi': { first: 'Hong Yi', last: 'Tay' },
'Tee Zhuo': { first: 'Zhuo', last: 'Tee' },
'Teo Cheng Wee': { first: 'Cheng Wee', last: 'Teo' },
'Tham Yuen-C': { first: 'Yuen-C', last: 'Tham' },
'Thong Yong Jun': { first: 'Yong Jun', last: 'Thong' },
'Toh Wen Li': { first: 'Wen Li', last: 'Toh' },
'Toh Ting Wei': { first: 'Ting Wei', last: 'Toh' },
'Toh Yong Chuan': { first: 'Yong Chuan', last: 'Toh' },
'Tong Ming Chien': { first: 'Ming Chien', last: 'Tong' },
'Wang Gungwu': { first: 'Gungwu', last: 'Wang' },
'Wong Ah Yoke': { first: 'Ah Yoke', last: 'Wong' },
'Wong Kim Hoh': { first: 'Kim Hoh', last: 'Wong' },
'Wong Shiying': { first: 'Shiying', last: 'Wong' },
'Wong Yang': { first: 'Yang', last: 'Wong' },
'Yeo Shu Hui': { first: 'Shu Hui', last: 'Yeo' },
'Yip Wai Yee': { first: 'Wai Yee', last: 'Yip' },
'Yuen Sin': { first: 'Sin', last: 'Yuen' },
'Zhao Jiayi': { first: 'Jiayi', last: 'Zhao' }
};
if (authorList[authorName]) {
newItem.creators.push({
lastName: authorList[authorName].last,
firstName: authorList[authorName].first,
creatorType: 'author'
});
}
else {
newItem.creators.push(ZU.cleanAuthor(authorName, "author"));
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.straitstimes.com/singapore/fast-and-furious-can-we-trust-the-speedy-development-of-covid-19-vaccines",
"items": [
{
"itemType": "newspaperArticle",
"title": "Fast and Furious. Can we trust the speedy development of Covid-19 vaccines?",
"creators": [
{
"firstName": "Danny",
"lastName": "Soon",
"creatorType": "author"
}
],
"date": "2020-12-28T05:00:00+08:00",
"ISSN": "0585-3923",
"abstractNote": "For life to become more normal, and for businesses to get back on their feet, more people need to become immune to the virus.",
"language": "en",
"libraryCatalog": "The Straits Times",
"place": "Singapore",
"publicationTitle": "The Straits Times",
"url": "https://www.straitstimes.com/singapore/fast-and-furious-can-we-trust-the-speedy-development-of-covid-19-vaccines",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.straitstimes.com/singapore/more-employees-eligible-for-covid-19-support-grant-application-start-date-pushed-back-msf",
"items": [
{
"itemType": "newspaperArticle",
"title": "More employees eligible for Covid-19 support grant; application start date pushed back: MSF",
"creators": [
{
"lastName": "Goh",
"firstName": "Yan Han",
"creatorType": "author"
}
],
"date": "2020-04-30T22:49:30+08:00",
"ISSN": "0585-3923",
"abstractNote": "The grant application has been pushed back from May 1 to May 4 or 11, depending on the employee's situation.",
"language": "en",
"libraryCatalog": "The Straits Times",
"place": "Singapore",
"publicationTitle": "The Straits Times",
"shortTitle": "More employees eligible for Covid-19 support grant; application start date pushed back",
"url": "https://www.straitstimes.com/singapore/more-employees-eligible-for-covid-19-support-grant-application-start-date-pushed-back-msf",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.straitstimes.com/asia/east-asia/hong-kong-recalibrates-covid-19-strategy-to-maintain-zero-infection-record",
"items": [
{
"itemType": "newspaperArticle",
"title": "Hong Kong recalibrates Covid-19 strategy to maintain zero-infection record",
"creators": [
{
"firstName": "Claire",
"lastName": "Huang",
"creatorType": "author"
}
],
"date": "2021-08-02T21:04:19+08:00",
"ISSN": "0585-3923",
"abstractNote": "Under the tweaked rules, non-residents from high-risk areas can also enter Hong Kong if they are fully vaccinated.",
"language": "en",
"libraryCatalog": "The Straits Times",
"place": "Singapore",
"publicationTitle": "The Straits Times",
"url": "https://www.straitstimes.com/asia/east-asia/hong-kong-recalibrates-covid-19-strategy-to-maintain-zero-infection-record",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.straitstimes.com/opinion/facebooks-next-frontier-the-metaverse-what-does-that-mean",
"items": [
{
"itemType": "newspaperArticle",
"title": "Facebook's next frontier - the metaverse. What does that mean?",
"creators": [
{
"firstName": "Daniel",
"lastName": "Broby",
"creatorType": "author"
}
],
"date": "2021-08-03T05:00:00+08:00",
"ISSN": "0585-3923",
"abstractNote": "Advertising dominates Facebook's social-networking business model. Zuckerberg's move to create a virtual world raises the possibility of new revenue sources.",
"extra": "Straits Times Access: Subscription only",
"language": "en",
"libraryCatalog": "The Straits Times",
"place": "Singapore",
"publicationTitle": "The Straits Times",
"url": "https://www.straitstimes.com/opinion/facebooks-next-frontier-the-metaverse-what-does-that-mean",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.straitstimes.com/",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.straitstimes.com/singapore/community/sporeans-going-ahead-with-cny-plans-amid-surge-in-covid-19-cases-as-businesses-see-boost-in-sales",
"items": [
{
"itemType": "newspaperArticle",
"title": "S'poreans going ahead with CNY plans despite Covid-19 surge, Chinatown businesses see boost in sales",
"creators": [
{
"lastName": "Yeo",
"firstName": "Shu Hui",
"creatorType": "author"
},
{
"firstName": "Dominic",
"lastName": "Low",
"creatorType": "author"
}
],
"date": "2022-01-23T18:32:31+08:00",
"ISSN": "0585-3923",
"abstractNote": "But they are taking precautions, such as taking turns for visits and doing regular tests.",
"language": "en",
"libraryCatalog": "The Straits Times",
"place": "Singapore",
"publicationTitle": "The Straits Times",
"url": "https://www.straitstimes.com/singapore/community/sporeans-going-ahead-with-cny-plans-amid-surge-in-covid-19-cases-as-businesses-see-boost-in-sales",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.straitstimes.com/world/science-talk-hope-and-concern-for-two-novel-covid-19-antivirals",
"items": [
{
"itemType": "newspaperArticle",
"title": "Science Talk: Hope and concern for two novel Covid-19 antivirals",
"creators": [
{
"firstName": "William A.",
"lastName": "Haseltine",
"creatorType": "author"
},
{
"firstName": "Roberto",
"lastName": "Patarca",
"creatorType": "author"
}
],
"date": "2021-11-22T05:00:00+08:00",
"ISSN": "0585-3923",
"abstractNote": "Public health measures, vaccines and antimicrobials – which kill micro-organisms or stop their growth – are the hallmarks to keeping plague-causing microbes at bay and, in exceedingly rare instances, even to eradicating them.",
"language": "en",
"libraryCatalog": "The Straits Times",
"place": "Singapore",
"publicationTitle": "The Straits Times",
"shortTitle": "Science Talk",
"url": "https://www.straitstimes.com/world/science-talk-hope-and-concern-for-two-novel-covid-19-antivirals",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.straitstimes.com/singapore/environment/science-talk-when-climate-change-impacts-human-health",
"items": [
{
"itemType": "newspaperArticle",
"title": "Science Talk: When climate change impacts human health",
"creators": [
{
"firstName": "Ching Ann",
"lastName": "Hui",
"creatorType": "author"
},
{
"firstName": "Woo",
"lastName": "Qiyun",
"creatorType": "author"
}
],
"date": "2021-11-08T20:22:34+08:00",
"ISSN": "0585-3923",
"abstractNote": "SINGAPORE - The climate crisis is often treated as an environmental problem, but the planetary heating could also have severe repercussions on human health.",
"language": "en",
"libraryCatalog": "The Straits Times",
"place": "Singapore",
"publicationTitle": "The Straits Times",
"shortTitle": "Science Talk",
"url": "https://www.straitstimes.com/singapore/environment/science-talk-when-climate-change-impacts-human-health",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Sebastian Karcher^https?://www\.mdpi\.com/*
MDPI Translator
Copyright (C) 2013 Sebastian Karcher
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
function detectWeb(doc, _url) {
var xpath = '//meta[@name="citation_journal_title"]';
if (ZU.xpath(doc, xpath).length > 0) {
return "journalArticle";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = ZU.xpath(doc, '//div[contains(@class, "article-content")]/a[contains(@class, "title-link")]');
for (var i = 0; i < rows.length; i++) {
var href = rows[i].href;
var title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) {
return;
}
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
// use Embedded Metadata
translator.setTranslator("951c027d-74ac-47d4-a107-9c3069ab7b48");
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
if (!item.abstractNote) item.abstractNote = item.extra;
// prefer citation_authors if present for the initials
let authors = attr(doc, 'meta[name="citation_authors"]', 'content');
item.ISSN = ZU.cleanISSN(url);
if (authors) {
let i = 0;
for (let author of authors.split(';')) {
if (author.includes(item.creators[i].lastName)) {
item.creators[i] = ZU.cleanAuthor(author, "author", true);
}
i++;
}
}
// The site double-encoudes HTML in metatags, e.g. https://www.mdpi.com/2071-1050/14/1/15
item.title = htmlDecode(item.title);
item.abstractNote = htmlDecode(item.abstractNote);
delete item.extra;
item.complete();
});
translator.translate();
}
// from https://stackoverflow.com/a/34064434/1483360
function htmlDecode(input) {
var string = new DOMParser().parseFromString(input, "text/html");
return string.documentElement.textContent;
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://www.mdpi.com/2075-4418/2/4",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.mdpi.com/2076-3387/3/3/32",
"items": [
{
"itemType": "journalArticle",
"title": "Autonomy, Conformity and Organizational Learning",
"creators": [
{
"firstName": "Nobuyuki",
"lastName": "Hanaki",
"creatorType": "author"
},
{
"firstName": "Hideo",
"lastName": "Owan",
"creatorType": "author"
}
],
"date": "2013/9",
"DOI": "10.3390/admsci3030032",
"ISSN": "2076-3387",
"abstractNote": "There is often said to be a tension between the two types of organizational learning activities, exploration and exploitation. The argument goes that the two activities are substitutes, competing for scarce resources when firms need different capabilities and management policies. We present another explanation, attributing the tension to the dynamic interactions among search, knowledge sharing, evaluation and alignment within organizations. Our results show that successful organizations tend to bifurcate into two types: those that always promote individual initiatives and build organizational strengths on individual learning and those good at assimilating the individual knowledge base and exploiting shared knowledge. Straddling the two types often fails. The intuition is that an equal mixture of individual search and assimilation slows down individual learning, while at the same time making it difficult to update organizational knowledge because individuals’ knowledge base is not sufficiently homogenized. Straddling is especially inefficient when the operation is sufficiently complex or when the business environment is sufficiently turbulent.",
"issue": "3",
"language": "en",
"libraryCatalog": "www.mdpi.com",
"pages": "32-52",
"publicationTitle": "Administrative Sciences",
"rights": "http://creativecommons.org/licenses/by/3.0/",
"url": "https://www.mdpi.com/2076-3387/3/3/32",
"volume": "3",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "NK landscape"
},
{
"tag": "ambidexterity"
},
{
"tag": "complexity"
},
{
"tag": "exploitation"
},
{
"tag": "exploration"
},
{
"tag": "organizational learning"
},
{
"tag": "turbulence"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.mdpi.com/search?q=preference&journal=algorithms&volume=&authors=§ion=&issue=&article_type=&special_issue=&page=&search=Search",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.mdpi.com/1420-3049/23/10/2454",
"items": [
{
"itemType": "journalArticle",
"title": "Measuring Artificial Sweeteners Toxicity Using a Bioluminescent Bacterial Panel",
"creators": [
{
"firstName": "Dorin",
"lastName": "Harpaz",
"creatorType": "author"
},
{
"firstName": "Loo Pin",
"lastName": "Yeo",
"creatorType": "author"
},
{
"firstName": "Francesca",
"lastName": "Cecchini",
"creatorType": "author"
},
{
"firstName": "Trish H. P.",
"lastName": "Koon",
"creatorType": "author"
},
{
"firstName": "Ariel",
"lastName": "Kushmaro",
"creatorType": "author"
},
{
"firstName": "Alfred I. Y.",
"lastName": "Tok",
"creatorType": "author"
},
{
"firstName": "Robert S.",
"lastName": "Marks",
"creatorType": "author"
},
{
"firstName": "Evgeni",
"lastName": "Eltzov",
"creatorType": "author"
}
],
"date": "2018/10",
"DOI": "10.3390/molecules23102454",
"ISSN": "1420-3049",
"abstractNote": "Artificial sweeteners have become increasingly controversial due to their questionable influence on consumers’ health. They are introduced in most foods and many consume this added ingredient without their knowledge. Currently, there is still no consensus regarding the health consequences of artificial sweeteners intake as they have not been fully investigated. Consumption of artificial sweeteners has been linked with adverse effects such as cancer, weight gain, metabolic disorders, type-2 diabetes and alteration of gut microbiota activity. Moreover, artificial sweeteners have been identified as emerging environmental pollutants, and can be found in receiving waters, i.e., surface waters, groundwater aquifers and drinking waters. In this study, the relative toxicity of six FDA-approved artificial sweeteners (aspartame, sucralose, saccharine, neotame, advantame and acesulfame potassium-k (ace-k)) and that of ten sport supplements containing these artificial sweeteners, were tested using genetically modified bioluminescent bacteria from E. coli. The bioluminescent bacteria, which luminesce when they detect toxicants, act as a sensing model representative of the complex microbial system. Both induced luminescent signals and bacterial growth were measured. Toxic effects were found when the bacteria were exposed to certain concentrations of the artificial sweeteners. In the bioluminescence activity assay, two toxicity response patterns were observed, namely, the induction and inhibition of the bioluminescent signal. An inhibition response pattern may be observed in the response of sucralose in all the tested strains: TV1061 (MLIC = 1 mg/mL), DPD2544 (MLIC = 50 mg/mL) and DPD2794 (MLIC = 100 mg/mL). It is also observed in neotame in the DPD2544 (MLIC = 2 mg/mL) strain. On the other hand, the induction response pattern may be observed in its response in saccharin in TV1061 (MLIndC = 5 mg/mL) and DPD2794 (MLIndC = 5 mg/mL) strains, aspartame in DPD2794 (MLIndC = 4 mg/mL) strain, and ace-k in DPD2794 (MLIndC = 10 mg/mL) strain. The results of this study may help in understanding the relative toxicity of artificial sweeteners on E. coli, a sensing model representative of the gut bacteria. Furthermore, the tested bioluminescent bacterial panel can potentially be used for detecting artificial sweeteners in the environment, using a specific mode-of-action pattern.",
"issue": "10",
"language": "en",
"libraryCatalog": "www.mdpi.com",
"pages": "2454",
"publicationTitle": "Molecules",
"rights": "http://creativecommons.org/licenses/by/3.0/",
"url": "https://www.mdpi.com/1420-3049/23/10/2454",
"volume": "23",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "artificial sweeteners"
},
{
"tag": "bioluminescent bacteria"
},
{
"tag": "environmental pollutants"
},
{
"tag": "gut microbiota"
},
{
"tag": "sport supplements"
},
{
"tag": "toxic effect"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.mdpi.com/2071-1050/14/1/15",
"items": [
{
"itemType": "journalArticle",
"title": "Smart Sirens—Civil Protection in Rural Areas",
"creators": [
{
"firstName": "Sascha",
"lastName": "Henninger",
"creatorType": "author"
},
{
"firstName": "Martin",
"lastName": "Schneider",
"creatorType": "author"
},
{
"firstName": "Arne",
"lastName": "Leitte",
"creatorType": "author"
}
],
"date": "2022/1",
"DOI": "10.3390/su14010015",
"ISSN": "2071-1050",
"abstractNote": "Germany carried out a nationwide “Alert Day” in 2020 to test its civil alarm systems. The test revealed some problems. Heterogeneous development structures and topography can be limiting factors for sound propagation. In consequence, sirens could be heard inadequately, depending on their location. Furthermore, the reason of warning remains unknown to the public. In terms of civil protection, warnings with the code of behavior by general available media is desired. Smart sirens can transmit additional spoken information and be installed on already-existing streetlights. In this study, we analyze how smart sirens could lead to an improved civil protection. Exemplarily, a detailed analysis is made for a different structured rural area, Dansenberg in Germany, whereas the influence of local conditions on the sound propagation is considered. We analyzed with the software CadnaA—a software for calculation, assessment and prediction of environmental sound—how the location and number of smart sirens can be optimized in order to produce a full coverage of the study area. We modeled the coverage in different scenarios and compared four scenarios: (a) current situation with two E57 type sirens; (b) replacing the existing sirens with two high-performance sirens; (c) one high-performance siren at the more central point; and (d) optimized network of smart sirens of the type Telegrafia Bono. The aim was to achieve a full coverage with a minimum of warning sirens. We could show that the current situation with two E57 type sirens fails to reach out to the whole population whereas the optimized network of smart sirens results in a better coverage. Therefore, a reconsideration of the existing warning system of civil protection with smart sirens could result in a better coverage and improved information of warning.",
"issue": "1",
"language": "en",
"libraryCatalog": "www.mdpi.com",
"pages": "15",
"publicationTitle": "Sustainability",
"rights": "http://creativecommons.org/licenses/by/3.0/",
"url": "https://www.mdpi.com/2071-1050/14/1/15",
"volume": "14",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "civil protection"
},
{
"tag": "extreme events"
},
{
"tag": "rural areas"
},
{
"tag": "sirens"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Philipp Zumstein^https?://[^\/]+\.delpher\.nl/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2016 Philipp Zumstein
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/view')) {
if (url.includes('/boeken/')) {
return "book";
}
if (url.includes('/tijdschriften/')) {
return "journalArticle";
}
if (url.includes('/kranten/')) {
return "newspaperArticle";
}
if (url.includes('/radiobulletins/')) {
return "radioBroadcast";
}
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = ZU.xpath(doc, '//article//a[contains(@class, "search-result__link") and starts-with(@href, "/")]');
for (var i = 0; i < rows.length; i++) {
var href = rows[i].href;
var title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var item = new Zotero.Item(detectWeb(doc, url));
var details = ZU.xpath(doc, '(//dl[contains(@class, "metadata__details-description-list")])[1]');
var title = ZU.xpathText(details, './/ancestor::dt[contains(@class,"metadata__details-text") and (normalize-space(text())="Titel" or normalize-space(text())="Kop")]/following-sibling::dd[1]');
if (!title) {
title = ZU.xpathText(details, './/ancestor::dt[contains(@class,"metadata__details-text") and (normalize-space(text())="Krantentitel")]/following-sibling::dd[1]');
}
item.title = title;
item.numPages = ZU.xpathText(details, './/ancestor::dt[contains(@class,"metadata__details-text") and normalize-space(text())="Omvang"]/following-sibling::dd[1]');
var date = ZU.xpathText(details, './/ancestor::dt[contains(@class,"metadata__details-text") and (normalize-space(text())="Publicatiedatum" or normalize-space(text())="Datum")]/following-sibling::dd[1]');
if (!date) {
date = ZU.xpathText(details, './/ancestor::dt[contains(@class,"metadata__details-text") and (normalize-space(text())="Jaar van uitgave")]/following-sibling::dd[1]');
}
if (date && date.length > 4) {
item.date = date.replace(/(\d{2})-(\d{2})-(\d{4})/, "$3-$2-$1");
}
else item.date = date;
item.publicationTitle = item.issue = ZU.xpathText(details, './/ancestor::dt[contains(@class,"metadata__details-text") and (normalize-space(text())="Krantentitel")]/following-sibling::dd[1]/a');
item.libraryCatalog = ZU.xpathText(details, './/ancestor::dt[contains(@class,"metadata__details-text") and normalize-space(text())="Herkomst"]/following-sibling::dd[1]/a');
if (!item.libraryCatalog) item.libraryCatalog = "Delpher";
item.publisher = ZU.xpathText(details, './/ancestor::dt[contains(@class,"metadata__details-text") and (normalize-space(text())="Drukker/Uitgever" or normalize-space(text())="Uitgever")]/following-sibling::dd[1]/a');
item.callNumber = ZU.xpathText(details, './/ancestor::dt[contains(@class,"metadata__details-text") and (normalize-space(text())="PPN")]/following-sibling::dd[1]/a');
var language = ZU.xpathText(details, './/ancestor::dt[contains(@class,"metadata__details-text") and (normalize-space(text())="Taal")]/following-sibling::dd[1]/a');
if (language) item.language = ZU.trimInternal(language);
// item.volume = ZU.xpathText(details, './/dd[@data-testing-id="search-result__volume"]');
item.issue = ZU.xpathText(details, './/ancestor::dt[contains(@class,"metadata__details-text") and (normalize-space(text())="Aflevering")]/following-sibling::dd[1]/a');
item.edition = ZU.xpathText(details, './/ancestor::dt[contains(@class,"metadata__details-text") and (normalize-space(text())="Editie")]/following-sibling::dd[1]/a');
item.place = ZU.xpathText(details, './/ancestor::dt[contains(@class,"metadata__details-text") and (normalize-space(text())="Plaats van uitgave")]/following-sibling::dd[1]/a');
var tags = ZU.xpath(details, './/ancestor::dt[contains(@class,"metadata__details-text") and (normalize-space(text())="Onderwerp")]/following-sibling::dd/a');
for (var i = 0; i < tags.length; i++) {
item.tags.push(tags[i].textContent);
}
var authors = ZU.xpath(details, './/ancestor::dt[contains(@class,"metadata__details-text") and (normalize-space(text())="Auteur" or normalize-space(text())="Coauteur") ]/following-sibling::dd[1]');
for (var j = 0; j < authors.length; j++) {
item.creators.push(ZU.cleanAuthor(authors[j].textContent, "author", true));
}
item.url = ZU.xpathText(doc, '(//input[contains(@class,"object-view-menu__share-links-details-input")])[last()]/@value');
item.attachments.push({
title: "Snapshot",
document: doc
});
var pdflink = ZU.xpathText(doc, './/a[contains(@class,"object-view-menu__downloads-link") and (normalize-space(text())="pdf")]/@href');
if (pdflink) {
item.attachments.push({
title: "Full Text PDF",
mimeType: "application/pdf",
url: pdflink
});
}
var jpglink = ZU.xpathText(doc, './/a[contains(@class,"object-view-menu__downloads-link") and (normalize-space(text())="jpg")]/@href');
if (jpglink) {
item.attachments.push({
title: "Image",
mimeType: "image/jpeg",
url: jpglink
});
}
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.delpher.nl/nl/boeken/results?query=buurman&coll=boeken",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.delpher.nl/nl/boeken/view?identifier=dpo:2390:mpeg21:0003&query=Philippe+en+Georgette&page=1&coll=boeken&rowid=1",
"items": [
{
"itemType": "book",
"title": "Philippe en Georgette, zangspel.",
"creators": [
{
"firstName": "Jacques Marie",
"lastName": "Boutet de Monvel",
"creatorType": "author"
},
{
"firstName": "N. C. (wed C. van Streek)",
"lastName": "Brinkman",
"creatorType": "author"
}
],
"date": "1796",
"language": "Nederlands",
"libraryCatalog": "Leiden, Universiteitsbibliotheek",
"numPages": "72",
"publisher": "Helders, Jan Amsterdam, 1779-1798",
"url": "https://resolver.kb.nl/resolve?urn=dpo:2390:mpeg21:0003",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
},
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Image",
"mimeType": "image/jpeg"
}
],
"tags": [
{
"tag": "Drama"
},
{
"tag": "French language and literature"
},
{
"tag": "Leiden, Universiteitsbibliotheek"
},
{
"tag": "STCN"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.delpher.nl/nl/tijdschriften/results?query=buurman&page=1&coll=dts",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.delpher.nl/nl/kranten/results?query=buurman&coll=ddd",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.delpher.nl/nl/kranten/view?query=Spaansche+Buurman&coll=ddd&identifier=ddd:110578678:mpeg21:a0106&resultsidentifier=ddd:110578678:mpeg21:a0106&rowid=1",
"items": [
{
"itemType": "newspaperArticle",
"title": "Spaansche buurman.",
"creators": [],
"date": "1941-02-01",
"callNumber": "832675288",
"edition": "Avond",
"libraryCatalog": "Delpher",
"place": "Amsterdam",
"publicationTitle": "De Telegraaf",
"url": "https://resolver.kb.nl/resolve?urn=ddd:110578678:mpeg21:a0106",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
},
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Image",
"mimeType": "image/jpeg"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.delpher.nl/nl/radiobulletins/results?query=buurman&coll=anp",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.delpher.nl/nl/radiobulletins/view?coll=anp&page=2&facets%5Bperiode%5D%5B%5D=3%7C1950-1959%7C1950%7Cfebruari%7C20%7C&identifier=anp:1950:02:20:19:mpeg21&resultsidentifier=anp:1950:02:20:19:mpeg21&rowid=2",
"items": [
{
"itemType": "radioBroadcast",
"title": "ANP Nieuwsbericht - 20-02-1950 - 19",
"creators": [],
"date": "1950-02-20",
"libraryCatalog": "Delpher",
"url": "https://resolver.kb.nl/resolve?urn=anp:1950:02:20:19",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
},
{
"title": "Image",
"mimeType": "image/jpeg"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.delpher.nl/nl/tijdschriften/view/index?query=buurman&coll=dts&identifier=dts%3A2738036%3Ampeg21%3A0012&page=1&maxperpage=10#info",
"items": [
{
"itemType": "journalArticle",
"title": "Nieuwsblad voor den boekhandel jrg 91, 1924, no 35, 02-05-1924",
"creators": [],
"date": "1924-05-02",
"callNumber": "830637982",
"libraryCatalog": "Koninklijke Bibliotheek",
"url": "https://resolver.kb.nl/resolve?urn=dts:2738036:mpeg21:0012",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
},
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Image",
"mimeType": "image/jpeg"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.delpher.nl/nl/boeken/view?coll=boeken&identifier=MMKB02:100006852",
"items": [
{
"itemType": "book",
"title": "Neêrland weer vrij!",
"creators": [
{
"firstName": "J.",
"lastName": "Stamperius",
"creatorType": "author"
},
{
"firstName": "W. K. de",
"lastName": "Bruin",
"creatorType": "author"
}
],
"date": "[192-?]",
"language": "Nederlands",
"libraryCatalog": "Koninklijke Bibliotheek",
"numPages": "95 p., [6] bl. pl",
"publisher": "Gebr. Kluitman",
"url": "https://resolver.kb.nl/resolve?urn=MMKB02:100006852:00009",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
},
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Image",
"mimeType": "image/jpeg"
}
],
"tags": [
{
"tag": "1505 bed"
},
{
"tag": "1505 bed Opvoeding en onderwijs; [Kinderlectuur] → Kinderlectuur → Kinderboeken → Nederlands"
},
{
"tag": "Achttiende eeuw"
},
{
"tag": "Historische verhalen"
},
{
"tag": "Kinderboek"
},
{
"tag": "Koninklijke Bibliotheek"
},
{
"tag": "Napoleontische oorlogen"
},
{
"tag": "Negentiende eeuw"
},
{
"tag": "OPC"
},
{
"tag": "Oorlogsverhalen"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Philipp Zumstein and Abe Jellinek^https?://www\.newyorker\.com//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2017-2021 Philipp Zumstein and Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (doc.querySelector('article.article')) {
return "magazineArticle";
}
else if (url.includes('/search/') && getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = ZU.xpath(doc, '//li//a[h4]');
for (let row of rows) {
var href = row.href;
var title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) {
return;
}
ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var data = text(doc, 'script[type="application/ld+json"]');
var json = JSON.parse(data);
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
if (item.creators.length <= 1 && json.author) {
item.creators = [];
// json.author can either be an array, or a object containing an array
if (Array.isArray(json.author)) {
for (let author of json.author) {
item.creators.push(ZU.cleanAuthor(author.name, "author"));
}
}
else if (json.author.name) {
for (let name of json.author.name) {
item.creators.push(ZU.cleanAuthor(name, "author"));
}
}
}
item.publicationTitle = 'The New Yorker';
item.date = ZU.strToISO(json.dateModified || json.datePublished);
item.section = json.articleSection;
item.ISSN = "0028-792X";
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.itemType = "magazineArticle";
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.newyorker.com/magazine/2011/10/31/foreign-campaigns",
"items": [
{
"itemType": "magazineArticle",
"title": "Foreign Campaigns",
"creators": [
{
"firstName": "David",
"lastName": "Remnick",
"creatorType": "author"
}
],
"date": "2011-10-20",
"ISSN": "0028-792X",
"abstractNote": "The Republican professionals know it. The numbers show that more than half the country identifies the economy as the most pressing issue of the campaign; …",
"language": "en-US",
"libraryCatalog": "www.newyorker.com",
"publicationTitle": "The New Yorker",
"url": "https://www.newyorker.com/magazine/2011/10/31/foreign-campaigns",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "2012 election"
},
{
"tag": "arab league"
},
{
"tag": "arab spring"
},
{
"tag": "barack obama"
},
{
"tag": "death"
},
{
"tag": "dictators"
},
{
"tag": "elections"
},
{
"tag": "foreign policy"
},
{
"tag": "herman cain"
},
{
"tag": "idi amin"
},
{
"tag": "libya"
},
{
"tag": "middle east"
},
{
"tag": "mitt romney"
},
{
"tag": "muammar qaddafi"
},
{
"tag": "osama bin laden"
},
{
"tag": "politics"
},
{
"tag": "presidential candidates"
},
{
"tag": "republican party"
},
{
"tag": "republicans"
},
{
"tag": "rick perry"
},
{
"tag": "uzbekistan"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.newyorker.com/news/hendrik-hertzberg/is-that-rick-santorum-on-the-cafeteria-line",
"items": [
{
"itemType": "magazineArticle",
"title": "Is That Rick Santorum on the Cafeteria Line?",
"creators": [
{
"firstName": "Hendrik",
"lastName": "Hertzberg",
"creatorType": "author"
}
],
"date": "2012-02-24",
"ISSN": "0028-792X",
"abstractNote": "I’m a week late with this, but Chris Matthews had a pretty devastating take on Santorum’s “phony theology” attack on Obama’s concern about what …",
"language": "en-US",
"libraryCatalog": "www.newyorker.com",
"publicationTitle": "The New Yorker",
"url": "https://www.newyorker.com/news/hendrik-hertzberg/is-that-rick-santorum-on-the-cafeteria-line",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "catholics"
},
{
"tag": "rick santorum"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.newyorker.com/search/q/labor",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.newyorker.com/magazine/2017/06/19/remembering-the-murder-you-didnt-commit",
"items": [
{
"itemType": "magazineArticle",
"title": "Remembering the Murder You Didn’t Commit",
"creators": [
{
"firstName": "Rachel",
"lastName": "Aviv",
"creatorType": "author"
}
],
"date": "2017-06-12",
"ISSN": "0028-792X",
"abstractNote": "DNA evidence exonerated six convicted killers. So why do some of them recall the crime so clearly?",
"language": "en-US",
"libraryCatalog": "www.newyorker.com",
"publicationTitle": "The New Yorker",
"url": "https://www.newyorker.com/magazine/2017/06/19/remembering-the-murder-you-didnt-commit",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "crime"
},
{
"tag": "memory"
},
{
"tag": "murder"
},
{
"tag": "nebraska"
},
{
"tag": "psychology"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.newyorker.com/culture/culture-desk/what-happens-when-a-bad-tempered-distractible-doofus-runs-an-empire",
"items": [
{
"itemType": "magazineArticle",
"title": "What Happens When a Bad-Tempered, Distractible Doofus Runs an Empire?",
"creators": [
{
"firstName": "Miranda",
"lastName": "Carter",
"creatorType": "author"
}
],
"date": "2018-06-06",
"ISSN": "0028-792X",
"abstractNote": "Donald Trump is reminiscent of Kaiser Wilhelm II, during whose reign the upper echelons of the German government began to unravel into a free-for-all.",
"language": "en-US",
"libraryCatalog": "www.newyorker.com",
"publicationTitle": "The New Yorker",
"url": "https://www.newyorker.com/culture/culture-desk/what-happens-when-a-bad-tempered-distractible-doofus-runs-an-empire",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "donald trump"
},
{
"tag": "first world war"
},
{
"tag": "germany"
},
{
"tag": "leadership"
},
{
"tag": "narcissism"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://(datatracker\.ietf\.org/|www\.ietf\.org/archive/id/|tools\.ietf\.org/pdf/|www\.rfc-editor\.org/)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
const slugRe = /\/(?:rfc|pdf|id|doc|info)(?:\/html)?\/([^/.]+)/;
function detectWeb(doc, url) {
if (getSearchResults(doc, true)) {
return "multiple";
}
else if (slugRe.test(url)) {
return "report";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('td.doc');
for (let row of rows) {
let href = attr(row, 'a', 'href');
let title = ZU.trimInternal(text(row, 'b'));
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
let slug = url.match(slugRe);
if (slug) {
slug = slug[1];
let dataTrackerURL = `https://datatracker.ietf.org/doc/${slug}`;
if (dataTrackerURL != url && dataTrackerURL != url + '/') {
Z.debug(`Not on datatracker page; fetching ${dataTrackerURL}`);
ZU.processDocuments(dataTrackerURL,
(doc, url) => scrape(doc, url, dataTrackerURL));
return;
}
}
scrape(doc, url);
}
}
function scrape(doc, url, originalURL) {
let bibURL = attr(doc, '.meta-info a[href*="/bibtex"], .meta a[href*="/bibtex"]',
'href');
if (!bibURL) {
// this is probably a draft with a weird versioned URL that doesn't
// resolve right. so we'll reformat the version and try again.
let strippedOriginalURL = originalURL.replace(/-?(\d+)$/, '/$1');
if (strippedOriginalURL != originalURL) {
Z.debug(`Versioned URL resolved incorrectly; trying ${strippedOriginalURL}`);
ZU.processDocuments(strippedOriginalURL,
(doc, url) => scrape(doc, url, strippedOriginalURL));
return;
}
}
if (bibURL.startsWith('/')) {
// relative URL resolution doesn't currently work right when inside a
// cross-domain processDocuments callback, so we'll do it manually
bibURL = 'https://datatracker.ietf.org' + bibURL;
}
Z.debug(`Fetching BibTeX from ${bibURL}`);
ZU.doGet(bibURL, function (respText) {
// make sure the BibTeX translator understands that it's a report...
// weird stuff with the reportNumber happens otherwise.
respText = respText.replace(/^\s*@[^{]+/m, '@report');
var translator = Zotero.loadTranslator("import");
translator.setTranslator("9cb70025-a888-4a29-a210-93ec52da40d4");
translator.setString(respText);
translator.setHandler("itemDone", function (obj, item) {
item.institution = 'Internet Engineering Task Force';
item.reportType = item.series;
if (item.type || item.reportType) {
item.reportType = (item.type || item.reportType)
.replace(/-/g, ' ');
delete item.type; // not sure what that's about
if (item.reportType == 'Request for Comments'
&& item.reportNumber
&& !item.reportNumber.includes('RFC')) {
// by convention
item.reportNumber = `RFC ${item.reportNumber}`;
}
}
delete item.series;
delete item.publisher;
delete item.backupPublisher;
delete item.extra;
item.url = url.replace(/[?#].*/, '');
let pdfURL = attr(doc, '.meta a[href$=".pdf"], .meta a[href*="/doc/pdf"]', 'href');
if (pdfURL) {
item.attachments.push({
title: 'Full Text PDF',
mimeType: 'application/pdf',
url: pdfURL
});
}
for (let creator of item.creators) {
if (creator.firstName) {
creator.firstName = creator.firstName.replace(/Dr\.?\s*/i, '');
}
}
item.complete();
});
translator.translate();
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://datatracker.ietf.org/doc/html/rfc1737",
"items": [
{
"itemType": "report",
"title": "Functional Requirements for Uniform Resource Names",
"creators": [
{
"firstName": "Larry M.",
"lastName": "Masinter",
"creatorType": "author"
},
{
"firstName": "Karen R.",
"lastName": "Sollins",
"creatorType": "author"
}
],
"date": "1994-12",
"abstractNote": "This document specifies a minimum set of requirements for a kind of Internet resource identifier known as Uniform Resource Names (URNs). This memo provides information for the Internet community. This memo does not specify an Internet standard of any kind.",
"institution": "Internet Engineering Task Force",
"itemID": "rfc1737",
"libraryCatalog": "IETF",
"reportNumber": "RFC 1737",
"reportType": "Request for Comments",
"url": "https://datatracker.ietf.org/doc/rfc1737/",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://datatracker.ietf.org/doc/rfc8869/",
"items": [
{
"itemType": "report",
"title": "Evaluation Test Cases for Interactive Real-Time Media over Wireless Networks",
"creators": [
{
"firstName": "Zaheduzzaman",
"lastName": "Sarker",
"creatorType": "author"
},
{
"firstName": "Xiaoqing",
"lastName": "Zhu",
"creatorType": "author"
},
{
"firstName": "Jian",
"lastName": "Fu",
"creatorType": "author"
}
],
"date": "2021-01",
"abstractNote": "The Real-time Transport Protocol (RTP) is a common transport choice for interactive multimedia communication applications. The performance of these applications typically depends on a well-functioning congestion control algorithm. To ensure a seamless and robust user experience, a well-designed RTP-based congestion control algorithm should work well across all access network types. This document describes test cases for evaluating performances of candidate congestion control algorithms over cellular and Wi-Fi networks.",
"institution": "Internet Engineering Task Force",
"itemID": "rfc8869",
"libraryCatalog": "IETF",
"reportNumber": "RFC 8869",
"reportType": "Request for Comments",
"url": "https://datatracker.ietf.org/doc/rfc8869/",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://datatracker.ietf.org/doc/html/draft-ietf-bmwg-evpntest-09",
"items": [
{
"itemType": "report",
"title": "Benchmarking Methodology for EVPN and PBB-EVPN",
"creators": [
{
"firstName": "sudhin",
"lastName": "jacob",
"creatorType": "author"
},
{
"firstName": "Kishore",
"lastName": "Tiruveedhula",
"creatorType": "author"
}
],
"date": "2021-06-18",
"abstractNote": "This document defines methodologies for benchmarking EVPN and PBB- EVPN performance. EVPN is defined in RFC 7432, and is being deployed in Service Provider networks. Specifically, this document defines the methodologies for benchmarking EVPN/PBB-EVPN convergence, data plane performance, and control plane performance.",
"institution": "Internet Engineering Task Force",
"itemID": "ietf-bmwg-evpntest-09",
"libraryCatalog": "IETF",
"reportNumber": "draft-ietf-bmwg-evpntest-09",
"reportType": "Internet Draft",
"url": "https://datatracker.ietf.org/doc/draft-ietf-bmwg-evpntest/09/",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [
{
"note": "<p>Work in Progress</p>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://datatracker.ietf.org/doc/draft-ietf-bmwg-evpntest/09/bibtex/",
"items": [
{
"itemType": "report",
"title": "Benchmarking Methodology for EVPN and PBB-EVPN",
"creators": [
{
"firstName": "sudhin",
"lastName": "jacob",
"creatorType": "author"
},
{
"firstName": "Kishore",
"lastName": "Tiruveedhula",
"creatorType": "author"
}
],
"date": "2021-06-18",
"abstractNote": "This document defines methodologies for benchmarking EVPN and PBB- EVPN performance. EVPN is defined in RFC 7432, and is being deployed in Service Provider networks. Specifically, this document defines the methodologies for benchmarking EVPN/PBB-EVPN convergence, data plane performance, and control plane performance.",
"institution": "Internet Engineering Task Force",
"itemID": "ietf-bmwg-evpntest-09",
"libraryCatalog": "IETF",
"reportNumber": "draft-ietf-bmwg-evpntest-09",
"reportType": "Internet Draft",
"url": "https://datatracker.ietf.org/doc/draft-ietf-bmwg-evpntest/",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [
{
"note": "<p>Work in Progress</p>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.rfc-editor.org/rfc/rfc1691.html",
"items": [
{
"itemType": "report",
"title": "The Document Architecture for the Cornell Digital Library",
"creators": [
{
"firstName": "William",
"lastName": "Turner",
"creatorType": "author"
}
],
"date": "1994-08",
"abstractNote": "This memo defines an architecture for the storage and retrieval of the digital representations for books, journals, photographic images, etc., which are collected in a large organized digital library. This memo provides information for the Internet community. This memo does not specify an Internet standard of any kind.",
"institution": "Internet Engineering Task Force",
"itemID": "rfc1691",
"libraryCatalog": "IETF",
"reportNumber": "RFC 1691",
"reportType": "Request for Comments",
"url": "https://datatracker.ietf.org/doc/rfc1691/",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.ietf.org/archive/id/draft-ietf-rift-rift-13.txt",
"items": [
{
"itemType": "report",
"title": "RIFT: Routing in Fat Trees",
"creators": [
{
"firstName": "Alankar",
"lastName": "Sharma",
"creatorType": "author"
},
{
"firstName": "Pascal",
"lastName": "Thubert",
"creatorType": "author"
},
{
"firstName": "Bruno",
"lastName": "Rijsman",
"creatorType": "author"
},
{
"firstName": "Dmitry",
"lastName": "Afanasiev",
"creatorType": "author"
}
],
"abstractNote": "This document defines a specialized, dynamic routing protocol for Clos and fat-tree network topologies optimized towards minimization of control plane state as well as configuration and operational complexity.",
"institution": "Internet Engineering Task Force",
"itemID": "ietf-rift-rift-13",
"libraryCatalog": "IETF",
"reportNumber": "draft-ietf-rift-rift-13",
"reportType": "Internet Draft",
"shortTitle": "RIFT",
"url": "https://datatracker.ietf.org/doc/draft-ietf-rift-rift/13/",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [
{
"note": "<p>Work in Progress</p>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://datatracker.ietf.org/doc/search/?name=tree&activedrafts=on&rfcs=on",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.rfc-editor.org/info/rfc616",
"items": [
{
"itemType": "report",
"title": "LATEST NETWORK MAPS",
"creators": [],
"date": "1973-02",
"institution": "Internet Engineering Task Force",
"itemID": "rfc616",
"libraryCatalog": "IETF",
"reportNumber": "RFC 616",
"reportType": "Request for Comments",
"url": "https://datatracker.ietf.org/doc/rfc616/",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100John West and Michael Berkowitz^https?://(www\.)alexanderstreetfunction detectWeb(doc, url) {
if ( url.indexOf("object.details.aspx") != -1 ) {
var zitemtype = doc.getElementById("ctl00_ctl00_MasterContentBody_ContentPlaceHolder1_txtZType").value;
switch (zitemtype.toLowerCase()) {
case "book":
return "book";
break;
case "chapter":
return "bookSection";
break;
case "journal":
return "journalArticle";
break;
case "manuscript":
return "manuscript";
break;
case "audio":
return "audioRecording";
break;
case "video":
return "videoRecording";
break;
case "issue":
return "journalArticle";
break;
case "article":
return "journalArticle";
break;
case "series":
return "interview";
break;
case "session":
return "interview";
break;
default:
return "document";
}
} else if (url.indexOf("results.aspx") != -1) {
return "multiple";
}
}
function scrape(doc, url) {
// set prefix for serverside control
var p = "ctl00_ctl00_MasterContentBody_ContentPlaceHolder1_txtZ";
// get values from hidden inputs
var ztype = GetItemType(doc.getElementById(p+"Type").value);
var ztitle = doc.getElementById(p+"Title").value;
var zbooktitle = doc.getElementById(p+"BookTitle").value;
var znotes = doc.getElementById(p+"Notes").value;
var zurl = doc.getElementById(p+"URL").value;
var zrights = doc.getElementById(p+"Rights").value;
var zseries = doc.getElementById(p+"Series").value;
var zvolume = doc.getElementById(p+"Volume").value;
var zissue = doc.getElementById(p+"Issue").value;
var zedition = doc.getElementById(p+"Edition").value;
var zplace = doc.getElementById(p+"Place").value;
var zpublisher = doc.getElementById(p+"Publisher").value;
var zpages = doc.getElementById(p+"Pages").value;
var zrepository = doc.getElementById(p+"Repository").value;
var zlabel = doc.getElementById(p+"Label").value;
var zrunningTime = doc.getElementById(p+"RunningTime").value;
var zlanguage = doc.getElementById(p+"Language").value;
var zauthor = doc.getElementById(p+"Author").value;
var zeditor = doc.getElementById(p+"Editor").value;
var ztranslator = doc.getElementById(p+"Translator").value;
var zinterviewee = doc.getElementById(p+"Interviewee").value;
var zinterviewer = doc.getElementById(p+"Interviewer").value;
var zrecipient = doc.getElementById(p+"Recipient").value;
var zdirector = doc.getElementById(p+"Director").value;
var zscriptwriter = doc.getElementById(p+"ScriptWriter").value;
var zproducer = doc.getElementById(p+"Producer").value;
var zcastMember = doc.getElementById(p+"CastMember").value;
var zperformer = doc.getElementById(p+"Performer").value;
var zcomposer = doc.getElementById(p+"Composer").value;
// create Zotero item
var newArticle = new Zotero.Item(ztype);
// populate Zotero item
newArticle.title = ztitle;
newArticle.bookTitle = zbooktitle;
newArticle.notes = znotes;
newArticle.url = zurl;
newArticle.place = zplace;
newArticle.publisher = zpublisher;
newArticle.pages = zpages;
newArticle.rights = zrights;
newArticle.series = zseries;
newArticle.volume = zvolume;
newArticle.issue = zissue;
newArticle.edition = zedition;
newArticle.repository = zrepository;
newArticle.label = zlabel;
newArticle.runningTime = zrunningTime;
newArticle.language = zlanguage;
newArticle.editor = zeditor;
newArticle.translator = ztranslator;
newArticle.interviewee = zinterviewee;
newArticle.interviewer = zinterviewer;
newArticle.recipient = zrecipient;
newArticle.director = zdirector;
newArticle.scriptwriter = zscriptwriter;
newArticle.producer = zproducer;
newArticle.castMember = zcastMember;
newArticle.performer = zperformer;
newArticle.composer = zcomposer;
var aus = zauthor.split(";");
for (var i=0; i< aus.length ; i++) {
newArticle.creators.push(Zotero.Utilities.cleanAuthor(aus[i], "author", true));
}
newArticle.attachments = [{url:doc.location.href, title:"Alexander Street Press Snapshot", mimeType:"text/html"}];
if (doc.evaluate('//a[contains(@href, "get.pdf")]', doc, null, XPathResult.ANY_TYPE, null).iterateNext()) {
var pdfurl = doc.evaluate('//a[contains(@href, "get.pdf")]', doc, null, XPathResult.ANY_TYPE, null).iterateNext().href;
newArticle.attachments.push({url:pdfurl, title:"Alexander Street Press PDF", mimeType:"application/pdf"});
} else if (doc.evaluate('//a[contains(@href, "get.jpg")]', doc, null, XPathResult.ANY_TYPE, null).iterateNext()) {
var imgurl = doc.evaluate('//a[contains(@href, "get.jpg")]', doc, null, XPathResult.ANY_TYPE, null).iterateNext().href.replace(/.{2}$/, "01");
newArticle.attachments.push({url:imgurl, title:"Alexander Street Press Pg 1", mimeType:"image/jpg"});
newArticle.notes = [{note:"Further page images can be found by following the URL of the 'Alexander Street Press Pg 1' attachment and iterating the final digits of the URL"}];
}
// save Zotero item
newArticle.complete();
}
function GetItemType(zitemtype) {
switch (zitemtype.toLowerCase()) {
case "book":
return "book";
break;
case "chapter":
return "bookSection";
break;
case "journal":
return "journalArticle";
break;
case "manuscript":
return "manuscript";
break;
case "audio":
return "audioRecording";
break;
case "video":
return "videoRecording";
break;
case "issue":
return "journalArticle";
break;
case "article":
return "journalArticle";
break;
case "series":
return "interview";
break;
case "session":
return "interview";
break;
default:
return "document";
}
}
function doWeb(doc, url) {
var articles = new Array();
if (detectWeb(doc, url) == "multiple") {
var items = new Object();
var xpath = '//tbody/tr/td[2][@class="data"]/a[1]';
var titles = doc.evaluate(xpath, doc, null, XPathResult.ANY_TYPE, null);
var next_title;
while (next_title = titles.iterateNext()) {
items[next_title.href] = next_title.textContent;
}
Zotero.selectItems(items, function (items) {
if (!items) return;
ZU.processDocuments(Object.keys(items), scrape);
});
} else {
scrape(doc, url);
}
}/** BEGIN TEST CASES **/
var testCases = []
/** END TEST CASES **/
100Michael Berkowitz^https?://archivesic\.ccsd\.cnrs\.fr//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2018 Sylvain Machefert
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (doc.title.toLowerCase().match(/:: search|:: recherche/)) {
return "multiple";
}
else if (url.match(/sic_\d+|tel-\d+/)) {
return "journalArticle";
}
return false;
}
var metaTags = {
"DC.relation": "url",
"DC.date": "date",
"DC.description": "abstractNote",
"DC.creator": "creators",
"DC.title": "title",
};
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
var items = Zotero.Utilities.getItemArray(doc, doc, /sic_\d+|tel-\d+/);
Zotero.selectItems(items, function (items) {
if (!items) return;
ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc);
}
}
function scrape(doc) {
var xpath = '//meta[@name]';
var data = {};
var metas = doc.evaluate(xpath, doc, null, XPathResult.ANY_TYPE, null);
var meta;
meta = metas.iterateNext();
while (meta) {
if (data[meta.name]) {
data[meta.name] = data[meta.name] + ";" + meta.content;
}
else {
data[meta.name] = meta.content;
}
meta = metas.iterateNext();
}
var item = new Zotero.Item("journalArticle");
for (var tag in metaTags) {
if (tag == "DC.creator") {
var authors = data['DC.creator'].split(";");
for (var i = 0; i < authors.length; i++) {
var aut = authors[i];
aut = aut.replace(/^([^,]+),\s+(.*)$/, "$2 $1");
item.creators.push(Zotero.Utilities.cleanAuthor(aut, "author"));
}
}
else {
item[metaTags[tag]] = data[tag];
}
}
var pdfurl = data.citation_pdf_url;
if (pdfurl) {
item.attachments = [
{ url: item.url, title: "AOSIC Snapshot", mimeType: "text/html" },
{ url: pdfurl, title: "AOSIC Full Text PDF", mimeType: "application/pdf" }
];
}
item.complete();
}/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://archivesic.ccsd.cnrs.fr/sic_00665224/fr/",
"items": [
{
"itemType": "journalArticle",
"title": "comprendre une organisation par l'analyse de ses documents",
"creators": [
{
"firstName": "Brigitte",
"lastName": "Guyot",
"creatorType": "author"
}
],
"date": "2011",
"abstractNote": "s'appuyer sur des observables que sont les documents d'entreprise donne à voir à la fois une dynamique de formalisation des écrits professionnels, une activité particulière, celle d'éditorialisation, ainsi que des traces d'intervention institutionnelle ; tout cela fait du document un miroir et un porteur d'ordre.",
"libraryCatalog": "Archive Ouverte en Sciences de l'Information et de la Communication (AOSIC)",
"attachments": [
{
"title": "AOSIC Snapshot",
"mimeType": "text/html"
},
{
"title": "AOSIC Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://tel.archives-ouvertes.fr/tel-00483442/fr/",
"items": [
{
"itemType": "journalArticle",
"title": "Valorisation d'un patrimoine documentaire industriel et évolution vers un système de gestion des connaissances orienté métiers",
"creators": [
{
"firstName": "Caroline",
"lastName": "Djambian",
"creatorType": "author"
}
],
"date": "2010/04/14",
"abstractNote": "Le patrimoine documentaire des entreprises s'est souvent accumulé sans que ces dernières puissent s'adapter au rythme des évolutions des technologies de l'information. La mémoire collective qui ne cesse d'être produite voit sa masse croître et est devenue éparse et hétérogène. Comme nombre d'entreprises, des problématiques transverses imposent aujourd'hui à la Division Ingénierie Nucléaire (DIN) d'EDF d'être capable de mobiliser ses connaissances de façon opérationnelle. Mais la valorisation de son patrimoine informationnel dépasse largement les aspects techniques pour prendre en compte l'organisation dans sa globalité. Ce sont en effet les métiers cœurs de l'entreprise qui sont le point de départ de notre réflexion. Dans ce contexte d'ingénierie c'est par la documentation que les connaissances techniques transitent et sont exprimées par des concepts propres aux métiers. La terminologie métiers est la clé permettant de valoriser les connaissances et de mieux gérer le patrimoine de la DIN. Elle nous permet d'aller vers une représentation explicite, au sein d'une base de connaissances centrée sur le \" sens métier \" de l'organisation. Notre approche résolument empirique et qualitative aboutit à une méthode de construction d'une base de connaissances métiers appliquée à un domaine délimité de la Division Ingénierie Nucléaire d'EDF.",
"libraryCatalog": "Archive Ouverte en Sciences de l'Information et de la Communication (AOSIC)",
"attachments": [
{
"title": "AOSIC Snapshot",
"mimeType": "text/html"
},
{
"title": "AOSIC Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Ramesh Srigiriraju^https?://ask\.bibsys\.no/ask/actionfunction detectWeb(doc, url) {
var multireg=new RegExp("^https?://ask\.bibsys\.no/ask/action/result");
if (multireg.test(url))
return "multiple";
var singlereg=new RegExp("^https?://ask\.bibsys\.no/ask/action/show");
if (singlereg.test(url))
return "book";
}
function doWeb(doc, url) {
var multireg=new RegExp("https?://ask\.bibsys\.no/ask/action/result");
if (multireg.test(url)) {
var titlpath='//tr/td[@width="49%"][@align="left"][@valign="top"]/a/text()';
var titles=doc.evaluate(titlpath, doc, null, XPathResult.ANY_TYPE, null);
var codepath='//tr/td/input[@type="checkbox"][@name="valg"]/@value';
var codes=doc.evaluate(codepath, doc, null, XPathResult.ANY_TYPE, null);
var items=new Array();
var title;
titles.iterateNext();
while (title=titles.iterateNext())
items[codes.iterateNext().nodeValue]=title.nodeValue;
Zotero.selectItems(items, function (items) {
if (!items) return;
var string="http://ask.bibsys.no/ask/action/result?control=ctr_top";
for (var codes in items)
string+="&valg="+codes;
string+="&control=ctr_bottom&eksportFormat=refmanager&eksportEpostAdresse=&eksportEpostFormat=fortekst&cmd=sendtil";
Zotero.Utilities.HTTP.doGet(string, function(text) {
var trans=Zotero.loadTranslator("import");
trans.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7");
trans.setString(text);
trans.setHandler("itemDone", function(obj, item) {
item.title = item.title.replace(/\s\s+/, " ").replace(/\s:/, ":");
item.complete();
});
trans.translate();
});
});
return;
}
var singlereg=new RegExp("http://ask\.bibsys\.no/ask/action/show");
if (singlereg.test(url)) {
var urlstring="http://ask.bibsys.no/ask/action/show";
var data="visningsformat=ris&eksportFormat=refmanager&eksportEpostAdresse=&eksportEpostFormat=fortekst&cmd=sendtil";
Zotero.Utilities.HTTP.doPost(urlstring, data, function(text) {
//Z.debug(text)
var trans=Zotero.loadTranslator("import");
trans.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7");
trans.setString(text);
trans.setHandler("itemDone", function(obj, item) {
item.title = item.title.replace(/\s\s+/, " ").replace(/\s:/, ":");
item.complete();
});
trans.translate();
});
}
}/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://ask.bibsys.no/ask/action/result?cmd=&kilde=biblio&q=thelen",
"items": "multiple"
},
{
"type": "web",
"url": "http://ask.bibsys.no/ask/action/show?pid=042152526&kid=biblio",
"items": [
{
"itemType": "book",
"creators": [
{
"lastName": "Thelen",
"firstName": "Kathleen A.",
"creatorType": "author"
}
],
"notes": [
{
"note": "<p>Bibliografi: s. 297-322</p>"
}
],
"tags": [],
"seeAlso": [],
"attachments": [],
"title": "How institutions evolve: the political economy of skills in Germany, Britain, the United States, and Japan",
"date": "2004",
"numPages": "XV, 333 s.",
"publisher": "Cambridge University Press",
"place": "Cambridge",
"ISBN": "0-521-83768-5",
"libraryCatalog": "BIBSYS",
"shortTitle": "How institutions evolve"
}
]
}
]
/** END TEST CASES **/
100Adam Crymble^https?://braceroarchive\.orgfunction detectWeb(doc, url) {
if (doc.title.match("Item")) {
return "book";
} else if (doc.evaluate('//div[@class="item-meta"]/h2/a', doc, null, XPathResult.ANY_TYPE, null).iterateNext()) {
return "multiple";
}
}
//Bracero History Archive translator; Code by Adam Crymble
function associateData (newItem, dataTags, field, zoteroField) {
if (dataTags[field]) {
newItem[zoteroField] = dataTags[field];
}
}
function scrape(doc, url) {
var namespace = doc.documentElement.namespaceURI;
var nsResolver = namespace ? function(prefix) {
if (prefix == 'x') return namespace; else return null;
} : null;
var dataTags = new Object();
var fieldTitle;
var contents1;
var headers = doc.evaluate('//h3', doc, nsResolver, XPathResult.ANY_TYPE, null);
var contents = doc.evaluate('//div[@class="field"]/div', doc, nsResolver, XPathResult.ANY_TYPE, null);
var xPathCount = doc.evaluate('count (//div[@class="field"]/div)', doc, nsResolver, XPathResult.ANY_TYPE, null);
for (i=0; i<xPathCount.numberValue -1; i++) {
fieldTitle = headers.iterateNext().textContent.replace(/\s+/g, '');
contents1 = contents.iterateNext().textContent.replace(/^\s*|\s*$/g, '');
if (contents1.match("Empty")) {
contents1 = '';
}
dataTags[fieldTitle] = Zotero.Utilities.cleanTags(contents1);
}
//media type?
if (dataTags["TypeName"]) {
if (dataTags["TypeName"].match("Oral History")) {
Zotero.debug(doc.title);
var newItem = new Zotero.Item("audioRecording");
} else {
var newItem = new Zotero.Item("book");
}
} else {
var newItem = new Zotero.Item("book");
}
//creators
if (dataTags["Interviewee"] && dataTags["Interviewee"] != '') {
if (dataTags["Interviewee"].match(", ")) {
var authors = dataTags["Interviewee"].split(", ");
authors = authors[1] + ' ' + authors[0];
newItem.creators.push(Zotero.Utilities.cleanAuthor(authors, "interviewee"));
} else {
newItem.creators.push({lastName: dataTags["Interviewee"], creatorType: "interviewee"});
}
}
if (dataTags["Interviewer"] && dataTags["Interviewer"] != '') {
if (dataTags["Interviewer"].match(", ")) {
var authors = dataTags["Interviewer"].split(", ");
authors = authors[1] + ' ' + authors[0];
newItem.creators.push(Zotero.Utilities.cleanAuthor(authors, "interviewer"));
} else {
newItem.creators.push({lastName: dataTags["Interviewee"], creatorType: "interviewer"});
}
}
if (dataTags["Creator"] && dataTags["Creator"] != '') {
if (dataTags["Creator"].match(", ")) {
var authors = dataTags["Creator"].split(", ");
authors = authors[1] + ' ' + authors[0];
newItem.creators.push(Zotero.Utilities.cleanAuthor(authors, "creator"));
} else {
newItem.creators.push(Zotero.Utilities.cleanAuthor(dataTags["Creator"], "creator"));
}
}
if (dataTags["AdditionalCreator"] && dataTags["AdditionalCreator"] != '') {
if (dataTags["AdditionalCreator"].match(", ")) {
var authors = dataTags["AdditionalCreator"].split(", ");
authors = authors[1] + ' ' + authors[0];
newItem.creators.push(Zotero.Utilities.cleanAuthor(authors, "creator"));
} else {
newItem.creators.push({lastName: dataTags["AdditionalCreator"], creatorType: "creator"});
}
}
//associate
associateData (newItem, dataTags, "Description", "abstractNote");
associateData (newItem, dataTags, "Date", "date");
associateData (newItem, dataTags, "Publisher", "publisher");
associateData (newItem, dataTags, "Source", "place");
associateData (newItem, dataTags, "Location", "place");
associateData (newItem, dataTags, "RightsHolder", "rights");
associateData (newItem, dataTags, "Language", "lang");
associateData (newItem, dataTags, "Title:", "title");
associateData (newItem, dataTags, "FileNameIdentifier", "callNumber");
//tags
var tags1;
var tagsContent = new Array();
if (doc.evaluate('//li[@class="tag"]/a', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) {
var xPathTags = doc.evaluate('//li[@class="tag"]/a', doc, nsResolver, XPathResult.ANY_TYPE, null);
while (tags1 = xPathTags.iterateNext()) {
tagsContent.push(tags1.textContent);
}
}
for (var i = 0; i < tagsContent.length; i++) {
newItem.tags[i] = tagsContent[i];
}
//title
newItem.title = doc.evaluate('//h1', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().textContent;
newItem.url = doc.location.href;
newItem.complete();
}
function doWeb(doc, url) {
var namespace = doc.documentElement.namespaceURI;
var nsResolver = namespace ? function(prefix) {
if (prefix == 'x') return namespace; else return null;
} : null;
var fullRecord = "view=full";
var extraChar = "?";
if (detectWeb(doc, url) == "multiple") {
var items = new Object();
var titles = doc.evaluate('//div[@class="item-meta"]/h2/a', doc, nsResolver, XPathResult.ANY_TYPE, null);
var next_title;
while (next_title = titles.iterateNext()) {
items[next_title.href + extraChar + fullRecord] = next_title.textContent;
}
Zotero.selectItems(items, function (items) {
if (!items) return;
ZU.processDocuments(Object.keys(items), scrape);
});
} else {
scrape(doc, url);
}
}/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://braceroarchive.org/items/show/3229",
"items": [
{
"itemType": "book",
"creators": [
{
"firstName": "Mario",
"lastName": "Perez",
"creatorType": "creator"
}
],
"notes": [],
"tags": [],
"seeAlso": [],
"attachments": [],
"title": "\"The lemons are Freezing!\"",
"url": "http://braceroarchive.org/items/show/3229",
"libraryCatalog": "Bracero History Archive",
"accessDate": "CURRENT_TIMESTAMP"
}
]
},
{
"type": "web",
"url": "http://braceroarchive.org/items/browse?search=juarez&submit_search=Search",
"items": "multiple"
}
]
/** END TEST CASES **/
100Adam Crymble^https?://www\.canada\.comfunction detectWeb(doc, url) {
if (doc.location.href.match("story")) {
return "newspaperArticle";
} else if (doc.location.href.match("search")) {
return "multiple";
}
}
function scrape(doc, url) {
var namespace = doc.documentElement.namespaceURI;
var nsResolver = namespace ? function(prefix) {
if (prefix == 'x') return namespace; else return null;
} : null;
var dataTags = new Object();
var tagsContent = new Array();
var fieldTitle;
var newItem = new Zotero.Item("newspaperArticle");
newItem.title = doc.title;
if (doc.evaluate('//div[@class="storyheader"]/h4', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) {
newItem.abstractNote = doc.evaluate('//div[@class="storyheader"]/h4', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().textContent;
} else if (doc.evaluate('//div[@class="storyheader"]/h2', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) {
newItem.abstracteNote = doc.evaluate('//div[@class="storyheader"]/h2', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().textContent;
}
if (doc.evaluate('//meta[@name="Author"]/@content', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) {
var author = doc.evaluate('//meta[@name="Author"]/@content', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().textContent;
if (author.match(/\n/)) {
author1 = author.split(/\n/);
if (author1[0].match(/ and /)) {
author2 = author1[0].split(/ and /);
for (var i in author2) {
newItem.creators.push(Zotero.Utilities.cleanAuthor(author2[i], "author"));
}
} else {
newItem.creators.push(Zotero.Utilities.cleanAuthor(author1[0], "author"));
}
} else {
newItem.creators.push(Zotero.Utilities.cleanAuthor(author, "author"));
}
}
if (doc.evaluate('//meta[@name="PubDate"]/@content', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) {
var date1 = doc.evaluate('//meta[@name="PubDate"]/@content', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().textContent.replace(/^\s*|\s*$/g, '');
if (date1) {
newItem.date = date1;
}
}
if (doc.evaluate('//ul[@class="home"]/li/a/span', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) {
var pubTitle = doc.evaluate('//ul[@class="home"]/li/a/span', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().textContent;
if (pubTitle.match("Home")) {
newItem.publicationTitle = pubTitle.substr(0, pubTitle.length-5);
} else {
newItem.publicationTitle = pubTitle;
}
} else {
newItem.publicationTitle = "Canada.com";
}
newItem.url = doc.location.href;
newItem.complete();
}
function doWeb(doc, url) {
var namespace = doc.documentElement.namespaceURI;
var nsResolver = namespace ? function(prefix) {
if (prefix == 'x') return namespace; else return null;
} : null;
var articles = new Array();
if (detectWeb(doc, url) == "multiple") {
var items = new Object();
var next_title;
if (doc.evaluate('//div[@class="even"]/p/a', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) {
Zotero.debug("AAAAAA");
var titles0 = doc.evaluate('//div[@class="even"]/p/a', doc, nsResolver, XPathResult.ANY_TYPE, null);
while (next_title = titles0.iterateNext()) {
if (next_title.href.match("story") && next_title.href.match("canada.com")) {
items[next_title.href] = next_title.textContent;
}
}
}
if (doc.evaluate('//h1/a', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) {
Zotero.debug("new site?");
var titles0 = doc.evaluate('//h1/a', doc, nsResolver, XPathResult.ANY_TYPE, null);
while (next_title = titles0.iterateNext()) {
if (next_title.href.match("story") && next_title.href.match("canada.com")) {
items[next_title.href] = next_title.textContent;
}
}
}
if (doc.evaluate('//div[@class="odd"]/p/a', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) {
Zotero.debug("BBBBB");
var titles1 = doc.evaluate('//div[@class="odd"]/p/a', doc, nsResolver, XPathResult.ANY_TYPE, null);
while (next_title = titles1.iterateNext()) {
if (next_title.href.match("story") && next_title.href.match("canada.com")) {
items[next_title.href] = next_title.textContent;
}
}
}
if (doc.evaluate('//p/b/a', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) {
Zotero.debug("CCCCC");
var titles2 = doc.evaluate('//p/b/a', doc, nsResolver, XPathResult.ANY_TYPE, null);
while (next_title = titles2.iterateNext()) {
if (next_title.href.match("story") && next_title.href.match("canada.com")) {
items[next_title.href] = next_title.textContent;
}
}
}
if (doc.evaluate('//div[@class="name"]/a', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) {
Zotero.debug("DDDD");
var titles3 = doc.evaluate('//div[@class="name"]/a', doc, nsResolver, XPathResult.ANY_TYPE, null);
while (next_title = titles3.iterateNext()) {
if (next_title.href.match("story") && next_title.href.match("canada.com")) {
items[next_title.href] = next_title.textContent;
}
}
}
Zotero.selectItems(items, function (items) {
ZU.processDocuments(Object.keys(items), scrape);
});
} else {
scrape(doc, url);
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://www.canada.com/search/search.html?stype=si&q=argentina&x=0&y=0&radio_btns=canada.com",
"items": "multiple"
}
]
/** END TEST CASES **/
100Adam Crymble^https?://link\.library\.utoronto\.cafunction detectWeb(doc, url) {
if (doc.location.href.match("search_results")) {
return "multiple";
} else if (doc.location.href.match("item_record")) {
return "book";
}
}
//Champlain Collection translator. Code by Adam Crymble
function associateData (newItem, dataTags, field, zoteroField) {
if (dataTags[field]) {
newItem[zoteroField] = dataTags[field];
}
}
function scrape(doc, url) {
var namespace = doc.documentElement.namespaceURI;
var nsResolver = namespace ? function(prefix) {
if (prefix == 'x') return namespace; else return null;
} : null;
var dataTags = new Object();
var tagsContent = new Array();
var fieldTitle;
var newItem = new Zotero.Item("book");
var headers = doc.evaluate('//table[1]/tbody/tr/td[1]/b/font', doc, nsResolver, XPathResult.ANY_TYPE, null);
var contents = doc.evaluate('//td/table[1]/tbody/tr/td[2]/font', doc, nsResolver, XPathResult.ANY_TYPE, null);
var xPathCount = doc.evaluate('count (//table[1]/tbody/tr/td[1]/b/font)', doc, nsResolver, XPathResult.ANY_TYPE, null);
for (i=0; i<xPathCount.numberValue; i++) {
fieldTitle = headers.iterateNext().textContent.replace(/\s+/g, '');
if (fieldTitle == "Auteur:" ) {
fieldTitle = "Author:";
} else if (fieldTitle == "Titre:") {
fieldTitle = "Title:";
} else if (fieldTitle == "Description:") {
fieldTitle = "Extent:";
} else if (fieldTitle == "Éditeur:") {
fieldTitle = "Published:";
} else if (fieldTitle == "Sujet:") {
fieldTitle = "Subjects:";
}
dataTags[fieldTitle] = (contents.iterateNext().textContent.replace(/^\s*|\s*$/g, ''));
}
//author
var multiAuthors = 0;
if (dataTags["Author:"]) {
var author = dataTags["Author:"];
if (author.match("; ")) {
var authors = author.split("; ");
multiAuthors = 1;
}
if (multiAuthors == 1) {
for (var i = 0; i < authors.length; i++) {
if (authors[i].match(", ")) {
var author1 = authors[i].split(", ");
author = author1[1] + " " + author1[0];
newItem.creators.push(Zotero.Utilities.cleanAuthor(author, "author"));
} else {
newItem.creators.push({lastName: author, creatorType: "creator"});
}
}
} else {
if (author.match(", ")) {
var author1 = author.split(", ");
author = author1[1] + " " + author1[0];
newItem.creators.push(Zotero.Utilities.cleanAuthor(author, "author"));
} else {
newItem.creators.push({lastName: author, creatorType: "creator"});
}
}
}
if (dataTags["Published:"]) {
if (dataTags["Published:"].match(": ")) {
var place1 = dataTags["Published:"].indexOf(": ");
newItem.place = dataTags["Published:"].substr(0, place1);
var publisher1 = dataTags["Published:"].substr(place1 + 2);
if (publisher1.match(", ")) {
var date1 = publisher1.lastIndexOf(", ");
newItem.date = publisher1.substr(date1 +2);
newItem.publisher = publisher1.substr(0, date1);
} else {
newItem.publisher = publisher1;
}
} else {
newItem.publisher = publisher1;
}
}
//for Tags
if (dataTags["Subjects:"]) {
tagsContent = dataTags["Subjects:"].split(/\n/);
}
var j = 0;
for (var i = 0; i < tagsContent.length; i++) {
if (tagsContent[i].match(/\w/)) {
newItem.tags[j] = tagsContent[i].replace(/^\s*|\s+$/g, '');
j++;
}
}
associateData (newItem, dataTags, "Extent:", "pages");
associateData (newItem, dataTags, "ID:", "callNumber");
associateData (newItem, dataTags, "Notes:", "abstractNote");
newItem.title = doc.title;
if (dataTags["Title:"]) {
associateData (newItem, dataTags, "Title:", "title");
} else {
newItem.title = "No Title Found: Champlain Collection";
}
newItem.url = doc.location.href;
newItem.complete();
}
function doWeb(doc, url) {
var namespace = doc.documentElement.namespaceURI;
var nsResolver = namespace ? function(prefix) {
if (prefix == 'x') return namespace; else return null;
} : null;
var articles = new Array();
if (detectWeb(doc, url) == "multiple") {
var items = new Object();
var titles = doc.evaluate('//tr[1]/td[2]/font/a', doc, nsResolver, XPathResult.ANY_TYPE, null);
var next_title;
while (next_title = titles.iterateNext()) {
items[next_title.href] = next_title.textContent;
}
Zotero.selectItems(items, function (items) {
if (!items) return;
ZU.processDocuments(Object.keys(items), scrape);
});
for (var i in items) {
articles.push(i);
}
} else {
scrape(doc, url);
}
}/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://champlain.library.utoronto.ca/search_results.cfm?lang=eng&query=test&searchtype=Fulltext&limit=All",
"items": "multiple"
},
{
"type": "web",
"url": "https://champlain.library.utoronto.ca/item_record.cfm?Idno=9_96862&lang=eng&query=test&searchtype=Fulltext&startrow=1&Limit=All",
"items": [
{
"itemType": "book",
"title": "An historical journal of the campaigns in North America for the years 1757, 1758, 1759 and 1760, Vol. I",
"creators": [
{
"firstName": "John",
"lastName": "Knox",
"creatorType": "author"
},
{
"firstName": "Arthur G. (Arthur George)",
"lastName": "Doughty",
"creatorType": "author"
}
],
"date": "1914-16.",
"abstractNote": "• Original issued in series: The Publications of the Champlain Society. General series ; 8.\n \n • Title from title screen.\n \n • Includes bibliographical references and an index.",
"callNumber": "9_96862",
"libraryCatalog": "Champlain Society - Collection",
"place": "Toronto",
"publisher": "Champlain Society",
"url": "https://champlain.library.utoronto.ca/item_record.cfm?Idno=9_96862&lang=eng&query=test&searchtype=Fulltext&startrow=1&Limit=All",
"attachments": [],
"tags": [
"Amherst, Jeffrey Amherst, Baron, 1717-1797.",
"Amherst, William, 1732-1781.",
"Canada -- History -- Seven Years' War, 1755-1763.",
"Doughty, Arthur G. (Arthur George), Sir, 1860-1936.",
"Johnson, William, Sir, 1715-1774.",
"Murray, James, 1721-1794.",
"United States -- History -- French and Indian War, 1755-1763 -- Bibliography.",
"United States -- History -- French and Indian War, 1755-1763 -- Registers.",
"United States -- History -- French and Indian War, 1755-1763."
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Adam Crymble^https?://collections\.civilization\.cafunction detectWeb(doc, url) {
if (doc.evaluate('//tr/td[2]/a/font', doc, null, XPathResult.ANY_TYPE, null).iterateNext()) {
return "multiple";
} else if (doc.location.href.match("Display.php")) {
return "artwork";
}
}
//Civilization.ca translator. Code by Adam Crymble.
function associateData (newItem, dataTags, field, zoteroField) {
if (dataTags[field]) {
newItem[zoteroField] = dataTags[field];
}
}
function scrape(doc, url) {
var dataTags = new Object();
var tagsContent = new Array();
var fieldTitle;
var newItem = new Zotero.Item("artwork");
var headers = doc.evaluate('//table[2]/tbody/tr/td[1]/span[@class="textb"]/b', doc, null, XPathResult.ANY_TYPE, null);
var contents = doc.evaluate('//tr[2]/td/table[2]/tbody/tr/td[2]', doc, null, XPathResult.ANY_TYPE, null);
var xPathCount = doc.evaluate('count (//table[2]/tbody/tr/td[1]/span[@class="textb"]/b)', doc, null, XPathResult.ANY_TYPE, null);
newItem.title = contents.iterateNext().textContent.replace(/^\s*|\s+$/g, '');
var dump = contents.iterateNext();
for (i=0; i<xPathCount.numberValue; i++) {
fieldTitle = headers.iterateNext().textContent.replace(/\s+/g, '');
if (fieldTitle == "Artist/Maker/Manufacturer") {
fieldTitle = " Artiste/Artisan/Fabricant";
} else if (fieldTitle == "Autreaffiliationculturelle") {
fieldTitle = "OtherCulturalAffiliation";
}
dataTags[fieldTitle] = Zotero.Utilities.cleanTags(contents.iterateNext().textContent.replace(/^\s*|\s*$/g, ''));
}
if (dataTags["Artist/Maker/Manufacturer"]) {
var author = dataTags["Artist/Maker/Manufacturer"];
if (author.match(" and ")) {
var authors = author.split(" and ");
for (var i in authors) {
newItem.creators.push(Zotero.Utilities.cleanAuthor(authors[i], "author"));
}
} else {
newItem.creators.push({lastName: author, creatorType: "creator"});
}
}
if (dataTags["OtherCulturalAffiliation"]) {
tagsContent = dataTags["OtherCulturalAffiliation"].split(/\n/);
for (var i = 0; i < tagsContent.length; i++) {
newItem.tags[i] = tagsContent[i];
}
}
if (dataTags["Collection"]) {
newItem.extra = "Collection: " + dataTags['Collection'];
}
associateData (newItem, dataTags, "ArtifactNumber", "callNumber");
associateData (newItem, dataTags, "Museum", "repository");
associateData (newItem, dataTags, "Measurements", "artworkSize");
associateData (newItem, dataTags, "BeginDate", "date");
associateData (newItem, dataTags, "EndDate", "date");
associateData (newItem, dataTags, "AdditionalInformation", "abstractNote");
associateData (newItem, dataTags, "Numérod'artefact", "callNumber");
associateData (newItem, dataTags, "Musée", "repository");
associateData (newItem, dataTags, "Mesures", "artworkSize");
associateData (newItem, dataTags, "Datededébut", "date");
associateData (newItem, dataTags, "Datedefin", "date");
associateData (newItem, dataTags, "Informationsupplémentaire", "abstractNote");
newItem.url = doc.location.href;
newItem.complete();
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
var items = new Object();
var titles = doc.evaluate('//tr/td[2]/a', doc, null, XPathResult.ANY_TYPE, null);
var next_title;
while (next_title = titles.iterateNext()) {
if (next_title.textContent.match(/\w/)) {
items[next_title.href] = next_title.textContent;
}
}
Zotero.selectItems(items, function (items) {
if (!items) return;
ZU.processDocuments(Object.keys(items), scrape);
});
} else {
scrape(doc, url);
}
}/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://collections.civilization.ca/public/pages/cmccpublic/emupublic/Display.php?irn=23462&QueryPage=%2Fpublic%2Fpages%2Fcmccpublic%2Femupublic%2FQuery.php&lang=0",
"items": [
{
"itemType": "artwork",
"creators": [],
"notes": [],
"tags": [
"Central Eskimo",
"Central Inuit"
],
"seeAlso": [],
"attachments": [],
"title": "dogsled flooring",
"extra": "Collection: CCOP Gateway Ethnographic",
"callNumber": "IV-C-1866",
"artworkSize": "Height 0.9 cm, Length 14.8 cm, Width 3.4 cm",
"url": "http://collections.civilization.ca/public/pages/cmccpublic/emupublic/Display.php?irn=23462&QueryPage=%2Fpublic%2Fpages%2Fcmccpublic%2Femupublic%2FQuery.php&lang=0",
"libraryCatalog": "CMC",
"accessDate": "CURRENT_TIMESTAMP"
}
]
}
]
/** END TEST CASES **/
250Simon Kornblith^https?://[^/]+/itw/infomark/function detectWeb(doc, url) {
// ensure that there is an InfoTrac logo
if (!doc.evaluate('//img[substring(@alt, 1, 8) = "InfoTrac"]', doc, null, XPathResult.ANY_TYPE, null).iterateNext()) return false;
if (doc.title.substring(0, 8) == "Article ") {
if (ZU.xpathText(doc, '//td//img[contains(@src, "ncnp_logo.gif")]/@title')) return "newspaperArticle";
var genre = doc.evaluate('//comment()[substring(., 1, 6) = " Genre"]', doc, null, XPathResult.ANY_TYPE, null).iterateNext();
if (genre) {
var value = Zotero.Utilities.trimInternal(genre.nodeValue.substr(7));
if (value == "article") {
return "journalArticle";
} else if (value == "book") {
return "book";
} else if (value == "dissertation") {
return "thesis";
} else if (value == "bookitem") {
return "bookSection";
}
}
return "magazineArticle";
} else if (doc.title.substring(0, 10) == "Citations ") {
return "multiple";
}
}
function scrape(doc, url){
var newItem = new Zotero.Item();
var xpath = '/html/body//comment()';
var elmts = doc.evaluate(xpath, doc, null, XPathResult.ANY_TYPE, null);
var citation = ZU.xpath(doc, '//p/table/tbody//td/table/tbody[not(./script)]');
newItem.title = ZU.xpathText(citation, './/font/b');
newItem.itemType = "newspaperArticle";
var author = ZU.xpathText(citation, './/td/i');
if (author) newItem.creators.push(ZU.cleanAuthor(author, "author`"));
var date = ZU.xpathText(citation, './/td/text()');
if (date) date = date.match(/[A-Z][a-z]+\s\d+,\s\d{4}/);
if (date) newItem.date = date[0];
var pdfurl = ZU.xpathText(doc, '//blockquote/a[contains(@href, "!pdf")][1]/@href');
if (pdfurl){
newItem.attachments.push({url: pdfurl, title: "Infotrac Full Text PDF", mimeType: "application/pdf"})
}
newItem.attachments.push({document: doc, title: "Infotrac Snapshot", mimeType: "text/html"});
while (elmt = elmts.iterateNext()) {
var colon = elmt.nodeValue.indexOf(":");
var field = elmt.nodeValue.substring(1, colon).toLowerCase();
var value = elmt.nodeValue.substring(colon+1, elmt.nodeValue.length-1);
if (field == "journal") {
newItem.publicationTitle = value;
}
}
if (newItem.publicationTitle.search(/\(.+\)/)){
newItem.place = newItem.publicationTitle.match(/\((.+)\)/)[1];
newItem.publicationTitle = newItem.publicationTitle.replace(/\(.+\).*/, "");
}
newItem.complete();
}
function extractCitation(url, elmts, title, doc) {
var newItem = new Zotero.Item();
newItem.url = url;
if (title) {
newItem.title = Zotero.Utilities.superCleanString(title);
}
newItem.title = ZU.xpathText(citation, './/font/b');
newItem.itemType = "newspaperArticle";
var date = ZU.xpathText(citation, './/td/text()');
if (date) date = date.match(/[A-Z][a-z]+\s\d+,\s\d{4}/);
if (date) newItem.date = date[0];
while (elmt = elmts.iterateNext()) {
var colon = elmt.nodeValue.indexOf(":");
var field = elmt.nodeValue.substring(1, colon).toLowerCase();
var value = elmt.nodeValue.substring(colon+1, elmt.nodeValue.length-1);
if (field == "title") {
newItem.title = Zotero.Utilities.superCleanString(value);
} else if (field == "journal") {
newItem.publicationTitle = value;
} else if (field == "pi") {
parts = value.split(" ");
var date = "";
var field = null;
for (j in parts) {
firstChar = parts[j].substring(0, 1);
if (firstChar == "v") {
newItem.itemType = "journalArticle";
field = "volume";
} else if (firstChar == "i") {
field = "issue";
} else if (firstChar == "p") {
field = "pages";
var pagesRegexp = /p(\w+)\((\w+)\)/; // weird looking page range
var match = pagesRegexp.exec(parts[j]);
if (match) { // yup, it's weird
var finalPage = parseInt(match[1])+parseInt(match[2])
parts[j] = "p"+match[1]+"-"+finalPage.toString();
} else if (!newItem.itemType) { // no, it's normal
// check to see if it's numeric, bc newspaper pages aren't
var justPageNumber = parts[j].substr(1);
if (parseInt(justPageNumber).toString() != justPageNumber) {
newItem.itemType = "newspaperArticle";
}
}
} else if (!field) { // date parts at the beginning, before
// anything else
date += " "+parts[j];
}
if (field) {
isDate = false;
if (parts[j] != "pNA") { // make sure it's not an invalid
// page number
// chop of letter
newItem[field] = parts[j].substring(1);
} else if (!newItem.itemType) { // only newspapers are missing
// page numbers on infotrac
newItem.itemType = "newspaperArticle";
}
}
}
// Set type
if (!newItem.itemType) {
newItem.itemType = "magazineArticle";
}
if (date != "") {
newItem.date = date.substring(1);
}
} else if (field == "author") {
var author = Zotero.Utilities.cleanAuthor(value, "author", true);
// ensure author is not already there
var add = true;
for (var i=0; i<newItem.creators.length; i++) {
var existingAuthor = newItem.creators[i];
if (existingAuthor.firstName == author.firstName && existingAuthor.lastName == author.lastName) {
add = false;
break;
}
}
if (add) newItem.creators.push(author);
} else if (field == "issue") {
newItem.issue = value;
} else if (field == "volume") {
newItem.volume = value;
} else if (field == "issn") {
newItem.ISSN = value;
} else if (field == "gjd") {
var m = value.match(/\(([0-9]{4}[^\)]*)\)(?:, pp\. ([0-9\-]+))?/);
if (m) {
newItem.date = m[1];
newItem.pages = m[2];
}
} else if (field == "BookTitle") {
newItem.publicationTitle = value;
} else if (field == "genre") {
value = value.toLowerCase();
if (value == "article") {
newItem.itemType = "journalArticle";
} else if (value == "book") {
newItem.itemType = "book";
} else if (value == "dissertation") {
newItem.itemType = "thesis";
} else if (value == "bookitem") {
newItem.itemType = "bookSection";
}
}
}
if (doc) {
newItem.attachments.push({document:doc, title:"InfoTrac Snapshot"});
} else {
newItem.attachments.push({url:url, title:"InfoTrac Snapshot",
mimeType:"text/html"});
}
newItem.complete();
}
function doWeb(doc, url) {
var ncnp;
if (ZU.xpathText(doc, '//td//img[contains(@src, "ncnp_logo.gif")]/@title')) ncnp = true;
/*the only Infotrac Site that's still up & I'm aware of is 19th Century Newspapers.
But there may well be others, so I'm leaving a lot of legacy code in just in case */
var uri = doc.location.href;
if (doc.title.substring(0, 8) == "Article ") { // article
if (ncnp) scrape(doc, url);
else {
var xpath = '/html/body//comment()';
var elmts = doc.evaluate(xpath, doc, null, XPathResult.ANY_TYPE, null);
extractCitation(uri, elmts);
}
} else { // search results
var items = new Object();
var uris = new Array();
var elmts = new Array();
var host = doc.location.href.match(/^https?:\/\/[^\/]+/)[0];
var baseurl = doc.location.href.match(/(.+)\/purl=/);
var institution = url.match(/\?sw_aep=.+/)[0];
var tableRows = doc.evaluate('/html/body//table/tbody/tr/td[b or strong]', doc, null,
XPathResult.ANY_TYPE, null);
var tableRow;
var javaScriptRe = /'([^']*)' *, *'([^']*)'/
var i = 0;
// Go through table rows
if (ncnp){
while (tableRow = tableRows.iterateNext()) {
var title = ZU.trimInternal(ZU.xpathText(tableRow, './strong'));
var link = ZU.xpathText(tableRow, './a[1]/@href');
link = link.match(/\(\'(\/.+)\',\'/)[1];
link = baseurl[1] + link + institution;
//Z.debug(link)
items[link] = title;
}
Zotero.selectItems(items, function (items) {
if (!items) {
return true;
}
for (var i in items) {
uris.push(i);
}
Zotero.Utilities.processDocuments(uris, scrape)
});
}
else {
while (tableRow = tableRows.iterateNext()) {
var link = doc.evaluate('./a', tableRow, null, XPathResult.ANY_TYPE, null).iterateNext();
var m = javaScriptRe.exec(link.href);
if (m) {
uris[i] = host+"/itw/infomark/192/215/90714844w6"+m[1]+"?sw_aep=olr_wad"+m[2];
}
var article = doc.evaluate('./b/text()|./strong/text', link, null, XPathResult.ANY_TYPE, null).iterateNext();
items[i] = article.nodeValue;
// Chop off final period
if (items[i].substr(items[i].length-1) == ".") {
items[i] = items[i].substr(0, items[i].length-1);
}
elmts[i] = doc.evaluate(".//comment()", tableRow, null, XPathResult.ANY_TYPE, null);
citation[i] = ZU.xpath(tableRow, '//')
i++;
}
Zotero.selectItems(items, function (items) {
if (!items) {
return true;
}
for (var i in items) {
extractCitation(uris[i], elmts[i], items[i]);
}
});
}
}
}/** BEGIN TEST CASES **/
var testCases = []
/** END TEST CASES **/
100Kari Hemdal^https?://(preprod\.)?li\.proquest\.com/legislativeinsight/LegHistMain\.jsp/*
ProQuest Legislative Insight
Copyright (C) 2012 Kari Hemdal
ProQuest Legislative Insight is a Federal legislative history service that makes available thoroughly researched compilations of digital full text publications created by Congress during the process leading up to the enactment of U.S. Public Laws
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
function detectWeb(doc, url) {
return "multiple";
}
function getSingleType(doc,url)
{
var myXPath = '//div[@id="docpageid"]';
var myXPathObject = doc.evaluate(myXPath, doc, null, XPathResult.ANY_TYPE, null);
var type;
if (type = myXPathObject.iterateNext())
{
type = type.firstChild.textContent;
return type;
}
else
{
return "";
}
}
function containsSearchResult(doc, url)
{
var myXPath = '//div[@class="results-title"]/a';
var myXPathObject = doc.evaluate(myXPath, doc, null, XPathResult.ANY_TYPE, null);
var headers;
if (headers = myXPathObject.iterateNext())
{
return true;
}
else
{
return false;
}
}
function getType(t)
{
return t.substring(t.indexOf(":")+1,t.length);
}
function doLDOC(doc, url, st, showTop) {
var articles = new Array();
var items = new Object();
var headers;
var restype;
var count = 0;
if (showTop)
{
var sz = st.split("|");
var accNoZ = sz[0];
var pubLawZ = sz[1];
var typeZ = sz[2];
var typeTextZ = sz[3];
var idz = accNoZ+"|"+pubLawZ+"|"+typeZ+"|"+typeTextZ;
items[idz] = "Legislative History of " + accNoZ;
count++;
idz = accNoZ+"FT|"+pubLawZ+"|PUBLIC_LAW|"+typeTextZ;
items[idz] = "Public Law: " + accNoZ;
count++;
}
var myXPath = '//a[contains(@onclick, "ldoc(")]';
var myXPathObject = doc.evaluate(myXPath, doc, null, XPathResult.ANY_TYPE, null);
while (headers = myXPathObject.iterateNext())
{
var onclick = headers.getAttribute("onclick")
var pos = onclick.indexOf("ldoc('");
onclick = onclick.substring(pos+5,onclick.indexOf("')",pos+5)+1);
var s = onclick.split(",");
var pubLaw = s[0].substring(1,s[0].length-1);
var accNo = s[1].substring(1,s[1].length-1);
var type = s[2].substring(1,s[2].length-1);
var typeText = headers.getAttribute("title");
if (typeText)
{
var id = accNo+"|"+pubLaw+"|"+type+"|"+typeText;
items[id] = typeText;
count++;
}
}
if (count > 0)
{
Zotero.selectItems(items, function (items) {
for (var i in items)
{
var s = i.split("|");
var accNo = s[0];
var pubLaw = s[1];
var type = s[2];
var typeText = s[3];
process(accNo, pubLaw,type,typeText);
}
});
}
}
function doWeb(doc, url) {
var st = getSingleType(doc,url)
if (st != "")
{
var s = st.split("|");
var accNo = s[0];
var pubLaw = s[1];
var type = s[2];
var typeText = s[3];
if (type == "LEG_HIST")
doLDOC(doc,url,st,accNo != null && accNo != "");
else if (type == "BILL_DOC" || type == "LEG_PROC")
doLDOC(doc,url,st,false);
else
process(accNo, pubLaw,type,typeText);
return;
}
var articles = new Array();
var items = new Object();
var headers;
var restype;
var count = 0;
if (detectWeb(doc, url) == "multiple")
{
var myXPath = '//div[@class="results-title"]/a';
var myXPathObject = doc.evaluate(myXPath, doc, null, XPathResult.ANY_TYPE, null);
var myXPath2 = '//div[@class="results-type"]';
var myXPathObject2 = doc.evaluate(myXPath2, doc, null, XPathResult.ANY_TYPE, null);
while (headers = myXPathObject.iterateNext())
{
var onclick = headers.getAttribute("onclick");
onclick = onclick.substring(onclick.indexOf("('")+1,onclick.indexOf("')")+1);
var s = onclick.split(",");
var pubLaw = s[0].substring(1,s[0].length-1);
var accNo = s[1].substring(1,s[1].length-1);
var type = s[2].substring(1,s[2].length-1);
restype = myXPathObject2.iterateNext();
var typeText = getType(restype.firstChild.textContent);
var id = accNo+"|"+pubLaw+"|"+type+"|"+typeText;
items[id] = typeText + ": " + headers.parentNode.textContent;
count++;
}
if (count > 0)
{
Zotero.selectItems(items, function (items) {
if (!items) {
return true;
}
for (var i in items)
{
Zotero.debug(i);
var s = i.split("|");
var accNo = s[0];
var pubLaw = s[1];
var type = s[2];
var typeText = s[3];
process(accNo, pubLaw,type,typeText);
}
})
}
}
}
function addCommon(newItem, obj, typeText)
{
Zotero.debug(obj.pdfURL);
newItem.title = obj.title;
newItem.url = obj.url;
newItem.language = obj.language;
newItem.attachments.push({
title:obj.pdfTitle,
mimeType:"application/pdf",
url:obj.pdfURL});
}
function addLegislativeHistory(obj, typeText)
{
var newItem = new Zotero.Item("document");
addCommon(newItem,obj,typeText);
newItem.date = obj.dateEnacted;
newItem.title = "Legislative History of Public Law " + obj.publicLawNumber +": " + obj.title;
newItem.abstractNote = obj.abstractNote;
newItem.complete();
}
function addStatute(obj, typeText)
{
var newItem = new Zotero.Item("statute");
addCommon(newItem,obj,typeText);
newItem.publicLawNumber = obj.publicLawNumber;
newItem.session = obj.session;
newItem.dateEnacted = obj.dateEnacted;
newItem.nameOfAct = obj.title;
newItem.abstractNote = obj.abstractNote;
newItem.complete();
}
function addHearing(obj, typeText)
{
var newItem = new Zotero.Item("hearing");
addCommon(newItem,obj,typeText);
newItem.documentNumber = obj.documentNumber;
newItem.legislativeBody = obj.legislativeBody;
newItem.session = obj.session;
newItem.date = obj.date;
newItem.committee = obj.committee;
newItem.complete();
}
function addBill(obj, typeText)
{
var newItem = new Zotero.Item("bill");
addCommon(newItem,obj,typeText);
newItem.billNumber = obj.billNumber;
newItem.date = obj.date;
newItem.legislativeBody = obj.legislativeBody;
newItem.session = obj.session;
newItem.complete();
}
function addReport(obj, typeText)
{
var newItem = new Zotero.Item("report");
addCommon(newItem,obj,typeText);
newItem.date = obj.date;
newItem.reportType = obj.reportType;
newItem.reportNumber = obj.reportNumber;
newItem.callNumber = obj.ID;
newItem.libraryCatalog = "";
newItem.complete();
}
function addPresidentialSigning(obj, typeText)
{
var newItem = new Zotero.Item("document");
addCommon(newItem,obj,typeText);
newItem.date = obj.date;
newItem.creators.push(Zotero.Utilities.cleanAuthor(obj.author, "author"));
newItem.complete();
}
function addCongressionalRecord(obj, typeText)
{
var newItem = new Zotero.Item("document");
addCommon(newItem,obj,typeText);
newItem.date = obj.date;
newItem.abstractNote = obj.abstract;
newItem.complete();
}
function getItemType(type)
{
if (type == "LEG_HIST")
return "multiple";
else if (type == "BILL_DOC")
return "multiple";
else if (type == "LEG_PROC")
return "multiple";
else if (type == "BILL_VERSION")
return "bill";
else if (type == "PUBLIC_LAW")
return "statute";
else if (type == "REPORT" || type == "DOCUMENT" || type == "PRINT" || type == "MISC_PUB")
return "report";
else if (type == "HEARING")
return "hearing";
else if (type == "PRES_SIGN_STMT" || type == "CONGRESSIONAL_RECORD")
return "document";
else
return "";
}
function process(accNo, pubLaw, type, typeText)
{
var url = "Zotero?accNo="+accNo+"&pubLaw="+pubLaw+"&type="+type;
Zotero.Utilities.HTTP.doGet(url,
function(text, response, url){
var i;
var obj;
var objarr = JSON.parse(text);
for (i=0; i < objarr.length; i++)
{
obj = objarr[i];
if (obj.item == "legislativehistory")
{
addLegislativeHistory(obj,typeText);
}
else if (obj.item == "statute")
{
addStatute(obj,typeText);
}
else if (obj.item == "hearing")
{
addHearing(obj,typeText);
}
else if (obj.item == "bill")
{
addBill(obj,typeText);
}
else if (obj.item == "report")
{
addReport(obj,typeText);
}
else if (obj.item == "presidentialsigning")
{
addPresidentialSigning(obj,typeText);
}
else if (obj.item == "congressionalrecord")
{
addCongressionalRecord(obj,typeText);
}
}
},
function() {Zotero.done(); }, null);
}
/** BEGIN TEST CASES **/
var testCases = []
/** END TEST CASES **/
250Mang Sun/uhtbin/(cgisirsi|quick_keyword)/* Based on the SIRSI translator by Simon Kornblith and Michael Berkowitz,
and the modifications for Rutgers (IRIS) by Chad Mills.
Includes code for Spanish version, e.g. PUCP: http://biblioteca.pucp.edu.pe/ (no permalink)
and UChile www.catalogo.uchile.cl
*/
/*
AJ 12/2021: Replaced blocking selectItems() calls with two-arg equivalent.
The logic of this translator is difficult to follow, but everything still works
on my end.
Working instances I can find:
- http://75.149.101.133/uhtbin/cgisirsi/
- https://cat.libraries.psu.edu/uhtbin/cgisirsi/
*/
function detectWeb(doc, url) {
if (doc.evaluate('//div[@class="columns_container"]/div[contains(@class, "left_column")]/div[@class="content_container"]/div[@class="content"]/form[@id="hitlist"]', doc, null, XPathResult.ANY_TYPE, null).iterateNext()) {
return "multiple";
} else if (doc.evaluate('//div[@class="columns_container"]/div[contains(@class, "left_column")]/form[@name="item_view"]/div[@class="content_container item_details"]/div[@class="content"]/h3[.="Item Details" or .="Detalles del ítem" or .="Detalle"] ', doc, null, XPathResult.ANY_TYPE, null).iterateNext()) {
return "book";
}
}
function scrape(doc, url) {
var xpath = '//ul[contains(@class, "detail_page")]/li[@id="detail_marc_record"]/dl/dt[@class="viewmarctags"]';
var elmts = doc.evaluate(xpath, doc, null, XPathResult.ANY_TYPE, null);
var elmt = elmts.iterateNext();
if (!elmt) {
return false;
}
var newItem = new Zotero.Item("book");
newItem.extra = "";
newItem.series = "";
var seriesItemCount = 0;
while (elmt) {
try {
//By Rice. Select all non space text nodes.
var node = doc.evaluate('./text()[normalize-space()]', elmt, null, XPathResult.ANY_TYPE, null).iterateNext();
if (node) {
if (doc.evaluate('following-sibling::dd[position()=1]/a/text()', elmt, null, XPathResult.ANY_TYPE, null).iterateNext()) {
//By Rice. Some meta data must be retrieved from the text node of anchor tags.
var value = Zotero.Utilities.superCleanString(doc.evaluate('following-sibling::dd[position()=1]/a/text()[normalize-space()]', elmt, null, XPathResult.ANY_TYPE, null).iterateNext().nodeValue);
} else {
//while other metadata can be retrieved directly from the text node of DD tags
var value = Zotero.Utilities.superCleanString(doc.evaluate('following-sibling::dd[position()=1]/text()[normalize-space()]', elmt, null, XPathResult.ANY_TYPE, null).iterateNext().nodeValue);
}
//acquire label and create super clean text by removing colon, space and etc.
casedField = Zotero.Utilities.superCleanString(node.nodeValue);
field = casedField.toLowerCase();
//Z.debug(field)
if (field == "publisher") {
newItem.publisher = value;
} else if (field == "pub date") {
var re = /[0-9]+/;
var m = re.exec(value);
newItem.date = m[0];
} else if (field == "isbn") {
var re = /^[0-9](?:[0-9X]+)/;
var m = re.exec(value);
newItem.ISBN = m[0];
} else if (field == "title" || field =="titulo" || field == "título") {
var titleParts = value.split(" / ");
re = /\[(.+)\]/i;
if (re.test(titleParts[0])) {
var ar = re.exec(titleParts[0]);
var itype = ar[1].toLowerCase();
if (itype == "phonodisc" || itype == "sound recording") {
newItem.itemType = "audioRecording";
} else if (itype == "videorecording") {
newItem.itemType = "videoRecording";
} else if (itype == "electronic resource") {
//newItem.itemType = "webPage";
//Rice treats eletronic resource as book
newItem.itemType = "book";
}
}
newItem.title = Zotero.Utilities.capitalizeTitle(titleParts[0]);
} else if (field == "series"|| field =="serie"||field == "series title") { //push onto item, delimit with semicolon when needed
if (seriesItemCount != 0) {
newItem.series += "; " + value;
} else if (seriesItemCount == 0) {
newItem.series = value;
}
seriesItemCount++; //bump counter
} else if (field == "dissertation note" || field == "nota de tesis") {
newItem.itemType = "thesis";
var thesisParts = value.split("--");
var uniDate = thesisParts[1].split(", ");
newItem.university = uniDate[0];
newItem.date = uniDate[1];
} else if (field == "edition"|| field =="edicion" || field =="edición") {
newItem.edition = value;
} else if (field == "physical description" || field =="descripcion" || field == "descripción física") {
var physParts = value.split(" : ");
var physParts = physParts[0].split(" ; ");
//determine pages, split on " p."
var physPages = value.split(/ p.*/);
//break off anything in the beginning before the numbers
var pageParts = physPages[0].split(" ");
newItem.numPages = pageParts[pageParts.length - 1];
} else if (field == "publication info" || field =="pie de imprenta" || field == "datos publicación") {
var pubParts = value.split(" : ");
newItem.place = pubParts[0];
//drop off first part of array and recombine
pubParts.shift();
var i;
var publisherInfo;
for (i in pubParts) {
if (i == 0) {
publisherInfo = pubParts[i] + " : ";
} else {
publisherInfo = publisherInfo + pubParts[i] + " : ";
}
} //END for
//drop off last colon
publisherInfo = publisherInfo.substring(0, (publisherInfo.length - 3));
//break apart publication parts into Publisher and Date
var publisherParts = publisherInfo.split(",");
newItem.publisher = publisherParts[0];
//check that first character isn't a 'c', if so drop it
if (publisherParts[1].substring(1, 2) == "c") {
newItem.date = publisherParts[1].substring(2);
} else {
newItem.date = publisherParts[1];
}
} else if (field == "personal author" || field=="autor personal") {
newItem.creators.push(Zotero.Utilities.cleanAuthor(value, "author", true));
} else if (field == "performer") {
newItem.creators.push(Zotero.Utilities.cleanAuthor(value, "performer", true));
} else if (field == "author") {
newItem.creators.push(Zotero.Utilities.cleanAuthor(value, "author", true));
} else if (field == "added author" || field == "otros autores") {
newItem.creators.push(Zotero.Utilities.cleanAuthor(value, "contributor", true));
} else if (field == "conference author" || field == "corporate author") {
//The following line is included by Rice to handle corporate or conference author
newItem.creators.push(Zotero.Utilities.cleanAuthor(value, "author", true));
} else if (field == "subject" || field == "corporate subject" || field == "geographic term" || field=="tema" || field=="materia") {
var subjects = value.split("--");
newItem.tags = newItem.tags.concat(subjects);
} else if (field == "personal subject") {
var subjects = value.split(", ");
newItem.tags = newItem.tags.push(value[0] + ", " + value[1]);
} else if (value && field != "http") {
newItem.extra += casedField + ": " + value + "\n";
}
}
} catch (e) {}
elmt = elmts.iterateNext();
} //END if node
if (newItem.extra) {
newItem.extra = newItem.extra.substr(0, newItem.extra.length - 1);
}
var callNumber = doc.evaluate('//tr/td[1][@class="holdingslist"]/strong/text()|//tr/td[1][@class="holdingslist"]/b/text()', doc, null, XPathResult.ANY_TYPE, null).iterateNext();
if (callNumber && callNumber.nodeValue) {
newItem.callNumber = callNumber.nodeValue;
}
newItem.libraryCatalog = "Library Catalog";
newItem.complete();
return true;
}
function doWeb(doc, url) {
function finalize() {
var translator = Zotero.loadTranslator("import");
translator.setTranslator("a6ee60df-1ddc-4aae-bb25-45e0537be973");
translator.getTranslatorObject(function(marc) {
Zotero.Utilities.loadDocument(newUri + '?marks=' + recNumbers.join(",") + '&shadow=NO&format=FLAT+ASCII&sort=TITLE&vopt_elst=ALL&library=ALL&display_rule=ASCENDING&duedate_code=l&holdcount_code=t&DOWNLOAD_x=22&DOWNLOAD_y=12&address=&form_type=', function (doc) {
var pre = doc.getElementsByTagName("pre");
var text = pre[0].textContent;
var documents = text.split("*** DOCUMENT BOUNDARY ***");
for (var j = 1; j < documents.length; j++) {
var uri = newUri + "?marks=" + recNumbers[j] + "&shadow=NO&format=FLAT+ASCII&sort=TITLE&vopt_elst=ALL&library=ALL&display_rule=ASCENDING&duedate_code=l&holdcount_code=t&DOWNLOAD_x=22&DOWNLOAD_y=12&address=&form_type=";
var lines = documents[j].split("\n");
var record = new marc.record();
var tag, content;
var ind = "";
for (var i = 0; i < lines.length; i++) {
var line = lines[i];
if (line[0] == "." && line.substr(4, 2) == ". ") {
if (tag) {
content = content.replace(/\|([a-z])/g, marc.subfieldDelimiter + "$1");
record.addField(tag, ind, content);
}
} else {
content += " " + line.substr(6);
continue;
}
tag = line.substr(1, 3);
if (tag[0] != "0" || tag[1] != "0") {
ind = line.substr(6, 2);
content = line.substr(8);
} else {
content = line.substr(7);
if (tag == "000") {
tag = undefined;
record.leader = "00000" + content;
Zotero.debug("the leader is: " + record.leader);
}
}
} //end FOR
var newItem = new Zotero.Item();
record.translate(newItem);
newItem.libraryCatalog = "Library Catalog";
newItem.complete();
} //end FOR
});
});
}
var sirsiNew = true; //toggle between SIRSI -2003 and SIRSI 2003+
//Adapted to catch the hitlist page of Rice Catalog
var xpath = '/html/body/div[@class="columns_container"]/div[contains(@class, "left_column")]/div[@class="content_container"]/div[@class="content"]/form[@id="hitlist"]/ul[@class="hit_list"]/li/ul[starts-with(@class, "hit_list_row")]/li[@class="hit_list_item_info"]/dl';
if (doc.evaluate(xpath, doc, null, XPathResult.ANY_TYPE, null).iterateNext()) {
Zotero.debug("SIRSI doWeb: searchsum");
sirsiNew = true;
} else if (doc.evaluate('//form[@name="hitlist"]/table/tbody/tr', doc, null, XPathResult.ANY_TYPE, null).iterateNext()) {
Zotero.debug("SIRSI doWeb: hitlist");
sirsiNew = false;
} else if (doc.evaluate('//tr[th[@class="viewmarctags"]][td[@class="viewmarctags"]]', doc, null, XPathResult.ANY_TYPE, null).iterateNext()) {
Zotero.debug("SIRSI doWeb: viewmarctags");
sirsiNew = true;
} else if (doc.evaluate('//input[@name="VOPTIONS"]', doc, null, XPathResult.ANY_TYPE, null).iterateNext()) {
Zotero.debug("SIRSI doWeb: VOPTIONS");
sirsiNew = false;
} else {
var elmts = doc.evaluate('/html/body/form//text()', doc, null, XPathResult.ANY_TYPE, null);
//var elmts = doc.evaluate(' ', doc, null, XPathResult.ANY_TYPE, null);
while (elmt = elmts.iterateNext()) {
if (Zotero.Utilities.superCleanString(elmt.nodeValue) == "Viewing record") {
Zotero.debug("SIRSI doWeb: Viewing record");
sirsiNew = false;
}
} //END while elmts
} //END FUNCTION doWeb
// Zotero.debug(xpath);
if (sirsiNew) { //executes Simon's SIRSI 2003+ scraper code
if (!scrape(doc)) {
var checkboxes = new Array();
var urls = new Array();
var availableItems = new Array();
//pull items
var tableRows = doc.evaluate('//ul[@class="hit_list"]/li/ul[contains(@class, "hit_list_row")][//input[@value="Details" or @value="Detalles"]]', doc, null, XPathResult.ANY_TYPE, null);
Z.debug(ZU.xpath(doc, '//ul[@class="hit_list"]/li/ul[contains(@class, "hit_list_row")][//input[@value="Details" or @value="Detalles"]]').length)
// Go through table rows
while (tableRow = tableRows.iterateNext()) {
Z.debug("here")
var input = doc.evaluate('.//input[@value="Details" or @value="Detalles"]', tableRow, null, XPathResult.ANY_TYPE, null).iterateNext();
//var text = doc.evaluate('.//strong', tableRow, null, XPathResult.ANY_TYPE, null).iterateNext().textContent;
var text = doc.evaluate('.//dd[@class="title"]/a', tableRow, null, XPathResult.ANY_TYPE, null).iterateNext().textContent;
if (text) {
availableItems[input.name] = text.trim();
}
} //END while
Zotero.selectItems(availableItems, function (items) {
if (!items) {
return true;
}
var hostRe = new RegExp("^http(?:s)?://[^/]+");
var m = hostRe.exec(doc.location.href);
Zotero.debug("href: " + doc.location.href);
var hitlist = doc.forms.namedItem("hitlist");
var baseUrl = m[0] + hitlist.getAttribute("action") + "?first_hit=" + hitlist.elements.namedItem("first_hit").value + "&last_hit=" + hitlist.elements.namedItem("last_hit").value;
var alexandria = new Array();
for (var i in items) {
alexandria.push(baseUrl + "&" + i + "=Details");
}
Zotero.Utilities.processDocuments(alexandria, scrape);
});
} //END if not scrape(doc)
} else { //executes Simon's SIRSI -2003 translator code
Zotero.debug("Running SIRSI -2003 code");
var uri = doc.location.href;
var recNumbers = new Array();
var xpath = '//form[@name="hitlist"]/table/tbody/tr';
var elmts = doc.evaluate(xpath, doc, null, XPathResult.ANY_TYPE, null);
var elmt = elmts.iterateNext();
if (elmt) { // Search results page
var uriRegexp = /^https?:\/\/[^\/]+/;
var m = uriRegexp.exec(uri);
var postAction = doc.forms.namedItem("hitlist").getAttribute("action");
var newUri = m[0] + postAction.substr(0, postAction.length - 1) + "40";
var titleRe = /<br>\s*(.*[^\s])\s*<br>/i;
var items = new Array();
do {
var checkbox = doc.evaluate('.//input[@type="checkbox"]', elmt, null, XPathResult.ANY_TYPE, null).iterateNext();
// Collect title
var title = doc.evaluate("./td[2]", elmt, null, XPathResult.ANY_TYPE, null).iterateNext().textContent;
if (checkbox && title) {
items[checkbox.name] = Zotero.Utilities.trimInternal(title);
}
} while (elmt = elmts.iterateNext());
Zotero.selectItems(items, function (items) {
if (!items) {
return true;
}
for (var i in items) {
recNumbers.push(i);
}
finalize();
});
} else { // Normal page
// this regex will fail about 1/100,000,000 tries
var uriRegexp = /^((.*?)\/([0-9]+?))\//;
var m = uriRegexp.exec(uri);
var newUri = m[1] + "/40"
var elmts = doc.evaluate('/html/body/form', doc, null, XPathResult.ANY_TYPE, null);
while (elmt = elmts.iterateNext()) {
var initialText = doc.evaluate('.//text()[1]', elmt, null, XPathResult.ANY_TYPE, null).iterateNext();
if (initialText && initialText.nodeValue && Zotero.Utilities.superCleanString(initialText.nodeValue) == "Viewing record") {
recNumbers.push(doc.evaluate('./b[1]/text()[1]', elmt, null, XPathResult.ANY_TYPE, null).iterateNext().nodeValue);
break;
}
}
}
finalize();
} //END while
} //END scrape function
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://library.usc.edu/uhtbin/cgisirsi/x/0/0/5?searchdata1=2420992{CKEY}",
"items": [
{
"itemType": "book",
"creators": [
{
"firstName": "Pierre",
"lastName": "Bourdieu",
"creatorType": "author"
}
],
"notes": [],
"tags": [
"Real estate business",
"Social aspects",
"France",
"Val-d'Oise",
"Housing policy",
"France",
"Economics",
"Sociological aspects"
],
"seeAlso": [],
"attachments": [],
"extra": "Uniform title: Structures sociales de l'économie. English\nGeneral note: Translated from the French\nLanguage: Translated from the French\nBibliography note: Includes bibliographical references (p. [233]-251) and index\nLCCN: 2005620708\nControl Number: ocm61244051",
"title": "The social structures of the economy",
"place": "Cambridge, UK ; Malden, MA",
"publisher": "Polity",
"date": "2005",
"numPages": "263",
"ISBN": "0745625401",
"libraryCatalog": "Library Catalog"
}
]
}
]
/** END TEST CASES **/
250Sean Takats, Hicham El Kasmi/uhtbin/(cgisirsi|quick_keyword)/*Spanish Libraries:
No Permalinks, so no tests
Biblioteca Nacional (Spanish National Library): http://catalogo.bne.es/uhtbin/webcat
Universidad Carlos III de madrid: http://www.uc3m.es/portal/page/portal/library
Universidad Autonoma de Madrid: http://biblos.uam.es/uhtbin/webcat
UNED: http://biblio15.uned.es/
*/
function detectWeb(doc, url) {
var xpath = '//tr[th[@class="viewmarctags"]][td[@class="viewmarctags"]]';
if (doc.evaluate(xpath, doc, null, XPathResult.ANY_TYPE, null).iterateNext()) {
Zotero.debug("SIRSI detectWeb: viewmarctags");
return "book";
}
var xpath = '//dl[dt[@class="viewmarctags"]][dd[@class="viewmarctags"]]';
if (doc.evaluate(xpath, doc, null, XPathResult.ANY_TYPE, null).iterateNext()) {
Zotero.debug("SIRSI detectWeb: viewmarctags");
return "book";
}
var xpath = '//input[@name="VOPTIONS"]';
if (doc.evaluate(xpath, doc, null, XPathResult.ANY_TYPE, null).iterateNext()) {
Zotero.debug("SIRSI detectWeb: VOPTIONS");
return "book";
}
var elmts = doc.evaluate('/html/body/form//text()', doc, null,
XPathResult.ANY_TYPE, null);
while (elmt = elmts.iterateNext()) {
if (Zotero.Utilities.superCleanString(elmt.nodeValue) == "Viewing record") {
Zotero.debug("SIRSI detectWeb: Viewing record");
return "book";
}
}
var xpath = '//td[@class="searchsum"]/table';
if (doc.evaluate(xpath, doc, null, XPathResult.ANY_TYPE, null).iterateNext()) {
Zotero.debug("SIRSI detectWeb: searchsum");
return "multiple";
}
var xpath = '//form[@name="hitlist"]/table/tbody/tr';
if (doc.evaluate(xpath, doc, null, XPathResult.ANY_TYPE, null).iterateNext()) {
Zotero.debug("SIRSI detectWeb: hitlist");
return "multiple";
}
}
function scrape(doc) {
//second xpath version for http://catalogue-bibliotheques.upmc.fr
var xpath = '//tr[th[@class="viewmarctags"]][td[@class="viewmarctags"]]|//dl/dt[@class="viewmarctags"]';
var elmts = doc.evaluate(xpath, doc, null, XPathResult.ANY_TYPE, null);
var elmt = elmts.iterateNext();
if (!elmt) {
return false;
}
var newItem = new Zotero.Item("book");
newItem.extra = "";
var note;
authors = [];
while (elmt) {
try {
var node = ZU.xpathText(elmt, './TD[1]/A[1]/span/text()[1]|./following-sibling::dd[1]/a[1]/span/text()');
if (!node) {
var node = ZU.xpathText(elmt, './TD[1]/A[1]/text()[1]|./following-sibling::dd[1]/a[1]/text()');
}
if (!node) {
var node = ZU.xpathText(elmt, './TD[1]/text()[1]|./following-sibling::dd[1]/text()')
}
if (node) {
var casedField = Zotero.Utilities.superCleanString(ZU.xpathText(elmt, './th[1]/text()|./text()'));
field = casedField.toLowerCase();
//Z.debug(field)
field = field.replace(/:./,"").trim();
var value = Zotero.Utilities.superCleanString(node);
//Z.debug(value)
if (field == "publisher" || field == "éditeur" ) {
newItem.publisher = value;
} else if (field == "physical description" || field == "desc. matérielle" ||field == "description physique" ||field== "descripción física" ||field== "descripcion fisica" || field == "descr. física") {
value = value.match(/([\d\sxvi]+)p/)[1];
if (value) newItem.numPages = value;
} else if (field == "pub date" || field == "année" || field =="fecha de pub") {
var re = /[0-9]+/;
var m = re.exec(value);
newItem.date = m[0];
} else if (field == "isbn") {
var re = /^[0-9\-](?:[0-9X\-]+)/;
var m = re.exec(value);
newItem.ISBN = m[0];
} else if (field == "issn") {
newItem.ISSN = value;
} else if (field == "title" || field == "titre" ||field == "titulo" || field =="título") {
var titleParts = value.split(" / ");
newItem.title = Zotero.Utilities.capitalizeTitle(titleParts[0]);
} else if (field == "serie"){
newItem.series = value;
} else if (field == "langue" || field == "language"){
newItem.language = value;
} else if (field == "series title" || field == "titre de série" || field == "collection") {
newItem.series = value.replace(/^\(|\)$/g, "");
} else if (field == "publication info" || field == "publication" || field =="publicación" ||field =="publicacion") {
//this is a bit tricky - can be in the form Place : Publisher; Place : Publisher, Year
//or Place; Place : Publisher - the code` should get all cases and produce uniform output
var places = [];
var publishers = [];
var pubParts = value.split(/\s*;\s*/);
for (var i in pubParts){
var pubPart = pubParts[i].split(/\s*:\s*/);
places.push(pubPart[0]);
if (pubPart[1]){
if (pubPart[1].match(/\d+/)) newItem.date = pubPart[1].match(/\d+/)[0];
publishers.push(pubPart[1].match(/[^,]+/)[0])
}
}
newItem.publisher = publishers.join("; ");
newItem.place = places.join("; ");
} else if (field == "personal author" || field == "autor personal" || field == "auteur") {
if (authors.indexOf(value) == -1) {
value = value.replace(/(\(|\)|\d+|\-)/g, "");
newItem.creators.push(Zotero.Utilities.cleanAuthor(value, "author", true));
authors.push(value);
}
} else if (field == "author" || field == "auteur" || field == "autor"){
if (authors.indexOf(value) == -1) {
value = value.replace(/(\(|\)|\d+|\-)/g, "");
newItem.creators.push(Zotero.Utilities.cleanAuthor(value, "author", true));
authors.push(value);
}
} else if (field == "added author" || field == "organisme" || field == "autor secundario") {
if (authors.indexOf(value) == -1) {
newItem.creators.push(Zotero.Utilities.cleanAuthor(value, "contributor", true));
authors.push(value);
}
} else if (field == "corporate author") {
if (authors.indexOf(value) == -1) {
newItem.creators.push({lastName:value, fieldMode:true});
authors.push(value);
}
} else if (field == "general note" || field == "note" || field =="nota general") {
newItem.notes.push(value);
} else if (field == "edition" || field == "édition" ||field =="edición" ||field =="edicion") {
newItem.edition = value;
} else if (field == "additional formats" || field == "autres supports") {
newItem.additionalformats = value;
} else if (field == "continued by" || field == "devient") {
newItem.continuedby = value;
} else if (field == "subject term" || field == "corporate subject" || field == "geographic term" || field == "subject" || field == "sujet" || field == "sujet géographique" || field == "materia-autor personal" || field == "materia") {
var subjects = value.split("--");
for (var i=0; i<subjects.length; i++) {
if (newItem.tags.indexOf(subjects[i]) == -1) {
newItem.tags.push(subjects[i]);
}
}
} else if (field == "personal subject" || field == "personne sujet" || field== "index term") {
var subjects = value.split(", ");
var tag = value[0]+", "+value[1];
if (newItems.tag.indexOf(tag) == -1) {
newItem.tags.push(tag);
}
} else if (field == "contents" || field == "contient") {
newItem.notes.push(value);
} else if (field == "texto publicado en") {
//Z.debug(value)
newItem.itemType = "journalArticle";
newItem.publication = value.match(/En:\s*([^-.]+)/)[1]
newItem.issue = value.match(/Nº\s*([^\(,]+)/)[1]
newItem.volume = value.match(/\(([^\)]+)/)[1]
newItem.page = value.match(/p\.\s*([\d\-]+)/)[1]
} else if (value && field != "http") {
if (note) note += casedField+": "+value+"\n";
else note = casedField+": "+value+"\n";
}
}
} catch (e) {}newItem
elmt = elmts.iterateNext();
}
if (note) {
newItem.notes.push(note);
}
var callNumber = doc.evaluate('//tr/td[1][@class="holdingslist"]/text()', doc, null, XPathResult.ANY_TYPE, null).iterateNext();
if (callNumber && callNumber.nodeValue) {
newItem.callNumber = callNumber.nodeValue.trim();
}
// UVA has the call number separately, in the next field
// http://virgo.lib.virginia.edu
callNumber = doc.evaluate('//tr/td[2][@class="holdingslist"]/text()', doc, null, XPathResult.ANY_TYPE, null).iterateNext();
// The regex here is looking for something like an LOC call number
if (callNumber && callNumber.nodeValue.trim().match(/^[A-Z]{1,2}[0-9]+/)) {
newItem.callNumber += " " + callNumber.nodeValue.trim();
}
//sometimes we're missing the publication date - see if it's in the publisher:
if (!newItem.date && newItem.publisher){
var year = newItem.publisher.match(/\d{4}/)[0];
if (year) newItem.publisher = newItem.publisher.replace(/[,;:]\s*\d{4}/, "");
newItem.date = year;
}
//sometimes the place is in the publisher field
if (!newItem.place && newItem.publisher){
var place = newItem.publisher.match(/(.[^:]+):/)[1];
if (place){
newItem.place = place.trim();
newItem.publisher = newItem.publisher.replace(/.[^:]+:/, "")
}
}
var domain = doc.location.href.match(/https?:\/\/([^/]+)/);
newItem.repository = domain[1]+" Library Catalog";
newItem.complete();
return true;
}
function doWeb(doc, url){
function finalize() {
var translator = Zotero.loadTranslator("import");
translator.setTranslator("a6ee60df-1ddc-4aae-bb25-45e0537be973");
translator.getTranslatorObject(function(marc) {
Zotero.Utilities.loadDocument(newUri+'?marks='+recNumbers.join(",")+'&shadow=NO&format=FLAT+ASCII&sort=TITLE&vopt_elst=ALL&library=ALL&display_rule=ASCENDING&duedate_code=l&holdcount_code=t&DOWNLOAD_x=22&DOWNLOAD_y=12&address=&form_type=', function(doc) {
var pre = doc.getElementsByTagName("pre");
var text = pre[0].textContent;
var documents = text.split("*** DOCUMENT BOUNDARY ***");
for (var j=1; j<documents.length; j++) {
var uri = newUri+"?marks="+recNumbers[j]+"&shadow=NO&format=FLAT+ASCII&sort=TITLE&vopt_elst=ALL&library=ALL&display_rule=ASCENDING&duedate_code=l&holdcount_code=t&DOWNLOAD_x=22&DOWNLOAD_y=12&address=&form_type=";
var lines = documents[j].split("\n");
var record = new marc.record();
var tag, content;
var ind = "";
for (var i=0; i<lines.length; i++) {
var line = lines[i];
if (line[0] == "." && line.substr(4,2) == ". ") {
if (tag) {
content = content.replace(/\|([a-z])/g, marc.subfieldDelimiter+"$1");
record.addField(tag, ind, content);
}
} else {
content += " "+line.substr(6);
continue;
}
tag = line.substr(1, 3);
if (tag[0] != "0" || tag[1] != "0") {
ind = line.substr(6, 2);
content = line.substr(8);
} else {
content = line.substr(7);
if (tag == "000") {
tag = undefined;
record.leader = "00000"+content;
Zotero.debug("the leader is: "+record.leader);
}
}
}
var newItem = new Zotero.Item();
record.translate(newItem);
var domain = url.match(/https?:\/\/([^/]+)/);
newItem.repository = domain[1]+" Library Catalog";
newItem.complete();
}
});
});
}
var sirsiNew = true; //toggle between SIRSI -2003 and SIRSI 2003+
var xpath = '//td[@class="searchsum"]/table';
if (doc.evaluate(xpath, doc, null, XPathResult.ANY_TYPE, null).iterateNext()) {
Zotero.debug("SIRSI doWeb: searchsum");
sirsiNew = true;
} else if (doc.evaluate('//form[@name="hitlist"]/table/tbody/tr', doc, null, XPathResult.ANY_TYPE, null).iterateNext()) {
Zotero.debug("SIRSI doWeb: hitlist");
sirsiNew = false;
} else if (doc.evaluate('//tr[th[@class="viewmarctags"]][td[@class="viewmarctags"]]|//dl[dt[@class="viewmarctags"]][dd[@class="viewmarctags"]]', doc, null, XPathResult.ANY_TYPE, null).iterateNext()) {
Zotero.debug("SIRSI doWeb: viewmarctags");
sirsiNew = true;
} else if (doc.evaluate('//input[@name="VOPTIONS"]', doc, null, XPathResult.ANY_TYPE, null).iterateNext()) {
Zotero.debug("SIRSI doWeb: VOPTIONS");
sirsiNew = false;
} else {
var elmts = doc.evaluate('/html/body/form//text()', doc, null,
XPathResult.ANY_TYPE, null);
while (elmt = elmts.iterateNext()) {
if (Zotero.Utilities.superCleanString(elmt.nodeValue) == "Viewing record") {
Zotero.debug("SIRSI doWeb: Viewing record");
sirsiNew = false;
}
}
}
if (sirsiNew) { //executes Simon's SIRSI 2003+ scraper code
Zotero.debug("Running SIRSI 2003+ code");
if (!scrape(doc)) {
var checkboxes = new Array();
var urls = new Array();
var availableItems = new Array();
//begin IUCAT fixes by Andrew Smith
var iuRe = /^https?:\/\/www\.iucat\.iu\.edu/;
var iu = iuRe.exec(url);
//IUCAT fix 1 of 2
if (iu){
var tableRows = doc.evaluate('//td[@class="searchsum"]/table[//input[@class="submitLink"]]', doc, null, XPathResult.ANY_TYPE, null);
} else {
var tableRows = doc.evaluate('//td[@class="searchsum"]/table[//input[@value="Details" or @value="Detalles"]]', doc, null, XPathResult.ANY_TYPE, null);
}
var tableRow = tableRows.iterateNext(); // skip first row
// Go through table rows
while (tableRow = tableRows.iterateNext()) {
//IUCAT fix 2 of 2
if (iu){
var input = doc.evaluate('.//input[@class="submitLink"]', tableRow, null, XPathResult.ANY_TYPE, null).iterateNext();
var text = doc.evaluate('.//label/span', tableRow, null, XPathResult.ANY_TYPE, null).iterateNext().textContent;
} else {
var input = doc.evaluate('.//input[@value="Details" or @value="Detalles"]', tableRow, null, XPathResult.ANY_TYPE, null).iterateNext();
var text = doc.evaluate('.//label/strong', tableRow, null, XPathResult.ANY_TYPE, null).iterateNext().textContent;
}
//end IUCAT fixes by Andrew Smith
if (text) {
availableItems[input.name] = text;
}
}
Zotero.selectItems(availableItems, function (items) {
if (!items) {
return true;
}
var hostRe = new RegExp("^http(?:s)?://[^/]+");
var m = hostRe.exec(doc.location.href);
Zotero.debug("href: " + doc.location.href);
var hitlist = doc.forms.namedItem("hitlist");
var baseUrl = m[0]+hitlist.getAttribute("action")+"?first_hit="+hitlist.elements.namedItem("first_hit").value+"&last_hit="+hitlist.elements.namedItem("last_hit").value;
var uris = new Array();
for (var i in items) {
uris.push(baseUrl+"&"+i+"=Details");
}
//Z.debug(uris)
Zotero.Utilities.processDocuments(uris, scrape)
});
}
} else { //executes Simon's SIRSI -2003 translator code
Zotero.debug("Running SIRSI -2003 code");
var uri = doc.location.href;
var recNumbers = new Array();
var xpath = '//form[@name="hitlist"]/table/tbody/tr';
var elmts = doc.evaluate(xpath, doc, null, XPathResult.ANY_TYPE, null);
var elmt = elmts.iterateNext();
if (elmt) { // Search results page
var uriRegexp = /^https?:\/\/[^\/]+/;
var m = uriRegexp.exec(uri);
var postAction = doc.forms.namedItem("hitlist").getAttribute("action");
var newUri = m[0]+postAction.substr(0, postAction.length-1)+"40";
var titleRe = /<br>\s*(.*[^\s])\s*<br>/i;
var items = new Array();
do {
var checkbox = doc.evaluate('.//input[@type="checkbox"]', elmt, null,
XPathResult.ANY_TYPE, null).iterateNext();
// Collect title
var title = doc.evaluate("./td[2]", elmt, null, XPathResult.ANY_TYPE, null).iterateNext().textContent;
if (checkbox && title) {
items[checkbox.name] = Zotero.Utilities.trimInternal(title);
}
} while (elmt = elmts.iterateNext());
Zotero.selectItems(items, function (newItems) {
recNumbers.push(...Object.keys(items));
finalize();
});
} else { // Normal page
// this regex will fail about 1/100,000,000 tries
var uriRegexp = /^((.*?)\/([0-9]+?))\//;
var m = uriRegexp.exec(uri);
var newUri = m[1]+"/40";
var elmts = doc.evaluate('/html/body/form', doc, null,
XPathResult.ANY_TYPE, null);
while (elmt = elmts.iterateNext()) {
var initialText = doc.evaluate('.//text()[1]', elmt, null, XPathResult.ANY_TYPE, null).iterateNext();
if (initialText && initialText.nodeValue && Zotero.Utilities.superCleanString(initialText.nodeValue) == "Viewing record") {
recNumbers.push(doc.evaluate('./b[1]/text()[1]', elmt, null, XPathResult.ANY_TYPE, null).iterateNext().nodeValue);
break;
}
}
// begin Emory compatibility
var elmts = doc.evaluate('//input[@name="first_hit"]', doc, null,
XPathResult.ANY_TYPE, null);
while (elmt = elmts.iterateNext()) {
recNumbers.length = 0;
var recNumber = elmt.value;
recNumbers.push(recNumber);
break;
}
// end Emory compatibility
}
finalize();
}
}/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://toroprod.library.utoronto.ca/uhtbin/cgisirsi/x/x/0/123?searchdata1=7990078&srchfield1=CKEY^SUBJECT^GENERAL^^words+or+phrase&searchoper1=AND&thesaurus1=GENERAL&search_entries1=CKEY&search_type1=SUBJECT&special_proc1=&CFID=756596&CFTOKEN=78921104",
"items": [
{
"itemType": "book",
"creators": [
{
"firstName": "Harry E.",
"lastName": "Vanden",
"creatorType": "author"
}
],
"notes": [
"1. An introduction to twenty-first century Latin America -- 2. Early history -- 3. Democracy and dictators: a historical overview from independence to the present day -- 4. The other Americans -- 5. Society, family, and gender -- 6. Religion in Latin America -- 7. The political economy of Latin America -- 8. Democracy and authoritarianism: Latin American political culture -- 9. Politics, power, institutions, and actors -- 10. Struggling for change: revolution, social and political movements in Latin America -- 11. U.S.-Latin American relations -- 12. Guatemala / Susanne Jonas -- 13. Mexico / Nora Hamilton -- 14. Cuba / Gary Prevost -- 15. Brazil / Wilber Albert Chaffee -- 16. Argentina / Aldo C. Vacs -- 17. Chile / Eduardo Silva -- 18. Venezuela / Daniel Hellinger -- 19. Colombia / John C. Dugas -- 20. Nicaragua / Gary Prevost and Harry E. Vanden -- 21. Bolivia / Waltraud Q. Morales -- Appendix 1: Presidential elections -- Appendix 2: Recent Legislative elections",
"Subject, geographic: Latin America--Politics and government\nBibliography note: Includes bibliographical references and index\nAdded Entry-Personal Name: Prevost, Gary\nkey: 7990078\n"
],
"tags": [],
"seeAlso": [],
"attachments": [],
"title": "Politics of Latin America: the power game",
"edition": "4th ed",
"date": "2012",
"publisher": "Oxford University Press",
"place": "New York",
"numPages": "633",
"ISBN": "0199797145",
"callNumber": "JL960 .V36 2012X",
"libraryCatalog": "toroprod.library.utoronto.ca Library Catalog",
"shortTitle": "Politics of Latin America"
}
]
}
]
/** END TEST CASES **/
260Simon KornblithTLCScripts/interpac\.dll\?(.*LabelDisplay.*RecordNumber=[0-9]|Search|ItemTitles)/* other example here: http://ocl.tlcdelivers.com/TLCScripts/interpac.dll?LabelDisplay&LastResult=Search%26Config=ysm%26FormId=6588839%26Branch=,0,%26LimitsId=0%26StartIndex=0%26SearchField=7%26SearchType=1%26SearchData=food%26NotAddToHistory=1%26ItemsPerPage=30%26SortField=0%26PeriodLimit=-1%26SearchAvailableOnly=0&DataNumber=52182&RecordNumber=52182&SearchAvailableOnly=0&FormId=6588839&ItemField=1&Config=ysm&Branch=,0,
but test won't work on that page */
function detectWeb(doc, url) {
var detailRe = new RegExp("TLCScripts/interpac\.dll\?.*LabelDisplay.*RecordNumber=[0-9]");
if (detailRe.test(doc.location.href)) {
return "book";
} else {
return "multiple";
}
}
function doWeb(doc, url) {
var detailRe = new RegExp("TLCScripts/interpac\.dll\?.*LabelDisplay.*RecordNumber=[0-9]");
var uri = doc.location.href;
var newUris = new Array();
if (detailRe.test(uri)) {
ZU.processDocuments(uri.replace("LabelDisplay", "MARCDisplay"), scrape);
} else {
var items = Zotero.Utilities.getItemArray(doc, doc, 'TLCScripts/interpac\.dll\?.*LabelDisplay.*RecordNumber=[0-9]');
Zotero.selectItems(items, function (items) {
if (!items) {
return;
}
for (var i in items) {
newUris.push(i.replace("LabelDisplay", "MARCDisplay"));
}
ZU.processDocuments(newUris, scrape);
});
}
}
function scrape(newDoc, url) {
var translator = Zotero.loadTranslator("import");
translator.setTranslator("a6ee60df-1ddc-4aae-bb25-45e0537be973");
translator.getTranslatorObject(function(marc) {
var uri = newDoc.location.href;
var record = new marc.record();
var elmts = newDoc.evaluate('/html/body/table/tbody/tr[td[4]]', newDoc, null, XPathResult.ANY_TYPE, null);
var tag, ind, content, elmt;
while (elmt = elmts.iterateNext()) {
tag = newDoc.evaluate('./td[2]', elmt, null, XPathResult.ANY_TYPE, null).iterateNext().textContent;
var inds = newDoc.evaluate('./td[3]', elmt, null, XPathResult.ANY_TYPE, null).iterateNext().textContent;
tag = tag.replace(/[\r\n]/g, "");
inds = inds.replace(/[\r\n\xA0]/g, "");
var children = newDoc.evaluate('./td[4]//text()', elmt, null, XPathResult.ANY_TYPE, null);
var subfield = children.iterateNext();
var fieldContent = children.iterateNext();
if (tag == "LDR") {
record.leader = "00000" + subfield.nodeValue;
} else {
content = "";
if (!fieldContent) {
content = subfield.nodeValue;
} else {
while (subfield && fieldContent) {
content += marc.subfieldDelimiter + subfield.nodeValue.substr(1, 1) + fieldContent.nodeValue;
var subfield = children.iterateNext();
var fieldContent = children.iterateNext();
}
}
record.addField(tag, inds, content);
}
}
var newItem = new Zotero.Item();
record.translate(newItem);
var domain = url.match(/https?:\/\/([^/]+)/);
newItem.repository = domain[1] + " Library Catalog";
newItem.complete();
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://martinsburg.lib.wv.us/TLCScripts/interpac.dll?LabelDisplay&LastResult=Search%26Config=1ysm%26FormId=167489996%26Branch=,1,104,102,103,105,%26LimitsId=167358921%26StartIndex=0%26SearchField=16777216%26SearchType=1%26SearchData=argentina%26NotAddToHistory=1%26ItemsPerPage=20%26SortField=0%26PeriodLimit=-1%26SearchAvailableOnly=0&DataNumber=468041&RecordNumber=468041&SearchAvailableOnly=0&FormId=167489996&ItemField=1&Config=1ysm&Branch=,1,104,102,103,105,",
"items": [
{
"itemType": "book",
"creators": [
{
"firstName": "Jean F.",
"lastName": "Blashfield",
"creatorType": "author"
}
],
"notes": [],
"tags": [
"Argentina"
],
"seeAlso": [],
"attachments": [],
"ISBN": "0516248723",
"title": "Argentina",
"place": "New York",
"publisher": "Children's Press",
"date": "2007",
"numPages": "144",
"series": "Cornerstones of freedom",
"callNumber": "F2808.2 .B56 2007",
"libraryCatalog": "martinsburg.lib.wv.us Library Catalog"
}
]
}
]
/** END TEST CASES **/
250Simon KornblithPwebrecon\.cgifunction detectWeb(doc, url) {
var export_options = ZU.xpath(doc, '//form[@name="frm"]//*[@name="RD"]|//td/select[@name="RD"]');
if (!export_options.length) return false;
export_options = export_options[0];
var i = 0
while (i< export_options.length) {
if (export_options[i].text == 'Latin1 MARC' || export_options[i].text == 'Raw MARC' || export_options[i].text == 'MARC 21' || export_options[i].text == 'MARC 8' || export_options[i].text == 'MARC-8' || export_options[i].text == 'UTF-8' || export_options[i].text == 'MARC (Unicode/UTF-8)' || export_options[i].text == 'MARC UTF-8' || export_options[i].text == 'UTF-8 MARC (Unicode)' || export_options[i].text == 'UTF8-Unicode' || export_options[i].text == 'MARC (non-Unicode/MARC-8)' || export_options[i].text == 'MARC communication format' || export_options[i].text == 'MARC Record') {
// We have an exportable single record
if (ZU.xpath(doc, '//form[@name="frm"]//*[@name="RC"]').length) {
return "multiple";
} else {
return "book";
}
}
i++;
}
}
function doWeb(doc, url, postString) {
if (postString === undefined) postString = '';
var form = ZU.xpath(doc, '//form[@name="frm"]');
var newUri = form[0].action;
var multiple = false;
if (!postString && ZU.xpath(form, '//*[@name="RC"]').length) {
multiple = true;
var availableItems = new Object(); // Technically, associative arrays are objects
var namespace = doc.documentElement.namespaceURI;
var nsResolver = namespace ?
function (prefix) {
if (prefix == 'x') return namespace;
else return null;
} : null;
// Require link to match this
var tagRegexp = new RegExp();
tagRegexp.compile('Pwebrecon\\.cgi\\?.*v1=[0-9]+\\&.*ti=');
// Do not allow text to match this
var rejectRegexp = new RegExp();
rejectRegexp.compile('\[ [0-9]+ \]');
var checkboxes = new Array();
var urls = new Array();
var tableRows = doc.evaluate('//form[@name="frm"]//table/tbody/tr[td/input[@type="checkbox" or @type="CHECKBOX"]]', doc, nsResolver, XPathResult.ANY_TYPE, null);
// Go through table rows
var tableRow;
var i = 0;
while (tableRow = tableRows.iterateNext()) {
i++;
// CHK is what we need to get it all as one file
var input = doc.evaluate('./td/input[@name="CHK"]', tableRow, nsResolver, XPathResult.ANY_TYPE, null).iterateNext();
checkboxes[i] = input.value;
var links = tableRow.getElementsByTagName("a");
// Go through links
for (var j = 0; j < links.length; j++) {
if (tagRegexp.test(links[j].href)) {
var text = links[j].textContent;
if (text) {
text = Zotero.Utilities.trimInternal(text);
if (!rejectRegexp.test(text)) {
if (availableItems[i]) {
availableItems[i] += " " + text;
} else {
availableItems[i] = text;
}
}
}
}
}
// if no title, pull from second td
if (!availableItems[i]) {
availableItems[i] = Zotero.Utilities.trimInternal(doc.evaluate('./td[2]', tableRow, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().textContent);
}
}
Zotero.selectItems(availableItems, function (items) {
if (!items) return;
for (var i in items) {
postString += "CHK=" + checkboxes[i] + "&";
}
doWeb(doc, url, postString);
});
return;
}
var raw, unicode, latin1;
for (var i = 0; i < form[0].elements.length; i++) {
if (form[0].elements[i].type && form[0].elements[i].type.toLowerCase() == 'hidden') {
postString += escape(form[0].elements[i].name) + '=' + escape(form[0].elements[i].value) + '&';
}
}
var export_options = ZU.xpath(form, '//select[@name="RD"]/option');
for (var i = 0; i < export_options.length; i++) {
if (export_options[i].text == 'Raw MARC' || export_options[i].text == 'MARC 8' || export_options[i].text == 'MARC-8' || export_options[i].text == 'MARC (non-Unicode/MARC-8)') {
raw = i;
}
if (export_options[i].text == 'Latin1 MARC') {
latin1 = i;
} else if (export_options[i].text == 'UTF-8' || export_options[i].text == 'UTF-8 MARC (Unicode)' || export_options[i].text == 'UTF8-Unicode' || export_options[i].text == 'MARC UTF-8' || export_options[i].text == 'MARC (Unicode/UTF-8)' || export_options[i].text == 'MARC 21' || export_options[i].text == 'MARC communication format' || export_options[i].text == 'MARC Record') {
unicode = i;
}
}
var responseCharset = null;
if (unicode) {
var rd = unicode;
responseCharset = 'UTF-8';
} else if (latin1) {
var rd = latin1;
responseCharset = 'ISO-8859-1';
} else if (raw) {
var rd = raw;
} else {
return false;
}
//get permalink for LoC - getting this from MARC is going to be much harder
if (url.length > 23 && url.substr(0, 23) == "http://catalog.loc.gov/") {
var LoCpermalink = ZU.xpathText(doc, '//tr/td/a[contains(@href, "http://lccn.loc.gov/")]');
}
postString += 'RD=' + rd + '&MAILADDY=&SAVE=Press+to+SAVE+or+PRINT';
// No idea why this doesn't work as post
Zotero.Utilities.HTTP.doGet(newUri + '?' + postString, function (text) {
// load translator for MARC
var marc = Zotero.loadTranslator("import");
marc.setTranslator("a6ee60df-1ddc-4aae-bb25-45e0537be973");
marc.setString(text);
//Z.debug(text)
// if this is the LOC catalog, specify that in repository field
if (url.length > 23 && url.substr(0, 23) == "http://catalog.loc.gov/") {
marc.setHandler("itemDone", function (obj, item) {
if (LoCpermalink){
item.attachments.push({url: LoCpermalink, title: "Library of Congress Permalink", mimeType: "text/html", snapshot: false})
}
item.repository = "Library of Congress Catalog";
item.complete();
});
} else {
var domain = url.match(/https?:\/\/([^/]+)/);
marc.setHandler("itemDone", function (obj, item) {
item.repository = domain[1] + " Library Catalog";
item.complete();
});
}
marc.translate();
}, null, responseCharset);
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://i-share.carli.illinois.edu/nby/cgi-bin/Pwebrecon.cgi?DB=local&v1=1&BBRecID=790862",
"items": [
{
"itemType": "book",
"creators": [
{
"firstName": "Francisco",
"lastName": "Xarque",
"creatorType": "author"
}
],
"notes": [
{
"note": "Brunet and Graesse both mention a map of Paraguay; this copy has a map of Chile with title: Tabula geocraphica [sic] regni Chile / studio et labore P. Procuratoris Chilensis Societatis Jesu In 3 books; the first two are biographies of Jesuits, Simon Mazeta and Francisco Diaz Taño, the 3rd deals with Jesuit missions in Paraguay Head and tail pieces"
}
],
"tags": [
"Masseta, Simon",
"Cuellar y Mosquera, Gabriel de",
"Missions",
"Paraguay"
],
"seeAlso": [],
"attachments": [],
"title": "Insignes missioneros de la Compañia de Jesus en la prouincia del Paraguay: estado presente de sus missiones en Tucuman, Paraguay, y Rio de la Plata, que comprehende su distrito",
"place": "En Pamplona",
"publisher": "Por Juan Micòn, Impressor",
"date": "1687",
"numPages": "24",
"callNumber": "VAULT Ayer 1343 .J515 P211 X2 1687",
"libraryCatalog": "i-share.carli.illinois.edu Library Catalog",
"shortTitle": "Insignes missioneros de la Compañia de Jesus en la prouincia del Paraguay"
}
]
}
]
/** END TEST CASES **/
100Frank Bennett^https?://opac\.nul\.nagoya-u\.ac\.jp/webopac/(catdbl\.do|ctlsrh\.do)// #######################
// ##### Sample URLs #####
// #######################
/*
* The site is session-based, with page content negotiated
* in POST calls. The starting point for an OPAC search is
* the URL below. In testing, I tried the following:
*
* - A search listing of books
* - A search listing of journals (no icon)
* - A mixed search listing of books and journals
* - A journal page (no icon)
* - A book page
*/
// http://opac.nul.nagoya-u.ac.jp/webopac/catsrk.do
// #####################
// ##### Constants #####
// #####################
/*
* Strings corresponding to variables
*/
var pageStrings = {
title: ['タイトル / 著者','Title / Author'],
year: ['出版・頒布','Publication'],
isbn: ['ISBN','ISBN'],
authors: ['著者名リンク','Author link'],
series: ['シリーズ情報','Series information']
};
var itemUrlBase = "http://opac.nul.nagoya-u.ac.jp/webopac/catdbl.do";
// ############################
// ##### String functions #####
// ############################
/*
* Chop a semicolon-delimited string of authors out of a raw title string,
* check it for Japanese characters, and save the raw string for each author
* to an array. If no Japanese authors were found, save directly to the item
* object.
*/
var parseRomanAuthors = function (item,data) {
var datastring = data['title'][0];
// don't bother if there is no author info
if ( ! datastring.match(/.*\/.*/) ) {
return true;
}
// cut off the title
datastring = datastring.replace(/.*\//, "");
// raise flag if there are japanese characters
var japanese_check = datastring.match(/.*[^- &0-9()\[\];:,.a-zA-Z].*/);
// replace comma with semicolon in certain cases, to prepare for split
datastring = datastring.replace(/,(\s+[a-zA-Z]{3,})/, ";$1");
datastring = datastring.replace(/,(\s+[a-zA-Z]{1}[^a-zA-Z])/, ";$1");
datastring = datastring.replace(/(\s+and\s+)/, "; ");
datastring = datastring.replace(/(\s+&\s+)/, "; ");
// split the authors
var authors = datastring.replace(/\|.*/, "").split(";");
// this is parsing the authors for a single work. if there is a special byline, we
// assume that it applies to all subsequent entries until overridden.
var authortype = 'author';
for (i in authors) {
item.authorstrings.push(authors[i]);
var authortypehint = authors[i].replace(/^([ ,.:a-z]*).*/, "$1");
if ( authortypehint.match(/.*(edit|organiz).*/) ) {
authortype = "editor";
} else if ( authortypehint.match(/.*trans.*/) ) {
authortype = "translator";
}
var author = authors[i].replace(/^[ a-z]*/, "").replace( /\.\.\..*/, "" );
// need to test for length because the replacement of commas with semicolons
// can cause a short split at the end of a byline that originally ended in a comma
if ( ! japanese_check && author.length ) {
item.creators.push(Zotero.Utilities.cleanAuthor(author, authortype));
}
}
return japanese_check;
}
/*
* For each author link, attempt to find a hint that the person
* is an editor or translator, first in the link text itself, then in
* the list of raw author strings captured by parseRomanAuthors.
* Clean out cruft, reverse the order of each name, and save
* directly to the item object.
*/
var parseJapaneseAuthors = function (item, data) {
var authortype = author;
var authors = data['authors'];
for (i in authors ) {
if ( authors[i].match(/.*編.*/) ) {
authortype = 'editor';
} else if ( authors[i].match(/.*訳.*/) ) {
authortype = 'translator';
} else {
authortype = 'author';
}
var author = authors[i].replace(/[*]/g,"").replace(/[0-9<()|].*/, "").replace(/(.*?),(.*)/, "$2 $1");
// If we claim to be an author, double-check in the English entries for a translator hint.
// This is an enormous pain, but the original records are a mess, with different conventions
// for Japanese and foreign records, sometimes mixed up in the same entry. What are you
// going to do.
for ( x in item.authorstrings ) {
var authorstring = item.authorstrings[x];
var name = author.split(" ");
name.reverse();
if ( authorstring.indexOf( name[0] ) > -1 && authorstring.match(/.*(訳|譯|譯註)$/) ) {
authortype = 'translator';
break;
} else if ( authorstring.indexOf( name[0] ) > -1 && authorstring.match(/.*(編|編著)$/) ) {
authortype = 'editor';
break;
}
}
delete item.authorstrings;
item.creators.push(Zotero.Utilities.cleanAuthor(author, authortype));
}
}
/*
* Split extracted title field. This always starts as a single list item,
* but can contain entries for several works, as in an omnibus volume of
* translated works, for example. Such records separate the elements of
* the omnibus with periods that have no trailing space, so we use that as
* the split point. We discard the phonetic information appended to the end
* of the string in Japanese records.
*/
function splitTitle(data) {
// split in data array
var titlestring = data['title'][0].replace(/\|.*/, "");
data['title'] = titlestring.split(" . ");
}
// ##########################
// ##### Page functions #####
// ##########################
/*
* When getlist argument is nil, return a value when the target
* index DOM contains at least one book entry, otherwise
* return false.
*
* When getlist argument is true, return a list of
* array items for book entries in the DOM.
*/
var sniffIndexPage = function(doc,getlist){
var check = doc.evaluate("//td[div[@class='lst_value' and contains(text(),'Books')]]/following-sibling::td", doc, null, XPathResult.ANY_TYPE, null);
var node = check.iterateNext();
if (getlist){
var ret = new Object();
while (node){
var myitems = Zotero.Utilities.getItemArray(
doc,
node,
"document\\.catsrhform\\.pkey.value=");
for (var r in myitems){
ret[r] = myitems[r];
}
node = check.iterateNext();
}
return ret;
} else {
return node;
}
};
/*
* Invoke sniffIndexPage to generate a list of book
* items in the target DOM.
*/
var getBookItems = function(doc){
return sniffIndexPage(doc,true);
};
/*
* Extract data from the DOM using the var-string pairs in
* pageStrings as a guide to navigation.
*/
var scrapePage = function(doc, spec) {
var namespace = doc.documentElement.namespaceURI;
var nsResolver = namespace ? function(prefix) {
if (prefix == 'x') return namespace; else return null;
} : null;
var data = new Object();
for (key in spec) {
var check = doc.evaluate("//th[div[contains(text(),'"+spec[key][0]+"') or contains(text(),'"+spec[key][1]+"')]]/following-sibling::td/div", doc, nsResolver, XPathResult.ANY_TYPE, null);
var c = check.iterateNext();
while (c) {
if (!data[key] ) {
data[key] = new Array();
}
data[key].push(Zotero.Utilities.trimInternal(c.textContent));
c = check.iterateNext();
}
}
return data;
};
/*
* Bring it all together.
*/
function scrapeAndParse(doc,url) {
if (!detectWeb(doc,url)){
return false;
}
var item = new Zotero.Item("book");
item.authorstrings = new Array();
var data = scrapePage(doc, pageStrings);
splitTitle(data);
if (data['title']) {
var titles = new Array();
for (i in data['title']) {
titles.push( data['title'][i].replace(/\s+\/.*/, "") );
}
item.title = titles.join(", ");
var jse_authors = parseRomanAuthors( item, data );
if ( jse_authors ) {
parseJapaneseAuthors( item, data );
}
}
if (data['year']) {
// sometimes there are multiple "date" fields, some of which are filled
// with other random information
for (i in data['year']) {
var year = data['year'][i];
if ( year.match(/.*[0-9]{3}.*/) ) {
item.date = year.replace(/.*?([0-9][.0-9][0-9]+).*/, "$1");
item.place = year.replace(/:.*/, "").replace(/[\[\]]/g, "");
item.publisher = year.replace(/.*:(.*),.*/, "$1");
break;
}
}
}
if (data['series']) {
item.series = data['series'][0].replace(/[/|<].*/, "");
}
if (data['isbn']) {
item.ISBN = data['isbn'][0].replace(/[^0-9]*([0-9]+).*/, "$1");
}
item.complete();
}
// #########################
// ##### API functions #####
// #########################
function detectWeb(doc, url) {
if (url.match(/.*\/webopac\/catdbl.do/)) {
var journal_test = doc.evaluate( '//th[div[contains(text(),"Frequency of publication") or contains(text(),"刊行頻度") or contains(text(),"巻号") or contains(text(),"Volumes")]]', doc, null, XPathResult.ANY_TYPE, null).iterateNext();
if (!journal_test) {
return "book";
}
} else if (url.match(/.*\/webopac\/ctlsrh.do/)){
if (sniffIndexPage(doc)){
return "multiple";
}
}
return false;
}
function doWeb(doc, url) {
var format = detectWeb(doc, url);
if (format == "multiple") {
var items = {};
Zotero.selectItems( getBookItems(doc), function (items) {
for (var u in items) {
var m = u.match(/.*document\.catsrhform\.pkey\.value=\'([^\']+)\'.*/);
items[itemUrlBase+"?pkey="+m[1]+"&initFlg=_RESULT_SET_NOTBIB"] = true;
}
var urls = [];
for (var u in items){
urls.push(u);
}
ZU.processDocuments(u, scrapeAndParse);
});
} else if (format == "book"){
scrapeAndParse(doc, url);
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://opac.nul.nagoya-u.ac.jp/webopac/catdbl.do?pkey=TY50091937&initFlg=_RESULT_SET_NOTBIB",
"items": [
{
"itemType": "book",
"creators": [
{
"firstName": "Jeremy",
"lastName": "Adelman",
"creatorType": "author"
}
],
"notes": [],
"tags": [],
"seeAlso": [],
"attachments": [],
"authorstrings": " Jeremy Adelman",
"title": "Frontier development : land, labour, and capital on the wheatlands of Argentina and Canada, 1890-1914",
"date": "1994",
"place": "Oxford",
"publisher": "Clarendon Press",
"series": "Oxford historical monographs",
"ISBN": "0198204418",
"libraryCatalog": "Nagoya University OPAC",
"shortTitle": "Frontier development"
}
]
}
]
/** END TEST CASES **/
100czar^https?://(.+?\.)?vice\.com//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2018 czar
http://en.wikipedia.org/wiki/User_talk:Czar
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function scrubLowercaseTags(tags) {
for (let tag of tags) {
if (tag == tag.toLowerCase()) {
tags[tags.indexOf(tag)] = ZU.capitalizeTitle(tag, true);
}
}
return tags;
}
// ignore i-d.vice.com and amuse.vice.com, which can both use Embedded Metadata and don't need this translator
function detectWeb(doc, url) {
if (url.includes('i-d.vice.com') || url.includes('amuse.vice.com')) {
return false;
}
else if (/\/(article|story)\//.test(url)) {
return "blogPost";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function scrape(doc, url) {
let item = new Zotero.Item('blogPost');
let json = JSON.parse(text(doc, 'script[type="application/ld+json"]'));
if (json) json = json["@graph"][1];
else Z.debug("JSON invalid");
item.title = json.headline;
item.abstractNote = attr(doc, 'meta[name="description"]', 'content');
item.blogTitle = "Vice";
item.date = json.dateModified || json.datePublished;
item.url = json.mainEntityOfPage['@id'];
item.language = attr(doc, 'html', 'lang');
// use XPath to support the rare multiple authors and fallback to JSON, which only lists one author
let authors = doc.querySelectorAll('.contributor__meta a');
if (authors) {
for (let author of authors) {
item.creators.push(ZU.cleanAuthor(author.text, "author"));
}
}
else item.creators.push(ZU.cleanAuthor(json.author.name, 'author'));
let tags = doc.querySelectorAll('.tags a');
if (tags) {
for (let tag of tags) {
item.tags.push(tag.text);
}
}
item.tags = scrubLowercaseTags(item.tags);
item.attachments.push({
document: doc,
title: 'Snapshot',
mimeType: "text/html"
});
item.complete();
}
function getSearchResults(doc, checkOnly) {
let items = {};
let found = false;
let rows = doc.querySelectorAll('.vice-card-hed a');
for (let row of rows) {
var href = row.href;
var title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.vice.com/en/article/padaqv/anti-g20-activists-told-us-what-they-brought-to-the-protest-in-hamburg",
"items": [
{
"itemType": "blogPost",
"title": "Anti-G20 Activists Told Us What They Brought to the Protest in Hamburg",
"creators": [
{
"firstName": "Alexander",
"lastName": "Indra",
"creatorType": "author"
}
],
"date": "2017-07-07T13:41:46.436Z",
"abstractNote": "\"My inflatable crocodile works as a shield against police batons, and as a seat. It also just lightens the mood.\"",
"blogTitle": "Vice",
"language": "en",
"url": "https://www.vice.com/en/article/padaqv/anti-g20-activists-told-us-what-they-brought-to-the-protest-in-hamburg",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Demo"
},
{
"tag": "Demonstration"
},
{
"tag": "G20"
},
{
"tag": "Hamburg"
},
{
"tag": "Protest"
},
{
"tag": "VICE Germany"
},
{
"tag": "VICE International"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.vice.com/en/article/bjxjbw/nina-freemans-games-really-get-millennial-romance",
"items": [
{
"itemType": "blogPost",
"title": "Nina Freeman’s Games Really Get Millennial Romance",
"creators": [
{
"firstName": "Kate",
"lastName": "Gray",
"creatorType": "author"
}
],
"date": "2017-07-09T18:00:00.000Z",
"abstractNote": "And by rummaging around our own pasts through them, we can better understand where we are, and where we’ve been, on all things sexual.",
"blogTitle": "Vice",
"language": "en",
"url": "https://www.vice.com/en/article/bjxjbw/nina-freemans-games-really-get-millennial-romance",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Awkward Teenage Rituals"
},
{
"tag": "Cibelle"
},
{
"tag": "GAMES"
},
{
"tag": "How Do You Do It"
},
{
"tag": "Lost Memories Dot Net"
},
{
"tag": "Msn"
},
{
"tag": "Nina Freeman"
},
{
"tag": "Romance"
},
{
"tag": "Waypoint"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.vice.com/de/article/59pdy5/wie-kaputte-handys-und-profite-die-g20-gegner-antreiben",
"items": [
{
"itemType": "blogPost",
"title": "Wie kaputte Handys und Profite die G20-Gegner antreiben",
"creators": [
{
"firstName": "Laura",
"lastName": "Meschede",
"creatorType": "author"
}
],
"date": "2017-07-09T10:47:09.008Z",
"abstractNote": "Der Rüstungsgegner, die Umweltschützerin und die Hippiefrau: Ich glaube, eigentlich haben sie das gleiche Ziel. Sie haben es auf ihren Plakaten nur unterschiedlich formuliert.",
"blogTitle": "Vice",
"language": "de",
"url": "https://www.vice.com/de/article/59pdy5/wie-kaputte-handys-und-profite-die-g20-gegner-antreiben",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Hamburg"
},
{
"tag": "Kapitalismus"
},
{
"tag": "Laura Meschede"
},
{
"tag": "Meinung"
},
{
"tag": "Wirtschaft"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.vice.com/en/article/434pxm/voters-may-soon-toughen-up-americas-weakest-police-shootings-law",
"items": [
{
"itemType": "blogPost",
"title": "Voters may soon toughen up America’s weakest police shootings law",
"creators": [
{
"firstName": "Carter",
"lastName": "Sherman",
"creatorType": "author"
}
],
"date": "2017-07-07T12:17:51.000Z",
"abstractNote": "VICE is the definitive guide to enlightening information.",
"blogTitle": "Vice",
"language": "en",
"url": "https://www.vice.com/en/article/434pxm/voters-may-soon-toughen-up-americas-weakest-police-shootings-law",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Ballot Initiative"
},
{
"tag": "Charleena Lyles"
},
{
"tag": "Che Taylor"
},
{
"tag": "Crime"
},
{
"tag": "Criminal Justice"
},
{
"tag": "Law Enforcement"
},
{
"tag": "News"
},
{
"tag": "Not This Time"
},
{
"tag": "Police"
},
{
"tag": "Police Deadly Force"
},
{
"tag": "Politics"
},
{
"tag": "Seattle"
},
{
"tag": "VICE News"
},
{
"tag": "Washington State"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.vice.com/en/section/games?page=2",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.vice.com/de",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.vice.com/en/topic/thump?q=venetian",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.vice.com/en/article/y3dpyw/inside-crime-app-citizen-vigilante",
"items": [
{
"itemType": "blogPost",
"title": "'FIND THIS FUCK:' Inside Citizen’s Dangerous Effort to Cash In On Vigilantism",
"creators": [
{
"firstName": "Joseph",
"lastName": "Cox",
"creatorType": "author"
},
{
"firstName": "Jason",
"lastName": "Koebler",
"creatorType": "author"
}
],
"date": "2021-05-27T18:11:39.649Z",
"abstractNote": "Internal documents, messages, and roadmaps show how crime app Citizen is pushing the boundary of what a private, app-enabled vigilante force may be capable of.",
"blogTitle": "Vice",
"language": "en",
"shortTitle": "'FIND THIS FUCK",
"url": "https://www.vice.com/en/article/y3dpyw/inside-crime-app-citizen-vigilante",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Andrew Frame"
},
{
"tag": "CYBER"
},
{
"tag": "LAPD"
},
{
"tag": "Los Angeles"
},
{
"tag": "Private Security"
},
{
"tag": "RACISM"
},
{
"tag": "SURVEILLANCE"
},
{
"tag": "Vigilante"
},
{
"tag": "Wild Fire"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Philipp Zumstein, Pieter van der Wees^https?://(www\.)?eur-lex\.europa\.eu/(legal-content/[A-Z][A-Z]/(TXT|ALL)/|search\.html\?)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2017-2021 Philipp Zumstein, Pieter van der Wees
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
// the eli resource types are described at:
// https://op.europa.eu/en/web/eu-vocabularies/at-dataset/-/resource/dataset/resource-type
// all types not mapped below are saved as bills
const typeMapping = {
DIR: "bill", // directive
REG: "statute", // regulation
DEC: "statute", // decision
RECO: "report", // recommendation
OPI: "report", // opinion
CONS: "statute", // consolidated text
TREATY: "statute", // treaty
};
function detectWeb(doc, _url) {
var docSector = attr(doc, 'meta[name="WT.z_docSector"]', 'content');
var eliTypeURI = attr(doc, 'meta[property="eli:type_document"]', 'resource');
if (eliTypeURI) {
var eliType = eliTypeURI.split("/").pop();
var eliCategory = eliType.split("_")[0];
var type = typeMapping[eliCategory];
if (type) {
return type;
}
else {
Z.debug("Unknown eliType: " + eliType);
return "bill";
}
}
else if (docSector == "6") {
return "case";
}
else if (docSector && docSector !== "other") {
return "bill";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll("a.title");
for (let i = 0; i < rows.length; i++) {
let href = rows[i].href;
let title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
// we need to remember the language in search page to use the same for
// individual entry page
var autoLanguage;
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
var m = url.match(/\blocale=([a-z][a-z])/);
if (m) {
autoLanguage = m[1];
}
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
// this maps language codes from ISO 639-1 to 639-3 and adds court names
// see https://op.europa.eu/en/web/eu-vocabularies/at-dataset/-/resource/dataset/court-type
function LMObj(iso, ECJ, GC, CST) {
this.iso = iso;
this.ECJ = ECJ;
this.GC = GC;
this.CST = CST;
}
const languageMapping = {
BG: new LMObj("BUL", "Съд", "Общ съд", "Съд на публичната служба"),
CS: new LMObj("CES", "Soudní dvůr", "Tribunál", "Soud pro veřejnou službu"),
DA: new LMObj("DAN", "EU-Domstolen", "EU-Retten", "EU-Personalretten"),
DE: new LMObj("DEU", "EuGH", "Gerichtshof", "Gericht für den öffentlichen Dienst"),
EL: new LMObj("ELL", "Δικαστήριο", "Γενικό Δικαστήριο", "Δικαστήριο Δημόσιας Διοίκησης"),
EN: new LMObj("ENG", "ECJ", "GC", "CST"),
ES: new LMObj("SPA", "TJUE", "Tribunal General", "Tribunal de la Función Pública"),
ET: new LMObj("EST", "Euroopa Kohus", "Üldkohus", "Avaliku Teenistuse Kohus"),
FI: new LMObj("FIN", "Unionin tuomioistuin", "Unionin yleinen tuomioistuin", "Virkamiestuomioistuin"),
FR: new LMObj("FRA", "Cour de justice", "Tribunal", "Tribunal de la fonction publique"),
GA: new LMObj("GLE", "An Chúirt Bhreithiúnais", "Cúirt Ghinearálta", "An Binse um Sheirbhís Shibhialta"),
HR: new LMObj("HRV", "Europski sud", "Opći sud", "Službenički sud"),
HU: new LMObj("HUN", "A Bíróság", "Törvényszék", "Közszolgálati Törvényszék"),
IT: new LMObj("ITA", "Corte di giustizia", "Tribunale", "Tribunale della funzione pubblica"),
LV: new LMObj("LAV", "Tiesa", "Vispārējā tiesa", "Civildienesta tiesa"),
LT: new LMObj("LIT", "Teisingumo Teismas", "Bendrasis Teismas", "Tarnautojų teismas"),
MT: new LMObj("MLT", "Il-Qorti tal-Ġustizzja", "Il-Qorti Ġenerali", "Il-Tribunal għas-Servizz Pubbliku"),
NL: new LMObj("NLD", "HvJ EU", "Gerecht EU", "GvA EU"),
PL: new LMObj("POL", "Trybunał Sprawiedliwości", "Sąd", "Sąd do spraw Służby Publicznej"),
PT: new LMObj("POR", "Tribunal Europeu de Justiça", "Tribunal Geral", "Tribunal da Função Pública"),
RO: new LMObj("RON", "Curtea Europeană de Justiție", "Tribunalul", "Tribunalul Funcţiei Publice"),
SK: new LMObj("SLK", "Súdny dvor", "Všeobecný súd", "Súd pre verejnú službu"),
SL: new LMObj("SLV", "Sodišče", "Splošno sodišče", "Sodišče za uslužbence"),
SV: new LMObj("SWE", "Domstolen", "Tribunalen", "Personaldomstolen")
};
function scrape(doc, url) {
// declare meta variables present for all sectors
// var docSector = attr(doc, 'meta[name="WT.z_docSector"]', 'content');
var docType = attr(doc, 'meta[name="WT.z_docType"]', 'content');
var celex = attr(doc, 'meta[name="WT.z_docID"]', 'content');
var eliTypeUri = (attr(doc, 'meta[property="eli:type_document"]', "resource"));
var type = detectWeb(doc, url);
var item = new Zotero.Item(type);
// determine the language in which we are currently viewing the document
var languageUrl = url.split("/")[4].toUpperCase();
if (languageUrl == "AUTO") {
languageUrl = autoLanguage || "EN";
}
var language = languageMapping[languageUrl].iso || "eng";
// Cases only return language; discard everything else
item.language = languageUrl.toLowerCase();
if (eliTypeUri) {
// type: everything with ELI (see var typeMapping: bill, statute, report)
item.title = attr(doc, 'meta[property="eli:title"][lang=' + languageUrl.toLowerCase() + "]", "content");
var uri = attr(doc, "#format_language_table_digital_sign_act_" + languageUrl.toUpperCase(), "href");
if (uri) {
var uriParts = uri.split("/").pop().replace("?uri=", "")
.split(":");
// e.g. uriParts = ["OJ", "L", "1995", "281", "TOC"]
// e.g. uriParts = ["DD", "03", "061", "TOC", "FI"]
if (uriParts.length >= 4) {
if (/\d+/.test(uriParts[1])) {
item.code = uriParts[0];
item.codeNumber = uriParts[1] + ", " + uriParts[2];
}
else {
item.code = uriParts[0] + " " + uriParts[1];
item.codeNumber = uriParts[3];
}
}
if (type == "bill") {
item.codeVolume = item.codeNumber;
item.codeNumber = null;
}
}
item.date = attr(doc, 'meta[property="eli:date_document"]', "content");
if (!item.date) {
item.date = attr(doc, 'meta[property="eli:date_publication"]', "content");
}
var passedBy = doc.querySelectorAll('meta[property="eli:passed_by"]');
var passedByArray = [];
for (let i = 0; i < passedBy.length; i++) {
passedByArray.push(passedBy[i].getAttribute("resource").split("/").pop());
}
item.legislativeBody = passedByArray.join(", ");
item.url = attr(doc, 'meta[typeOf="eli:LegalResource"]', "about") + "/" + language.toLowerCase();
}
else if (item.itemType == "case") {
// type: case
// pretty hacky stuff, as there's little metadata available
var docCourt = docType.substr(0, 1);
if (docCourt == "C") {
item.court = languageMapping[languageUrl].ECJ || languageMapping.EN.ECJ;
}
else if (docCourt == "T") {
item.court = languageMapping[languageUrl].GC || languageMapping.EN.GC;
}
else if (docCourt == "F") {
item.court = languageMapping[languageUrl].CST || languageMapping.EN.CST;
}
item.url = url;
if (docType.substr(1) == "J") { // Judgments
var titleParts = attr(doc, 'meta[name="WT.z_docTitle"]', "content").replace(/\./g, "").split("#");
if (titleParts.length > 1) {
item.caseName = titleParts[1];
item.abstractNote = titleParts[titleParts.length - 2];
item.docketNumber = titleParts.pop();
item.dateDecided = titleParts[0].substr(titleParts[0].search(/[0-9]/g));
}
}
else { // Orders, summaries, etc.
item.caseName = attr(doc, 'meta[name="WT.z_docTitle"]', "content").replace(/#/g, " ");
item.dateDecided = celex.substr(1, 4);
}
}
else {
// type: bill
item.title = attr(doc, 'meta[name="WT.z_docTitle"]', "content");
item.date = celex.substr(1, 4);
item.url = url;
if (docType == "C") {
var celexCParts = celex.substr(1).split("/");
item.code = "OJ C";
item.codeVolume = celexCParts[1];
item.codePages = celexCParts[2];
}
}
// attachments
// type: all
var pdfurl = "https://eur-lex.europa.eu/legal-content/" + languageUrl + "/TXT/PDF/?uri=CELEX:" + celex;
var htmlurl = "https://eur-lex.europa.eu/legal-content/" + languageUrl + "/TXT/HTML/?uri=CELEX:" + celex;
item.attachments = [{ url: pdfurl, title: "EUR-Lex PDF (" + languageUrl + ")", mimeType: "application/pdf" }];
item.attachments.push({ url: htmlurl, title: "EUR-Lex HTML (" + languageUrl + ")", mimeType: "text/html", snapshot: true });
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:31995L0046",
"items": [
{
"itemType": "bill",
"title": "Directive 95/46/EC of the European Parliament and of the Council of 24 October 1995 on the protection of individuals with regard to the processing of personal data and on the free movement of such data",
"creators": [],
"date": "1995-10-24",
"code": "OJ L",
"codeVolume": "281",
"language": "en",
"legislativeBody": "EP, CONSIL",
"url": "http://data.europa.eu/eli/dir/1995/46/oj/eng",
"attachments": [
{
"title": "EUR-Lex PDF (EN)",
"mimeType": "application/pdf"
},
{
"title": "EUR-Lex HTML (EN)",
"mimeType": "text/html",
"snapshot": true
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://eur-lex.europa.eu/legal-content/FR/TXT/?uri=CELEX:31994R2257",
"items": [
{
"itemType": "statute",
"nameOfAct": "Règlement (CE) n° 2257/94 de la Commission, du 16 septembre 1994, fixant des normes de qualité pour les bananes (Texte présentant de l'intérêt pour l'EEE)",
"creators": [],
"dateEnacted": "1994-09-16",
"code": "OJ L",
"codeNumber": "245",
"language": "fr",
"url": "http://data.europa.eu/eli/reg/1994/2257/oj/fra",
"attachments": [
{
"title": "EUR-Lex PDF (FR)",
"mimeType": "application/pdf"
},
{
"title": "EUR-Lex HTML (FR)",
"mimeType": "text/html",
"snapshot": true
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://eur-lex.europa.eu/search.html?lang=en&text=%22open+access%22&qid=1513887127793&type=quick&scope=EURLEX&locale=nl",
"items": "multiple"
},
{
"type": "web",
"url": "https://eur-lex.europa.eu/legal-content/NL/TXT/?uri=CELEX:62019CJ0245",
"items": [
{
"itemType": "case",
"caseName": "État luxembourgeois tegen B en État luxembourgeois tegen B ea",
"creators": [],
"dateDecided": "6 oktober 2020",
"abstractNote": "Prejudiciële verwijzing – Richtlijn 2011/16/EU – Administratieve samenwerking op het gebied van de belastingen – Artikelen 1 en 5 – Bevel tot het verstrekken van inlichtingen aan de bevoegde autoriteit van een lidstaat, die handelt naar aanleiding van een verzoek tot uitwisseling van inlichtingen van de bevoegde autoriteit van een andere lidstaat – Persoon die in het bezit is van de informatie waarvan de bevoegde autoriteit van eerstbedoelde lidstaat heeft bevolen dat deze moet worden verstrekt – Belastingplichtige tegen wie het onderzoek loopt dat aanleiding heeft gegeven tot het verzoek van de bevoegde autoriteit van de tweede lidstaat – Derden met wie deze belastingplichtige juridische, bancaire, financiële of, meer in het algemeen, economische banden onderhoudt – Rechtsbescherming – Handvest van de grondrechten van de Europese Unie – Artikel 47 – Recht op een doeltreffende voorziening in rechte – Artikel 52, lid 1 – Beperking – Rechtsgrondslag – Eerbiediging van de wezenlijke inhoud van het recht op een doeltreffende voorziening in rechte – Bestaan van een rechtsmiddel dat de betrokken justitiabelen de mogelijkheid biedt alle relevante feitelijke en juridische kwesties doeltreffend te laten toetsen en een daadwerkelijke rechtsbescherming van hun door het Unierecht gewaarborgde rechten te genieten – Door de Unie erkende doelstelling van algemeen belang – Bestrijding van internationale belastingfraude en ‑ontwijking – Evenredigheid – Criterium dat de informatie waarop het bevel tot het verstrekken van inlichtingen betrekking heeft ‚naar verwachting van belang is’ – Rechterlijke toetsing – Omvang – In aanmerking te nemen persoonlijke, temporele en materiële gegevens",
"court": "HvJ EU",
"docketNumber": "Gevoegde zaken C-245/19 en C-246/19",
"language": "nl",
"url": "https://eur-lex.europa.eu/legal-content/NL/TXT/?uri=CELEX:62019CJ0245",
"attachments": [
{
"title": "EUR-Lex PDF (NL)",
"mimeType": "application/pdf"
},
{
"title": "EUR-Lex HTML (NL)",
"mimeType": "text/html",
"snapshot": true
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://eur-lex.europa.eu/legal-content/CS/TXT/?uri=uriserv%3AOJ.C_.2021.014.01.0001.01.CES&toc=OJ%3AC%3A2021%3A014%3ATOC",
"items": [
{
"itemType": "bill",
"title": "Bez námitek k navrhovanému spojení (Věc M.10068 — Brookfield/Mansa/Polenergia) (Text s významem pro EHP) 2021/C 14/01",
"creators": [],
"date": "2021",
"language": "cs",
"url": "https://eur-lex.europa.eu/legal-content/CS/TXT/?uri=uriserv%3AOJ.C_.2021.014.01.0001.01.CES&toc=OJ%3AC%3A2021%3A014%3ATOC",
"attachments": [
{
"title": "EUR-Lex PDF (CS)",
"mimeType": "application/pdf"
},
{
"title": "EUR-Lex HTML (CS)",
"mimeType": "text/html",
"snapshot": true
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://eur-lex.europa.eu/legal-content/MT/TXT/?uri=CELEX%3A62009TJ0201",
"items": [
{
"itemType": "case",
"caseName": "Rügen Fisch AG vs l-Uffiċċju għall-Armonizzazzjoni fis-Suq Intern (trademarks u disinni) (UASI)",
"creators": [],
"dateDecided": "21 ta' Settembru 2011",
"abstractNote": "Trade mark Komunitarja - Proċedimenti għal dikjarazzjoni ta’ invalidità - Trade mark Komunitarja verbali SCOMBER MIX - Raġuni assoluta għal rifjut - Karattru deskrittiv - Artikolu 7(1)(b) u (ċ) tar-Regolament (KE) Nru 40/94 [li sar l-Artikolu 7(1)(b) u (c) tar-Regolament (KE) Nru 207/2009]",
"court": "Il-Qorti Ġenerali",
"docketNumber": "Kawża T-201/09",
"language": "mt",
"url": "https://eur-lex.europa.eu/legal-content/MT/TXT/?uri=CELEX%3A62009TJ0201",
"attachments": [
{
"title": "EUR-Lex PDF (MT)",
"mimeType": "application/pdf"
},
{
"title": "EUR-Lex HTML (MT)",
"mimeType": "text/html",
"snapshot": true
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Reuben Peterkin^https?://infoweb\.newsbank\.com//*
***** BEGIN LICENSE BLOCK *****
NewsBank translator Copyright © 2021 Reuben Peterkin
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, _url) {
if (getRISElement(doc)) return "newspaperArticle";
if (getSearchResults(doc, true)) return "multiple";
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {}, found = false;
var rows = doc.querySelectorAll('article');
if (!rows.length) rows = doc.querySelectorAll('.hit');
if (!rows.length) return false;
for (let row of rows) {
var title = row.querySelector('.search-hits__hit__title')
|| row.querySelector('.article-title');
var link = row.querySelector('a');
var prefix = text(link, '.element-invisible');
if (!title || !link) continue;
found = true;
if (checkOnly) return true;
items[link.href] = ZU.trimInternal(title.textContent.replace(prefix, ''));
}
return found ? items : false;
}
function getRISElement(doc) {
return doc.getElementById('nbplatform-noodletools-export-risdatabyformpost')
|| doc.querySelector('.action-link--exportcitation');
}
function getItem(doc, url) {
var risElem = getRISElement(doc);
if (risElem.href) {
ZU.doGet(risElem.href, risText => itemFromRIS(doc, url, risText));
}
else {
itemFromRIS(doc, url, risElem.textContent.trim());
}
}
function itemFromRIS(doc, url, risText) {
// Z.debug(risText);
var trans = Zotero.loadTranslator('import');
// RIS
trans.setTranslator('32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7');
trans.setString(risText);
trans.setHandler('itemDone', function (obj, item) {
if (item.pages) {
item.pages = item.pages
.replace(/\bpage\b\s*/gi, '')
.replace(/,(\S)/g, ', $1');
}
let openURL = attr(doc, '.action-link--bookmark', 'onclick')
.match(/f_openurl=([^&'"]+)/);
item.url = text(doc, '.actions-bar__urltext')
|| (openURL && decodeURIComponent(openURL[1]))
|| url;
let pdfURL = attr(doc, '.action-link--pdf', 'href');
if (pdfURL) {
item.attachments.push({
title: 'Full Text PDF',
mimeType: 'application/pdf',
url: pdfURL
});
}
else {
item.attachments.push({
title: 'Snapshot',
document: doc
});
}
item.complete();
});
trans.translate();
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
var items = getSearchResults(doc);
// Zotero.debug(items);
Zotero.selectItems(items, function (items) {
if (!items) return;
ZU.processDocuments(Object.keys(items), getItem);
});
}
else {
getItem(doc, url);
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://infoweb.newsbank.com/apps/news/openurl?ctx_ver=z39.88-2004&rft_id=info%3Asid/infoweb.newsbank.com&svc_dat=AWNB&req_dat=3AD092142963457FA426C327101D0723&rft_val_format=info%3Aofi/fmt%3Akev%3Amtx%3Actx&rft_dat=document_id%3Anews%252F16579C8CD2790100",
"items": [
{
"itemType": "newspaperArticle",
"title": "Rare animals among body count at Scottish zoos",
"creators": [
{
"lastName": "Macaskill",
"firstName": "Mark",
"creatorType": "author"
}
],
"date": "July 2, 2017",
"archive": "Access World News",
"libraryCatalog": "NewsBank",
"pages": "3",
"publicationTitle": "Sunday Times, The (London, England)",
"url": "https://infoweb.newsbank.com/apps/news/openurl?ctx_ver=z39.88-2004&rft_id=info%3Asid/infoweb.newsbank.com&svc_dat=AWNB&req_dat=3AD092142963457FA426C327101D0723&rft_val_format=info%3Aofi/fmt%3Akev%3Amtx%3Actx&rft_dat=document_id%3Anews%252F16579C8CD2790100",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [
{
"note": "<p>SQN: 127147919</p>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://docs.newsbank.com/openurl?ctx_ver=z39.88-2004&rft_id=info:sid/iw.newsbank.com:FBISX&rft_val_format=info:ofi/fmt:kev:mtx:ctx&rft_dat=11E3F3AD6E1A9CC0&svc_dat=HistArchive:fbisdoc&req_dat=0D0CB57AB53DF815",
"items": [
{
"itemType": "newspaperArticle",
"title": "Airport Closed to Night Traffic",
"creators": [],
"date": "May 29, 1975",
"libraryCatalog": "NewsBank",
"pages": "B1, B2",
"publicationTitle": "Djibouti Domestic Service",
"url": "https://docs.newsbank.com/openurl?ctx_ver=z39.88-2004&rft_id=info:sid/iw.newsbank.com:FBISX&rft_val_format=info:ofi/fmt:kev:mtx:ctx&rft_dat=11E3F3AD6E1A9CC0&svc_dat=HistArchive:fbisdoc&req_dat=0D0CB57AB53DF815",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [
{
"note": "<p>Provider: NewsBank/Readex, Database: Foreign Broadcast Information Service (FBIS) Daily Reports, SQN: 11E3F3AC1DC571D8</p>"
}
],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Bo An^https?://(www\.)?prchistory\.org//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Bo An
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
const articles = getArticles(doc, url);
if (!articles) {
return false;
}
else {
return 'multiple';
}
}
function doWeb(doc, url) {
const articles = getArticles(doc, url);
if (articles) {
Zotero.selectItems(articles, (items) => {
if (!items) {
return true;
}
for (const i in items) {
let isIssue = false;
let isSingleArticle = false;
let isHomePage = isHomePageUrl(url);
// if it's the homepage, treat links as individual journal articles without a dedicated child page, otherwise as issue articles.
if (!isHomePage) {
// if it's not homepage, further check if it is single article issue, or multiple article issue.
isSingleArticle = Object.keys(articles).length === 1;
// when there is only one article on a child page. This usually is the case with a single research paper with its own page. Note this is NOT how many items are selected by the user to add to Zotero.
isIssue = !isSingleArticle;
}
// pass issue information to scraper
scrape(doc, i, isIssue, isSingleArticle);
}
return true;
});
}
}
function getArticles(doc, url) {
let items = {};
let found = false;
// since PRC history review provides downlodable links on both the home page and its children issue pages, we need to:
if (isHomePageUrl(url)) {
const pdfLinkEls = doc.querySelectorAll('a');
pdfLinkEls.forEach((link) => {
const href = link.href;
const hasPDF = isPdfUrl(href);
if (hasPDF) {
items[href] = link.textContent;
if (found === false) {
found = true;
}
}
});
}
else {
const bookLinkEls = doc.querySelectorAll('p, h5');
bookLinkEls.forEach((bookLinkEl) => {
const link = bookLinkEl.querySelectorAll('a')[0];
if (link) {
const href = link.href;
const hasPDF = isPdfUrl(href);
if (hasPDF) {
const title = link.textContent;
if (!title.toLowerCase().includes('here') && title.length > 6) {
items[href] = title;
if (found === false) {
found = true;
}
}
}
}
});
}
return found ? items : false;
}
// since PRC history review often directly link to pdf, the url here, unlike press journal articles, is often an PDF link.
function scrape(doc, url, isIssue, isSingleArticle) {
let articleLinkEls;
if (isIssue) {
articleLinkEls = doc.querySelectorAll('p, h5');
}
else {
articleLinkEls = doc.querySelectorAll('h5, h6');
}
// in order to decouple scraping from detection, the same process of finding a journal article link is repeated to access the text info associated with that link. That way, detecting functions do not need to provide any other info than the url.
articleLinkEls.forEach((articleDivEl, index) => {
const linkEl = articleDivEl.querySelectorAll("a")[0];
if (!linkEl) {
return;
}
const href = linkEl.href;
if (href === url) {
const hasPDF = isPdfUrl(href);
if (hasPDF) {
const newItem = new Zotero.Item('journalArticle');
newItem.publicationTitle = "The PRC History Review";
// add title
if (isIssue) {
newItem.title = linkEl.textContent;
}
else if (isSingleArticle) {
const rawTitle = linkEl.textContent;
const rawTitleParts = rawTitle.split(',');
rawTitleParts.shift();
newItem.title = rawTitleParts.join(",").replace(/[”“]/g, '');
}
else {
// if it is homepage link, parse the one-link raw title into title and other info.
const rawTitle = linkEl.textContent;
const rawTitleParts = rawTitle.split(':');
const firstPart = rawTitleParts[0];
const hasSeriesInfo = firstPart && firstPart.toLowerCase().endsWith('series');
if (hasSeriesInfo) {
newItem.seriesTitle = firstPart;
// remove series title, leaving the rest as title;
rawTitleParts.shift();
newItem.title = rawTitleParts.join(":");
}
else {
newItem.title = rawTitle;
}
}
// add issue info
if (isIssue) {
const issueInfoEl = doc.querySelectorAll('h5')[0];
if (issueInfoEl) {
const issueInfoArray = issueInfoEl.textContent.split('★');
if (issueInfoArray.length === 3) {
const volume = issueInfoArray[0];
newItem.volume = volume.toLowerCase().replace('volume', '').trim();
const issue = issueInfoArray[1];
newItem.issue = issue.toLowerCase().replace('number', '').trim();
const date = issueInfoArray[2];
newItem.date = ZU.strToISO(date);
}
}
}
else if (isSingleArticle) {
// if it's single article page, the issue info is two divs above the link div.
const issueInfoElIndex = index - 2;
if (issueInfoElIndex >= 0) {
const issueInfoEl = doc.querySelectorAll('h5')[issueInfoElIndex];
if (issueInfoEl) {
const issueInfoArray = issueInfoEl.textContent.split('★');
if (issueInfoArray.length === 3) {
const volume = issueInfoArray[0];
newItem.volume = volume.toLowerCase().replace('volume', '').trim();
const issue = issueInfoArray[1];
newItem.issue = issue.toLowerCase().replace('number', '').trim();
const date = issueInfoArray[2];
newItem.date = ZU.strToISO(date);
}
}
}
}
else {
// if it's homepage article, the issue info is in the previous div.
const lastIndex = index - 1;
if (lastIndex >= 0) {
const issueInfoEl = articleLinkEls[lastIndex];
const issueInfoArray = issueInfoEl.textContent.split('★');
if (issueInfoArray.length === 2) {
const issue = issueInfoArray[0];
newItem.issue = issue.toLowerCase().replace('number', '').trim();
const date = issueInfoArray[1];
newItem.date = ZU.strToISO(date);
}
}
}
// add author
// for issue authors
if (isIssue) {
const authorEl = articleLinkEls[index + 1];
if (authorEl) {
// in case there are multiple authors
const authorTexts = authorEl.textContent.trim().split(' and ');
authorTexts.forEach((authorText) => {
const authorName = authorText.split(',')[0];
if (authorName) {
newItem.creators.push(ZU.cleanAuthor(authorName, 'author', false));
}
});
}
}
// for single article issue's author information
if (isSingleArticle) {
const rawAuthorText = linkEl.textContent.split(',')[0];
if (rawAuthorText) {
const authorTexts = rawAuthorText.trim().split(' and ');
authorTexts.forEach((authorText) => {
const authorName = authorText.split(',')[0];
if (authorName) {
newItem.creators.push(ZU.cleanAuthor(authorName, 'author', false));
}
});
}
}
// Download pdf
const pdfUrl = url;
if (pdfUrl && isPdfUrl) {
newItem.attachments.push({
url: pdfUrl,
mimeType: "application/pdf",
});
}
newItem.complete();
}
}
});
}
// helper functions.
function isPdfUrl(url) {
return url.toLowerCase().endsWith('.pdf');
}
function isHomePageUrl(url) {
return url.endsWith('the-prc-history-review/');
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://prchistory.org/review-october-2021/",
"items": "multiple"
},
{
"type": "web",
"url": "http://prchistory.org/the-prc-history-review-5-2/",
"items": "multiple"
},
{
"type": "web",
"url": "http://prchistory.org/review-october-2017/",
"items": "multiple"
},
{
"type": "web",
"url": "http://prchistory.org/review-april-2017/",
"items": "multiple"
},
{
"type": "web",
"url": "http://prchistory.org/issue_6_3/",
"items": "multiple"
}
]
/** END TEST CASES **/
100Abe Jellinek and Jim Miazek^https?://[^?&]*(?:gale|galegroup|galetesting|ggtest)\.com(?:\:\d+)?/ps//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek and Jim Miazek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/ps/eToc.do')
|| text(doc, 'h1.page-header').includes("Table of Contents")
|| doc.querySelector('.bookPreview')) {
return "book";
}
if (doc.querySelector('#searchResults')
|| url.includes('/Search.do')
|| url.includes('/paginate.do')) {
if (getSearchResults(doc, true)) {
return "multiple";
}
else if (doc.querySelector('#searchResults')) {
Z.monitorDOMChanges(doc.querySelector('#searchResults'));
}
}
let publisherType = attr(doc, '.zotero', 'data-zoterolabel');
if (publisherType) {
Z.debug('Using publisher-provided item type: ' + publisherType);
return publisherType;
}
if (doc.querySelector('a[data-gtm-feature="bookView"]')) {
return "bookSection";
}
else if (doc.body.classList.contains('document-page')) {
// not the greatest fallback... other guesses we could use?
return "magazineArticle";
}
return false;
}
function getSearchResults(doc, checkOnly) {
let items = {};
let found = false;
let rows = doc.querySelectorAll('h3.title > a.documentLink');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
let citeData = doc.querySelector('input.citationToolsData');
let documentUrl = citeData.getAttribute('data-url');
// Value is URL-encoded when loaded via processDocuments()
documentUrl = decodeURIComponent(documentUrl);
let mcode = citeData.getAttribute('data-mcode');
let productName = citeData.getAttribute('data-productname');
let docId = mcode ? undefined : citeData.getAttribute('data-docid');
let documentData = JSON.stringify({
docId,
mcode,
documentUrl,
productName
});
let risPostBody = "citationFormat=RIS&documentData=" + encodeURIComponent(documentData).replace(/%20/g, "+");
let pdfURL = attr(doc, 'button[data-gtm-feature="download"]', 'data-url');
ZU.doPost('/ps/citationtools/rest/cite/download', risPostBody, function (text) {
let translator = Zotero.loadTranslator("import");
// RIS
translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7");
translator.setString(text);
translator.setHandler("itemDone", function (obj, item) {
if (pdfURL) {
item.attachments.push({
url: pdfURL,
title: "Full Text PDF",
mimeType: "application/pdf"
});
}
if (item.ISSN) {
item.ISSN = Zotero.Utilities.cleanISSN(item.ISSN);
}
if (item.pages && item.pages.endsWith("+")) {
item.pages = item.pages.replace(/\+/, "-");
}
item.attachments.push({
title: "Snapshot",
document: doc
});
item.notes = [];
item.url = item.url.replace(/u=[^&]+&?/, '');
item.complete();
});
translator.translate();
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://go.gale.com/ps/i.do?p=GVRL&id=GALE%7C5BBU&v=2.1&it=etoc&sid=GVRL",
"items": [
{
"itemType": "book",
"title": "Arts and Humanities Through the Eras",
"creators": [
{
"lastName": "Bleiberg",
"firstName": "Edward I.",
"creatorType": "editor"
},
{
"lastName": "Evans",
"firstName": "James Allan",
"creatorType": "editor"
},
{
"lastName": "Figg",
"firstName": "Kristen Mossler",
"creatorType": "editor"
},
{
"lastName": "Soergel",
"firstName": "Philip M.",
"creatorType": "editor"
},
{
"lastName": "Friedman",
"firstName": "John Block",
"creatorType": "editor"
}
],
"date": "2005",
"archive": "Gale eBooks",
"libraryCatalog": "Gale",
"place": "Detroit, MI",
"publisher": "Gale",
"series": "Ancient Egypt 2675-332 B.C.E.",
"url": "https://link.gale.com/apps/pub/5BBU/GVRL?sid=bookmark-GVRL",
"volume": "1",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://go.gale.com/ps/i.do?p=GVRL&id=GALE%7CCX3427400755&v=2.1&it=r&sid=GVRL&asid=77ea673e",
"items": [
{
"itemType": "bookSection",
"title": "Ariosto, Ludovico",
"creators": [
{
"lastName": "Bleiberg",
"firstName": "Edward I.",
"creatorType": "editor"
},
{
"lastName": "Evans",
"firstName": "James Allan",
"creatorType": "editor"
},
{
"lastName": "Figg",
"firstName": "Kristen Mossler",
"creatorType": "editor"
},
{
"lastName": "Soergel",
"firstName": "Philip M.",
"creatorType": "editor"
},
{
"lastName": "Friedman",
"firstName": "John Block",
"creatorType": "editor"
}
],
"date": "2005",
"archive": "Gale eBooks",
"bookTitle": "Arts and Humanities Through the Eras",
"language": "English",
"libraryCatalog": "Gale",
"pages": "350-351",
"place": "Detroit, MI",
"publisher": "Gale",
"series": "Renaissance Europe 1300-1600",
"url": "https://link.gale.com/apps/doc/CX3427400755/GVRL?sid=bookmark-GVRL&xid=77ea673e",
"volume": "4",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Ariosto, Ludovico"
},
{
"tag": "Playwrights"
},
{
"tag": "Poets"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://go.gale.com/ps/i.do?st=Newspapers&lm=DA~119760101+-+119861231&searchResultsType=SingleTab&qt=TXT~%E2%80%9Csex+discrimination%E2%80%9D+AND+%28work+OR+employment%29+NOT+%22equal+pay%22&sw=w&ty=as&it=search&sid=bookmark-TTDA&p=TTDA&s=Pub+Date+Forward+Chron&v=2.1&asid=c2011dd0",
"items": "multiple"
},
{
"type": "web",
"url": "https://link.gale.com/apps/doc/CS168394274/TTDA?sid=bookmark-TTDA&xid=9943afcd",
"items": [
{
"itemType": "newspaperArticle",
"title": "The Times Diary",
"creators": [
{
"lastName": "PHS",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "January 2, 1976",
"ISSN": "0140-0460",
"archive": "The Times Digital Archive",
"extra": "10",
"language": "English",
"libraryCatalog": "Gale",
"pages": "10",
"publicationTitle": "The Times",
"url": "https://link.gale.com/apps/doc/CS168394274/TTDA?sid=bookmark-TTDA&xid=9943afcd",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Political parties"
},
{
"tag": "Wilson, Harold (British prime minister)"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Sebastian Karcher^https?://(www\.)?press\.uchicago\.edu/(ucp/books/|press/search.html)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Sebastian Karcher
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/book/')) {
return "book";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.resultsurl > a[href*="/book/"]');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
// translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
var authors = doc.querySelectorAll('.purchase-item-detail-title-desktop .author>a');
var authorString = text(doc, '.author-info');
var type = "author";
if (authorString.includes("Edited by")) {
type = "editor";
}
for (let author of authors) {
item.creators.push(ZU.cleanAuthor(author.textContent, type));
}
// Some authors aren't hyperlinked
if (authorString.includes(",")) {
// grab the text-only content of the author string
var moreAuthors = ZU.xpathText(doc, '//div[@class="purchase-item-detail-title-desktop"]//p[contains(@class, "author")]/text()');
// clean it.
moreAuthors = moreAuthors.replace(/^[^,]*[,\s]*/, "").replace(/^and/, "");
moreAuthors = moreAuthors.split(/,\s(?:and )?|\sand\s/);
for (let author of moreAuthors) {
item.creators.push(ZU.cleanAuthor(author, type));
}
}
var editors = text(doc, '.editor');
if (editors) {
var editorType = "editor";
if (editors.includes("Translated by")) {
editorType = "translator";
}
editors = editors.replace(/.+?\sby\s/, "");
editors = editors.split(/,\s(?:and )?|\sand\s/);
for (let editor of editors) {
item.creators.push(ZU.cleanAuthor(editor, editorType));
}
}
// title in metadata is without subtitle
var subtitle = text(doc, '.purchase-item-detail-title-desktop h2');
if (!item.title.includes(subtitle)) {
item.title += ": " + subtitle;
}
var details = text(doc, '.purchase-item-detail-details');
if (details) {
let numPages = details.match(/(\d+)\s*pages/);
if (numPages) item.numPages = numPages[1];
}
var publisher = text(doc, '.purchase-item-detail-distributor a');
if (publisher) {
item.publisher = publisher;
}
else {
item.publisher = "University of Chicago Press";
item.place = "Chicago, IL";
}
item.series = text(doc, '.series-name');
item.date = ZU.strToISO(text(doc, '.purchase-format-pubdate'));
item.ISBN = ZU.cleanISBN(text(doc, '.purchase-format-isbn'));
item.libraryCatalog = "University of Chicago Press";
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.addCustomFields({
});
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://press.uchicago.edu/ucp/books/book/chicago/E/bo3684144.html",
"items": [
{
"itemType": "book",
"title": "English Verb Classes and Alternations: A Preliminary Investigation",
"creators": [
{
"firstName": "Beth",
"lastName": "Levin",
"creatorType": "author"
}
],
"abstractNote": "In this rich reference work, Beth Levin classifies over 3,000 English verbs according to shared meaning and behavior. Levin starts with the hypothesis that a verb’s meaning influences its syntactic behavior and develops it into a powerful tool for studying the English verb lexicon. She shows how identifying verbs with similar syntactic behavior provides an effective means of distinguishing semantically coherent verb classes, and isolates these classes by examining verb behavior with respect to a wide range of syntactic alternations that reflect verb meaning. The first part of the book sets out alternate ways in which verbs can express their arguments. The second presents classes of verbs that share a kernel of meaning and explores in detail the behavior of each class, drawing on the alternations in the first part. Levin’s discussion of each class and alternation includes lists of relevant verbs, illustrative examples, comments on noteworthy properties, and bibliographic references. The result is an original, systematic picture of the organization of the verb inventory. Easy to use, English Verb Classes and Alternations sets the stage for further explorations of the interface between lexical semantics and syntax. It will prove indispensable for theoretical and computational linguists, psycholinguists, cognitive scientists, lexicographers, and teachers of English as a second language.",
"language": "en",
"libraryCatalog": "University of Chicago Press",
"numPages": "366",
"place": "Chicago, IL",
"publisher": "University of Chicago Press",
"shortTitle": "English Verb Classes and Alternations",
"url": "https://press.uchicago.edu/ucp/books/book/chicago/E/bo3684144.html",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://press.uchicago.edu/ucp/books/book/distributed/N/bo28224328.html",
"items": [
{
"itemType": "book",
"title": "Not for Patching: A Strategic Welfare Review",
"creators": [
{
"firstName": "Frank",
"lastName": "Field",
"creatorType": "author"
},
{
"firstName": "Andrew",
"lastName": "Forsey",
"creatorType": "author"
}
],
"abstractNote": "In his famous report of 1942, the economist and social reformer William Beveridge wrote that World War II was a “revolutionary moment in the world’s history” and so a time “for revolutions, not for patching.” The Beveridge Report outlined the welfare state that Atlee’s government would go on to implement after 1946, instituting, for the first time, a national system of benefits to protect all from “the cradle to the grave.” Its crowning glory was the National Health Service, established in 1948, which provided free medical care for all at the point of delivery. Since then, the welfare system has been patched, beset by muddled thinking and short-termism. The British government spends more than £171 billion every year on welfare—and yet, since the Beveridge Report, there has been no strategic review of the system, compared to other areas of government and public policy, which have been subject to frequent strategic reviews. Reform of the welfare system need not mean dismantlement, Frank Field and Andrew Forsey argue here, but serious questions nonetheless must be asked about how the welfare state as we understand it can remain sustainable as the twenty-first century progresses.",
"language": "en",
"libraryCatalog": "University of Chicago Press",
"numPages": "120",
"publisher": "Haus Publishing",
"series": "Haus Curiosities",
"shortTitle": "Not for Patching",
"url": "https://press.uchicago.edu/ucp/books/book/distributed/N/bo28224328.html",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://press.uchicago.edu/ucp/books/book/chicago/C/bo3624192.html",
"items": [
{
"itemType": "book",
"title": "Civil Society and the Political Imagination in Africa: Critical Perspectives",
"creators": [
{
"firstName": "John L.",
"lastName": "Comaroff",
"creatorType": "editor"
},
{
"firstName": "Jean",
"lastName": "Comaroff",
"creatorType": "editor"
}
],
"abstractNote": "The essays in this important new collection explore the diverse, unexpected, and controversial ways in which the idea of civil society has recently entered into populist politics and public debate throughout Africa. In a substantial introduction, anthropologists Jean and John Comaroff offer a critical theoretical analysis of the nature and deployment of the concept—and the current debates surrounding it. Building on this framework, the contributors investigate the \"problem\" of civil society across their regions of expertise, which cover the continent. Drawing creatively on one another’s work, they examine the impact of colonial ideology, postcoloniality, and development practice on discourses of civility, the workings of everyday politics, the construction of new modes of selfhood, and the pursuit of moral community. Incisive and original, the book shows how struggles over civil society in Africa reveal much about larger historical forces in the post-Cold War era. It also makes a strong case for the contribution of historical anthropology to contemporary discourses on the rise of a \"new world order.\"",
"language": "en",
"libraryCatalog": "University of Chicago Press",
"numPages": "329",
"place": "Chicago, IL",
"publisher": "University of Chicago Press",
"shortTitle": "Civil Society and the Political Imagination in Africa",
"url": "https://press.uchicago.edu/ucp/books/book/chicago/C/bo3624192.html",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://press.uchicago.edu/ucp/books/book/distributed/S/bo70004539.html",
"items": [
{
"itemType": "book",
"title": "Speaking for Ourselves: Environmental Justice in Canada",
"creators": [
{
"firstName": "Julian",
"lastName": "Agyeman",
"creatorType": "editor"
},
{
"firstName": "Peter",
"lastName": "Cole",
"creatorType": "editor"
},
{
"firstName": "Randolph",
"lastName": "Haluza-DeLay",
"creatorType": "editor"
},
{
"firstName": "Pat",
"lastName": "O’Riley",
"creatorType": "editor"
}
],
"abstractNote": "The concept of environmental justice has offered a new direction for social movements and public policy in recent decades, and researchers worldwide now position social equity as a prerequisite for sustainability. Yet the relationship between social equity and environmental sustainability has been little studied in Canada. Speaking for Ourselves draws together Aboriginal and non-Aboriginal scholars and activists who bring equity issues to the forefront by considering environmental justice from multiple perspectives and in specifically Canadian contexts.",
"language": "en",
"libraryCatalog": "University of Chicago Press",
"numPages": "306",
"publisher": "University of British Columbia Press",
"shortTitle": "Speaking for Ourselves",
"url": "https://press.uchicago.edu/ucp/books/book/distributed/S/bo70004539.html",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://press.uchicago.edu/ucp/books/book/distributed/C/bo38131006.html",
"items": [
{
"itemType": "book",
"title": "Capitalism and Labor: Towards Critical Perspectives",
"creators": [
{
"firstName": "Klaus",
"lastName": "Dörre",
"creatorType": "editor"
},
{
"firstName": "Nicole",
"lastName": "Mayer-Ahuja",
"creatorType": "editor"
},
{
"firstName": "Dieter",
"lastName": "Sauer",
"creatorType": "editor"
},
{
"firstName": "Volker",
"lastName": "Wittke",
"creatorType": "editor"
},
{
"firstName": "Julian",
"lastName": "Müller",
"creatorType": "translator"
}
],
"abstractNote": "Capitalism’s presence in nearly all areas of contemporary life is widely-known and unshakeable. There is perhaps nowhere more true than in the workplace. Why then, ask the authors of this collection, have the broad concepts of work and capitalism become a progressively smaller focus in sociology in recent decades, shunted to the sidelines in favor of more granular subjects in labor studies? Capitalism and Labor calls for sociologists to refocus their research on the unavoidable realities of the capitalist system, particularly in the wake of the global financial and economic unrest of the past decade. Although they provide no easy solutions, the essays in this book will serve as a starting point for sociologists to renew their focus on labor and its inextricable relationship to capitalism in the twenty-first century.",
"language": "en",
"libraryCatalog": "University of Chicago Press",
"numPages": "434",
"publisher": "Campus Verlag",
"series": "International Labour Studies",
"shortTitle": "Capitalism and Labor",
"url": "https://press.uchicago.edu/ucp/books/book/distributed/C/bo38131006.html",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://press.uchicago.edu/press/search.html?clause=labor&division=bo",
"items": "multiple"
}
]
/** END TEST CASES **/
250Sebastian Karcher/action/doSearch\?|/article/[^/]+/(abstract|fulltext|references|images)/*
Copyright (C) 2013-2021 Sebastian Karcher
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
function detectWeb(doc, _url) {
let copyright = text(doc, '.copy-right');
if (!copyright.includes('Elsevier')) {
return false;
}
if (doc.querySelector('meta[name="citation_journal_title"]')) {
return "journalArticle";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('h4.meta__title > a');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var abstract = ZU.xpathText(doc, '//div[@class="abstract"]/div[contains(@class, "content")]/section/*', null, '\n');
if (!abstract) abstract = ZU.xpathText(doc, '//div[@class="tContent"]/div[contains(@class, "content")]/section/*', null, '\n');
var keywords = ZU.xpath(doc, '//div[@class="keywords"]/a');
if (!keywords.length) keywords = ZU.xpath(doc, '//div[@class="tContent"]/p/span[contains(@class, "keyword")]');
// We call the Embedded Metadata translator to do the actual work
var translator = Zotero.loadTranslator('web');
// use Embedded Metadata
translator.setTranslator("951c027d-74ac-47d4-a107-9c3069ab7b48");
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
var m;
if (item.publicationTitle && (m = item.publicationTitle.match(/^(.+), (the)$/i))) {
item.publicationTitle = m[2] + ' ' + m[1];
}
if (item.date) {
item.date = ZU.strToISO(item.date);
}
item.url = url;
if (item.tags.length == 0) {
for (var i in keywords) {
var kw = keywords[i].textContent.trim();
if (kw) item.tags.push(kw);
}
}
// remove duplicate PMIDs
if (item.extra) {
item.extra = item.extra.replace(/(^PMID: \d+),.+/, "$1");
}
item.abstractNote = abstract;
item.complete();
});
translator.translate();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.amjmed.com/article/S0002-9343(12)00352-X/fulltext",
"items": [
{
"itemType": "journalArticle",
"title": "Risk of Falls and Major Bleeds in Patients on Oral Anticoagulation Therapy",
"creators": [
{
"firstName": "Jacques",
"lastName": "Donzé",
"creatorType": "author"
},
{
"firstName": "Carole",
"lastName": "Clair",
"creatorType": "author"
},
{
"firstName": "Balthasar",
"lastName": "Hug",
"creatorType": "author"
},
{
"firstName": "Nicolas",
"lastName": "Rodondi",
"creatorType": "author"
},
{
"firstName": "Gérard",
"lastName": "Waeber",
"creatorType": "author"
},
{
"firstName": "Jacques",
"lastName": "Cornuz",
"creatorType": "author"
},
{
"firstName": "Drahomir",
"lastName": "Aujesky",
"creatorType": "author"
}
],
"date": "2012-08-01",
"DOI": "10.1016/j.amjmed.2012.01.033",
"ISSN": "0002-9343, 1555-7162",
"issue": "8",
"journalAbbreviation": "The American Journal of Medicine",
"language": "English",
"libraryCatalog": "www.amjmed.com",
"pages": "773-778",
"publicationTitle": "The American Journal of Medicine",
"url": "https://www.amjmed.com/article/S0002-9343(12)00352-X/fulltext",
"volume": "125",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Accidental falls"
},
{
"tag": "Adverse drug events"
},
{
"tag": "Anticoagulants"
},
{
"tag": "Hemorrhage"
},
{
"tag": "Risk factor"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.isct-cytotherapy.org/article/S1465-3249(12)70632-1/fulltext",
"items": [
{
"itemType": "journalArticle",
"title": "Initial cord blood unit volume affects mononuclear cell and CD34+ cell-processing efficiency in a non-linear fashion",
"creators": [
{
"firstName": "Sandrine",
"lastName": "Meyer-Monard",
"creatorType": "author"
},
{
"firstName": "André",
"lastName": "Tichelli",
"creatorType": "author"
},
{
"firstName": "Carolyn",
"lastName": "Troeger",
"creatorType": "author"
},
{
"firstName": "Caroline",
"lastName": "Arber",
"creatorType": "author"
},
{
"firstName": "Grazia Nicoloso de",
"lastName": "Faveri",
"creatorType": "author"
},
{
"firstName": "Alois",
"lastName": "Gratwohl",
"creatorType": "author"
},
{
"firstName": "Eddy",
"lastName": "Roosnek",
"creatorType": "author"
},
{
"firstName": "Daniel",
"lastName": "Surbek",
"creatorType": "author"
},
{
"firstName": "Yves",
"lastName": "Chalandon",
"creatorType": "author"
},
{
"firstName": "Olivier",
"lastName": "Irion",
"creatorType": "author"
},
{
"firstName": "Damiano",
"lastName": "Castelli",
"creatorType": "author"
},
{
"firstName": "Jakob",
"lastName": "Passweg",
"creatorType": "author"
},
{
"firstName": "Vincent",
"lastName": "Kindler",
"creatorType": "author"
}
],
"date": "2012-02-01",
"DOI": "10.3109/14653249.2011.634404",
"ISSN": "1465-3249",
"extra": "PMID: 22136296",
"issue": "2",
"journalAbbreviation": "Cytotherapy",
"language": "English",
"libraryCatalog": "www.isct-cytotherapy.org",
"pages": "215-222",
"publicationTitle": "Cytotherapy",
"url": "https://www.isct-cytotherapy.org/article/S1465-3249(12)70632-1/fulltext",
"volume": "14",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Snapshot",
"mimeType": "text/html"
},
{
"title": "PubMed entry",
"mimeType": "text/html",
"snapshot": false
}
],
"tags": [
{
"tag": "cell banking"
},
{
"tag": "hematopoietic stem cell"
},
{
"tag": "hydroxyethyl starch"
},
{
"tag": "processing efficiency"
},
{
"tag": "umbilical cord blood"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.isct-cytotherapy.org/action/doSearch?text1=test&field1=AllField",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.thelancet.com/journals/lancet/article/PIIS0140-6736(21)01431-8/fulltext?hss_channel=tw-27013292",
"items": [
{
"itemType": "journalArticle",
"title": "Antibiotics for lower respiratory tract infection in children presenting in primary care in England (ARTIC PC): a double-blind, randomised, placebo-controlled trial",
"creators": [
{
"firstName": "Paul",
"lastName": "Little",
"creatorType": "author"
},
{
"firstName": "Nick A.",
"lastName": "Francis",
"creatorType": "author"
},
{
"firstName": "Beth",
"lastName": "Stuart",
"creatorType": "author"
},
{
"firstName": "Gilly",
"lastName": "O'Reilly",
"creatorType": "author"
},
{
"firstName": "Natalie",
"lastName": "Thompson",
"creatorType": "author"
},
{
"firstName": "Taeko",
"lastName": "Becque",
"creatorType": "author"
},
{
"firstName": "Alastair D.",
"lastName": "Hay",
"creatorType": "author"
},
{
"firstName": "Kay",
"lastName": "Wang",
"creatorType": "author"
},
{
"firstName": "Michael",
"lastName": "Sharland",
"creatorType": "author"
},
{
"firstName": "Anthony",
"lastName": "Harnden",
"creatorType": "author"
},
{
"firstName": "Guiqing",
"lastName": "Yao",
"creatorType": "author"
},
{
"firstName": "James",
"lastName": "Raftery",
"creatorType": "author"
},
{
"firstName": "Shihua",
"lastName": "Zhu",
"creatorType": "author"
},
{
"firstName": "Joseph",
"lastName": "Little",
"creatorType": "author"
},
{
"firstName": "Charlotte",
"lastName": "Hookham",
"creatorType": "author"
},
{
"firstName": "Kate",
"lastName": "Rowley",
"creatorType": "author"
},
{
"firstName": "Joanne",
"lastName": "Euden",
"creatorType": "author"
},
{
"firstName": "Kim",
"lastName": "Harman",
"creatorType": "author"
},
{
"firstName": "Samuel",
"lastName": "Coenen",
"creatorType": "author"
},
{
"firstName": "Robert C.",
"lastName": "Read",
"creatorType": "author"
},
{
"firstName": "Catherine",
"lastName": "Woods",
"creatorType": "author"
},
{
"firstName": "Christopher C.",
"lastName": "Butler",
"creatorType": "author"
},
{
"firstName": "Saul N.",
"lastName": "Faust",
"creatorType": "author"
},
{
"firstName": "Geraldine",
"lastName": "Leydon",
"creatorType": "author"
},
{
"firstName": "Mandy",
"lastName": "Wan",
"creatorType": "author"
},
{
"firstName": "Kerenza",
"lastName": "Hood",
"creatorType": "author"
},
{
"firstName": "Jane",
"lastName": "Whitehurst",
"creatorType": "author"
},
{
"firstName": "Samantha",
"lastName": "Richards-Hall",
"creatorType": "author"
},
{
"firstName": "Peter",
"lastName": "Smith",
"creatorType": "author"
},
{
"firstName": "Michael",
"lastName": "Thomas",
"creatorType": "author"
},
{
"firstName": "Michael",
"lastName": "Moore",
"creatorType": "author"
},
{
"firstName": "Theo",
"lastName": "Verheij",
"creatorType": "author"
}
],
"date": "2021-10-16",
"DOI": "10.1016/S0140-6736(21)01431-8",
"ISSN": "0140-6736, 1474-547X",
"extra": "PMID: 34562391",
"issue": "10309",
"journalAbbreviation": "The Lancet",
"language": "English",
"libraryCatalog": "www.thelancet.com",
"pages": "1417-1426",
"publicationTitle": "The Lancet",
"shortTitle": "Antibiotics for lower respiratory tract infection in children presenting in primary care in England (ARTIC PC)",
"url": "https://www.thelancet.com/journals/lancet/article/PIIS0140-6736(21)01431-8/fulltext?hss_channel=tw-27013292",
"volume": "398",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Snapshot",
"mimeType": "text/html"
},
{
"title": "PubMed entry",
"mimeType": "text/html",
"snapshot": false
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://(www\.)?lingref\.com//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, _url) {
if (doc.querySelector('.bookinfo')) {
return "conferencePaper";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.pagecontent > .contentpadding > a[href*="abstract"][href$=".html"]');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(nearestPreviousSibling(row, 'b'));
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function nearestPreviousSibling(el, selector) {
while ((el = el.previousElementSibling)) {
if (el.matches(selector)) {
return el.textContent.trim();
}
}
return '';
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
fillBookInfo(doc, url, item);
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.itemType = 'conferencePaper';
trans.doWeb(doc, url);
});
}
function fillBookInfo(doc, url, item) {
let bookInfo = doc.querySelector('.bookinfo > .contentpadding')
|| doc.querySelector('.pagecontent > .contentpadding');
item.proceedingsTitle = text(bookInfo, '.largerfont');
item.abstractNote = text(doc, '.abstract div');
if (item.publisher && item.publisher.startsWith('Cascadilla')) {
item.place = 'Somerville, MA';
}
item.url = url;
for (let child of bookInfo.childNodes) {
if (child.textContent.trim().startsWith('edited by')) {
for (let name of child.textContent.trim()
.replace(/^edited by\s*/, '').split(/, (?:and )?| and /)) {
item.creators.push(ZU.cleanAuthor(name, 'editor'));
}
break;
}
}
for (let attachment of item.attachments) {
if (attachment.url && attachment.url.startsWith('www.')) {
attachment.url = 'https://' + attachment.url;
}
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://www.lingref.com/cpp/wccfl/25/abstract1429.html",
"items": [
{
"itemType": "conferencePaper",
"title": "Subject Preference in Korean",
"creators": [
{
"firstName": "Nayoung",
"lastName": "Kwon",
"creatorType": "author"
},
{
"firstName": "Maria",
"lastName": "Polinsky",
"creatorType": "author"
},
{
"firstName": "Robert",
"lastName": "Kluender",
"creatorType": "author"
},
{
"firstName": "Donald",
"lastName": "Baumer",
"creatorType": "editor"
},
{
"firstName": "David",
"lastName": "Montero",
"creatorType": "editor"
},
{
"firstName": "Michael",
"lastName": "Scanlon",
"creatorType": "editor"
}
],
"date": "2006",
"ISBN": "9781574734157",
"abstractNote": "This paper presents experimental data on the processing of relative and adjunct clauses in Korean. Both types of clause contain null elements (gaps), although these gaps may possibly represent different types of empty categories (deletion under movement in relative clauses, null pronominals in adjunct clauses). The experimental evidence shows that even in head-final languages like Korean, subject gaps of all types enjoy a processing advantage over object gaps, thus adding support to the idea that the subject advantage is a universal principle of grammar. Different explanatory mechanisms have been proposed to account for this subject advantage. The Korean data support structurally-based accounts rather than accounts that rely on the linear distance between the filler and the gap in a long-distance dependency. Theoretically, these new data shed additional light on—but do not entirely resolve—long-standing controversies over whether Korean relative clauses represent English-like operator-movement structures or structures with an unselectively bound null pronominal.",
"conferenceName": "25th West Coast Conference on Formal Linguistics",
"libraryCatalog": "www.lingref.com",
"pages": "1-14",
"place": "Somerville, MA",
"proceedingsTitle": "Proceedings of the 25th West Coast Conference on Formal Linguistics",
"publisher": "Cascadilla Proceedings Project",
"url": "http://www.lingref.com/cpp/wccfl/25/abstract1429.html",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.lingref.com/cpp/wccfl/25/index.html",
"items": "multiple"
},
{
"type": "web",
"url": "http://www.lingref.com/cpp/acal/42/abstract2769.html",
"items": [
{
"itemType": "conferencePaper",
"title": "A Comparative Study of Topological Relation Markers in Two Gur Languages: Gurenɛ and Chakali",
"creators": [
{
"firstName": "Jonathan Allen",
"lastName": "Brindle",
"creatorType": "author"
},
{
"firstName": "Samuel Awinkene",
"lastName": "Atintono",
"creatorType": "author"
},
{
"firstName": "Michael R.",
"lastName": "Marlo",
"creatorType": "editor"
},
{
"firstName": "Nikki B.",
"lastName": "Adams",
"creatorType": "editor"
},
{
"firstName": "Christopher R.",
"lastName": "Green",
"creatorType": "editor"
},
{
"firstName": "Michelle",
"lastName": "Morrison",
"creatorType": "editor"
},
{
"firstName": "Tristan M.",
"lastName": "Purvis",
"creatorType": "editor"
}
],
"date": "2012",
"ISBN": "9781574734539",
"abstractNote": "This paper explores from a comparative perspective the strategies employed for the coding of topological relations in two Gur languages, Gurenε and Chakali. It identifies the similarities and differences in the coding of semantic concepts that describe topological relations and examines the lexical semantics of locative predicate relations. The results of the study show that both languages use existential, postural or positional verbs to express topological relations, and that these verbs often combine with nominal postpositions. The paper is a contribution to the typological classification of locative predication proposed by Ameka and Levinson (2007), and to areal typology, as it concludes by comparing some of the findings with an analysis of Likpe (Ghana-Togo Mountain, Kwa (Ameka, 2007a)).",
"conferenceName": "42nd Annual Conference on African Linguistics",
"libraryCatalog": "www.lingref.com",
"pages": "195-207",
"place": "Somerville, MA",
"proceedingsTitle": "Selected Proceedings of the 42nd Annual Conference on African Linguistics: African Languages in Context",
"publisher": "Cascadilla Proceedings Project",
"shortTitle": "A Comparative Study of Topological Relation Markers in Two Gur Languages",
"url": "http://www.lingref.com/cpp/acal/42/abstract2769.html",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.lingref.com/cpp/slrf/2011/abstract2914.html",
"items": [
{
"itemType": "conferencePaper",
"title": "Does Partial Radical Information Help in the Learning of Chinese Characters?",
"creators": [
{
"firstName": "Jing",
"lastName": "Wang",
"creatorType": "author"
},
{
"firstName": "Keiko",
"lastName": "Koda",
"creatorType": "author"
},
{
"firstName": "Erik",
"lastName": "Voss",
"creatorType": "editor"
},
{
"firstName": "Shu-Ju Diana",
"lastName": "Tai",
"creatorType": "editor"
},
{
"firstName": "Zhi",
"lastName": "Li",
"creatorType": "editor"
}
],
"date": "2013",
"ISBN": "9781574734584",
"abstractNote": "Whether and how partial radical information in different transparency levels helps in the acquisition of Chinese characters, as well as how contextual information interacts with semantic transparency in character meaning inference, are open questions and are explored in the present study. A character meaning inference task in isolation and a character meaning inference task in context were completed by 37 first-year students\nin the University of Pittsburgh Chinese program. Three kinds of characters (transparent, semitransparent, and single-unit characters without radicals) were chosen based on Shu et al.'s (2003) study, and two conditions (isolation and context) were designed. The results showed that in both conditions, learners achieved higher scores on transparent characters than on semi-transparent characters, and their performance was significantly better on compound characters (both transparent and semitransparent) than single-unit characters without radicals. Also, context impeded with learning semitransparent characters, but did not affect transparent and single-unit characters. The results suggest that partial radical information helps Chinese character learning, and that teaching compound characters componentially may be more effective than teaching them holistically.",
"conferenceName": "2011 Second Language Research Forum",
"libraryCatalog": "www.lingref.com",
"pages": "162-172",
"place": "Somerville, MA",
"proceedingsTitle": "Selected Proceedings of the 2011 Second Language Research Forum: Converging Theory and Practice",
"publisher": "Cascadilla Proceedings Project",
"url": "http://www.lingref.com/cpp/slrf/2011/abstract2914.html",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.lingref.com/cpp/slrf/2011/abstract2913.html",
"items": [
{
"itemType": "conferencePaper",
"title": "A Reexamination of Ultimate Attainment in L2 Phonology: Length of Immersion, Motivation, and Phonological Short-Term Memory",
"creators": [
{
"firstName": "Charles",
"lastName": "Nagle",
"creatorType": "author"
},
{
"firstName": "Erik",
"lastName": "Voss",
"creatorType": "editor"
},
{
"firstName": "Shu-Ju Diana",
"lastName": "Tai",
"creatorType": "editor"
},
{
"firstName": "Zhi",
"lastName": "Li",
"creatorType": "editor"
}
],
"date": "2013",
"ISBN": "9781574734584",
"abstractNote": "The current study investigated phonological attainment among a sample of 34 English-speaking late-learners of L2 Spanish. Participants completed a language background questionnaire, motivation assessment, operation span task, and phonological short-term memory task, and recorded three speaking tasks. As a point of comparison, three native Spanish-speaking participants also recorded the speaking tasks. Four naïve L1 Spanish raters subsequently evaluated the speech clips. Regression analyses on the raters' scores revealed that length of immersion, motivation, and phonological short-term memory accounted for 70% of the variance in the sample. Furthermore, three learners received ratings that fell within the native range. Taken together, these findings suggest that immersion, motivation, and PSTM are critical factors that determine end-state phonological attainment for the learners in this study, as well as that late-learners appear to be capable of achieving near-native pronunciation in a foreign language.",
"conferenceName": "2011 Second Language Research Forum",
"libraryCatalog": "www.lingref.com",
"pages": "148-161",
"place": "Somerville, MA",
"proceedingsTitle": "Selected Proceedings of the 2011 Second Language Research Forum: Converging Theory and Practice",
"publisher": "Cascadilla Proceedings Project",
"shortTitle": "A Reexamination of Ultimate Attainment in L2 Phonology",
"url": "http://www.lingref.com/cpp/slrf/2011/abstract2913.html",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Sebastian Karcher and Abe Jellinek^https?://(fr\.)?allafrica\.com/(stories|search)//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Sebastian Karcher and Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/stories/')) {
return "newspaperArticle";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('ul.stories li > a');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
let publication = text(doc, '.publisher-name');
if (publication) {
item.publicationTitle = publication.match(/[^(]+/)[0];
item.place = (publication.match(/\((.*)\)/) || [])[1];
}
item.libraryCatalog = 'AllAfrica';
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.itemType = "newspaperArticle";
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://allafrica.com/stories/201110180002.html",
"items": [
{
"itemType": "newspaperArticle",
"title": "Angola: Political Upheaval Ahead of 2012 Polls",
"creators": [
{
"firstName": "Lisa",
"lastName": "Otto",
"creatorType": "author"
}
],
"date": "2011-10-18T02:24:01+0000",
"abstractNote": "Analysis - Angola is due to hold presidential and parliamentary elections next year, and all indications are that tensions are mounting amidst varied incidents of political upheaval ahead of the polls.",
"language": "en",
"libraryCatalog": "AllAfrica",
"place": "Tshwane/Pretoria",
"publicationTitle": "Institute for Security Studies",
"section": "News",
"shortTitle": "Angola",
"url": "https://allafrica.com/stories/201110180002.html",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Angola"
},
{
"tag": "Central Africa"
},
{
"tag": "Governance"
},
{
"tag": "Human Rights"
},
{
"tag": "Southern Africa"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://allafrica.com/stories/201110040606.html",
"items": [
{
"itemType": "newspaperArticle",
"title": "Angola: Justice Minister On Voter's Registration Update",
"creators": [],
"date": "2011-10-04T09:49:38+0000",
"abstractNote": "The updating of the electoral registration means the fulfillment of an obligation of each citizens so the process is well organised with regard to voting stations, Angop has learnt.",
"language": "en",
"libraryCatalog": "AllAfrica",
"place": "Luanda",
"publicationTitle": "Angola Press Agency",
"section": "News",
"shortTitle": "Angola",
"url": "https://allafrica.com/stories/201110040606.html",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Angola"
},
{
"tag": "Central Africa"
},
{
"tag": "Governance"
},
{
"tag": "Southern Africa"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://allafrica.com/search/?search_string=microcredits",
"items": "multiple"
},
{
"type": "web",
"url": "https://allafrica.com/stories/202110220312.html",
"items": [
{
"itemType": "newspaperArticle",
"title": "Kenya Surpasses Global Average of Female Board Directors",
"creators": [
{
"firstName": "Kamau",
"lastName": "Maichuhie",
"creatorType": "author"
}
],
"date": "2021-10-22T08:59:56+0000",
"abstractNote": "Kenya has outperformed the global average of female board directors after witnessing significant progress in board diversity and inclusion in the last nine years, a new report shows.",
"language": "en",
"libraryCatalog": "AllAfrica",
"place": "Nairobi",
"publicationTitle": "The Nation",
"section": "News",
"url": "https://allafrica.com/stories/202110220312.html",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "East Africa"
},
{
"tag": "Kenya"
},
{
"tag": "Women and Gender"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://fr.allafrica.com/stories/202110210703.html",
"items": [
{
"itemType": "newspaperArticle",
"title": "Afrique: Le Parlement européen adopte la résolution sur la Tunisie",
"creators": [],
"date": "2021-10-21T16:15:11+0000",
"abstractNote": "Le Parlement européen a adopté, jeudi après-midi, la résolution sur la situation en Tunisie par 534 voix pour, 45 contre et 106 abstentions.",
"language": "fr",
"libraryCatalog": "AllAfrica",
"place": "Tunis",
"publicationTitle": "Tunis Afrique Presse",
"section": "News",
"shortTitle": "Afrique",
"url": "https://fr.allafrica.com/stories/202110210703.html",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Africa"
},
{
"tag": "Europe and Africa"
},
{
"tag": "External Relations"
},
{
"tag": "Governance"
},
{
"tag": "North Africa"
},
{
"tag": "Tunisia"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://library\.oapen\.org//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, _url) {
if (doc.querySelector('meta[name="citation_title"]')) {
if (attr(doc, 'meta[name="DC.type"]', 'content') == 'chapter') {
return "bookSection";
}
else {
return "book";
}
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.artifact-description > a');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
item.title = item.title.replace(' : ', ': ');
delete item.journalAbbreviation;
if (item.attachments.some(at => at.title == 'Full Text PDF')) {
item.attachments = item.attachments.filter(at => at.title != 'Snapshot');
}
for (let creator of item.creators) {
if (creator.firstName) {
creator.firstName = creator.firstName.replace(/\s*\[.*$/, '');
}
}
if (item.itemType == 'bookSection') {
let search = Zotero.loadTranslator('search');
search.setSearch({ DOI: item.DOI });
search.setHandler('translators', function (_, translators) {
search.setTranslator(translators);
search.translate();
});
search.setHandler('itemDone', function (_, doiItem) {
item.title = doiItem.title;
item.bookTitle = doiItem.bookTitle;
item.creators = doiItem.creators;
item.ISBN = doiItem.ISBN;
item.date = doiItem.date;
item.complete();
});
search.getTranslators();
}
else {
item.complete();
}
});
translator.getTranslatorObject(function (trans) {
if (attr(doc, 'meta[name="DC.type"]', 'content') == 'chapter') {
trans.itemType = 'bookSection';
}
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://library.oapen.org/handle/20.500.12657/39719",
"items": [
{
"itemType": "book",
"title": "Thou Shalt Forget: Indigenous sovereignty, resistance and the production of cultural oblivion in Canada",
"creators": [
{
"firstName": "Pierrot",
"lastName": "Ross-Tremblay",
"creatorType": "author"
}
],
"date": "2020",
"ISBN": "9781912250097",
"abstractNote": "What is ‘cultural oblivion’ and ‘psychological colonialism’, and how are they affecting the capacity of Indigenous Peoples in Canada to actively resist systematic and territorial oppression by the state? Following a decade-long research project, this new book by Pierrot Ross-Tremblay examines the production of oblivion among his own community, the Essipiunnuat [or, ‘People of the Brook Shells River’] and the relationship between a colonial imperative to forget. The book illustrates how the ‘cultural oblivion’ of vulnerable minority communities is a critical human rights issue but also asks us to reflect upon both the role of the state and the local elite in creating and warping our perception and understanding of history.",
"extra": "DOI: 10.14296/620.9781912250424",
"language": "English",
"libraryCatalog": "library.oapen.org",
"publisher": "University of London Press",
"shortTitle": "Thou Shalt Forget",
"url": "https://library.oapen.org/handle/20.500.12657/39719",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "colonialism"
},
{
"tag": "communities"
},
{
"tag": "indigenous people"
},
{
"tag": "minority"
},
{
"tag": "territory"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://library.oapen.org/handle/20.500.12657/39444",
"items": [
{
"itemType": "book",
"title": "Atlas: Makerspaces in Public Libraries in The Netherlands",
"creators": [
{
"firstName": "Olindo",
"lastName": "Caso",
"creatorType": "author"
},
{
"firstName": "Joran",
"lastName": "Kuijper",
"creatorType": "author"
}
],
"date": "2019",
"ISBN": "9789463661478",
"abstractNote": "Public libraries want to contribute to an inclusive and innovative society and aim to enable their patrons to acquire the necessary 21st century skills. Dutch public libraries are therefore gradually adding more and more activities to their curriculum, teaching these different types of skills, such as ‘invention literacy’. They also often provide a ‘performative space’ (i.e. a makerspace) for their patrons. This means library spaces are no longer dominated by books, but rather reflect the current development in libraries’ core business, moving from collections to connections in order to serve their local communities. The KB, the National Library of The Netherlands, participated in the KIEM1 project Performative Spaces in Dutch Public Libraries. Stepping Stones of Inclusive Innovation, researching the development of performative spaces in libraries. This project, a collaboration with the Faculty of Architecture and the Built Environment at the Delft University of Technology, fits the KBs strategic interests in providing an innovative and socially aware library system.",
"language": "English",
"libraryCatalog": "library.oapen.org",
"publisher": "TU Delft Open",
"shortTitle": "Atlas",
"url": "https://library.oapen.org/handle/20.500.12657/39444",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "AMG"
},
{
"tag": "GL"
},
{
"tag": "The Netherlands"
},
{
"tag": "bic Book Industry Communication::A The arts::AM Architecture::AMG Public buildings: civic"
},
{
"tag": "commercial"
},
{
"tag": "etc"
},
{
"tag": "industrial"
},
{
"tag": "library space"
},
{
"tag": "public libraries"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://library.oapen.org/discover?query=test",
"items": "multiple"
},
{
"type": "web",
"url": "https://library.oapen.org/handle/20.500.12657/49284",
"items": [
{
"itemType": "bookSection",
"title": "MEMS Technologies Enabling the Future Wafer Test Systems",
"creators": [
{
"creatorType": "editor",
"firstName": "Siva",
"lastName": "Yellampalli"
},
{
"creatorType": "author",
"firstName": "Bahadir",
"lastName": "Tunaboylu"
},
{
"creatorType": "author",
"firstName": "Ali M.",
"lastName": "Soydan"
}
],
"date": "2018-07-18",
"ISBN": "9781789233940 9781789233957",
"abstractNote": "As the form factor of microelectronic systems and chips are continuing to shrink, the demand for increased connectivity and functionality shows an unabated rising trend. This is driving the evolution of technologies that requires 3D approaches for the integration of devices and system design. The 3D technology allows higher packing densities as well as shorter chip-to-chip interconnects. Micro-bump technology with through-silicon vias (TSVs) and advances in flip chip technology enable the development and manufacturing of devices at bump pitch of 14 μm or less. Silicon carrier or interposer enabling 3D chip stacking between the chip and the carrier used in packaging may also offer probing solutions by providing a bonding platform or intermediate board for a substrate or a component probe card assembly. Standard vertical probing technologies use microfabrication technologies for probes, templates and substrate-ceramic packages. Fine pitches, below 50 μm bump pitch, pose enormous challenges and microelectromechanical system (MEMS) processes are finding applications in producing springs, probes, carrier or substrate structures. In this chapter, we explore the application of MEMS-based technologies on manufacturing of advanced probe cards for probing dies with various new pad or bump structures.",
"bookTitle": "MEMS Sensors - Design and Application",
"extra": "DOI: 10.5772/intechopen.73144",
"language": "English",
"libraryCatalog": "library.oapen.org",
"publisher": "InTechOpen",
"url": "https://library.oapen.org/handle/20.500.12657/49284",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "MEMS technology"
},
{
"tag": "agriculture::TJ Electronics & communications engineering::TJF Electronics engineering::TJFC Circuits & components"
},
{
"tag": "bic Book Industry Communication::T Technology"
},
{
"tag": "engineering"
},
{
"tag": "interconnects"
},
{
"tag": "interposer"
},
{
"tag": "wafer and package test systems"
},
{
"tag": "wafer probes"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://www\.([^.]+)\.amdigital\.co\.uk//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/DocumentDetails.aspx') // older collections
|| url.includes('/DocumentDetailsSearch.aspx')) {
return 'manuscript';
}
if (url.includes('/Documents/Details/') // newer collections
|| url.includes('/Documents/SearchDetails')) {
return getTypeNew(doc);
}
if (getSearchResults(doc, true)) {
return "multiple";
}
else if (doc.querySelector('.DocumentsList')) {
Z.monitorDOMChanges(doc.querySelector('.DocumentsList'));
}
return false;
}
function getTypeNew(doc) {
let type = text(doc, 'tr[data-field-name="Document Type"] td[data-field-role="value"]');
if (!type) {
if (doc.body.classList.contains('cinema')) {
return 'videoRecording';
}
else {
return 'document';
}
}
type = ZU.trimInternal(type).toLowerCase();
if (type.includes('book')) {
return 'book';
}
if (type.includes('manuscript')) {
return 'manuscript';
}
if (type.includes('drawing') || type.includes('illustration')
|| type.includes('photograph')) {
return 'artwork';
}
if (type.includes('map')) {
return 'map';
}
if (type.includes('correspondence')) {
return 'letter';
}
return 'document';
}
function getSearchResults(doc, checkOnly) {
const items = {};
let found = false;
const rows = doc.querySelectorAll(
'.contentsList .tableRow .descriptionCell a, .SearchList tbody .title a, .DocumentsList tbody .title a');
for (const row of rows) {
const href = row.href;
const title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
if (url.includes('/Documents/')) {
// newer collections (served with HTTPS, no .aspx pages) have a
// completely different, and much easier to parse, structure
scrapeNew(doc, url);
}
else {
scrapeOld(doc, url);
}
}
function scrapeNew(doc, url) {
function fromTable(fieldName) {
return text(doc, `tr[data-field-name="${fieldName}"] td[data-field-role="value"]`);
}
let item = new Zotero.Item(getTypeNew(doc));
item.title = fromTable('Title');
item.abstractNote = fromTable('Abstract') || fromTable('Additional Information');
item.date = ZU.strToISO(fromTable('Date'));
item.place = fromTable('Places');
item.rights = fromTable('Copyright');
item.publisher = fromTable('Publisher');
item.language = fromTable('Language');
item.creators = fromTable('Names')
.split('; ')
.map(name => ZU.cleanAuthor(name, 'author', true));
let director = fromTable('Director');
if (director) {
item.creators.push(ZU.cleanAuthor(director, 'director', true));
}
let pageSelect = doc.querySelector('#DownloadPageFrom');
if (pageSelect) {
item.numPages = pageSelect.childElementCount;
}
item.archive = fromTable('Library/Archive') || fromTable('Collection');
item.archiveLocation = fromTable('Reference');
item.libraryCatalog = extractCatalogName(doc.title);
item.url = url.replace('/SearchDetails/', '/Details/')
.replace('?SessionExpired=True', '');
if (item.itemType != 'videoRecording') {
item.attachments.push({
title: "Full Text PDF",
mimeType: 'application/pdf',
url: attr(doc, 'a[href*="/FullDownload"]', 'href')
});
}
item.tags = [...doc.querySelectorAll('tr[data-field-name="Subjects"] td[data-field-role="value"] a')]
.map(el => ({ tag: el.textContent }));
item.complete();
}
function scrapeOld(doc, url) {
function fromTable(selector) {
return text(doc, selector + ' > .detCol2') || text(doc, selector);
}
let item = new Zotero.Item('manuscript');
item.title = fromTable('#Body_DocumentDetailsMeta_descSpan')
|| fromTable('#Body_descriptionElement');
let abstract = doc.querySelector('#Body_DocumentDetailsMeta_notesElement>.detCol2, #Body_notesElement>.detCol2');
item.abstractNote = abstract ? abstract.innerText : "";
item.date = ZU.strToISO(fromTable('#Body_DocumentDetailsMeta_dateElement'));
let pageSelect = doc.querySelector('.pageRangeSelect'); // either will do
if (pageSelect) {
item.numPages = pageSelect.childElementCount;
}
item.archive = fromTable('#Body_DocumentDetailsMeta_sourceElement');
let box = fromTable('#Body_DocumentDetailsMeta_boxElement')
|| fromTable('#Body_boxElement');
let folder = fromTable('#Body_DocumentDetailsMeta_folderElement')
|| fromTable('#Body_folderElement');
item.archiveLocation = `Box ${box}, folder ${folder}`;
item.libraryCatalog = extractCatalogName(doc.title);
item.attachments.push({
title: "Full Text PDF",
mimeType: 'application/pdf',
url: attr(doc, '.downloadPDFLink > a', 'href')
});
// we want a URL without any search strings, navigation data, etc
item.url = url.replace(/\?.*(documentid=[^&]+).*/, '?$1');
item.complete();
}
/**
* get the site's name by taking everything after the first segment of the title:
* "Search Results - Jewish Life in America - Adam Matthew Digital"
* becomes "Jewish Life in America - Adam Matthew Digital"
*/
function extractCatalogName(title) {
return title.substring(title.indexOf('-') + 2);
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://www.jewishlife.amdigital.co.uk/Contents/DocumentDetailsSearch.aspx?documentid=289906&prevPos=289906&vpath=SearchResults&searchmode=true&pi=1",
"items": [
{
"itemType": "manuscript",
"title": "Manuscript notebook of poems",
"creators": [],
"abstractNote": "Page\n\n1 'The New Colossus'\n\n2 'Progress and Poverty'\n\n3 'Venus of the Louvre'\n\n4 'Destiny I'\n\n5 'Destiny II'\n\n6 'Influence'\n\n7 'Success'\n\n8-11 'Chopin I, II, III, IV'\n\n12 'With a Copy of Don Quixote'\n\n13 'To F.P.'\n\n14 'One Augur to Another'\n\n15 'Cranes of Ibicus'\n\n16 'Reconciliation'\n\n17 'Incident at Sea' 18 'Will O' the Wisp'\n\n19 'Assurance'\n\n20 'Echoes'\n\n21 'St. Michael's Chapel'\n\n22-23 'Under the Sea. I, II'\n\n24 'Taming of the Falcon'\n\n25 'Supreme Sacrifice'\n\n26 'Life and Art'\n\n27 'Sympathy'\n\n28 'Dreaming Castle'\n\n29 'To R.W.E.'\n\n30-37 'Symphonic Studies (after Robert Schumann). Prelude, I, II, III, IV, V, VI Epilogue'\n\n38 'City Visions'\n\n40 'Long Island Sound'\n\n41-49 Translated Sonnets:\n\nPage 41 'Art the Redeemer'\n\nPage 42 'From the French of Fran�ois Copp�'\n\nPages 44-49 'Six Sonnets from the Studies of Petrarch, a. 'In Vita LXVII', b. 'In Vita LXXVI', c. 'In Morte XLIII', d. 'In Morte II. On the Death of Cardinal Colonna and Laura', e. 'In Vita CIX', f. 'In Vita, CV'\n\n50 '1492'\n\n51 'Restlessness'\n\n52 'Child at the Bath. R. de K. G.'\n\n54 'Autumn Sadness'\n\n56 'Song. Venus'\n\n57 'From the Arabian Nights'\n\n58 'Reed Song'\n\n59 'Moonlight, from German of Eichendorff'\n\n60 'Songs from Eichendroff'\n\n61 'Lida and the Swan. Faust. Part II. Act II. Scene 2'\n\n62-72 'Phaon'\n\n73 'To the Moon after Sunrise'\n\n75-79 'Fragments from Petrarch'\n\nPage 75 'Canzone XII. 5'\n\nPage 76 'Trionfo Della Morte'\n\nPage 77 'Trionfo D'Amore'\n\nPage 78 'Triumph of Death'\n\n80 'Sunrise'\n\n85 'To Nelly [?] Sleeping'\n\n89-97 'The Creation of Man. Miwk [Mohawk] Fable'\n\n98-105 'The New Cupid. From the German of Goethe'\n\n106-111 'August Moon'\n\n112-115 'My Goddess. From the German of Goethe'\n\n116-119 'The Old Year-1883. Affectionately dedicated to W.S.P. & W.A.P.'\n\n120 'Ariel and Euphorion' [clippings pasted into notebook, unknown journal]\n\n122 'Don Rafael' [clippings pasted into notebook, unknown journal]\n\n122 'Two Sonnets' [clippings pasted into notebook, unknown journal]: 'Sonnet I. Petrarch: To a Friend', 'Sonnet II. Art, the Redeemer'\n\n123 'The New Ezekiel' [clippings pasted into notebook, unknown journal]\n\n123 'The Choice' [clippings pasted into notebook, for The American Hebrew]\n\n123 'The Supreme Sacrifice' [clippings pasted into notebook, for The American Hebrew]\n\n123 'Zulieka. Translated from Goethe's 'West Gestliche Divan' [clippings pasted into notebook, unknown journal, most possibly in Jewish Messenger]\n\n124 'The World's Justice' [clippings pasted into notebook, unknown journal]\n\n124 'The Feast of Lights' [clippings pasted into notebook, for The American Hebrew]\n\n126-130 'Grotesque'\n\n131-136 'Translations from Copp�'\n\n137-149 ['By the Waters of Babylon'] 'Little Poems in Prose:\n\nPage 137 'I. The Exodus'\n\nPage 140 'II. Treasures'\n\nPage 141 'III. The Sower'\n\nPage 143 'IV. The Test'\n\nPage 144 'V. The Prophet'\n\nPage 146-147 Pages are blank in the original\n\nPage 148 'VI. Currents'\n\nPage 149 'VII. Chrysalis'\n\n150 'Gifts'\n\n152 'A Masque of Venice'\n\n156 'To Carmen Sylva'\n\n[Page 156 is followed by 159, with no gaps in poetry]\n\n161-163 'In a Gothic Church' (never completed).",
"archive": "American Jewish Historical Society",
"archiveLocation": "Box 1, folder 2",
"libraryCatalog": "Jewish Life in America - Adam Matthew Digital",
"numPages": 165,
"url": "http://www.jewishlife.amdigital.co.uk/Contents/DocumentDetailsSearch.aspx?documentid=289906",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.jewishlife.amdigital.co.uk/Contents/DocumentDetails.aspx?documentid=288444&prevPos=288444&filter=0%7c1%7c2&vpath=contents&pi=1",
"items": [
{
"itemType": "manuscript",
"title": "Baron de Hirsch Fund colonies and schools",
"creators": [],
"abstractNote": "See also P19/OS1/2",
"archiveLocation": "Box 3, folder 2",
"libraryCatalog": "Jewish Life in America - Adam Matthew Digital",
"numPages": 38,
"url": "http://www.jewishlife.amdigital.co.uk/Contents/DocumentDetails.aspx?documentid=288444",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.jewishlife.amdigital.co.uk/Contents/Default.aspx?filter=1%7c0",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.gender.amdigital.co.uk/Documents/Details/Etiquette%20for%20Ladies%20and%20Gentlemen%20London%201876?SessionExpired=True",
"items": [
{
"itemType": "book",
"title": "Etiquette for Ladies and Gentlemen",
"creators": [],
"date": "1876",
"archive": "Bodleian Library, University of Oxford",
"archiveLocation": "268 c.457",
"libraryCatalog": "Defining Gender - Adam Matthew Digital",
"numPages": 65,
"publisher": "Frederick Warne and Co.",
"url": "https://www.gender.amdigital.co.uk/Documents/Details/Etiquette%20for%20Ladies%20and%20Gentlemen%20London%201876",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.americanwest.amdigital.co.uk/Documents/Details/Graff_2445",
"items": [
{
"itemType": "document",
"title": "$150 reward. Whereas a robbery was committed in the vicinity of the town of Fort Madison, on the 22d Inst….",
"creators": [
{
"firstName": "Jacob",
"lastName": "Guy",
"creatorType": "author"
},
{
"firstName": "Jacob",
"lastName": "Bowers",
"creatorType": "author"
},
{
"firstName": "W. Braxton",
"lastName": "Gillock",
"creatorType": "author"
}
],
"date": "1840",
"archive": "Everett D. Graff Collection of Western Americana",
"archiveLocation": "Graff 2445",
"libraryCatalog": "American West - Adam Matthew Digital",
"url": "https://www.americanwest.amdigital.co.uk/Documents/Details/Graff_2445",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.socialismonfilm.amdigital.co.uk/Documents/Details/BFI_ETV_Advance_Democracy_25SD_Prores-4?SessionExpired=True#MediaSummary",
"items": [
{
"itemType": "videoRecording",
"title": "Advance Democracy",
"creators": [
{
"firstName": "Ralph",
"lastName": "Bond",
"creatorType": "director"
}
],
"abstractNote": "Starts with a discussion of inequality in London contrasting the rich with the lives of the poor. Features the hard lives of dock workers and a semi-dramatization of them complaining about taxes and their uses to fight wars. A wife talks to her husband about the merits of the Co-operative, and the husband later listens to a speech about democracy and the co-operative movement which mentions the sacrifices of the Tolpuddle Martyrs, the Chartists and the Rochdale Equitable Pioneers. Warns of the dangers of Nazis (with archive footage of Hitler and war). The protagonist of the film is won over and mobilises his colleagues to march on May Day. Features a medley of labour movement songs.",
"language": "English (Dialogue)",
"libraryCatalog": "Socialism on Film: The Cold War and International Propaganda - Adam Matthew Digital",
"place": "United Kingdom London",
"rights": "The British Film Institute",
"url": "https://www.socialismonfilm.amdigital.co.uk/Documents/Details/BFI_ETV_Advance_Democracy_25SD_Prores-4#MediaSummary",
"attachments": [],
"tags": [
{
"tag": "Co-operatives"
},
{
"tag": "Family"
},
{
"tag": "Industry"
},
{
"tag": "Music"
},
{
"tag": "Politics"
},
{
"tag": "Ships and shipping"
},
{
"tag": "Shopping"
},
{
"tag": "Social class"
},
{
"tag": "Trade unions"
},
{
"tag": "Women"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Sebastian Karcher and Abe Jellinek^https?://dlib\.eastview\.com/(search/(advanced|simple)/|browse/(doc|favorites|issue))/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2014-2021 Sebastian Karcher and Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes("/search/simple/articles") || url.includes("/search/advanced/articles") || url.search(/browse\/(favorites|issue)/) != -1) {
Z.monitorDOMChanges(doc.getElementById("articleSearchContainer"), {
childList: true
});
if (getSearchResults(doc, true)) return "multiple";
}
else {
return "newspaperArticle";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = ZU.xpath(doc, '//div[@id="articleSearchContainer"]//a[@class="Link" and contains(@href, "doc?")]');
for (var i = 0; i < rows.length; i++) {
var href = rows[i].href;
var title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
var typeMap = {
"Argumenty i fakty": "magazineArticle",
"Argumenty nedeli": "magazineArticle",
"Ekonomika i zhizn'": "magazineArticle",
Ekspert: "magazineArticle",
Izvestiia: "newspaperArticle",
"Kommersant. Daily": "newspaperArticle",
"Komsomol'skaia pravda": "newspaperArticle",
"Kul'tura": "magazineArticle",
"Literaturnaia gazeta": "magazineArticle",
"Moscow Times, The": "newspaperArticle",
"Moskovskaia pravda": "newspaperArticle",
"Moskovskii komsomolets": "newspaperArticle",
"New Times, The": "magazineArticle",
"Nezavisimaia gazeta": "newspaperArticle",
"Novaia gazeta": "newspaperArticle",
"Novye izvestiia": "newspaperArticle",
Ogonek: "magazineArticle",
Pravda: "newspaperArticle",
President: "magazineArticle",
"Profil'": "magazineArticle",
"RBK Daily": "newspaperArticle",
"Rossiiskaia gazeta": "newspaperArticle",
"Rossiiskie vesti": "newspaperArticle",
"Russkii reporter": "magazineArticle",
"Sankt-Peterburgskie vedomosti": "newspaperArticle",
Slovo: "magazineArticle",
"Sovetskaia Rossiia": "newspaperArticle",
Trud: "newspaperArticle",
"Vecherniaia Moskva": "newspaperArticle",
Vedomosti: "newspaperArticle",
Zavtra: "newspaperArticle"
};
function pdfLink(URL) {
var id = URL.match(/id=(\d+)/) || URL.match(/\/browse\/doc\/([^/?#]+)/);
if (id) return "/browse/pdf-download?articleid=" + id[1];
else return URL;
}
function scrape(doc, url) {
// Z.debug(url);
var item = new Zotero.Item("newspaperArticle");
var publication = ZU.xpathText(doc, '//a[@class="path" and contains(@href, "browse/publication")]');
item.publicationTitle = publication;
var voliss = text(doc, 'a.path[href*="browse/issue/"]') || text(doc, 'h3 > a[href*="browse/issue/"]');
if (voliss) {
var issue = voliss.match(/No\. (\d+)/);
if (issue) item.issue = issue[1];
var volume = voliss.match(/Vol\. (\d+)/);
if (volume) item.volume = volume[1];
}
var database = ZU.xpathText(doc, '//a[@class="Link" and contains(@href, "browse/udb")]');
if (database) item.libraryCatalog = database.replace(/\(.+\)/, "") + "(Eastview)";
if (ZU.xpathText(doc, '//table[@class="table table-condensed Table Table-noTopBorder"]//td[contains(text(), "Article")]')) {
// we have the metadata in a table
var metatable = ZU.xpath(doc, '//table[tbody/tr/td[contains(text(), "Article")]]');
var title = ZU.xpathText(metatable, './/td[contains(text(), "Article")]/following-sibling::td');
var source = ZU.xpathText(metatable, './/td[contains(text(), "Source")]/following-sibling::td');
if (source) {
var date = source.match(/(January|February|March|April|May|Juni|July|August|September|October|November|December)\s+(\d{1,2},\s+)?\d{4}/);
if (date) item.date = ZU.trimInternal(date[0]);
var pages = source.match(/page\(s\): (\d+(?:-\d+)?)/);
if (pages) item.page = pages[1];
if (!item.publicationTitle) {
publication = source.match(/^(.+?),/);
if (publication) item.publicationTitle = publication[1];
}
}
if (!item.publicationTitle) {
item.publicationTitle = ZU.xpathText(metatable, './/td[text()="Title"]/following-sibling::td');
}
if (!item.pages) {
var pagesOnly = ZU.xpathText(metatable, './/td[contains(text(), "Page(s)")]/following-sibling::td');
item.pages = pagesOnly;
}
var author = ZU.xpathText(metatable, './/td[contains(text(), "Author(s)")]/following-sibling::td');
if (author) {
// Z.debug(author)
var authors = author.trim().split(/\s*,\s*/);
for (var i = 0; i < authors.length; i++) {
item.creators.push(ZU.cleanAuthor(authors[i], "author"));
}
}
var place = ZU.xpathText(metatable, './/td[contains(text(), "Place of Publication")]/following-sibling::td');
if (place) item.place = ZU.trimInternal(place);
}
else {
title = text(doc, '.ArticleTitle');
// the "old" page format. We have very little structure here, doing the best we can.
var header = text(doc, 'div.table-responsive ul');
// Z.debug(header);
date = header.match(/Date:\s*(\d{2}-\d{2}-\d{2,4})/);
if (date) item.date = date[1];
if (!item.publicationTitle) {
// most of the time the publication title is in quotation marks
publication = header.match(/"(.+?)"/);
if (publication) item.publicationTitle = publication[1];
// if all else fails we just take the top of the file
else {
item.publicationTitle = header.trim().match(/^.+/);
}
}
}
// see if we have a match for item type; default to newspaper otherwise.
var itemType = typeMap[item.publicationTitle];
if (itemType) item.itemType = itemType;
// Attach real PDF for PDFs:
if (doc.querySelectorAll('#pdfjsContainer, #document-viewer-app').length) {
item.attachments.push({
url: pdfLink(url),
title: "Full Text PDF",
mimeType: "application/pdf"
});
}
else {
item.attachments.push({
document: doc,
title: "Full Text Snapshot",
mimeType: "text/html"
});
}
if (title && title == title.toUpperCase()) {
title = ZU.capitalizeTitle(title, true);
}
item.title = title;
// Z.debug(item)
// sometimes items actually don't have a title: use the publication title instead.
if (!item.title) item.title = item.publicationTitle;
item.complete();
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) {
return;
}
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
}
else {
scrape(doc, url);
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://dlib.eastview.com/browse/doc/2945904",
"items": [
{
"itemType": "newspaperArticle",
"title": "Moscow",
"creators": [],
"date": "02-11-98",
"libraryCatalog": "Russian Central Newspapers (Eastview)",
"publicationTitle": "Itar-Tass Weekly News",
"attachments": [
{
"title": "Full Text Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://dlib.eastview.com/browse/doc/39272962",
"items": [
{
"itemType": "newspaperArticle",
"title": "Занитный ракетный комплекс С-300Ф \"Форт\"",
"creators": [
{
"firstName": "Ростислав",
"lastName": "Ангельский",
"creatorType": "author"
},
{
"firstName": "Владимир",
"lastName": "Коровин",
"creatorType": "author"
}
],
"date": "March 2014",
"libraryCatalog": "Russian Military and Security Periodicals (Eastview)",
"place": "Moskva, Russia",
"publicationTitle": "Tekhnika i vooruzhenie",
"attachments": [
{
"title": "Full Text Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://dlib.eastview.com/browse/doc/42109039",
"items": [
{
"itemType": "newspaperArticle",
"title": "Page 13",
"creators": [],
"date": "March 20, 2014",
"libraryCatalog": "Standalone Serials (Eastview)",
"place": "Минск, Беларусь",
"publicationTitle": "Народная газета",
"attachments": [
{
"title": "Full Text Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://dlib.eastview.com/browse/doc/70313490",
"items": [
{
"itemType": "newspaperArticle",
"title": "Динамика Взаимосвязи Уровня Тревожности И Адаптационных Способностей Студентов К Обучению В Вузе",
"creators": [
{
"firstName": "Т. В.",
"lastName": "Ледовская",
"creatorType": "author"
},
{
"firstName": "А. В.",
"lastName": "Афанасов",
"creatorType": "author"
}
],
"libraryCatalog": "Russian Social Sciences and Humanities Periodicals (Eastview)",
"pages": "28-32",
"publicationTitle": "Alma Mater",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Pawel Kolodziej <p.kolodziej@gmail.com> and Kamil Gronowski <kgronowski@man.poznan.pl>/.*dlibra/(doccontent|docmetadata|collectiondescription|results)|/dlibra/?/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Pawel Kolodziej, Kamil Gronowski
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
let POLISH_TYPE_MAPPINGS = {
"dokument dźwiękowy": "audioRecording",
książka: "book",
rozdział: "bookSection",
artykuł: "journalArticle",
czasopismo: "journalArticle",
Article: "journalArticle", // not Polish, but also present sometimes
manuskrypt: "manuscript",
rękopis: "manuscript",
mapa: "map",
raport: "report",
"praca dyplomowa": "thesis",
"rozprawa doktorska": "thesis"
};
function detectWeb(doc, url) {
let singleRe = /dlibra\/(doccontent|docmetadata|publication)/;
if (singleRe.test(url)) {
let types = Array.from(doc.querySelectorAll('meta[name="DC.type"]')).map(meta => meta.content);
let type;
for (let possibleType of types) {
if (POLISH_TYPE_MAPPINGS[possibleType]) {
type = POLISH_TYPE_MAPPINGS[possibleType];
break;
}
type = possibleType;
}
return (type && ZU.itemTypeExists(type)) ? type : "document";
}
if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) {
return true;
}
ZU.processDocuments(Object.keys(items), scrape);
return false;
});
}
else {
scrape(doc, url);
}
return false;
}
function getSearchResults(doc, checkOnly) {
let items = {};
let found = false;
// dLibra 5
let rows = doc.querySelectorAll('.dLSearchResultTitle');
if (rows.length) {
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(text(row, '#src_titleLink_fullTitle > span.src_titleLink_title'));
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
}
else {
// dLibra 6
rows = doc.querySelectorAll('.objectbox__text--title');
if (!rows.length) rows = doc.querySelectorAll('.item__link--title');
for (let row of rows) {
// skip 'Similar in FBC'
if (row.getAttribute('title')) {
let href = attr(row, 'a', 'href') || row.href;
let title = ZU.trimInternal(
row.classList.contains('item__link--title')
? row.textContent
: row.getAttribute('title'));
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
}
}
return found ? items : false;
}
function scrape(doc, url) {
let reDlibra5Single = new RegExp("((.*/dlibra)/(?:doccontent|docmetadata|publication).*[?&]id=([0-9]*)).*");
let m = reDlibra5Single.exec(url);
if (m) {
dlibraScrape(doc, m[1], m[2], "e", m[3]);
}
else {
let reDlibra6Single = new RegExp("((.*/dlibra)/publication/([0-9]*)(/edition/([0-9]*))?).*");
let m = reDlibra6Single.exec(url);
if (m) {
if (m[4]) {
dlibraScrape(doc, m[1], m[2], "e", m[5]);
}
else {
dlibraScrape(doc, m[1], m[2], "p", m[3]);
}
}
}
}
function dlibraScrape(doc, objUrl, baseUrl, objType, id) {
ZU.HTTP.doGet(baseUrl + "/rdf.xml?type=" + objType + "&id=" + id, function (rdf) {
rdf = rdf.replace(/<\?xml[^>]*\?>/, "");
let dcTypeRegex = /<dc:type[^>]*>([^<]+)<\/dc:type>/gi;
let m, type;
while ((m = dcTypeRegex.exec(rdf))) {
if (POLISH_TYPE_MAPPINGS[m[1]]) {
type = POLISH_TYPE_MAPPINGS[m[1]];
break;
}
}
let translator = Zotero.loadTranslator("import");
// RDF importer
translator.setTranslator("5e3ad958-ac79-463d-812b-a86a9235c28f");
translator.setString(rdf);
translator.setHandler("itemDone", function (obj, item) {
item.url = objUrl;
item.itemID = "";
addAttachments(doc, item);
item.complete();
});
translator.getTranslatorObject(function (trans) {
if (type) {
trans.defaultUnknownType = type;
}
trans.doImport();
});
});
}
function addAttachments(doc, item) {
let pdfURL = ZU.xpath(doc, '//meta[@name="citation_pdf_url"]/@content');
if (pdfURL.length) {
pdfURL = pdfURL[0].textContent;
item.attachments.push({ title: "Full Text PDF", url: pdfURL, mimeType: "application/pdf" });
}
item.attachments.push({ document: doc, title: "Snapshot" });
}
function attr(docOrElem, selector, attr, index) {
let elem = index ? docOrElem.querySelectorAll(selector).item(index) : docOrElem.querySelector(selector);
return elem ? elem.getAttribute(attr) : null;
}
function text(docOrElem, selector, index) {
let elem = index ? docOrElem.querySelectorAll(selector).item(index) : docOrElem.querySelector(selector);
return elem ? elem.textContent : null;
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://mbc.cyfrowemazowsze.pl/dlibra/docmetadata?id=84344",
"items": [
{
"itemType": "journalArticle",
"title": "Przegląd Sportowy : tygodnik ilustrowany, poświęcony wszelkim gałęziom sportu : oficjalny organ Polskiego Związku Piłki Nożnej oraz Krakowskiego, Warszawskiego, Lwowskiego i Łódzkiego Związku Okręgowego Piłki Nożnej. R. 2, 1922 nr 6 (10 II)",
"creators": [
{
"firstName": "Tadeusz (1889-1960) Red odpowiedzialny",
"lastName": "Synowiec",
"creatorType": "author"
}
],
"date": "1922",
"abstractNote": "16 s. : il. ; 31 cm",
"language": "pol",
"libraryCatalog": "dLibra",
"publisher": "Dembiński, Aleksander",
"rights": "Licencja udzielona Bibliotece Głównej im. Jędrzeja Śniadeckiego Akademii Wychowania Fizycznego Józefa Piłsudskiego w Warszawie",
"shortTitle": "Przegląd Sportowy",
"url": "http://mbc.cyfrowemazowsze.pl/dlibra/docmetadata?id=84344",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "wiadomości sportowe"
},
{
"tag": "sport"
},
{
"tag": "czasopismo sportowe"
},
{
"tag": "prasa polska"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://demo.dl.psnc.pl/dlibra/planned?action=SimpleSearchAction&type=-6&p=0",
"items": "multiple"
},
{
"type": "web",
"url": "https://demo.dl.psnc.pl/dlibra/collectiondescription/1",
"items": "multiple"
},
{
"type": "web",
"url": "https://demo.dl.psnc.pl/dlibra/results?q=*&action=SimpleSearchAction&type=-6&p=0",
"items": "multiple"
},
{
"type": "web",
"url": "https://demo.dl.psnc.pl/dlibra/publication/1502/edition/1243",
"items": [
{
"itemType": "book",
"title": "Pan Tadeusz",
"creators": [
{
"firstName": "Adam",
"lastName": "Mickiewicz",
"creatorType": "author"
}
],
"date": "1882",
"abstractNote": "Epilog",
"language": "pol",
"libraryCatalog": "dLibra",
"publisher": "Lwów, Nakładem Księgarni F. H. Richtera. (H. Altbenberg)",
"rights": "Open Access",
"url": "https://demo.dl.psnc.pl/dlibra/publication/1502/edition/1243",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "poezja"
},
{
"tag": "poezja polska"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://journals.pan.pl/dlibra/publication/99314/edition/118913/content",
"items": [
{
"itemType": "journalArticle",
"title": "Test laboratoryjny dla oceny tunelowania metodą EPB: wyniki testów dla dwóch różnych gruntów ziarnistych",
"creators": [
{
"firstName": "Daniele",
"lastName": "Peila",
"creatorType": "author"
},
{
"firstName": "Luca",
"lastName": "Borio",
"creatorType": "author"
}
],
"date": "2011",
"ISSN": "0860-0953",
"libraryCatalog": "dLibra",
"publicationTitle": "Gospodarka Surowcami Mineralnymi - Mineral Resources Management; 2011; No 1; 85-100",
"shortTitle": "Test laboratoryjny dla oceny tunelowania metodą EPB",
"url": "https://journals.pan.pl/dlibra/publication/99314/edition/118913",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "EPB tunnelling"
},
{
"tag": "Nauki Techniczne"
},
{
"tag": "risk management"
},
{
"tag": "soil conditioning"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://journals.pan.pl/dlibra/results?q=test&action=SimpleSearchAction&mdirids=&type=-6&startstr=_all&p=0",
"items": "multiple"
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://openjur\.de//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (/\/u\/\d+(-[^.]+)?\.html/.test(url)) {
return "case";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.utitel > a[href*="/u/"]');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
let id = url.match(/\/u\/(\d+)/)[1];
ZU.doGet(`/u/${id}.bib`, function (jsonText) {
// returned JSON contains trailing comma in object
jsonText = jsonText.replace(/,\s*}/g, '}');
let json = JSON.parse(jsonText);
let item = new Zotero.Item('case');
// from openJur's recommended citation
item.caseName = `${json.doctype} vom ${json.date}`;
item.docketNumber = json.reference;
item.court = json.court;
item.dateDecided = ZU.strToISO(json.date);
item.language = 'de';
item.url = json.url;
item.attachments.push({
title: 'Full Text PDF',
url: `/u/${id}.ppdf`
});
item.complete();
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://openjur.de/u/2360985.html",
"items": [
{
"itemType": "case",
"caseName": "Beschluss vom 24.09.2021",
"creators": [],
"dateDecided": "2021-09-24",
"court": "LG Osnabrück",
"docketNumber": "10 Qs 49/21",
"language": "de",
"url": "https://openjur.de/u/2360985.html",
"attachments": [
{
"title": "Full Text PDF"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://openjur.de/u/2352526.html",
"items": [
{
"itemType": "case",
"caseName": "Beschluss vom 21.09.2021",
"creators": [],
"dateDecided": "2021-09-21",
"court": "Sächsisches OVG",
"docketNumber": "6 B 360/21",
"language": "de",
"url": "https://openjur.de/u/2352526.html",
"attachments": [
{
"title": "Full Text PDF"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://openjur.de/",
"items": "multiple"
},
{
"type": "web",
"url": "https://openjur.de/suche/?searchPhrase=test",
"items": "multiple"
}
]
/** END TEST CASES **/
100Sebastian Karcherhttps?://www\.airuniversity\.af\.edu/(ASPJ|SSQ)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2017 Sebastian Karcher
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
// eslint-disable-next-line no-unused-vars
function detectWeb(doc, url) {
if (text(doc, 'a[title="View Article"], h2>a[href*="documents"]', 1)) {
return "multiple";
}
return false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
var rows = ZU.xpath(doc, '//div[@class="da_black"]/table[tbody//a[@title="View Article"]]');
if (rows.length < 3) {
rows = ZU.xpath(doc, '//div[@class="da_black"]//p[span//a[@title="View Article"]]');
}
if (!rows.length) {
// New layout, e.g. https://www.airuniversity.af.edu/SSQ/Display/Article/2748342/volume-15-issue-3-fall-2021/
rows = ZU.xpath(doc, '//div[@class="da_black"]//li//div[h2/a or h2/em/a]');
}
var items = {};
var journal, abbr, ISSN;
if (url.includes("/ASPJ/")) {
journal = "Air & Space Power Journal";
abbr = "ASPJ";
ISSN = "1554-2505";
}
else if (url.includes("/SSQ/")) {
journal = "Strategic Studies Quarterly";
abbr = "SSQ";
ISSN = "1936-1815";
}
var voliss = text(doc, 'h1.title');
var date = text(doc, 'p.da_story_info');
for (let i = 0; i < rows.length; i++) {
var title = text(rows[i], 'span > a[title="View Article"]');
var id = attr(rows[i], 'span > a[title="View Article"]', "href");
if (!title) {
title = text(rows[i], 'strong > a[title="View Article"]');
id = attr(rows[i], 'strong > a[title="View Article"]', "href");
}
if (!title) {
title = text(rows[i], 'h2 > a, h2>em>a');
id = attr(rows[i], 'h2 > a, h2>em>a', "href");
}
if (title !== null) {
items[id] = title;
}
}
Zotero.selectItems(items, function (items) {
// Z.debug(items);
if (!items) {
return;
}
for (let id in items) {
scrapeMultiples(doc, id, date, voliss, journal, abbr, ISSN);
}
});
}
}
function scrapeMultiples(doc, id, date, voliss, journal, abbr, ISSN) {
var item = new Z.Item('journalArticle');
var titleXpath = '//span/a[contains(@href, "' + id + '")]';
var title = ZU.xpathText(doc, titleXpath);
var link = id;
if (!title) {
titleXpath = '//strong/a[contains(@href, "' + id + '")]';
title = ZU.xpathText(doc, titleXpath);
link = id;
}
// Newer issues
if (!title) {
titleXpath = '//h2//a[contains(@href, "' + id + '")]';
title = ZU.xpathText(doc, titleXpath);
link = id;
}
item.title = ZU.trimInternal(title.trim());
var sectionXpath = '//div[@class="da_black"]/table[tbody//a[@href="' + id + '"]]';
var section = ZU.xpath(doc, sectionXpath);
if (!section.length) {
sectionXpath = '//div[@class="da_black"]/p[span//a[@href="' + id + '"]]';
section = ZU.xpath(doc, sectionXpath);
}
// Newer issues
if (!section.length) {
sectionXpath = '//div[@class="da_black"]//div[h2//a[@href="' + id + '"]]';
section = ZU.xpath(doc, sectionXpath);
}
if (section.length) {
var authors = text(section[0], 'p>span>strong');
if (!authors) authors = text(section[0], 'p>strong>span');
// Newer issues
if (!authors) authors = text(section[0], 'strong');
if (authors) {
if (authors.includes("Reviewed by")) {
var reviewedAuthor = authors.match(/^by\s(.+)/);
var reviewer = authors.match(/Reviewed by\s(.+)/);
if (reviewedAuthor) {
reviewedAuthor = parseAuthors(reviewedAuthor[1], "reviewedAuthor");
}
if (reviewer) {
reviewer = parseAuthors(reviewer[1], "author");
}
if (reviewedAuthor && reviewer) {
item.creators = reviewer.concat(reviewedAuthor);
}
else {
item.creators = reviewer || reviewedAuthor;
}
}
else {
authors = ZU.trimInternal(authors.trim());
// delete name suffixes
item.creators = parseAuthors(authors, "author");
}
}
// ASPJ
var abstract = text(section[0], 'p > span', 1);
// SSQ
if (!abstract) abstract = ZU.xpathText(section[0], './/p/span[1]/text()');
// Newer issues
if (!abstract) abstract = ZU.xpathText(section[0], './/p/text()');
if (abstract) {
item.abstractNote = ZU.trimInternal(abstract.trim().replace(/^,\s/, ""));
}
}
if (date && date.includes("Published ")) {
item.date = date.match(/Published (.+)/)[1];
}
if (voliss && voliss.includes("Volume")) {
item.volume = voliss.match(/Volume (\d+)/)[1];
}
if (voliss && voliss.includes("Issue")) {
item.issue = voliss.match(/Issue (\d+)/)[1];
}
item.publicationTitle = journal;
item.journalAbbreviation = abbr;
item.ISSN = ISSN;
item.attachments.push({
url: link,
title: "Full Text PDF",
mimeType: "application/pdf"
});
item.complete();
}
function parseAuthors(creators, type) {
creators = ZU.trimInternal(creators.trim());
// delete name suffixes
creators = creators.replace(/, (USAF|USN|Retired|PE|LMFT|USA|[^,]+Air Force)\b/g, "");
let creatorsList = creators.split(/\/|,?\sand\s|,\s/);
var rank = /^(By:|Adm|Rear Adm|Col|Lt Col|LTC|Brig Gen|Gen|Maj Gen \(sel\)|Maj|Capt|CAPT|Maj Gen|2nd Lt|W(in)?g Cdr|Mr?s\.|Mr\.|Dr\.)\s/;
var creatorsArray = [];
for (let creator of creatorsList) {
creator = creator.trim().replace(rank, "");
creatorsArray.push(ZU.cleanAuthor(creator, type));
}
return creatorsArray;
}/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.airuniversity.af.edu/SSQ/Display/Article/1261066/volume-11-issue-3-fall-2017/",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.airuniversity.af.edu/ASPJ/Display/Article/1151902/volume-30-issue-2-summer-2016/",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.airuniversity.af.edu/SSQ/Display/Article/2748342/volume-15-issue-3-fall-2021/",
"items": "multiple"
}
]
/** END TEST CASES **/
100Sebastian Karcher^https?://www\.insidehighered\.com/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Sebastian Karcher
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (/\d{4}\/\d{2}\/\d{2}/.test(url)) {
return "magazineArticle";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.search-result>h3>a');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
// translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
item.title = text(doc, 'h1');
item.date = text(doc, '.views-field-created>div');
var authors = text(doc, '.pane-node-author .pane-content');
if (authors) {
item.creators.push(ZU.cleanAuthor(authors.trim(), "author"));
}
item.publicationTitle = "Inside Higher Ed";
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.insidehighered.com/admissions/article/2021/10/08/jury-convicts-parents-admissions-scandal-case",
"items": [
{
"itemType": "webpage",
"title": "Jury Convicts in Admissions Scandal Case",
"creators": [
{
"firstName": "Scott",
"lastName": "Jaschik",
"creatorType": "author"
}
],
"date": "October 8, 2021",
"abstractNote": "Two wealthy fathers found to have bribed their children into college.",
"language": "en",
"url": "https://www.insidehighered.com/admissions/article/2021/10/08/jury-convicts-parents-admissions-scandal-case",
"websiteTitle": "Inside Higher Ed",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.insidehighered.com/news/2019/06/24/theres-movement-better-scientific-posters-are-they-really-better",
"items": [
{
"itemType": "webpage",
"title": "#betterposter",
"creators": [
{
"firstName": "Colleen",
"lastName": "Flaherty",
"creatorType": "author"
}
],
"date": "June 24, 2019",
"abstractNote": "There's a movement for better posters at science conferences. But are they really better? And how does poster push relate to the ongoing campaign for open science?",
"language": "en",
"url": "https://www.insidehighered.com/news/2019/06/24/theres-movement-better-scientific-posters-are-they-really-better",
"websiteTitle": "Inside Higher Ed",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.insidehighered.com/search/results/transparency",
"items": "multiple"
}
]
/** END TEST CASES **/
100Sebastian Karchertxt/*
***** BEGIN LICENSE BLOCK *****
OVID Tagged import translator
(Based on hhttp://ospguides.ovid.com/OSPguides/medline.htm#PT and lots of testing
Created as part of the 2014 Zotero Trainer Workshop in Syracus
and with contributions from participants.)
Copyright © 2014 Sebastian Karcher
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectImport() {
var line;
var i = 0;
while ((line = Zotero.read()) !== false) {
line = line.replace(/^\s+/, "");
if (line != "") {
// All Ovid databases have this at the top:
if (line.match(/^VN\s{1,2}- Ovid Technologies/)) {
return true;
}
else if (i++ > 3) {
return false;
}
}
}
return false;
}
var fieldMap = {
TI: "title",
VI: "volume",
IP: "issue",
PL: "place",
PB: "publisher",
BT: "bookTitle",
JT: "publicationTitle",
TA: "journalAbbreviation",
PG: "pages",
PN: "patentNumber",
RO: "rights",
DG: "issueDate",
IB: "ISBN",
IS: "ISSN",
LG: "language",
EN: "edition",
DB: "libraryCatalog",
AB: "abstractNote",
AN: "callNumber"
};
// Only the most basic types. Mostly guessing from existing Ovid records here
var inputTypeMap = {
Book: "book",
"Book Chapter": "bookSection",
"Book chapter": "bookSection",
Chapter: "bookSection",
Dissertation: "thesis",
"Dissertation Abstract": "thesis",
"Journal Article": "journalArticle",
"Newspaper Article": "newspaperArticle",
"Video-Audio Media": "videoRecording",
"Technical Report": "report",
"Legal Case": "case",
Legislation: "statute",
Patent: "patent"
};
function processTag(item, tag, value) {
value = Zotero.Utilities.trim(value);
if (fieldMap[tag]) {
item[fieldMap[tag]] = value;
}
else if (tag == "PT" || tag == "DT") {
if (inputTypeMap[value]) { // first check inputTypeMap
item.itemType = inputTypeMap[value];
}
// I don't think FED or ED exist, but let's keep them to be safe
}
else if (tag == "FA" || tag == "FED") {
let type;
if (tag == "FA") {
type = "author";
}
else if (tag == "FED") {
type = "editor";
}
item.creators.push(Zotero.Utilities.cleanAuthor(value, type, value.includes(",")));
}
else if (tag == "AU" || tag == "ED") {
let type;
if (tag == "AU") {
type = "author";
}
else if (tag == "ED") {
type = "editor";
}
value = value.replace(/[0-9,+*\s]+$/, "").replace(/ Ph\.?D\.?.*/, "").replace(/\[.+/, "")
.replace(/(\b(?:MD|[BM]Sc|[BM]A|MPH|MB)(,\s*)?)+$/gi, "");
// Z.debug(value)
item.creatorsBackup.push(Zotero.Utilities.cleanAuthor(value, type, value.includes(",")));
}
else if (tag == "UI") {
item.PMID = "PMID: " + value;
}
else if (tag == "DI" || tag == "DO") {
if (value.includes("10.")) item.DOI = value;
}
else if (tag == "YR") {
item.date = value;
}
else if (tag == "IN") {
item.institution = value;
}
else if (tag == "SO") {
item.citation = value;
}
else if (tag == "PU") {
item.publishing = value;
}
else if (tag == "KW") {
let tags = value.split(/;\s*/);
for (let tag of tags) {
item.tags.push({ tag });
}
}
}
function doImport() {
var line = true;
var potentialItemID, checkID;
do { // first valid line is type
Zotero.debug("ignoring " + line);
line = Zotero.read();
line = line.replace(/^\s+/, "");
checkID = line.match(/^<\s*(\d+)\.\s*>\s*$/);
if (checkID) potentialItemID = checkID[1];
} while (line !== false && line.search(/^[A-Z0-9]+\s*-/) == -1);
var item = new Zotero.Item();
item.creatorsBackup = [];
if (potentialItemID) item.itemID = potentialItemID;
potentialItemID = null;
var tag = line.match(/^[A-Z0-9]+/)[0];
var data = line.substr(line.indexOf("-") + 1);
while ((line = Zotero.read()) !== false) { // until EOF
line = line.replace(/^\s+/, "");
checkID = line.match(/^<\s*(\d+)\.\s*>\s*$/);
if (checkID && !potentialItemID) potentialItemID = checkID[1];
if (line.search(/^[A-Z0-9]+\s*-/) != -1) {
// if this line is a tag, take a look at the previous line to map
// its tag
if (tag) {
processTag(item, tag, data);
}
// then fetch the tag and data from this line
tag = line.match(/^[A-Z0-9]+/)[0];
if (tag == 'VN') {
// New item, finalize last one
finalizeItem(item);
item = new Zotero.Item();
item.creatorsBackup = [];
if (potentialItemID) item.itemID = potentialItemID;
potentialItemID = null;
}
data = line.substr(line.indexOf("-") + 1);
}
else if (tag) {
// otherwise, assume this is data from the previous line continued
data += " " + line;
}
}
if (tag) { // save any unprocessed tags
processTag(item, tag, data);
// and finalize with some post-processing
finalizeItem(item);
}
}
function finalizeItem(item) {
if (item.creators.length == 0 && item.creatorsBackup.length > 0) {
item.creators = item.creatorsBackup;
}
delete item.creatorsBackup;
if (!item.itemType) item.itemType = inputTypeMap["Journal Article"];
item.title = item.title
.replace(/(\.\s*)?(\[(Article|Report|Miscellaneous|References)\])?([.\s]*)?$/, "")
.replace(/^\s*"(.+)"\s*$/, '$1');
var monthRegex = /(?:[-/]?(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|Jun(?:e)?|Jul(?:y)?|Aug(?:ust)?|Sep(?:tember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?))+\b/;
var value = item.citation;
if (!value && item.itemType == "bookSection") value = item.bookTitle;
if (item.itemType == "journalArticle" && value) {
if (value.match(/\d{4}/)) {
if (!item.date) item.date = value.match(/\d{4}/)[0];
}
var month = monthRegex.exec(value);
if (month) item.date = item.date += " " + (month)[0];
if (value.match(/(\d+)\((\d+(?:-\d+)?)\)/)) {
var voliss = value.match(/(\d+)\((\d+(?:-\d+)?)\)/);
item.volume = voliss[1];
item.issue = voliss[2];
}
if (value.match(/vol\.\s*(\d+)/)) {
item.volume = value.match(/vol\.\s*(\d+)/)[1];
}
if (!item.volume && value.match(/\d{4};(\d+):/)) item.volume = value.match(/\d{4};(\d+):/)[1];
if (value.match(/vol\.\s*\d+\s*,\s*no\.\s*(\d+)/)) {
item.issue = value.match(/vol\.\s*\d+\s*,\s*no\.\s*(\d+)/)[1];
}
if (value.match(/:\s*\d+-\d+/)) item.pages = value.match(/:\s*(\d+-\d+)/)[1];
if (value.match(/pp\.\s*(\d+-\d+)/)) item.pages = value.match(/pp\.\s*(\d+-\d+)/)[1];
if (value.match(/^\s*[J|j]ournal[-\s\w&:]+/)) {
item.publicationTitle = value.match(/^\s*[J|j]ournal[-\s\w&:]+/)[0];
}
else {
item.publicationTitle = Zotero.Utilities.trimInternal(value.split(/(\.|;|(,\s*vol\.))/)[0]);
}
item.publicationTitle = item.publicationTitle.split(monthRegex)[0];
}
if (item.itemType == "bookSection" && value) {
if (!item.pages) {
if (value.match(/:\s*\d+-\d+/)) item.pages = value.match(/:\s*(\d+-\d+)/)[1];
if (value.match(/pp\.\s*(\d+-\d+)/)) item.pages = value.match(/pp\.\s*(\d+-\d+)/)[1];
}
// editors are only listed as part of the citation...
if (/(.+?)\[Ed(itor|\.|\])/.test(value)) {
var editors = value.match(/.+?\[Ed(itor|\.|\])/g);
for (let editor of editors) {
editor = editor.replace(/\[Ed(itor|\.|\]).*$/, "").replace(/.*?\][,\s]*/, "");
item.creators.push(ZU.cleanAuthor(editor, "editor", true));
}
}
if (value.match(/.+\[Ed(?:\.|itor)?\][.\s]*([^.]+)/)) {
item.bookTitle = value.match(/.+\[Ed(?:\.|itor)?\][.\s]*(?:\(\d{4}\)\.)?([^.]+)/)[1];
}
}
// fix all caps authors
for (var i in item.creators) {
if (item.creators[i].lastName && item.creators[i].lastName == item.creators[i].lastName.toUpperCase()) {
item.creators[i].lastName = ZU.capitalizeTitle(item.creators[i].lastName.toLowerCase(), true);
}
}
if (item.pages) {
// Z.debug(item.pages)
// where page ranges are given in an abbreviated format, convert to full
// taken verbatim from NCBI Pubmed translator
var pageRangeRE = /(\d+)-(\d+)/g;
pageRangeRE.lastIndex = 0;
var range = pageRangeRE.exec(item.pages);
if (range) {
var pageRangeStart = range[1];
var pageRangeEnd = range[2];
var diff = pageRangeStart.length - pageRangeEnd.length;
if (diff > 0) {
pageRangeEnd = pageRangeStart.substring(0, diff) + pageRangeEnd;
var newRange = pageRangeStart + "-" + pageRangeEnd;
var fullPageRange = item.pages.substring(0, range.index) // everything before current range
+ newRange // insert the new range
+ item.pages.substring(range.index + range[0].length); // everything after the old range
// adjust RE index
pageRangeRE.lastIndex += newRange.length - range[0].length;
item.pages = fullPageRange;
}
}
}
if ((item.itemType == "book" || item.itemType == "bookSection") && !item.publisher) {
item.publisher = item.publishing;
}
if (item.publisher && !item.pace) {
if (item.publisher.search(/,./) != -1) {
item.place = item.publisher.match(/,(.+?)$/)[1];
item.publisher = item.publisher.replace(/,.+?$/, "");
}
}
if (item.itemType == "thesis" && item.institution) {
item.publisher = item.institution.replace(/^.+:\s*/, "");
delete item.institution;
}
if (item.ISBN) item.ISBN = ZU.cleanISBN(item.ISBN);
if (item.ISSN) item.ISSN = ZU.cleanISSN(item.ISSN);
if (item.DOI) item.DOI = ZU.cleanDOI(item.DOI);
if (item.callNumber) {
item.callNumber = item.callNumber.replace(/[.\s]+$/, '');
}
// strip extraneous label at the end of title (reported for Psycinfo)
if (item.libraryCatalog && item.libraryCatalog.includes("MEDLINE") && item.PMID) {
item.extra = item.PMID;
delete item.PMID;
}
delete item.publishing;
delete item.citation;
delete item.itemID;
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "import",
"input": "<1. >\r\nVN - Ovid Technologies\r\nDB - BIOSIS Previews\r\nAN - PREV200400474164\r\nRO - Copyright Thomson 2004.\r\nAU - Walsdorf, Neill B. [Inventor, Reprint Author]\r\nAU - Wabner, Cindy L. [Inventor]\r\nAU - Alexandrides, George [Inventor]\r\nIN - Canyon Lake, TX, USA.\r\nCY - USA\r\nTI - Dietary supplements containing ultradense calcium citrate and carbonyl iron\r\nSO - Official Gazette of the United States Patent & Trademark Office Patents. 1288(3), Nov. 16, 2004.\r\nJL - http://www.uspto.gov/web/menu/patdata.html\r\nPT - Patent\r\nIS - 0098-1133 (ISSN print)\r\nPN - US 6818228\r\nDG - November 16, 2004\r\nCL - 424-464\r\nPC - USA\r\nPA - Mission Pharmacal Company\r\nCC - [10069] Biochemistry studies - Minerals\r\nCC - [12512] Pathology - Therapy\r\nCC - [13202] Nutrition - General studies, nutritional status and methods\r\nCC - [22002] Pharmacology - General\r\nCC - [22501] Toxicology - General and methods\r\nCC - [22504] Toxicology - Pharmacology\r\nLG - English\r\nAB - A vitamin and mineral supplement containing ULTRADENSE.TM. calcium citrate and carbonyl iron for use in humans. Calcium in the form of citrate enhances absorption of iron, zinc, and magnesium. ULTRADENSE.TM. calcium citrate provides more bioavailable calcium than usual preparations of calcium citrate. Carbonyl iron provides iron in a form that significantly reduces the risk to children of accidental iron poisoning from formulations that provide iron in salt form. The supplement may further contain a number of vitamins and minerals in a tablet that is elegantly small, weighing about 1.5-1.6 g. The small size allows ease of swallowing and encourages patient acceptability. Methods of making such a supplement and methods of treating maladies in need of vitamin and mineral supplementation are provided.\r\nMC - Methods and Techniques\r\nMC - Nutrition\r\nMC - Pharmacology\r\nDS - accidental iron poisoning: toxicity\r\nCB - calcium citrate: 7693-13-2, food supplement, ultradense\r\nCB - carbonyl iron: 7439-89-6, food supplement\r\nCB - dietary supplements: vitamin-drug, food supplement, size\r\nCB - iron: 7439-89-6, nutrient\r\nCB - magnesium: 7439-95-4, nutrient\r\nCB - zinc: 7440-66-6, nutrient\r\nYR - 2004\r\nUP - 200400. BIOSIS Update: 20041209.\r\nXL - http://ovidsp.ovid.com/ovidweb.cgi?T=JS&CSC=Y&NEWS=N&PAGE=fulltext&D=biop30&AN=PREV200400474164\r\nXL - http://hopper.library.northwestern.edu/sfx/?sid=OVID:biopdb&id=pmid:&id=doi:&issn=0098-1133&isbn=&volume=1288&issue=3&spage=&pages=&date=2004&title=Official+Gazette+of+the+United+States+Patent+%26+Trademark+Office+Patents&atitle=Dietary+supplements+containing+ultradense+calcium+citrate+and+carbonyl+iron&aulast=Walsdorf&pid=%3Cauthor%3EWalsdorf%2C+Neill+B.%3BWabner%2C+Cindy+L.%3BAlexandrides%2C+George%3C%2Fauthor%3E&%3CAN%3EPREV200400474164%3C%2FAN%3E&%3CDT%3EPatent%3C%2FDT%3E\r\n\r\n<241. >\r\nVN - Ovid Technologies\r\nDB - BIOSIS Previews\r\nAN - PREV200400473722\r\nRO - Copyright Thomson 2004.\r\nAU - Werner, S. M. [Author, Reprint Author; E-mail: shahlawerner@yahoo.com]\r\nAU - Nordheim, E. V. [Author]\r\nAU - Raffa, K. F. [Author]\r\nIN - Forest Pest Management, DCNR, 208 Airport Dr,2nd Floor, Middletown, PA, 17057, USA.\r\nCY - USA\r\nTI - Comparison of methods for sampling Thysanoptera on basswood (Tilia americana L.) trees in mixed northern hardwood deciduous forests\r\nSO - Forest Ecology & Management. 201(2-3):327-334, November 15, 2004.\r\nPT - Article\r\nIS - 0378-1127 (ISSN print)\r\nCC - [05500] Social biology and human ecology\r\nCC - [07506] Ecology: environmental biology - Plant\r\nCC - [07508] Ecology: environmental biology - Animal\r\nCC - [25502] Development and Embryology - General and descriptive\r\nCC - [37001] Public health - General and miscellaneous\r\nCC - [53500] Forestry and forest products\r\nCC - [60502] Parasitology - General\r\nCC - [60504] Parasitology - Medical\r\nCC - [64076] Invertebrata: comparative, experimental morphology, physiology and pathology - Insecta: physiology\r\nLG - English\r\nAB - Canopy arthropods play integral roles in the functioning, biodiversity, and productivity of forest ecosystems. Yet quantitative sampling of arboreal arthropods poses formidable challenges. We evaluated three methods of sampling the introduced basswood thrips, Thrips calcaratus Uzel (Thysanoptera: Thripidae), from the foliage of basswood canopies with respect to statistical variability and practical considerations (legal, economic and logistical accessibility). All three methods involved removal of foliage, which was performed using a pole-pruner, shotgun, and certified tree-climber. We also tested a fourth method, in which the tree-climber enclosed samples in a plastic bag to estimate losses that occur when branches fall to the ground, even though this is often not practical. The climber plus bag and pole-pruning methods obtained the highest numbers of thrips. Mean number of larval thrips did not vary significantly among the three main sampling methods. Site had a stronger effect on the number of larval thrips obtained than on the number of adults. A significant method by site interaction was observed with adults but not larvae. Significant collection date (which corresponds to thrips life stage) by site interaction was also observed. We regressed sampling methods to determine if the number of thrips obtained using one method can be used to predict the number obtained with another. Tree-climber and pole-pruner data were highly predictive of each other, but shotgun data cannot be used to estimate other methods. Pole-pruning is the most cost-effective and legally permissible technique, but is limited to trees with accessible lower branches. The shotgun method is cost-effective and useful in sampling trees at least up to 27 m, but is prohibited close to human activity. The tree-climber is effective and broadly applicable, but incurs the highest costs. This study shows the need to evaluate a variety of techniques when sampling arboreal insects with respect to predictability, pragmatics and life stages. Copyright 2004, Elsevier B.V. All rights reserved.\r\nMC - Forestry\r\nMC - Methods and Techniques\r\nMC - Parasitology\r\nMC - Population Studies\r\nBC - [86215] Hominidae\r\nBC - [75350] Thysanoptera\r\nBC - [26865] Tiliaceae\r\nST - [86215] Hominidae, Primates, Mammalia, Vertebrata, Chordata, Animalia\r\nST - [75350] Thysanoptera, Insecta, Arthropoda, Invertebrata, Animalia\r\nST - [26865] Tiliaceae, Dicotyledones, Angiospermae, Spermatophyta, Plantae\r\nTN - Hominidae: Animals, Chordates, Humans, Mammals, Primates, Vertebrates\r\nTN - Thysanoptera: Animals, Arthropods, Insects, Invertebrates\r\nTN - Tiliaceae: Angiosperms, Dicots, Plants, Spermatophytes, Vascular Plants\r\nOR - human: common, certified tree-climber [Hominidae]\r\nOR - Thrips calcaratus: species, basswood thrips, common, larva, mature, alien species, parasite, canopy arthropod [Thysanoptera]\r\nOR - Thysanoptera: higher taxa [Thysanoptera]\r\nOR - Tilia americana: species, host, basswood, commercial species [Tiliaceae]\r\nMQ - pole-pruner: field equipment\r\nMQ - shotgun: field equipment\r\nMI - forest ecosystem\r\nMI - northern hardwood deciduous forest\r\nYR - 2004\r\nUP - 200400. BIOSIS Update: 20041209.\r\nXL - http://ovidsp.ovid.com/ovidweb.cgi?T=JS&CSC=Y&NEWS=N&PAGE=fulltext&D=biop30&AN=PREV200400473722\r\nXL - http://hopper.library.northwestern.edu/sfx/?sid=OVID:biopdb&id=pmid:&id=doi:&issn=0378-1127&isbn=&volume=201&issue=2&spage=327&pages=327-334&date=2004&title=Forest+Ecology+%26+Management&atitle=Comparison+of+methods+for+sampling+Thysanoptera+on+basswood+%28Tilia+americana+L.%29+trees+in+mixed+northern+hardwood+deciduous+forests&aulast=Werner&pid=%3Cauthor%3EWerner%2C+S.+M.%3BNordheim%2C+E.+V.%3BRaffa%2C+K.+F.%3C%2Fauthor%3E&%3CAN%3EPREV200400473722%3C%2FAN%3E&%3CDT%3EArticle%3C%2FDT%3E\r\n\r\n<7807. >\r\nVN - Ovid Technologies\r\nDB - BIOSIS Previews\r\nAN - PREV200400435038\r\nRO - Copyright Thomson 2004.\r\nAU - Gaertner, Alfred L. [Author, Reprint Author; E-mail: agaertner@genecor.com]\r\nAU - Chow, Nicole L. [Author]\r\nAU - Fryksdale, Beth G. [Author]\r\nAU - Jedrzejewski, Paul [Author]\r\nAU - Miller, Brian S. [Author]\r\nAU - Paech, Sigrid [Author]\r\nAU - Wong, David L. [Author]\r\nIN - Genencor International Inc., 925 Page Mill Road, Palo Alto, CA, 94304, USA.\r\nCY - USA\r\nTI - Increasing throughput and data quality for proteomics.\r\nSO - Kamp, Roza Maria [Editor, Reprint Author], Calvete, Juan J. [Editor], Choli-Papadopoulou, Theodora [Editor]. Methods in proteome and protein analysis.:371-397, 2004.\r\nSeries Information: Principles and Practice.\r\nPT - Book Chapter\r\nIB - 3-540-20222-6 (cloth)\r\nPI - Springer-Verlag GmbH & Co. KG, Heidelberger Platz 3, D-14197, Berlin, Germany\r\nCC - [03502] Genetics - General\r\nCC - [10064] Biochemistry studies - Proteins, peptides and amino acids\r\nLG - English\r\nMC - Methods and Techniques\r\nMC - Molecular Genetics: Biochemistry and Molecular Biophysics\r\nCB - proteins\r\nMQ - SDS-polyacrylamide gel electrophoresis: electrophoretic techniques, laboratory techniques\r\nMQ - high-throughput analysis: genetic techniques, laboratory techniques\r\nMQ - matrix-assisted laser/desorption ionization time-of-flight mass spectrometry: laboratory techniques, spectrum analysis techniques\r\nMQ - proteomic analysis: genetic techniques, laboratory techniques\r\nYR - 2004\r\nUP - 200400. BIOSIS Update: 20041110.\r\nXL - http://ovidsp.ovid.com/ovidweb.cgi?T=JS&CSC=Y&NEWS=N&PAGE=fulltext&D=biop30&AN=PREV200400435038\r\nXL - http://hopper.library.northwestern.edu/sfx/?sid=OVID:biopdb&id=pmid:&id=doi:&issn=&isbn=3540202226&volume=&issue=&spage=371&pages=371-397&date=2004&title=Methods+in+proteome+and+protein+analysis&atitle=Increasing+throughput+and+data+quality+for+proteomics.&aulast=Gaertner&pid=%3Cauthor%3EGaertner%2C+Alfred+L.%3BChow%2C+Nicole+L.%3BFryksdale%2C+Beth+G.%3BJedrzejewski%2C+Paul%3BMiller%2C+Brian+S.%3BPaech%2C+Sigrid%3BWong%2C+David+L.%3C%2Fauthor%3E&%3CAN%3EPREV200400435038%3C%2FAN%3E&%3CDT%3EBook+Chapter%3C%2FDT%3E\r\n\r\n<7808. >\r\nVN - Ovid Technologies\r\nDB - BIOSIS Previews\r\nAN - PREV200400435037\r\nRO - Copyright Thomson 2004.\r\nAU - Hjerno, Karin [Author, Reprint Author]\r\nAU - Hojrup, Peter [Author; E-mail: php@bmb.sdu.dk]\r\nIN - Department of Biochemistry and Molecular Biology, University of Southern Denmark, Campusvej 55, 5230, Odense M, Denmark.\r\nCY - Denmark\r\nTI - Peak Erazor: A Windows-based program for improving peptide mass searches.\r\nSO - Kamp, Roza Maria [Editor, Reprint Author], Calvete, Juan J. [Editor], Choli-Papadopoulou, Theodora [Editor]. Methods in proteome and protein analysis.:359-370, 2004.\r\nSeries Information: Principles and Practice.\r\nPT - Book Chapter\r\nIB - 3-540-20222-6 (cloth)\r\nPI - Springer-Verlag GmbH & Co. KG, Heidelberger Platz 3, D-14197, Berlin, Germany\r\nCC - [00530] General biology - Information, documentation, retrieval and computer applications\r\nCC - [10060] Biochemistry studies - General\r\nCC - [10064] Biochemistry studies - Proteins, peptides and amino acids\r\nLG - English\r\nMC - Biochemistry and Molecular Biophysics\r\nMC - Computer Applications: Computational Biology\r\nMC - Methods and Techniques\r\nCB - peptides\r\nMQ - Peak Erazor: computer software\r\nMQ - matrix-assisted laser/desorption ionization mass spectrometry: laboratory techniques, spectrum analysis techniques\r\nYR - 2004\r\nUP - 200400. BIOSIS Update: 20041110.\r\nXL - http://ovidsp.ovid.com/ovidweb.cgi?T=JS&CSC=Y&NEWS=N&PAGE=fulltext&D=biop30&AN=PREV200400435037\r\nXL - http://hopper.library.northwestern.edu/sfx/?sid=OVID:biopdb&id=pmid:&id=doi:&issn=&isbn=3540202226&volume=&issue=&spage=359&pages=359-370&date=2004&title=Methods+in+proteome+and+protein+analysis&atitle=Peak+Erazor%3A+A+Windows-based+program+for+improving+peptide+mass+searches.&aulast=Hjerno&pid=%3Cauthor%3EHjerno%2C+Karin%3BHojrup%2C+Peter%3C%2Fauthor%3E&%3CAN%3EPREV200400435037%3C%2FAN%3E&%3CDT%3EBook+Chapter%3C%2FDT%3E\r\n\r\n\r\n",
"items": [
{
"itemType": "patent",
"title": "Dietary supplements containing ultradense calcium citrate and carbonyl iron",
"creators": [
{
"firstName": "Neill B.",
"lastName": "Walsdorf",
"creatorType": "author"
},
{
"firstName": "Cindy L.",
"lastName": "Wabner",
"creatorType": "author"
},
{
"firstName": "George",
"lastName": "Alexandrides",
"creatorType": "author"
}
],
"issueDate": "2004",
"abstractNote": "A vitamin and mineral supplement containing ULTRADENSE.TM. calcium citrate and carbonyl iron for use in humans. Calcium in the form of citrate enhances absorption of iron, zinc, and magnesium. ULTRADENSE.TM. calcium citrate provides more bioavailable calcium than usual preparations of calcium citrate. Carbonyl iron provides iron in a form that significantly reduces the risk to children of accidental iron poisoning from formulations that provide iron in salt form. The supplement may further contain a number of vitamins and minerals in a tablet that is elegantly small, weighing about 1.5-1.6 g. The small size allows ease of swallowing and encourages patient acceptability. Methods of making such a supplement and methods of treating maladies in need of vitamin and mineral supplementation are provided.",
"language": "English",
"patentNumber": "US 6818228",
"rights": "Copyright Thomson 2004.",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
},
{
"itemType": "journalArticle",
"title": "Comparison of methods for sampling Thysanoptera on basswood (Tilia americana L.) trees in mixed northern hardwood deciduous forests",
"creators": [
{
"firstName": "S. M.",
"lastName": "Werner",
"creatorType": "author"
},
{
"firstName": "E. V.",
"lastName": "Nordheim",
"creatorType": "author"
},
{
"firstName": "K. F.",
"lastName": "Raffa",
"creatorType": "author"
}
],
"date": "2004 November",
"ISSN": "0378-1127",
"abstractNote": "Canopy arthropods play integral roles in the functioning, biodiversity, and productivity of forest ecosystems. Yet quantitative sampling of arboreal arthropods poses formidable challenges. We evaluated three methods of sampling the introduced basswood thrips, Thrips calcaratus Uzel (Thysanoptera: Thripidae), from the foliage of basswood canopies with respect to statistical variability and practical considerations (legal, economic and logistical accessibility). All three methods involved removal of foliage, which was performed using a pole-pruner, shotgun, and certified tree-climber. We also tested a fourth method, in which the tree-climber enclosed samples in a plastic bag to estimate losses that occur when branches fall to the ground, even though this is often not practical. The climber plus bag and pole-pruning methods obtained the highest numbers of thrips. Mean number of larval thrips did not vary significantly among the three main sampling methods. Site had a stronger effect on the number of larval thrips obtained than on the number of adults. A significant method by site interaction was observed with adults but not larvae. Significant collection date (which corresponds to thrips life stage) by site interaction was also observed. We regressed sampling methods to determine if the number of thrips obtained using one method can be used to predict the number obtained with another. Tree-climber and pole-pruner data were highly predictive of each other, but shotgun data cannot be used to estimate other methods. Pole-pruning is the most cost-effective and legally permissible technique, but is limited to trees with accessible lower branches. The shotgun method is cost-effective and useful in sampling trees at least up to 27 m, but is prohibited close to human activity. The tree-climber is effective and broadly applicable, but incurs the highest costs. This study shows the need to evaluate a variety of techniques when sampling arboreal insects with respect to predictability, pragmatics and life stages. Copyright 2004, Elsevier B.V. All rights reserved.",
"callNumber": "PREV200400473722",
"issue": "2-3",
"language": "English",
"libraryCatalog": "BIOSIS Previews",
"pages": "327-334",
"publicationTitle": "Forest Ecology & Management",
"rights": "Copyright Thomson 2004.",
"volume": "201",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
},
{
"itemType": "bookSection",
"title": "Increasing throughput and data quality for proteomics",
"creators": [
{
"firstName": "Alfred L.",
"lastName": "Gaertner",
"creatorType": "author"
},
{
"firstName": "Nicole L.",
"lastName": "Chow",
"creatorType": "author"
},
{
"firstName": "Beth G.",
"lastName": "Fryksdale",
"creatorType": "author"
},
{
"firstName": "Paul",
"lastName": "Jedrzejewski",
"creatorType": "author"
},
{
"firstName": "Brian S.",
"lastName": "Miller",
"creatorType": "author"
},
{
"firstName": "Sigrid",
"lastName": "Paech",
"creatorType": "author"
},
{
"firstName": "David L.",
"lastName": "Wong",
"creatorType": "author"
},
{
"firstName": "Roza Maria",
"lastName": "Kamp",
"creatorType": "editor"
},
{
"firstName": "Juan J.",
"lastName": "Calvete",
"creatorType": "editor"
},
{
"firstName": "Theodora",
"lastName": "Choli-Papadopoulou",
"creatorType": "editor"
}
],
"date": "2004",
"ISBN": "3540202226",
"bookTitle": "Methods in proteome and protein analysis",
"callNumber": "PREV200400435038",
"language": "English",
"libraryCatalog": "BIOSIS Previews",
"pages": "371-397",
"rights": "Copyright Thomson 2004.",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
},
{
"itemType": "bookSection",
"title": "Peak Erazor: A Windows-based program for improving peptide mass searches",
"creators": [
{
"firstName": "Karin",
"lastName": "Hjerno",
"creatorType": "author"
},
{
"firstName": "Peter",
"lastName": "Hojrup",
"creatorType": "author"
},
{
"firstName": "Roza Maria",
"lastName": "Kamp",
"creatorType": "editor"
},
{
"firstName": "Juan J.",
"lastName": "Calvete",
"creatorType": "editor"
},
{
"firstName": "Theodora",
"lastName": "Choli-Papadopoulou",
"creatorType": "editor"
}
],
"date": "2004",
"ISBN": "3540202226",
"bookTitle": "Methods in proteome and protein analysis",
"callNumber": "PREV200400435037",
"language": "English",
"libraryCatalog": "BIOSIS Previews",
"pages": "359-370",
"rights": "Copyright Thomson 2004.",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "<1. >\r\nVN - Ovid Technologies\r\nDB - International Political Science Abstract\r\nAN - 63-7578\r\nAU - AHMED, Mughees.\r\nTI - Legitimacy crises in Pakistan.\r\nTT - A comparative study of political behavior.\r\nSO - Journal of Political Studies 12, Winter 2007: 7-14.\r\nDE - Legitimacy crisis, Pakistan\r\nAB - This paper presents a thorough review of legality of governments in Pakistan. It suggests that how non-political rulers have legalized their authority within the political system of Pakistan. This paper analyzes the behavior of dictators and their supporters and even opponents which legitimize unconstitutional actions taken by dictators. Analytical and political interaction approach is adopted in this paper. Another object of this discussion is to analyze the behavior of politicians and the judiciary about the legitimacy of dictators' rule. [R]\r\nLG - English\r\nIS - 1991-1080\r\nYR - 2007\r\nUP - 201312\r\nXL - http://ovidsp.ovid.com/ovidweb.cgi?T=JS&CSC=Y&NEWS=N&PAGE=fulltext&D=ipsa&AN=63-7578\r\nXL - http://hopper.library.northwestern.edu/sfx/?sid=OVID:ipsadb&id=pmid:&id=&issn=1991-1080&isbn=&volume=12&issue=&spage=7&pages=7-14&date=2007&title=Journal+of+Political+Studies&atitle=Legitimacy+crises+in+Pakistan.&aulast=AHMED&pid=%3Cauthor%3EAHMED%2C+Mughees%3C%2Fauthor%3E&%3CAN%3E63-7578%3C%2FAN%3E&%3CDT%3E%3C%2FDT%3E\r\n\r\n<2. >\r\nVN - Ovid Technologies\r\nDB - International Political Science Abstract\r\nAN - 63-7566\r\nAU - WIJERS, Gea D M.\r\nTI - Contributions to transformative change in Cambodia: a study on returnees as institutional entrepreneurs.\r\nSO - Journal of Current Southeast Asian Affairs, 2013(1): 3-28.\r\nDE - Democratization , French returnees , Cambodia\r\nAB - This paper explores the experiences of Cambodian French returnees who are contributing to transformative change in Cambodia as institutional entrepreneurs. In order to delve into how returnees and their work are perceived in both host and home country, this multi-sited research project was designed as a comparative case study. Data were primarily collected through conversations with individual informants from the Lyonnese and Parisian Cambodian community as well as selected key informants in Phnom Penh. Excerpts of case studies are presented and discussed to illustrate the history, context and situation of their return as these influence their institutional entrepreneurial activities and the ways in which they use their transnational social networks as resources. [R, abr.]\r\nLG - English\r\nIS - 1868-1034\r\nYR - 2013\r\nUP - 201312\r\nXL - http://ovidsp.ovid.com/ovidweb.cgi?T=JS&CSC=Y&NEWS=N&PAGE=fulltext&D=ipsa&AN=63-7566\r\nXL - http://hopper.library.northwestern.edu/sfx/?sid=OVID:ipsadb&id=pmid:&id=&issn=1868-1034&isbn=&volume=2013&issue=1&spage=3&pages=3-28&date=2013&title=Journal+of+Current+Southeast+Asian+Affairs&atitle=Contributions+to+transformative+change+in+Cambodia%3A+a+study+on+returnees+as+institutional+entrepreneurs.&aulast=WIJERS&pid=%3Cauthor%3EWIJERS%2C+Gea+D+M%3C%2Fauthor%3E&%3CAN%3E63-7566%3C%2FAN%3E&%3CDT%3E%3C%2FDT%3E\r\n\r\n\r\n",
"items": [
{
"itemType": "journalArticle",
"title": "Legitimacy crises in Pakistan",
"creators": [
{
"firstName": "Mughees",
"lastName": "Ahmed",
"creatorType": "author"
}
],
"date": "2007",
"abstractNote": "This paper presents a thorough review of legality of governments in Pakistan. It suggests that how non-political rulers have legalized their authority within the political system of Pakistan. This paper analyzes the behavior of dictators and their supporters and even opponents which legitimize unconstitutional actions taken by dictators. Analytical and political interaction approach is adopted in this paper. Another object of this discussion is to analyze the behavior of politicians and the judiciary about the legitimacy of dictators' rule. [R]",
"callNumber": "63-7578",
"language": "English",
"libraryCatalog": "International Political Science Abstract",
"pages": "7-14",
"publicationTitle": "Journal of Political Studies 12",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
},
{
"itemType": "journalArticle",
"title": "Contributions to transformative change in Cambodia: a study on returnees as institutional entrepreneurs",
"creators": [
{
"firstName": "Gea D. M.",
"lastName": "Wijers",
"creatorType": "author"
}
],
"date": "2013",
"ISSN": "1868-1034",
"abstractNote": "This paper explores the experiences of Cambodian French returnees who are contributing to transformative change in Cambodia as institutional entrepreneurs. In order to delve into how returnees and their work are perceived in both host and home country, this multi-sited research project was designed as a comparative case study. Data were primarily collected through conversations with individual informants from the Lyonnese and Parisian Cambodian community as well as selected key informants in Phnom Penh. Excerpts of case studies are presented and discussed to illustrate the history, context and situation of their return as these influence their institutional entrepreneurial activities and the ways in which they use their transnational social networks as resources. [R, abr.]",
"callNumber": "63-7566",
"issue": "1",
"language": "English",
"libraryCatalog": "International Political Science Abstract",
"pages": "3-28",
"publicationTitle": "Journal of Current Southeast Asian Affairs",
"volume": "2013",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "<3. >\r\nVN - Ovid Technologies\r\nDB - Journals@Ovid\r\nAN - 00135124-201001000-00018.\r\nAU - Peterson, James A. Ph.D., FACSM\r\nIN - James A. Peterson, Ph.D., FACSM, is a freelance writer and consultant in sports medicine. From 1990 until 1995, Dr. Peterson was director of sports medicine with StairMaster. Until that time, he was professor of physical education at the United States Military Academy.\r\nTI - Take Ten: Need-to-Know Facts About Breast Cancer. [Miscellaneous]\r\nSO - ACSM'S Health & Fitness Journal January/February 2010;14(1):56\r\nJC - 9705338\r\nLG - English.\r\nDT - DEPARTMENTS.\r\nSB - Clinical Medicine, Health Professions.\r\nIS - 1091-5397\r\nDI - 10.1249/FIT.0b013e3181c6723d\r\nXL - http://ovidsp.ovid.com/ovidweb.cgi?T=JS&CSC=Y&NEWS=N&PAGE=fulltext&D=ovftk&AN=00135124-201001000-00018\r\n\r\n<5. >\r\nVN - Ovid Technologies\r\nDB - Journals@Ovid\r\nAN - 01189059-201108000-00009.\r\nAU - Zhang, Weijia 1,2,+\r\nAU - Ding, Wei 2,+\r\nAU - Chen, Ye 2\r\nAU - Feng, Meilin 2\r\nAU - Ouyang, Yongmei 2\r\nAU - Yu, Yanhui 2\r\nAU - He, Zhimin 1,2,*\r\nIN - (1)Cancer Research Institute and Cancer Hospital, Guangzhou Medical University, Guangzhou 510182, China, (2)Cancer Research Institute, Xiangya School of Medicine, Central South University, Changsha 410078, China\r\nTI - Up-regulation of breast cancer resistance protein plays a role in HER2-mediated chemoresistance through PI3K/Akt and nuclear factor-kappa B signaling pathways in MCF7 breast cancer cells. [Article]\r\nSO - Acta Biochimica et Biophysica Sinica August 2011;43(8):647-653\r\nJC - 101206716\r\nAB - Human epidermal growth factor receptor 2 (HER2/neu, also known as ErbB2) overexpression is correlated with the poor prognosis and chemoresistance in cancer. Breast cancer resistance protein (BCRP and ABCG2) is a drug efflux pump responsible for multidrug resistance (MDR) in a variety of cancer cells. HER2 and BCRP are associated with poor treatment response in breast cancer patients, although the relationship between HER2 and BCRP expression is not clear. Here, we showed that transfection of HER2 into MCF7 breast cancer cells (MCF7/HER2) resulted in an up-regulation of BCRP via the phosphatidylinositol 3-kinase (PI3K)/Akt and nuclear factor-kappa B (NF-[kappa]B) signaling. Treatment of MCF/HER2 cells with the PI3K inhibitor LY294002, the I[kappa]B phosphorylation inhibitor Bay11-7082, and the dominant negative mutant of I[kappa]B[alpha] inhibited HER2-induced BCRP promoter activity. Furthermore, we found that HER2 overexpression led to an increased resistance of MCF7 cells to multiple antitumor drugs such as paclitaxel (Taxol), cisplatin (DDP), etoposide (VP-16), adriamycin (ADM), mitoxantrone (MX), and 5-fluorouracil (5-FU). Moreover, silencing the expression of BCRP or selectively inhibiting the activity of Akt or NF-[kappa]B sensitized the MCF7/HER2 cells to these chemotherapy agents at least in part. Taken together, up-regulation of BCRP through PI3K/AKT/NF-[kappa]B signaling pathway played an important role in HER2-mediated chemoresistance of MCF7 cells, and AKT, NF-[kappa]B, and BCRP pathways might serve as potential targets for therapeutic intervention., Copyright (C) 2011 Blackwell Publishing Ltd.\r\nKW - BCRP; PI3K/AKT/NF-[kappa]B; chemoresistance\r\nLG - English.\r\nDT - Original Articles.\r\nSB - Life & Biomedical Sciences.\r\nIS - 1672-9145\r\nDI - 10.1093/abbs/gmr050\r\nXL - http://ovidsp.ovid.com/ovidweb.cgi?T=JS&CSC=Y&NEWS=N&PAGE=fulltext&D=ovftm&AN=01189059-201108000-00009\r\n\r\n<8. >\r\nVN - Ovid Technologies\r\nDB - Journals@Ovid\r\nAN - 00000042-201011000-00010.\r\nAU - Simon, Ph. 1\r\nAU - Dept, S. 1\r\nAU - Lefranc, F. 2\r\nAU - Noel, J. C. 3\r\nIN - Department of Gynaecology(1), Neurosurgery(2) and Gynaeco Pathology(3), ULB Hopital Erasme, Bruxelles, Belgium.\r\nTI - Brain Metastasis after Breast Cancer and Hysterectomy for a Benign Leiomyoma. [Article]\r\nSO - Acta Chirurgica Belgica November/December 2010;6:611-613\r\nJC - 0370571\r\nLG - English.\r\nDT - article.\r\nSB - Clinical Medicine, Alternative & Complementary Medicine, Traditional Chinese Medicine.\r\nIS - 0001-5458\r\nXL - http://ovidsp.ovid.com/ovidweb.cgi?T=JS&CSC=Y&NEWS=N&PAGE=fulltext&D=ovftl&AN=00000042-201011000-00010\r\n\r\n<94. >\r\nVN - Ovid Technologies\r\nDB - Your Journals@Ovid\r\nAN - 00000372-201112000-00014.\r\nAU - Gazic, Barbara MD, PhD *\r\nAU - Pizem, Joze MD, PhD +\r\nIN - From the *Department of Pathology, Institute of Oncology, Ljubljana, Slovenia; and +Institute of Pathology, Medical Faculty, University of Ljubliana, Ljubljana, Slovenia.\r\nTI - Lobular Breast Carcinoma Metastasis to a Superficial Plexiform Schwannoma as the First Evidence of an Occult Breast Cancer. [Report]\r\nSO - American Journal of Dermatopathology December 2011;33(8):845-849\r\nJC - 35v, 7911005\r\nAB - Tumor to tumor metastasis is a rare phenomenon, in which one, benign or malignant, tumor is involved by metastatic deposits from another. Most documented tumor to tumor metastases have been located intracranially, in which, in the majority of cases, either a breast or a lung carcinoma metastasized to a meningioma. Only 7 cases of metastases to schwannoma have so far been reported in the English literature, in 6 cases to an intracranial acoustic schwannoma and in a single case to a subcutaneous schwannoma. We present a case of dermal/subcutaneous plexiform schwannoma containing metastatic deposits of an occult lobular breast carcinoma, creating a unique schwannoma with epithelioid cells. Differential diagnosis of schwannoma with epithelioid cells includes malignant transformation of schwannoma and metastasis of a carcinoma or melanoma to schwannoma, epithelioid schwannoma, and schwannoma with glandular or pseudo glandular elements., (C) 2011 Lippincott Williams & Wilkins, Inc.\r\nKW - plexiform schwannoma; lobular breast carcinoma; tumor to tumor metastasis\r\nLG - English.\r\nDT - Extraordinary Case Report.\r\nSB - Clinical Medicine, Health Professions.\r\nIS - 0193-1091\r\nDI - 10.1097/DAD.0b013e31820d9c0e\r\nXL - http://ovidsp.ovid.com/ovidweb.cgi?T=JS&CSC=Y&NEWS=N&PAGE=fulltext&D=yrovftm&AN=00000372-201112000-00014\r\n\r\n\r\n",
"items": [
{
"itemType": "journalArticle",
"title": "Take Ten: Need-to-Know Facts About Breast Cancer",
"creators": [
{
"firstName": "James A.",
"lastName": "Peterson",
"creatorType": "author"
}
],
"date": "2010 January/February",
"DOI": "10.1249/FIT.0b013e3181c6723d",
"ISSN": "1091-5397",
"callNumber": "00135124-201001000-00018",
"issue": "1",
"language": "English.",
"libraryCatalog": "Journals@Ovid",
"publicationTitle": "ACSM'S Health & Fitness Journal",
"volume": "14",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
},
{
"itemType": "journalArticle",
"title": "Up-regulation of breast cancer resistance protein plays a role in HER2-mediated chemoresistance through PI3K/Akt and nuclear factor-kappa B signaling pathways in MCF7 breast cancer cells",
"creators": [
{
"firstName": "Weijia",
"lastName": "Zhang",
"creatorType": "author"
},
{
"firstName": "Wei",
"lastName": "Ding",
"creatorType": "author"
},
{
"firstName": "Ye",
"lastName": "Chen",
"creatorType": "author"
},
{
"firstName": "Meilin",
"lastName": "Feng",
"creatorType": "author"
},
{
"firstName": "Yongmei",
"lastName": "Ouyang",
"creatorType": "author"
},
{
"firstName": "Yanhui",
"lastName": "Yu",
"creatorType": "author"
},
{
"firstName": "Zhimin",
"lastName": "He",
"creatorType": "author"
}
],
"date": "2011 August",
"DOI": "10.1093/abbs/gmr050",
"ISSN": "1672-9145",
"abstractNote": "Human epidermal growth factor receptor 2 (HER2/neu, also known as ErbB2) overexpression is correlated with the poor prognosis and chemoresistance in cancer. Breast cancer resistance protein (BCRP and ABCG2) is a drug efflux pump responsible for multidrug resistance (MDR) in a variety of cancer cells. HER2 and BCRP are associated with poor treatment response in breast cancer patients, although the relationship between HER2 and BCRP expression is not clear. Here, we showed that transfection of HER2 into MCF7 breast cancer cells (MCF7/HER2) resulted in an up-regulation of BCRP via the phosphatidylinositol 3-kinase (PI3K)/Akt and nuclear factor-kappa B (NF-[kappa]B) signaling. Treatment of MCF/HER2 cells with the PI3K inhibitor LY294002, the I[kappa]B phosphorylation inhibitor Bay11-7082, and the dominant negative mutant of I[kappa]B[alpha] inhibited HER2-induced BCRP promoter activity. Furthermore, we found that HER2 overexpression led to an increased resistance of MCF7 cells to multiple antitumor drugs such as paclitaxel (Taxol), cisplatin (DDP), etoposide (VP-16), adriamycin (ADM), mitoxantrone (MX), and 5-fluorouracil (5-FU). Moreover, silencing the expression of BCRP or selectively inhibiting the activity of Akt or NF-[kappa]B sensitized the MCF7/HER2 cells to these chemotherapy agents at least in part. Taken together, up-regulation of BCRP through PI3K/AKT/NF-[kappa]B signaling pathway played an important role in HER2-mediated chemoresistance of MCF7 cells, and AKT, NF-[kappa]B, and BCRP pathways might serve as potential targets for therapeutic intervention., Copyright (C) 2011 Blackwell Publishing Ltd.",
"callNumber": "01189059-201108000-00009",
"issue": "8",
"language": "English.",
"libraryCatalog": "Journals@Ovid",
"pages": "647-653",
"publicationTitle": "Acta Biochimica et Biophysica Sinica",
"volume": "43",
"attachments": [],
"tags": [
{
"tag": "BCRP"
},
{
"tag": "PI3K/AKT/NF-[kappa]B"
},
{
"tag": "chemoresistance"
}
],
"notes": [],
"seeAlso": []
},
{
"itemType": "journalArticle",
"title": "Brain Metastasis after Breast Cancer and Hysterectomy for a Benign Leiomyoma",
"creators": [
{
"firstName": "Ph",
"lastName": "Simon",
"creatorType": "author"
},
{
"firstName": "S.",
"lastName": "Dept",
"creatorType": "author"
},
{
"firstName": "F.",
"lastName": "Lefranc",
"creatorType": "author"
},
{
"firstName": "J. C.",
"lastName": "Noel",
"creatorType": "author"
}
],
"date": "2010 November/December",
"ISSN": "0001-5458",
"callNumber": "00000042-201011000-00010",
"language": "English.",
"libraryCatalog": "Journals@Ovid",
"pages": "611-613",
"publicationTitle": "Acta Chirurgica Belgica",
"volume": "6",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
},
{
"itemType": "journalArticle",
"title": "Lobular Breast Carcinoma Metastasis to a Superficial Plexiform Schwannoma as the First Evidence of an Occult Breast Cancer",
"creators": [
{
"firstName": "Barbara",
"lastName": "Gazic",
"creatorType": "author"
},
{
"firstName": "Joze",
"lastName": "Pizem",
"creatorType": "author"
}
],
"date": "2011 December",
"DOI": "10.1097/DAD.0b013e31820d9c0e",
"ISSN": "0193-1091",
"abstractNote": "Tumor to tumor metastasis is a rare phenomenon, in which one, benign or malignant, tumor is involved by metastatic deposits from another. Most documented tumor to tumor metastases have been located intracranially, in which, in the majority of cases, either a breast or a lung carcinoma metastasized to a meningioma. Only 7 cases of metastases to schwannoma have so far been reported in the English literature, in 6 cases to an intracranial acoustic schwannoma and in a single case to a subcutaneous schwannoma. We present a case of dermal/subcutaneous plexiform schwannoma containing metastatic deposits of an occult lobular breast carcinoma, creating a unique schwannoma with epithelioid cells. Differential diagnosis of schwannoma with epithelioid cells includes malignant transformation of schwannoma and metastasis of a carcinoma or melanoma to schwannoma, epithelioid schwannoma, and schwannoma with glandular or pseudo glandular elements., (C) 2011 Lippincott Williams & Wilkins, Inc.",
"callNumber": "00000372-201112000-00014",
"issue": "8",
"language": "English.",
"libraryCatalog": "Your Journals@Ovid",
"pages": "845-849",
"publicationTitle": "American Journal of Dermatopathology",
"volume": "33",
"attachments": [],
"tags": [
{
"tag": "lobular breast carcinoma"
},
{
"tag": "plexiform schwannoma"
},
{
"tag": "tumor to tumor metastasis"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "<697. >\r\nVN - Ovid Technologies\r\nDB - Zoological Record\r\nAN - ZOOR14305031738\r\nRO - Copyright 2010 Thomson Reuters\r\nTI - Spiders (Arachnida, Aranei) from Sakhalin and the Kuril Islands.\r\nAU - Marusik, YuM\r\nAU - Eskov, KYu\r\nAU - Logunov, DV\r\nAU - Basarukin, AM\r\nIN - Institute for Biological Problems of the North, Russian Academy of Sciences, Karl Marx Prospekt 24, Magadan, 685010, Russia.\r\nIU - http://artedi.fish.washington.edu/okhotskia/isip/Info/spiders.htm [13/03/2007]\r\nPB - International Sakhalin Island Project, place of publication not given\r\nBT - Spiders (Arachnida, Aranei) from Sakhalin and the Kuril Islands. International Sakhalin Island Project, place of publication not given. [undated]: Unpaginated. http://artedi.fish.washington.edu/okhotskia/isip/Info/spiders.htm [viewed 13 March, 2007]\r\nLG - English\r\nPT - Book\r\nAB - A check-list of spiders based on personal and literature data from Sakhalin and Kuril Islands is presented. Four hundred and three species have been found there. Distribution records within Sakhalin (districts) and the Kuril Islands are given. Dubious species recorded by Japanese authors (1924-1937) are listed separately with some comments. Twelve new synonyms, new combinations, and new nominations are proposed. Several previous misidentifications in the Far Eastern linyphiids are corrected.\r\nBR - Systematics\r\nBR - Nomenclature\r\nBR - Combination\r\nBR - Synonymy\r\nBR - Available name\r\nBR - Taxonomy\r\nBR - Taxonomic position\r\nBR - Documentation\r\nBR - Publications\r\nBR - Land zones\r\nBR - Palaearctic region\r\nBR - Eurasia\r\nTN - Arachnids\r\nTN - Arthropods\r\nTN - Chelicerates\r\nTN - Invertebrates\r\nST - Animalia\r\nST - Arthropoda\r\nST - Arachnida\r\nST - Araneae\r\nDE - Aranei: Checklists, Distributional checklist, Corrected & updated, Russia, Kuril Islands & Sakhalin, Corrected & updated distributional checklist & systematics.\r\nSY - Aranei, http://www.organismnames.com/namedetails.htm?lsid=574767, (Araneae)\r\n\r\n Bathyphantes gracilis (Blackwall 1841), http://www.organismnames.com/namedetails.htm?lsid=1822086, (Araneae): Syn nov, Bathyphantes orientis Oi 1960: Syn nov, Bathyphantes pusio Kulczynski 1885\r\n\r\n Bathyphantes pogonias Kulczynski 1885, http://www.organismnames.com/namedetails.htm?lsid=1895287, (Araneae): Syn nov, Bathyphantes castor Chamberlin 1925: Syn nov, Bathyphantes insulanus Holm 1960\r\n\r\n Ceratinopsis okhotensis Eskov, http://www.organismnames.com/namedetails.htm?lsid=1895288, (Araneae): Nom nov, For Ceratinopsis orientalis Eskov 1986\r\n\r\n Ceratinopsis orientalis Eskov 1986, http://www.organismnames.com/namedetails.htm?lsid=1895289, (Araneae): Preoccupied name replaced by, Ceratinopsis okhotensis Eskov\r\n\r\n Connithorax Eskov, http://www.organismnames.com/namedetails.htm?lsid=1895290, (Araneae): Nom nov, For Conothorax Eskov & Marusik 1992\r\n\r\n Conothorax Eskov & Marusik 1992, http://www.organismnames.com/namedetails.htm?lsid=1042692, (Araneae): Preoccupied name replaced by, Connithorax Eskov\r\n\r\n Erigone prolata Pickard-Cambridge 1873, http://www.organismnames.com/namedetails.htm?lsid=1895291, (Araneae): Referred to, Holminaria\r\n\r\n Holminaria prolata (Pickard-Cambridge 1873), http://www.organismnames.com/namedetails.htm?lsid=1895292, (Araneae): Comb nov, Transferred from Erigone: Syn nov, Holminaria obscura Eskov 1991\r\n\r\n Hybauchenidium mongolensis Heimer 1987, http://www.organismnames.com/namedetails.htm?lsid=666509, (Araneae): Referred to, Oedothorax\r\n\r\n Kaestneria anceps (Kulczynski 1885), http://www.organismnames.com/namedetails.htm?lsid=1895293, (Araneae): Junior synonym, Of Kaestneria pullata (Pickard-Cambridge 1863)\r\n\r\n Kaestneria pullata (Pickard-Cambridge 1863), http://www.organismnames.com/namedetails.htm?lsid=1895294, (Araneae): Senior synonym, Of Kaestneria anceps (Kulczynski 1885)\r\n\r\n Labula insularis (Saito 1935), http://www.organismnames.com/namedetails.htm?lsid=1895295, (Araneae): Syn nov, Labula chikunii Oi 1980\r\n\r\n Oedothorax mongolensis (Heimer 1987), http://www.organismnames.com/namedetails.htm?lsid=1895296, (Araneae): Comb nov, Transferred from Hybauchenidium\r\n\r\n Walckenaeria karpinskii (Pickard-Cambridge 1873), http://www.organismnames.com/namedetails.htm?lsid=1895297, (Araneae): Syn nov, Walckenaeria holmi (Millidge 1984)\r\n\r\n Walckenaeria vigilax (Blackwell 1853), http://www.organismnames.com/namedetails.htm?lsid=1895298, (Araneae): Syn nov, Erigone sollers Pickard-Cambridge 1873\r\nDD - 20100727\r\nUP - 201203. Zoological Records Update: 200705.\r\nXL - http://ovidsp.ovid.com/ovidweb.cgi?T=JS&CSC=Y&NEWS=N&PAGE=fulltext&D=zoor12&AN=ZOOR14305031738\r\nXL - http://libraries.colorado.edu:4550/resserv?sid=OVID:zoordb&id=pmid:&id=doi:&issn=&isbn=&volume=&issue=&spage=&pages=Unpaginated&date=&title=&atitle=Spiders+%28Arachnida%2C+Aranei%29+from+Sakhalin+and+the+Kuril+Islands.&aulast=Marusik&pid=%3Cauthor%3EMarusik%2C+YuM%3BEskov%2C+KYu%3BLogunov%2C+DV%3BBasarukin%2C+AM%3C%2Fauthor%3E%3CAN%3EZOOR14305031738%3C%2FAN%3E%3CDT%3E%3C%2FDT%3E\r\n\r\n<718. >\r\nVN - Ovid Technologies\r\nDB - Zoological Record\r\nAN - ZOOR14303018462\r\nRO - Copyright 2010 Thomson Reuters\r\nTI - Parasites of fishes: list of and dichotomous key to the identification of major metazoan groups.\r\nAU - Benz, George W [E-mail: gbenz@mtsu.edu]\r\nAU - Bullard, Stephen A\r\nIN - Department of Biology, P.O. Box 60, Middle Tennessee State University, Murfreesboro, TN 37132, USA.\r\nSO - Association of Zoos and Aquariums Regional Meetings Proceedings. 2005; 9pp..\r\nJL - http://www.aza.org/ConfWork/\r\nIU - http://www.aza.org/AZAPublications/2005ProceedingsReg/Documents/2005RegConfKnoxville3.pdf [23/01/2007]\r\nLG - English\r\nPT - Article\r\nPT - Meeting paper\r\nBR - Systematics\r\nBR - Taxonomy\r\nBR - Techniques\r\nBR - Pathological techniques\r\nBR - Parasites diseases and disorders\r\nBR - Hosts\r\nTN - Chordates\r\nTN - Fish\r\nTN - Vertebrates\r\nST - Animalia\r\nST - Chordata\r\nST - Vertebrata\r\nDE - Metazoa: Identification techniques, Parasites of Pisces in captivity, keys for parasite identification & risk assessment relationships, Diagnostic techniques, Piscean hosts, Parasitism in captivity.\r\n\r\n Pisces: Care in captivity, Metazoan parasitism in captivity, keys for parasite identification & risk assessment relationships, Diagnostic techniques, Diagnosis of parasites, Parasites, Metazoa, Parasitism in captivity.\r\nSY - Metazoa, http://www.organismnames.com/namedetails.htm?lsid=17934, (Animalia): Key, To major groups, Parasites of Pisces, in captivity, p. 3, Parasite\r\n\r\n Pisces, http://www.organismnames.com/namedetails.htm?lsid=249, (Vertebrata): Host\r\nYR - 2005\r\nDD - 20100727\r\nUP - 201203. Zoological Records Update: 200703.\r\nXL - http://ovidsp.ovid.com/ovidweb.cgi?T=JS&CSC=Y&NEWS=N&PAGE=fulltext&D=zoor12&AN=ZOOR14303018462\r\nXL - http://libraries.colorado.edu:4550/resserv?sid=OVID:zoordb&id=pmid:&id=doi:&issn=&isbn=&volume=2005&issue=&spage=&pages=9pp.&date=2005&title=Association+of+Zoos+and+Aquariums+Regional+Meetings+Proceedings&atitle=Parasites+of+fishes%3A+list+of+and+dichotomous+key+to+the+identification+of+major+metazoan+groups.&aulast=Benz&pid=%3Cauthor%3EBenz%2C+George+W%3BBullard%2C+Stephen+A%3C%2Fauthor%3E%3CAN%3EZOOR14303018462%3C%2FAN%3E%3CDT%3E%3C%2FDT%3E\r\n\r\n<723. >\r\nVN - Ovid Technologies\r\nDB - Zoological Record\r\nAN - ZOOR14302012772\r\nRO - Copyright 2010 Thomson Reuters\r\nTI - Key to the herpetofauna of Fiji.\r\nAU - Morrison, Clare\r\nIU - http://www.lucidcentral.org/keys/phoenix/fiji/herpetofauna/ [05/01/2007]\r\nPB - University of the South Pacific, Institute of Applied Sciences, Suva\r\nBT - Key to the herpetofauna of Fiji. University of the South Pacific, Institute of Applied Sciences, Suva. 2006: Unpaginated. http://www.lucidcentral.org/keys/phoenix/fiji/herpetofauna/ [viewed 05 January, 2007]\r\nLG - English\r\nPT - Book\r\nNT - Interactive online key using Lucid3 software.\r\nBR - Systematics\r\nBR - Taxonomy\r\nBR - Key\r\nBR - Land zones\r\nBR - Oceanic islands\r\nBR - Pacific Ocean islands\r\nTN - Amphibians\r\nTN - Chordates\r\nTN - Reptiles\r\nTN - Vertebrates\r\nST - Animalia\r\nST - Chordata\r\nST - Vertebrata\r\nDE - Amphibia, Reptilia: Fiji, Key to species.\r\nSY - Amphibia, http://www.organismnames.com/namedetails.htm?lsid=13, (Vertebrata): Key to species, Fiji\r\n\r\n Reptilia, http://www.organismnames.com/namedetails.htm?lsid=14, (Vertebrata)\r\nYR - 2006\r\nDD - 20100727\r\nUP - 201203. Zoological Records Update: 200702.\r\nXL - http://ovidsp.ovid.com/ovidweb.cgi?T=JS&CSC=Y&NEWS=N&PAGE=fulltext&D=zoor12&AN=ZOOR14302012772\r\nXL - http://libraries.colorado.edu:4550/resserv?sid=OVID:zoordb&id=pmid:&id=doi:&issn=&isbn=&volume=&issue=&spage=&pages=Unpaginated&date=2006&title=&atitle=Key+to+the+herpetofauna+of+Fiji.&aulast=Morrison&pid=%3Cauthor%3EMorrison%2C+Clare%3C%2Fauthor%3E%3CAN%3EZOOR14302012772%3C%2FAN%3E%3CDT%3E%3C%2FDT%3E\r\n\r\n<1317. >\r\nVN - Ovid Technologies\r\nDB - Zoological Record\r\nAN - ZOOR14312075663\r\nRO - Copyright 2009 Thomson Reuters\r\nTI - The role of temperature in the population dynamics of smelt Osmerus eperlanus eperlanus m. spirinchus Pallas in Lake Peipsi (Estonia/Russia).\r\nAU - Kangur, Andu [E-mail: akangur@zbi.ee]\r\nAU - Kangur, Peeter\r\nAU - Kangur, Kulli\r\nAU - Mols, Tonu\r\nIN - Centre for Limnology, Institute of Agricultural and Environmental Sciences, Estonian University of Life Sciences, 61101 Rannu, Estonia.\r\nSO - Hydrobiologia. 2007 15 June; 433-441.\r\nIS - 0018-8158\r\nLG - English\r\nPT - Article\r\nPT - Meeting paper\r\nAB - We analysed lake smelt (Osmerus eperlanus eperlanus m. spirinchus Pallas.) population dynamics in relation to water level and temperature in Lake Peipsi, Estonia/Russia, using commercial fishery statistics from 1931 to 2004 (excluding 1940-1945). Over this period, smelt provided the greatest catch of commercial fish although its stock and catches have gradually decreased. At times, catches of smelt were quite variable with a cyclic character. Disappearance of smelt from catches in years 1973-1975 was the result of summer fish kill. Regression analysis revealed a significant negative effect of high temperature on the abundance of smelt stock, while the effect of water level was not significant. Our results suggest that critical factors for the smelt population are the absolute value of water temperature in the hottest period (=20[degree]C) of summer and the duration of this period. These weather parameters have increased in synchrony with smelt decline during the last 7 decades. There appeared to be a significant negative effect of hot summers on the abundance of smelt operating with a lag of one and 2 years, which can be explained by the short life cycle (mainly 1-2 years) of this species.\r\nBR - Ecology\r\nBR - Habitat\r\nBR - Freshwater habitat\r\nBR - Lentic water\r\nBR - Abiotic factors\r\nBR - Physical factors\r\nBR - Land zones\r\nBR - Palaearctic region\r\nBR - Eurasia\r\nBR - Europe\r\nTN - Chordates\r\nTN - Fish\r\nTN - Vertebrates\r\nST - Animalia\r\nST - Chordata\r\nST - Vertebrata\r\nST - Pisces\r\nST - Osteichthyes\r\nST - Actinopterygii\r\nST - Salmoniformes\r\nST - Osmeridae\r\nDE - Osmerus eperlanus eperlanus morph. spirinchus: Population dynamics, Temperature effects, Lake, Shallow lake, Temperature, Effect on population dynamics, Estonia, Lake Peipsi.\r\nSY - Osmerus eperlanus eperlanus morph. spirinchus, http://www.organismnames.com/namedetails.htm?lsid=160256, (Osmeridae)\r\nYR - 2007\r\nDD - 20090629\r\nUP - 200700. Zoological Records Update: 200712.\r\nXL - http://ovidsp.ovid.com/ovidweb.cgi?T=JS&CSC=Y&NEWS=N&PAGE=fulltext&D=zoor12&AN=ZOOR14312075663\r\nXL - http://libraries.colorado.edu:4550/resserv?sid=OVID:zoordb&id=pmid:&id=doi:&issn=0018-8158&isbn=&volume=584&issue=&spage=433&pages=433-441&date=2007&title=Hydrobiologia&atitle=The+role+of+temperature+in+the+population+dynamics+of+smelt+Osmerus+eperlanus+eperlanus+m.+spirinchus+Pallas+in+Lake+Peipsi+%28Estonia%2FRussia%29.&aulast=Kangur&pid=%3Cauthor%3EKangur%2C+Andu%3BKangur%2C+Peeter%3BKangur%2C+Kulli%3BMols%2C+Tonu%3C%2Fauthor%3E%3CAN%3EZOOR14312075663%3C%2FAN%3E%3CDT%3E%3C%2FDT%3E\r\n\r\n\r\n",
"items": [
{
"itemType": "book",
"title": "Spiders (Arachnida, Aranei) from Sakhalin and the Kuril Islands",
"creators": [
{
"firstName": "YuM",
"lastName": "Marusik",
"creatorType": "author"
},
{
"firstName": "KYu",
"lastName": "Eskov",
"creatorType": "author"
},
{
"firstName": "D. V.",
"lastName": "Logunov",
"creatorType": "author"
},
{
"firstName": "A. M.",
"lastName": "Basarukin",
"creatorType": "author"
}
],
"abstractNote": "A check-list of spiders based on personal and literature data from Sakhalin and Kuril Islands is presented. Four hundred and three species have been found there. Distribution records within Sakhalin (districts) and the Kuril Islands are given. Dubious species recorded by Japanese authors (1924-1937) are listed separately with some comments. Twelve new synonyms, new combinations, and new nominations are proposed. Several previous misidentifications in the Far Eastern linyphiids are corrected.",
"callNumber": "ZOOR14305031738",
"language": "English",
"libraryCatalog": "Zoological Record",
"place": "place of publication not given",
"publisher": "International Sakhalin Island Project",
"rights": "Copyright 2010 Thomson Reuters",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
},
{
"itemType": "journalArticle",
"title": "Parasites of fishes: list of and dichotomous key to the identification of major metazoan groups",
"creators": [
{
"firstName": "George W.",
"lastName": "Benz",
"creatorType": "author"
},
{
"firstName": "Stephen A.",
"lastName": "Bullard",
"creatorType": "author"
}
],
"date": "2005",
"callNumber": "ZOOR14303018462",
"language": "English",
"libraryCatalog": "Zoological Record",
"publicationTitle": "Association of Zoos and Aquariums Regional Meetings Proceedings",
"rights": "Copyright 2010 Thomson Reuters",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
},
{
"itemType": "book",
"title": "Key to the herpetofauna of Fiji",
"creators": [
{
"firstName": "Clare",
"lastName": "Morrison",
"creatorType": "author"
}
],
"date": "2006",
"callNumber": "ZOOR14302012772",
"language": "English",
"libraryCatalog": "Zoological Record",
"place": "Institute of Applied Sciences, Suva",
"publisher": "University of the South Pacific",
"rights": "Copyright 2010 Thomson Reuters",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
},
{
"itemType": "journalArticle",
"title": "The role of temperature in the population dynamics of smelt Osmerus eperlanus eperlanus m. spirinchus Pallas in Lake Peipsi (Estonia/Russia)",
"creators": [
{
"firstName": "Andu",
"lastName": "Kangur",
"creatorType": "author"
},
{
"firstName": "Peeter",
"lastName": "Kangur",
"creatorType": "author"
},
{
"firstName": "Kulli",
"lastName": "Kangur",
"creatorType": "author"
},
{
"firstName": "Tonu",
"lastName": "Mols",
"creatorType": "author"
}
],
"date": "2007 June",
"ISSN": "0018-8158",
"abstractNote": "We analysed lake smelt (Osmerus eperlanus eperlanus m. spirinchus Pallas.) population dynamics in relation to water level and temperature in Lake Peipsi, Estonia/Russia, using commercial fishery statistics from 1931 to 2004 (excluding 1940-1945). Over this period, smelt provided the greatest catch of commercial fish although its stock and catches have gradually decreased. At times, catches of smelt were quite variable with a cyclic character. Disappearance of smelt from catches in years 1973-1975 was the result of summer fish kill. Regression analysis revealed a significant negative effect of high temperature on the abundance of smelt stock, while the effect of water level was not significant. Our results suggest that critical factors for the smelt population are the absolute value of water temperature in the hottest period (=20[degree]C) of summer and the duration of this period. These weather parameters have increased in synchrony with smelt decline during the last 7 decades. There appeared to be a significant negative effect of hot summers on the abundance of smelt operating with a lag of one and 2 years, which can be explained by the short life cycle (mainly 1-2 years) of this species.",
"callNumber": "ZOOR14312075663",
"language": "English",
"libraryCatalog": "Zoological Record",
"publicationTitle": "Hydrobiologia",
"rights": "Copyright 2009 Thomson Reuters",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "<11741. >\r\nVN - Ovid Technologies\r\nDB - Zoological Record\r\nAN - ZOOR14310064653\r\nRO - Copyright 2009 Thomson Reuters\r\nTI - [Parasitic copepods of the genera Salmincola and Tracheliastes (Lernaeopodidae) from freshwater fish of the Sakhalin Island.]\r\nAU - Shedko, MB\r\nAU - Vinogradov, SA\r\nAU - Shedko, SV\r\nIN - Biologo-pochvennyi institut DVO RAN, Vladivostok, Russia.\r\nPB - ISiEZH SO RAN, Novosibirsk\r\nBT - Guliaev, V.D. [Ed.]. [Parasitological research in Siberia and the Far East: materials of the first interregional scientific conference in memory of Professor A.A. Mozgovoi.] [Parazitologicheskie issledovaniya v Sibiri i na Dalnem Vostoke. Materialy pervogo mezhergionalnoi nauchnoi konferentsii, posvyashchennoi pamyati professora A.A. Mozgovogo.] ISiEZH SO RAN, Novosibirsk. 2002: 1-234. Chapter pagination: 214-218.\r\nLG - Russian\r\nPT - Book chapter\r\nPT - Meeting paper\r\nBR - Systematics\r\nBR - General morphology\r\nBR - Parasites diseases and disorders\r\nBR - Parasites\r\nBR - Hosts\r\nBR - Land zones\r\nBR - Palaearctic region\r\nBR - Eurasia\r\nTN - Arthropods\r\nTN - Chordates\r\nTN - Crustaceans\r\nTN - Fish\r\nTN - Invertebrates\r\nTN - Vertebrates\r\nST - Animalia\r\nST - Arthropoda\r\nST - Crustacea\r\nST - Copepoda\r\nST - Siphonostomatoida\r\nST - Chordata\r\nST - Vertebrata\r\nDE - Pisces: Crustacean parasites, Salmincola & Tracheliastes, Parasite prevalence & distribution on host, Russia, Sakhalin Island, Crustacean parasite prevalence & distribution on host.\r\n\r\n Salmincola californiensis, Salmincola edwardsii, Salmincola markewitschi, Salmincola stellatus, Tracheliastes sachalinensis: General morphology, Taxonomic significance, Piscean hosts, Parasite prevalence & distribution on host, Russia, Sakhalin Island, parasite prevalence & distribution.\r\nSY - Salmincola californiensis, http://www.organismnames.com/namedetails.htm?lsid=62073, (Siphonostomatoida): Parasite\r\n\r\n Salmincola edwardsii, http://www.organismnames.com/namedetails.htm?lsid=45149, (Siphonostomatoida): Parasite\r\n\r\n Salmincola markewitschi, http://www.organismnames.com/namedetails.htm?lsid=1595526, (Siphonostomatoida): Parasite\r\n\r\n Salmincola stellatus, http://www.organismnames.com/namedetails.htm?lsid=898989, (Siphonostomatoida): Parasite\r\n\r\n Tracheliastes sachalinensis, http://www.organismnames.com/namedetails.htm?lsid=1920998, (Siphonostomatoida): Parasite\r\n\r\n Pisces, http://www.organismnames.com/namedetails.htm?lsid=249, (Vertebrata): Host\r\nYR - 2002\r\nDD - 20090629\r\nUP - 200700. Zoological Records Update: 200710.\r\nXL - http://ovidsp.ovid.com/ovidweb.cgi?T=JS&CSC=Y&NEWS=N&PAGE=fulltext&D=zoor12&AN=ZOOR14310064653\r\nXL - http://libraries.colorado.edu:4550/resserv?sid=OVID:zoordb&id=pmid:&id=doi:&issn=&isbn=&volume=&issue=&spage=214&pages=214-218&date=2002&title=&atitle=%5BParasitic+copepods+of+the+genera+Salmincola+and+Tracheliastes+%28Lernaeopodidae%29+from+freshwater+fish+of+the+Sakhalin+Island.%5D&aulast=Shedko&pid=%3Cauthor%3EShedko%2C+MB%3BVinogradov%2C+SA%3BShedko%2C+SV%3C%2Fauthor%3E%3CAN%3EZOOR14310064653%3C%2FAN%3E%3CDT%3E%3C%2FDT%3E\r\n\r\n\r\n",
"items": [
{
"itemType": "bookSection",
"title": "[Parasitic copepods of the genera Salmincola and Tracheliastes (Lernaeopodidae) from freshwater fish of the Sakhalin Island.]",
"creators": [
{
"lastName": "Shedko",
"creatorType": "author"
},
{
"firstName": "S. A.",
"lastName": "Vinogradov",
"creatorType": "author"
},
{
"firstName": "S. V.",
"lastName": "Shedko",
"creatorType": "author"
},
{
"firstName": "V. D.",
"lastName": "Guliaev",
"creatorType": "editor"
}
],
"date": "2002",
"bookTitle": "[Parasitological research in Siberia and the Far East: materials of the first interregional scientific conference in memory of Professor A",
"callNumber": "ZOOR14310064653",
"language": "Russian",
"libraryCatalog": "Zoological Record",
"pages": "1-234",
"place": "Novosibirsk",
"publisher": "ISiEZH SO RAN",
"rights": "Copyright 2009 Thomson Reuters",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": " <7. >\n VN - Ovid Technologies\n DB - PsycINFO\n AN - Peer Reviewed Journal: 2015-33942-012.\n TI - A comparison of manifestations and impact of reassurance seeking among Japanese individuals with OCD and depression. [References].\n DP - Sep 2015\n YR - 2015\n PH - First Posting: Jun 2014\n LG - English\n AU - Kobori, Osamu\n AU - Sawamiya, Yoko\n AU - Iyo, Masaomi\n AU - Shimizu, Eiji\n MA - Kobori, Osamu: chelsea@chiba-u.jp\n CQ - Kobori, Osamu: Centre for Forensic Mental Health, Chiba University, 1-8-1, Inohana, Chuo-ku, Chiba, Japan, 2608670, chelsea@chiba-u.jp\n IN - Kobori, Osamu: Chiba University, Chiba, Japan\n \n Sawamiya, Yoko: University of Tsukuba, Tsukuba, Japan\n \n Iyo, Masaomi: Chiba University, Chiba, Japan\n \n Shimizu, Eiji: Chiba University, Chiba, Japan\n SO - Behavioural and Cognitive Psychotherapy. Vol.43(5), Sep 2015, pp. 623-634. \n IS - 1352-4658\n IT - 1469-1833\n OL - Behavioural Psychotherapy\n PU - Cambridge University Press; United Kingdom\n FO - Electronic\n PT - Journal\n PT - Peer Reviewed Journal\n DT - Journal Article\n AB - Background: One of the most common interpersonal reactions to threat and anxiety is to seek reassurance from a trusted person. The Reassurance Seeking Questionnaire (ReSQ) measures several key aspects of reassurance seeking behaviour, including frequency, trust of sources, intensity, carefulness, and the emotional consequences of reassurance seeking. Aims: The current study compares patterns and consequences of reassurance seeking in obsessive-compulsive disorder (OCD) and depression. Method: ReSQ scores were compared for three groups: 32 individuals with OCD, 17 individuals with depression, and 24 healthy comparison participants. Results: We found that individuals with OCD tended to seek reassurance more intensely and employ self-reassurance more frequently than individuals with depression or healthy participants, and that if reassurance was not provided, they tended to feel a greater urge to seek additional reassurance. Conclusions: This study is the first to quantitatively elucidate differences in reassurance seeking between OCD and depression. (PsycINFO Database Record (c) 2015 APA, all rights reserved) (journal abstract).\n DO - http://dx.doi.org/10.1017/S1352465814000277\n PM - 24892981\n ID - Obsessive-compulsive disorder, cognitive model, depression, reassurance seeking\n MH - *Japanese Cultural Groups\n MH - *Major Depression\n MH - *Obsessive Compulsive Disorder\n MH - Anxiety\n MH - Help Seeking Behavior\n MH - Threat\n CC - Psychological Disorders [3210].\n PO - Human. Male. Female. Outpatient. Adulthood (18 yrs & older)\n LO - Japan.\n MD - Empirical Study; Quantitative Study\n TM - Carefulness Scale\n Reassurance Seeking Questionnaire-Japanese Version\n Beck Depression Inventory-II\n Structured Clinical Interview for DSM-IV\n Obsessive-Compulsive Inventory\n TD - Beck Depression Inventory-II [doi: http://dx.doi.org/10.1037/t00742-000] (9999-00742-000)\n Obsessive-Compulsive Inventory [doi: http://dx.doi.org/10.1037/t10199-000] (9999-10199-000)\n GS - <b>Sponsor: </b>Japan Society for the Promotion of Science. Japan\n <b>Other Details: </b>Grants-in-Aid for Young Scientists (B)\n <b>Recepient: </b>No recipient indicated\n \n CP - HOLDER: British Association for Behavioural and Cognitive Psychotherapies\n YEAR: 2014\n RF - Beck, A. T., Steer, R. A., & Brown, G. K. (1996). Manual for the Beck Depression Inventory-2. San Antonio, TX: Psychological Corporation.\n \n Brislin, R. W. (1970). Back-translation for cross-cultural research. Journal of Cross-Cultural Psychology, 1, 185-216. http://dx.doi.org/10.1177/135910457000100301\n \n Brislin, R. W. (1986). The wording and translation of research instruments. In W. J. Lonner and J. W. Berry (Eds.), Field Methods in Cross-Cultural Research (pp. 137-164). Thousand Oaks, CA: Sage.1987-97046-005\n \n Coyne, J. C. (1976). Toward an interactional description of depression. Psychiatry, 39, 28-40.1979-01146-0011257353\n \n de Silva, P., Menzies, R. G., & Shafran, R. (2003). Spontaneous decay of compulsive urges: the case of covert compulsions. Behaviour Research and Therapy, 41, 129-137. http://dx.doi.org/10.1016/S0005-7967(01)00132-2\n \n First, M., Spitzer, R., Gibbon, M., & Williams, J. (1995). Structured Clinical Interview for DSM-IV Axis I Disorders-Patient edition. New York: Biometrics Research Department, NY State Psychiatric Institute.\n \n Foa, E. B., Kozak, M. J., Salkovskis, P. M., Coles, M. E., & Amir, N. (1998). The validation of a new obsessive-compulsive disorder scale: the Obsessive-Compulsive Inventory. Psychological Assessment, 3, 206-214. http://dx.doi.org/10.1037/1040-3590.10.3.206\n \n Ishikawa, R., Kobori, O., & Shimizu, E. (2013). Development and validation of the Japanese version of the Obsessive-Compulsive Inventory. Manuscript submitted for publication.\n \n Joiner, T. E., Metalsky, G. I., Katz, J., & Beach, S. R. H. (1999). Depression and excessive reassurance seeking. Psychological Inquiry, 10, 269-278.2000-13319-001\n \n Kobori, O., & Salkovskis, P. M. (2013). Patterns of reassurance seeking and reassurance-related behaviours in OCD and anxiety disorders. Behavioural and Cognitive Psychotherapy, 41, 1-23. http://dx.doi.org/10.1017/S1352465812000665\n \n Kobori, O., & Sawamiya, Y. (2012). Development of the Japanese version of Reassurance Seeking Questionnaire. Unpublished manuscript.\n \n Kobori, O., Salkovskis, P. M., Read, J., Lounes, N., & Wong, V. (2012). A qualitative study of the investigation of reassurance seeking in obsessive-compulsive disorder. Journal of Obsessive-Compulsive and Related Disorders, 1, 25-32\n \n Kojima, M., Furukawa, T. A., Takahashi, H., Kawai, M., Nagaya, T., & Tokudome, S. (2002). Cross-cultural validation of the Beck Depression Inventory-II in Japan. Psychiatry Research, 110, 291-299. http://dx.doi.org/10.1016/S0165-1781(02)00106-3\n \n Parrish, C. L., & Radomsky, A. S. (2006). An experimental investigation of responsibility and reassurance: relationships with compulsive checking. International Journal of Behavioural and Consultation Therapy, 2, 174-191. http://dx.doi.org/10.1037/h0100775\n \n Parrish, C. L., & Radomsky, A. S. (2010). Why do people seek reassurance and check repeatedly? An investigation of factors involved in compulsive behaviour in OCD and depression. Journal of Anxiety Disorders, 24, 211-222. http://dx.doi.org/10.1016/j.janxdis.2009.10.010\n \n Rachman, S. J. (2002). A cognitive theory of compulsive checking. Behaviour Research and Therapy, 40, 625-639. http://dx.doi.org/10.1016/S0005-7967(01)00028-6\n \n Rachman, S. J., & Hodgson, R. J. (1980). Obsessions and Compulsions. Englewood Cliffs, NJ: Prentice Hall.\n \n Rachman, S. J., de Silva, P., & Roper, G. (1976). Spontaneous decay of compulsive urges. Behaviour Research and Therapy, 14, 445-453. http://dx.doi.org/10.1016/0005-7967(76)90091-7\n \n Salkovskis, P. M. (1999). Understanding and treating obsessive-compulsive disorder. Behaviour Research and Therapy, 37, S29http://dx.doi.org/10.1016/S0005-7967(99)00049-2\n \n Salkovskis, P. M., & Kobori, O. (2013). Reassuringly calm? Self-reported patterns of responses to reassurance seeking in Obsessive Compulsive Disorder. Manuscript submitted for publication.\n \n Starr, L. R., & Davila, J. (2008). Excessive reassurance seeking, depression, and inter-personal rejection: a meta-analytic review. Journal of Abnormal Psychology, 117, 762-775. http://dx.doi.org/10.1037/a0013866\n \n van den Hout, M., & Kindt, M. (2004). Obsessive-compulsive disorder and the paradoxical effects of perseverative behaviour on experienced uncertainty. Journal of Behaviour Therapy and Experimental Psychiatry, 35, 165-181. http://dx.doi.org/10.1016/j.jbtep.2004.04.007\n UP - 20150810 (PsycINFO)\n JN - Behavioural and Cognitive Psychotherapy\n VO - 43\n IP - 5\n MO - Sep\n PG - 623-634\n XL - http://ovidsp.ovid.com/ovidweb.cgi?T=JS&CSC=Y&NEWS=N&PAGE=fulltext&D=psyc11&AN=2015-33942-012\n \n <8. >\n VN - Ovid Technologies\n DB - PsycINFO\n AN - Peer Reviewed Journal: 2015-33942-007.\n TI - A meta-analysis of transdiagnostic cognitive behavioural therapy in the treatment of child and young person anxiety disorders. [References].\n DP - Sep 2015\n YR - 2015\n PH - First Posting: Dec 2013\n LG - English\n AU - Ewing, Donna L\n AU - Monsen, Jeremy J\n AU - Thompson, Ellen J\n AU - Cartwright-Hatton, Sam\n AU - Field, Andy\n MA - Ewing, Donna L.: d.l.ewing@sussex.ac.uk\n CQ - Ewing, Donna L.: School of Psychology, University of Sussex, Falmer, Brighton, United Kingdom, BN1 9QH, d.l.ewing@sussex.ac.uk\n IN - Ewing, Donna L.: University of Sussex, Brighton, United Kingdom\n \n Monsen, Jeremy J.: East London Consortium of Educational Psychologists, London, United Kingdom\n \n Thompson, Ellen J.: University of Sussex, Brighton, United Kingdom\n \n Cartwright-Hatton, Sam: University of Sussex, Brighton, United Kingdom\n \n Field, Andy: University of Sussex, Brighton, United Kingdom\n SO - Behavioural and Cognitive Psychotherapy. Vol.43(5), Sep 2015, pp. 562-577. \n IS - 1352-4658\n IT - 1469-1833\n OL - Behavioural Psychotherapy\n PU - Cambridge University Press; United Kingdom\n FO - Electronic\n PT - Journal\n PT - Peer Reviewed Journal\n DT - Journal Article\n AB - Background: Previous meta-analyses of cognitive-behavioural therapy (CBT) for children and young people with anxiety disorders have not considered the efficacy of transdiagnostic CBT for the remission of childhood anxiety. Aim: To provide a meta-analysis on the efficacy of transdiagnostic CBT for children and young people with anxiety disorders. Methods: The analysis included randomized controlled trials using transdiagnostic CBT for children and young people formally diagnosed with an anxiety disorder. An electronic search was conducted using the following databases: ASSIA, Cochrane Controlled Trials Register, Current Controlled Trials, Medline, PsycArticles, PsychInfo, and Web of Knowledge. The search terms included \"anxiety disorder(s)\", \"anxi*\", \"cognitive behavio*, \"CBT\", \"child*\", \"children\", \"paediatric\", \"adolescent(s)\", \"adolescence\", \"youth\" and \"young pe*\". The studies identified from this search were screened against the inclusion and exclusion criteria, and 20 studies were identified as appropriate for inclusion in the current meta-analysis. Pre- and posttreatment (or control period) data were used for analysis. Results: Findings indicated significantly greater odds of anxiety remission from pre- to posttreatment for those engaged in the transdiagnostic CBT intervention compared with those in the control group, with children in the treatment condition 9.15 times more likely to recover from their anxiety diagnosis than children in the control group. Risk of bias was not correlated with study effect sizes. Conclusions: Transdiagnostic CBT seems effective in reducing symptoms of anxiety in children and young people. Further research is required to investigate the efficacy of CBT for children under the age of 6. (PsycINFO Database Record (c) 2015 APA, all rights reserved) (journal abstract).\n DO - http://dx.doi.org/10.1017/S1352465813001094\n PM - 24331028\n ID - Meta-analysis, anxiety, children, cognitive-behavioural therapy (CBT)\n MH - *Anxiety Disorders\n MH - *Cognitive Behavior Therapy\n MH - Anxiety\n CC - Cognitive Therapy [3311].\n PO - Human. Childhood (birth-12 yrs)\n MD - Meta Analysis\n GS - <b>Sponsor: </b>National Institute for Health Research\n <b>Other Details: </b>Career Development Award\n <b>Recepient: </b>Cartwright-Hatton, Sam\n \n <b>Sponsor: </b>Medical Research Council\n <b>Grant: </b>G108/604\n <b>Other Details: </b>Clinician Scientist Fellowship\n <b>Recepient: </b>Cartwright-Hatton, Sam\n \n CP - HOLDER: British Association for Behavioural and Cognitive Psychotherapies\n YEAR: 2013\n RF - American Psychological Association. (2013). Highlights of Changes from DSM-IV-TR to DSM-5. Washington, DC: Author. Retrieved from http://www.dsm5.org/Pages/Default.aspx\n \n Bennett, K., Manassis, K., Walter, S. D., Cheung, A., Wilansky-Traynor, P., Diaz-Granados, N., et al. (2013). Cognitive behavioral therapy age effects in child and adolescent anxiety: an individual patient data metaanalysis. http://dx.doi.org/10.1002/da.22099\n \n Bland, J. M., & Altman, D. G. (2000). Statistics notes: the odds ratio. British Medical Journal, 320, 1468.\n \n Cartwright-Hatton, S., McNicol, K., & Doubleday, E. (2006). Anxiety in a neglected population: prevalence of anxiety disorders in pre-adolescent children. Clinical Psychology Review, 26, 817-833. http://dx.doi.org/10.1016/j.cpr.2005.12.002\n \n Cartwright-Hatton, S., Roberts, C., Chitsabesan, P., Fothergill, C., & Harrington, R. (2004). Systematic review of the efficacy of cognitive behaviour therapies for childhood and adolescent anxiety disorders. The British Journal of Clinical Psychology, 43, 421-436. http://dx.doi.org/10.1348/0144665042388928\n \n Chalfant, A. M., Rapee, R., & Carroll, L. (2007). Treating anxiety disorders in children with high functioning autism spectrum disorders: a controlled trial. Journal of Autism and Developmental Disorders, 37, 1842-1857. http://dx.doi.org/10.1007/s10803-006-0318-4\n \n Cobham, V. E. (2012). Do anxiety-disordered children need to come into the clinic for efficacious treatment?. Journal of Consulting and Clinical Psychology, 80, 465-476. http://dx.doi.org/10.1037/a0028205\n \n Cohen, J. A., & Mannarino, A. P. (1996). A treatment outcome study for sexually abused preschool children: initial findings. Journal of the American Academy of Child and Adolescent Psychiatry, 35, 42-50. http://dx.doi.org/10.1097/00004583-199601000-00011\n \n Cohen, J. A., & Mannarino, A. P. (1998). Interventions for sexually abused children: initial treatment outcome findings. Child Maltreatment, 3, 17-26. http://dx.doi.org/10.1177/1077559598003001002\n \n Compton, S. N., March, J. S., Brent, D., Albano, A. M., Weersing, V. R., & Curry, J. (2004). Cognitive-behavioral psychotherapy for anxiety and depressive disorders in children and adolescents: an evidence-based medicine review. Journal of the American Academy of Child and Adolescent Psychiatry, 43, 930-959. http://dx.doi.org/10.1097/01.chi.0000127589.57468.bf\n \n Davis, T. E., May, A., & Whiting, S. E. (2011). Evidence-based treatment of anxiety and phobia in children and adolescents: current status and effects on the emotional response. Clinical Psychology Review, 31, 592-602. http://dx.doi.org/10.1016/j.cpr.2011.01.001\n \n Field, A. P., & Gillett, R. (2010). How to do a meta-analysis. The British Journal of Mathematical and Statistical Psychology, 63, 665-694. http://dx.doi.org/10.1348/000711010X502733\n \n Ginsburg, G. S., Kendall, P. C., Sakolsky, D., Compton, S. N., Piacentini, J., Albano, A. M., et al. (2011). Remission after acute treatment in children and adolescents with anxiety disorders: findings from the CAMS. Journal of Consulting and Clinical Psychology, 79, 806-813. http://dx.doi.org/10.1037/a0025933\n \n Hoff Esbjorn, B., Hoeyer, M., Dyrborg, J., Leth, I., & Kendall, P. C. (2010). Prevalence and co-morbidity among anxiety disorders in a national cohort of psychiatrically referred children and adolescents. Journal of Anxiety Disorders, 24, 866-872. http://dx.doi.org/10.1016/j.janxdis.2010.06.009\n \n Hofmann, S. G. (2007). Cognitive factors that maintain social anxiety disorder: comprehensive model and its treatment implications. Cognitive Behavioral Therapy, 36, 193-209. http://dx.doi.org/10.1080/16506070701421313\n \n In-Albon, T., & Schneider, S. (2007). Psychotherapy of childhood anxiety disorders: a meta-analysis. Psychotherapy and Psychosomatics, 76, 15-24. http://dx.doi.org/10.1159/000096361\n \n Ishikawa, S., Okajima, I., Matsuoka, H., & Sakano, Y. (2007). Cognitive behavioural therapy for anxiety disorders in children and adolescents: a meta-analysis. Child and Adolescent Mental Health, 12, 164-172. http://dx.doi.org/10.1111/j.1475-3588.2006.00433.x\n \n James, A. C., James, G., Cowdrey, F. A., Soler, A., & Choke, A. (2013). Cognitive behavioural therapy for anxiety disorders in children and adolescents (Review). Cochrane Database of Systematic Reviews, 6. doi:10.1002/14651858.CD004690.pub3\n \n Kendall, P. C., Compton, S. N., Walkup, J. T., Birmaher, B., Albano, A. M., Sherrill, J., et al. (2010). Clinical characteristics of anxiety disordered youth. Journal of Anxiety Disorders, 24, 360-365. http://dx.doi.org/10.1016/j.janxdis.2010.01.009\n \n Klein, R. G. (2009). Anxiety disorders. Journal of Child Psychology and Psychiatry, 50, 153-162. http://dx.doi.org/10.1111/j.1469-7610.2008.02061.x\n \n Leyfer, O., Gallo, K. P., Cooper-Vince, C., & Pincus, D. B. (2013). Patterns and predictors of comorbidity of DSM-IV anxiety disorders in a clinical sample of children and adolescents. Journal of Anxiety Disorders, 27, 306-311. http://dx.doi.org/10.1016/j.janxdis.2013.01.010\n \n Masia Warner, C., Colognori, D., Kim, R. E., Reigada, L. C., Klein, R. G., Browner-Elhanan, K. J., et al. (2011). Cognitive-behavioral treatment of persistent functional somatic complaints and pediatric anxiety: an initial controlled trial. Depression and Anxiety, 28, 551-559. http://dx.doi.org/10.1002/da.20821\n \n McManus, F., Shafran, R., & Cooper, Z. (2010). What does a transdiagnostic approach have to offer the treatment of anxiety disorders?. The British Journal of Clinical Psychology, 49, 491-505. http://dx.doi.org/10.1348/014466509X476567\n \n McNally Keehn, R. H., Lincoln, A. J., Brown, M. Z., & Chavira, D. A. (2013). The Coping Cat program for children with anxiety and autism spectrum disorder: a pilot randomized controlled trial. Journal of Autism and Developmental Disorders, 43, 57-67. http://dx.doi.org/10.1007/s10803-012-1541-9\n \n Moher, D., Liberati, A., Tetzlaff, J., & Altman, D. G. (2009). Preferred reporting items for systematic reviews and meta-analyses: the PRISMA statement. PLoS Medicine, 6, e1000097.\n \n Muris, P., Mayer, B., den Adel, M., Roos, T., & van Wamelen, J. (2009). Predictors of change following cognitive-behavioral treatment of children with anxiety problems: a preliminary investigation on negative automatic thoughts and anxiety control. Child Psychiatry and Human Development, 40, 139-151. http://dx.doi.org/10.1007/s10578-008-0116-7\n \n Norton, P. J., & Barrera, T. L. (2012). Transdiagnostic versus diagnosis-specific CBT for anxiety disorders: a preliminary randomized controlled noninferiority trial. Depression and Anxiety, 29, 874-882. doi:10.1002/da.219742012-26844-00622767410\n \n Prins, P. (2001). Affective and cognitive processes and the development and maintenance of anxiety and its disorders. In Anxiety Disorders in Children and Adolescents: research, assessment and intervention (pp. 23-44). Cambridge: Cambridge University Press. Retrieved from http://dare.uva.nl/record/1137862001-00080-002\n \n Rapee, R. M., Abbott, M. J., & Lyneham, H. J. (2006). Bibliotherapy for children with anxiety disorders using written materials for parents: a randomized controlled trial. Journal of Consulting and Clinical Psychology, 74, 436-444. http://dx.doi.org/10.1037/0022-006X.74.3.436\n \n Reynolds, S., Wilson, C., Austin, J., & Hooper, L. (2012). Effects of psychotherapy for anxiety in children and adolescents: a meta-analytic review. Clinical Psychology Review, 32, 251-262. http://dx.doi.org/10.1016/j.cpr.2012.01.005\n \n Silverman, W. K., Pina, A. A., & Viswesvaran, C. (2008). Evidence-based psychosocial treatments for phobic and anxiety disorders in children and adolescents. Journal of Clinical Child and Adolescent Psychology, 37, 105-130. http://dx.doi.org/10.1080/15374410701817907\n \n Spence, S. H., Donovan, C., & Brechman-Toussaint, M. (2000). The treatment of childhood social phobia: the effectiveness of a social skills training-based, cognitive-behavioural intervention, with and without parental involvement. Journal of Child Psychology and Psychiatry, 41, 713-726. http://www.ncbi.nlm.nih.gov/pubmed/11039684 http://dx.doi.org/10.1111/1469-7610.00659\n \n The Cochrane Collaboration. (2002). Cochrane Collaboration open learning material for reviewers. Retrieved from http://www.cochrane-net.org/openlearning/PDF/Openlearning-full.pdf\n \n Williams, T. I., Salkovskis, P. M., Forrester, L., Turner, S., White, H., & Allsopp, M. A. (2010). A randomised controlled trial of cognitive behavioural treatment for obsessive compulsive disorder in children and adolescents. European Child and Adolescent Psychiatry, 19, 449-456. http://dx.doi.org/10.1007/s00787-009-0077-9\n \n Wood, J. J., Drahota, A., Sze, K., Har, K., Chiu, A., & Langer, D. A. (2009). Cognitive behavioral therapy for anxiety in children with autism spectrum disorders: a randomized, controlled trial. Journal of Child Psychology and Psychiatry, 50, 224-234. http://dx.doi.org/10.1111/j.1469-7610.2008.01948.x\n UP - 20150810 (PsycINFO)\n JN - Behavioural and Cognitive Psychotherapy\n VO - 43\n IP - 5\n MO - Sep\n PG - 562-577\n XL - http://ovidsp.ovid.com/ovidweb.cgi?T=JS&CSC=Y&NEWS=N&PAGE=fulltext&D=psyc11&AN=2015-33942-007\n ",
"items": [
{
"itemType": "journalArticle",
"title": "A comparison of manifestations and impact of reassurance seeking among Japanese individuals with OCD and depression",
"creators": [
{
"firstName": "Osamu",
"lastName": "Kobori",
"creatorType": "author"
},
{
"firstName": "Yoko",
"lastName": "Sawamiya",
"creatorType": "author"
},
{
"firstName": "Masaomi",
"lastName": "Iyo",
"creatorType": "author"
},
{
"firstName": "Eiji",
"lastName": "Shimizu",
"creatorType": "author"
}
],
"date": "2015 Sep",
"DOI": "10.1017/S1352465814000277",
"ISSN": "1352-4658",
"abstractNote": "Background: One of the most common interpersonal reactions to threat and anxiety is to seek reassurance from a trusted person. The Reassurance Seeking Questionnaire (ReSQ) measures several key aspects of reassurance seeking behaviour, including frequency, trust of sources, intensity, carefulness, and the emotional consequences of reassurance seeking. Aims: The current study compares patterns and consequences of reassurance seeking in obsessive-compulsive disorder (OCD) and depression. Method: ReSQ scores were compared for three groups: 32 individuals with OCD, 17 individuals with depression, and 24 healthy comparison participants. Results: We found that individuals with OCD tended to seek reassurance more intensely and employ self-reassurance more frequently than individuals with depression or healthy participants, and that if reassurance was not provided, they tended to feel a greater urge to seek additional reassurance. Conclusions: This study is the first to quantitatively elucidate differences in reassurance seeking between OCD and depression. (PsycINFO Database Record (c) 2015 APA, all rights reserved) (journal abstract).",
"callNumber": "Peer Reviewed Journal: 2015-33942-012",
"issue": "5",
"language": "English",
"libraryCatalog": "PsycINFO",
"pages": "623-634",
"publicationTitle": "Behavioural and Cognitive Psychotherapy",
"volume": "43",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
},
{
"itemType": "journalArticle",
"title": "A meta-analysis of transdiagnostic cognitive behavioural therapy in the treatment of child and young person anxiety disorders",
"creators": [
{
"firstName": "Donna L.",
"lastName": "Ewing",
"creatorType": "author"
},
{
"firstName": "Jeremy J.",
"lastName": "Monsen",
"creatorType": "author"
},
{
"firstName": "Ellen J.",
"lastName": "Thompson",
"creatorType": "author"
},
{
"firstName": "Sam",
"lastName": "Cartwright-Hatton",
"creatorType": "author"
},
{
"firstName": "Andy",
"lastName": "Field",
"creatorType": "author"
}
],
"date": "2015 Sep",
"DOI": "10.1017/S1352465813001094",
"ISSN": "1352-4658",
"abstractNote": "Background: Previous meta-analyses of cognitive-behavioural therapy (CBT) for children and young people with anxiety disorders have not considered the efficacy of transdiagnostic CBT for the remission of childhood anxiety. Aim: To provide a meta-analysis on the efficacy of transdiagnostic CBT for children and young people with anxiety disorders. Methods: The analysis included randomized controlled trials using transdiagnostic CBT for children and young people formally diagnosed with an anxiety disorder. An electronic search was conducted using the following databases: ASSIA, Cochrane Controlled Trials Register, Current Controlled Trials, Medline, PsycArticles, PsychInfo, and Web of Knowledge. The search terms included \"anxiety disorder(s)\", \"anxi*\", \"cognitive behavio*, \"CBT\", \"child*\", \"children\", \"paediatric\", \"adolescent(s)\", \"adolescence\", \"youth\" and \"young pe*\". The studies identified from this search were screened against the inclusion and exclusion criteria, and 20 studies were identified as appropriate for inclusion in the current meta-analysis. Pre- and posttreatment (or control period) data were used for analysis. Results: Findings indicated significantly greater odds of anxiety remission from pre- to posttreatment for those engaged in the transdiagnostic CBT intervention compared with those in the control group, with children in the treatment condition 9.15 times more likely to recover from their anxiety diagnosis than children in the control group. Risk of bias was not correlated with study effect sizes. Conclusions: Transdiagnostic CBT seems effective in reducing symptoms of anxiety in children and young people. Further research is required to investigate the efficacy of CBT for children under the age of 6. (PsycINFO Database Record (c) 2015 APA, all rights reserved) (journal abstract).",
"callNumber": "Peer Reviewed Journal: 2015-33942-007",
"issue": "5",
"language": "English",
"libraryCatalog": "PsycINFO",
"pages": "562-577",
"publicationTitle": "Behavioural and Cognitive Psychotherapy",
"volume": "43",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "<53. >\nVN - Ovid Technologies\nDB - PsycINFO\nAN - Dissertation Abstract: 2014-99150-257.\nTI - Academic procrastination as mediated by executive functioning, perfectionism, and frustration intolerance in college students.\nDP - 2014\nYR - 2014\nLG - English\nAU - Sudler, Eric L\nIN - Sudler, Eric L.: St. John's U. (New York), US\nSO - Dissertation Abstracts International Section A: Humanities and Social Sciences. Vol.75(2-A(E)),2014, pp. No Pagination Specified.\nIS - 0419-4209\nIB - 978-1-303-52924-5\nOL - Dissertation Abstracts International\nPU - ProQuest Information & Learning; US\nON - AAI3575249\nOU - http://gateway.proquest.com/openurl?url_ver=Z39.88-2004&rft_val_fmt=info:ofi/fmt:kev:mtx:dissertation&res_dat=xri:pqm&rft_dat=xri:pqdiss:3575249\nFO - Electronic\nPT - Dissertation Abstract\nDT - Dissertation\nAB - With academic procrastination prevalent at every level of education (O'Brien, 2002; Onwuegbuzie, 2008), school psychologists and other educators would benefit from a more detailed look at procrastination and what factors and characteristics mediate it. This exploratory study investigated the relative contributions of Executive Functioning, Perfectionism, and Frustration Intolerance to Academic Procrastination and investigated whether academic procrastinators can be classified into specific clusters. To achieve this, 150 undergraduate and graduate students completed an online survey assessing Executive Functioning, Perfectionism, and Frustration Intolerance. Although no distinct clusters of procrastinators formed, results indicated that Perfectionism and irrational beliefs associated with frustration intolerance were the strongest mediators for academic procrastination. These results could aid mental health professionals, therapists, and school psychologists in recognizing these traits and patterns early to develop more specific treatments, interventions, and possible prevention of academic procrastination. Keywords: academic procrastination, irrational beliefs, executive functioning, perfectionism. (PsycINFO Database Record (c) 2014 APA, all rights reserved).\nID - academic procrastination, frustration intolerance, irrational beliefs, executive functioning, school psychologists, college students, detailed look, mental health professionals, academic procrastinators, relative contributions, possible prevention, graduate students, distinct clusters, exploratory study, online survey\nMH - *Cognitive Ability\nMH - *College Students\nMH - *School Based Intervention\nMH - Frustration\nMH - Perfectionism\nMH - Procrastination\nCC - Health Psychology & Medicine [3360].\nPO - Human. Adulthood (18 yrs & older)\nMD - Empirical Study; Quantitative Study\nUP - 20140901 (PsycINFO)\nJN - Dissertation Abstracts International Section A: Humanities and Social Sciences\nVO - 75\nIP - 2-A(E)\nPG - No Pagination Specified\nXL - http://ovidsp.ovid.com/ovidweb.cgi?T=JS&CSC=Y&NEWS=N&PAGE=fulltext&D=psyc11&AN=2014-99150-257\nXL - http://sfx.scholarsportal.info/ottawa?sid=OVID:psycdb&id=pmid:&id=doi:&issn=0419-4209&isbn=9781303529245&volume=75&issue=2-A%28E%29&spage=No&pages=No+Pagination+Specified&date=2014&title=Dissertation+Abstracts+International+Section+A%3A+Humanities+and+Social+Sciences&atitle=Academic+procrastination+as+mediated+by+executive+functioning%2C+perfectionism%2C+and+frustration+intolerance+in+college+students.&aulast=Sudler&pid=%3Cauthor%3ESudler%2C+Eric+L%3C%2Fauthor%3E%3CAN%3E2014-99150-257%3C%2FAN%3E%3CDT%3EDissertation%3C%2FDT%3E\n\n\n<1. >\nVN - Ovid Technologies\nDB - PsycINFO\nAN - Book: 2011-27892-001.\nTI - Understanding and tackling procrastination. [References].\n\nDP - 2012\nYR - 2012\nLG - English\nAU - Neenan, Michael\nIN - Neenan, Michael: Centre for Coaching, Blackheath, London, England\nSO - Neenan, Michael [Ed]; Palmer, Stephen [Ed]. (2012). Cognitive behavioural coaching in practice: An evidence based approach. (pp. 11-31). xvii, 254 pp. New York, NY, US: Routledge/Taylor & Francis Group; US.\nIB - 978-0-415-47263-0 (Paperback), 978-0-415-47262-3 (Hardcover), 978-0-203-14440-4 (PDF)\nPU - Routledge/Taylor & Francis Group; US\nFO - Print\nPT - Book\nPT - Edited Book\nDT - Chapter\nAB - (from the chapter) Coaching aims to bring out the best in people in order to help them achieve their desired goals. When the rational emotive behavior therapy (REBT) approach is used outside of a therapy context it is more advantageous to call it rational emotive behavioural coaching (REBC), although some practitioners prefer to use the shorter name of rational coaching. Rational emotive behavior therapy terms such as 'irrational' and 'disturbance' can be reframed as performance-interfering thoughts and/or self-limiting beliefs or any permutation on problematic thinking that coachees are willing to endorse. A theoretical model for understanding and tackling psychological blocks in general and procrastination in particular is rational emotive behavioural therapy, founded in 1955 by the late Albert Ellis, an American clinical psychologist. (REBT is one of the approaches within the field of CBT.) A capsule account of the REBT approach follows. The approach proposes that rigid and extreme thinking (irrational beliefs) lies at the core of psychological disturbance. For example, faced with a coachee who is skeptical about the value of coaching, the coach makes himself very anxious and over-prepares for each session by insisting: 'I must impress her with my skills [rigid belief-why can't he let the coachee make up her own mind?], because if I don't this will prove I'm an incompetent coach' (an extreme view of his role to adopt if the coachee is unimpressed). Rigid thinking takes the form, for example, of must, should, have to and got to. Derived from these rigid beliefs are three major and extreme conclusions: awfulising (nothing could be worse and nothing good can come from negative events), low frustration tolerance (frustration and discomfort are too hard to bear) and depreciation of self and/or others (a person can be given a single global rating [e.g. useless] that defines their essence or worth). (PsycINFO Database Record (c) 2012 APA, all rights reserved).\nID - rational emotive behavioural coaching, procrastination, irrational beliefs, rigid thinking\nMH - *Procrastination\nMH - *Rational Emotive Behavior Therapy\nMH - *Coaching\nMH - Irrational Beliefs\nMH - Rigidity (Personality)\nMH - Thinking\nCC - Personality Traits & Processes [3120]; Cognitive Therapy [3311].\nPO - Human\nIA - Psychology: Professional & Research.\nUP - 20120430 (PsycINFO)\nPG - 11-31\nXL - http://ovidsp.ovid.com/ovidweb.cgi?T=JS&CSC=Y&NEWS=N&PAGE=fulltext&D=psyc9&AN=2011-27892-001\nXL - http://sfx.scholarsportal.info/ottawa?sid=OVID:psycdb&id=pmid:&id=doi:&issn=&isbn=9780415472630&volume=&issue=&spage=11&pages=11-31&date=2012&title=Cognitive+behavioural+coaching+in+practice%3A+An+evidence+based+approach.&atitle=Understanding+and+tackling+procrastination.&aulast=Neenan&pid=%3Cauthor%3ENeenan%2C+Michael%3C%2Fauthor%3E%3CAN%3E2011-27892-001%3C%2FAN%3E%3CDT%3EChapter%3C%2FDT%3E",
"items": [
{
"itemType": "thesis",
"title": "Academic procrastination as mediated by executive functioning, perfectionism, and frustration intolerance in college students",
"creators": [
{
"firstName": "Eric L.",
"lastName": "Sudler",
"creatorType": "author"
}
],
"date": "2014",
"abstractNote": "With academic procrastination prevalent at every level of education (O'Brien, 2002; Onwuegbuzie, 2008), school psychologists and other educators would benefit from a more detailed look at procrastination and what factors and characteristics mediate it. This exploratory study investigated the relative contributions of Executive Functioning, Perfectionism, and Frustration Intolerance to Academic Procrastination and investigated whether academic procrastinators can be classified into specific clusters. To achieve this, 150 undergraduate and graduate students completed an online survey assessing Executive Functioning, Perfectionism, and Frustration Intolerance. Although no distinct clusters of procrastinators formed, results indicated that Perfectionism and irrational beliefs associated with frustration intolerance were the strongest mediators for academic procrastination. These results could aid mental health professionals, therapists, and school psychologists in recognizing these traits and patterns early to develop more specific treatments, interventions, and possible prevention of academic procrastination. Keywords: academic procrastination, irrational beliefs, executive functioning, perfectionism. (PsycINFO Database Record (c) 2014 APA, all rights reserved).",
"callNumber": "Dissertation Abstract: 2014-99150-257",
"language": "English",
"libraryCatalog": "PsycINFO",
"university": "St. John's U. (New York), US",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
},
{
"itemType": "bookSection",
"title": "Understanding and tackling procrastination",
"creators": [
{
"firstName": "Michael",
"lastName": "Neenan",
"creatorType": "author"
},
{
"firstName": "Michael",
"lastName": "Neenan",
"creatorType": "editor"
},
{
"firstName": "Stephen",
"lastName": "; Palmer",
"creatorType": "editor"
}
],
"date": "2012",
"ISBN": "9780415472630",
"abstractNote": "(from the chapter) Coaching aims to bring out the best in people in order to help them achieve their desired goals. When the rational emotive behavior therapy (REBT) approach is used outside of a therapy context it is more advantageous to call it rational emotive behavioural coaching (REBC), although some practitioners prefer to use the shorter name of rational coaching. Rational emotive behavior therapy terms such as 'irrational' and 'disturbance' can be reframed as performance-interfering thoughts and/or self-limiting beliefs or any permutation on problematic thinking that coachees are willing to endorse. A theoretical model for understanding and tackling psychological blocks in general and procrastination in particular is rational emotive behavioural therapy, founded in 1955 by the late Albert Ellis, an American clinical psychologist. (REBT is one of the approaches within the field of CBT.) A capsule account of the REBT approach follows. The approach proposes that rigid and extreme thinking (irrational beliefs) lies at the core of psychological disturbance. For example, faced with a coachee who is skeptical about the value of coaching, the coach makes himself very anxious and over-prepares for each session by insisting: 'I must impress her with my skills [rigid belief-why can't he let the coachee make up her own mind?], because if I don't this will prove I'm an incompetent coach' (an extreme view of his role to adopt if the coachee is unimpressed). Rigid thinking takes the form, for example, of must, should, have to and got to. Derived from these rigid beliefs are three major and extreme conclusions: awfulising (nothing could be worse and nothing good can come from negative events), low frustration tolerance (frustration and discomfort are too hard to bear) and depreciation of self and/or others (a person can be given a single global rating [e.g. useless] that defines their essence or worth). (PsycINFO Database Record (c) 2012 APA, all rights reserved).",
"bookTitle": "Cognitive behavioural coaching in practice: An evidence based approach",
"callNumber": "Book: 2011-27892-001",
"language": "English",
"libraryCatalog": "PsycINFO",
"pages": "11-31",
"publisher": "Routledge/Taylor & Francis Group; US",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "\n<6. >\nVN - Ovid Technologies\nDB - Journals@Ovid\nAN - 01445365-201506000-00011.\nAU - Lefkowitz, Rafael Y. MD, MPH 1\nAU - Slade, Martin D. MPH 1\nAU - Redlich, Carrie A. MD, MPH 1\nIN - (1)Yale Occupational and Environmental Medicine, Yale School of Medicine, New Haven, Connecticut\nTI - \"Injury, Illness, and Work Restriction in Merchant Seafarers\". [Article]\nSO - American Journal Of Industrial Medicine June 2015;58(6):688-696\nAB - Background: Research on seafarer medical conditions at sea is limited. This study describes the frequency and distribution of seafarer injury and illness at sea, and explores potential risk factors for resultant lost work., Materials and Methods: The study analyzed a telemedicine database of 3,921 seafarer medical cases between 2008 and 2011 using descriptive statistics and logistic regression., Results: There were over twice as many illness cases (n = 2,764, 70.5%) as injury (n = 1,157, 29.5%) cases. Disability was more often secondary to illness (n = 646, 54.3%), predominantly from gastrointestinal, dermatologic, and respiratory conditions. Logistic regression revealed age, rank, and worksite as potential risk factors for lost work., Conclusions: This study emphasizes illness as a significant problem occurring in seafarers at sea. Future research should further elucidate risk factors for illness, as well as injury, to inform preventive measures and reduce seafarer disability. Am. J. Ind. Med. 58:688-696, 2015. (C) 2015 Wiley Periodicals, Inc., (C) 2015 John Wiley & Sons, Ltd\nKW - seafarers; disability; telemedicine; occupational injury; epidemiology\nLG - English.\nDT - Research Articles.\nSB - Clinical Medicine, Public Health.\nIS - 0271-3586\nDI - 10.1002/ajim.22459\nXL - http://ovidsp.ovid.com/ovidweb.cgi?T=JS&CSC=Y&NEWS=N&PAGE=fulltext&D=ovftq&AN=01445365-201506000-00011",
"items": [
{
"itemType": "journalArticle",
"title": "Injury, Illness, and Work Restriction in Merchant Seafarers",
"creators": [
{
"firstName": "Rafael Y.",
"lastName": "Lefkowitz",
"creatorType": "author"
},
{
"firstName": "Martin D.",
"lastName": "Slade",
"creatorType": "author"
},
{
"firstName": "Carrie A.",
"lastName": "Redlich",
"creatorType": "author"
}
],
"date": "2015 June",
"DOI": "10.1002/ajim.22459",
"ISSN": "0271-3586",
"abstractNote": "Background: Research on seafarer medical conditions at sea is limited. This study describes the frequency and distribution of seafarer injury and illness at sea, and explores potential risk factors for resultant lost work., Materials and Methods: The study analyzed a telemedicine database of 3,921 seafarer medical cases between 2008 and 2011 using descriptive statistics and logistic regression., Results: There were over twice as many illness cases (n = 2,764, 70.5%) as injury (n = 1,157, 29.5%) cases. Disability was more often secondary to illness (n = 646, 54.3%), predominantly from gastrointestinal, dermatologic, and respiratory conditions. Logistic regression revealed age, rank, and worksite as potential risk factors for lost work., Conclusions: This study emphasizes illness as a significant problem occurring in seafarers at sea. Future research should further elucidate risk factors for illness, as well as injury, to inform preventive measures and reduce seafarer disability. Am. J. Ind. Med. 58:688-696, 2015. (C) 2015 Wiley Periodicals, Inc., (C) 2015 John Wiley & Sons, Ltd",
"callNumber": "01445365-201506000-00011",
"issue": "6",
"language": "English.",
"libraryCatalog": "Journals@Ovid",
"pages": "688-696",
"publicationTitle": "American Journal Of Industrial Medicine",
"volume": "58",
"attachments": [],
"tags": [
{
"tag": "disability"
},
{
"tag": "epidemiology"
},
{
"tag": "occupational injury"
},
{
"tag": "seafarers"
},
{
"tag": "telemedicine"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "\n<6. >\nVN - Ovid Technologies\nTI - Test\nSO - A Nonexistent Journal of Marriage and Family Therapy: With a Subtitle June 2019;1(6):123-456\n",
"items": [
{
"itemType": "journalArticle",
"title": "Test",
"creators": [],
"date": "2019 June",
"issue": "6",
"pages": "123-456",
"publicationTitle": "A Nonexistent Journal of Marriage and Family Therapy: With a Subtitle",
"volume": "1",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Simon Kornblith, Michael Berkowitz, Rintze Zelle, and Sebastian Karcher^https?://(books|www)\.google\.[a-z]+(\.[a-z]+)?/(books(/.*)?\?(.*id=.*|.*q=.*)|search\?.*?(btnG=Search\+Books|tbm=bks)|books/edition/)|^https?://play\.google\.[a-z]+(\.[a-z]+)?/(store/)?(books|search\?.*c=books)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2012-2019 Simon Kornblith, Michael Berkowitz, Rintze Zelle, and Sebastian Karcher
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
/*
The various types of Google Books URLs are:
Search results - List view
http://books.google.com/books?q=asimov&btnG=Search+Books
Search results - Cover view
http://books.google.com/books?q=asimov&btnG=Search%20Books&rview=1
Single item - URL with "id"
http://books.google.com/books?id=skf3LSyV_kEC&source=gbs_navlinks_s
http://books.google.com/books?hl=en&lr=&id=Ct6FKwHhBSQC&oi=fnd&pg=PP9&dq=%22Peggy+Eaton%22&ots=KN-Z0-HAcv&sig=snBNf7bilHi9GFH4-6-3s1ySI9Q#v=onepage&q=%22Peggy%20Eaton%22&f=false
Single item - URL with "vid" (see http://code.google.com/apis/books/docs/static-links.html)
http://books.google.com/books?printsec=frontcover&vid=ISBN0684181355&vid=ISBN0684183951&vid=LCCN84026715#v=onepage&q&f=false
Single item - New Google Books November 2019
https://www.google.com/books/edition/_/U4NmPwAACAAJ?hl=en
Personal play store book lists
https://play.google.com/books (no test)
Play Store Individual Books
https://play.google.com/store/books/details/Adam_Smith_The_Wealth_of_Nations?id=-WxKAAAAYAAJ
Play Store Book Searches
https://play.google.com/store/search?q=doyle+arthur+conan&c=books
*/
// attr()/text() v2
// eslint-disable-next-line
function attr(docOrElem,selector,attr,index){var elem=index?docOrElem.querySelectorAll(selector).item(index):docOrElem.querySelector(selector);return elem?elem.getAttribute(attr):null;}function text(docOrElem,selector,index){var elem=index?docOrElem.querySelectorAll(selector).item(index):docOrElem.querySelector(selector);return elem?elem.textContent:null;}
function detectWeb(doc, url) {
if (url.search(/[&?]v?id=/) != -1) {
return "book";
}
else if (url.includes("/books/edition/")) {
return "book";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
// regular books
var rows = ZU.xpath(doc, '//div[@class="srg"]//a[h3]');
if (!rows.length) {
// play store
rows = doc.querySelectorAll('div.Q9MA7b>a');
}
for (let row of rows) {
let href = row.href;
// h3 for google books, div for google play
let title = text(row, 'h3, div');
// exclude audiobooks on google play
// audiobooks aren't in Google's book metadata
if (!href || !title || href.includes("/store/audiobooks/")) continue;
if (checkOnly) return true;
found = true;
items[href] = ZU.trimInternal(title);
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var id;
// New books format:
if (url.includes("/books/edition/")) {
id = url.split('/').pop().split('?')[0];
}
// All old formats with explicit id, including play store
else if (url.search(/[&?]id=/) != -1) {
id = url.match(/[&?]id=([^&]+)/)[1];
}
else if (url.search(/[&?]vid=/) != -1) {
var canonicalUrl = ZU.xpath(doc, '/html/head/link[@rel="canonical"]')[0].href;
id = canonicalUrl.match(/[&?]id=([^&]+)/)[1];
}
// somewhat of a hack to recover from a rare situation in which the XML
// doesn't have a dc:title tag (bad metadata on Google's end).
// the Google Books suffix appears consistent across languages.
let fallbackTitle = doc.title.replace(/(\s*-\s*)?Google Books/, '');
ZU.doGet("//books.google.com/books/feeds/volumes/" + id,
text => parseXML(text, fallbackTitle));
}
function parseXML(text, fallbackTitle) {
// Z.debug(text);
// Remove xml parse instruction and doctype
var parser = new DOMParser();
var xml = parser.parseFromString(text, "text/xml").documentElement;
var ns = { dc: "http://purl.org/dc/terms",
atom: "http://www.w3.org/2005/Atom" };
var newItem = new Zotero.Item("book");
var authors = ZU.xpath(xml, "dc:creator", ns);
for (let author of authors) {
newItem.creators.push(ZU.cleanAuthor(author.textContent, "author"));
}
var pages = ZU.xpathText(xml, "dc:format", ns);
const pagesRe = /(\d+)( pages)/;
var pagesMatch = pagesRe.exec(pages);
if (pagesMatch !== null) {
newItem.numPages = pagesMatch[1];
}
else {
newItem.numPages = pages;
}
var ISBN;
const ISBN10Re = /(?:ISBN:)(\w{10})$/;
const ISBN13Re = /(?:ISBN:)(\w{13})$/;
const booksIDRe = /^(\w{12})$/;
var identifiers = ZU.xpath(xml, "dc:identifier", ns);
for (let identifier of identifiers) {
var ISBN10Match = ISBN10Re.exec(identifier.textContent);
var ISBN13Match = ISBN13Re.exec(identifier.textContent);
var booksIDMatch = booksIDRe.exec(identifier.textContent);
if (ISBN10Match !== null) {
ISBN = ISBN10Match[1];
}
if (ISBN13Match !== null) {
ISBN = ISBN13Match[1];
}
if (booksIDMatch !== null) {
newItem.extra = "Google-Books-ID: " + booksIDMatch[1];
}
}
newItem.ISBN = ISBN;
newItem.publisher = ZU.xpathText(xml, "dc:publisher", ns);
newItem.title = ZU.xpathText(xml, "dc:title", ns, ": ") || fallbackTitle;
newItem.language = ZU.xpathText(xml, 'dc:language', ns);
newItem.abstractNote = ZU.xpathText(xml, 'dc:description', ns);
newItem.date = ZU.xpathText(xml, "dc:date", ns);
var url = "/books?id=" + identifiers[0].textContent;
newItem.attachments = [{ title: "Google Books Link", snapshot: false, mimeType: "text/html", url: url }];
var subjects = ZU.xpath(xml, 'dc:subject', ns);
for (let subject of subjects) {
newItem.tags.push(subject.textContent);
}
newItem.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.google.com/search?tbo=p&tbm=bks&q=asimov",
"items": "multiple"
},
{
"type": "web",
"url": "https://books.google.de/books/about/The_Cambridge_companion_to_electronic_mu.html?id=AJbdPZv1DjgC&redir_esc=y",
"items": [
{
"itemType": "book",
"title": "The Cambridge Companion to Electronic Music",
"creators": [
{
"firstName": "Nick",
"lastName": "Collins",
"creatorType": "author"
},
{
"firstName": "Nicholas",
"lastName": "Collins",
"creatorType": "author"
},
{
"firstName": "Julio d' Escrivan",
"lastName": "Rincón",
"creatorType": "author"
},
{
"firstName": "Julio",
"lastName": "d'Escrivan",
"creatorType": "author"
}
],
"date": "2007-12-13",
"ISBN": "9780521868617",
"abstractNote": "Musicians are always quick to adopt and explore new technologies. The fast-paced changes wrought by electrification, from the microphone via the analogue synthesiser to the laptop computer, have led to a wide diversity of new musical styles and techniques. Electronic music has grown to a broad field of investigation, taking in historical movements such as musique concrète and elektronische musik, and contemporary trends such as electronic dance music and electronica. A fascinating array of composers and inventors have contributed to a diverse set of technologies, practices and music. This book brings together some novel threads through this scene, from the viewpoint of researchers at the forefront of the sonic explorations empowered by electronic technology. The chapters provide accessible and insightful overviews of core topic areas and uncover some hitherto less publicised corners of worldwide movements. Recent areas of intense activity such as audiovisuals, live electronic music, interactivity and network music are actively promoted.",
"extra": "Google-Books-ID: AJbdPZv1DjgC",
"language": "en",
"libraryCatalog": "Google Books",
"numPages": "260",
"publisher": "Cambridge University Press",
"attachments": [
{
"title": "Google Books Link",
"snapshot": false,
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Music / General"
},
{
"tag": "Music / Genres & Styles / Electronic"
},
{
"tag": "Music / Instruction & Study / Techniques"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://books.google.de/books?id=skf3LSyV_kEC&source=gbs_navlinks_s&redir_esc=y",
"items": [
{
"itemType": "book",
"title": "Gabriel García Márquez: A Critical Companion",
"creators": [
{
"firstName": "Rubén",
"lastName": "Pelayo",
"creatorType": "author"
},
{
"firstName": "Rube ́n",
"lastName": "Pelayo",
"creatorType": "author"
},
{
"firstName": "Rubén Pelayo",
"lastName": "Coutiño",
"creatorType": "author"
}
],
"date": "2001",
"ISBN": "9780313312601",
"abstractNote": "Winner of the Nobel Prize for Literature in 1982 for his masterpiece One Hundred Years of Solitude, Gabriel Garc^D'ia M^D'arquez had already earned tremendous respect and popularity in the years leading up to that honor, and remains, to date, an active and prolific writer. Readers are introduced to Garc^D'ia M^D'arquez with a vivid account of his fascinating life; from his friendships with poets and presidents, to his distinguished career as a journalist, novelist, and chronicler of the quintessential Latin American experience. This companion also helps students situate Garc^D'ia M^D'arquez within the canon of Western literature, exploring his contributions to the modern novel in general, and his forging of literary techniques, particularly magic realism, that have come to distinguish Latin American fiction.Full literary analysis is given for One Hundred Years of Solitude, as well as Chronicle of a Death Foretold (1981), Love in the Time of Cholera (1985), two additional novels, and five of Garc^D'ia M^D'arquez's best short stories. Students are given guidance in understanding the historical contexts, as well as the characters and themes that recur in these interrelated works. Narrative technique and alternative critical perspectives are also explored for each work, helping readers fully appreciate the literary accomplishments of Gabriel Garc^D'ia M^D'arquez.",
"extra": "Google-Books-ID: skf3LSyV_kEC",
"language": "en",
"libraryCatalog": "Google Books",
"numPages": "208",
"publisher": "Greenwood Publishing Group",
"shortTitle": "Gabriel García Márquez",
"attachments": [
{
"title": "Google Books Link",
"snapshot": false,
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Literary Criticism / European / Spanish & Portuguese"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://books.google.de/books?hl=en&lr=&id=Ct6FKwHhBSQC&oi=fnd&pg=PP9&dq=%22Peggy+Eaton%22&ots=KN-Z0-HAcv&sig=snBNf7bilHi9GFH4-6-3s1ySI9Q&redir_esc=y#v=onepage&q=%22Peggy%20Eaton%22&f=false",
"items": [
{
"itemType": "book",
"title": "Some American Ladies: Seven Informal Biographies ...",
"creators": [
{
"firstName": "Meade",
"lastName": "Minnigerode",
"creatorType": "author"
}
],
"date": "1926",
"ISBN": "9780836913620",
"extra": "Google-Books-ID: Ct6FKwHhBSQC",
"language": "en",
"libraryCatalog": "Google Books",
"numPages": "332",
"publisher": "G.P. Putnam's Sons",
"shortTitle": "Some American Ladies",
"attachments": [
{
"title": "Google Books Link",
"snapshot": false,
"mimeType": "text/html"
}
],
"tags": [
"Biography & Autobiography / Women"
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://books.google.de/books?printsec=frontcover&vid=LCCN84026715&redir_esc=y#v=onepage&q&f=false",
"items": [
{
"itemType": "book",
"title": "Electronic and Experimental Music: Pioneers in Technology and Composition",
"creators": [
{
"firstName": "Thomas B.",
"lastName": "Holmes",
"creatorType": "author"
},
{
"firstName": "Thom",
"lastName": "Holmes",
"creatorType": "author"
}
],
"date": "2002",
"ISBN": "9780415936446",
"abstractNote": "Annotation Electronic and Experimental Music details the history of electronic music throughout the world, and the people who created it. From the theory of sound production to key composers and instrument designers, this is a complete introduction to the genre from its early roots to the present technological explosion. Every major figure is covered including: Thaddeus Cahill, Peire Henry, Gorden Mumma, Pauline Oliveros, Brian Eno, and D.J. Spooky. The vast array of forms and instruments that these innovators introduced and expanded are also included--tape composition, the synthesizer, \"live\" electronic performance, the ONCE festivals, ambient music, and turntablism. This new edition, includes a thoroughly updated and enlarged theoretical and historical sections and includes new material on using home computers (PCs) and the many resources now available in software and the Internet.",
"extra": "Google-Books-ID: ILkquoGXEq0C",
"language": "en",
"libraryCatalog": "Google Books",
"numPages": "332",
"publisher": "Psychology Press",
"shortTitle": "Electronic and Experimental Music",
"attachments": [
{
"title": "Google Books Link",
"snapshot": false,
"mimeType": "text/html"
}
],
"tags": [
"Music / Genres & Styles / New Age"
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.google.com/search?q=asimov&btnG=Search+Books&tbm=bks&tbo=1#hl=en&q=asimov&sei=guBGUIDOCJP8qQG7u4DYCg&start=10&tbm=bks",
"items": "multiple"
},
{
"type": "web",
"url": "https://play.google.com/store/search?q=doyle+arthur+conan&c=books",
"items": "multiple"
},
{
"type": "web",
"url": "https://play.google.com/store/books/details/Adam_Smith_The_Wealth_of_Nations?id=-WxKAAAAYAAJ",
"items": [
{
"itemType": "book",
"title": "The Wealth of Nations",
"creators": [
{
"firstName": "Adam",
"lastName": "Smith",
"creatorType": "author"
}
],
"date": "1902",
"language": "en",
"libraryCatalog": "Google Books",
"numPages": "458",
"publisher": "Collier",
"attachments": [
{
"title": "Google Books Link",
"snapshot": false,
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.google.com/books/edition/_/U4NmPwAACAAJ?hl=en",
"items": [
{
"itemType": "book",
"title": "Ronia, the Robber's Daughter",
"creators": [
{
"firstName": "Astrid",
"lastName": "Lindgren",
"creatorType": "author"
}
],
"date": "1985",
"ISBN": "9780613096249",
"abstractNote": "Ronia, who lives with her father and his band of robbers in a castle in the woods, causes trouble when she befriends the son of a rival robber chieftain.",
"extra": "Google-Books-ID: U4NmPwAACAAJ",
"language": "en",
"libraryCatalog": "Google Books",
"numPages": "176",
"publisher": "Turtleback",
"attachments": [
{
"title": "Google Books Link",
"snapshot": false,
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Juvenile Fiction / Action & Adventure / General"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://books.google.com.au/books?id=xylqIkDQ-gEC&pg=PA111&dq=clinical+psychology&hl=en&sa=X&ved=0ahUKEwidzdfqiKjmAhXNF3IKHhttps://books.google.com.au/books?id=xylqIkDQ-gEC&pg=PA111&dq=clinical+psychology&hl=en&sa=X&ved=0ahUKEwidzdfqiKjmAhXNF3IKHejiBPoQ6AEIQTAD#v=onepage&q=clinical%20psychology&f=true",
"items": [
{
"itemType": "book",
"title": "Contemporary Clinical Psychology",
"creators": [
{
"firstName": "Thomas G.",
"lastName": "Plante",
"creatorType": "author"
}
],
"date": "2010-08-20",
"ISBN": "9780470872116",
"abstractNote": "Contemporary Clinical Psychology, Third Edition introduces students to this fascinating profession from an integrative, biopsychosocial perspective. Thoroughly updated to include the latest information on topics central to the field, this innovative approach to studying clinical psychology delivers an engaging overview of the roles and responsibilities of today's clinical psychologists that is designed to inform and spark interest in a future career in this dynamic field. Highlighting evidence-based therapies, multiple case studies round out the portrayal of clinical practice. Designed for graduate and undergraduate students in introductory clinical psychology courses.",
"language": "en",
"libraryCatalog": "Google Books",
"numPages": "625",
"publisher": "John Wiley & Sons",
"attachments": [
{
"title": "Google Books Link",
"snapshot": false,
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Psychology / Clinical Psychology"
},
{
"tag": "Psychology / General"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.google.com/books/edition/_/IG1qDwAAQBAJ?hl=en",
"items": [
{
"itemType": "book",
"title": "Recursive Macroeconomic Theory",
"creators": [],
"ISBN": "9780262038669",
"extra": "Google-Books-ID: IG1qDwAAQBAJ",
"language": "en",
"libraryCatalog": "Google Books",
"numPages": "1477",
"publisher": "MIT Press",
"attachments": [
{
"title": "Google Books Link",
"snapshot": false,
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Sonali Gupta, Sebastian Karcher^https?://(economictimes|timesofindia)\.indiatimes\.com/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2017-2021 Sonali Gupta and Sebastian Karcher
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if ((url.includes("/topic/") || url.includes("articlelist")) && getSearchResults(doc, true)) {
return "multiple";
}
else if (text(doc, 'article') || attr(doc, 'meta[property="og:type"', "content") == "article") {
return "newspaperArticle";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
// topic
var rows = ZU.xpath(doc, '//main//a[(h2 or h3) and contains(@href, "/articleshow")]');
// articlelist
if (!rows.length) {
rows = ZU.xpath(doc, '//div[@class="eachStory"]/h3/a');
}
if (!rows.length) {
rows = ZU.xpath(doc, '//li[@itemprop="itemListElement"]//div[@class="content"]/a');
}
for (var i = 0; i < rows.length; i++) {
var href = rows[i].href;
var title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) {
return;
}
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var newItem = new Zotero.Item("newspaperArticle");
newItem.url = url;
if (url.includes("timesofindia.indiatimes.com")) {
newItem.publicationTitle = "The Times of India";
newItem.ISSN = "0971-8257";
}
else {
newItem.publicationTitle = "The Economic Times";
newItem.ISSN = "0013-0389";
}
// get headline
var title = text(doc, 'h1');
if (!title) title = ZU.xpathText(doc, '//meta[@property="og:title"]/@content').replace(/\|.+/, "").trim();
newItem.title = title;
// get abstract
newItem.abstractNote = ZU.xpathText(doc, '//meta[@property="og:description"]/@content');
// get date
var date = text(doc, '.bylineBox time, .byline-content .time_cptn');
if (date) {
newItem.date = ZU.strToISO(date);
}
else {
// ToI
date = text(doc, 'div.byline');
if (date) {
newItem.date = ZU.strToISO(date);
}
}
// get author or organization
var authors = ZU.xpath(doc, '//a[@rel="author"]');
for (let author of authors) {
newItem.creators.push(ZU.cleanAuthor(author.textContent, "author"));
}
if (!authors.length) {
let author = text(doc, '.bylineBox .artByline').match(/By(.+?),/);
if (author) {
newItem.creators.push(ZU.cleanAuthor(author[1].trim(), "author"));
}
}
newItem.attachments = [{
title: "Snapshot",
document: doc
}];
newItem.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://economictimes.indiatimes.com/news/economy/policy/cabinet-may-tomorrow-consider-gst-supplementary-legislations/articleshow/57716927.cms",
"items": [
{
"itemType": "newspaperArticle",
"title": "Cabinet may tomorrow consider GST supplementary legislations",
"creators": [],
"date": "2017-03-19",
"ISSN": "0013-0389",
"abstractNote": "Sources said the Cabinet meeting has been called for Monday morning and the agenda list may not be very long.",
"libraryCatalog": "The Economic Times - The Times of India",
"publicationTitle": "The Economic Times",
"url": "https://economictimes.indiatimes.com/news/economy/policy/cabinet-may-tomorrow-consider-gst-supplementary-legislations/articleshow/57716927.cms",
"attachments": {
"url": "https://economictimes.indiatimes.com/news/economy/policy/cabinet-may-tomorrow-consider-gst-supplementary-legislations/articleshow/57716927.cms",
"title": "Snapshot",
"mimeType": "text/html"
},
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://economictimes.indiatimes.com/news/economy/foreign-trade/vat-in-uae-will-not-affect-trade-dubai-chamber-chairman/articleshow/57671214.cms",
"items": [
{
"itemType": "newspaperArticle",
"title": "VAT in UAE will not affect trade: Dubai Chamber chairman",
"creators": [
{
"firstName": "Kirtika",
"lastName": "Suneja",
"creatorType": "author"
}
],
"date": "2017-03-16",
"ISSN": "0013-0389",
"abstractNote": "\"The discussion is to have VAT between 4-5%. It is an excellent step to collect information, businesses' capacity and gauge their condition,\" said Al Ghurair.",
"libraryCatalog": "The Economic Times - The Times of India",
"publicationTitle": "The Economic Times",
"shortTitle": "VAT in UAE will not affect trade",
"url": "https://economictimes.indiatimes.com/news/economy/foreign-trade/vat-in-uae-will-not-affect-trade-dubai-chamber-chairman/articleshow/57671214.cms",
"attachments": {
"url": "https://economictimes.indiatimes.com/news/economy/foreign-trade/vat-in-uae-will-not-affect-trade-dubai-chamber-chairman/articleshow/57671214.cms",
"title": "Snapshot",
"mimeType": "text/html"
},
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://economictimes.indiatimes.com/topic/nuclear",
"items": "multiple"
},
{
"type": "web",
"url": "https://economictimes.indiatimes.com/news/how-to/educational-services-tax-on-coaching-centres-in-india/articleshow/86886821.cms",
"items": [
{
"itemType": "newspaperArticle",
"title": "Educational services: Tax on coaching centres in India",
"creators": [
{
"firstName": "Ruchika",
"lastName": "Bhagat",
"creatorType": "author"
}
],
"date": "2021-10-09",
"ISSN": "0013-0389",
"abstractNote": "All cash received from the coaching profession has to be deposited into a separate bank account periodically and all expenses are to be paid from the same bank account.",
"libraryCatalog": "The Economic Times - The Times of India",
"publicationTitle": "The Economic Times",
"shortTitle": "Educational services",
"url": "https://economictimes.indiatimes.com/news/how-to/educational-services-tax-on-coaching-centres-in-india/articleshow/86886821.cms",
"attachments": {
"url": "https://economictimes.indiatimes.com/news/how-to/educational-services-tax-on-coaching-centres-in-india/articleshow/86886821.cms",
"title": "Snapshot",
"mimeType": "text/html"
},
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://timesofindia.indiatimes.com/world/china/novel-coronavirus-cannot-pass-from-mother-to-child-late-in-pregnancy-lancet-study/articleshow/74112066.cms",
"items": [
{
"itemType": "newspaperArticle",
"title": "Novel coronavirus cannot pass from mother to child late in pregnancy: Lancet Study",
"creators": [],
"date": "2020-02-13",
"ISSN": "0971-8257",
"abstractNote": "China News: As per a study published in The Lancet journal, the 2019 novel coronavirus disease (COVID-19) may not pass to the child in the womb during late pregna",
"libraryCatalog": "The Economic Times - The Times of India",
"publicationTitle": "The Times of India",
"shortTitle": "Novel coronavirus cannot pass from mother to child late in pregnancy",
"url": "https://timesofindia.indiatimes.com/world/china/novel-coronavirus-cannot-pass-from-mother-to-child-late-in-pregnancy-lancet-study/articleshow/74112066.cms",
"attachments": {
"url": "https://timesofindia.indiatimes.com/world/china/novel-coronavirus-cannot-pass-from-mother-to-child-late-in-pregnancy-lancet-study/articleshow/74112066.cms",
"title": "Snapshot",
"mimeType": "text/html"
},
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://timesofindia.indiatimes.com/spotlight/an-ode-to-a-song-heres-how-you-can-fill-the-world-with-a-song-this-world-music-day/articleshow/83714933.cms",
"items": [
{
"itemType": "newspaperArticle",
"title": "An ode to a song! Here’s how you can fill the world with a song this World Music Day",
"creators": [
{
"firstName": "Anirban",
"lastName": "Halder",
"creatorType": "author"
}
],
"date": "2021-06-24",
"ISSN": "0971-8257",
"abstractNote": "Spotlight News: Smule is a social karaoke app that is perfect if you like singing. The app allows you to sing & collaborate with people. The ethos of the platform is",
"libraryCatalog": "The Economic Times - The Times of India",
"publicationTitle": "The Times of India",
"url": "https://timesofindia.indiatimes.com/spotlight/an-ode-to-a-song-heres-how-you-can-fill-the-world-with-a-song-this-world-music-day/articleshow/83714933.cms",
"attachments": {
"url": "https://timesofindia.indiatimes.com/spotlight/an-ode-to-a-song-heres-how-you-can-fill-the-world-with-a-song-this-world-music-day/articleshow/83714933.cms",
"title": "Snapshot",
"mimeType": "text/html"
},
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://timesofindia.indiatimes.com/topic/tesla",
"items": "multiple"
}
]
/** END TEST CASES **/
100Simon Kornblith, Michael Berkowitz, Josh Geller^https?://[^/]+/(eds|bsi|ehost)/(results|detail|folder|pdfviewer)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Simon Kornblith, Michael Berkowitz, Josh Geller
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
// eslint-disable-next-line no-unused-vars
function detectWeb(doc, url) {
// See if this is a search results or folder results page
var multiple = getResultList(doc, {}, {}); // we don't care about actual data at this point
if (multiple) {
return "multiple";
}
if (doc.querySelector("a.permalink-link")) {
return "journalArticle";
}
else if (ZU.xpathText(doc, '//section[@class="record-header"]/h2')) {
return "journalArticle";
}
return false;
}
/*
* given the text of the delivery page, downloads an item
*/
function downloadFunction(text, url, prefs) {
if (text.search(/^TY\s\s?-/m) == -1) {
text = "\nTY - JOUR\n" + text; // this is probably not going to work if there is garbage text in the begining
}
// fix DOI
text = text.replace(/^(?:L3|DI)(\s\s?-)/gm, 'DO$1');
// There are cases where the RIS type isn't good--
// there is sometimes better data in M3
// This list should be augmented over time
var m, m3Data;
var itemType = prefs.itemType;
if (!itemType && (m = text.match(/^M3\s+-\s*(.*)$/m))) {
m3Data = m[1]; // used later
switch (m3Data) {
case "Literary Criticism":
case "Case Study":
itemType = "journalArticle";
break;
}
}
// remove M3 so it does not interfere with DOI.
// hopefully EBCSOhost doesn't use this for anything useful
text = text.replace(/^M3\s\s?-.*/gm, '');
// we'll save this for later, in case we have to throw away a subtitle
// from the RIS
let subtitle;
// EBSCOhost uses nonstandard tags to represent journal titles on some items
// no /g flag so we don't create duplicate tags
let journalRe = /^(JO|JF|J1)/m;
if (journalRe.test(text)) {
let subtitleRe = /^T2\s\s?-\s?(.*)/m;
let subtitleMatch = text.match(subtitleRe);
if (subtitleMatch) {
// if there's already something in T2, store it and erase it from the RIS
subtitle = subtitleMatch[1];
text = text.replace(subtitleRe, '');
}
text = text.replace(journalRe, 'T2');
}
// Let's try to keep season info
// Y1 - 1993///Winter93
// Y1 - 2009///Spring2009
// maybe also Y1 - 1993///93Winter
var season = text.match(
/^(Y1\s+-\s+(\d{2})(\d{2})\/\/\/)(?:\2?\3(.+)|(.+?)\2?\3)\s*$/m);
season = season && (season[4] || season[5]);
// load translator for RIS
var translator = Zotero.loadTranslator("import");
translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7");
translator.setString(text);
// eslint-disable-next-line padded-blocks
translator.setHandler("itemDone", function (obj, item) {
/* Fix capitalization issues */
// title
if (!item.title && prefs.itemTitle) {
item.title = prefs.itemTitle;
}
if (item.title) {
// Strip final period from title if present
item.title = item.title.replace(/([^.])\.\s*$/, '$1');
if (item.title.toUpperCase() == item.title) {
item.title = ZU.capitalizeTitle(item.title, true);
}
if (subtitle) {
item.title += `: ${subtitle}`;
}
}
// authors
var fn, ln;
for (var i = 0, n = item.creators.length; i < n; i++) {
fn = item.creators[i].firstName;
if (fn && fn.toUpperCase() == fn) {
item.creators[i].firstName = ZU.capitalizeTitle(fn, true);
}
ln = item.creators[i].lastName;
if (ln && ln.toUpperCase() == ln) {
item.creators[i].lastName = ZU.capitalizeTitle(ln, true);
}
}
// Sometimes EBSCOhost gives us year and season
if (season) {
item.date = season + ' ' + item.date;
}
// The non-DOI values in M3 should never pass RIS translator,
// but, just in case, if we know it's not DOI, let's remove it
if (item.DOI && item.DOI == m3Data) {
item.DOI = undefined;
}
// Strip EBSCOhost tags from the end of abstract
if (item.abstractNote) {
item.abstractNote = item.abstractNote
.replace(/\s*\[[^\].]+\]$/, ''); // to be safe, don't strip sentences
}
// Get the accession number from URL if not in RIS
var an = url.match(/_(\d+)_AN/);
if (!item.callNumber) {
if (an) {
an = an[1];
item.callNumber = an;
}
}
else if (!an) { // we'll need this later
an = item.callNumber;
}
// A lot of extra info is jammed into notes
item.notes = [];
// the archive field is pretty useless:
item.archive = "";
if (item.url) {
// Trim the ⟨=cs suffix -- EBSCO can't find the record with it!
item.url = item.url.replace(/(AN=[0-9]+)⟨=[a-z]{2}/, "$1")
.replace(/#.*$/, '');
if (!prefs.hasFulltext) {
// For items without full text,
// move the stable link to a link attachment
item.attachments.push({
url: item.url + "&scope=cite",
title: "EBSCO Record",
mimeType: "text/html",
snapshot: false
});
item.url = undefined;
}
}
if (prefs.pdfURL) {
item.attachments.push({
url: prefs.pdfURL,
title: "EBSCO Full Text",
mimeType: "application/pdf"
});
item.complete();
}
else if (prefs.fetchPDF) {
var args = urlToArgs(url);
if (prefs.mobile) {
// the PDF is not embedded in the mobile view
var id = url.match(/([^/]+)\?sid/)[1];
var pdfurl = "/ehost/pdfviewer/pdfviewer/"
+ id
+ "?sid=" + args.sid
+ "&vid=" + args.vid;
item.attachments.push({
url: pdfurl,
title: "EBSCO Full Text",
mimeType: "application/pdf"
});
item.complete();
}
else {
var pdf = "/ehost/pdfviewer/pdfviewer?"
+ "sid=" + args.sid
+ "&vid=" + args.vid;
Z.debug("Fetching PDF from " + pdf);
ZU.processDocuments(pdf,
function (pdfDoc) {
if (!isCorrectViewerPage(pdfDoc)) {
Z.debug('PDF viewer page doesn\'t appear to be serving the correct PDF. Skipping PDF attachment.');
return;
}
var realpdf = findPdfUrl(pdfDoc);
if (realpdf) {
item.attachments.push({
url: realpdf,
title: "EBSCO Full Text",
mimeType: "application/pdf",
proxy: false
});
}
else {
Z.debug("Could not find a reference to PDF.");
}
},
function () {
Z.debug("PDF retrieval done.");
item.complete();
}
);
}
}
else {
Z.debug("Not attempting to retrieve PDF.");
item.complete();
}
});
translator.getTranslatorObject(function (trans) {
trans.options.itemType = itemType;
trans.doImport();
});
}
// collects item url->title (in items) and item url->database info (in itemInfo)
function getResultList(doc, items, itemInfo) {
var results = ZU.xpath(doc, '//li[@class="result-list-li"]');
var title, folderData, count = 0;
// make search results work if you can't add to folder, e.g. for EBSCO used as discovery service of library such as
// https://www.library.umass.edu/
// http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&scope=site&type=0&custid=s4895734&groupid=main&profid=eds&mode=and&lang=en&authtype=ip,guest,athens
if (results.length > 0) {
let folder = ZU.xpathText(doc, '//span[@class = "item add-to-folder"]/input/@value|.//span[@class = "item add-to-folder"]/a[1]/@data-folder');
for (let i = 0; i < results.length; i++) {
title = ZU.xpath(results[i], './/a[@class = "title-link color-p4"]');
if (!title.length) continue;
if (folder) {
folderData = ZU.xpath(results[i],
'.//span[@class = "item add-to-folder"]/input/@value|.//span[@class = "item add-to-folder"]/a[1]/@data-folder');
// I'm not sure if the input/@value format still exists somewhere, but leaving this in to be safe
// skip if we're missing something
itemInfo[title[0].href] = {
folderData: folderData[0].textContent,
// let's also store item type
itemType: ZU.xpathText(results[i],
'.//div[contains(@class, "pubtype")]/span/@class'),
itemTitle: ZU.xpathText(results[i], './/span[@class="title-link-wrapper"]/a'),
// check if PDF is available
fetchPDF: ZU.xpath(results[i], './/span[@class="record-formats"]/a[contains(@class,"pdf-ft")]').length,
hasFulltext: ZU.xpath(results[i], './/span[@class="record-formats"]/a[contains(@class,"pdf-ft") or contains(@class, "html-ft")]').length
};
}
count++;
items[title[0].href] = title[0].textContent;
}
}
else {
results = ZU.xpath(doc, '//ol[@id="resultlist"]//li[@class="resultlist-record"]');
let folder = ZU.xpathText(doc, '//a[@class="add-to-folder"]');
for (let i = 0; i < results.length; i++) {
title = ZU.xpath(results[i], './/h2[@class="record-title"]/a');
if (!title.length) continue;
if (folder) {
folderData = ZU.xpath(results[i], './/a[@class="add-to-folder"]/@data-folder');
itemInfo[title[0].href] = {
folderData: folderData[0].textContent,
// let's also store item type
itemType: ZU.xpathText(results[i],
'.//div[contains(@class, "pub-type")]/@class'),
itemTitle: ZU.xpathText(results[i], './/h2[@class="record-title"]/a'),
// check if FullText is available - if it is we also try the PDF
fetchPDF: ZU.xpath(results[i], './/ul[@class="record-description"]/li/span[contains(text(),"Full Text")]').length,
hasFulltext: ZU.xpath(results[i], './/ul[@class="record-description"]/li/span[contains(text(),"Full Text")]').length
};
}
count++;
items[title[0].href] = title[0].textContent;
}
}
return count;
}
// returns Zotero item type given a class name for the item icon in search list
function ebscoToZoteroItemType(ebscoType) {
if (!ebscoType) return false;
var m = ebscoType.match(/\bpt-(\S+)/);
if (m) {
switch (m[1]) {
case "review":
case "academicJournal":
return "journalArticle";
// This isn't always right. See https://forums.zotero.org/discussion/42535/atlas-codes-journals-as-magazines/
// case "serialPeriodical":
// return "magazineArticle"; //is this right?
// break;
case "newspaperArticle":
return "newspaperArticle";
}
}
return false;
}
// extracts arguments from a url and places them into an object
var argumentsRE = /([^?=&]+)(?:=([^&]*))?/g;
function urlToArgs(url) {
// reset index
argumentsRE.lastIndex = 0;
var args = {};
var arg;
// eslint-disable-next-line padded-blocks
while ((arg = argumentsRE.exec(url))) {
args[arg[1]] = arg[2];
}
return args;
}
// given a PDF viewer document, returns whether it appears to be displaying
// the correct PDF corresponding to the requested item. EBSCO sometimes returns
// the PDF for a previously viewed item when the current item doesn't have an
// associated PDF, but it won't serve metadata on the PDF viewer page in these
// cases.
function isCorrectViewerPage(pdfDoc) {
let citationAmplitude = attr(pdfDoc, 'a[name="citation"][data-amplitude]', 'data-amplitude');
if (!citationAmplitude || !citationAmplitude.startsWith('{')) {
Z.debug('PDF viewer page structure has changed - assuming PDF is correct');
return true;
}
return !!JSON.parse(citationAmplitude).result_index;
}
// given a pdfviewer page, extracts the PDF url
function findPdfUrl(pdfDoc) {
var el;
var realpdf = (el = pdfDoc.getElementById('downloadLink')) && el.href; // link
if (!realpdf) {
// input
realpdf = (el = pdfDoc.getElementById('pdfUrl')) && el.value;
}
if (!realpdf) {
realpdf = (el = pdfDoc.getElementById('pdfIframe') // iframe
|| pdfDoc.getElementById('pdfEmbed')) // embed
&& el.src;
}
return realpdf;
}
/**
* borrowed from http://www.webtoolkit.info/javascript-base64.html
*/
var base64KeyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
function utf8Encode(string) {
string = string.replace(/\r\n/g, "\n");
var utftext = "";
for (var n = 0; n < string.length; n++) {
var c = string.charCodeAt(n);
if (c < 128) {
utftext += String.fromCharCode(c);
}
else if ((c > 127) && (c < 2048)) {
utftext += String.fromCharCode((c >> 6) | 192);
utftext += String.fromCharCode((c & 63) | 128);
}
else {
utftext += String.fromCharCode((c >> 12) | 224);
utftext += String.fromCharCode(((c >> 6) & 63) | 128);
utftext += String.fromCharCode((c & 63) | 128);
}
}
return utftext;
}
function btoa(input) {
var output = "";
var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
var i = 0;
input = utf8Encode(input);
while (i < input.length) {
chr1 = input.charCodeAt(i++);
chr2 = input.charCodeAt(i++);
chr3 = input.charCodeAt(i++);
enc1 = chr1 >> 2;
enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
enc4 = chr3 & 63;
if (isNaN(chr2)) {
enc3 = enc4 = 64;
}
else if (isNaN(chr3)) {
enc4 = 64;
}
output = output
+ base64KeyStr.charAt(enc1) + base64KeyStr.charAt(enc2)
+ base64KeyStr.charAt(enc3) + base64KeyStr.charAt(enc4);
}
return output;
}
/**
* end borrowed code
*/
/**
* EBSCOhost encodes the target url before posting the form
* Replicated from http://global.ebsco-content.com/interfacefiles/13.4.0.98/javascript/bundled/_layout2/master.js
*/
function urlSafeEncodeBase64(str) {
return btoa(str).replace(/\+/g, "-").replace(/\//g, "_")
.replace(/=*$/, function (m) {
return m.length;
});
}
// var counter;
// eslint-disable-next-line no-unused-vars
function doWeb(doc, url) {
// counter = 0;
var items = {};
var itemInfo = {};
var multiple = getResultList(doc, items, itemInfo);
if (multiple) {
Zotero.selectItems(items, function (items) {
if (!items) {
return;
}
// fetch each url assynchronously
for (let i in items) {
(function (itemInfo) {
ZU.processDocuments(
i.replace(/#.*$/, ''),
function (doc) {
doDelivery(doc, itemInfo);
}
);
})(itemInfo[i]);
}
});
}
else {
doDelivery(doc); // Individual record.
// Record key exists in attribute for add to folder link in DOM
}
}
function doDelivery(doc, itemInfo) {
var folderData;
if (!itemInfo || !itemInfo.folderData) {
// Get the db, AN, and tag from ep.clientData instead
var clientData;
var scripts = doc.getElementsByTagName("script");
for (var i = 0; i < scripts.length; i++) {
clientData = scripts[i].textContent
.match(/var ep\s*=\s*({[^;]*})(?:;|\s*$)/);
if (clientData) break;
}
if (!clientData) {
return;
}
/* We now have the script containing ep.clientData */
clientData = clientData[1].match(/"currentRecord"\s*:\s*({[^}]*})/);
if (!clientData) {
return;
}
/* If this starts throwing exceptions, we should probably start try-catching it */
folderData = JSON.parse(clientData[1]);
}
else {
folderData = JSON.parse(itemInfo.folderData); // The attributes are a little different
folderData.Db = folderData.db;
folderData.Term = folderData.uiTerm;
folderData.Tag = folderData.uiTag;
}
// some preferences for later
var prefs = {};
prefs.mobile = false;
if (ZU.xpathText(doc, '//p[@class="view-layout"]/strong[@class="mobile"]')) {
prefs.mobile = true;
}
// figure out if there's a PDF available
// if PDFs stop downloading, might want to remove this
if (!itemInfo) {
if (doc.location.href.includes('/pdfviewer/')) {
prefs.pdfURL = findPdfUrl(doc);
prefs.fetchPDF = !!prefs.pdfURL;
}
else {
prefs.fetchPDF = !(ZU.xpath(doc, '//div[@id="column1"]//ul[1]/li').length // check for left-side column
&& !ZU.xpath(doc, '//a[contains(@class,"pdf-ft")]').length); // check if there's a PDF there
}
prefs.hasFulltext = !(ZU.xpath(doc, '//div[@id="column1"]//ul[1]/li').length // check for left-side column
&& !ZU.xpath(doc, '//a[contains(@class,"pdf-ft") or contains(@class, "html-ft")]').length);
prefs.itemTitle = ZU.xpathText(doc, '//dd[contains(@class, "citation-title")]/a/span')
|| ZU.xpathText(doc, '//h2[@id="selectionTitle"]');
}
else {
prefs.fetchPDF = itemInfo.fetchPDF;
prefs.hasFulltext = itemInfo.hasFulltext;
prefs.itemType = ebscoToZoteroItemType(itemInfo.itemType);
prefs.itemTitle = itemInfo.itemTitle;
}
if (prefs.itemTitle) {
prefs.itemTitle = ZU.trimInternal(prefs.itemTitle).replace(/([^.])\.$/, '$1');
}
// Z.debug(prefs);
var postURL = ZU.xpathText(doc, '//form[@id="aspnetForm"]/@action');
if (!postURL) {
postURL = doc.location.href; // fallback for mobile site
}
var args = urlToArgs(postURL);
postURL = "/ehost/delivery/ExportPanelSave/"
+ urlSafeEncodeBase64(folderData.Db + "__" + folderData.Term + "__" + folderData.Tag)
+ "?sid=" + args.sid
+ "&vid=" + args.vid
+ "&bdata=" + args.bdata
+ "&theExportFormat=1"; // RIS file
ZU.doGet(postURL, function (text) {
downloadFunction(text, postURL, prefs);
});
}
/** BEGIN TEST CASES **/
var testCases = []
/** END TEST CASES **/
100Adam Crymble and Abe Jellinek^https?://www\.nga\.gov//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Adam Crymble and Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/art-object-page')) {
return "artwork";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.return-art .title a');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, _url) {
var newItem = new Zotero.Item("artwork");
var authors = doc.querySelectorAll('.object-artist > a');
for (let author of authors) {
let name = author.textContent;
if (name) {
newItem.creators.push(ZU.cleanAuthor(name, "artist", name.includes(', ')));
}
}
newItem.title = text(doc, 'h1.object-title > em');
newItem.date = text(doc, 'h1.object-title > .date');
newItem.artworkMedium = getValue(doc, 'medium');
newItem.artworkSize = getValue(doc, 'dimensions');
newItem.callNumber = getValue(doc, 'accession');
newItem.attachments.push({
document: doc,
title: "Snapshot"
});
newItem.libraryCatalog = 'National Gallery of Art';
newItem.complete();
}
function getValue(doc, objectAttrClass) {
return [...doc.querySelectorAll(`.object-attr.${objectAttrClass} > .object-attr-value`)]
.map(el => el.textContent)
.filter(Boolean)
.join(', ');
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.nga.gov/collection/art-object-page.1237.html",
"items": [
{
"itemType": "artwork",
"title": "Girl with a Flute",
"creators": [
{
"firstName": "Johannes",
"lastName": "Vermeer",
"creatorType": "artist"
}
],
"date": "probably 1665/1675",
"artworkMedium": "oil on panel",
"artworkSize": "painted surface: 20 x 17.8 cm (7 7/8 x 7 in.), framed: 39.7 x 37.5 x 5.1 cm (15 5/8 x 14 3/4 x 2 in.)",
"callNumber": "1942.9.98",
"libraryCatalog": "National Gallery of Art",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.nga.gov/global-site-search-page.html?searchterm=manet",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.nga.gov/collection/artist-info.1506.html#works",
"items": "multiple"
}
]
/** END TEST CASES **/
100Sebastian Karcher and Abe Jellinek^https?://(www\.)?oecd-ilibrary\.org//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2012-2021 Sebastian Karcher and Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, _url) {
var bodyId = doc.body.getAttribute("id");
if (doc.querySelector('.sidebar-buttons form[action*="/citation"]')) {
if (ZU.xpathText(doc, '//li[@class="editorial-board"]')) {
return "journalArticle";
}
else if (bodyId == "book") {
return "book";
}
else {
return "report";
}
}
return false;
// no search results for the time being - many results link to pages we
// can't scrape
}
function doWeb(doc, url) {
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
item.attachments = [];
let pdfURL = attr(doc, '.action-pdf', 'href');
if (pdfURL) {
item.attachments.push({
title: 'Full Text PDF',
mimeType: 'application/pdf',
url: pdfURL
});
}
if (!item.place) {
item.place = 'Paris';
}
if (!item.creators.length) {
item.creators.push({
lastName: 'OECD',
creatorType: 'author',
fieldMode: 1
});
}
if (!item.tags.length) {
item.tags = text(doc, '.keyword')
.replace(/^Keywords:/, '')
.split(', ')
.map(tag => ({ tag }));
}
if (item.reportType == 'Text') {
item.reportType = '';
}
if (!item.publisher || item.publisher == 'OECD') {
item.publisher = 'Organisation for Economic Co-operation and Development';
}
if (item.itemType == 'book') {
item.ISBN = ZU.cleanISBN(text(doc, '.block-infos-sidebar .mg-t-zero'));
}
item.libraryCatalog = 'OECD iLibrary';
item.date = ZU.strToISO(item.date);
if (item.date) {
item.complete();
}
else {
ZU.doGet(url.replace(/[?#].*$/, '') + '/cite/endnote', function (enwText) {
item.date = (enwText.match(/^%D (.+)$/m) || [])[1];
item.complete();
});
}
});
translator.getTranslatorObject(function (trans) {
trans.itemType = detectWeb(doc, url);
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.oecd-ilibrary.org/economics/current-account-benchmarks-for-turkey_5k92smtqp9vk-en",
"items": [
{
"itemType": "report",
"title": "Current Account Benchmarks for Turkey",
"creators": [
{
"firstName": "Oliver",
"lastName": "Röhn",
"creatorType": "author"
}
],
"date": "2012-09-14",
"abstractNote": "Turkey’s current account deficit widened to almost 10% of GDP in 2011 and has been narrowing only gradually since. An important question is to what extent Turkey’s current account deficit is excessive. To explore this issue, one needs to establish benchmarks. In this paper current account benchmarks are derived using the external sustainability as well as the macroeconomic balance approach. However, the standard macroeconomic balance approach ignores the uncertainty inherent in the model selection process given the relatively large number of possible determinants of current account balances. This paper therefore extends the macroeconomic balance approach to account for model uncertainty by using Bayesian Model Averaging techniques. Results from both approaches suggest that current account benchmarks for the current account deficit lie in the range of 3% to 5½ per cent of GDP, which is broadly in line with previous estimates but substantially below recent current account deficit levels. This Working Paper relates to the 2012 OECD Economic Survey of Turkey (www.oecd.org/eco/surveys/turkey).",
"extra": "DOI: 10.1787/5k92smtqp9vk-en",
"institution": "Organisation for Economic Co-operation and Development",
"language": "en",
"libraryCatalog": "OECD iLibrary",
"place": "Paris",
"url": "https://www.oecd-ilibrary.org/economics/current-account-benchmarks-for-turkey_5k92smtqp9vk-en",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": " external sustainability"
},
{
"tag": "Bayesian model averaging"
},
{
"tag": "Turkey"
},
{
"tag": "current account"
},
{
"tag": "current account benchmarks"
},
{
"tag": "model uncertainty"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.oecd-ilibrary.org/governance/better-regulation-in-europe-france-2010_9789264086968-en",
"items": [
{
"itemType": "book",
"title": "Better Regulation in Europe: France 2010",
"creators": [
{
"lastName": "OECD",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "2010",
"ISBN": "9789264086968",
"abstractNote": "This report maps and analyses the core issues which together make up effective regulatory management for France, laying down a framework of what should be driving regulatory policy and reform in the future. Issues examined include: strategy and policies for improving regulatory management; institutional capacities for effective regulation and the broader policy making context; transparency and processes for effective public consultation and communication; processes for the development of new regulations, including impact assessment and for the management of the regulatory stock, including administrative burdens; compliance rates, enforcement policy and appeal processes; and the multilevel dimension: interface between different levels of government and interface between national processes and those of the EU. This book is part of a project examining better regulation, being carried out in partnership with the European Commission.",
"language": "en",
"libraryCatalog": "OECD iLibrary",
"place": "Paris",
"publisher": "Organisation for Economic Co-operation and Development",
"shortTitle": "Better Regulation in Europe",
"url": "https://www.oecd-ilibrary.org/governance/better-regulation-in-europe-france-2010_9789264086968-en",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Velősy Péter Kristóf^https?://(www\.)?antikvarium\.hu//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2017-2021 Velősy Péter Kristóf
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('konyv')) {
return "book";
}
else if (url.includes('index.php?type=search') && getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.src-result-book');
for (let row of rows) {
var href = attr(row, '#searchResultKonyv-csempes', 'href');
var title = ZU.trimInternal(text(row, '.book-title-src'));
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, _url) {
var newItem = new Zotero.Item('book');
newItem.title = text(doc, '[itemprop=name]', 0).trim();
var subtitle = text(doc, '[itemprop=alternateName]', 0) ? text(doc, '[itemprop=alternateName]', 0).trim() : null;
if (subtitle) {
newItem.title = newItem.title + ': ' + capitalizeHungarianTitle(subtitle, true);
}
var authors = Array.from(doc.querySelectorAll('[itemprop=author]')).map(x => cleanHungarianAuthor(x.innerText));
authors.forEach(x => newItem.creators.push(x));
var abstract = text(doc, 'fulszovegFull', 0) || text(doc, 'eloszoFull', 0);
if (abstract) {
newItem.abstractNote = abstract.replace(' Vissza', '').trim();
}
var seriesElement = doc.getElementById('konyvAdatlapSorozatLink');
if (seriesElement && seriesElement.length) {
newItem.series = seriesElement.innerText;
newItem.seriesNumber = getElementByInnerText('th', 'Kötetszám:').parentElement.children[1].innerText;
newItem.volume = newItem.seriesNumber;
}
var publisherName = text(doc, '#konyvAdatlapKiadoLink [itemprop=name]')
|| text(doc, '[itemprop=name]', 1);
if (publisherName) {
newItem.publisher = publisherName;
}
var publisherPlace = firstText(doc, '[itemprop=address]');
if (publisherPlace) {
newItem.place = publisherPlace.replace('(', '').replace(')', '');
}
newItem.date = firstText(doc, '[itemprop=datePublished]');
newItem.numPages = firstText(doc, '[itemprop=numberOfPages]');
newItem.language = firstText(doc, '[itemprop=inLanguage]');
var isbnElement = getElementByInnerText(doc, 'th', 'ISBN:');
if (isbnElement) {
newItem.ISBN = isbnElement.parentElement.children[1].innerText;
}
var contentsElement = doc.getElementById('tartalomFull');
if (contentsElement) {
newItem.notes.push({ note: contentsElement.innerText });
}
newItem.attachments.push({ document: doc, title: "Antikvarium.hu Snapshot", mimeType: "text/html" });
newItem.complete();
}
/**
* Return the first element matching the selector with non-empty text.
*/
function firstText(docOrElem, selector) {
for (let elem of docOrElem.querySelectorAll(selector)) {
let elemText = elem.textContent.trim();
if (elemText) return elemText;
}
return '';
}
function getElementByInnerText(doc, elementType, innerText) {
var tags = doc.getElementsByTagName(elementType);
for (var i = 0; i < tags.length; i++) {
if (tags[i].textContent == innerText) {
return tags[i];
}
}
return null;
}
function cleanHungarianAuthor(authorName) {
if (authorName.includes(',')) {
return Zotero.Utilities.cleanAuthor(authorName, 'author', true);
}
else {
var author = Zotero.Utilities.cleanAuthor(authorName, 'author', false);
var firstName = author.lastName;
var lastName = author.firstName;
author.firstName = firstName;
author.lastName = lastName;
return author;
}
}
function capitalizeHungarianTitle(title) {
title = title[0].toUpperCase() + title.substring(1).toLowerCase();
var words = title.split(/[ !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~]/);
words.forEach((w) => {
if (isRomanNumeral(w)) {
title = title.replace(w, w.toUpperCase());
}
});
return title;
}
function isRomanNumeral(word) {
var romanRegex = /^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/;
return !!word.toUpperCase().match(romanRegex);
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.antikvarium.hu/konyv/erdei-janos-atlasz-almai-82276",
"items": [
{
"itemType": "book",
"title": "Atlasz álmai: Borges a szovjetunióban/az öröklét előszobája és egyéb történetek",
"creators": [
{
"firstName": "János",
"lastName": "Erdei",
"creatorType": "author"
}
],
"date": "1991",
"language": "Magyar",
"libraryCatalog": "Antikvarium.hu",
"numPages": "140",
"place": "Budapest",
"publisher": "Aero & Rádió Kft.",
"shortTitle": "Atlasz álmai",
"attachments": [
{
"title": "Antikvarium.hu Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [
{
"note": "TARTALOM\nElőszó\t5\nMásodik ébredés\t7\nMegvilágosodás\t9\nSzemelvények Gusavson műveiből\t17\nHalvány kétkedés\t17\nMegjegyzés\t20\nJótékony hazugság\t21\nA föltámadt Krisztus dilemmája\t23\nÁbrahám\t24\nSzerelmes ébredés és álom\t27\nRáébredés: a rabszolga\t33\nDacos ébredés, avagy az ötödik evangélista\t35\nElalvás előtt I.\t40\nKét álmodó\t40\nElalvás előtt II.\t43\nA kivégzési jegy\t45\nGyújtópont\t53\nFelvillanás\t55\nAngyali üdvözlet\t63\nA fellendülés okai\t65\nFéreg által homályosan\t71\nBorges a Szovjetunióban\t81\nA nevetés köve\t89\nA Nagy Rendszer\t93\nTúl az álmokon: az igazhitű\t97\nAz öröklét előszobája\t101\nElragadottság\t109\nA legvidámabb eretnek\t113\nÚjabb fejlemények az Oidipusz-ügyben\t117\nVisszahívták a Szfinxet!\t121\nAz egyetlen lehetőség\t125\nZavaros álom: letisztulás\t127\nN. és a tenger\t135\nUtószó\t137"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.antikvarium.hu/index.php?type=search&ksz=atlasz&reszletes=0&newSearch=1&searchstart=ksz&interfaceid=101",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.antikvarium.hu/konyv/peter-harrison-mary-harrison-misztikus-erok-51027-0",
"items": [
{
"itemType": "book",
"title": "Misztikus erők: Mistic forces/testen túli tapasztalatok",
"creators": [
{
"firstName": "Harrison",
"lastName": "Peter",
"creatorType": "author"
},
{
"firstName": "Harrison",
"lastName": "Mary",
"creatorType": "author"
},
{
"firstName": "Nóra",
"lastName": "Rohonczi",
"creatorType": "author"
}
],
"ISBN": "9789637994043",
"language": "Magyar",
"libraryCatalog": "Antikvarium.hu",
"numPages": "274",
"place": "Budapest",
"publisher": "Pesti Szalon Könyvkiadó",
"shortTitle": "Misztikus erők",
"attachments": [
{
"title": "Antikvarium.hu Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [
{
"note": "TARTALOM\nKöszönetnyilvánítás\t3\nElőszó\t5\nBevezetés\t9\nMi a TTT?\t13\nA fény\t23\nA magaslati nézőpont\t35\nA mennyországban?\t49\nA gyógyító erő\t55\nKülönös hatóerők\t75\nÁllatok\t91\nZene\t105\nA határterület\t111\nIdőutazások\t121\nA döntés\t141\nAz ezüstzsinór\t151\nEgybeesések\t163\nA fátum\t173\nMenekülés\t193\nGyermekek\t201\nA halálfélelem legyőzése\t213\nMegérzések\t231\nAz okkultizmus veszélyei\t235\nA lélek illata\t247\nAngyalok\t257\nPozitív végkövetkeztetések\t273"
}
],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://www\.hsdl\.org//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
const sourceRe = /([^(]+).*v\.([^\s,]+).*no\.([^\s,]+).*/;
const pagesRe = /p\.(\S+)/;
function detectWeb(doc, url) {
if (url.includes('?abstract')) {
for (let tr of doc.querySelectorAll('.hsdl-content tr')) {
if (text(tr, '.label').includes('Report Number:')) {
return "report";
}
if (text(tr, '.label').includes('Source:')
&& sourceRe.test(text(tr, 'td:not(.label)'))) {
return "journalArticle";
}
if (text(tr, '.label').includes('Series:')
&& text(tr, 'td:not(.label)').toLowerCase().includes('theses')) {
return "thesis";
}
}
return "document";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.new_result');
for (let row of rows) {
let href = attr(row, 'a[href^="?abstract"]', 'href');
let title = ZU.trimInternal(text(row, '.results_title'));
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
let item = new Zotero.Item('document');
item.title = text(doc, 'h2 > a').replace(/\[.*$/, '');
item.abstractNote = text(doc, '.hsdl-content > p').replace(/^"|"$/g, '');
let mimeType = 'application/pdf';
for (let row of doc.querySelectorAll('.hsdl-content > table tr')) {
let label = text(row, '.label');
if (label == 'Author:') {
item.creators = [...row.querySelectorAll('a')]
.map(link => ZU.cleanAuthor(link.textContent, 'author', true));
}
else {
let value = text(row, 'td:not(.label)');
switch (label) {
case 'Publisher:':
item.publisher = value;
break;
case 'Date:':
item.date = value;
break;
case 'Copyright:':
item.rights = value;
break;
case 'Media Type:':
mimeType = value;
break;
case 'Source:': {
let matches = value.match(sourceRe);
if (matches) {
item.itemType = 'journalArticle';
[, item.publicationTitle, item.volume, item.issue] = matches;
}
else {
item.extra = (item.extra || '') + `\nHSDL Source: ${value}`;
}
item.pages = (value.match(pagesRe) || [])[1] || item.pages;
break;
}
case 'URL:':
item.DOI = ZU.cleanDOI(value);
break;
case 'Report Number:':
item.itemType = 'report';
item.reportNumber = value;
break;
case 'Series:':
if (value.toLowerCase().includes('theses')) {
item.itemType = 'thesis';
}
}
}
}
item.url = url.replace(/#.*$/, '');
item.attachments.push({
title: 'Full Text PDF',
mimeType,
url: attr(doc, 'h2 > a', 'href')
});
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.hsdl.org/?abstract&did=453776",
"items": [
{
"itemType": "document",
"title": "Insider Threat Study: Computer System Sabotage in Critical Infrastructure Sectors",
"creators": [
{
"firstName": "Michelle M.",
"lastName": "Keeney",
"creatorType": "author"
},
{
"firstName": "Dawn M.",
"lastName": "Cappelli",
"creatorType": "author"
},
{
"firstName": "Eileen",
"lastName": "Kowalski",
"creatorType": "author"
}
],
"date": "2005-05",
"abstractNote": "Since 2001, the Secret Service and CERT have collaborated on multiple efforts to identify, assess, and manage potential threats to, and vulnerabilities of, data and critical systems. The collaboration represents an effort to augment security and protective practices through two components: Finding ways to identify, assess, and mitigate cyber security threats to data and critical systems that impact physical security or threaten the mission of the organization; Finding ways to identify, assess, and manage individuals who may pose a threat to those data or critical systems. The overall goal of the collaborative effort is to develop information and tools that can help private industry, government, and law enforcement identify cyber security issues that can impact physical or operational security and to assess potential threats to, and vulnerabilities in, data and critical systems.",
"libraryCatalog": "Homeland Security Digital Library",
"publisher": "Carnegie-Mellon University. CERT Coordination Center",
"rights": "2004 Carnegie Mellon University. Posted here with permission. Documents are for personal use only and not for commercial profit.",
"shortTitle": "Insider Threat Study",
"url": "https://www.hsdl.org/?abstract&did=453776",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.hsdl.org/?abstract&did=460696",
"items": [
{
"itemType": "journalArticle",
"title": "Keeping Reactors Safe from Sabotage",
"creators": [
{
"firstName": "Donald G.",
"lastName": "Rose",
"creatorType": "author"
},
{
"firstName": "Roy A.",
"lastName": "Haarman",
"creatorType": "author"
},
{
"firstName": "William A.",
"lastName": "Bradley",
"creatorType": "author"
}
],
"date": "1981",
"abstractNote": "Protecting American nuclear power plants from internal sabotage and external attack has long been a major concern of the United States Nuclear Regulatory Commission. Studies performed in the early seventies indicated that nuclear power plants were not attractive targets for terrorism and that their construction was highly resistant to damage, yet there were conditions under which the radioactive containment features could be sabotaged. This conclusion prompted the Nuclear Regulatory Commission, in February 1977, to publish a revised section to the Code of Federal Regulations, Title 10 Part 73.55. The new requirements were aimed specifically at countering any form of sabotage that could release radioactive material and thereby create a hazard for the general public. But implementation of the new law required reviewing and upgrading the security plans for more than 70 nuclear power plants each with unique nuclear and secondary systems and unique geographic and demographic environments. (There is no standard nuclear plant in the United States. Although a single manufacturer may provide the basic reactor system for a group of plants, the remainder of each plant is a composite provided by various contractors.)...Altogether the review process has had a profound effect upon the planning for security at nuclear power plants, especially in defining what we are trying to protect, what kinds of threats we face, and how we can realize the largest return for our investment in nuclear plant security. The review process also has implications for nuclear plant safety.",
"issue": "2",
"libraryCatalog": "Homeland Security Digital Library",
"pages": "121-131",
"publicationTitle": "Los Alamos Science",
"rights": "Public Domain",
"url": "https://www.hsdl.org/?abstract&did=460696",
"volume": "2",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.hsdl.org/?abstract&did=16871",
"items": [
{
"itemType": "document",
"title": "Proceedings of a Workshop on Deterring CyberAttacks: Informing Strategies and Developing Options for U.S. Policy",
"creators": [
{
"lastName": "National Research Council (U. S.). Computer Science and Telecommunications Board",
"creatorType": "author"
},
{
"lastName": "National Research Council (U. S.). Division on Engineering and Physical Sciences",
"creatorType": "author"
},
{
"lastName": "National Research Council (U. S.). Policy and Global Affairs",
"creatorType": "author"
}
],
"date": "2010",
"abstractNote": "At the request of the Office of the Director of National Intelligence, the National Research Council \"undertook a two-phase project aimed to foster a broad, multidisciplinary examination of strategies for deterring cyberattacks on the United States and of the possible utility of these strategies for the U.S. government.\" The first phase provided basic information needed to understand the problem and shape questions regarding cyber attacks, while the second phase selected experts to write papers on the questions raised in the first phase. At June 10-11, 2010 workshop in Washington, D.C., the authors discussed and revised their papers.",
"extra": "HSDL Source: Workshop on Deterring CyberAttacks: Informing Strategies and Developing Options for U.S. Policy. Washington, DC. June 10-11, 2010",
"libraryCatalog": "Homeland Security Digital Library",
"publisher": "National Academies Press (U.S.)",
"rights": "2010 National Academy of Sciences",
"shortTitle": "Proceedings of a Workshop on Deterring CyberAttacks",
"url": "https://www.hsdl.org/?abstract&did=16871",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.hsdl.org/?abstract&did=463569",
"items": [
{
"itemType": "report",
"title": "Land Mobile Radio Channel Usage Measurements at the 1996 Summer Olympic Games",
"creators": [
{
"firstName": "Frank H.",
"lastName": "Sanders",
"creatorType": "author"
},
{
"firstName": "G. R. (Gregory R. )",
"lastName": "Hand",
"creatorType": "author"
},
{
"firstName": "Vince S.",
"lastName": "Lawrence",
"creatorType": "author"
}
],
"date": "1998-02",
"abstractNote": "The National Telecommunications and Information Administration (NTIA) is responsible for managing the Federal Government's use of the radio spectrum. In discharging this responsibility, NTIA uses the ITS radio spectrum measurement system and portable measurement systems to collect data for spectrum utilization assessments. This report details an NTIA project to measure and analyze land mobile radio channel usage statistics in the metropolitan area of Atlanta, Georgia, before, during, and after the 1996 Summer Olympic Games. [...] In summary, the results of the 1996 Summer Olympic Games channel usage measurements indicate that, in the event of natural or man-made public emergencies, a land mobile radio spectrum capacity capable of accommodating two to three times ordinary channel usage levels may be required to meet emergency needs.",
"institution": "United States. Department of Commerce",
"libraryCatalog": "Homeland Security Digital Library",
"reportNumber": "NTIA Report 98-357",
"rights": "Public Domain",
"url": "https://www.hsdl.org/?abstract&did=463569",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.hsdl.org/?abstract&did=829336",
"items": [
{
"itemType": "thesis",
"title": "Employment of Operational Art: 'Daesh's' Offense into Iraq During the Summer of 2014",
"creators": [
{
"firstName": "Moises",
"lastName": "Jimenez",
"creatorType": "author"
}
],
"date": "2019-05-23",
"abstractNote": "From the Thesis Abstract: \"In the Summer of 2014, the world learned of a new horror as the Islamic State of Iraq and the Levant (ISIL) stormed its way into the sovereign state of Iraq. Fueled by a religious fervor and united through Salafist dogma, ISIL overwhelmed Iraqi Security Forces (ISF) through use of tempo and deliberate lines of operation to achieve strategic aims. Within a two-month period, ISIL advanced hundreds of kilometers, secured multiple population clusters, and established a governmental regime to replace the Iraqi government. With the withdrawal of US combat power from Iraq, and the lucrative investment of Iraqi forces, multiple questions remain unanswered. How could a group of jihadists, with limited training, armed with technical vehicles and various small arms weapons overwhelm the security forces of the Iraqi government? [...] This monograph examines the presence of lines of operation, tempo, center of gravity, lines of effort, phasing and transitions during ISIL's offensive and consolidation activities. The monograph discusses ISIL's adherence to Salafist ideologies and the unique requirements to maintain a global caliphate. United by their interpretations of pure Sunni Islam, members of ISIL can converge both lethal and non-lethal action against belligerents. The monograph concludes with the understanding of ISIL's deliberate arrangement of lethal and non-lethal activity to accomplish strategic objectives.",
"libraryCatalog": "Homeland Security Digital Library",
"rights": "Public Domain",
"shortTitle": "Employment of Operational Art",
"university": "U.S. Army Command and General Staff College. School of Advanced Military Studies",
"url": "https://www.hsdl.org/?abstract&did=829336",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.hsdl.org/?abstract&did=750070",
"items": [
{
"itemType": "document",
"title": "Simple Sabotage Field Manual",
"creators": [],
"date": "1944-01-17",
"abstractNote": "This historical document was originally published by the United States Office of Strategic Services (OSS; now the Central Intelligence Agency) in 1944, for use by OSS agents in motivating or recruiting potential foreign saboteurs. Agents were granted permission to print and disseminate portions of the document as needed. The since-declassified booklet describes ways for civilians to inflict sabotage through ordinary means, so as to minimize undue attention. According to the document, saboteur-recruits were most often U.S. sympathizers keen to disrupt war efforts against the U.S. during World War Two. The booklet contains instructions for destabilizing or reducing progress and productivity by non-violent means. The booklet is separated into headings that correspond to specific audiences, including: \"Managers and Supervisors\"; \"Employees\"; \"Organizations and Conferences\"; \"Communications\"; \"Transportation\" (Railways, Automotive, and Water); \"General Devices for Lowering Morale and Creating Confusion\"; and \"Electric Power.",
"libraryCatalog": "Homeland Security Digital Library",
"publisher": "United States. War Department. Strategic Services Unit",
"rights": "Public Domain",
"url": "https://www.hsdl.org/?abstract&did=750070",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.hsdl.org/?search=&searchfield=&all=drought&collection=documents&submitted=Search",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.hsdl.org/?abstract&did=810249",
"items": [
{
"itemType": "journalArticle",
"title": "MMWR: Morbidity and Mortality Weekly Report: Surveillance Summaries, September 8, 2017",
"creators": [],
"date": "2017-09-08",
"abstractNote": "Alternate Title: BRCA Genetic Testing and Receipt of Preventive Interventions Among Women Aged 18-64 Years with Employer-Sponsored Health Insurance in Nonmetropolitan and Metropolitan Areas - United States, 2009-2014",
"issue": "15",
"libraryCatalog": "Homeland Security Digital Library",
"publicationTitle": "MMWR: Morbidity and Mortality Weekly Report",
"rights": "Public Domain",
"shortTitle": "MMWR",
"url": "https://www.hsdl.org/?abstract&did=810249",
"volume": "66",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Philipp Zumstein^https?://(www\.)?lrb\.co\.uk/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2020 Philipp Zumstein
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (/\/the-paper\/v\d+\/n\d+\//.test(url)) {
return "magazineArticle";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('article .title a, a.toc-item');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setHandler('itemDone', function (obj, item) {
// clean the title as this otherwise also contains
// the author and publication information
item.title = text('h1 .title') || item.title;
let volumeIssue = url.match(/\/the-paper\/v(\d+)\/n(\d+)\//);
if (volumeIssue) {
item.volume = volumeIssue[1];
item.issue = volumeIssue[2];
}
item.ISSN = "0260-9592";
item.publicationTitle = "London Review of Books";
let reviewedTitle = text('.article-reviewed-item-title');
let reviewedSubTitle = text('.article-reviewed-item-subtitle');
if (reviewedTitle) {
if (reviewedSubTitle) {
reviewedTitle += ' ' + reviewedSubTitle;
}
item.extra = "reviewed-title: " + reviewedTitle;
}
for (let reviewedAuthor of doc.querySelectorAll('.article-reviewed-item .by a')) {
item.creators.push(ZU.cleanAuthor(reviewedAuthor.textContent, 'reviewedAuthor'));
}
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.itemType = "magazineArticle";
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.lrb.co.uk/the-paper/v21/n21",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.lrb.co.uk/the-paper/v21/n21/slavoj-zizek/attempts-to-escape-the-logic-of-capitalism",
"items": [
{
"itemType": "magazineArticle",
"title": "Attempts to Escape the Logic of Capitalism",
"creators": [
{
"firstName": "Slavoj",
"lastName": "Žižek",
"creatorType": "author"
},
{
"firstName": "John",
"lastName": "Keane",
"creatorType": "reviewedAuthor"
}
],
"date": "1999-10-28 00:00:00",
"ISSN": "0260-9592",
"extra": "reviewed-title: Václav Havel: A Political Tragedy in Six Acts",
"issue": "21",
"language": "en",
"libraryCatalog": "www.lrb.co.uk",
"publicationTitle": "London Review of Books",
"url": "https://www.lrb.co.uk/the-paper/v21/n21/slavoj-zizek/attempts-to-escape-the-logic-of-capitalism",
"volume": "21",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "1946-1999"
},
{
"tag": "Biography"
},
{
"tag": "Czech Republic"
},
{
"tag": "Drama"
},
{
"tag": "Political systems"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.lrb.co.uk/search-results?search=terminator&all=&any=&exclude=&phrase=&dateFrom=&dateTo=&sort=relevance#",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.lrb.co.uk/the-paper/v41/n22/jonathan-ree/the-young-man-one-hopes-for",
"items": [
{
"itemType": "magazineArticle",
"title": "The Young Man One Hopes For",
"creators": [
{
"firstName": "Jonathan",
"lastName": "Rée",
"creatorType": "author"
},
{
"firstName": "Brian",
"lastName": "McGuinness",
"creatorType": "reviewedAuthor"
},
{
"firstName": "Peter",
"lastName": "Winslow",
"creatorType": "reviewedAuthor"
}
],
"date": "2019-11-19 14:58:10",
"ISSN": "0260-9592",
"abstractNote": "Wittgenstein wasn’t particularly impressed by Bertrand Russell’s adoration. If his philosophical capacities were...",
"extra": "reviewed-title: Wittgenstein’s Family Letters: Corresponding with Ludwig",
"issue": "22",
"language": "en",
"libraryCatalog": "www.lrb.co.uk",
"publicationTitle": "London Review of Books",
"url": "https://www.lrb.co.uk/the-paper/v41/n22/jonathan-ree/the-young-man-one-hopes-for",
"volume": "41",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Biography"
},
{
"tag": "Ludwig"
},
{
"tag": "Philosophy"
},
{
"tag": "Wittgenstein"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://lrb.co.uk/the-paper/v43/n18/anthony-grafton/fake-it-till-you-make-it",
"items": [
{
"itemType": "magazineArticle",
"title": "Fake it till you make it",
"creators": [
{
"firstName": "Anthony",
"lastName": "Grafton",
"creatorType": "author"
},
{
"firstName": "Dennis",
"lastName": "Duncan",
"creatorType": "reviewedAuthor"
}
],
"date": "2021-09-23 00:00:00",
"ISSN": "0260-9592",
"abstractNote": "The index gave its users formidable power to find and quote adages and examples, narratives and poems, scriptural and...",
"extra": "reviewed-title: Index, A History of the",
"issue": "18",
"language": "en",
"libraryCatalog": "lrb.co.uk",
"publicationTitle": "London Review of Books",
"url": "https://lrb.co.uk/the-paper/v43/n18/anthony-grafton/fake-it-till-you-make-it",
"volume": "43",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "History of ideas"
},
{
"tag": "Literature & Criticism"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Timotheus Kim^https?://www\.ceeol\.com/search/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Timotheus Kim
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/article-detail?')) return "journalArticle";
else if (getSearchResults(doc, true)) return "multiple";
else return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.description a, .article-details > h3 > a');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), invokeEMTranslator);
});
}
else {
invokeEMTranslator(doc, url);
}
}
function invokeEMTranslator(doc) {
var translator = Zotero.loadTranslator("web");
// Embedded Metadata
translator.setTranslator("951c027d-74ac-47d4-a107-9c3069ab7b48");
translator.setDocument(doc);
translator.setHandler("itemDone", function (t, i) {
postProcess(doc, i);
});
translator.translate();
}
// scraping abstractNote from HTML, that is not included in Embedded Metadata
function postProcess(doc, item) {
let abstractEntry = ZU.xpathText(doc, '//p[@class="summary"]');
if (!item.abstractNote && abstractEntry) item.abstractNote = abstractEntry;
for (let i = 0; i < item.attachments.length; i++) {
if (item.attachments[i].title == 'Snapshot') {
item.attachments.splice(i, 1);
break;
}
}
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.ceeol.com/search/article-detail?id=934009",
"items": [
{
"itemType": "journalArticle",
"title": "God’s Holy Ordinance",
"creators": [
{
"firstName": "Robert",
"lastName": "Benne",
"creatorType": "author"
}
],
"date": "2020",
"ISSN": "2450-4955, 2451-2141",
"abstractNote": "Summary/Abstract: In this article, I argue that the church must build up its theology of marriage in a more disciplined manner because the culture no longer sustains the Christian notion. In making a substantive argument I rely on the Lutheran “two ways that God reigns” approach in which we share “places of responsibility” with all humans, but in which the Christian virtues of faith, love, and hope transform those places into genuine Christian callings. I then contend strongly for the continued rejection of same-sex marriage among orthodox Christians. I conclude with what I hope is a compassionate pastoral approach—gracious tolerance—toward homosexual Christians.",
"issue": "6",
"language": "English",
"libraryCatalog": "www.ceeol.com",
"pages": "7-21",
"publicationTitle": "Philosophy and Canon Law",
"url": "https://www.ceeol.com/search/article-detail?id=934009",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "faith"
},
{
"tag": "gracious tolerance"
},
{
"tag": "hope"
},
{
"tag": "individualism"
},
{
"tag": "love"
},
{
"tag": "places of responsibility"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.ceeol.com/search/article-detail?id=945560",
"items": [
{
"itemType": "journalArticle",
"title": "Zastosowanie modelu struktury kapitału Mertona Howarda Millera w warunkach zmienności polityki fiskalnej w Polsce w latach 2018–2019",
"creators": [
{
"firstName": "Slawomir",
"lastName": "Antkiewicz",
"creatorType": "author"
}
],
"date": "2019",
"ISSN": "2300-6102, 2353-9496",
"abstractNote": "Summary/Abstract: An essential condition for the proper functioning of Polish enterprises is the stability of tax solutions. However, over the years 2018–2019, several variants of tax changes appeared, which may have a significant impact on the capital structure of enterprises. The implementation of one of the variants will create specific preferences for the use of equity or foreign capital. The purpose of the papers is to analyse the impact of possible changes in the tax rates on the decisions of management boards of enterprises regarding the methods of financing Polish enterprises and shaping their capital structure. To achieve the research goal, the paper presents the capital structure and the evolution of theoretical concepts regarding the preferences for financing enterprises with shares or bonds. Particular attention was paid to Merton Howard Miller’s model, which argued that enterprises can use interest tax shields that reduce the basis for calculating income tax. The analytical-descriptive and comparative methods were used. Scenarios of changes in taxation were presented and preferences for the use of equity or foreign capital were demonstrated using the Miller model. The research results indicate that in the current legal situation there are preferences for financing an entity with corporate bonds and if the most realistic scenario of liquidating the tax levied on interest paid to bond holders plays out, these preferences will further increase.",
"issue": "1",
"language": "Polish",
"libraryCatalog": "www.ceeol.com",
"pages": "7-23",
"publicationTitle": "International Business and Global Economy",
"url": "https://www.ceeol.com/search/article-detail?id=945560",
"volume": "38",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "bonds"
},
{
"tag": "capital structure"
},
{
"tag": "debt"
},
{
"tag": "equity capital"
},
{
"tag": "shares"
},
{
"tag": "tax shield"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.ceeol.com/search/article-detail?id=925530",
"items": [
{
"itemType": "journalArticle",
"title": "Az automatizálás munkaerőpiaci és munkajogi kérdései",
"creators": [],
"date": "2020",
"ISSN": "2734-6226, 2734-7095, 2734-6226",
"abstractNote": "Summary/Abstract: The fundamental value of labour law at all times is that it provides security in the economic sense and thus creates predictability: on the one hand, with rules protecting the worker and, on the other hand, by building a social network on the part of the state in case the worker is unable to work. In addition, it is crucial that labour law regulations can properly adapt to the economic and social changes of the 21st century, to the emergence of new trends. The development of robotics and artificial intelligence will undoubtedly have an impact on the dynamic and static elements of the work environment, the labour market, and the labour relationship, thus generating new challenges.",
"issue": "4",
"language": "Hungarian",
"libraryCatalog": "www.ceeol.com",
"pages": "63-76",
"publicationTitle": "Erdélyi Jogélet",
"url": "https://www.ceeol.com/search/article-detail?id=925530",
"volume": "III",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "artificial intelligence"
},
{
"tag": "automation"
},
{
"tag": "occupational safety"
},
{
"tag": "responsibility"
},
{
"tag": "robotics"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.ceeol.com/search/article-detail?id=934330",
"items": [
{
"itemType": "journalArticle",
"title": "Pavao Maček, Pogledići i Malenići. Dva plemenita roda od Kurilovca: S priloženim rodoslovnim stablima",
"creators": [
{
"firstName": "Ivan",
"lastName": "Jurković",
"creatorType": "author"
}
],
"date": "2020",
"ISSN": "0351-9767, 1848-9087",
"abstractNote": "Summary/Abstract: Book-Review: Pavao Maček, Pogledići i Malenići. Dva plemenita roda od Kurilovca: S priloženim rodoslovnim stablima, Zagreb: Družtvo za povjestnicu Zagrebačke nadbiskupije “Tkalčić”, 2019, 574 stranice i dva rodoslovna stabla. Review by Ivan Jurković.",
"issue": "58",
"language": "Croatian",
"libraryCatalog": "www.ceeol.com",
"pages": "154-156",
"publicationTitle": "Povijesni prilozi",
"shortTitle": "Pavao Maček, Pogledići i Malenići. Dva plemenita roda od Kurilovca",
"url": "https://www.ceeol.com/search/article-detail?id=934330",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Pavao Maček"
},
{
"tag": "Pogledići and Malenići"
},
{
"tag": "genealogical trees"
},
{
"tag": "two noble families from Kurilovac"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.ceeol.com/search/journal-detail?id=1266",
"defer": true,
"items": "multiple"
},
{
"type": "web",
"url": "https://www.ceeol.com/search/journal-detail?id=761",
"defer": true,
"items": "multiple"
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://openknowledge\.worldbank\.org//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/handle/') && doc.querySelector('.ds-div-head')) {
switch (text(doc, '.document-type')) {
case 'Book':
return 'book';
case 'Journal Article':
return 'journalArticle';
case 'Speech':
return 'presentation';
default:
return 'report';
}
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.item-metadata h4 > a');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
if (!item.title.includes(': ') && text(doc, '.ds-div-head').includes(': ')) {
item.title = text(doc, '.ds-div-head').replace(' : ', ': ');
}
if (item.abstractNote) {
item.abstractNote = item.abstractNote
.replace(/\r\n\s*/g, ' ');
}
for (let creator of item.creators) {
if ((creator.firstName && creator.firstName.startsWith('World'))
|| (creator.lastName && creator.lastName.includes('Group'))) {
creator.lastName = creator.firstName + ' ' + (creator.lastName || '');
delete creator.firstName;
creator.fieldMode = 1;
}
}
item.tags = item.tags.map(tag => ZU.capitalizeTitle(tag, true));
item.attachments = item.attachments.filter(at => at.title != 'Snapshot');
if (item.reportType == 'Report') {
delete item.reportType;
}
item.publisher = 'World Bank';
item.place = 'Washington, DC';
// let item.publisher take precedence
delete item.institution;
delete item.company;
delete item.label;
delete item.distributor;
// not a real DOI
if (item.DOI && item.DOI.endsWith('/null')) {
delete item.DOI;
if (item.extra) {
item.extra = item.extra.replace(/^DOI:.*$/m, '');
}
}
if (item.itemType == 'journalArticle' && !item.volume && !item.issue) {
for (let col of doc.querySelectorAll('.metadata-col')) {
if (text(col, 'h5').trim() == 'Journal') {
let rest = col.querySelector('h5').nextSibling;
if (rest) {
rest = rest.textContent;
[, item.volume, item.issue, item.pages]
= rest.match(/([^(\s]+)\(([^)]+)\):(\S+)/) || [];
}
break;
}
}
}
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.itemType = detectWeb(doc, url);
trans.addCustomFields({
'DCTERMS.bibliographicCitation': 'publicationTitle'
});
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://openknowledge.worldbank.org/handle/10986/36015",
"items": [
{
"itemType": "report",
"title": "At the Front Line: Reflections on the Bank’s Work with China over Forty Years, 1980-2020",
"creators": [
{
"lastName": "World Bank",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "2021-07-23",
"abstractNote": "This volume contains written contributions from some of the key actors involved on both the Chinese and the World Bank sides in the past four decades of partnership. It is clear that the World Bank from the very beginning provided honest and evidence-based advice to China, but China was always in the driver’s seat in structuring the relationship and in determining what to do (and what not to do). Periodically, the World Bank engaged in national policy debates, during the Bashan Boat Conference, at Dalian, then with the China 2020 and China 2030 reports, and the subsequent series of flagships produced jointly with the Development Research Center under the State Council. For much of the time, however, World Bank’s impact was at the local level through demonstration projects and reform pilots that China studied, adapted, and later scaled. Finally, an increasingly important theme of the partnership in the last decade concerns World Bank’s cooperation with China globally, through International Development Association (IDA), South-South learning, and ongoing discussions over good practices in international development finance. As China’s global economic and financial heft continues to grow, this theme is likely to become increasingly important and require further adaptation on both sides. The first part contains the contributions of World Bank Country Directors in chronological order by decade: Caio Koch-Weser, Edwin Lim for the 1980s; Javed Burki, Pieter Bottelier, and Nick Hope for the 1990s; Yukon Huang and David Dollar for the 2000s; and Klaus Rohland and Bert Hofman for the 2010s. The second part contains the contributions of the Chinese authors, which are organized by themes. The third essay speaks to the shift in World Bank’s program to support China’s climate action following the Paris Agreement, with lessons that are highly relevant for the future evolution of the partnership. The fourth contribution is from Yang Yingming, former Executive Director for China at the World Bank, and now back with the Ministry of Finance, and reflects on the interaction between World Bank’s knowledge and financial cooperation with China, drawing lessons for other countries and for the future of the partnership.",
"institution": "World Bank",
"language": "English",
"libraryCatalog": "openknowledge.worldbank.org",
"place": "Washington, DC",
"rights": "http://creativecommons.org/licenses/by/3.0/igo",
"shortTitle": "At the Front Line",
"url": "https://openknowledge.worldbank.org/handle/10986/36015",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Country Partnership"
},
{
"tag": "Development Cooperation"
},
{
"tag": "Economic Reform"
},
{
"tag": "Environmental Sustainability"
},
{
"tag": "Greenhouse Gas Emissions"
},
{
"tag": "Integrated Rural Development"
},
{
"tag": "Paris Agreement"
},
{
"tag": "Poverty Alleviation"
},
{
"tag": "World Bank Group Knowledge"
},
{
"tag": "World Bank Group Lending"
},
{
"tag": "World Bank Group Portfolio"
},
{
"tag": "World Bank Group Strategy"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://openknowledge.worldbank.org/handle/10986/21531",
"items": [
{
"itemType": "report",
"title": "Serbia Judicial Functional Review",
"creators": [
{
"lastName": "World Bank Group",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "2014-10-01",
"abstractNote": "This functional review presents a comprehensive assessment of the current functioning of Serbia's judicial system, along with options and recommendations to inform Serbia's justice reform initiatives in view of the requirements of Chapter 23 of the Acquis Communautaire. The review comprises an external performance assessment and an internal performance assessment. The external performance assessment (Part 1) examines how well the Serbian judicial system serves its citizens in terms of efficiency, quality, and access to justice services. The internal performance assessment (Part 2) examines the inner workings of the system, and how governance and management, financial and human resources, ICT, and infrastructure are managed for service delivery. A distinct feature of this Review is its emphasis on data and analysis. The data collection was undertaken in the first half of 2014, and the preliminary findings were discussed with stakeholders and international partners through July, August and September of 2014. Overall, Serbia's judicial system performs at a lower standard than that of EU Member States. Of the many findings and recommendations outlined in the Report, the Functional Review team suggests that leaders focus on the following seven priorities which can set the Serbian judiciary on a critical path to performance improvement: 1) Develop a performance framework that tracks the performance of courts and PPOs against a targeted list of key performance indicators; 2) Ensure that courts use the full functionality of their case management systems to improve consistency of practice and support evidence-based decision-making; 3) Develop a comprehensive continuing training program for judges, prosecutors and court staff; 4) Reform procedural laws to simplify the service of process, and start simplifying business processes; 5) Eliminate the backlog of old utility bill enforcement cases; 6) Develop a more realistic budget within the existing resource envelope; and 7) Adjust the resource mix over time by gradually reducing the wage bill and increasing investments in productivity and innovation. This report was funded by the Multi-Donor Trust Fund for Justice Sector Support in Serbia (MDTF-JSS).",
"institution": "World Bank",
"language": "en_US",
"libraryCatalog": "openknowledge.worldbank.org",
"place": "Washington, DC",
"rights": "http://creativecommons.org/licenses/by/3.0/igo/",
"url": "https://openknowledge.worldbank.org/handle/10986/21531",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Access to Justice"
},
{
"tag": "Access to Justice"
},
{
"tag": "Access to Justice"
},
{
"tag": "Access to Justice"
},
{
"tag": "Administrative Law"
},
{
"tag": "Adoption"
},
{
"tag": "Alimony"
},
{
"tag": "Bailiff"
},
{
"tag": "Bailiffs"
},
{
"tag": "Benefit"
},
{
"tag": "Benefits"
},
{
"tag": "Biased Laws"
},
{
"tag": "Case Law"
},
{
"tag": "Child"
},
{
"tag": "Child Custody"
},
{
"tag": "Children"
},
{
"tag": "Civil Law"
},
{
"tag": "Civil Rights"
},
{
"tag": "Compensation"
},
{
"tag": "Compensations"
},
{
"tag": "Constitutional Court"
},
{
"tag": "Corruption"
},
{
"tag": "Court"
},
{
"tag": "Courts"
},
{
"tag": "Crime"
},
{
"tag": "Crimes"
},
{
"tag": "Criminal"
},
{
"tag": "Criminal Laws"
},
{
"tag": "Custody"
},
{
"tag": "Damage"
},
{
"tag": "Damages"
},
{
"tag": "Detainees"
},
{
"tag": "Disabilities"
},
{
"tag": "Disability"
},
{
"tag": "Discrimination"
},
{
"tag": "Dismissal"
},
{
"tag": "Dismissals"
},
{
"tag": "Divorce"
},
{
"tag": "Domestic Violence"
},
{
"tag": "Equality"
},
{
"tag": "Eu"
},
{
"tag": "Family"
},
{
"tag": "Family Law"
},
{
"tag": "Family Violence"
},
{
"tag": "Family Violence"
},
{
"tag": "Fundamental Rights"
},
{
"tag": "Gender"
},
{
"tag": "Gender Differences"
},
{
"tag": "Gender Equity"
},
{
"tag": "Home"
},
{
"tag": "House"
},
{
"tag": "Human Rights"
},
{
"tag": "Implementation of Law"
},
{
"tag": "Implementation of Laws"
},
{
"tag": "Imprisonment"
},
{
"tag": "Institutional Capacity"
},
{
"tag": "Judge"
},
{
"tag": "Judges"
},
{
"tag": "Judicial Reform"
},
{
"tag": "Justice"
},
{
"tag": "Labor Law"
},
{
"tag": "Law"
},
{
"tag": "Laws"
},
{
"tag": "Layoffs"
},
{
"tag": "Legal Aid"
},
{
"tag": "Legal Challenge"
},
{
"tag": "Legal Changes"
},
{
"tag": "Legal Reform"
},
{
"tag": "Legal Reforms"
},
{
"tag": "Legal Services"
},
{
"tag": "Legislation"
},
{
"tag": "Liberty"
},
{
"tag": "Literacy"
},
{
"tag": "Notaries"
},
{
"tag": "Notary"
},
{
"tag": "Offence"
},
{
"tag": "Offences"
},
{
"tag": "Offender"
},
{
"tag": "Offense"
},
{
"tag": "Offenses"
},
{
"tag": "Partners"
},
{
"tag": "Pensions"
},
{
"tag": "Prison"
},
{
"tag": "Prisoner"
},
{
"tag": "Prisoners"
},
{
"tag": "Prisons"
},
{
"tag": "Privacy"
},
{
"tag": "Property"
},
{
"tag": "Refugees"
},
{
"tag": "Residence"
},
{
"tag": "Rule of Law"
},
{
"tag": "Sanction"
},
{
"tag": "Sanctions"
},
{
"tag": "Victim"
},
{
"tag": "Victims"
},
{
"tag": "War Crime"
},
{
"tag": "War Crimes"
},
{
"tag": "Will"
},
{
"tag": "Woman"
},
{
"tag": "Women"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://openknowledge.worldbank.org/handle/10986/35599",
"items": [
{
"itemType": "book",
"title": "At Your Service?: The Promise of Services-Led Development",
"creators": [
{
"firstName": "Gaurav",
"lastName": "Nayyar",
"creatorType": "author"
},
{
"firstName": "Mary",
"lastName": "Hallward-Driemeier",
"creatorType": "author"
},
{
"firstName": "Elwyn",
"lastName": "Davies",
"creatorType": "author"
}
],
"date": "2021-09-15",
"ISBN": "9781464816710",
"abstractNote": "Throughout history, industrialization has been synonymous with development. However, the trend of premature deindustrialization and the spread of automation technologies associated with Industry 4.0 has raised concerns that the development model based on export-led manufacturing seen in East Asia will be harder for hitherto less industrialized countries to replicate in the future. Can services-led development be an alternative? Contrary to conventional wisdom, the features of manufacturing that were considered uniquely conducive for productivity growth - such as international trade, scale economies, inter-sectoral linkages, and innovation - are increasingly shared by the services sector. But services are not monolithic. The twin gains of productivity growth and large-scale job creation for relatively low-skilled workers are less likely to come together in any given services subsector. The promise of services-led development in the future will be strengthened to the extent that technological change reduces the trade-off between productivity and jobs, and growth opportunities in services with potential for high productivity do not depend on a manufacturing base. Considering technological change and linkages between sectors while differentiating across types of services, this book assesses the scope of a services-driven development model and policy directions that maximize its potential.",
"extra": "DOI: 10.1596/978-1-4648-1671-0",
"language": "en",
"libraryCatalog": "openknowledge.worldbank.org",
"place": "Washington, DC",
"publisher": "World Bank",
"rights": "http://creativecommons.org/licenses/by/3.0/igo",
"shortTitle": "At Your Service?",
"url": "https://openknowledge.worldbank.org/handle/10986/35599",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Deindustrialization"
},
{
"tag": "Digital Technology"
},
{
"tag": "Industrialization"
},
{
"tag": "Job Creation"
},
{
"tag": "Services Industry"
},
{
"tag": "Services Trade"
},
{
"tag": "Technology Adoption"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://openknowledge.worldbank.org/handle/10986/36154",
"items": [
{
"itemType": "journalArticle",
"title": "Understanding Nonresponse Rates: Insights from 600,000 Opinion Surveys",
"creators": [
{
"firstName": "Germán",
"lastName": "Reyes",
"creatorType": "author"
}
],
"date": "2020-02",
"DOI": "10.1093/wber/lhz040",
"ISSN": "1564-698X",
"abstractNote": "Despite the central role of surveys in empirical research, academics have not paid enough attention to the factors that affect response rates. This is especially concerning since survey response rates—of both household and opinion surveys—have been declining over time (Meyer, Mok, and Sullivan, 2015), which might lead to distorted survey results. This paper explores how the underlying design of each survey—such as its length and the day of the week in which the survey was conducted—affects the response rates of the survey.",
"language": "en",
"libraryCatalog": "openknowledge.worldbank.org",
"publicationTitle": "World Bank Economic Review",
"rights": "http://creativecommons.org/licenses/by-nc-nd/3.0/igo",
"shortTitle": "Understanding Nonresponse Rates",
"url": "https://openknowledge.worldbank.org/handle/10986/36154",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Biased Estimation"
},
{
"tag": "Household Survey"
},
{
"tag": "Nonrandom Nonresponse"
},
{
"tag": "Nonresponse Rate"
},
{
"tag": "Response Rate"
},
{
"tag": "Survey Methods"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://openknowledge.worldbank.org/handle/10986/36175",
"items": [
{
"itemType": "presentation",
"title": "Remarks to the Heads of State of the Central African Economic and Monetary Community",
"creators": [
{
"firstName": "David",
"lastName": "Malpass",
"creatorType": "author"
}
],
"date": "2021-08-18",
"abstractNote": "Bank Group President David Malpass said that deep structural reforms are needed now more than ever to secure social cohesion and put the region on a sustainable and more inclusive development path. The World Bank Group has maintained a long-standing partnership with Central African Economic and Monetary Community (CEMAC) and its individual members, providing a range of support including investment programs, budget support, advisory services, and technical assistance. The World Bank is partnering with the African Union to support the Africa Vaccine Acquisition Trust (AVAT) with resources to purchase and deploy single-dose vaccines for up to four hundred million people across Africa. Debt transparency and sustainability will be vital to a sustained recovery and attracting new investment. He spoke about two critical paths to help strengthen implementation of reforms and policies going forward. He concluded by saying that this day's summit and its strong political endorsement for the next phase of regional structural reforms is thus critical for the emergence of a more sustainable and more inclusive growth path for CEMAC in the future.",
"language": "English",
"place": "Washington, DC",
"presentationType": "Speech",
"rights": "http://creativecommons.org/licenses/by/3.0/igo",
"url": "https://openknowledge.worldbank.org/handle/10986/36175",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Covid-19 Vaccination"
},
{
"tag": "Debt Sustainability"
},
{
"tag": "Debt Transparency"
},
{
"tag": "Investment Climate"
},
{
"tag": "Monetary Union"
},
{
"tag": "Social Cohesion"
},
{
"tag": "Structural Reform"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://openknowledge.worldbank.org/handle/10986/36008",
"items": [
{
"itemType": "report",
"title": "Addressing Country-Level Fiscal and Financial Sector Vulnerabilities: An Evaluation of the World Bank Group’s Contributions",
"creators": [
{
"lastName": "Independent Evaluation Group",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "2021-07-21",
"abstractNote": "More than a decade has passed since the global economic and financial crisis rocked the world. A clear lesson that emerged from it was the importance of identifying and addressing country-specific vulnerabilities ex ante to build resilience when a shock occurs. The 2020 global economic and health crisis caused by COVID-19 serves as a yet another stark reminder of the importance of proactively managing vulnerabilities to shocks. The purpose of this evaluation is to assess World Bank Group support to client countries to build resilience to exogenous shocks through the systematic identification of fiscal and financial sector vulnerabilities and through efforts to support the reduction of these vulnerabilities. Given the importance of protecting the most vulnerable from shocks, this evaluation also looks at the extent to which the Bank Group has helped client countries adapt their social safety nets so that they can be effectively scaled up in a crisis. It aims to inform the design of future Bank Group strategies, operations, diagnostics, and knowledge products that can help reduce country-level fiscal and financial sector vulnerabilities. Its lessons may also help the effort to “build back better” after the COVID-19 pandemic through contributions to increasing resilience by strengthening fiscal and financial buffers and institutions.",
"institution": "World Bank",
"language": "English",
"libraryCatalog": "openknowledge.worldbank.org",
"place": "Washington, DC",
"reportType": "Evaluation",
"rights": "http://creativecommons.org/licenses/by/3.0/igo",
"shortTitle": "Addressing Country-Level Fiscal and Financial Sector Vulnerabilities",
"url": "https://openknowledge.worldbank.org/handle/10986/36008",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Financial Sector"
},
{
"tag": "Fiscal Trends"
},
{
"tag": "Safety Nets"
},
{
"tag": "World Bank Group Operations"
},
{
"tag": "World Bank-Imf Collaboration"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://openknowledge.worldbank.org/handle/10986/1",
"items": "multiple"
},
{
"type": "web",
"url": "https://openknowledge.worldbank.org/discover?query=somalia",
"items": "multiple"
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://((www\.)?(jmlr\.(org|csail\.mit\.edu))/(papers/v|mloss/)|proceedings\.mlr\.press/v)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (doc.querySelector('meta[name="citation_title"]')) {
if (doc.querySelector('meta[name="citation_conference_title"]')) {
return "conferencePaper";
}
else {
return "journalArticle";
}
}
else if (url.endsWith('.pdf')) {
// not as good of a heuristic as when we can look at the <meta> tags,
// but it'll do
return url.includes('//proceedings.mlr.press')
? "conferencePaper"
: "journalArticle";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('dl');
if (!rows.length) rows = doc.querySelectorAll('.paper');
for (let row of rows) {
let href = attr(row, 'a[href$=".html"]', 'href');
let title = ZU.trimInternal(text(row, 'dt, .title'));
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else if (url.endsWith('.pdf')) {
ZU.processDocuments(url.replace(/v(?:olume)?([^/]+\/[^/]+)\/.*/, 'v$1'), scrape);
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
if (item.itemType == 'conferencePaper') {
item.proceedingsTitle = item.proceedingsTitle || item.publicationTitle || '';
delete item.publicationTitle;
let maybeContainerTitle = text(doc, '#info > i');
if (maybeContainerTitle.includes('Proceedings of ')
&& !item.proceedingsTitle.includes('Proceedings of ')) {
item.proceedingsTitle = maybeContainerTitle;
}
}
item.abstractNote = text(doc, '#abstract');
if (!item.abstractNote) {
// it would be nice to use nextSibling here to fetch the text node
// next to the "Abstract" heading, but that doesn't work in
// processDocuments.
let content = innerText(doc, '#content');
item.abstractNote = content
.replace(/^[\s\S]*Abstract/, '')
.replace(/\[abs][\s\S]*$/, '');
}
item.date = ZU.strToISO(item.date);
item.attachments = item.attachments.filter(a => a.title != 'Snapshot');
for (let link of doc.querySelectorAll('a')) {
let text = link.textContent.trim();
if (text == 'code') {
item.attachments.push({
title: 'Source Code',
url: link.href,
mimeType: 'text/html'
});
}
else if (text == 'Supplementary PDF') {
item.attachments.push({
title: 'Supplementary PDF',
url: link.href,
mimeType: 'application/pdf'
});
}
}
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.itemType = detectWeb(doc, url);
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.jmlr.org/papers/v3/antos02a.html",
"items": [
{
"itemType": "journalArticle",
"title": "Data-dependent margin-based generalization bounds for classification",
"creators": [
{
"firstName": "András",
"lastName": "Antos",
"creatorType": "author"
},
{
"firstName": "Balázs",
"lastName": "Kégl",
"creatorType": "author"
},
{
"firstName": "Tamás",
"lastName": "Linder",
"creatorType": "author"
},
{
"firstName": "Gábor",
"lastName": "Lugosi",
"creatorType": "author"
}
],
"date": "2002",
"ISSN": "ISSN 1533-7928",
"abstractNote": "We derive new margin-based inequalities for the probability of error of classifiers. The main feature of these bounds is that they can be calculated using the training data and therefore may be effectively used for model selection purposes. In particular, the bounds involve empirical complexities measured on the training data (such as the empirical fat-shattering dimension) as opposed to their worst-case counterparts traditionally used in such analyses. Also, our bounds appear to be sharper and more general than recent results involving empirical complexity measures. In addition, we develop an alternative data-based bound for the generalization error of classes of convex combinations of classifiers involving an empirical complexity measure that is easier to compute than the empirical covering number or fat-shattering dimension. We also show examples of efficient computation of the new bounds.",
"issue": "Jul",
"libraryCatalog": "www.jmlr.org",
"pages": "73-98",
"publicationTitle": "Journal of Machine Learning Research",
"url": "https://www.jmlr.org/papers/v3/antos02a.html",
"volume": "3",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.jmlr.org/papers/v22/20-1380.html",
"items": [
{
"itemType": "journalArticle",
"title": "River: machine learning for streaming data in Python",
"creators": [
{
"firstName": "Jacob",
"lastName": "Montiel",
"creatorType": "author"
},
{
"firstName": "Max",
"lastName": "Halford",
"creatorType": "author"
},
{
"firstName": "Saulo Martiello",
"lastName": "Mastelini",
"creatorType": "author"
},
{
"firstName": "Geoffrey",
"lastName": "Bolmier",
"creatorType": "author"
},
{
"firstName": "Raphael",
"lastName": "Sourty",
"creatorType": "author"
},
{
"firstName": "Robin",
"lastName": "Vaysse",
"creatorType": "author"
},
{
"firstName": "Adil",
"lastName": "Zouitine",
"creatorType": "author"
},
{
"firstName": "Heitor Murilo",
"lastName": "Gomes",
"creatorType": "author"
},
{
"firstName": "Jesse",
"lastName": "Read",
"creatorType": "author"
},
{
"firstName": "Talel",
"lastName": "Abdessalem",
"creatorType": "author"
},
{
"firstName": "Albert",
"lastName": "Bifet",
"creatorType": "author"
}
],
"date": "2021",
"ISSN": "1533-7928",
"abstractNote": "River is a machine learning library for dynamic data streams and continual learning. It provides multiple state-of-the-art learning methods, data generators/transformers, performance metrics and evaluators for different stream learning problems. It is the result from the merger of two popular packages for stream learning in Python: Creme and scikit-multiflow. River introduces a revamped architecture based on the lessons learnt from the seminal packages. River's ambition is to be the go-to library for doing machine learning on streaming data. Additionally, this open source package brings under the same umbrella a large community of practitioners and researchers. The source code is available at https://github.com/online-ml/river.",
"issue": "110",
"libraryCatalog": "www.jmlr.org",
"pages": "1-8",
"publicationTitle": "Journal of Machine Learning Research",
"shortTitle": "River",
"url": "http://jmlr.org/papers/v22/20-1380.html",
"volume": "22",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Source Code",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.jmlr.org/mloss/",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.jmlr.org/papers/v3/",
"items": "multiple"
},
{
"type": "web",
"url": "http://proceedings.mlr.press/v137/frank20a.html",
"items": [
{
"itemType": "conferencePaper",
"title": "Problems using deep generative models for probabilistic audio source separation",
"creators": [
{
"firstName": "Maurice",
"lastName": "Frank",
"creatorType": "author"
},
{
"firstName": "Maximilian",
"lastName": "Ilse",
"creatorType": "author"
}
],
"date": "2020-02-08",
"abstractNote": "Recent advancements in deep generative modeling make it possible to learn prior distributions from complex data that subsequently can be used for Bayesian inference. However, we find that distributions learned by deep generative models for audio signals do not exhibit the right properties that are necessary for tasks like audio source separation using a probabilistic approach. We observe that the learned prior distributions are either discriminative and extremely peaked or smooth and non-discriminative. We quantify this behavior for two types of deep generative models on two audio datasets.",
"language": "en",
"libraryCatalog": "proceedings.mlr.press",
"pages": "53-59",
"publisher": "PMLR",
"url": "https://proceedings.mlr.press/v137/frank20a.html",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Supplementary PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://proceedings.mlr.press/v131/kommrusch20a.html",
"items": [
{
"itemType": "conferencePaper",
"title": "Self-Supervised Learning for Multi-Goal Grid World: Comparing Leela and Deep Q Network",
"creators": [
{
"firstName": "Steve",
"lastName": "Kommrusch",
"creatorType": "author"
}
],
"date": "2020-09-01",
"abstractNote": "Modern machine learning research has explored numerous approaches to solving reinforce- ment learning with multiple goals and sparse rewards as well as learning correct actions from a small number of exploratory samples. We explore the ability of a self-supervised system which automatically creates and tests symbolic hypotheses about the world to ad- dress these same issues. Leela is a system which builds an understanding of the world using constructivist artificial intelligence. For our study, we create an N ∗ N grid world with goals related to proprioceptive or visual positions for exploration. We compare Leela to a DQN which includes hindsight for improving multigoal learning with sparse rewards. Our results show that Leela is able to learn to solve multigoal problems in an N ∗ N world with approximately 160N2 exploratory steps compared to 360N2.7 steps required by the DQN.",
"conferenceName": "International Workshop on Self-Supervised Learning",
"language": "en",
"libraryCatalog": "proceedings.mlr.press",
"pages": "72-88",
"proceedingsTitle": "Proceedings of the First International Workshop on Self-Supervised Learning",
"publisher": "PMLR",
"shortTitle": "Self-Supervised Learning for Multi-Goal Grid World",
"url": "https://proceedings.mlr.press/v131/kommrusch20a.html",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://proceedings.mlr.press/v130/",
"items": "multiple"
},
{
"type": "web",
"url": "https://proceedings.mlr.press/v130/lyle21a.html",
"items": [
{
"itemType": "conferencePaper",
"title": "On the Effect of Auxiliary Tasks on Representation Dynamics",
"creators": [
{
"firstName": "Clare",
"lastName": "Lyle",
"creatorType": "author"
},
{
"firstName": "Mark",
"lastName": "Rowland",
"creatorType": "author"
},
{
"firstName": "Georg",
"lastName": "Ostrovski",
"creatorType": "author"
},
{
"firstName": "Will",
"lastName": "Dabney",
"creatorType": "author"
}
],
"date": "2021-03-18",
"abstractNote": "While auxiliary tasks play a key role in shaping the representations learnt by reinforcement learning agents, much is still unknown about the mechanisms through which this is achieved. This work develops our understanding of the relationship between auxiliary tasks, environment structure, and representations by analysing the dynamics of temporal difference algorithms. Through this approach, we establish a connection between the spectral decomposition of the transition operator and the representations induced by a variety of auxiliary tasks. We then leverage insights from these theoretical results to inform the selection of auxiliary tasks for deep reinforcement learning agents in sparse-reward environments.",
"conferenceName": "International Conference on Artificial Intelligence and Statistics",
"language": "en",
"libraryCatalog": "proceedings.mlr.press",
"pages": "1-9",
"proceedingsTitle": "Proceedings of The 24th International Conference on Artificial Intelligence and Statistics",
"publisher": "PMLR",
"url": "https://proceedings.mlr.press/v130/lyle21a.html",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Supplementary PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
250Abe Jellinek/jvi.aspx[^#]*[?&](volume|issue|un)=/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, _url) {
if (doc.querySelector('.siteArticleShare a[href*="/gencitation.asp?"]')) {
return "journalArticle";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('td > a[href*="jvi.aspx?"][href*="un="]');
for (let row of rows) {
// TODO: check and maybe adjust
let href = row.href;
// TODO: check and maybe adjust
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
let risURL = attr(doc, '.siteArticleShare a[href*="/gencitation.asp?"][href*="format=RIS"]', 'href');
if (!risURL) {
risURL = attr(doc, '.siteArticleShare a[href*="/gencitation.asp?"]', 'href')
.replace(/([?&]format=)[^&#]+/, '$1RIS');
}
let pdfURL = attr(doc, '.siteArticleShare a[href*="download_fulltext.asp?"]', 'href');
let topRow = text(doc, '.siteTopRow');
let ISSN = topRow.match(/ISSN\s+(\d{4}-\d{3}[\dX])/);
ISSN = ISSN && ZU.cleanISSN(ISSN[1]);
ZU.doGet(risURL, function (text) {
var translator = Zotero.loadTranslator("import");
translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7");
translator.setString(text);
translator.setHandler("itemDone", function (obj, item) {
delete item.journalAbbreviation; // usually not a common abbreviation
if (!item.ISSN) {
item.ISSN = ISSN;
}
item.notes = [];
if (pdfURL) {
item.url = url.replace(/#.*$/, '').replace(/&look4=[^&]*/, '');
item.attachments.push({
url: pdfURL,
title: "Full Text PDF",
mimeType: "application/pdf"
});
}
else if (item.url && item.url.includes('dx.doi.org')) {
delete item.url;
}
item.complete();
});
translator.translate();
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://alrjournal.com/jvi.aspx?un=ALRJ-15679&volume=5&issue=9",
"items": [
{
"itemType": "journalArticle",
"title": "Functioning of words formed from proper names in modern media discourse: psycholinguistic aspect",
"creators": [
{
"lastName": "Shynkar",
"firstName": "Tetiana",
"creatorType": "author"
},
{
"lastName": "Levchenko",
"firstName": "Tetiana",
"creatorType": "author"
},
{
"lastName": "Skliarenko",
"firstName": "Olesia",
"creatorType": "author"
},
{
"lastName": "Kardash",
"firstName": "Larysa",
"creatorType": "author"
}
],
"date": "2021",
"DOI": "10.14744/alrj.2021.15679",
"ISSN": "2651-2629",
"issue": "9",
"libraryCatalog": "LookUs",
"pages": "1-13",
"publicationTitle": "Applied Linguistics Research Journal",
"shortTitle": "Functioning of words formed from proper names in modern media discourse",
"url": "https://alrjournal.com/jvi.aspx?un=ALRJ-15679&volume=5&issue=9",
"volume": "5",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://archivestsc.com/jvi.aspx?un=TKDA-69741&volume=49&issue=6",
"items": [
{
"itemType": "journalArticle",
"title": "Polymorphisms of F2 (G20210A), F5 (G1691A), F 7 (G10976A), F 13(G13T), FGB, ITGA2, ITGB3, PAI-I genes and its association with thrombotic complications in patients suffering from Takayasu aortoarteritis of Urals population",
"creators": [
{
"lastName": "Borodina",
"firstName": "Irina",
"creatorType": "author"
},
{
"lastName": "Salavatova",
"firstName": "Gezel",
"creatorType": "author"
},
{
"lastName": "Shardina",
"firstName": "Lubov",
"creatorType": "author"
}
],
"date": "2021",
"DOI": "10.5543/tkda.2021.69741",
"ISSN": "1016-5169",
"issue": "6",
"libraryCatalog": "LookUs",
"pages": "448-455",
"publicationTitle": "Archives of the Turkish Society of Cardiology",
"url": "https://archivestsc.com/jvi.aspx?un=TKDA-69741&volume=49&issue=6",
"volume": "49",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://turkishbioethics.org/eng/jvi.aspx?pdir=tjob&plng=eng&un=TJOB-58066&look4=",
"items": [
{
"itemType": "journalArticle",
"title": "Psychiatric research abuse at the University of Minnesota",
"creators": [
{
"lastName": "Elliott",
"firstName": "Carl",
"creatorType": "author"
}
],
"date": "2014",
"DOI": "10.5505/tjob.2014.58066",
"ISSN": "2148-5917",
"issue": "1",
"libraryCatalog": "LookUs",
"pages": "38-43",
"publicationTitle": "Turkish Journal of Bioethics",
"url": "https://turkishbioethics.org/eng/jvi.aspx?pdir=tjob&plng=eng&un=TJOB-58066",
"volume": "1",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://archivestsc.com/jvi.aspx?volume=49&issue=6",
"items": "multiple"
}
]
/** END TEST CASES **/
270Abe Jellinek/pub/[^/]+/release/\d+|^https?://[^/]+\.pubpub\.org/search\?/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (!doc.querySelector('.built-on > a[href*="pubpub"]')
&& !url.includes('pubpub.org')) {
return false;
}
// this won't match search result pages not hosted on pubpub.org, but the
// results URL (/search?q=) is just too generic to justify including it in
// the target.
if (getSearchResults(doc, true)) {
return "multiple";
}
else if (doc.querySelector('#search-container')) {
Z.monitorDOMChanges(doc.querySelector('#search-container'));
}
else if (doc.querySelector('meta[name="citation_title"]')) {
if (doc.querySelector('meta[name="citation_inbook_title"]')) {
return "bookSection";
}
// this is, of course, a bad heuristic, but it's unlikely to lead to
// false positives and PubPub doesn't give us anything better.
else if (attr(doc, 'meta[property="og:site_name"]', 'content').endsWith('Rxiv')) {
return "report";
}
else {
return "journalArticle";
}
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.title > a.pub-title');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
if (!item.publicationTitle) {
item.publicationTitle = attr(doc, 'meta[property="og:site_name"]', 'content');
}
if (item.publicationTitle.endsWith('Rxiv')) {
item.itemType = 'report';
item.extra = (item.extra || '') + '\nType: article';
}
if (item.itemType == 'bookSection' && item.bookTitle) {
delete item.publicationTitle;
}
if (item.publisher == 'PubPub') {
delete item.publisher;
}
delete item.institution;
delete item.company;
delete item.label;
delete item.distributor;
if (item.date) {
item.date = ZU.strToISO(item.date);
}
if (item.ISSN == ',') {
delete item.ISSN;
}
if (item.attachments.length > 1) {
item.attachments = item.attachments.filter(at => at.title != 'Snapshot');
}
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.itemType = detectWeb(doc, url);
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://cursor.pubpub.org/pub/teuchert-isenheimeraltar/release/5",
"items": [
{
"itemType": "journalArticle",
"title": "Christus als Infektionstoter: Der Isenheimer Altar und die Corona-Pandemie",
"creators": [
{
"firstName": "Lisanne",
"lastName": "Teuchert",
"creatorType": "author"
}
],
"date": "2020-04-03",
"abstractNote": "Von der Corona-Krise aus fällt ein neuer Blick auf den Isenheimer Altar: Der Gekreuzigte trägt Spuren einer Infektionskrankheit, der Pest. Der Artikel erklärt den Hintergrund und stellt Gedanken zur theologischen Rezeption heute an.",
"language": "en",
"libraryCatalog": "cursor.pubpub.org",
"publicationTitle": "Cursor_ Zeitschrift für explorative Theologie",
"shortTitle": "Christus als Infektionstoter",
"url": "https://cursor.pubpub.org/pub/teuchert-isenheimeraltar/release/5",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://hdsr.mitpress.mit.edu/pub/w075glo6/release/2?readingCollection=c6a3a10e",
"items": [
{
"itemType": "journalArticle",
"title": "Designing for Interactive Exploratory Data Analysis Requires Theories of Graphical Inference",
"creators": [
{
"firstName": "Jessica",
"lastName": "Hullman",
"creatorType": "author"
},
{
"firstName": "Andrew",
"lastName": "Gelman",
"creatorType": "author"
}
],
"date": "2021-07-30",
"DOI": "10.1162/99608f92.3ab8a587",
"abstractNote": "Research and development in computer science and statistics have produced increasingly sophisticated software interfaces for interactive and exploratory analysis, optimized for easy pattern finding and data exposure. But design philosophies that emphasize exploration over other phases of analysis risk confusing a need for flexibility with a conclusion that exploratory visual analysis is inherently “model free” and cannot be formalized. We describe how without a grounding in theories of human statistical inference, research in exploratory visual analysis can lead to contradictory interface objectives and representations of uncertainty that can discourage users from drawing valid inferences. We discuss how the concept of a model check in a Bayesian statistical framework unites exploratory and confirmatory analysis, and how this understanding relates to other proposed theories of graphical inference. Viewing interactive analysis as driven by model checks suggests new directions for software and empirical research around exploratory and visual analysis. For example, systems might enable specifying and explicitly comparing data to null and other reference distributions and better representations of uncertainty. Implications of Bayesian and other theories of graphical inference can be tested against outcomes of interactive analysis by people to drive theory development.",
"language": "en",
"libraryCatalog": "hdsr.mitpress.mit.edu",
"publicationTitle": "Harvard Data Science Review",
"url": "https://hdsr.mitpress.mit.edu/pub/w075glo6/release/2",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.crimrxiv.com/pub/xbjbnyb8/release/1?readingCollection=e3ec78b4",
"items": [
{
"itemType": "report",
"title": "The Impact of COVID-19 on the Spatial Distribution of Shooting Violence in Buffalo, NY",
"creators": [
{
"firstName": "Gregory",
"lastName": "Drake",
"creatorType": "author"
},
{
"firstName": "Andrew",
"lastName": "Wheeler",
"creatorType": "author"
},
{
"firstName": "Dae-Young",
"lastName": "Kim",
"creatorType": "author"
},
{
"firstName": "Scott W.",
"lastName": "Phillips",
"creatorType": "author"
},
{
"firstName": "Kathryn",
"lastName": "Mendolera",
"creatorType": "author"
}
],
"date": "2021-09-01",
"abstractNote": "Objectives: This paper examines the extent to which hotspots of shooting violence changed following the emergence of Covid-19. Methods: This analysis uses Andresen's Spatial Point Pattern test, correcting for multiple comparisons, on a 10-year sample of geocoded shooting data from Buffalo New York. Results: This work finds zero micro grid cells are statistically different from pre to post Covid stay at home orders and instead that the observed rise in shootings in the sample appears to be a consistent proportional increase across the city. Conclusions: These findings provide law enforcement with useful information about how to respond to the recent rise in shooting violence but additional work is needed to better understand what, among a number of competing theories, is driving the increase.",
"extra": "DOI: 10.21428/cb6ab371.e187aede\nType: article",
"language": "en",
"libraryCatalog": "www.crimrxiv.com",
"url": "https://www.crimrxiv.com/pub/xbjbnyb8/release/1",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.crimrxiv.com/pub/auhg43cx/release/1",
"items": [
{
"itemType": "report",
"title": "Fault lines of food fraud: key issues in research and policy",
"creators": [
{
"firstName": "Nicholas",
"lastName": "Lord",
"creatorType": "author"
},
{
"firstName": "Cecilia Flores",
"lastName": "Elizondo",
"creatorType": "author"
},
{
"firstName": "Jon",
"lastName": "Davies",
"creatorType": "author"
},
{
"firstName": "Jon",
"lastName": "Spencer",
"creatorType": "author"
}
],
"date": "2021-09-14",
"extra": "Type: article",
"language": "en",
"libraryCatalog": "www.crimrxiv.com",
"shortTitle": "Fault lines of food fraud",
"url": "https://www.crimrxiv.com/pub/auhg43cx/release/1",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://wip.mitpress.mit.edu/pub/pnxgvubq/release/2",
"items": [
{
"itemType": "bookSection",
"title": "2. Data Cooperatives",
"creators": [
{
"firstName": "Alex",
"lastName": "Pentland",
"creatorType": "author"
},
{
"firstName": "Thomas",
"lastName": "Hardjono",
"creatorType": "author"
}
],
"date": "2020-04-30",
"bookTitle": "Building the New Economy",
"language": "en",
"libraryCatalog": "wip.mitpress.mit.edu",
"url": "https://wip.mitpress.mit.edu/pub/pnxgvubq/release/2",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.sustainabilityscience.org/pub/eto8m67b/release/2",
"items": [
{
"itemType": "bookSection",
"title": "Capacity to Promote Equity",
"creators": [
{
"firstName": "Alicia G.",
"lastName": "Harley",
"creatorType": "author"
},
{
"firstName": "William C.",
"lastName": "Clark",
"creatorType": "author"
}
],
"date": "2020-09-10",
"abstractNote": "Achieving fair or equitable distribution of the fruits of the earth’s resources both within and between generations is a central objective of sustainable development. Accelerating progress requires above all more effective means for empowering those who are now losing out.",
"bookTitle": "Sustainability Science: A guide for researchers",
"extra": "DOI: 10.21428/f8d85a02.e1e84ad7",
"language": "en",
"libraryCatalog": "www.sustainabilityscience.org",
"url": "https://www.sustainabilityscience.org/pub/eto8m67b/release/2",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://pandemics-and-games-essay-jam.pubpub.org/pub/xj5pgzcn/release/2",
"items": [
{
"itemType": "journalArticle",
"title": "The Void: Turgor and Porousness",
"creators": [
{
"firstName": "Andrew",
"lastName": "McCarrell",
"creatorType": "author"
}
],
"date": "2021-01-10",
"language": "en",
"libraryCatalog": "pandemics-and-games-essay-jam.pubpub.org",
"publicationTitle": "Pandemics and Games Essay Jam",
"shortTitle": "The Void",
"url": "https://pandemics-and-games-essay-jam.pubpub.org/pub/xj5pgzcn/release/2",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://covid-19.mitpress.mit.edu/pub/m72dtwsg/release/1",
"items": [
{
"itemType": "bookSection",
"title": "1. Theory and Exegesis: On Health and the Body Politic",
"creators": [
{
"lastName": "Andrew T. Price-Smith",
"creatorType": "author"
}
],
"date": "2020-04-16",
"ISBN": "9780262162487",
"bookTitle": "Contagion and Chaos",
"language": "en",
"libraryCatalog": "covid-19.mitpress.mit.edu",
"shortTitle": "1. Theory and Exegesis",
"url": "https://covid-19.mitpress.mit.edu/pub/m72dtwsg/release/1",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://beexml.pubpub.org/pub/sz2ok365/release/1",
"items": [
{
"itemType": "journalArticle",
"title": "The Bee Corp’s Method of Hive Strength Assessment for Pollination Effectiveness",
"creators": [
{
"firstName": "Ellie",
"lastName": "Symes",
"creatorType": "author"
},
{
"firstName": "Joseph",
"lastName": "Cazier",
"creatorType": "author"
}
],
"date": "2021-04-26",
"language": "en",
"libraryCatalog": "beexml.pubpub.org",
"publicationTitle": "Bee XML Journal",
"url": "https://beexml.pubpub.org/pub/sz2ok365/release/1",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://association.aap.cornell.edu/pub/oefofyds/release/2",
"items": [
{
"itemType": "journalArticle",
"title": "Reverse Turing Test",
"creators": [
{
"firstName": "Sabrina",
"lastName": "Haertig",
"creatorType": "author"
}
],
"date": "2020-05-28",
"language": "en",
"libraryCatalog": "association.aap.cornell.edu",
"publicationTitle": "ASSOCIATION",
"url": "https://association.aap.cornell.edu/pub/oefofyds/release/2",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://cursor.pubpub.org/search?q=sprache",
"defer": true,
"items": "multiple"
}
]
/** END TEST CASES **/
100Lukas Kawerau^https?://[^/]+\.reddit\.com/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2020-2021 Lukas Kawerau
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
var regex = /\/r\/[a-z\d_]+\/comments\//i;
if (regex.test(url)) {
return 'forumPost';
}
else if (getSearchResults(doc, true)) {
return 'multiple';
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = ZU.xpath(doc, '//a[div/h3]');
if (!rows.length) rows = doc.querySelectorAll('.entry');
for (let row of rows) {
let href, title;
if (row.href) {
href = row.href;
title = ZU.trimInternal(row.textContent);
}
else {
href = attr(row, '.comments', 'href');
title = text(row, '.title > a');
}
if (!href || !title) continue;
href += '.json';
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
var jsonUrl = url.split("?")[0] + '.json';
var commentRegex = /\/r\/[a-z\d_]+\/comments\/[a-z\d]+\/[a-z\d_]+\/[a-z\d]+\//i;
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) {
return;
}
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.doGet(articles, scrape);
});
}
else if (detectWeb(doc, url) == "forumPost" && commentRegex.test(url)) {
ZU.doGet(jsonUrl, scrapeComment);
}
else {
ZU.doGet(jsonUrl, scrape);
}
}
function scrape(text) {
var newItem = new Zotero.Item("forumPost");
var redditJson = JSON.parse(text);
var redditData = redditJson[0].data.children[0].data;
newItem.title = redditData.title;
if (redditData.author != '[deleted]') {
newItem.creators.push(ZU.cleanAuthor(redditData.author, "author", true));
}
newItem.url = 'www.reddit.com' + redditData.permalink;
var postDate = new Date(redditData.created_utc * 1000);
newItem.date = postDate.toISOString();
newItem.postType = "Reddit Post";
newItem.forumTitle = 'r/' + redditData.subreddit;
newItem.websiteTitle = "reddit.com";
newItem.attachments.push({
url: 'https://www.reddit.com' + redditData.permalink,
title: "Reddit Post Snapshot",
mimetype: "text/html"
});
newItem.complete();
}
function scrapeComment(text) {
var newItem = new Zotero.Item("forumPost");
var redditJson = JSON.parse(text);
var parentData = redditJson[0].data.children[0].data;
var redditData = redditJson[1].data.children[0].data;
newItem.title = ZU.ellipsize(redditData.body, 20);
if (redditData.author != '[deleted]') {
newItem.creators.push(ZU.cleanAuthor(redditData.author, "author", true));
}
newItem.url = 'www.reddit.com' + redditData.permalink;
var postDate = new Date(redditData.created_utc * 1000);
newItem.date = postDate.toISOString();
newItem.postType = "Reddit Comment";
newItem.forumTitle = 'r/' + redditData.subreddit;
newItem.websiteTitle = "reddit.com";
newItem.extra = 'Post URL: www.reddit.com' + parentData.permalink;
newItem.attachments.push({
url: 'https://www.reddit.com' + redditData.permalink,
title: "Reddit Comment Snapshot",
mimetype: "text/html"
});
newItem.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.reddit.com/search/?q=zotero",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.reddit.com/r/zotero/",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.reddit.com/",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.reddit.com/r/zotero/comments/j7ityb/zotero_ipad_bookmarklet_not_working/",
"items": [
{
"itemType": "forumPost",
"title": "Zotero iPad bookmarklet not working",
"creators": [
{
"lastName": "cegmondiale",
"creatorType": "author"
}
],
"date": "2020-10-08T18:43:48.000Z",
"forumTitle": "r/zotero",
"postType": "Reddit Post",
"url": "www.reddit.com/r/zotero/comments/j7ityb/zotero_ipad_bookmarklet_not_working/",
"attachments": [
{
"title": "Reddit Post Snapshot",
"mimetype": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.reddit.com/r/zotero/comments/j7ityb/zotero_ipad_bookmarklet_not_working/g88zfcp/",
"items": [
{
"itemType": "forumPost",
"title": "I use the exact same…",
"creators": [],
"date": "2020-10-09T20:07:37.000Z",
"extra": "Post URL: www.reddit.com/r/zotero/comments/j7ityb/zotero_ipad_bookmarklet_not_working/",
"forumTitle": "r/zotero",
"postType": "Reddit Comment",
"url": "www.reddit.com/r/zotero/comments/j7ityb/zotero_ipad_bookmarklet_not_working/g88zfcp/",
"attachments": [
{
"title": "Reddit Comment Snapshot",
"mimetype": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.reddit.com/r/Professors/comments/o5pixw/for_tt_t_professors_why_exactly_is_vacation_and/",
"items": [
{
"itemType": "forumPost",
"title": "For TT / T professors, why exactly is vacation and sick time accrued?",
"creators": [
{
"lastName": "respeckKnuckles",
"creatorType": "author"
}
],
"date": "2021-06-22T15:17:27.000Z",
"forumTitle": "r/Professors",
"postType": "Reddit Post",
"url": "www.reddit.com/r/Professors/comments/o5pixw/for_tt_t_professors_why_exactly_is_vacation_and/",
"attachments": [
{
"title": "Reddit Post Snapshot",
"mimetype": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://old.reddit.com/r/zotero/",
"items": "multiple"
},
{
"type": "web",
"url": "https://old.reddit.com/r/zotero/comments/plh1kr/firefox_google_docs_reimplementation/",
"items": [
{
"itemType": "forumPost",
"title": "Firefox Google Docs re-implementation",
"creators": [
{
"lastName": "RedRoseTemplate",
"creatorType": "author"
}
],
"date": "2021-09-10T08:34:50.000Z",
"forumTitle": "r/zotero",
"postType": "Reddit Post",
"url": "www.reddit.com/r/zotero/comments/plh1kr/firefox_google_docs_reimplementation/",
"attachments": [
{
"title": "Reddit Post Snapshot",
"mimetype": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Bill McKinney^https?://www\.bailii\.org(/cgi\-bin/markup\.cgi\?doc\=)?/\w+/cases/.+/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Bill McKinney
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
var liiRegexp = /^https?:\/\/www\.bailii\.org(?:\/cgi-bin\/markup\.cgi\?doc=)?\/\w+\/cases\/.+\.html/;
function detectWeb(doc, url) {
if (liiRegexp.test(url)) {
return "case";
}
else {
var aTags = doc.getElementsByTagName("a");
for (var i = 0; i < aTags.length; i++) {
if (liiRegexp.test(aTags[i].href)) {
return "multiple";
}
}
}
return false;
}
function scrape(doc, url) {
var newItem = new Zotero.Item("case");
newItem.title = doc.title;
newItem.url = doc.location.href;
var titleRegexp = /^(.+)\s+\[(\d+)\]\s+(.+)\s+\((\d+)\s+(\w+)\s+(\d+)\)/;
var titleMatch = titleRegexp.exec(doc.title);
if (titleMatch) {
newItem.caseName = titleMatch[1] + " [" + titleMatch[2] + "] " + titleMatch[3];
newItem.dateDecided = titleMatch[4] + " " + titleMatch[5] + " " + titleMatch[6];
}
else {
newItem.caseName = doc.title;
newItem.dateDecided = "not found";
}
var courtRegexp = /cases\/([^/]+)\/([^/]+)\//;
var courtMatch = courtRegexp.exec(doc.location.href);
if (courtMatch) {
var divRegexp = /\w+/;
var divMatch = divRegexp.exec(courtMatch[2]);
if (divMatch) {
newItem.court = courtMatch[1] + " (" + courtMatch[2] + ")";
}
else {
newItem.court = courtMatch[1];
}
}
else {
newItem.court = "not found";
}
// judge
var panel = doc.getElementsByTagName("PANEL");
if (panel.length > 0) {
let name = panel[0].innerHTML;
newItem.creators.push({ lastName: name, creatorType: "author", fieldMode: 1 });
}
// citation
var cite = doc.getElementsByTagName("CITATION");
if (cite.length > 0) {
let note = cite[0].childNodes[0].innerHTML;
newItem.notes.push({ note });
}
newItem.attachments = [{ url: url, title: "Snapshot", mimeType: "text/html" }];
newItem.complete();
}
function doWeb(doc, url) {
if (liiRegexp.test(url)) {
scrape(doc);
}
else {
var items = Zotero.Utilities.getItemArray(doc, doc, liiRegexp);
Zotero.selectItems(items, function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
}/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.bailii.org/cgi-bin/markup.cgi?doc=/eu/cases/EUECJ/2011/C40308.html&query=copyright&method=boolean",
"items": [
{
"itemType": "case",
"caseName": "Football Association Premier League & Ors (Freedom to provide services) [2011] EUECJ C-403/08",
"creators": [],
"dateDecided": "04 October 2011",
"court": "EUECJ (2011)",
"url": "https://www.bailii.org/cgi-bin/markup.cgi?doc=/eu/cases/EUECJ/2011/C40308.html&query=copyright&method=boolean",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.bailii.org/eu/cases/EUECJ/2007/",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.bailii.org/ew/cases/EWHC/Comm/2020/170.html",
"items": [
{
"itemType": "case",
"caseName": "Forum Services International Ltd & Anor v OOS International BV [2020] EWHC 170 (Comm)",
"creators": [
{
"lastName": "MR JUSTICE ROBIN KNOWLES CBE",
"creatorType": "author",
"fieldMode": true
}
],
"dateDecided": "31 January 2020",
"court": "EWHC (Comm)",
"url": "https://www.bailii.org/ew/cases/EWHC/Comm/2020/170.html",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [
{
"note": "Neutral Citation Number: [2020] EWHC 170 (Comm)"
}
],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://citizenlab\.ca//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, _url) {
// every page claims to be an article, so we have to do something a little
// more specific
if (doc.querySelector('[itemprop="headline"]')) {
return "report";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('article h1 > a');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
item.title = item.title.replace(/\s*- The Citizen Lab\s*$/, '');
item.creators = [];
for (let author of doc.querySelectorAll('header [rel="author"]')) {
item.creators.push(ZU.cleanAuthor(author.textContent, 'author'));
}
let pdfURL = attr(doc, '#other_version_of_post a', 'href');
if (pdfURL) {
item.attachments.push({
title: 'Full Text PDF',
mimeType: 'application/pdf',
url: pdfURL
});
}
delete item.language; // inaccurate for non-English reports
// let's try to match their recommended citations for official publications
// from https://citizenlab.ca/publications/
item.libraryCatalog = '';
item.institution = 'Citizen Lab, University of Toronto';
ZU.processDocuments('/publications/', function (pubsDoc) {
let pointer = pubsDoc.querySelector(`a[href="${item.url}"]`);
if (pointer) {
let cite = pointer.parentNode.textContent;
let reportNumber = cite.match(/Citizen Lab Research Report No\. [^,]+/);
if (reportNumber) {
item.reportNumber = reportNumber[0];
item.institution = 'University of Toronto';
}
}
item.complete();
});
});
translator.getTranslatorObject(function (trans) {
trans.itemType = "report";
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://citizenlab.ca/2021/09/forcedentry-nso-group-imessage-zero-click-exploit-captured-in-the-wild/",
"items": [
{
"itemType": "report",
"title": "FORCEDENTRY: NSO Group iMessage Zero-Click Exploit Captured in the Wild",
"creators": [
{
"firstName": "Bill",
"lastName": "Marczak",
"creatorType": "author"
},
{
"firstName": "John",
"lastName": "Scott-Railton",
"creatorType": "author"
},
{
"firstName": "Bahr Abdul",
"lastName": "Razzak",
"creatorType": "author"
},
{
"firstName": "Noura",
"lastName": "Al-Jizawi",
"creatorType": "author"
},
{
"firstName": "Siena",
"lastName": "Anstis",
"creatorType": "author"
},
{
"firstName": "Kristin",
"lastName": "Berdan",
"creatorType": "author"
},
{
"firstName": "Ron",
"lastName": "Deibert",
"creatorType": "author"
}
],
"date": "2021-09-13T19:26:12+00:00",
"abstractNote": "While analyzing the phone of a Saudi activist infected with NSO Group’s Pegasus spyware, we discovered a zero-day zero-click exploit against iMessage. The exploit, which we call FORCEDENTRY, targets Apple’s image rendering library, and was effective against Apple iOS, MacOS and WatchOS devices.",
"institution": "Citizen Lab, University of Toronto",
"shortTitle": "FORCEDENTRY",
"url": "https://citizenlab.ca/2021/09/forcedentry-nso-group-imessage-zero-click-exploit-captured-in-the-wild/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://citizenlab.ca/2021/04/canadas-proposed-privacy-law-reforms-are-not-enough-improving-organizational-transparency-and-accountability-bill-c11/",
"items": [
{
"itemType": "report",
"title": "Canada’s Proposed Privacy Law Reforms Are Not Enough: A Path to Improving Organizational Transparency and Accountability",
"creators": [
{
"firstName": "Christopher",
"lastName": "Parsons",
"creatorType": "author"
}
],
"date": "2021-04-23T13:00:52+00:00",
"abstractNote": "Given our experiences, we have specific recommendations for how any federal commercial privacy legislation must be amended to better protect individuals from the predations and power of private organizations. In making our recommendations we have chosen to focus almost exclusively on the Openness and Transparency, Access to and Amendment of Personal Information, and Whistleblower sections of Bill C-11.",
"institution": "University of Toronto",
"reportNumber": "Citizen Lab Research Report No. 138",
"shortTitle": "Canada’s Proposed Privacy Law Reforms Are Not Enough",
"url": "https://citizenlab.ca/2021/04/canadas-proposed-privacy-law-reforms-are-not-enough-improving-organizational-transparency-and-accountability-bill-c11/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://citizenlab.ca/2021/03/tiktok-vs-douyin-security-privacy-analysis/",
"items": [
{
"itemType": "report",
"title": "TikTok vs Douyin: A Security and Privacy Analysis",
"creators": [
{
"firstName": "Pellaeon",
"lastName": "Lin",
"creatorType": "author"
}
],
"date": "2021-03-22T13:00:16+00:00",
"abstractNote": "A comparative analysis of security, privacy, and censorship issues in TikTok and Douyin, both developed by ByteDance.",
"institution": "University of Toronto",
"reportNumber": "Citizen Lab Research Report No. 137",
"shortTitle": "TikTok vs Douyin",
"url": "https://citizenlab.ca/2021/03/tiktok-vs-douyin-security-privacy-analysis/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://citizenlab.ca/2021/08/%d9%85%d9%86-%d8%a7%d9%84%d9%84%d8%a4%d9%84%d8%a4%d8%a9-%d8%a5%d9%84%d9%89-%d8%a8%d9%8a%d8%ba%d8%a7%d8%b3%d9%88%d8%b3-%d8%a7%d9%84%d8%ad%d9%83%d9%88%d9%85%d8%a9-%d8%a7%d9%84%d8%a8%d8%ad%d8%b1%d9%8a/",
"items": [
{
"itemType": "report",
"title": "من اللؤلؤة إلى بيغاسوس: الحكومة البحرينية تخترق نشطاء عبر استغلال ثغرة \"Zero-Click\" من \"NSO Group\"",
"creators": [],
"date": "2021-08-24T10:01:46+00:00",
"abstractNote": "لقد حددنا تسعة نشطاء بحرينيين تم اختراق أجهزتهم الآيفون باستخدام برنامج تجسس \"Pegasus\" من NSO Group في الفترة ما بين يونيو 2020 و فبراير 2021. بعض النشطاء قد تم اختراقهم باستغلال ثغرتين zero-click في iMessage, كنا قد سمينا الثغرتين التي تم اكتشافها في 2020 ب KISMET، أما الثغرة المستخدمة في 2021 فنسميها FORCEDENTRY",
"institution": "Citizen Lab, University of Toronto",
"shortTitle": "من اللؤلؤة إلى بيغاسوس",
"url": "https://citizenlab.ca/2021/08/من-اللؤلؤة-إلى-بيغاسوس-الحكومة-البحري/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://citizenlab.ca/2019/05/burned-after-reading-endless-mayflys-ephemeral-disinformation-campaign/",
"items": [
{
"itemType": "report",
"title": "Burned After Reading: Endless Mayfly’s Ephemeral Disinformation Campaign",
"creators": [
{
"firstName": "Gabrielle",
"lastName": "Lim",
"creatorType": "author"
},
{
"firstName": "Etienne",
"lastName": "Maynier",
"creatorType": "author"
},
{
"firstName": "John",
"lastName": "Scott-Railton",
"creatorType": "author"
},
{
"firstName": "Alberto",
"lastName": "Fittarelli",
"creatorType": "author"
},
{
"firstName": "Ned",
"lastName": "Moran",
"creatorType": "author"
},
{
"firstName": "Ron",
"lastName": "Deibert",
"creatorType": "author"
}
],
"date": "2019-05-14T04:01:02+00:00",
"abstractNote": "Using Endless Mayfly as an illustration, this highlights the challenges of investigating & addressing disinformation from research & policy perspectives.",
"institution": "University of Toronto",
"reportNumber": "Citizen Lab Research Report No. 118",
"shortTitle": "Burned After Reading",
"url": "https://citizenlab.ca/2019/05/burned-after-reading-endless-mayflys-ephemeral-disinformation-campaign/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
},
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://citizenlab.ca/?s=mayfly",
"items": "multiple"
}
]
/** END TEST CASES **/
100Philipp Zumstein^https?://(www\.)?zbmath\.org//*
***** BEGIN LICENSE BLOCK *****
zbMATH Translator, Copyright © 2014 Philipp Zumstein
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, _url) {
if (ZU.xpath(doc, '//div[@class="list"]/article').length > 0) {
return "multiple";
}
else if (ZU.xpath(doc, '//a[contains(@class, "bib")]').length > 0) { // contains
// it is a single entry --> generic fallback = journalArticle
return "journalArticle";
}
return false;
}
function scrape(doc, _url) {
var bibArray = doc.getElementsByClassName("bib");
var bibUrl = bibArray[0].getAttribute('href');// e.g. "bibtex/06115874.bib"
ZU.doGet(bibUrl, function (text) {
// Z.debug(text);
var trans = Zotero.loadTranslator('import');
trans.setTranslator('9cb70025-a888-4a29-a210-93ec52da40d4');// https://github.com/zotero/translators/blob/master/BibTeX.js
trans.setString(text);
trans.setHandler('itemDone', function (obj, item) {
item.title = item.title.replace(/\.$/, '');
if (item.publisher) {
var publisherSeparation = item.publisher.indexOf(":");
if (publisherSeparation != -1) {
item.place = item.publisher.substr(0, publisherSeparation);
item.publisher = item.publisher.substr(publisherSeparation + 1);
}
}
// keywords are normally not in the bib file, so we take them from the page
// moreover, the meaning of the MSC classification is also only given on the page
if (item.tags.length == 0) {
var keywords = ZU.xpath(doc, '//div[@class="keywords"]/a');
for (var i = 0; i < keywords.length; i++) {
item.tags.push(keywords[i].textContent);
}
var classifications = ZU.xpath(doc, '//div[@class="classification"]//tr');
for (let classification of classifications) {
item.extra = (item.extra ? item.extra + "\n" : '') + 'MSC2010: ' + ZU.trimInternal(ZU.xpathText(classification, './td', null, " = "));
}
}
// add abstract but not review
var abstractOrReview = ZU.xpathText(doc, '//div[@class="abstract"]');
if (abstractOrReview.indexOf('Summary') == 0) {
item.abstractNote = abstractOrReview.replace(/^Summary:?\s*/, '');
}
item.attachments = [{
title: "Snapshot",
document: doc
}];
var id = ZU.xpath(doc, '//div[@class="title"]/a[@class="label"]')[0];
if (id) {
if (!item.extra) item.extra = '';
else item.extra += "\n";
item.extra += 'Zbl: ' + ZU.trimInternal(id.textContent)
.replace(/^\s*Zbl\s+/i, ''); // e.g. Zbl 1255.05045
item.url = id.href;
}
item.complete();
// Z.debug(item);
});
trans.translate();
});
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
var items = {};
var rows = ZU.xpath(doc, '//div[@class="list"]/article');
for (let row of rows) {
var title = ZU.xpathText(row, './div[@class="title"]/a[1]');
var link = ZU.xpathText(row, './div[@class="title"]/a[1]/@href');
items[link] = title;
}
Zotero.selectItems(items, function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.zbmath.org/?q=an:06115874",
"items": [
{
"itemType": "journalArticle",
"title": "Sharp threshold for the appearance of certain spanning trees in random graphs",
"creators": [
{
"firstName": "Dan",
"lastName": "Hefetz",
"creatorType": "author"
},
{
"firstName": "Michael",
"lastName": "Krivelevich",
"creatorType": "author"
},
{
"firstName": "Tibor",
"lastName": "Szabó",
"creatorType": "author"
}
],
"date": "2012",
"DOI": "10.1002/rsa.20472",
"ISSN": "1042-9832",
"abstractNote": "We prove that a given tree TT on n vertices with bounded maximum degree is contained asymptotically almost surely in the binomial random graph G(n,(1+ε)lognn)G\\left(n,\\frac {(1+\\varepsilon)\\log n}{n}\\right) provided that TT belongs to one of the following two classes: \n\n(1)TT has linearly many leaves; (2)TT has a path of linear length all of whose vertices have degree two in TT.",
"extra": "MSC2010: 05C05 = Trees\nMSC2010: 05C80 = Random graphs (graph-theoretic aspects)\nZbl: 1255.05045",
"issue": "4",
"itemID": "zbMATH06115874",
"journalAbbreviation": "Random Struct. Algorithms",
"language": "English",
"libraryCatalog": "zbMATH",
"pages": "391–412",
"publicationTitle": "Random Structures & Algorithms",
"url": "https://www.zbmath.org/?q=an%3A1255.05045",
"volume": "41",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "random graphs"
},
{
"tag": "sharp thresholds"
},
{
"tag": "spanning trees"
},
{
"tag": "tree-universality"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.zbmath.org/?q=se:00001331+ai:bollobas.bela",
"items": "multiple"
},
{
"type": "web",
"url": "https://zbmath.org/?q=an:06212000",
"items": [
{
"itemType": "journalArticle",
"title": "Basic network creation games",
"creators": [
{
"firstName": "Noga",
"lastName": "Alon",
"creatorType": "author"
},
{
"firstName": "Erik D.",
"lastName": "Demaine",
"creatorType": "author"
},
{
"firstName": "Mohammad T.",
"lastName": "Hajiaghayi",
"creatorType": "author"
},
{
"firstName": "Tom",
"lastName": "Leighton",
"creatorType": "author"
}
],
"date": "2013",
"DOI": "10.1137/090771478",
"ISSN": "0895-4801",
"extra": "MSC2010: 90C27 = Combinatorial optimization\nMSC2010: 05C85 = Graph algorithms (graph-theoretic aspects)\nMSC2010: 91A06 = nn-person games, n>2n>2\nZbl: 1273.90167",
"issue": "2",
"itemID": "zbMATH06212000",
"journalAbbreviation": "SIAM J. Discrete Math.",
"language": "English",
"libraryCatalog": "zbMATH",
"pages": "656–668",
"publicationTitle": "SIAM Journal on Discrete Mathematics",
"url": "https://zbmath.org/?q=an%3A1273.90167",
"volume": "27",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "equilibrium"
},
{
"tag": "low diameter"
},
{
"tag": "network creation"
},
{
"tag": "network design"
},
{
"tag": "price of anarchy"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://zbmath.org/?q=cc:35",
"items": "multiple"
}
]
/** END TEST CASES **/
100Yunwoo Song, Philipp Zumstein^https?://[^/]+\.dbpia\.co\.kr//*
***** BEGIN LICENSE BLOCK *****
DBpia Translator
Copyright © 2017 Yunwoo Song and Philipp Zumstein
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/journal/articleDetail')) {
return "journalArticle";
} else if ((url.includes('/search/') || url.includes('/journal/articleList/')) && getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('h5 > a[href*="/journal/articleDetail"]');
for (let row of rows) {
var href = row.href;
var title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) {
return;
}
ZU.processDocuments(Object.keys(items), scrape);
});
} else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setHandler('itemDone', function (obj, item) {
let nodeId = encodeURIComponent(url.match(/[?&]nodeId=([^&#]+)/)[1]);
let downloadDataURL = '/download/downloadData';
let downloadDataBody = `nodeId=${nodeId}&systemCode=Article&depth=Article&shape=download`;
ZU.doPost(downloadDataURL, downloadDataBody, function (respText) {
if (!respText || respText[0] != '{') {
item.complete();
return;
}
let json = JSON.parse(respText);
if (!json.link) {
item.complete();
return;
}
item.attachments.push({
url: json.link,
title: "Full Text PDF",
mimeType: "application/pdf"
});
item.complete();
});
});
translator.getTranslatorObject(function(trans) {
trans.itemType = "journalArticle";
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.dbpia.co.kr/journal/articleDetail?nodeId=NODE02298184&language=ko_KR",
"items": [
{
"itemType": "journalArticle",
"title": "공기역학적 성능을 고려한 인간동력항공기 개념 설계",
"creators": [
{
"firstName": "",
"lastName": "강형민",
"creatorType": "author"
},
{
"firstName": "",
"lastName": "김철완",
"creatorType": "author"
}
],
"date": "2013/11",
"ISSN": "1598-4168",
"abstractNote": "본 연구에서는 공기역학적 성능을 고려하여 인간의 힘만으로 이륙할 수 있는 초경량 인간동력 항공기의 개념설계를 수행하였다. 이를 위해 조종사를 포함한 항공기 전체 무게를 결정한 이후 적절한 익형을 선정하여 주날개/보조날개를 설계하였다. 설계된 비행기의 형상을 기초로 3차원 전산해석을 하였으며, 이를 통해 양력/항력 등의 성능계수 및 항공기무게 중심(CG)에 대한 계산을 수행하였다. 그 결과 비행기의 양력 및 추력이 양력 및 추력의 제한 조건을 만족하였다. 또한 비행기의 무게 중심(CG)이 주익의 공력 중심(AC)에 위치함으로써 26%의 정적 안정성이 보장되었다.",
"issue": "2",
"libraryCatalog": "www.dbpia.co.kr",
"pages": "180-185",
"publicationTitle": "항공우주기술",
"url": "https://www.dbpia.co.kr/Journal/articleDetail?nodeId=NODE02298184",
"volume": "12",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
},
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "개념설계(Preliminary Design)"
},
{
"tag": "공기역학적 성능(Aerodynamic Performance)"
},
{
"tag": "인간동력 항공기(Human Powered Aircraft)"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.dbpia.co.kr/journal/articleDetail?nodeId=NODE06648914&language=ko_KR",
"items": [
{
"itemType": "journalArticle",
"title": "다문화가족 청소년의 가족유형에 따른 일탈행위의 차이 분석",
"creators": [
{
"firstName": "",
"lastName": "김현식",
"creatorType": "author"
}
],
"date": "2016/02",
"DOI": "10.21562/kjs.2016.02.50.1.41",
"ISSN": "1225-0120",
"abstractNote": "이 논문의 목적은 일탈행위의 사회학에 기초하여 한국 청소년의 일탈행위가 다문화가족 유형에 따라 다른지에 관한 이론적 가설을 도출하고, 이를 경험적으로 검증하는 것이다. 분석 자료로 2011년부터 2014년까지 수집된 청소년건강행태온라인조사를 활용하였다. 이 논문에서는 가족유형을 양 부모 한국출생, 어머니만 외국출생, 아버지만 외국출생, 양 부모 외국출생으로 분류하였고, 흡연, 음주, 인터넷 중독, 성관계 경험, 약물남용으로 일탈행위를 측정하였다. 각 일탈행위에 있어서의 차이에 더해 항목응답이론(item response theory)에 근거한 일탈행위성향을 측정한 후 집단별 일탈행위성향의 차이를 분석하였다. 분석결과, 어머니만 외국출생인 청소년은 양 부모가 한국출생인 청소년에 비해 인터넷 중독 위험이 높았으나 다른 일탈행위에 있어서는 다르지 않았고, 음주경험에서는 오히려 낮았다. 아버지만 외국출생인 청소년은 양 부모가 한국출생인 청소년에 비해 성관계 경험이나 약물남용 위험이 높았으나 다른 일탈행위에서는 차이를 보이지 않았다. 양 부모가 외국출생인 청소년은 양 부모가 한국출생인 청소년에 비해 음주를 제외한 모든 일탈행위에서 커다란 위험에 놓여 있었다. 이러한 분석결과는 다문화가족 청소년들이 처한 가족 및 사회적 환경이 하위 유형에 따라 다르기 때문에 각 집단에 알맞은 사회 통합 정책이 고안되어야함을 시사한다.",
"issue": "1",
"libraryCatalog": "www.dbpia.co.kr",
"pages": "41-74",
"publicationTitle": "한국사회학",
"url": "https://www.dbpia.co.kr/Journal/articleDetail?nodeId=NODE06648914",
"volume": "50",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Adolescents of multi-cultural families"
},
{
"tag": "juvenile delinquency"
},
{
"tag": "sociological theories of delinquency"
},
{
"tag": "다문화가족 청소년"
},
{
"tag": "사회학적 일탈론"
},
{
"tag": "일탈"
},
{
"tag": "일탈행위성향"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.dbpia.co.kr/search/topSearch?startCount=0&collection=ALL&range=A&searchField=ALL&sort=RANK&query=flight&srchOption=*&includeAr=false&searchOption=*",
"defer": true,
"items": "multiple"
}
]
/** END TEST CASES **/
100Philipp Zumstein, Bao Trinh^https?://(www\.)?(guardian\.co\.uk|theguardian\.com)//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2017-2021 Philipp Zumstein, Bao Trinh
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc) {
let contentType = attr(doc, 'meta[property="og:type"]', 'content');
switch (contentType) {
case "article":
return "newspaperArticle";
case "website":
default:
if (getSearchResults(doc, true)) {
return "multiple";
}
break;
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.fc-slice__item h3 a');
for (let row of rows) {
let href = row.href;
let title = row.textContent;
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), (items) => {
if (!items) {
return true;
}
const articles = [];
for (const i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
return true;
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
let authors = new Set();
for (let author of doc.querySelectorAll('a[rel="author"]')) {
authors.add(author.textContent);
}
// The authors in the metadata are incomplete and are not cleaned,
// but contain unneccessary data about location etc.
// Thus we try to take them directly from the byline.
let byline = text(doc, 'address[data-link-name="byline"] *');
if (byline) {
// parse out linked publications
byline = byline.split(/ for /)[0];
// parse out location
byline = byline.split(/\s*\b(?:in|at)\b\s*/)[0];
// parse authors from rest of byline
for (let author of byline.split(/\s*(?:\band\b|,)\s*/)) {
authors.add(author);
}
}
let linkedData = JSON.parse(text(doc, 'script[type="application/ld+json"]'));
if (Array.isArray(linkedData)) linkedData = linkedData.find(x => x["@type"] == "NewsArticle");
if (linkedData) {
if (linkedData.publisher) item.libraryCatalog = linkedData.publisher.name;
if (linkedData.publisher) item.publicationTitle = linkedData.publisher.name;
if (linkedData.author) {
for (let author of linkedData.author) {
authors.add(author.name);
}
}
if (linkedData.datePublished) item.date = linkedData.datePublished;
if (linkedData.headline) item.title = linkedData.headline;
if (linkedData.mainEntityOfPage) item.url = linkedData.mainEntityOfPage;
}
item.creators.length = 0;
for (let author of authors) {
if (author.match(/^(guardian staff|agenc(y|ies))/i)) continue;
item.creators.push(ZU.cleanAuthor(author, 'author'));
}
item.language = "en-GB";
if (text(doc, '[data-component="series"]') == "The Observer") {
item.publicationTitle = "The Observer";
item.ISSN = "0029-7712";
}
else {
item.ISSN = "0261-3077";
}
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.itemType = detectWeb(doc, url);
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.theguardian.com/world/2013/mar/05/hugo-chavez-dies-cuba",
"items": [
{
"itemType": "newspaperArticle",
"title": "Venezuela begins seven days of mourning after death of Hugo Chávez",
"creators": [
{
"firstName": "Jonathan",
"lastName": "Watts",
"creatorType": "author"
},
{
"firstName": "Virginia",
"lastName": "Lopez",
"creatorType": "author"
}
],
"date": "2013-03-06T15:38:00.000Z",
"ISSN": "0261-3077",
"abstractNote": "Death comes 21 months after it was revealed he had a tumour, and he will be given a state funeral in the capital",
"language": "en-GB",
"libraryCatalog": "The Guardian",
"publicationTitle": "The Guardian",
"section": "World news",
"url": "https://www.theguardian.com/world/2013/mar/05/hugo-chavez-dies-cuba",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Americas"
},
{
"tag": "Hugo Chávez"
},
{
"tag": "Venezuela"
},
{
"tag": "World news"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.theguardian.com/world/2013/mar/06/pentagon-iraqi-torture-centres-link",
"items": [
{
"itemType": "newspaperArticle",
"title": "Revealed: Pentagon's link to Iraqi torture centres",
"creators": [
{
"firstName": "Mona",
"lastName": "Mahmood",
"creatorType": "author"
},
{
"firstName": "Maggie",
"lastName": "O'Kane",
"creatorType": "author"
},
{
"firstName": "Chavala",
"lastName": "Madlena",
"creatorType": "author"
},
{
"firstName": "Teresa",
"lastName": "Smith",
"creatorType": "author"
}
],
"date": "2013-03-06T20:04:00.000Z",
"ISSN": "0261-3077",
"abstractNote": "Exclusive: General David Petraeus and 'dirty wars' veteran behind commando units implicated in detainee abuse See the full-length documentary film of the 15-month investigation",
"language": "en-GB",
"libraryCatalog": "The Guardian",
"publicationTitle": "The Guardian",
"section": "World news",
"shortTitle": "Revealed",
"url": "https://www.theguardian.com/world/2013/mar/06/pentagon-iraqi-torture-centres-link",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Americas"
},
{
"tag": "David Petraeus"
},
{
"tag": "El Salvador"
},
{
"tag": "Iraq"
},
{
"tag": "Middle East and North Africa"
},
{
"tag": "Nicaragua"
},
{
"tag": "Torture"
},
{
"tag": "US foreign policy"
},
{
"tag": "US military"
},
{
"tag": "US news"
},
{
"tag": "World news"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.theguardian.com/world/2013/feb/26/football-heaven-god-play?INTCMP=SRCH",
"items": [
{
"itemType": "newspaperArticle",
"title": "Is there football in heaven?",
"creators": [
{
"firstName": "Percy",
"lastName": "Zvomuya",
"creatorType": "author"
}
],
"date": "2013-02-26T17:18:55.000Z",
"ISSN": "0261-3077",
"abstractNote": "If there is, does God himself play? And if he does, what position, asks Percy Zvomuya?",
"language": "en-GB",
"libraryCatalog": "The Guardian",
"publicationTitle": "The Guardian",
"section": "World news",
"url": "https://www.theguardian.com/world/2013/feb/26/football-heaven-god-play",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Africa"
},
{
"tag": "Eric Cantona"
},
{
"tag": "Football"
},
{
"tag": "George Best"
},
{
"tag": "Religion"
},
{
"tag": "South Africa"
},
{
"tag": "World news"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.theguardian.com/media/2015/feb/18/peter-oborne-daily-telegraph-newspaper-unprecedented",
"items": [
{
"itemType": "newspaperArticle",
"title": "Peter Oborne: what I have seen is unprecedented in a quality newspaper",
"creators": [
{
"firstName": "Archie",
"lastName": "Bland",
"creatorType": "author"
}
],
"date": "2015-02-18T20:22:30.000Z",
"ISSN": "0261-3077",
"abstractNote": "The political commentator talks about the response to his attack on the Daily Telegraph, his hopes for the future of the paper – and why the distinction between deer hunting and deer stalking matters",
"language": "en-GB",
"libraryCatalog": "The Guardian",
"publicationTitle": "The Guardian",
"section": "Media",
"shortTitle": "Peter Oborne",
"url": "https://www.theguardian.com/media/2015/feb/18/peter-oborne-daily-telegraph-newspaper-unprecedented",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Barclay brothers"
},
{
"tag": "Daily Telegraph"
},
{
"tag": "Media"
},
{
"tag": "Murdoch MacLennan"
},
{
"tag": "National newspapers"
},
{
"tag": "Newspapers"
},
{
"tag": "Newspapers & magazines"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.theguardian.com/books/2011/nov/27/christmas-gifts-2011-books-tree",
"items": [
{
"itemType": "newspaperArticle",
"title": "Christmas gifts 2011: which books will be under your tree?",
"creators": [],
"date": "2011-11-27T00:05:08.000Z",
"ISSN": "0029-7712",
"abstractNote": "Our critics choose the books they intend to give this Christmas, and the ones they hope to receive",
"language": "en-GB",
"libraryCatalog": "The Guardian",
"publicationTitle": "The Observer",
"section": "Books",
"shortTitle": "Christmas gifts 2011",
"url": "https://www.theguardian.com/books/2011/nov/27/christmas-gifts-2011-books-tree",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Alan Hollinghurst"
},
{
"tag": "Art and design books"
},
{
"tag": "Best books of the year"
},
{
"tag": "Biography books"
},
{
"tag": "Books"
},
{
"tag": "Business and finance books"
},
{
"tag": "Caitlin Moran"
},
{
"tag": "Charles Dickens"
},
{
"tag": "Christopher Hitchens"
},
{
"tag": "Comics and graphic novels"
},
{
"tag": "Culture"
},
{
"tag": "Fiction"
},
{
"tag": "Food and drink books"
},
{
"tag": "Health"
},
{
"tag": "History books"
},
{
"tag": "Julian Barnes"
},
{
"tag": "Magazines"
},
{
"tag": "Magnum"
},
{
"tag": "Poetry"
},
{
"tag": "Private Eye"
},
{
"tag": "Robert Harris"
},
{
"tag": "Science and nature books"
},
{
"tag": "Thrillers"
},
{
"tag": "Tina Fey"
},
{
"tag": "mind and body books"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.theguardian.com/books/2018/may/27/bullshit-jobs-a-theory-david-graeber-review-laboured-rant",
"items": [
{
"itemType": "newspaperArticle",
"title": "Bullshit Jobs: A Theory review – laboured rant about the world of work",
"creators": [
{
"firstName": "Andrew",
"lastName": "Anthony",
"creatorType": "author"
}
],
"date": "2018-05-27T08:00:20.000Z",
"ISSN": "0029-7712",
"abstractNote": "David Graeber’s snarky study of the meaningless nature of modern employment adds little to our understanding of it",
"language": "en-GB",
"libraryCatalog": "The Guardian",
"publicationTitle": "The Observer",
"section": "Books",
"shortTitle": "Bullshit Jobs",
"url": "https://www.theguardian.com/books/2018/may/27/bullshit-jobs-a-theory-david-graeber-review-laboured-rant",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Books"
},
{
"tag": "Culture"
},
{
"tag": "Economics"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.theguardian.com/sport/blog/2021/aug/14/joe-root-forgets-englands-toils-and-refinds-secret-to-batting-immortality",
"items": [
{
"itemType": "newspaperArticle",
"title": "Joe Root forgets England’s toils and refinds secret to batting immortality",
"creators": [
{
"firstName": "Jonathan",
"lastName": "Liew",
"creatorType": "author"
}
],
"date": "2021-08-14T20:08:27.000Z",
"ISSN": "0261-3077",
"abstractNote": "The put-upon captain might have faded away in his fifth year in the job but instead he has played some of his greatest innings",
"language": "en-GB",
"libraryCatalog": "The Guardian",
"publicationTitle": "The Guardian",
"section": "Sport",
"url": "https://www.theguardian.com/sport/blog/2021/aug/14/joe-root-forgets-englands-toils-and-refinds-secret-to-batting-immortality",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Cricket"
},
{
"tag": "England cricket team"
},
{
"tag": "England v India 2021"
},
{
"tag": "India cricket team"
},
{
"tag": "Joe Root"
},
{
"tag": "Sport"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.theguardian.com/football/2021/aug/13/mikel-artetas-arsenal-already-on-back-foot-after-first-night-failure",
"items": [
{
"itemType": "newspaperArticle",
"title": "Arteta’s Arsenal already on back foot after bruising first night failure",
"creators": [
{
"firstName": "Nick",
"lastName": "Ames",
"creatorType": "author"
}
],
"date": "2021-08-13T22:36:53.000Z",
"ISSN": "0261-3077",
"abstractNote": "A comprehensive defeat by Premier League newcomers Brentford laid the Gunners’ problems starkly bare",
"language": "en-GB",
"libraryCatalog": "The Guardian",
"publicationTitle": "The Guardian",
"section": "Football",
"url": "https://www.theguardian.com/football/2021/aug/13/mikel-artetas-arsenal-already-on-back-foot-after-first-night-failure",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Arsenal"
},
{
"tag": "Brentford"
},
{
"tag": "Football"
},
{
"tag": "Mikel Arteta"
},
{
"tag": "Sport"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.theguardian.com/us-news/2021/aug/14/republican-leaders-fiddle-while-covid-burns-through-their-own-supporters",
"items": [
{
"itemType": "newspaperArticle",
"title": "Republican leaders fiddle while Covid burns through their own supporters",
"creators": [
{
"firstName": "David",
"lastName": "Smith",
"creatorType": "author"
}
],
"date": "2021-08-14T06:00:32.000Z",
"ISSN": "0261-3077",
"abstractNote": "Governors of states such as Florida and Texas, where the Delta variant is surging, have made masks and vaccines a partisan issue, in a lethal mix of ignorance, irrationality and nihilism",
"language": "en-GB",
"libraryCatalog": "The Guardian",
"publicationTitle": "The Guardian",
"section": "US news",
"url": "https://www.theguardian.com/us-news/2021/aug/14/republican-leaders-fiddle-while-covid-burns-through-their-own-supporters",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Coronavirus"
},
{
"tag": "Florida"
},
{
"tag": "Republicans"
},
{
"tag": "Texas"
},
{
"tag": "US news"
},
{
"tag": "US politics"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Sebastian Karcher^https?://slate\.com//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, _url) {
if (doc.querySelector('article.article')) {
return "magazineArticle";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('a.topic-story');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(text(row, '.topic-story__hed'));
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
item.title = text(doc, '.article__hed') || item.title;
item.abstractNote = text(doc, '.article__dek') || item.abstractNote;
item.section = text(doc, '.article__rubric');
item.ISSN = '1091-2339';
item.language = 'en-US';
item.publicationTitle = 'Slate';
let authors = attr(doc, 'meta[name="author"]', 'content');
if (authors.includes(', ') && item.creators.length <= 1) {
item.creators = authors.split(', ')
.map(name => ZU.cleanAuthor(name, 'author'));
}
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.itemType = "magazineArticle";
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://slate.com/news-and-politics/2011/10/new-deal-accomplishments-do-conservatives-who-attack-the-new-deal-actually-know-what-america-gained-from-it.html",
"items": [
{
"itemType": "magazineArticle",
"title": "What the New Deal Accomplished",
"creators": [
{
"firstName": "Michael",
"lastName": "Hiltzik",
"creatorType": "author"
}
],
"date": "2011-10-13T14:34:23+00:00",
"ISSN": "1091-2339",
"abstractNote": "651,000 miles of highway. 8,000 parks. The Triborough Bridge. Do conservatives who attack the New Deal actually know what America gained from it?",
"language": "en-US",
"libraryCatalog": "slate.com",
"publicationTitle": "Slate",
"url": "https://slate.com/news-and-politics/2011/10/new-deal-accomplishments-do-conservatives-who-attack-the-new-deal-actually-know-what-america-gained-from-it.html",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.slate.com/articles/life/dear_prudence.html",
"items": "multiple"
},
{
"type": "web",
"url": "https://slate.com/news-and-politics/2021/09/justice-stephen-breyer-retirement-fox-news-sunday.html",
"items": [
{
"itemType": "magazineArticle",
"title": "Justice Stephen Breyer: “I Don’t Intend to Die on the Court”",
"creators": [
{
"firstName": "Daniel",
"lastName": "Politi",
"creatorType": "author"
}
],
"date": "2021-09-12T21:56:36.223Z",
"ISSN": "1091-2339",
"abstractNote": "The 83-year-old justice said that those who are calling for his retirement “are entitled to their opinion.”",
"language": "en-US",
"libraryCatalog": "slate.com",
"publicationTitle": "Slate",
"shortTitle": "Justice Stephen Breyer",
"url": "https://slate.com/news-and-politics/2021/09/justice-stephen-breyer-retirement-fox-news-sunday.html",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://slate.com/news-and-politics/2021/09/august-wilson-john-lahr-exchange-letters-september-11.html",
"items": [
{
"itemType": "magazineArticle",
"title": "“What Damnable Horror!”",
"creators": [
{
"firstName": "John",
"lastName": "Lahr",
"creatorType": "author"
},
{
"firstName": "August",
"lastName": "Wilson",
"creatorType": "author"
}
],
"date": "2021-09-11T10:00:04.079Z",
"ISSN": "1091-2339",
"abstractNote": "Two great minds of American theater process 9/11 in real time.",
"language": "en-US",
"libraryCatalog": "slate.com",
"publicationTitle": "Slate",
"url": "https://slate.com/news-and-politics/2021/09/august-wilson-john-lahr-exchange-letters-september-11.html",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "new-york-city"
},
{
"tag": "sept-11"
},
{
"tag": "theater"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Denis Maier^https?://www\.dietmardreier\.de//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Denis Maier
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/detail/ISBN')) {
return "book";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('h4.biblioTitle a');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc) {
var item = new Zotero.Item("book");
// Set the title
item.title = ZU.xpathText(doc, '//h1[@class="biblioTitle"]');
if (ZU.xpathText(doc, '//div[@class="titles"]/div[@class="biblioSubTitle"]')) item.title += ": " + ZU.xpathText(doc, '//div[@class="titles"]/div[@class="biblioSubTitle"]');
// ISBN
item.ISBN = text(doc, '.biblioId .value');
// Publisher
item.publisher = text(doc, '.biblioPublisher .value');
// Publisher Location
item.place = text(doc, '.biblioPublicationTown .value');
// Publication Date
item.date = text(doc, '.biblioPublishingYear .value');
// Number of pages
item.numPages = text(doc, '.biblioPages .value');
// Abstract
item.abstractNote = text(doc, '.description .blurb .value');
// Get Creators
var creators = doc.querySelectorAll('.authorMain .biblioAuthor');
for (let creator of creators) {
let creatorName = creator.querySelector('.value').textContent;
let creatorRole;
// check for editors
if ((creator.textContent.includes("Hrsg.")) || (creator.textContent.includes("Editor")) || (creator.textContent.includes("Editeur"))) {
creatorRole = "editor";
}
// check for translators
else if ((creator.textContent.includes("Übersetzung")) || (creator.textContent.includes("Translator")) || (creator.textContent.includes("Traduction"))) {
creatorRole = "translator";
}
// everything else will be treated as authors
else {
creatorRole = "author";
}
item.creators.push(Zotero.Utilities.cleanAuthor(creatorName, creatorRole, creatorName.includes(', ')));
}
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.dietmardreier.de/de/detail/ISBN-9781792457418/Suehr-Christopher-J./A-Firm-Foundation",
"items": [
{
"itemType": "book",
"title": "A Firm Foundation: A Simple Introduction to the Christian Bible",
"creators": [
{
"firstName": "Christopher J.",
"lastName": "Suehr",
"creatorType": "author"
}
],
"date": "2020",
"ISBN": "9781792457418",
"abstractNote": "The Bible is big, complicated, and one of the most important books in human history.A Firm Foundation introduces the book that many call sacred, but few have studied.This versatile resource presents the Bible in plain language, with straightforward summaries, questions to facilitate discussion and reflection, and clearly defined terminology. It can stand alone, but works best as a companion to the bible.The material within has been used to teach a variety of students, including nonreligious beginners, clergy-in-training, English-language learners, and followers of other major world religions.Build a stronger understanding with A Firm Foundation.",
"libraryCatalog": "Dreier Neuerscheinungsdienst",
"numPages": "277 Seiten",
"place": "Iowa",
"publisher": "Kendall/Hunt Publishing Co ,U.S.Kendall",
"shortTitle": "A Firm Foundation",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.dietmardreier.de/de/detail/ISBN-9781626168084/Mosher-Lucinda/A-World-of-Inequalities",
"items": [
{
"itemType": "book",
"creators": [
{
"firstName": "Lucinda",
"lastName": "Mosher",
"creatorType": "editor"
}
],
"notes": [],
"tags": [],
"seeAlso": [],
"attachments": [],
"title": "A World of Inequalities: Christian and Muslim Perspectives",
"ISBN": "9781626168084",
"publisher": "Georgetown University Press",
"place": "Washington, DC",
"date": "2021",
"numPages": "253 Seiten",
"abstractNote": "In this volume, leading Christian and Muslim scholars respond to the global crisis of inequality by demanding and modeling interreligious dialogue. Essays explore the roots of these realities, how they are treated in Christian and Muslim traditions and texts, and how the two faiths can work together to address inequality.",
"libraryCatalog": "Dreier Neuerscheinungsdienst",
"shortTitle": "A World of Inequalities"
}
]
},
{
"type": "web",
"url": "https://www.dietmardreier.de/de/detail/ISBN-9783806240580/Nussbaum-Martha/Kosmopolitismus",
"items": [
{
"itemType": "book",
"title": "Kosmopolitismus: Revision eines Ideals",
"creators": [
{
"firstName": "Martha",
"lastName": "Nussbaum",
"creatorType": "author"
},
{
"firstName": "Manfred",
"lastName": "Weltecke",
"creatorType": "translator"
}
],
"date": "2020",
"ISBN": "9783806240580",
"abstractNote": "Was bedeutet die Würde des Menschen? Ein philosophischer Essay Der kynische Philosoph Diogenes bezeichnete sich selbst einen kosmopolitês, einen \"Bürger der Welt\". Damit war der Kosmopolitismus geboren. Ein Kosmopolit definiert sich als Mensch - unabhängig von seiner Abstammung, seinem Geschlecht oder seiner sozialen Herkunft. Diese Haltung ist die Geburtsstunde der Menschenwürde in der abendländischen Kultur. Die amerikanische Philosophin Martha Nussbaum erörtert in ihrem Essay die kulturelle Tradition des Kosmopolitismus in Europa seit der Antike. Sie erläutert die philosophische Idee grundlegend und zeigt Querverbindungen zu aktuellen gesellschaftlichen Debatten auf. Entwicklung der Idee einer universellen Menschenwürde von der Antike bis in die Gegenwart Ethische Dilemmas aus Pluralismus & Globalisierung: Kosmopolitismus als Lösung? Weiterentwicklung der philosophischen Idee: der Fähigkeitenansatz von Martha Nussbaum Tiefgründig und inspirierend: Die Autorin gilt als einflussreichste Philosophin der Gegenwart Die Grundlagen herausfordern: Viele Wesen, viele Arten von Würde Kann in Zeiten des Globalismus und Pluralismus der Kosmopolitismus eine Lösung für die aktuellen politisch-gesellschaftlichen Herausforderungen sein? Auf der Suche nach der Antwort untersucht Martha Nussbaum in ihrem Sachbuch die philosophische Strömung von den griechischen Stoikern und Cicero über Hugo Grotius, Immanuel Kant bis zu Adam Smith. Sie analysiert so den Einfluss des Kosmopolitismus in der politischen Theorie und benennt konsequent die Stärken und Defizite. Mit dem von ihr mitentwickelten Fähigkeitenansatz erweitert sie zudem den modernen Kosmopolitismus radikal über die menschliche Spezies hinaus. Eine tiefgründige Analyse sowohl für Philosophen als auch für politisch Interessierte: Dieses Buch regt zum Nachdenken an!",
"libraryCatalog": "Dreier Neuerscheinungsdienst",
"numPages": "352 Seiten",
"place": "Darmstadt",
"publisher": "wbg Theiss in Wissenschaftliche Buchgesellschaft (WBG)",
"shortTitle": "Kosmopolitismus",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://ps\.is\.tuebingen\.mpg\.de/publications/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, _url) {
if (doc.querySelector('.pre-container > .pre-no-wrap')) {
if (text(doc, '.publication-show-header-label').includes('Conference')) {
return 'conferencePaper';
}
else {
return 'journalArticle';
}
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('h5.publicationGridTitle > a');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
let bibText = text(doc, '.pre-container > .pre-no-wrap');
var translator = Zotero.loadTranslator("import");
translator.setTranslator("9cb70025-a888-4a29-a210-93ec52da40d4");
translator.setString(bibText);
translator.setHandler("itemDone", function (obj, item) {
if (item.publicationTitle) {
item.publicationTitle = item.publicationTitle
.replace(/Proc\./g, 'Proceedings of the')
.replace(/Conf\./g, 'Conference');
}
let pdfURL;
for (let icon of doc.querySelectorAll('.link-attachment-icon')) {
let link = icon.parentNode.querySelector('a');
if (!link) continue;
if (link.textContent.includes('official pdf')) {
pdfURL = link.href;
break;
}
else if (link.textContent.includes('pdf')
|| icon.className.includes('pdf')) {
pdfURL = link.href;
}
}
if (pdfURL) {
item.attachments.push({
title: 'Full Text PDF',
mimeType: 'application/pdf',
url: pdfURL
});
if (!item.url) {
item.url = url.replace(/[?#].*$/, '');
}
}
if (!item.abstractNote) {
item.abstractNote = text(doc, 'p > .text-muted');
}
item.complete();
});
translator.translate();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://ps.is.tuebingen.mpg.de/publications/kocabas_spec_2021",
"items": [
{
"itemType": "conferencePaper",
"title": "SPEC: Seeing People in the Wild with an Estimated Camera",
"creators": [
{
"firstName": "Muhammed",
"lastName": "Kocabas",
"creatorType": "author"
},
{
"firstName": "Chun-Hao P.",
"lastName": "Huang",
"creatorType": "author"
},
{
"firstName": "Joachim",
"lastName": "Tesch",
"creatorType": "author"
},
{
"firstName": "Lea",
"lastName": "Müller",
"creatorType": "author"
},
{
"firstName": "Otmar",
"lastName": "Hilliges",
"creatorType": "author"
},
{
"firstName": "Michael J.",
"lastName": "Black",
"creatorType": "author"
}
],
"date": "2021-10",
"itemID": "Kocabas_SPEC_2021",
"libraryCatalog": "Perceiving Systems",
"proceedingsTitle": "Proceedings of the International Conference on Computer Vision (ICCV)",
"shortTitle": "SPEC",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://ps.is.tuebingen.mpg.de/publications/kalyan_fermiproblems_2021",
"items": [
{
"itemType": "conferencePaper",
"title": "How much coffee was consumed during EMNLP 2019? Fermi Problems: A New Reasoning Challenge for AI",
"creators": [
{
"firstName": "Ashwin",
"lastName": "Kalyan",
"creatorType": "author"
},
{
"firstName": "Abhinav",
"lastName": "Kumar",
"creatorType": "author"
},
{
"firstName": "Arjun",
"lastName": "Chandrasekaran",
"creatorType": "author"
},
{
"firstName": "Ashish",
"lastName": "Sabharwal",
"creatorType": "author"
},
{
"firstName": "Peter",
"lastName": "Clark",
"creatorType": "author"
}
],
"date": "2021-11",
"abstractNote": "Many real-world problems require the combined application of multiple reasoning abilities -- employing suitable abstractions, commonsense knowledge, and creative synthesis of problem-solving strategies. To help advance AI systems towards such capabilities, we propose a new reasoning challenge, namely Fermi Problems (FPs), which are questions whose answers can only be approximately estimated because their precise computation is either impractical or impossible. For example, \"How much would the sea level rise if all ice in the world melted?\" FPs are commonly used in quizzes and interviews to bring out and evaluate the creative reasoning abilities of humans. To do the same for AI systems, we present two datasets: 1) A collection of 1k real-world FPs sourced from quizzes and olympiads; and 2) a bank of 10k synthetic FPs of intermediate complexity to serve as a sandbox for the harder real-world challenge. In addition to question-answer pairs, the datasets contain detailed solutions in the form of an executable program and supporting facts, helping in supervision and evaluation of intermediate steps. We demonstrate that even extensively fine-tuned large-scale language models perform poorly on these datasets, on average making estimates that are off by two orders of magnitude. Our contribution is thus the crystallization of several unsolved AI problems into a single, new challenge that we hope will spur further advances in building systems that can reason.",
"itemID": "Kalyan_FermiProblems_2021",
"libraryCatalog": "Perceiving Systems",
"proceedingsTitle": "Proceedings of the Conference on Empirical Methods in Natural Language Processing (EMNLP)",
"shortTitle": "How much coffee was consumed during EMNLP 2019?",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://ps.is.tuebingen.mpg.de/publications/smplpix-wacv-2020",
"items": [
{
"itemType": "conferencePaper",
"title": "SMPLpix: Neural Avatars from 3D Human Models",
"creators": [
{
"firstName": "Sergey",
"lastName": "Prokudin",
"creatorType": "author"
},
{
"firstName": "Michael J.",
"lastName": "Black",
"creatorType": "author"
},
{
"firstName": "Javier",
"lastName": "Romero",
"creatorType": "author"
}
],
"date": "2021-01",
"abstractNote": "Recent advances in deep generative models have led to an unprecedented level of realism for synthetically generated images of humans. However, one of the remaining fundamental limitations of these models is the ability to flexibly control the generative process, e.g. change the camera and human pose while retaining the subject identity. At the same time, deformable human body models like SMPL \\cite{loper2015smpl} and its successors provide full control over pose and shape, but rely on classic computer graphics pipelines for rendering. Such rendering pipelines require explicit mesh rasterization that (a) does not have the potential to fix artifacts or lack of realism in the original 3D geometry and (b) until recently, were not fully incorporated into deep learning frameworks. In this work, we propose to bridge the gap between classic geometry-based rendering and the latest generative networks operating in pixel space. We train a network that directly converts a sparse set of 3D mesh vertices into photorealistic images, alleviating the need for traditional rasterization mechanism. We train our model on a large corpus of human 3D models and corresponding real photos, and show the advantage over conventional differentiable renderers both in terms of the level of photorealism and rendering efficiency.",
"itemID": "SMPLpix:WACV:2020",
"libraryCatalog": "Perceiving Systems",
"pages": "1810–1819",
"proceedingsTitle": "Winter Conference on Applications of Computer Vision (WACV)",
"shortTitle": "SMPLpix",
"url": "https://ps.is.tuebingen.mpg.de/publications/smplpix-wacv-2020",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://ps.is.tuebingen.mpg.de/publications/aircaprl",
"items": [
{
"itemType": "journalArticle",
"title": "AirCapRL: Autonomous Aerial Human Motion Capture Using Deep Reinforcement Learning",
"creators": [
{
"firstName": "Rahul",
"lastName": "Tallamraju",
"creatorType": "author"
},
{
"firstName": "Nitin",
"lastName": "Saini",
"creatorType": "author"
},
{
"firstName": "Elia",
"lastName": "Bonetto",
"creatorType": "author"
},
{
"firstName": "Michael",
"lastName": "Pabst",
"creatorType": "author"
},
{
"firstName": "Yu Tang",
"lastName": "Liu",
"creatorType": "author"
},
{
"firstName": "Michael",
"lastName": "Black",
"creatorType": "author"
},
{
"firstName": "Aamir",
"lastName": "Ahmad",
"creatorType": "author"
}
],
"date": "2020-10",
"DOI": "https://doi.org/10.1109/LRA.2020.3013906",
"abstractNote": "In this letter, we introduce a deep reinforcement learning (DRL) based multi-robot formation controller for the task of autonomous aerial human motion capture (MoCap). We focus on vision-based MoCap, where the objective is to estimate the trajectory of body pose, and shape of a single moving person using multiple micro aerial vehicles. State-of-the-art solutions to this problem are based on classical control methods, which depend on hand-crafted system, and observation models. Such models are difficult to derive, and generalize across different systems. Moreover, the non-linearities, and non-convexities of these models lead to sub-optimal controls. In our work, we formulate this problem as a sequential decision making task to achieve the vision-based motion capture objectives, and solve it using a deep neural network-based RL method. We leverage proximal policy optimization (PPO) to train a stochastic decentralized control policy for formation control. The neural network is trained in a parallelized setup in synthetic environments. We performed extensive simulation experiments to validate our approach. Finally, real-robot experiments demonstrate that our policies generalize to real world conditions.",
"issue": "4",
"itemID": "aircaprl",
"libraryCatalog": "Perceiving Systems",
"pages": "6678 - 6685",
"publicationTitle": "IEEE Robotics and Automation Letters",
"shortTitle": "AirCapRL",
"url": "https://ieeexplore.ieee.org/document/9158379",
"volume": "5",
"attachments": [],
"tags": [],
"notes": [
{
"note": "<p>Also accepted and presented in the 2020 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS).</p>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://ps.is.tuebingen.mpg.de/publications",
"items": "multiple"
},
{
"type": "web",
"url": "https://ps.is.tuebingen.mpg.de/publications?utf8=%E2%9C%93&query=test",
"items": "multiple"
}
]
/** END TEST CASES **/
100Jens Mittelbach^https?://dabi\.ib\.hu-berlin\.de//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2018 Jens Mittelbach
Contact: mail@jensmittelbach.de
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes("/vollanzeige.pl?")) {
return "journalArticle";
}
else if (url.includes("/suche.pl?") && getSearchResults(doc, true)) {
return 'multiple';
}
return false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Z.selectItems(getSearchResults(doc, false), function (data) {
if (!data) return;
ZU.processDocuments(Object.keys(data), scrape);
});
}
else if (detectWeb(doc, url) == "journalArticle") {
scrape(doc, url);
}
}
function getSearchResults(doc, checkOnly) {
var trs = doc.getElementsByTagName("tr"),
data = {},
found = false;
for (var i = 1; i < trs.length; i++) {
var tds = trs[i].getElementsByTagName("td");
var url = ZU.xpathText(tds, './a/@href'),
author = tds[1].textContent,
title = tds[2].textContent.replace(/<br>/g, '. ');
var item;
if (author) {
item = title + " (" + author.replace(/;.*/, ' et al.') + ")";
}
else {
item = title;
}
if (!item || !url) continue;
if (checkOnly) return true;
found = true;
data[url] = item;
}
return found ? data : false;
}
function scrape(doc, _url) {
var newItem = new Zotero.Item('journalArticle');
var trs = doc.getElementsByTagName("tr"),
data = {};
for (var i = 0; i < trs.length; i++) {
var headers = trs[i].getElementsByTagName("th")[0].textContent;
var contents = trs[i].getElementsByTagName("td")[0].innerHTML;
data[headers.replace(/\s+/g, '')] = contents.trim();
}
// set url to fulltext resource, if present
if (data.URL) {
newItem.url = data.URL.replace(/<a.*?href="(.*?)".*/, "$1");
if (/\.pdf(#.*)?$/.test(newItem.url)) {
newItem.attachments = [{
url: newItem.url,
title: "DABI Full Text PDF",
mimeType: "application/pdf"
}];
delete newItem.url;
}
}
// Formatting and saving "title" fields
// Sometimes titles are missing
if (!data.Titel) {
data.Titel = data.Untertitel;
delete data.Untertitel;
}
if (data.Titel) {
newItem.title = data.Titel.replace(/\*/g, '');
if (data.Untertitel) {
if (/(\?|!|\.)\W?$/.test(newItem.title)) {
newItem.title += " " + data.Untertitel;
}
else {
newItem.title += ": " + data.Untertitel;
}
}
}
// Formatting and saving "Author" field
if (data.Autoren) {
var authors = data.Autoren.split("; ");
for (let author of authors) {
newItem.creators.push(ZU.cleanAuthor(author, "author", true));
}
}
// Formatting and saving "pages" field
if (data.Anfangsseite > 0) {
newItem.pages = data.Anfangsseite + (data.Endseite > data.Anfangsseite ? "-" + data.Endseite : "");
}
// Saving the tags to Zotero
if (data["Schlagwörter"]) {
newItem.tags = data["Schlagwörter"].split("; ");
}
// Making the publication title orthographic
if (data.Zeitschrift) {
newItem.publicationTitle = data.Zeitschrift.replace(/ : /g, ": ");
}
// Associating and saving the well formatted data to Zotero
newItem.date = data.Jahr;
newItem.issue = data.Heft;
newItem.volume = data.Band;
newItem.abstractNote = data.Abstract;
// Scrape is COMPLETE!
newItem.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://dabi.ib.hu-berlin.de/cgi-bin/dabi/vollanzeige.pl?artikel_id=13028&modus=html",
"items": [
{
"itemType": "journalArticle",
"title": "\"Mich interessierten kostengünstige Alternativen zu Citavi\": Über den Fortbildungsworkshop \"Literaturverwaltung im Fokus\" im Rahmen der AGMB-Tagung 2012",
"creators": [
{
"firstName": "Matti",
"lastName": "Stöhr",
"creatorType": "author"
}
],
"date": "2012",
"abstractNote": "Zum Programm der AGMB-Tagung 2012 in Aachen gehörte u.a. der zweistündige Fortbildungsworkshop \"Literaturverwaltung im Fokus - Softwaretypen, bibliothekarische Services und mehr\". Im Beitrag werden weniger die referierten Workshopinhalte beschrieben, als vielmehr die Perspektive der Teilnehmerinnen und Teilnehmer anhand einer eMail-basierten Umfrage vorgestellt. Die Kernfrage lautet hierbei: War der Workshop für sie gewinnbringend?",
"issue": "3",
"libraryCatalog": "DABI",
"publicationTitle": "GMS Medizin, Bibliothek, Information",
"shortTitle": "\"Mich interessierten kostengünstige Alternativen zu Citavi\"",
"url": "http://www.egms.de/static/de/journals/mbi/2012-12/mbi000261.shtml",
"volume": "12",
"attachments": [],
"tags": [
{
"tag": "Arbeitsgemeinschaft für Medizinisches Bibliothekswesen (AGMB)"
},
{
"tag": "Citavi"
},
{
"tag": "Literaturverwaltung"
},
{
"tag": "Literaturverwaltungssoftware"
},
{
"tag": "Tagung"
},
{
"tag": "Teilnehmerumfrage"
},
{
"tag": "Veranstaltungsbericht"
},
{
"tag": "Workshop"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://dabi.ib.hu-berlin.de/cgi-bin/dabi/suche.pl?titel=&autor=st%F6hr&schlagwort=&styp=¬ation=&zeitschrift=&jahr=&heft=&andor=AND&ordnung=titel&modus=html",
"items": "multiple"
},
{
"type": "web",
"url": "http://dabi.ib.hu-berlin.de/cgi-bin/dabi/vollanzeige.pl?artikel_id=16013&modus=html",
"items": [
{
"itemType": "journalArticle",
"title": "\"Frage stellen, Antwort bekommen, weiterarbeiten!\" - Umfrage zur Benutzung von UpToDate an den Universitäten Freiburg, Leipzig, Münster und Regensburg",
"creators": [
{
"firstName": "Oliver",
"lastName": "Obst",
"creatorType": "author"
},
{
"firstName": "Helge",
"lastName": "Knüttel",
"creatorType": "author"
},
{
"firstName": "Christiane",
"lastName": "Hofmann",
"creatorType": "author"
},
{
"firstName": "Petra",
"lastName": "Zöller",
"creatorType": "author"
}
],
"date": "2013",
"abstractNote": "UpToDate ist eine evidenzbasierte, von Ärzten erstellte Ressource zur Unterstützung der klinischen Entscheidungsfindung mit weitem Verbreitungsgrad in Deutschland. In einer Multicenter-Studie wurden Mediziner, Studierende, Wissenschaftler und sonstiges medizinisches Fachpersonal an vier deutschen Universitäten nach ihrer Nutzung und Beurteilung von UpToDate befragt. Insgesamt wurde die Umfrage 1.083-mal beantwortet, darunter von 540 Ärzten. 76% aller befragten Ärzte (aber nur 54% der Chefärzte) nutzten UpToDate. Die Unkenntnis über UpToDate betrug je nach Benutzergruppe zwischen 10 und 41%. 90 bis 95% aller klinisch tätigen Personen nannten als Hauptvorteil von UpToDate die schnelle, allgemeine Übersicht über Diagnose und Therapie von Erkrankungen. Jeder vierte Oberarzt wies auf verringerte Liegezeiten als Folge von UpToDate hin, (fast) jeder vierte Chefarzt gab an, dass UpToDate Kosten einspare. UpToDate ist eine wichtige, aber auch kostspielige Ressource in der Patientenbehandlung und sollte - angesichts der vorhandenen Unkenntnis über die Existenz dieser Ressource - stärker von den Bibliotheken beworben werden.",
"issue": "3",
"libraryCatalog": "DABI",
"publicationTitle": "GMS Medizin, Bibliothek, Information",
"url": "http://www.egms.de/static/de/journals/mbi/2013-13/mbi000290.shtml",
"volume": "13",
"attachments": [],
"tags": [
{
"tag": "Freiburg"
},
{
"tag": "Krankenversorgung"
},
{
"tag": "Leipzig"
},
{
"tag": "Medizin"
},
{
"tag": "Medizinbibliothek"
},
{
"tag": "Multicenter-Studie"
},
{
"tag": "Münster"
},
{
"tag": "Regensburg"
},
{
"tag": "Umfrage"
},
{
"tag": "Universität Freiburg"
},
{
"tag": "Universität Leipzig"
},
{
"tag": "Universität Münster"
},
{
"tag": "Universität Regensburg"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://dabi.ib.hu-berlin.de/cgi-bin/dabi/vollanzeige.pl?artikel_id=21283&modus=html",
"items": [
{
"itemType": "journalArticle",
"title": "\"Was ihr wollt!\" Nutzungsgesteuerter Einkauf von Medien an der Staatsbibliothek zu Berlin",
"creators": [
{
"firstName": "Janin",
"lastName": "Taubert",
"creatorType": "author"
}
],
"date": "2014",
"issue": "3",
"libraryCatalog": "DABI",
"pages": "79-81",
"publicationTitle": "Bibliotheks-Magazin",
"volume": "9",
"attachments": [
{
"title": "DABI Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Benutzerorientierter Bestandsaufbau"
},
{
"tag": "Benutzerorientierung"
},
{
"tag": "Berlin"
},
{
"tag": "Bestand"
},
{
"tag": "Bestandsaufbau"
},
{
"tag": "Bibliothekswesen"
},
{
"tag": "Demand Driven Acquisition (DDA)"
},
{
"tag": "E-Book"
},
{
"tag": "Evidence Based Selection (EBS)"
},
{
"tag": "Kundenorientierter Bestandsaufbau"
},
{
"tag": "Patron Driven Acquisition (PDA)"
},
{
"tag": "Purchase On Demand (POD)"
},
{
"tag": "Staatsbibliothek zu Berlin - Preußischer Kulturbesitz (SBB PK)"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://dabi.ib.hu-berlin.de/cgi-bin/dabi/vollanzeige.pl?artikel_id=5676&modus=html",
"items": [
{
"itemType": "journalArticle",
"title": "Anpassung der Personalstruktur der Fachhochschulbibliotheken in Nordrhein-Westfalen an die Erfordernisse der neunziger Jahre",
"creators": [],
"date": "1992",
"issue": "1",
"libraryCatalog": "DABI",
"pages": "364-372",
"publicationTitle": "Mitteilungsblatt des Verbandes der Bibliotheken des Landes Nordrhein-Westfalen",
"volume": "4",
"attachments": [],
"tags": [
{
"tag": "Nordrhein-Westfalen"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://dabi.ib.hu-berlin.de/cgi-bin/dabi/vollanzeige.pl?artikel_id=9481&modus=html",
"items": [
{
"itemType": "journalArticle",
"title": "\"Das bibliophile Flaggschiff Bayerns\": Auszug aus der Rede des damaligen Ministerpräsidenten Dr. Günther Beckstein",
"creators": [
{
"firstName": "Günther",
"lastName": "Beckstein",
"creatorType": "author"
}
],
"date": "2009",
"issue": "1",
"libraryCatalog": "DABI",
"pages": "46",
"publicationTitle": "Bibliotheksforum Bayern",
"shortTitle": "\"Das bibliophile Flaggschiff Bayerns\"",
"volume": "3",
"attachments": [
{
"title": "DABI Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Altes Buch"
},
{
"tag": "Ausstellung"
},
{
"tag": "Bayerische Staatsbibliothek (BSB) München"
},
{
"tag": "Bibel"
},
{
"tag": "Buchkunst"
},
{
"tag": "Buchmalerei"
},
{
"tag": "Handschrift"
},
{
"tag": "Illustration"
},
{
"tag": "Neues Testament"
},
{
"tag": "Ottheinrich-Bibel"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://pure\.mpg\.de//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, _url) {
if (doc.querySelector('meta[name="citation_title"]')) {
if (doc.querySelector('meta[name="citation_conference_title"]')) {
return "conferencePaper";
}
else {
return "journalArticle";
}
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.itemHeadline > a');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
// XPath works best here
item.abstractNote = ZU.xpathText(doc,
'//b[contains(text(), "Abstract")]/following-sibling::span');
item.libraryCatalog = 'MPG PuRe';
item.date = item.date.replace(/\//g, '-');
if (!item.url || item.url.includes('//pure.mpg.de/pubman/')) {
item.url = text(doc, '#form1\\:lnkCitationURLVersionPid') || item.url;
}
item.attachments = item.attachments.filter(a => a.title != 'Snapshot');
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://pure.mpg.de/pubman/faces/ViewItemFullPage.jsp?itemId=item_3174176",
"items": [
{
"itemType": "journalArticle",
"title": "Test–Retest Reliability of the Brain Metabolites GABA and Glx With JPRESS, PRESS, and MEGA‐PRESS MRS Sequences in vivo at 3T",
"creators": [
{
"firstName": "A.",
"lastName": "Baeshen",
"creatorType": "author"
},
{
"firstName": "P. O.",
"lastName": "Wyss",
"creatorType": "author"
},
{
"firstName": "A.",
"lastName": "Henning",
"creatorType": "author"
},
{
"firstName": "R. L.",
"lastName": "O'Gorman",
"creatorType": "author"
},
{
"firstName": "M.",
"lastName": "Piccirelli",
"creatorType": "author"
},
{
"firstName": "S.",
"lastName": "Kollias",
"creatorType": "author"
},
{
"firstName": "L.",
"lastName": "Michels",
"creatorType": "author"
}
],
"date": "2020-04",
"DOI": "10.1002/jmri.26921",
"ISSN": "1053-1807",
"abstractNote": "Background\n\nThe optimization of magnetic resonance spectroscopy (MRS) sequences allows improved diagnosis and prognosis of neurological and psychological disorders. Thus, to assess the test–retest and intersequence reliability of such MRS sequences in quantifying metabolite concentrations is of clinical relevance.\nPurpose\n\nTo evaluate the test–retest and intersequence reliability of three MRS sequences to estimate GABA and Glx = Glutamine+Glutamate concentrations in the human brain.\nStudy Type\n\nProspective.\nSubjects\n\nEighteen healthy participants were scanned twice (range: 1 day to 1 week between the two sessions) with identical protocols.\nField Strength/Sequence\n\n3T using a 32‐channel SENSE head coil in the PCC region; PRESS, JPRESS, and MEGA‐PRESS sequences.\nAssessment\n\nMetabolite concentrations were estimated using LCModel (for PRESS and MEGA‐PRESS) and ProFit2 (for JPRESS).\nStatistical Tests\n\nThe test–retest reliability was evaluated by Wilcoxon signed‐rank tests, Pearson's r correlation coefficients, intraclass‐correlation coefficients (ICC), coefficients of variation (CV), and by Bland–Altman (BA) plots. The intersequence reliability was assessed with Wilcoxon signed‐rank tests, Pearson's r correlation coefficients, and BA plots.\nResults\n\nFor GABA, only the MEGA‐PRESS sequence showed a moderate test–retest correlation (r = 0.54, ICC = 0.5, CV = 8.8%) and the BA plots indicated good agreement (P > 0.05) for all sequences. JPRESS provided less precise results and PRESS was insensitive to GABA. For Glx, the r and ICC values for PRESS (r = 0.87, ICC = 0.9, CV = 2.9%) and MEGA‐PRESS (r = 0.70, ICC = 0.7, CV = 5.3%) reflect higher correlations, compared with JPRESS (r = 0.39, ICC = 0.4, CV = 20.1%).",
"issue": "4",
"libraryCatalog": "MPG PuRe",
"pages": "1181-1191",
"publicationTitle": "Journal of Magnetic Resonance Imaging",
"url": "https://onlinelibrary.wiley.com/doi/epdf/10.1002/jmri.26921",
"volume": "51",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://pure.mpg.de/pubman/faces/ViewItemFullPage.jsp?itemId=item_3256816_2",
"items": [
{
"itemType": "journalArticle",
"title": "Neural correlates of modal displacement and discourse-updating under (un)certainty",
"creators": [
{
"firstName": "Maxime",
"lastName": "Tulling",
"creatorType": "author"
},
{
"firstName": "Ryan",
"lastName": "Law",
"creatorType": "author"
},
{
"firstName": "Ailís",
"lastName": "Cournane",
"creatorType": "author"
},
{
"firstName": "Liina",
"lastName": "Pylkkänen",
"creatorType": "author"
}
],
"date": "2020-12-07",
"DOI": "10.1523/ENEURO.0290-20.2020",
"abstractNote": "A hallmark of human thought is the ability to think about not just the actual world, but also about alternative ways the world could be. One way to study this contrast is through language. Language has grammatical devices for expressing possibilities and necessities, such as the words might or must. With these devices, called “modal expressions,” we can study the actual vs. possible contrast in a highly controlled way. While factual utterances such as “There is a monster under my bed” update the here-and-now of a discourse model, a modal version of this sentence, “There might be a monster under my bed,” displaces from the here-and-now and merely postulates a possibility. We used magnetoencephalography (MEG) to test whether the processes of discourse updating and modal displacement dissociate in the brain. Factual and modal utterances were embedded in short narratives, and across two experiments, factual expressions increased the measured activity over modal expressions. However, the localization of the increase appeared to depend on perspective: signal localizing in right temporo-parietal areas increased when updating others’ beliefs, while frontal medial areas seem sensitive to updating one’s own beliefs. The presence of modal displacement did not elevate MEG signal strength in any of our analyses. In sum, this study identifies potential neural signatures of the process by which facts get added to our mental representation of the world.Competing Interest StatementThe authors have declared no competing interest.",
"language": "eng",
"libraryCatalog": "MPG PuRe",
"url": "http://hdl.handle.net/21.11116/0000-0009-22A3-8",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://pure.mpg.de/pubman/faces/ViewItemFullPage.jsp?itemId=item_3339827_1",
"items": [
{
"itemType": "conferencePaper",
"title": "Euclid mission status after mission critical design",
"creators": [
{
"firstName": "R.",
"lastName": "Laureijs",
"creatorType": "author"
},
{
"firstName": "G. D.",
"lastName": "Racca",
"creatorType": "author"
},
{
"firstName": "Y.",
"lastName": "Mellier",
"creatorType": "author"
},
{
"firstName": "P.",
"lastName": "Musi",
"creatorType": "author"
},
{
"firstName": "L.",
"lastName": "Brouard",
"creatorType": "author"
},
{
"firstName": "T.",
"lastName": "Böenke",
"creatorType": "author"
},
{
"firstName": "L. Gaspar",
"lastName": "Venancio",
"creatorType": "author"
},
{
"firstName": "E.",
"lastName": "Maiorano",
"creatorType": "author"
},
{
"firstName": "A.",
"lastName": "Short",
"creatorType": "author"
},
{
"firstName": "P.",
"lastName": "Strada",
"creatorType": "author"
},
{
"firstName": "B.",
"lastName": "Altieri",
"creatorType": "author"
},
{
"firstName": "G.",
"lastName": "Buenadicha",
"creatorType": "author"
},
{
"firstName": "X.",
"lastName": "Dupac",
"creatorType": "author"
},
{
"firstName": "P. Gomez",
"lastName": "Alvarez",
"creatorType": "author"
},
{
"firstName": "J.",
"lastName": "Hoar",
"creatorType": "author"
},
{
"firstName": "R.",
"lastName": "Kohley",
"creatorType": "author"
},
{
"firstName": "R.",
"lastName": "Vavrek",
"creatorType": "author"
},
{
"firstName": "A.",
"lastName": "Rudolph",
"creatorType": "author"
},
{
"firstName": "M.",
"lastName": "Schmidt",
"creatorType": "author"
},
{
"firstName": "J.",
"lastName": "Amiaux",
"creatorType": "author"
},
{
"firstName": "H.",
"lastName": "Aussel",
"creatorType": "author"
},
{
"firstName": "M.",
"lastName": "Berthé",
"creatorType": "author"
},
{
"firstName": "M.",
"lastName": "Cropper",
"creatorType": "author"
},
{
"firstName": "J.-C.",
"lastName": "Cuillandre",
"creatorType": "author"
},
{
"firstName": "C.",
"lastName": "Dabin",
"creatorType": "author"
},
{
"firstName": "J.",
"lastName": "Dinis",
"creatorType": "author"
},
{
"firstName": "R.",
"lastName": "Nakajima",
"creatorType": "author"
},
{
"firstName": "T.",
"lastName": "Maciaszek",
"creatorType": "author"
},
{
"firstName": "R.",
"lastName": "Scaramella",
"creatorType": "author"
},
{
"firstName": "A.",
"lastName": "da Silva",
"creatorType": "author"
},
{
"firstName": "I.",
"lastName": "Tereno",
"creatorType": "author"
},
{
"firstName": "O. R.",
"lastName": "Williams",
"creatorType": "author"
},
{
"firstName": "A.",
"lastName": "Zacchei",
"creatorType": "author"
},
{
"firstName": "R.",
"lastName": "Azzollini",
"creatorType": "author"
},
{
"firstName": "F.",
"lastName": "Bernardeau",
"creatorType": "author"
},
{
"firstName": "J.",
"lastName": "Brinchmann",
"creatorType": "author"
},
{
"firstName": "C.",
"lastName": "Brockley-Blatt",
"creatorType": "author"
},
{
"firstName": "F.",
"lastName": "Castander",
"creatorType": "author"
},
{
"firstName": "A.",
"lastName": "Cimatti",
"creatorType": "author"
},
{
"firstName": "C.",
"lastName": "Conselice",
"creatorType": "author"
},
{
"firstName": "A.",
"lastName": "Ealet",
"creatorType": "author"
},
{
"firstName": "P.",
"lastName": "Fosalba",
"creatorType": "author"
},
{
"firstName": "W.",
"lastName": "Gillard",
"creatorType": "author"
},
{
"firstName": "L.",
"lastName": "Guzzo",
"creatorType": "author"
},
{
"firstName": "H.",
"lastName": "Hoekstra",
"creatorType": "author"
},
{
"firstName": "P.",
"lastName": "Hudelot",
"creatorType": "author"
},
{
"firstName": "K.",
"lastName": "Jahnke",
"creatorType": "author"
},
{
"firstName": "T.",
"lastName": "Kitching",
"creatorType": "author"
},
{
"firstName": "L.",
"lastName": "Miller",
"creatorType": "author"
},
{
"firstName": "J.",
"lastName": "Mohr",
"creatorType": "author"
},
{
"firstName": "W.",
"lastName": "Percival",
"creatorType": "author"
},
{
"firstName": "V.",
"lastName": "Pettorino",
"creatorType": "author"
},
{
"firstName": "J.",
"lastName": "Rhodes",
"creatorType": "author"
},
{
"firstName": "A.",
"lastName": "Sanchez",
"creatorType": "author"
},
{
"firstName": "M.",
"lastName": "Sauvage",
"creatorType": "author"
},
{
"firstName": "S.",
"lastName": "Serrano",
"creatorType": "author"
},
{
"firstName": "R.",
"lastName": "Teyssier",
"creatorType": "author"
},
{
"firstName": "J.",
"lastName": "Weller",
"creatorType": "author"
},
{
"firstName": "J.",
"lastName": "Zoubian",
"creatorType": "author"
}
],
"date": "2020-12-13",
"DOI": "10.1117/12.2563145",
"abstractNote": "Euclid, an ESA mission designed to characterise dark energy and dark matter, passed its Mission Critical Design Review in November 2018. It was demonstrated that the project is ready to start integration and test of the main systems, and that it has the ability to fulfil its top-level mission requirements. In addition, based on the performances at M-CDR, the scientific community has verified that the science requirements can be achieved for the Weak Lensing and Galaxy Clustering dark energy probes, namely a dark energy Figure of Merit of 400 and a 2% accuracy in the growth factor exponent gamma. We present the status of the main elements of the Euclid mission in the light of the demanding high optical performance which is the essential design driver is the to meet the scientific requirements. We include the space segment comprising of a service module and payload module hosting the telescope and its two scientific instruments, and the ground segment, which encompasses the operational and science ground segment. The elements for the scientific success of the mission for a timely release of the data are shortly presented: the processing and calibration of the data, and the design of the sky survey. Euclid is presently on schedule for a launch in September 2022.",
"conferenceName": "Conference on Space Telescopes and Instrumentation - Optical, Infrared, and Millimeter Wave",
"language": "eng",
"libraryCatalog": "MPG PuRe",
"url": "http://hdl.handle.net/21.11116/0000-0009-204B-F",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://pure.mpg.de/pubman/faces/SearchResultListPage.jsp?esq=%7B%22bool%22%3A%7B%22must%22%3A%5B%7B%22term%22%3A%7B%22publicState%22%3A%7B%22value%22%3A%22RELEASED%22%2C%22boost%22%3A1.0%7D%7D%7D%2C%7B%22bool%22%3A%7B%22should%22%3A%5B%7B%22simple_query_string%22%3A%7B%22query%22%3A%22test%22%2C%22flags%22%3A-1%2C%22default_operator%22%3A%22and%22%2C%22analyze_wildcard%22%3Atrue%2C%22auto_generate_synonyms_phrase_query%22%3Atrue%2C%22fuzzy_prefix_length%22%3A0%2C%22fuzzy_max_expansions%22%3A50%2C%22fuzzy_transpositions%22%3Atrue%2C%22boost%22%3A1.0%7D%7D%2C%7B%22bool%22%3A%7B%22should%22%3A%5B%7B%22term%22%3A%7B%22objectId%22%3A%7B%22value%22%3A%22test%22%2C%22boost%22%3A1.0%7D%7D%7D%2C%7B%22match%22%3A%7B%22objectPid%22%3A%7B%22query%22%3A%22test%22%2C%22operator%22%3A%22AND%22%2C%22prefix_length%22%3A0%2C%22max_expansions%22%3A50%2C%22fuzzy_transpositions%22%3Atrue%2C%22lenient%22%3Afalse%2C%22zero_terms_query%22%3A%22NONE%22%2C%22auto_generate_synonyms_phrase_query%22%3Atrue%2C%22boost%22%3A1.0%7D%7D%7D%2C%7B%22match%22%3A%7B%22versionPid%22%3A%7B%22query%22%3A%22test%22%2C%22operator%22%3A%22AND%22%2C%22prefix_length%22%3A0%2C%22max_expansions%22%3A50%2C%22fuzzy_transpositions%22%3Atrue%2C%22lenient%22%3Afalse%2C%22zero_terms_query%22%3A%22NONE%22%2C%22auto_generate_synonyms_phrase_query%22%3Atrue%2C%22boost%22%3A1.0%7D%7D%7D%2C%7B%22match%22%3A%7B%22metadata.identifiers.id%22%3A%7B%22query%22%3A%22test%22%2C%22operator%22%3A%22AND%22%2C%22prefix_length%22%3A0%2C%22max_expansions%22%3A50%2C%22fuzzy_transpositions%22%3Atrue%2C%22lenient%22%3Afalse%2C%22zero_terms_query%22%3A%22NONE%22%2C%22auto_generate_synonyms_phrase_query%22%3Atrue%2C%22boost%22%3A1.0%7D%7D%7D%2C%7B%22match%22%3A%7B%22metadata.sources.identifiers.id%22%3A%7B%22query%22%3A%22test%22%2C%22operator%22%3A%22AND%22%2C%22prefix_length%22%3A0%2C%22max_expansions%22%3A50%2C%22fuzzy_transpositions%22%3Atrue%2C%22lenient%22%3Afalse%2C%22zero_terms_query%22%3A%22NONE%22%2C%22auto_generate_synonyms_phrase_query%22%3Atrue%2C%22boost%22%3A1.0%7D%7D%7D%5D%2C%22adjust_pure_negative%22%3Atrue%2C%22boost%22%3A1.0%7D%7D%5D%2C%22adjust_pure_negative%22%3Atrue%2C%22boost%22%3A1.0%7D%7D%5D%2C%22adjust_pure_negative%22%3Atrue%2C%22boost%22%3A1.0%7D%7D",
"items": "multiple"
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://failedarchitecture\.com//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, _url) {
// we should support the podcast, but the page has such minimal metadata
// that we won't get anything very useful.
if (doc.body.classList.contains('non-podcast')
&& doc.querySelector('.post-content')) {
return "blogPost";
}
// no search
return false;
}
function doWeb(doc, url) {
scrape(doc, url);
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
if (!item.date) {
item.date = ZU.strToISO(text(doc, '.post-content__date'));
}
item.creators = [];
for (let author of doc.querySelectorAll('.post-header .author')) {
item.creators.push(ZU.cleanAuthor(author.textContent, 'author'));
}
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.itemType = 'blogPost';
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://failedarchitecture.com/any-challenge-to-the-uks-hostile-environment-has-to-start-by-exposing-its-data-infrastructure/",
"items": [
{
"itemType": "blogPost",
"title": "Any Challenge to the UK’s Hostile Environment Has to Start by Exposing Its Data Infrastructure",
"creators": [
{
"firstName": "Jake",
"lastName": "Arnfield",
"creatorType": "author"
}
],
"date": "2021-08-06",
"abstractNote": "Hidden data infrastructure is integral to advancements in the UK's immigration enforcement capabilities. Exposing this infrastructure will therefore b...",
"blogTitle": "Failed Architecture",
"language": "en",
"url": "https://failedarchitecture.com/any-challenge-to-the-uks-hostile-environment-has-to-start-by-exposing-its-data-infrastructure/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Sebastian Karcher^https?://hapi\.ucla\.edu/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2014 Sebastian Karcher
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes("article/citation")) return "journalArticle";
else if (getSearchResults(doc, true)) return "multiple";
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('a.title-link');
for (let row of rows) {
let href = '/article/citation/' + row.getAttribute('data-title');
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function scrape(doc, url) {
var id = url.match(/citation\/(\d+)/)[1];
var token = ZU.xpathText(doc, '(//input[@name="csrf_token"])[1]/@value');
var post = "csrf_token=" + token + "&articles=" + id;
var exportURL = "/article/export_for_endnote/";
var abstract = ZU.xpathText(doc, '//div[@class="container full-citation"]//table//th[contains(text(), "Abstract")]/following-sibling::td');
ZU.doPost(exportURL, post, function (text) {
var translator = Zotero.loadTranslator("import");
// Calling the RIS translator
translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7");
translator.setString(text);
translator.setHandler("itemDone", function (obj, item) {
item.notes = [];
if (abstract) {
item.abstractNote = abstract.replace(/\t+Abstract (reproduced|published) by .*/, "").trim();
}
item.attachments = [{
document: doc,
title: "Snapshot"
}];
item.complete();
});
translator.translate();
});
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://hapi.ucla.edu/article/citation/308849",
"items": [
{
"itemType": "journalArticle",
"title": "Millions of Small Battles: The Peronist Resistance in Argentina",
"creators": [
{
"lastName": "Seveso",
"firstName": "César",
"creatorType": "author"
}
],
"date": "2011",
"DOI": "10.1111/j.1470-9856.2010.00498.x",
"abstractNote": "This article studies the working‐class clandestine political organisation known as the Peronist resistance. Created after Argentine President Juan Perón was overthrown in 1955, the resistance movement was much more than a reaction to the limitations imposed on the organisation of unions. It signalled the birth of a new paradigm of political and cultural resistance firmly anchored in the household and the neighbourhood. Looking into the cultural dimensions of violence, the study shows how violence functioned as a creative force, producing transformations in political agency and cultural practices that reached into the Peronist household and shaped mourning rituals and the politics of martyrdom.",
"issue": "3",
"libraryCatalog": "Hispanic-American Periodical Index",
"pages": "313–327",
"publicationTitle": "Bulletin of Latin American Research",
"shortTitle": "Millions of Small Battles",
"url": "https://onlinelibrary.wiley.com/journal/10.1111/%28ISSN%291470-9856/issues",
"volume": "30",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Labor and laboring classes--Argentina--Political activity"
},
{
"tag": "Peronism"
},
{
"tag": "Social conflict--Argentina"
},
{
"tag": "culture"
},
{
"tag": "gender"
},
{
"tag": "memory"
},
{
"tag": "violence"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://hapi.ucla.edu/article/citation/344341",
"items": [
{
"itemType": "journalArticle",
"title": "Emilio Rabasa, narrador: la emergencia del pueblo en la representación narrativa del orden social de México",
"creators": [
{
"lastName": "Martínez Carrizales",
"firstName": "Leonardo",
"creatorType": "author"
}
],
"date": "2018",
"abstractNote": "Este artículo estudia los parámetros de representación simbólica del orden social de México que el escritor y jurista Emilio Rabasa Estebanell construyó por medio de los códigos de la narrativa literaria. Esta preocupación desbordó por completo el dominio de las escrituras específicamente jurídicas, parlamentarias y periodísticas. En este sentido, en este trabajo se considera que la novela forma parte de una compleja atmósfera de escrituras, discursos, debates y representaciones simbólicas, fuera de la cual no puede interpretarse plenamente. En apoyo de la constitución legal (racional, universal, abstracta) del orden social de la nación mexicana, Emilio Rabasa acudió constantemente a los instrumentos y procedimientos intelectuales de la narratividad con el propósito de reducir al sentido propio de los instrumentos y recursos del orden letrado una realidad problemática, a veces caótica con respecto de las certezas y los ideales de la mentalidad liberal. En esa escritura se destaca el afán de describir, explicar y, en último término, comprender, desde el horizonte de enunciación del liberalismo, las poderosas tradiciones populares de México. En consecuencia, Rabasa llegó a plantear narrativamente la emergencia del pueblo como un actor social que cambiaría el orden simbólico de México establecido por los discursos de la modernidad política. Este proceso se estudia en La Guerra de Tres Años (1891).",
"issue": "1",
"libraryCatalog": "Hispanic-American Periodical Index",
"pages": "37-69",
"publicationTitle": "Literatura Mexicana",
"shortTitle": "Emilio Rabasa, narrador",
"url": "https://revistas-filologicas.unam.mx/literatura-mexicana/index.php/lm/issue/archive",
"volume": "29",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "19th century"
},
{
"tag": "José Emilio Rabasa Estebanell--Criticism of specific works--La guerra de tres años"
},
{
"tag": "La constitución y la dictadura"
},
{
"tag": "Literature and society--Mexico"
},
{
"tag": "Mexican fiction"
},
{
"tag": "Politics in literature"
},
{
"tag": "jurisprudence"
},
{
"tag": "law"
},
{
"tag": "liberalism"
},
{
"tag": "narrative"
},
{
"tag": "novels"
},
{
"tag": "representations"
},
{
"tag": "social order"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://hapi.ucla.edu/search/?search_term_0=argentina",
"items": "multiple"
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://noorlib\.ir//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
let idRe = /(?:\/([a-z]{2}))?\/book\/(?:info|view)\/([^#?/]+)/;
function detectWeb(doc, url) {
if (idRe.test(url)) {
return "book";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
else if (url.includes('/search')) {
Z.monitorDOMChanges(doc.querySelector('.main-wrapper'));
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('a.book-link[href*="/book/"], a.book-title[href*="/book/"]');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
let [, lang, id] = url.match(idRe);
let risURL = attr(doc, '#refDownload > a[href*="RIS" i]', 'href');
if (!risURL) {
risURL = `/api/citation/getCitationFile?format=RIS&bookId=${id}&language=${lang}`;
}
ZU.doGet(risURL, function (risText) {
var translator = Zotero.loadTranslator("import");
translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7");
translator.setString(risText);
translator.setHandler("itemDone", function (obj, item) {
let hijri = false;
for (let dateElem of doc.querySelectorAll('[id^="publishYear"]')) {
let date = dateElem.textContent;
if (!hijri && date.includes('هجری')) { // hijri
item.date += lang == 'en' ? ' AH' : 'هـ ';
hijri = true;
}
else if (date.includes('میلادی')) { // miladi (gregorian)
item.date = ZU.strToISO(date);
break;
}
}
for (let creator of item.creators) {
if (creator.fieldMode && creator.lastName.includes('،')) {
let newCreator = ZU.cleanAuthor(
creator.lastName.replace(/،/g, ','),
creator.creatorType,
true
);
delete creator.fieldMode;
Object.assign(creator, newCreator);
}
}
// downloading full-text content requires repeated requests to check
// status and likely some manual user input, so it isn't possible
// here.
item.complete();
});
translator.translate();
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://noorlib.ir/en/book/info/939",
"items": [
{
"itemType": "book",
"title": "زندگانی حضرت امام حسین بن علی علیه السلام، بررسی و تحلیل (ترجمه)",
"creators": [
{
"lastName": "قرشی",
"creatorType": "author",
"firstName": "باقر شریف"
},
{
"lastName": "محفوظی موسوی",
"creatorType": "author",
"firstName": "حسین"
}
],
"date": "1380 AH",
"language": "فارسی",
"libraryCatalog": "Noor Digital Library",
"publisher": "بنیاد معارف اسلامی",
"series": "زندگانی حضرت امام حسین بن علی علیه السلام، بررسی و تحلیل (ترجمه)",
"url": "https://noorlib.ir/book/view/939",
"volume": "1",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://noorlib.ir/en/book/view/939?viewType=html",
"items": [
{
"itemType": "book",
"title": "زندگانی حضرت امام حسین بن علی علیه السلام، بررسی و تحلیل (ترجمه)",
"creators": [
{
"lastName": "قرشی",
"creatorType": "author",
"firstName": "باقر شریف"
},
{
"lastName": "محفوظی موسوی",
"creatorType": "author",
"firstName": "حسین"
}
],
"date": "1380",
"language": "فارسی",
"libraryCatalog": "Noor Digital Library",
"publisher": "بنیاد معارف اسلامی",
"series": "زندگانی حضرت امام حسین بن علی علیه السلام، بررسی و تحلیل (ترجمه)",
"url": "https://noorlib.ir/book/view/939",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://noorlib.ir/en/book/info/89234",
"items": [
{
"itemType": "book",
"title": "10 [عشر] الشخصية القوية",
"creators": [
{
"lastName": "کامل",
"creatorType": "author",
"firstName": "مجدی"
}
],
"date": "1997",
"language": "العربية",
"libraryCatalog": "Noor Digital Library",
"publisher": "دار الامین",
"series": "10 [عشر] الشخصية القوية",
"url": "https://noorlib.ir/book/view/89234",
"volume": "1",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://noorlib.ir/fa/book/info/66199",
"items": [
{
"itemType": "book",
"title": "ترتیب الفروق و إختصارها",
"creators": [
{
"lastName": "قرافی",
"creatorType": "author",
"firstName": "احمد بن ادریس"
},
{
"lastName": "ابن بقوری",
"creatorType": "author",
"firstName": "محمد"
},
{
"lastName": "ابن عباد",
"creatorType": "author",
"firstName": "عمر"
}
],
"date": "1994",
"language": "العربية",
"libraryCatalog": "Noor Digital Library",
"publisher": "المملکة المغربیة. وزارة الأوقاف و الشؤون الإسلامیة",
"series": "ترتیب الفروق و إختصارها",
"url": "https://noorlib.ir/book/view/66199",
"volume": "1",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://noorlib.ir/en/search?query=%D8%A7%D9%84%D9%82%D8%B1%D8%A2%D9%86",
"defer": true,
"items": "multiple"
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://library\.cqpress\.com//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/document.php?')) {
if (url.includes('/cqresearcher/')) {
// yes, these are "reports," but they have volume/issue numbers and
// are published like journal articles
return "journalArticle";
}
else if (url.includes('/congress/')
|| url.includes('/cqalmanac/')
|| url.includes('/pia/')
|| url.includes('/scyb/')) {
return "bookSection";
}
else if (url.includes('/cqmagazine/')) {
return "magazineArticle";
}
}
else if (getSearchResults(doc, url, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, url, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('a[href*="document.php?"]');
if (!rows.length) {
rows = doc.querySelectorAll('a[onclick*="popupDoc("]');
}
for (let row of rows) {
let href = row.getAttribute('href'); // prevent automatic relative -> absolute
let title = ZU.trimInternal(row.textContent);
if (/^\d+$/.test(title)) {
// sometimes the link is only on one part of the title:
// Brown, Scott P., [[466]]
title = ZU.trimInternal(row.parentNode.textContent);
}
if (href == '#') href = '';
if (!href && row.hasAttribute('onclick')) {
// pull out the query parameters and append them to
// `/<current publication>/document.php?`
href = url.replace(/\/[^/]*$/, '/document.php?')
+ (row.getAttribute('onclick').match(/'(.+)'/) || [])[1];
}
if (!href || !title || title.includes('Read the Full Report')) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, url, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
let id = url.match(/[?&]id=([^&#]+)/)[1];
var risURL = url.replace(/document\.php.*$/, `/citenow.php?id=${id}&action=endnote`);
ZU.doGet(risURL, function (risText) {
risText = risText
.replace(/^JO/m, 'T2')
.replace(/^UR/gm, 'L1') // demote all existing URLs
.replace(/^L2/m, 'UR'); // ...and replace them with L2, the correct one
var translator = Zotero.loadTranslator("import");
translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7"); // RIS
translator.setString(risText);
translator.setHandler("itemDone", function (obj, item) {
if (url.includes('/cqmagazine/')) {
item.itemType = 'magazineArticle';
}
// innerText to capture line breaks
let date = innerText(doc, '#main .date, .time-info, .topheader');
if (!item.date) item.date = ZU.strToISO(date);
let volume = date.match(/Volume (\w+)/);
if (volume) {
item.volume = volume[1];
}
let issue = date.match(/Issue (\w+)/);
if (issue) {
item.issue = issue[1];
}
item.abstractNote = text(doc, '#abstract');
item.attachments = [];
let pdfURL = attr(doc, 'iframe[src*=".pdf"]', 'src');
if (!pdfURL && url.includes('/cqresearcher/')) {
pdfURL = `/cqresearcher/getpdf.php?id=${id}`;
}
if (pdfURL) {
item.attachments.push({
title: 'Full Text PDF',
mimeType: 'application/pdf',
url: pdfURL
});
}
else {
item.attachments.push({
title: 'Snapshot',
document: doc
});
}
item.notes = [];
item.complete();
});
translator.translate();
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://library.cqpress.com/cqresearcher/document.php?id=cqresrre2021081300",
"items": [
{
"itemType": "journalArticle",
"title": "Hate Crimes",
"creators": [
{
"lastName": "Ladika",
"firstName": "Susan",
"creatorType": "author"
}
],
"date": "2021-08-13",
"ISSN": "1942-5635",
"abstractNote": "Hate crimes against Asian Americans have increased in the past year, a development that experts say is tied to the COVID-19 pandemic. From 2019 to 2020, bias-based crimes against Asians rose nearly 150 percent in major U.S. cities, and the trend has continued this year. Many blame the increase on the rhetoric of former President Donald Trump, who called COVID-19 the “China virus” and “kung flu.” While the pandemic has highlighted anti-Asian animus, hate crimes generally are on the rise against other racial, ethnic and religious groups and among people targeted due to their sexual orientation or gender identity. Researchers say these crimes are often significantly underreported and underprosecuted, and lawmakers hope new federal statutes designed to improve state and local hate crime reporting will better define the scope of the problem. Others say that merely gathering better statistics will not solve the problem and want more prosecutions of bias-based crimes. Critics of hate crime laws say they violate free speech rights and create special protections for certain groups based on political considerations.",
"issue": "29",
"libraryCatalog": "CQ Press",
"pages": "1-29",
"publicationTitle": "CQ Researcher",
"url": "http://library.cqpress.com/cqresearcher/cqresrre2021081300",
"volume": "31",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://library.cqpress.com/congress/document.php?id=pia115-Barton-Joe-L#",
"items": [
{
"itemType": "bookSection",
"title": "Barton, Joe L.",
"creators": [
{
"lastName": "CQ-Roll Call",
"creatorType": "editor",
"fieldMode": 1
}
],
"date": "2017",
"bookTitle": "Politics in America 2018. The 115th Congress",
"libraryCatalog": "CQ Press",
"place": "Washington, D.C., United States",
"publisher": "CQ-Roll Call, Inc.",
"series": "CQ Congress Collection",
"url": "http://library.cqpress.com/congress/pia115-Barton-Joe-L",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://library.cqpress.com/congress/document.php?id=rc1989-201-9316-574703&type=hitlist&num=0",
"items": [
{
"itemType": "bookSection",
"title": "Minimum-Wage Increase/Social Security Earnings Test (in Sen.) S 4",
"creators": [],
"date": "1990",
"ISBN": "9780871875488",
"bookTitle": "Congressional Roll Call 1989",
"libraryCatalog": "CQ Press",
"place": "Washington, D.C., United States",
"publisher": "CQ Press",
"series": "CQ Congress Collection",
"url": "http://library.cqpress.com/congress/rc1989-201-9316-574703",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://library.cqpress.com/cqalmanac/document.php?id=cqal12-1531-87293-2553227&type=toc&num=1",
"items": [
{
"itemType": "bookSection",
"title": "Bill Normalizes Trade with Russia",
"creators": [],
"date": "2013",
"ISBN": "9781452292601",
"bookTitle": "CQ Almanac 2012",
"libraryCatalog": "CQ Press",
"place": "Washington, D.C., United States",
"publisher": "CQ-Roll Call Group",
"series": "CQ Almanac Online Edition",
"url": "http://library.cqpress.com/cqalmanac/cqal12-1531-87293-2553227",
"volume": "68",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://library.cqpress.com/cqmagazine/document.php?id=weeklyreport117-000006302112",
"items": [
{
"itemType": "magazineArticle",
"title": "With border adjustment plan, trade could be new carbon battleground",
"creators": [],
"date": "2021-08-02",
"libraryCatalog": "CQ Press",
"publicationTitle": "CQ Magazine",
"url": "http://library.cqpress.com/cqmagazine/weeklyreport117-000006302112",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://library.cqpress.com/pia/document.php?id=OEpia112_1067",
"items": [
{
"itemType": "bookSection",
"title": "Baldwin, Tammy, D-Wis.",
"creators": [
{
"lastName": "Bicknell John",
"creatorType": "editor",
"fieldMode": 1
},
{
"lastName": "Meyers David",
"creatorType": "editor",
"fieldMode": 1
}
],
"date": "2011",
"ISBN": "9781608717996",
"bookTitle": "Politics in America 2012 (the 112th Congress)",
"libraryCatalog": "CQ Press",
"place": "Washington, D.C., United States",
"publisher": "CQ-Roll Call, Inc.",
"series": "Politics in America Online Edition",
"url": "http://library.cqpress.com/pia/OEpia112_1067",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://library.cqpress.com/scyb/document.php?id=scyb10-1270-70980-2380010&type=toc&num=1",
"items": [
{
"itemType": "bookSection",
"title": "American Electric Power Company, Inc. v. Connecticut",
"creators": [
{
"lastName": "Jost",
"firstName": "Kenneth",
"creatorType": "author"
}
],
"date": "2011",
"bookTitle": "Supreme Court Yearbook, 2010-2011",
"libraryCatalog": "CQ Press",
"place": "Washington, D.C., United States",
"publisher": "CQ Press",
"series": "Supreme Court Yearbook Online Edition",
"url": "http://library.cqpress.com/scyb/scyb10-1270-70980-2380010",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://library.cqpress.com/cqresearcher/search.php?fulltext=test&action=newsearch&sort=custom%3Asorthitsrank%2Cd&x=0&y=0",
"items": "multiple"
},
{
"type": "web",
"url": "https://library.cqpress.com/cqresearcher/index.php",
"items": "multiple"
},
{
"type": "web",
"url": "https://library.cqpress.com/scyb/toc.php?mode=scyb-topics&level=3&values=Environmental+Law%7EAir+Pollution",
"items": "multiple"
},
{
"type": "web",
"url": "https://library.cqpress.com/pia/static.php?id=oepia112_index#b",
"items": "multiple"
},
{
"type": "web",
"url": "https://library.cqpress.com/cqmagazine/",
"items": "multiple"
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://ntrl\.ntis\.gov/NTRL//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, _url) {
if (doc.querySelector('#detailsForm')) {
return "report";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('tr[data-rk]');
for (let row of rows) {
let rk = row.getAttribute('data-rk');
let title = ZU.trimInternal(text(row, 'span'));
if (!rk || !title) continue;
if (checkOnly) return true;
found = true;
items[`/NTRL/dashboard/searchResults/titleDetail/${rk}.xhtml`] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
let item = new Zotero.Item('report');
item.title = text(doc, '#detailsForm\\:itemTitle');
item.reportNumber = text(doc, '#detailsForm\\:itemAbbr');
item.date = ZU.strToISO(text(doc, '#detailsForm\\:publicationDate'));
item.numPages = text(doc, '#detailsForm\\:pageCount'); // will migrate in new schema
item.abstractNote = text(doc, '#detailsForm\\:summary');
item.institution = text(doc, '#detailsForm\\:corporateAuthors');
item.url = url.replace(/[?#].*$/, '');
for (let author of text(doc, '#detailsForm\\:personalAuthors').split('; ')) {
item.creators.push(ZU.cleanAuthor(author, 'author', true));
}
for (let tag of doc.querySelectorAll('#detailsForm\\:keywords_list li')) {
item.tags.push({ tag: tag.textContent.trim() });
}
let supplement = text(doc, '#detailsForm\\:supplementalNote');
if (supplement) {
item.notes.push({ note: supplement });
}
// we should grab the PDF, but it's only accessible via a POST request...
item.attachments.push({
title: 'Snapshot',
document: doc
});
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://ntrl.ntis.gov/NTRL/dashboard/searchResults/titleDetail/ADA551422.xhtml",
"items": [
{
"itemType": "report",
"title": "Convection Processes in the Ocean-Laboratory and Theoretical Studies.",
"creators": [
{
"firstName": "J. A.",
"lastName": "Whitehead",
"creatorType": "author"
}
],
"date": "1998",
"abstractNote": "My long-term goal is to make observations in the laboratory and then conduct associated experiments based on the theory of nonlinear fluid dynamics in the ocean. Two processes were studied recently. The first is the behavior of convective flow driven by two distinct buoyancy sources in which more than one flow pattern is found for exactly the same forcing conditions. A primary objective was to determine the quantitative role of mixing upon circulation. The second is the strength and size of flows from sidewall forcing in rotating stratified fluid. The primary objective was to document the flow patterns near a line source of heat located at mid-depth on the periphery of a cylinder in a rotating stratified fluid. Both are poorly understood but known to be important in assorted oceanic phenomena. With the ultimate objective of conducting experiments for rotating flows, we have been able to develop a chamber whose floor was heated and which has an inflow of salty water near the top. This chamber was connected to a large tank of room temperature fresh water through a slot. The prototype experiments indicated that mixing within the chamber must be limited for the flows to differ from the simple box models mentioned above. Thus a theory for undermixed exchange flow was developed (theory supported by NSF) and successfully tested. The results were used to design an undermixed doubly driven chamber. Mixing was varied by changing the elevation of a tube which introduces the salty water. For boundary layer processes in rotating stratified fluid, boundary layers produced by heating from the side have been produced in a laboratory cylinder of thermally stratified water on a turntable. The results are compared with calculations by Joseph Pedlosky. A variety of other theoretical solutions have been developed which reveal these boundary layers and their strength in great detail.",
"institution": "Woods Hole Oceanographic Institution, MA.",
"libraryCatalog": "National Technical Reports Library",
"reportNumber": "ADA551422",
"url": "https://ntrl.ntis.gov/NTRL/dashboard/searchResults/titleDetail/ADA551422.xhtml",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Boundary layer"
},
{
"tag": "Buoyancy"
},
{
"tag": "Chambers"
},
{
"tag": "Convection"
},
{
"tag": "Convective flow"
},
{
"tag": "Cylindrical bodies"
},
{
"tag": "Density"
},
{
"tag": "Fluid dynamics"
},
{
"tag": "Fresh water"
},
{
"tag": "Laboratory tests"
},
{
"tag": "Mixing"
},
{
"tag": "Nonlinear fluid dynamics"
},
{
"tag": "Rotating flows"
},
{
"tag": "Rotation"
},
{
"tag": "Salinity"
},
{
"tag": "Salt water"
},
{
"tag": "Stratification"
},
{
"tag": "Stratified fluids"
},
{
"tag": "Temperature"
}
],
"notes": [
{
"note": "See also ADM002252."
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://ntrl.ntis.gov/NTRL/dashboard/searchResults/titleDetail/PB2000102396.xhtml",
"items": [
{
"itemType": "report",
"title": "Preconceptual Design Studies and Cost Data of Depleted Uranium Hexafluoride Conversion Plants.",
"creators": [],
"date": "1999",
"abstractNote": "One of the more important legacies left with the Department of Energy (DOE) after the privatization of the United States Enrichment Corporation is the large inventory of depleted uranium hexafluoride (DUF6). The current DUF6 program has largely focused on the ongoing maintenance of the cylinders containing DUF6. The first step for future use or disposition is to convert the material, which requires construction and long-term operation of one or more conversion plants. This report contains the final results from a preconceptual design study project. In this fast track, three month effort, Lawrence Livermore National Laboratory and Bechtel National Incorporated developed and evaluated seven different preconceptual design cases for a single plant. The preconceptual design, schedules, costs, and issues associated with specified DUF6 conversion approaches, operating periods, and ownership options were evaluated based on criteria established by DOE. The single-plant conversion options studies were similar to the dry-conversion process alternatives from the PEIS. For each of the seven cases considered, this report contains information on the conversion process, preconceptual plant description, rough capital and operating costs, and preliminary project schedule.",
"institution": "Lawrence Livermore National Lab., CA.; Bechtel National, Inc., San Francisco, CA.; Department of Energy, Washington, DC. Office of Nuclear Energy, Science",
"libraryCatalog": "National Technical Reports Library",
"reportNumber": "PB2000102396",
"url": "https://ntrl.ntis.gov/NTRL/dashboard/searchResults/titleDetail/PB2000102396.xhtml",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Capitalized costs"
},
{
"tag": "Conversion plants"
},
{
"tag": "Cost estimates"
},
{
"tag": "Depleted uranium"
},
{
"tag": "Design analysis"
},
{
"tag": "Facilities management"
},
{
"tag": "Nuclear fuel conversion"
},
{
"tag": "Operating costs"
},
{
"tag": "Operation and maintenance"
},
{
"tag": "Process flow"
},
{
"tag": "Project planning"
},
{
"tag": "Scheduling"
},
{
"tag": "Uranium hexafluoride"
}
],
"notes": [
{
"note": "See also DE90002698, DE99002697, and DE98052047. Prepared in cooperation with Bechtel National, Inc., San Francisco, CA. Sponsored by Department of Energy, Washington, DC. Office of Nuclear Energy, Science and Technology."
}
],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Avram Lyon and Abe Jellinek^https?://((www|gandhara)\.rferl\.org/|www\.azatliq\.org/|www\.azattyq\.org/|rus\.azattyq\.org/|da\.azadiradio\.com/|pa\.azadiradio\.com/|www\.azattyk\.org/|www\.ozodi\.org/|www\.ozodlik\.org/|www\.evropaelire\.org/|www\.slobodnaevropa\.org/|www\.makdenes\.org/|www\.iraqhurr\.org/|www\.radiofarda\.com/|www\.azatutyun\.am/|www\.azadliq\.org/|www\.svaboda\.org/|www\.svoboda\.org/|www\.tavisupleba\.org/|www\.azathabar\.com/|www\.svobodanews\.ru/|(romania|moldova)\.europalibera\.org/|www\.radiosvoboda\.org/)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2011-2021 Avram Lyon and Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
/*
This translator works on articles posted on the websites of Radio Free Europe / Radio Liberty.
It imports the basic metadata the site provides, from normal article pages and from search
result pages.
The translator tries to work on all of the languages of RFE/RL; they should all work.
Editions:
English: http://www.rferl.org/
Tatar/Bashkir: http://www.azatliq.org/
Kazakh: http://www.azattyq.org/ (Kazakh)
http://rus.azattyq.org/ (Russian)
Afghan: http://da.azadiradio.com/ (Dari)
http://pa.azadiradio.com/ (Pashto)
https://gandhara.rferl.org (English)
Kirghiz: http://www.azattyk.org/
Tajik: http://www.ozodi.org/
Uzbek: http://www.ozodlik.org/
Albanian: http://www.evropaelire.org/
Bosnian/Montenegrin/Serbian:
http://www.slobodnaevropa.org/
Macedonian: http://www.makdenes.org/
Iraqi Arabic: http://www.iraqhurr.org/
Farsi: http://www.radiofarda.com/
Armenian: http://www.azatutyun.am/
Azerbaijani: http://www.azadliq.org/
Belarus: http://www.svaboda.org/
Georgian: http://www.tavisupleba.org/
Turkmen: http://www.azathabar.com/
Russian: http://www.svobodanews.ru/ and svoboda.org
Moldovan: http://www.europalibera.org/ (Romanian)
Ukrainian: http://www.radiosvoboda.org/
This translator does not yet attempt to work with the video files that Radio Liberty
hosts and produces; EM covers those.
Another future improvement would be the facility to import from the front page and subject
pages. This is not yet possible.
*/
function detectWeb(doc, _url) {
if (doc.body.classList.contains('pg-article')) {
return "newspaperArticle";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.media-block');
for (let row of rows) {
let link = row.querySelector('.media-block__content > a');
if (!link || row.querySelector('.ico-video')) continue; // exclude videos
let href = link.href;
let title = ZU.trimInternal(link.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
let json = JSON.parse(text(doc, 'script[type="application/ld+json"]'));
if (json.author) {
let clean = authors => authors
.filter(author => author.name && !author.name.startsWith('RFE/RL'))
.map(author => ZU.cleanAuthor(ZU.capitalizeName(author.name), 'author'));
item.creators = clean(
Array.isArray(json.author)
? json.author
: [json.author]);
}
item.date = json.dateModified || json.datePublished;
item.section = ZU.unescapeHTML(json.articleSection);
if (item.publicationTitle == 'RadioFreeEurope/RadioLiberty') {
item.publicationTitle = 'Radio Free Europe/Radio Liberty';
}
if (item.abstractNote) {
item.abstractNote = ZU.unescapeHTML(item.abstractNote);
}
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.itemType = "newspaperArticle";
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.azatliq.org/a/24281041.html",
"items": [
{
"itemType": "newspaperArticle",
"title": "Татар яшьләре татарлыкны сакларга тырыша",
"creators": [
{
"firstName": "гүзәл",
"lastName": "мәхмүтова",
"creatorType": "author"
}
],
"date": "2011-07-29 21:16:41Z",
"abstractNote": "Бу көннәрдә “Идел” җәйләвендә XXI Татар яшьләре көннәре үтә. Яшьләр вакытларын төрле чараларда катнашып үткәрә.",
"language": "tt",
"libraryCatalog": "www.azatliq.org",
"publicationTitle": "Азатлык Радиосы",
"section": "татарстан",
"url": "https://www.azatliq.org/a/24281041.html",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "татарстан"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.svoboda.org/a/24382010.html",
"items": [
{
"itemType": "newspaperArticle",
"title": "Партия \"Яблоко\" перевела свою предвыборную программу на 18 языков",
"creators": [],
"date": "2011-11-05 02:52:48Z",
"abstractNote": "Партия \"Яблоко\" в День народного единства, который в пятницу отмечался в России, представила свою программу на предстоящих выборах в Госдуму на 18 языках.\nПредседатель \"Яблока\" Сергей Митрохин назвал интернет-презентацию документа \"Россия требует перемен!\" ответом на \"Русские марши\". \"Мы...",
"language": "ru",
"libraryCatalog": "www.svoboda.org",
"publicationTitle": "Радио Свобода",
"section": "Новости",
"url": "https://www.svoboda.org/a/24382010.html",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Главные разделы"
},
{
"tag": "Новости"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.rferl.org/a/kyrgyzstan-webcam-sex-workers-blackmail/31371806.html",
"items": [
{
"itemType": "newspaperArticle",
"title": "The Sinister Side Of Kyrgyzstan's Online Sex Industry",
"creators": [
{
"firstName": "Ulanbek",
"lastName": "Asanaliev",
"creatorType": "author"
},
{
"firstName": "Ray",
"lastName": "Furlong",
"creatorType": "author"
},
{
"firstName": "Carl",
"lastName": "Schreck",
"creatorType": "author"
}
],
"date": "2021-07-27 11:14:58Z",
"abstractNote": "An RFE/RL investigation reveals how young Kyrgyz women trying to make ends meet as online sex workers are subject to abuse, blackmail, and even rape.",
"language": "en",
"libraryCatalog": "www.rferl.org",
"publicationTitle": "Radio Free Europe/Radio Liberty",
"section": "Kyrgyzstan",
"url": "https://www.rferl.org/a/kyrgyzstan-webcam-sex-workers-blackmail/31371806.html",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Features"
},
{
"tag": "Kyrgyzstan"
},
{
"tag": "Picks"
},
{
"tag": "Watchdog"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.rferl.org/a/uzbek-corruption-covid-president/31330444.html",
"items": [
{
"itemType": "newspaperArticle",
"title": "Companies Linked To Uzbek Government Won Major COVID Construction Contracts",
"creators": [],
"date": "2021-07-01 08:17:00Z",
"abstractNote": "Construction contracts for two major COVID-19 medical facilities near Tashkent went to companies linked to the Uzbek president’s inner circle and the capital city’s mayor, according to an RFE/RL investigation.",
"language": "en",
"libraryCatalog": "www.rferl.org",
"publicationTitle": "Radio Free Europe/Radio Liberty",
"section": "Uzbekistan",
"url": "https://www.rferl.org/a/uzbek-corruption-covid-president/31330444.html",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "News"
},
{
"tag": "Picks"
},
{
"tag": "The Coronavirus Crisis"
},
{
"tag": "Uzbekistan"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.azattyq.org/a/toqayev-address-to-the-nation/31438870.html",
"items": [
{
"itemType": "newspaperArticle",
"title": "Тоқаевтың \"дұрыс жолы\", \"уақыт созу\" және \"алтыншы мәселеге айналған\" саяси реформа",
"creators": [
{
"firstName": "Асылхан",
"lastName": "МАМАШҰЛЫ",
"creatorType": "author"
}
],
"date": "2021-09-01 16:45:29Z",
"abstractNote": "Қазақстан президенті Қасым-Жомарт Тоқаев халыққа жолдауында экономика, денсаулық, білім, өңірлік саясат, еңбек нарығы және саяси жаңғыру туралы айтты. Мәжілістің бірлескен отырысында әдеттегідей орысша-қазақша араластыра оқыған жолдауында президент Қазақстанның саяси жаңғыру мен адам құқықтары...",
"language": "kk",
"libraryCatalog": "www.azattyq.org",
"publicationTitle": "Азаттық радиосы",
"section": "ҚАЗАҚСТАН",
"url": "https://www.azattyq.org/a/toqayev-address-to-the-nation/31438870.html",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "БАС ТАҚЫРЫПТАР"
},
{
"tag": "ЖАЛПЫ АРХИВ"
},
{
"tag": "Президент жолдауы"
},
{
"tag": "Тоқаев саяси реформа"
},
{
"tag": "тоқаев адам құқықтары"
},
{
"tag": "тоқаев жолдау"
},
{
"tag": "тоқаев парламент"
},
{
"tag": "ҚАЗАҚСТАН"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://gandhara.rferl.org/a/taliban-interview-female-journalist/31437308.html",
"items": [
{
"itemType": "newspaperArticle",
"title": "Plans Ruined, Dreams Shattered: Female Journalist In Kabul Deals With New Reality",
"creators": [
{
"firstName": "Farangis",
"lastName": "Najibullah",
"creatorType": "author"
}
],
"date": "2021-08-31 17:07:14Z",
"abstractNote": "Very few women in Kabul dare to return to their jobs these days after the Taliban told them to stay home \"for now\" for their own security. RFE/RL spoke to a young journalist -- one of a handful of women who continues to work despite the risks amid the chaos in the Afghan capital.",
"language": "en",
"libraryCatalog": "gandhara.rferl.org",
"publicationTitle": "RFE/RL",
"section": "Afghanistan",
"shortTitle": "Plans Ruined, Dreams Shattered",
"url": "https://gandhara.rferl.org/a/taliban-interview-female-journalist/31437308.html",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Afghanistan"
},
{
"tag": "Features"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.azattyk.org/a/kumtor-karieri-centerranyn-kooptonuusu-kyrgyz-taraptyn-jooby/31438681.html",
"items": [
{
"itemType": "newspaperArticle",
"title": "Кумтөр карьериндеги абал: \"Центерранын\" кооптонуусу, бийликтин жообу",
"creators": [
{
"firstName": "Токтосун",
"lastName": "Шамбетов",
"creatorType": "author"
}
],
"date": "2021-09-01 14:50:49Z",
"abstractNote": "Кумтөр боюнча кыргыз бийлиги менен соттошуп жаткан канадалык \"Центерра\" компаниясы алтын кендеги карьерде топтолгон суунун деңгээли көтөрүлүп жатканын, анын кесепетине кооптонуусун билдирди.\n\"Центерранын тынчсыздануусу\"\nКанадалык \"Центерра Голд\" компаниясы Кумтөр кенинин карьеринде топтолгон...",
"language": "ky",
"libraryCatalog": "www.azattyk.org",
"publicationTitle": "Азаттык Υналгысы",
"section": "Саясат",
"shortTitle": "Кумтөр карьериндеги абал",
"url": "https://www.azattyk.org/a/kumtor-karieri-centerranyn-kooptonuusu-kyrgyz-taraptyn-jooby/31438681.html",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Дүйнө"
},
{
"tag": "Коопсуздук"
},
{
"tag": "Кумтөр"
},
{
"tag": "Кыргызстан"
},
{
"tag": "Макалалар архиви"
},
{
"tag": "Саясат"
},
{
"tag": "Центерра"
},
{
"tag": "карьер"
},
{
"tag": "кендеги карьер"
},
{
"tag": "кыргызстан"
},
{
"tag": "суу"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.ozodi.org/a/31439085.html",
"items": [
{
"itemType": "newspaperArticle",
"title": "Шурӯи таҳсил дар мактабҳои Тоҷикистон бо нигаронӣ аз бемории ҳамагир. ВИДЕО",
"creators": [
{
"firstName": "Алишер",
"lastName": "Зарифӣ",
"creatorType": "author"
},
{
"firstName": "Шаҳлои",
"lastName": "Абдуллоҳ",
"creatorType": "author"
}
],
"date": "2021-09-01 17:17:54Z",
"abstractNote": "Намояндагони Созмони Ҷаҳонии Тандурустӣ ва ЮНИСЕФ аз кишварҳо хостаанд, ки ҳама чораҳои зарурӣ, аз ҷумла эм кардани муаллимонро биандешанд, то бо вуҷуди паҳншавии навъи \"делта\"-и коронавирус дари мактабҳо кушода бимонанд.",
"language": "tg",
"libraryCatalog": "www.ozodi.org",
"publicationTitle": "Радиои Озодӣ",
"section": "Ҷомeа",
"url": "https://www.ozodi.org/a/31439085.html",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Матолиби навтарин"
},
{
"tag": "Тоҷикистон"
},
{
"tag": "Ҷомeа"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.evropaelire.org/a/profesionistes--kabul--shqetesohen-te-ardhmen/31435595.html",
"items": [
{
"itemType": "newspaperArticle",
"title": "Profesionistët e rinj në Kabul shqetësohen për të ardhmen e tyre",
"creators": [
{
"firstName": "Farangis",
"lastName": "Najibullah",
"creatorType": "author"
}
],
"date": "2021-09-01 18:42:59Z",
"language": "sq",
"libraryCatalog": "www.evropaelire.org",
"publicationTitle": "Radio Evropa e Lirë",
"section": "Nga këndi ynë",
"url": "https://www.evropaelire.org/a/profesionistes--kabul--shqetesohen-te-ardhmen/31435595.html",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Afganistani"
},
{
"tag": "Botë"
},
{
"tag": "Nga këndi ynë"
},
{
"tag": "afganet"
},
{
"tag": "kufizimet e lirise"
},
{
"tag": "profesionistet"
},
{
"tag": "regjimi taliban"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.slobodnaevropa.org/a/uragan-ida-klimatske-promjene-infrastruktura-sad/31437255.html",
"items": [
{
"itemType": "newspaperArticle",
"title": "'Oko kuća je močvara, u njoj aligatori': Jugoistok Amerike poslije uragana Ida",
"creators": [],
"date": "2021-09-01 11:17:06Z",
"language": "sh",
"libraryCatalog": "www.slobodnaevropa.org",
"publicationTitle": "Radio Slobodna Evropa",
"section": "Dnevno@RSE",
"shortTitle": "'Oko kuća je močvara, u njoj aligatori'",
"url": "https://www.slobodnaevropa.org/a/uragan-ida-klimatske-promjene-infrastruktura-sad/31437255.html",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Aktuelno"
},
{
"tag": "Dnevno@RSE"
},
{
"tag": "Luizijana"
},
{
"tag": "Nju Orleans"
},
{
"tag": "Svijet"
},
{
"tag": "Uragan Isa"
},
{
"tag": "infrastruktura"
},
{
"tag": "joe biden"
},
{
"tag": "klimatske promjene"
},
{
"tag": "sad"
},
{
"tag": "uragan katrina"
},
{
"tag": "vanredna situacija"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.azathabar.com/a/31438312.html",
"items": [
{
"itemType": "newspaperArticle",
"title": "COVID-19 hadysalary gürelýän mahaly, mekdeplerde ýokary synp okuwçylaryň dynç alyşlary uzaldyldy",
"creators": [
{
"firstName": "Azatlyk",
"lastName": "Radiosy",
"creatorType": "author"
}
],
"date": "2021-09-01 14:56:50Z",
"abstractNote": "Türkmenistanda COVID-19 hadysalary ozal görlüp-eşidilmedik derejede gürelýän, ýurduň ýokary okuw jaýlarynda sapaklar bölekleýin onlaýn tertibe geçirilen mahaly, orta mekdepleriň ýokary synp okuwçylarynyň dynç alyş möhleti uzaldyldy. Bu ýagdaýlar barada Azatlyk Radiosynyň habarçylary paýtagt...",
"language": "tk",
"libraryCatalog": "www.azathabar.com",
"publicationTitle": "Azatlyk Radiosy",
"section": "Türkmenistan",
"url": "https://www.azathabar.com/a/31438312.html",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Türkmenistan"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.radiosvoboda.org/s?k=%D0%97%D0%B5%D0%BB%D0%B5%D0%BD%D1%81%D1%8C%D0%BA%D0%B8%D0%B9&tab=all&pi=1&r=any&pp=10",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.rferl.org/s?k=afghanistan&tab=all&pi=1&r=any&pp=10",
"items": "multiple"
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://www\.livivo\.de//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, _url) {
let results = getSearchResults(doc, false);
if (!results) return false;
if (Object.keys(results).length == 1) {
return guessType(doc);
}
else {
return "multiple";
}
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.hits article');
for (let row of rows) {
let id = row.id;
let title = ZU.trimInternal(row.textContent);
if (!id || !title) continue;
if (checkOnly) return true;
found = true;
items[id] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) return;
for (let recordID of Object.keys(items)) {
scrapeRecord(doc, url, recordID);
}
});
}
else {
scrapeRecord(doc, url, 'record1');
}
}
function scrapeRecord(doc, url, recordID) {
let article = doc.getElementById(recordID);
let DOI = ZU.cleanDOI(article.getAttribute('data-doi') || '');
let ISBN = ZU.cleanISBN(article.getAttribute('data-isbn') || '');
if (!DOI && !ISBN) {
scrapeRecordManually(doc, url, article);
return;
}
let search = Zotero.loadTranslator('search');
search.setSearch({ DOI, ISBN });
search.setHandler('itemDone', function (_, item) {
item.date = text(article, '.field_PUBLDATE') || item.date; // often better
item.complete();
});
search.setHandler('translators', function (_, translators) {
search.setTranslator(translators);
search.translate();
});
search.getTranslators();
}
function scrapeRecordManually(doc, url, article) {
let item = new Zotero.Item(guessType(article));
item.title = attr(article, 'h3 > a', 'title');
let subtitle = text(article, '.untertitel');
if (subtitle) {
item.title += ': ' + subtitle;
}
item.abstractNote = text(article, '.field_ABSTRACT');
item.tags = text(article, '.field_KEYWORDS').split(' ; ').map(tag => ({ tag }));
item.language = text(article, '.field_LANGUAGE');
item.date = text(article, '.field_PUBLDATE');
item.publisher = text(article, '.field_PUBLISHER');
item.url = attr(article, '.links.fulltext a', 'href')
.replace(/^.+[?&]link=([^&#]+).*$/, (_, link) => decodeURIComponent(link));
for (let author of article.querySelectorAll('.authors a')) {
let creatorType = 'author';
author = author.textContent;
if (author.includes('[Akademischer Betreuer]')) {
creatorType = 'contributor';
}
author = author.replace(/\[.+\]/, '');
item.creators.push(ZU.cleanAuthor(author, creatorType, true));
}
item.complete();
}
function guessType(article) {
let type = text(article, '.field_DOCTYPE');
if (type.includes('Thesis')) {
return 'thesis';
}
else if (type.includes('Book')) {
return 'book';
}
else {
return 'journalArticle';
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.livivo.de/doc/M33889017/diversity-of-microbial-signatures-in-asthmatic-airways/",
"items": [
{
"itemType": "journalArticle",
"title": "Diversity of Microbial Signatures in Asthmatic Airways",
"creators": [
{
"creatorType": "author",
"firstName": "Aisha",
"lastName": "Alamri"
}
],
"date": "2021-04-16",
"DOI": "10.2147/IJGM.S304339",
"ISSN": "1178-7074",
"journalAbbreviation": "IJGM",
"language": "en",
"libraryCatalog": "DOI.org (Crossref)",
"pages": "1367-1378",
"publicationTitle": "International Journal of General Medicine",
"url": "https://www.dovepress.com/diversity-of-microbial-signatures-in-asthmatic-airways-peer-reviewed-article-IJGM",
"volume": "Volume 14",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.livivo.de/doc/481059/cardiology/",
"items": [
{
"itemType": "book",
"title": "Cardiology",
"creators": [
{
"firstName": "Michael H.",
"lastName": "Crawford",
"creatorType": "editor"
},
{
"firstName": "John P.",
"lastName": "DiMarco",
"creatorType": "editor"
}
],
"date": "2001",
"ISBN": "9780723431381",
"language": "eng",
"libraryCatalog": "K10plus ISBN",
"place": "London",
"publisher": "Mosby",
"attachments": [
{
"title": "Table of Contents PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.livivo.de/app?FS=%22Dementia%22",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.livivo.de/doc/DNB1182681476/dealing-with-wandering-in-dementia-care/",
"items": [
{
"itemType": "thesis",
"title": ": a developmental story of designing a GPS monitoring system and its challenges in a wider context",
"creators": [
{
"firstName": "Lin",
"lastName": "Wan",
"creatorType": "author"
}
],
"language": "English",
"libraryCatalog": "LIVIVO",
"university": "Universitätsbibliothek der Universität Siegen",
"url": "http://nbn-resolving.de/urn:nbn:de:hbz:467-14408",
"attachments": [],
"tags": [
{
"tag": "Medicine, Health"
},
{
"tag": "Medizin, Gesundheit"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Will Shanks and Abe Jellinek^https?://(www\.)?(physics)\.aps\.org//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (doc.querySelector('meta[name="citation_title"]')) {
return "journalArticle";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('h3.feed-item-title > a[href*="/articles/"]');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
if (!item.DOI) {
item.DOI = ZU.cleanDOI(attr(doc, 'a[href*="link.aps.org/doi"]', 'href'));
}
// both snapshot and PDF: HTML is commentary, PDF is article
item.attachments = [];
item.attachments.push({
title: 'Snapshot',
document: doc
});
item.attachments.push({
title: 'Full Text PDF',
mimeType: 'application/pdf',
url: `https://physics.aps.org/articles/pdf/${item.DOI}`
});
item.libraryCatalog = 'APS Physics';
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.addCustomFields({
'citation_pages': 'pages'
});
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://physics.aps.org/articles/v5/100",
"items": [
{
"itemType": "journalArticle",
"title": "Surface Folds Make Tears and Chips",
"creators": [
{
"firstName": "Sissi de",
"lastName": "Beer",
"creatorType": "author"
},
{
"firstName": "Martin H.",
"lastName": "Müser",
"creatorType": "author"
}
],
"date": "2012/09/04",
"DOI": "10.1103/PhysRevLett.109.106001",
"abstractNote": "Fluidlike folding instabilities of solid surfaces complicate the machining of metals to perfection",
"language": "en",
"libraryCatalog": "APS Physics",
"pages": "100",
"publicationTitle": "Physics",
"rights": "©2012 by the American Physical Society. All rights reserved.",
"url": "https://physics.aps.org/articles/v5/100",
"volume": "5",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
},
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://physics.aps.org/articles/v5/101",
"items": [
{
"itemType": "journalArticle",
"title": "Measuring the Smallest Trickle",
"creators": [
{
"firstName": "Michael",
"lastName": "Schirber",
"creatorType": "author"
}
],
"date": "2012/09/10",
"DOI": "10.1103/PhysRevLett.109.118302",
"abstractNote": "Researchers used a nanoscale tunnel in a silicon chip to measure a flow rate of a few picoliters per minute, which is smaller than any previous observation.",
"language": "en",
"libraryCatalog": "APS Physics",
"pages": "101",
"publicationTitle": "Physics",
"rights": "©2012 by the American Physical Society. All rights reserved.",
"url": "https://physics.aps.org/articles/v5/101",
"volume": "5",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
},
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://physics.aps.org/browse/?page=1&per_page=10&sort=relevance&q=test",
"items": "multiple"
}
]
/** END TEST CASES **/
100Philipp Zumstein^https?://quod\.lib\.umich\.edu/p/phimp/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2017 Philipp Zumstein
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.indexOf('/p/phimp?t')>-1 && getSearchResults(doc, true)) {
return "multiple";
} else if (url.indexOf('/p/phimp/')>-1) {
return "journalArticle";
}
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
//TODO: adjust the xpath
var rows = ZU.xpath(doc, '//table[@id="searchresults"]//td[2]/a');
for (var i=0; i<rows.length; i++) {
var href = rows[i].href;
var title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) {
return true;
}
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
} else {
scrape(doc, url);
}
}
function scrape(doc, url) {
// move meta tags to head for EM
// this is a fix for some malformed HTML
for (let meta of doc.body.querySelectorAll('meta')) {
doc.head.appendChild(meta);
}
var abstract = ZU.xpathText(doc, '//div[contains(@class, "abstract")]/p[1]');
var purl = ZU.xpathText(doc, '//div[@id="purl"]/a/@href');
var license = ZU.xpathText(doc, '//a[@id="licenseicon"]/@href');
var pdfurl = ZU.xpathText(doc, '//li[@id="download-pdf"]/a/@href');
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
if (abstract) {
item.abstractNote = abstract;
}
if (purl) {
item.url = purl;
}
if (pdfurl) {
item.attachments.push({
url: pdfurl,
title: "Full Text PDF",
mimeType: "application/pdf"
});
}
item.rights = license;
item.place = "Ann Arbor, MI";
item.publisher = "University of Michigan";
item.complete();
});
translator.translate();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://quod.lib.umich.edu/p/phimp?type=simple&rgn=full+text&q1=epistemology&cite1=&cite1restrict=author&cite2=&cite2restrict=author&Submit=Search",
"items": "multiple"
},
{
"type": "web",
"url": "https://quod.lib.umich.edu/p/phimp/3521354.0004.003/1?rgn=full+text;view=image;q1=epistemology",
"items": [
{
"itemType": "journalArticle",
"title": "Morality, Fiction, and Possibility",
"creators": [
{
"firstName": "Brian",
"lastName": "Weatherson",
"creatorType": "author"
}
],
"date": "2004-11-01",
"ISSN": "1533-628X",
"abstractNote": "Authors have a lot of leeway with regard to what they can make true in their story. In general, if the author says that p is true in the fiction we're reading, we believe that p is true in that fiction. And if we're playing along with the fictional game, we imagine that, along with everything else in the story, p is true. But there are exceptions to these general principles. Many authors, most notably Kendall Walton and Tamar Szabó Gendler, have discussed apparent counterexamples when p is \"morally deviant\". Many other statements that are conceptually impossible also seem to be counterexamples. In this paper I do four things. I survey the range of counterexamples, or at least putative counterexamples, to the principles. Then I look to explanations of the counterexamples. I argue, following Gendler, that the explanation cannot simply be that morally deviant claims are impossible. I argue that the distinctive attitudes we have towards moral propositions cannot explain the counterexamples, since some of the examples don't involve moral concepts. And I put forward a proposed explanation that turns on the role of 'higher-level concepts', concepts that if they are satisfied are satisfied in virtue of more fundamental facts about the world, in fiction, and in imagination.",
"issue": "3",
"language": "en",
"libraryCatalog": "quod.lib.umich.edu",
"publicationTitle": "Philosopher's Imprint",
"rights": "http://creativecommons.org/licenses/by-nc-nd/3.0/",
"url": "http://hdl.handle.net/2027/spo.3521354.0004.003",
"volume": "4",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
},
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://www\.degruyter\.com//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
let title = attr(doc, 'meta[name="citation_title"]', 'content');
if (title) {
if (doc.querySelector('meta[name="citation_isbn"]')) {
let bookTitle = attr(doc, 'meta[name="citation_inbook_title"]', 'content');
if (!bookTitle || title == bookTitle) {
return "book";
}
else {
return "bookSection";
}
}
else {
return "journalArticle";
}
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.resultTitle > a[href*="/document/"]');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
// EM is, as a general rule, better than RIS on this site. It's missing a
// couple things, though - subtitles, DOIs for books (to the extent that
// those are useful) - so we'll fill those in manually.
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
if (item.date) {
item.date = item.date.replace(/\//g, '-');
}
if (item.section && (item.section == item.publicationTitle || item.section == item.bookTitle)) {
delete item.section;
}
let DOI = ZU.cleanDOI(attr(doc, '.doi > a', 'href'));
if (DOI) {
item.DOI = DOI;
}
item.attachments = [];
let pdfURL = attr(doc, 'a.downloadPdf', 'href');
if (pdfURL) {
item.attachments.push({
title: 'Full Text PDF',
mimeType: 'application/pdf',
url: pdfURL
});
}
let subtitle = text(doc, 'h2.subtitle');
if (subtitle && !item.title.includes(': ')) {
item.title = `${item.title.trim()}: ${subtitle}`;
}
if (item.itemType == 'book' && item.bookTitle) {
delete item.bookTitle;
}
if (item.bookTitle && !item.bookTitle.includes(': ')) {
let risURL = attr(doc, 'a[title="Download in RIS format"]', 'href');
if (!risURL) {
risURL = url.replace(/\/html([?#].*)$/, '/machineReadableCitation/RIS');
}
ZU.doGet(risURL, function (risText) {
let bookTitle = risText.match(/^\s*T1\s*-\s*(.*)$/m);
if (bookTitle) {
item.bookTitle = bookTitle[1];
}
item.complete();
});
}
else {
item.complete();
}
});
translator.getTranslatorObject(function (trans) {
if (detectWeb(doc, url) == 'bookSection') {
trans.itemType = 'bookSection';
}
trans.addCustomFields({
// This should be the case by default! But I think the page including
// both article:section and citation_inbook_title is triggering an
// EM bug (looking into that is a separate todo).
citation_inbook_title: 'bookTitle'
});
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.degruyter.com/document/doi/10.1515/vfzg-2021-0028/html",
"items": [
{
"itemType": "journalArticle",
"title": "Homosexuelle im modernen Deutschland: Eine Langzeitperspektive auf historische Transformationen",
"creators": [
{
"firstName": "Michael",
"lastName": "Schwartz",
"creatorType": "author"
}
],
"date": "2021-07-01",
"DOI": "10.1515/vfzg-2021-0028",
"ISSN": "2196-7121",
"abstractNote": "Die Geschichte homosexueller Menschen im modernen Deutschland besteht nicht nur aus Verfolgung und Diskriminierung, obschon sie oft als solche erinnert wird. Wohl haben homosexuelle Männer unter massiver Verfolgung gelitten, und auch lesbische Frauen waren vielen Diskriminierungen ausgesetzt. Doch die Geschichte der letzten 200 Jahre weist nicht nur jene Transformation im Umgang mit Homosexualität auf, die ab den 1990er Jahren zur Gleichberechtigung führte, sondern mehrere, inhaltlich sehr verschiedene Umbrüche. Wir haben es weder mit einem Kontinuum der Repression noch mit einer linearen Emanzipationsgeschichte zu tun, sondern mit einer höchst widersprüchlichen langfristigen Entwicklung.",
"issue": "3",
"language": "de",
"libraryCatalog": "www.degruyter.com",
"pages": "377-414",
"publicationTitle": "Vierteljahrshefte für Zeitgeschichte",
"shortTitle": "Homosexuelle im modernen Deutschland",
"url": "https://www.degruyter.com/document/doi/10.1515/vfzg-2021-0028/html",
"volume": "69",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Emancipation"
},
{
"tag": "Homosexuality"
},
{
"tag": "National Socialism"
},
{
"tag": "Penal reform"
},
{
"tag": "Pursuit"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.degruyter.com/document/doi/10.3138/9781487518806/html",
"items": [
{
"itemType": "book",
"title": "Picturing Punishment: The Spectacle and Material Afterlife of the Criminal Body in the Dutch Republic",
"creators": [
{
"firstName": "Anuradha",
"lastName": "Gobin",
"creatorType": "author"
}
],
"date": "2021-08-25",
"ISBN": "9781487518806",
"abstractNote": "Bringing together themes in the history of art, punishment, religion, and the history of medicine, Picturing Punishment provides new insights into the wider importance of the criminal to civic life.",
"language": "en",
"libraryCatalog": "www.degruyter.com",
"publisher": "University of Toronto Press",
"shortTitle": "Picturing Punishment",
"url": "https://www.degruyter.com/document/doi/10.3138/9781487518806/html",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Dutch Republic"
},
{
"tag": "Renaissance"
},
{
"tag": "afterlife"
},
{
"tag": "art and crime"
},
{
"tag": "art history"
},
{
"tag": "criminals"
},
{
"tag": "deviance"
},
{
"tag": "early modern"
},
{
"tag": "execution rituals"
},
{
"tag": "gallows"
},
{
"tag": "history of crime"
},
{
"tag": "material culture"
},
{
"tag": "public spectacles"
},
{
"tag": "punishment"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.degruyter.com/document/doi/10.3138/9781487518806-008/html",
"items": [
{
"itemType": "bookSection",
"title": "5 Serving the Public Good: Reform, Prestige, and the Productive Criminal Body in Amsterdam",
"creators": [
{
"firstName": "Anuradha",
"lastName": "Gobin",
"creatorType": "author"
}
],
"date": "2021-08-25",
"ISBN": "9781487518806",
"abstractNote": "5 Serving the Public Good: Reform, Prestige, and the Productive Criminal Body in Amsterdam was published in Picturing Punishment on page 135.",
"bookTitle": "Picturing Punishment: The Spectacle and Material Afterlife of the Criminal Body in the Dutch Republic",
"language": "en",
"libraryCatalog": "www.degruyter.com",
"pages": "135-157",
"publisher": "University of Toronto Press",
"shortTitle": "5 Serving the Public Good",
"url": "https://www.degruyter.com/document/doi/10.3138/9781487518806-008/html",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.degruyter.com/document/doi/10.1515/ncrs-2021-0236/html",
"items": [
{
"itemType": "journalArticle",
"title": "Crystal structure of (E)-7-fluoro-2-((6-methoxypyridin-3-yl)methylene)-3,4-dihydronaphthalen-1(2H)-one, C17H14FNO2",
"creators": [
{
"firstName": "Xiang-Yi",
"lastName": "Su",
"creatorType": "author"
},
{
"firstName": "Xiao-Fan",
"lastName": "Zhang",
"creatorType": "author"
},
{
"firstName": "Qing-Guo",
"lastName": "Meng",
"creatorType": "author"
},
{
"firstName": "Hong-Juan",
"lastName": "Li",
"creatorType": "author"
}
],
"date": "2021-09-01",
"DOI": "10.1515/ncrs-2021-0236",
"ISSN": "2197-4578",
"abstractNote": "C 17 H 14 FNO 2 , monoclinic, P 2 1 / c (no. 15), a = 7.3840(6) Å, b = 10.9208(8) Å, c = 16.7006(15) Å, β = 101.032(9)°, V = 1321.84(19) Å 3 , Z = 4, R gt ( F ) = 0.0589, wR ref ( F 2 ) = 0.1561, T = 100.00(18) K.",
"issue": "5",
"language": "en",
"libraryCatalog": "www.degruyter.com",
"pages": "1101-1103",
"publicationTitle": "Zeitschrift für Kristallographie - New Crystal Structures",
"url": "https://www.degruyter.com/document/doi/10.1515/ncrs-2021-0236/html",
"volume": "236",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.degruyter.com/document/doi/10.1515/ncrs-2021-0236/html",
"items": [
{
"itemType": "journalArticle",
"title": "Crystal structure of (E)-7-fluoro-2-((6-methoxypyridin-3-yl)methylene)-3,4-dihydronaphthalen-1(2H)-one, C17H14FNO2",
"creators": [
{
"firstName": "Xiang-Yi",
"lastName": "Su",
"creatorType": "author"
},
{
"firstName": "Xiao-Fan",
"lastName": "Zhang",
"creatorType": "author"
},
{
"firstName": "Qing-Guo",
"lastName": "Meng",
"creatorType": "author"
},
{
"firstName": "Hong-Juan",
"lastName": "Li",
"creatorType": "author"
}
],
"date": "2021-09-01",
"DOI": "10.1515/ncrs-2021-0236",
"ISSN": "2197-4578",
"abstractNote": "C 17 H 14 FNO 2 , monoclinic, P 2 1 / c (no. 15), a = 7.3840(6) Å, b = 10.9208(8) Å, c = 16.7006(15) Å, β = 101.032(9)°, V = 1321.84(19) Å 3 , Z = 4, R gt ( F ) = 0.0589, wR ref ( F 2 ) = 0.1561, T = 100.00(18) K.",
"issue": "5",
"language": "en",
"libraryCatalog": "www.degruyter.com",
"pages": "1101-1103",
"publicationTitle": "Zeitschrift für Kristallographie - New Crystal Structures",
"url": "https://www.degruyter.com/document/doi/10.1515/ncrs-2021-0236/html",
"volume": "236",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.degruyter.com/search?query=test",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.degruyter.com/journal/key/mt/html",
"items": "multiple"
}
]
/** END TEST CASES **/
100Emiliano Heyns and Abe Jellinek^https?://ndpr\.nd\.edu//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Emiliano Heyns and Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/reviews/') && doc.querySelector('meta[property="datePublished"]')) {
return "journalArticle";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('h2.article-title > a[href*="/reviews/"]');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
let reviewedTitle = item.title;
let shortReviewedTitle = item.title
.replace(/:.*$/, '')
.replace(/\?.*$/, '?');
item.title = `Review of <i>${reviewedTitle}</i>`;
item.shortTitle = `Review of <i>${shortReviewedTitle}</i>`;
// some <meta> tags are in the body so EM doesn't catch them
// we don't use dateModified - datePublish corresponds to the date shown
// in the article text.
let metaDate = attr(doc, 'meta[property="datePublished"]', 'content');
item.date = ZU.strToISO(metaDate);
item.creators = [];
let reviewedAuthors = attr(doc, 'meta[name="search_authors"]', 'content').split(/, | and /);
for (let reviewedAuthor of reviewedAuthors) {
reviewedAuthor = reviewedAuthor.replace(/\(eds?\.\)/, '');
item.creators.push(ZU.cleanAuthor(reviewedAuthor, 'reviewedAuthor'));
}
let reviewAuthor = attr(doc, 'meta[name="search_reviewers"]', 'content').split(', ')[0];
item.creators.push(ZU.cleanAuthor(reviewAuthor, 'author'));
item.ISSN = '1538-1617';
item.libraryCatalog = 'Notre Dame Philosophical Reviews';
item.abstractNote = ''; // EM's are no good here
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.itemType = "journalArticle";
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://ndpr.nd.edu/reviews/pleasure-and-the-good-life-concerning-the-nature-varieties-and-plausibility-of-hedonism/",
"items": [
{
"itemType": "journalArticle",
"title": "Review of <i>Pleasure and the Good Life: Concerning the Nature, Varieties, and Plausibility of Hedonism</i>",
"creators": [
{
"firstName": "Fred",
"lastName": "Feldman",
"creatorType": "reviewedAuthor"
},
{
"firstName": "Leonard D.",
"lastName": "Katz",
"creatorType": "author"
}
],
"date": "2005-03-02",
"ISSN": "1538-1617",
"language": "en",
"libraryCatalog": "Notre Dame Philosophical Reviews",
"shortTitle": "Review of <i>Pleasure and the Good Life</i>",
"url": "https://ndpr.nd.edu/reviews/pleasure-and-the-good-life-concerning-the-nature-varieties-and-plausibility-of-hedonism/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://ndpr.nd.edu/reviews/locke-s-touchy-subjects-materialism-and-immortality/",
"items": [
{
"itemType": "journalArticle",
"title": "Review of <i>Locke's Touchy Subjects: Materialism and Immortality</i>",
"creators": [
{
"firstName": "Nicholas",
"lastName": "Jolley",
"creatorType": "reviewedAuthor"
},
{
"firstName": "Shelley",
"lastName": "Weinberg",
"creatorType": "author"
}
],
"date": "2015-12-17",
"ISSN": "1538-1617",
"language": "en",
"libraryCatalog": "Notre Dame Philosophical Reviews",
"shortTitle": "Review of <i>Locke's Touchy Subjects</i>",
"url": "https://ndpr.nd.edu/reviews/locke-s-touchy-subjects-materialism-and-immortality/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://ndpr.nd.edu/reviews/archives/2020/9/",
"items": "multiple"
}
]
/** END TEST CASES **/
270Abe Jellinek/[a-z]{2}/(publications|persons|searchAll)//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, _url) {
if (!doc.querySelector('#page-footer a[href$="/admin/workspace.xhtml"]')) {
return false;
}
if (doc.querySelector('#cite-RIS')) {
return "journalArticle";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('h3.title > a[href*="/publications/"]');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, _url) {
let risText = '';
for (let p of doc.querySelectorAll('#cite-RIS p')) {
risText += p.textContent + '\n';
}
let subtitleRe = /^\s*T2\s*-\s*(.+)$/m;
let subtitle = risText.match(subtitleRe);
if (subtitle) {
risText = risText.replace(subtitleRe, '');
}
risText = risText.replace(/^\s*J[OF]\s*-/m, 'T2 -');
var translator = Zotero.loadTranslator("import");
translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7"); // RIS
translator.setString(risText);
translator.setHandler("itemDone", function (obj, item) {
if (subtitle) {
item.title += ': ' + subtitle[1];
}
if (item.date) {
item.date = ZU.strToISO(item.date);
}
item.libraryCatalog = attr(doc, 'meta[property="og:site_name"]', 'content');
item.archiveLocation = '';
item.complete();
});
translator.translate();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://researchers.cdu.edu.au/en/publications/3p-sake-privacy-preserving-and-physically-secured-authenticated-k",
"items": [
{
"itemType": "journalArticle",
"title": "3P-SAKE: Privacy-preserving and physically secured authenticated key establishment protocol for wireless industrial networks",
"creators": [
{
"lastName": "Masud",
"firstName": "Mehedi",
"creatorType": "author"
},
{
"lastName": "Alazab",
"firstName": "Mamoun",
"creatorType": "author"
},
{
"lastName": "Choudhary",
"firstName": "Karanjeet",
"creatorType": "author"
},
{
"lastName": "Gaba",
"firstName": "Gurjot Singh",
"creatorType": "author"
}
],
"date": "2021-07-01",
"DOI": "10.1016/j.comcom.2021.04.021",
"ISSN": "0140-3664",
"abstractNote": "A new industrial revolution is emerging with the Internet of Things (IoT) growing use in enabling the machine to machine communication between the devices, sensors, actuators, and gateways. IoT lets the communication across devices and the network happen in real-time and helps make technologically smart homes, smart hospitals, and smart industrial applications. The authentication schemes in IoT have to be robust and lightweight to be useful for resource-constrained real-time applications where user privacy and physical security are the priority concerns. The IoT devices are prone to physical attacks due to their installation in hostile environments. The intruders want to physically capture the IoT nodes for cloning and accessing the stored confidential information, thus necessitating IoT nodes’ physical protection. This article proposes a less expensive and physically secured user authentication and secure key exchange protocol for industry 4.0 applications. Physically unclonable functions (PUF), hash, and XOR operations are used in the proposed method to attain robustness and efficiency. The scheme's other benefits include low computational cost, retaining the device's confidentiality, safety from major security threats, low communication, and storage overhead.",
"libraryCatalog": "Charles Darwin University's Research Webportal",
"pages": "82-90",
"publicationTitle": "Computer Communications",
"shortTitle": "3P-SAKE",
"url": "http://www.scopus.com/inward/record.url?scp=85105520478&partnerID=8YFLogxK",
"volume": "175",
"attachments": [],
"tags": [
{
"tag": "Hardware security"
},
{
"tag": "Industrial IoT"
},
{
"tag": "Industry 4.0"
},
{
"tag": "Internet of Things"
},
{
"tag": "Key agreement"
},
{
"tag": "Lightweight authentication"
}
],
"notes": [
{
"note": "<p>Funding Information:<br/>All authors approved the version of the manuscript to be published.</p><p>Publisher Copyright:<br/>© 2021 Elsevier B.V.</p><p>Copyright:<br/>Copyright 2021 Elsevier B.V., All rights reserved.</p>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://orbit.dtu.dk/en/publications/authentication-of-vanillin-ex-glucose-a-first-study-on-the-influe",
"items": [
{
"itemType": "journalArticle",
"title": "Authentication of vanillin ex glucose – A first study on the influence of the glucose-source on the δ13C and δ2H value",
"creators": [
{
"lastName": "Wilde",
"firstName": "Amelie Sina",
"creatorType": "author"
},
{
"lastName": "Strucko",
"firstName": "Tomas",
"creatorType": "author"
},
{
"lastName": "Veje",
"firstName": "Casper Rastgoie",
"creatorType": "author"
},
{
"lastName": "Mortensen",
"firstName": "Uffe Hasbro",
"creatorType": "author"
},
{
"lastName": "Duedahl-Olesen",
"firstName": "Lene",
"creatorType": "author"
}
],
"date": "2022",
"DOI": "10.1016/j.foodcont.2021.108389",
"ISSN": "0956-7135",
"abstractNote": "Vanillin is the most characteristic compound in vanilla flavour. Since vanilla pods are very expensive, vanillin is mainly produced by synthetic and sometimes biosynthetic methods. Biosynthetic vanillin is called ‘biovanillin’ and can -by law-be labelled as ‘natural’. The isotopic carbon ratio (expressed as δ13C) is a widely established and valuable authentication parameter for vanillin. Furthermore, currently available data about δ2H values indicate, that the isotopic hydrogen ratio can make a decisive contribution to the authentication of vanillin. One of the most recent developments is the bio-production of vanillin derived from glucose. However, very little is known about its isotopic composition. Here, we present the δ13C and δ2H values of glucose from corn and wheat and the vanillin that was derived from these. The isotopic composition of the glucose is clearly reflected in the resulting vanillin molecule. All ‘glucose-vanillin’ samples could be distinguished from vanillin originating from other sources when combining the δ13C and δ2H value.",
"issue": "108389",
"libraryCatalog": "Welcome to DTU Research Database",
"publicationTitle": "Food Control",
"volume": "131",
"attachments": [],
"tags": [
{
"tag": "13C/12C and 2H/1H ratio"
},
{
"tag": "Authenticity"
},
{
"tag": "Biovanillin"
},
{
"tag": "Glucose"
},
{
"tag": "Isotope ratio mass spectrometry"
},
{
"tag": "Natural flavor"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://snucm.elsevierpure.com/en/publications/surgical-management-of-sigmoid-volvulus-a-multicenter-observation",
"items": [
{
"itemType": "journalArticle",
"title": "Surgical management of sigmoid volvulus: A multicenter observational study",
"creators": [
{
"lastName": "Lee",
"firstName": "Keunchul",
"creatorType": "author"
},
{
"lastName": "Oh",
"firstName": "Heung Kwon",
"creatorType": "author"
},
{
"lastName": "Cho",
"firstName": "Jung Rae",
"creatorType": "author"
},
{
"lastName": "Kim",
"firstName": "Minhyun",
"creatorType": "author"
},
{
"lastName": "Kim",
"firstName": "Duck Woo",
"creatorType": "author"
},
{
"lastName": "Kang",
"firstName": "Sung Bum",
"creatorType": "author"
},
{
"lastName": "Kim",
"firstName": "Hyung Jin",
"creatorType": "author"
},
{
"lastName": "Park",
"firstName": "Hyoung Chul",
"creatorType": "author"
},
{
"lastName": "Shin",
"firstName": "Rumi",
"creatorType": "author"
},
{
"lastName": "Heo",
"firstName": "Seung Chul",
"creatorType": "author"
},
{
"lastName": "Ryoo",
"firstName": "Seung Bum",
"creatorType": "author"
},
{
"lastName": "Park",
"firstName": "Kyu Joo",
"creatorType": "author"
}
],
"date": "2021-12-31",
"DOI": "10.3393/AC.2020.03.23",
"ISSN": "2287-9714",
"abstractNote": "Purpose: This study aimed to evaluate real-world clinical outcomes from surgically treated patients for sigmoid volvulus. Methods: Five tertiary centers participated in this retrospective study with data collected from October 2003 through September 2018, including demographic information, preoperative clinical data, and information on laparoscopic/open and elective/emergency procedures. Outcome measurements included operation time, postoperative hospitalization, and postoperative morbidity. Results: Among 74 patients, sigmoidectomy was the most common procedure (n=46), followed by Hartmann's procedure (n=23), and subtotal colectomy (n=5). Emergency surgery was performed in 35 cases (47.3%). Of the 35 emergency pa-tients, 34 cases (97.1%) underwent open surgery, and a stoma was established for 26 patients (74.3%). Elective surgery was performed in 39 cases (52.7%), including 21 open procedures (53.8%), and 18 laparoscopic surgeries (46.2%). Median laparoscopic operation time was 180 minutes, while median open surgery time was 130 minutes (P<0.001). Median postoperative hospitalization was 11 days for laparoscopy and 12 days for open surgery. There were 20 postoperative complications (27.0%), and all were resolved with conservative management. Emergency surgery cases had a higher complication rate than elective surgery cases (40.0% vs. 15.4%, P=0.034). Conclusion: Relative to elective surgery, emergency surgery had a higher rate of postoperative complications, open surgery, and stoma formation. As such, elective laparoscopic surgery after successful sigmoidoscopic decompression may be the optimal clinical option.",
"issue": "6",
"libraryCatalog": "Seoul National University College of Medicine",
"pages": "403-408",
"publicationTitle": "Annals of Coloproctology",
"shortTitle": "Surgical management of sigmoid volvulus",
"url": "http://www.scopus.com/inward/record.url?scp=85100123885&partnerID=8YFLogxK",
"volume": "36",
"attachments": [],
"tags": [
{
"tag": "Elective surgery"
},
{
"tag": "Laparoscopy"
},
{
"tag": "Sigmoid volvulus"
}
],
"notes": [
{
"note": "<p>Publisher Copyright:<br/>© 2020 The Korean Society of Coloproctology.</p>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://koreauniv.pure.elsevier.com/en/publications/the-effect-of-uncoated-paper-application-on-skin-moisture-risk-of",
"items": [
{
"itemType": "journalArticle",
"title": "The effect of uncoated paper application on skin moisture, risk of pressure injury and incidence of pressure injury in neurologic intensive care unit patients: A randomized controlled trial",
"creators": [
{
"lastName": "Choi",
"firstName": "Yoo Hyung",
"creatorType": "author"
},
{
"lastName": "Kim",
"firstName": "Sung Reul",
"creatorType": "author"
}
],
"date": "2021-08",
"DOI": "10.1111/ijn.12919",
"ISSN": "1322-7114",
"abstractNote": "Aim: This study aimed to evaluate the effects of uncoated paper on skin moisture, pressure injury risk and pressure injury incidence in neurological intensive care unit patients. Methods: A randomized controlled design was used. The experimental group (n = 68) received usual care (repositioning every 2 h and use of an air mattress) and application of uncoated paper on the sacral area for 5 days, whereas the control group (n = 67) received only usual care. A repeated measures analysis of variance was used to determine changes in the skin moisture and risk of pressure injury between the groups. A chi-squared test was used to determine the change in the incidence of pressure injuries for sacral area. Data were collected from 20 October 2017 to 6 March 2018. Results: There were statistically significant differences in the skin moisture and risk of pressure injuries between the experimental and control groups. However, a significant difference was not observed in the incidence of pressure injuries between the groups. Conclusion: The use of uncoated paper may be a valid nursing intervention for the prevention of pressure injuries in neurological intensive care unit patients.",
"issue": "4",
"libraryCatalog": "Korea University",
"publicationTitle": "International Journal of Nursing Practice",
"shortTitle": "The effect of uncoated paper application on skin moisture, risk of pressure injury and incidence of pressure injury in neurologic intensive care unit patients",
"url": "http://www.scopus.com/inward/record.url?scp=85099453696&partnerID=8YFLogxK",
"volume": "27",
"attachments": [],
"tags": [
{
"tag": "nervous system diseases"
},
{
"tag": "nursing care"
},
{
"tag": "pressure ulcer"
},
{
"tag": "pressure ulcer/prevention and control"
},
{
"tag": "skin"
}
],
"notes": [
{
"note": "<p>Funding Information:<br/>This research did not receive any specific grant from funding agencies in the public, commercial, or not-for-profit sectors.</p><p>Publisher Copyright:<br/>© 2021 John Wiley & Sons Australia, Ltd</p>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://researchers.cdu.edu.au/en/searchAll/index/?search=test&pageSize=25&showAdvanced=false&searchFacet=orConceptIds&orConceptIds=af5f2285-4118-4d98-839a-6dc624527704&orConceptIds=f43e663c-2a47-4694-a9da-0c1a66116c28&orConceptIds=d65ecb3a-f841-4f08-9c3d-7debf3199669&orConceptIds=030e99c1-94a2-41a1-913a-c57c9b35a4fd&orConceptIds=6f00d88d-e0a3-47d8-b448-6c0a81a27502&allConcepts=false&conceptsContentFamilies=Person&conceptsContentFamilies=ResearchOutput&conceptsContentFamilies=Organisation&conceptsContentFamilies=Project&inferConcepts=false&checkedConcepts=af5f2285-4118-4d98-839a-6dc624527704%2Cf43e663c-2a47-4694-a9da-0c1a66116c28%2Cd65ecb3a-f841-4f08-9c3d-7debf3199669%2C030e99c1-94a2-41a1-913a-c57c9b35a4fd%2C6f00d88d-e0a3-47d8-b448-6c0a81a27502&searchBy=RelatedConcepts",
"items": "multiple"
},
{
"type": "web",
"url": "https://researchers.cdu.edu.au/en/persons/benedikt-ley/publications/",
"items": "multiple"
}
]
/** END TEST CASES **/
100czar^https?://(www\.)?artforum\.com//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2018 czar
http://en.wikipedia.org/wiki/User_talk:Czar
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (/-\d{5,}([?#].*)?$/.test(url)) {
if (doc.querySelector('h3.print-article__issue-title')) {
return "magazineArticle";
}
return "blogPost";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48'); // embedded metadata (EM)
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) { // corrections to EM
item.publicationTitle = "Artforum";
item.language = 'en-US';
var jsonLD = doc.querySelector('script[type="application/ld+json"]');
if (jsonLD) {
jsonLD = JSON.parse(jsonLD.textContent);
item.title = jsonLD.name;
item.date = jsonLD.dateModified || jsonLD.datePublished;
if (!item.creators.length && jsonLD.author) {
item.creators.push(ZU.cleanAuthor(jsonLD.author.name, 'author'));
}
}
var authorMetadata = doc.querySelectorAll('.contrib-link a');
for (let author of authorMetadata) {
item.creators.push(ZU.cleanAuthor(author.text, "author"));
}
if (url.includes('/print/')) {
item.itemType = "magazineArticle";
item.ISSN = "0004-3532";
var issueDate = doc.querySelector('h3.print-article__issue-title');
if (issueDate) {
item.date = issueDate.textContent.trim().replace('PRINT ','');
ZU.doGet(issueDate.querySelector('a').href, function (respText) {
var voliss = respText.match(/Vol\.\s(\d+),\sNo\.\s(\d+)/);
item.volume = voliss[1];
item.issue = voliss[2];
item.complete();
});
} else item.complete();
} else item.complete();
});
translator.getTranslatorObject(function(trans) {
trans.itemType = 'blogPost';
trans.doWeb(doc, url);
});
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
// 1st for search page, 2nd for issue ToC, 3rd/4th/5th for sections, 5th+ for homepage
var rows = doc.querySelectorAll('h1.results-list__h1, .toc-article__title, .news-list h1, .reviews-list h1, .article-list h1, p.hp-singlefeature-author__writer, h3.hp-news__title, h3.hp-twocolumn__title a, h3.hp-artguide__title, p.hp-bloglist__teaser a');
for (let i = 0; i < rows.length; i++) {
let href = attr(rows[i], 'a', 'href');
if (!href) {
let link = rows[i].closest('a');
if (link) href = link.href;
}
let title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
switch (detectWeb(doc, url)) {
case "multiple":
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) {
return;
}
ZU.processDocuments(Object.keys(items), scrape);
});
break;
default:
scrape(doc, url);
break;
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.artforum.com/news/ugochukwu-smooth-nzewi-appointed-curator-of-hood-museum-40747",
"items": [
{
"itemType": "blogPost",
"title": "Ugochukwu-Smooth Nzewi Appointed Curator of Hood Museum",
"creators": [],
"date": "2013-05-06",
"abstractNote": "The Hood Museum of Art at Dartmouth College, Hanover, has appointed Ugochukwu-Smooth Nzewi as its first curator of African Art, reports Artdaily. Born in Nigeria, Nzewi received his PhD in Art History from Emory University. A specialist in modern and contemporary African and African Diaspora arts, he will be responsible in his new role for the documentation, preservation, and research of Hood’s African Art collection, which includes some 1,900 objects. He will also engage Dartmouth faculty and students in the development of curricular programming related to the museum’s African holdings. Nzewi",
"blogTitle": "Artforum",
"language": "en-US",
"url": "https://www.artforum.com/news/ugochukwu-smooth-nzewi-appointed-curator-of-hood-museum-40747",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.artforum.com/diary/kaitlin-phillips-at-the-11th-new-york-art-book-fair-63626",
"items": [
{
"itemType": "blogPost",
"title": "Fine Print",
"creators": [
{
"firstName": "Kaitlin",
"lastName": "Phillips",
"creatorType": "author"
}
],
"date": "2016-09-22",
"abstractNote": "LAST THURSDAY, at the opening night preview of Printed Matter’s NY Book Fair at MoMA PS1, in the popup white dome in the courtyard, at one of the end-to-end merchandise tables, V. Vale (“That’s the name I’m famous under”), founder of RE/Search, complains to a fan that the fair, in its eleventh year, and its host city, have lost their street cred:“I never come to New York. Yeah, I never come to New York. I never come to New York,” says Vale, beaming defiantly.“Well, New York may have jumped the shark.”“I don’t know what that means. Jump the shark.”“It means that something has hit its peak, and",
"blogTitle": "Artforum",
"language": "en-US",
"url": "https://www.artforum.com/diary/kaitlin-phillips-at-the-11th-new-york-art-book-fair-63626",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.artforum.com/picks/alex-da-corte-62421",
"items": [
{
"itemType": "blogPost",
"title": "Alex Da Corte",
"creators": [
{
"firstName": "Aria",
"lastName": "Dean",
"creatorType": "author"
}
],
"date": "2016-07-28",
"abstractNote": "As you enter this space, your senses are bombarded by Alex Da Corte’s scrambled, saturated landscape. A supersized witch’s hat fills the first area, lit by green and red neon from above. This is flanked by a stained-glass window depicting a red rose, referencing Disney’s Beauty and the Beast, and a floor-to-ceiling, blown-up image of a weeping bridesmaid. The exhibition is like a dream: Recognizable elements are mashed together, but something is off, and it gradually morphs into a surreal nightmare.The gallery buzzes with sound from three video works—the focal point of the second room—depicting",
"blogTitle": "Artforum",
"language": "en-US",
"url": "https://www.artforum.com/picks/alex-da-corte-62421",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.artforum.com/film/nick-pinkerton-on-gimme-shelter-hollywood-north-66885",
"items": [
{
"itemType": "blogPost",
"title": "Canadian Makin’",
"creators": [
{
"firstName": "Nick",
"lastName": "Pinkerton",
"creatorType": "author"
}
],
"date": "2017-02-24",
"abstractNote": "AFTER THE EMERGENCE of alluring Canadian production subsidies in the late 1990s, moviegoers of the aughts became inured to watching downtown Vancouver fill in for AnyCity, USA, in a parade of multiplex productions that managed to extract bland back-lot anonymity from location shooting. But Anthology Film Archives’ twelve-film series “Gimme Shelter: Hollywood North” pays tribute to a very different, pioneering era of runaway production, part of an ongoing sesquicentennial celebration of our neighbors above to be followed by “1970s Canadian Independents,” beginning at Anthology on March 9.The",
"blogTitle": "Artforum",
"language": "en-US",
"url": "https://www.artforum.com/film/nick-pinkerton-on-gimme-shelter-hollywood-north-66885",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.artforum.com/print/previews/201701/whitney-biennial-2017-65484",
"items": [
{
"itemType": "magazineArticle",
"title": "Whitney Biennial 2017",
"creators": [
{
"firstName": "Beau",
"lastName": "Rutland",
"creatorType": "author"
}
],
"date": "January 2017",
"ISSN": "0004-3532",
"abstractNote": "Curated by Christopher Y. Lew and Mia LocksFollowing a three-year hiatus to accommodate the museum’s move downtown, the Whitney Biennial makes its Gansevoort Street debut this March. As the republic falls before our very eyes, one hopes that this divisive survey of American art will react against, and not just reflect, the current state of affairs. This year’s roster of sixty-three artists and collectives is thankfully diverse in perspectives and refreshingly full of emerging and underrecognized voices—absent are the many elder statesmen often gratuitously included in these affairs. The",
"issue": "5",
"language": "en-US",
"libraryCatalog": "www.artforum.com",
"publicationTitle": "Artforum",
"url": "https://www.artforum.com/print/previews/201701/whitney-biennial-2017-65484",
"volume": "55",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.artforum.com/interviews/jamie-stewart-talks-about-xiu-xiu-s-record-forget-and-recent-collaborations-66615",
"items": [
{
"itemType": "blogPost",
"title": "Jamie Stewart",
"creators": [
{
"firstName": "Paige K.",
"lastName": "Bradley",
"creatorType": "author"
}
],
"date": "2017-02-21",
"abstractNote": "Across thirteen albums and a handful of EPs, Xiu Xiu have remained a prickly, relentless force, inspiring loyalty, love, annoyance, and disgust in equal measure. Some people never get over their music, and some you couldn’t pay to even approach it. On the occasion of the release of their latest album, FORGET, the band’s mainstay Jamie Stewart discusses how he met Vaginal Davis (who performs on its last track), the band’s collaborations with Danh Vō, and the concept behind the record’s title. Polyvinyl will release FORGET on February 24, 2017.HOW I MET VAGINAL DAVIS is actually a long story and",
"blogTitle": "Artforum",
"language": "en-US",
"url": "https://www.artforum.com/interviews/jamie-stewart-talks-about-xiu-xiu-s-record-forget-and-recent-collaborations-66615",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.artforum.com/print/reviews/201408/dak-art-2014-48214",
"items": [
{
"itemType": "magazineArticle",
"title": "Dak’Art 2014",
"creators": [
{
"firstName": "Chika",
"lastName": "Okeke-Agulu",
"creatorType": "author"
}
],
"date": "October 2014",
"ISSN": "0004-3532",
"abstractNote": "THE ELEVENTH EDITION of the Dak’Art Biennial of Contemporary African Art, which took place this past summer, may well have been the most ambitious since the exhibition’s inception in 1992. It was the largest and most diverse yet, not only showcasing emerging artists from across Africa but also including the work of many superstars from the established biennial circuit. This roster showed that the global art world must reckon with Dak’Art, which seems poised to take its place among the most established international art shows. Yet this year’s iteration also suggested that the biennial is still",
"issue": "2",
"language": "en-US",
"libraryCatalog": "www.artforum.com",
"publicationTitle": "Artforum",
"url": "https://www.artforum.com/print/reviews/201408/dak-art-2014-48214",
"volume": "53",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.artforum.com/search?search=1%3A54&sort=date",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.artforum.com/",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.artforum.com/print/previews/current/new-york",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.artforum.com/print/201806",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.artforum.com/news/levy-gorvy-amalia-dayan-salon-94-merge-to-form-upper-east-side-megagallery-86598",
"items": [
{
"itemType": "blogPost",
"title": "New York Dealers Lévy Gorvy, Amalia Dayan, Salon 94, Announce Merger",
"creators": [],
"date": "2021-09-01",
"abstractNote": "Two New York galleries—Lévy Gorvy and Salon 94—and dealer Amalia Dayan have announced that they are joining forces to establish a single consortium, called LGDR, whose flagship will be situated on the city’s tony Upper East Side. The news, first reported in the New York Times, is said to have come as a shock to a number of the galleries’ artists, whose fate is unclear.The new entity, which takes its name from the last initials of its owners—Dominique Lévy and Brett Gorvy, cofounders of Lévy Gorvy; veteran dealer Amalia Dayan; and Jeanne Greenberg Rohatyn, the owner of Salon 94—will occupy digs",
"blogTitle": "Artforum",
"language": "en-US",
"url": "https://www.artforum.com/news/levy-gorvy-amalia-dayan-salon-94-merge-to-form-upper-east-side-megagallery-86598",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.artforum.com/print/202107/david-salle-on-janet-malcolm-86314",
"items": [
{
"itemType": "magazineArticle",
"title": "JANET MALCOLM (1934–2021)",
"creators": [
{
"firstName": "David",
"lastName": "Salle",
"creatorType": "author"
}
],
"date": "September 2021",
"ISSN": "0004-3532",
"abstractNote": "ABOUT TWENTY-FIVE YEARS AGO Janet Malcolm published a profile of me in the New Yorker that became something of a touchstone of art journalism. It served as the title essay of one of her collections, and has been reprinted several times. I’m told it’s often assigned in classes on art writing, on the assumption that it sheds some light on that murky enterprise.It’s uncommon for the subject of a profile to warmly remember the profiler, and my friendship with Janet struck some people as odd. For some, it would be hard, or so they imagined, to get past the discomforts of so much self-exposure, and",
"issue": "1",
"language": "en-US",
"libraryCatalog": "www.artforum.com",
"publicationTitle": "Artforum",
"url": "https://www.artforum.com/print/202107/david-salle-on-janet-malcolm-86314",
"volume": "60",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Sebastian Karcher and Abe Jellinek^https?://(www|recherche)\.lapresse\.ca//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (doc.querySelector('header h1.headlines')) {
return "newspaperArticle";
}
// search is Google in an iframe
return false;
}
function doWeb(doc, url) {
scrape(doc, url);
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
// La Presse doesn't add a space before a colon in titles
item.title = item.title.replace(' | ', ': ');
item.language = 'fr-CA';
if (!item.abstractNote) {
item.abstractNote = text(doc, '[itemprop="articleBody"] .lead');
}
if (!item.creators.length) {
for (let author of doc.querySelectorAll('.author .name')) {
item.creators.push(ZU.cleanAuthor(author.textContent, 'author'));
}
}
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.itemType = "newspaperArticle";
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.lapresse.ca/international/dossiers/seisme-en-haiti/201204/25/01-4518986-haiti-sean-penn-recoit-un-prix-pour-son-engagement.php",
"items": [
{
"itemType": "newspaperArticle",
"title": "Haïti: Sean Penn reçoit un prix pour son engagement",
"creators": [],
"date": "2012-04-25T21:10:00-04:00",
"abstractNote": "L'acteur américain Sean Penn a reçu mercredi un prix récompensant son engagement humanitaire en faveur d'Haïti, à l'occasion du Sommet mondial des Lauréats du Prix Nobel de la Paix qui se tient à Chicago.",
"language": "fr-CA",
"libraryCatalog": "www.lapresse.ca",
"publicationTitle": "La Presse",
"section": "International",
"shortTitle": "Haïti",
"url": "https://www.lapresse.ca/international/dossiers/seisme-en-haiti/201204/25/01-4518986-haiti-sean-penn-recoit-un-prix-pour-son-engagement.php",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Séisme Haïti catastrophe bilan"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.lapresse.ca/arts/musique/critiques-cd/201204/27/01-4519537-norah-jones-la-belle-et-la-souris-.php",
"items": [
{
"itemType": "newspaperArticle",
"title": "Norah Jones: la belle et la souris ****",
"creators": [
{
"firstName": "Alain de",
"lastName": "Repentigny",
"creatorType": "author"
}
],
"date": "2012-04-28T06:05:00-04:00",
"abstractNote": "Ce nouvel album de Norah Jones, pertinemment intitulé ... Little Broken Hearts, étonnera même ceux qui croyaient tout savoir de la célèbre fille de Ravi Shankar.",
"language": "fr-CA",
"libraryCatalog": "www.lapresse.ca",
"publicationTitle": "La Presse",
"section": "Musique",
"shortTitle": "Norah Jones",
"url": "https://www.lapresse.ca/arts/musique/critiques-cd/201204/27/01-4519537-norah-jones-la-belle-et-la-souris-.php",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "CD"
},
{
"tag": "Critiques"
},
{
"tag": "album"
},
{
"tag": "chansons"
},
{
"tag": "compilation"
},
{
"tag": "disque"
},
{
"tag": "groupe"
},
{
"tag": "lancement"
},
{
"tag": "musique"
},
{
"tag": "nouveautés"
},
{
"tag": "studio"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.lapresse.ca/covid-19/2021-08-27/passeport-vaccinal/les-codes-qr-de-plusieurs-elus-compromis.php",
"items": [
{
"itemType": "newspaperArticle",
"title": "Passeport vaccinal: Les codes QR de plusieurs élus compromis",
"creators": [
{
"firstName": "Tristan",
"lastName": "Péloquin",
"creatorType": "author"
}
],
"date": "2021-08-27T00:15:00-04:00",
"abstractNote": "Un pirate informatique non identifié proche de la communauté du Hackfest a réussi jeudi à obtenir de façon illicite les codes QR contenant les informations vaccinales de plusieurs élus de l’Assemblée nationale, dont celles du ministre responsable de la Protection des renseignements personnels, Éric Caire.",
"language": "fr-CA",
"libraryCatalog": "www.lapresse.ca",
"publicationTitle": "La Presse",
"section": "COVID-19",
"shortTitle": "Passeport vaccinal",
"url": "https://www.lapresse.ca/covid-19/2021-08-27/passeport-vaccinal/les-codes-qr-de-plusieurs-elus-compromis.php",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://(www\.)?americanarchive\.org/catalog/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, _url) {
if (doc.querySelector('meta[property="og:video"]')) {
return "tvBroadcast";
}
else if (doc.querySelector('meta[property="og:audio"]')) {
return "radioBroadcast";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('h2 > a[href*="/catalog/"]');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
if (item.abstractNote) {
item.abstractNote = item.abstractNote.replace(/\n+/g, ' ');
}
for (let entry of doc.querySelectorAll('.contributors dl')) {
for (let b of entry.querySelectorAll('b')) {
let label = b.textContent;
let name = b.nextSibling.textContent.trim().replace(/^Dr\b/, '');
let type = 'contributor';
let institution = false;
if (label.includes('Reporter') || label.includes('Host')) {
type = 'castMember';
}
else if (label.includes('Director')) {
type = 'director';
}
else if (label.includes('Writer')) {
type = 'scriptwriter';
}
else if (label.includes('Produc')) {
type = 'producer';
}
else if (label.includes('Copyright Holder')) {
continue;
}
if (label.includes('Organization')) {
institution = true;
}
if (institution) {
item.creators.push({
lastName: name,
creatorType: type,
fieldMode: 1
});
}
else {
item.creators.push(ZU.cleanAuthor(name, type, name.includes(', ')));
}
}
}
for (let dt of doc.querySelectorAll('dt')) {
let key = ZU.trimInternal(dt.textContent);
let dd = dt.nextElementSibling;
while (dd && dd.tagName == 'DD') {
let value = ZU.trimInternal(dd.textContent);
switch (key) {
case 'Contributing Organization':
case 'Producing Organization': {
if (item.network) break;
if (!item.creators.length) {
item.creators.push({
lastName: value.replace(/\s*\(.*\)/, ''),
creatorType: 'contributor',
fieldMode: 1
});
}
let [, broadcaster, place] = value.match(/^([^(]*)(?:\((.+)\))?/);
if (/([WK][A-Z]{2,3}|PBS|NPR|Broadcast|Network)/.test(broadcaster)) {
item.network = broadcaster;
}
if (place) item.place = place;
break;
}
case 'Date':
case 'Created':
if (!item.date) {
item.date = ZU.strToISO(value);
}
break;
case 'Genres':
case 'Topics':
item.tags.push({ tag: value });
break;
case 'Duration':
item.runningTime = value;
break;
case 'Series':
item.programTitle = value;
break;
case 'Episode':
item.title = value;
break;
case 'Episode Number':
item.episodeNumber = value;
break;
case 'Rights':
item.rights = value;
break;
}
dd = dd.nextElementSibling;
}
}
// from the suggested citation on item pages
item.archive = 'American Archive of Public Broadcasting (GBH and the Library of Congress)';
// would like to grab the video file and attach it here, but they do a
// referer check that precludes that.
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.itemType = detectWeb(doc, url);
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://americanarchive.org/catalog/cpb-aacip_83-407wmf7g",
"items": [
{
"itemType": "tvBroadcast",
"title": "One More Harvest",
"creators": [
{
"lastName": "PBS Utah",
"creatorType": "contributor",
"fieldMode": 1
}
],
"date": "1984",
"abstractNote": "This program profiles Utah farmer Melvin Good and his family. During the program, Melvin reminisces about his life and growing up on the farm; his grandchildren discuss the decision to becoming farmers or pursue another vocation; family members describe Melvin's and their passion for farming; and Melvin describes the process of harvesting a crop.",
"archive": "American Archive of Public Broadcasting (GBH and the Library of Congress)",
"language": "en",
"libraryCatalog": "americanarchive.org",
"network": "PBS Utah",
"place": "Salt Lake City, Utah",
"rights": "KUED",
"runningTime": "00:28:27",
"url": "http://americanarchive.org/catalog/cpb-aacip-83-407wmf7g",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Agriculture"
},
{
"tag": "Documentary"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://americanarchive.org/catalog/cpb-aacip_223-225b07vs",
"items": [
{
"itemType": "radioBroadcast",
"title": "Art and Violence",
"creators": [
{
"firstName": "Amy",
"lastName": "Tardiff",
"creatorType": "castMember"
}
],
"date": "1995-06-17",
"abstractNote": "This segment reports on an artist who discusses the importance of art in response to the violence of contemporary society.",
"archive": "American Archive of Public Broadcasting (GBH and the Library of Congress)",
"language": "en",
"libraryCatalog": "americanarchive.org",
"network": "WGCU Public Media",
"place": "Fort Myers, Florida",
"rights": "No copyright statement in content.",
"runningTime": "00:04:33",
"url": "http://americanarchive.org/catalog/cpb-aacip-223-225b07vs",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Fine Arts"
},
{
"tag": "Local Communities"
},
{
"tag": "News"
},
{
"tag": "News Report"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://americanarchive.org/catalog/cpb-aacip-526-cv4bn9z59z",
"items": [
{
"itemType": "tvBroadcast",
"title": "The Test",
"creators": [
{
"lastName": "WTVI",
"creatorType": "producer",
"fieldMode": 1
},
{
"lastName": "Charlotte-Mecklenburg Board of Education",
"creatorType": "producer",
"fieldMode": 1
}
],
"abstractNote": "\"'THE TEST' contains practical suggestions on how to reduce a student's trauma when taking a standardized test.\"--1979 Peabody Awards entry form.",
"archive": "American Archive of Public Broadcasting (GBH and the Library of Congress)",
"language": "en",
"libraryCatalog": "americanarchive.org",
"network": "WTVI",
"runningTime": "00:10:32.265",
"url": "http://americanarchive.org/catalog/cpb-aacip-526-cv4bn9z59z",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://americanarchive.org/catalog/cpb-aacip-153-956djvtx",
"items": [
{
"itemType": "tvBroadcast",
"title": "Front Street Weekly",
"creators": [
{
"firstName": "Vivian",
"lastName": "Condeni",
"creatorType": "producer"
},
{
"firstName": "Lyle",
"lastName": "Graham",
"creatorType": "director"
},
{
"firstName": "Lyle",
"lastName": "Graham",
"creatorType": "producer"
},
{
"firstName": "Gwyneth Gamble",
"lastName": "Booth",
"creatorType": "castMember"
},
{
"lastName": "Oregon Public Broadcasting",
"creatorType": "producer",
"fieldMode": 1
}
],
"date": "1984-11-21",
"abstractNote": "This episode contains the following segments. The first segment, \"Spiritual Epidemic?,\" features individuals whose search for enlightenment has become all-consuming. The second, \"Magic in the Night?,\" investigates fire-walking and whether it amounts to anything more than a financial scam. The third segment, \"Salem Art Fair '85,\" is a profile on the annual 3-day summer festival. Front Street Weekly is a news magazine featuring segments on current events and topics of interest to the local community.",
"archive": "American Archive of Public Broadcasting (GBH and the Library of Congress)",
"language": "en",
"libraryCatalog": "americanarchive.org",
"network": "Oregon Public Broadcasting",
"programTitle": "Front Street Weekly",
"rights": "Oregon Public Broadcasting c. 1985",
"runningTime": "00:29:48",
"url": "http://americanarchive.org/catalog/cpb-aacip-153-956djvtx",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Crafts"
},
{
"tag": "Health"
},
{
"tag": "Local Communities"
},
{
"tag": "Magazine"
},
{
"tag": "News"
},
{
"tag": "News Report"
},
{
"tag": "Religion"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://americanarchive.org/catalog/cpb-aacip_260-2683bp5r",
"items": [
{
"itemType": "tvBroadcast",
"title": "Gerry Spence",
"creators": [
{
"firstName": "Kyle",
"lastName": "Nicholoff",
"creatorType": "director"
},
{
"firstName": "Ruby",
"lastName": "Calvert",
"creatorType": "producer"
},
{
"firstName": "Gerry",
"lastName": "Spence",
"creatorType": "contributor"
},
{
"firstName": "Deborah",
"lastName": "Hammons",
"creatorType": "castMember"
},
{
"firstName": "Deborah",
"lastName": "Hammons",
"creatorType": "producer"
},
{
"lastName": "Wyoming PBS",
"creatorType": "producer",
"fieldMode": 1
}
],
"abstractNote": "The subject of this episode is Wyoming native Gerry Spence, a best-selling author considered by many to be America's greatest trial lawyer. He sits down with Deborah Hammons to talk about his past growing up in the city of Riverton. \"Main Street, Wyoming is a documentary series exploring aspects of Wyoming's local history and culture.\"",
"archive": "American Archive of Public Broadcasting (GBH and the Library of Congress)",
"episodeNumber": "605",
"language": "en",
"libraryCatalog": "americanarchive.org",
"network": "Wyoming PBS",
"programTitle": "Main Street, Wyoming",
"rights": "Main Street, Wyoming is a public affairs presentation of Wyoming Public Television 1995 KCWC-TV",
"runningTime": "00:29:10",
"url": "http://americanarchive.org/catalog/cpb-aacip-260-2683bp5r",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "History"
},
{
"tag": "Interview"
},
{
"tag": "Local Communities"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://americanarchive.org/catalog/cpb-aacip-3d6c55fdb1b",
"items": [
{
"itemType": "radioBroadcast",
"title": "Big Bird - America's Favorite Flightless Bird",
"creators": [
{
"lastName": "BirdNote",
"creatorType": "producer",
"fieldMode": 1
},
{
"firstName": "Bob",
"lastName": "Sundstrom",
"creatorType": "scriptwriter"
}
],
"date": "2018-11-20",
"abstractNote": "There’s at least one bird that nearly everyone knows on sight: Big Bird. He’s been a Sesame Street celebrity since 1969, cutting a colorful figure for pre-school fans and their parents across the world. Big Bird is really a big kid with a kind heart, who makes friends everywhere he goes. He helps children feel okay about not knowing everything because, well, Big Bird is still figuring things out himself. Like the alphabet. When Big Bird first saw the alphabet, he thought it was one really, really long word. And Michael Stein knows how to pronounce it. Have a listen!",
"archive": "American Archive of Public Broadcasting (GBH and the Library of Congress)",
"language": "en",
"libraryCatalog": "americanarchive.org",
"place": "Seattle, Washington",
"programTitle": "BirdNote",
"rights": "Sounds for BirdNote stories were provided by the Macaulay Library at the Cornell Lab of Ornithology, Xeno-Canto, Martyn Stewart, Chris Peterson, John Kessler, and others. Where music was used, fair use was taken into consideration. Individual credits are found at the bottom of each transcript.",
"runningTime": "00:01:45.195",
"url": "http://americanarchive.org/catalog/cpb-aacip-3d6c55fdb1b",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Science"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://americanarchive.org/catalog/cpb-aacip-529-df6k06z734",
"items": [
{
"itemType": "radioBroadcast",
"title": "An Examination of Testing",
"creators": [
{
"firstName": "William",
"lastName": "Koch",
"creatorType": "contributor"
},
{
"firstName": "Panchita",
"lastName": "Garrett",
"creatorType": "contributor"
},
{
"firstName": "Kathy",
"lastName": "Glover",
"creatorType": "contributor"
},
{
"lastName": "KUT Longhorn Radio Network",
"creatorType": "producer",
"fieldMode": 1
}
],
"date": "1982-04-02",
"abstractNote": "Hosts Kathy Glover and Panchita Garrett talks with Dr. William Koch, Assoc. Dir. Of the Measurement and Evaluation Center at UT Austin. They discuss the nature of standardized testing, how, when and where it is used.",
"archive": "American Archive of Public Broadcasting (GBH and the Library of Congress)",
"language": "en",
"libraryCatalog": "americanarchive.org",
"network": "KUT Longhorn Radio Network",
"programTitle": "The Inquiring Mind",
"rights": "KUT, COPIES OKAY",
"runningTime": "00:24:32",
"url": "http://americanarchive.org/catalog/cpb-aacip-529-df6k06z734",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Education"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://americanarchive.org/catalog?q=The+Inquiring+Mind&utf8=%E2%9C%93&f[access_types][]=online",
"items": "multiple"
}
]
/** END TEST CASES **/
250Abe Jellinek/Record/\.[a-z]|/GroupedWork/[a-z0-9-]+|/Union/Search\?/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, _url) {
if (doc.querySelector('#record-details-column')
&& doc.querySelector('#formattedMarcRecord')) {
let type = text(doc, 'h2 small').toLowerCase();
if (type.includes('dvd')) {
return 'film';
}
else if (type.includes('audio')) {
return 'audioRecording';
}
else {
return 'book';
}
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.related-manifestation tr'); // grouped works
for (let row of rows) {
let href = attr(row, 'a[href*="/Record/"]', 'href');
let bookTitle = text(row.closest('.result') || doc.body, '.result-title');
let format = text(row.closest('.related-manifestation'),
'.manifestation-format a')
.replace(/[+-]/, '').trim();
let year = text(row, 'td', 0).replace(/[.,;:[\]]/g, '');
let formatAndYear = [format, year].filter(x => x).join(', ');
let title = bookTitle
? ZU.trimInternal(`${bookTitle} (${formatAndYear})`)
: ZU.trimInternal(formatAndYear);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, _url) {
var lines = doc.querySelectorAll('#formattedMarcRecord table tbody tr');
var translator = Zotero.loadTranslator("import");
translator.setTranslator("a6ee60df-1ddc-4aae-bb25-45e0537be973"); // MARC
translator.getTranslatorObject(function (marc) {
var record = new marc.record();
var item = new Zotero.Item();
record.leader = text(lines[0], 'td');
for (let line of Array.from(lines).slice(2)) {
let fieldTag = text(line, 'th');
let indicators = text(line, 'th', 0) + text(line, 'th', 1);
let fieldContent = text(line, 'td').replace(/\|/g, marc.subfieldDelimiter);
record.addField(fieldTag, indicators, fieldContent);
}
record.translate(item);
item.libraryCatalog = attr(doc, 'meta[property="og:site_name"]', 'content')
|| attr(doc, '#header-logo', 'alt')
|| 'Library Catalog (Pika)';
item.complete();
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://cmc.marmot.org/Record/.b11174316",
"items": [
{
"itemType": "book",
"title": "The Pentagon papers as published by the New York times",
"creators": [
{
"firstName": "Neil",
"lastName": "Sheehan",
"creatorType": "editor"
}
],
"date": "1971",
"callNumber": "E183.8.V5 P4 1971",
"libraryCatalog": "Colorado Mountain College",
"numPages": "810",
"place": "New York",
"publisher": "Quadrangle Books",
"attachments": [],
"tags": [
{
"tag": "Foreign relations"
},
{
"tag": "Foreign relations"
},
{
"tag": "Juvenile literature"
},
{
"tag": "Literature"
},
{
"tag": "Politics and government"
},
{
"tag": "United States"
},
{
"tag": "United States"
},
{
"tag": "Vietnam"
},
{
"tag": "Vietnam"
},
{
"tag": "Vietnam"
},
{
"tag": "Vietnam War, 1961-1975"
},
{
"tag": "Vietnam War, 1961-1975"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://aimslibrary.marmot.org/Record/.b64203992",
"items": [
{
"itemType": "film",
"title": "Test pattern",
"creators": [
{
"firstName": "Shatara Michelle",
"lastName": "Ford",
"creatorType": "author"
},
{
"firstName": "Brittany S.",
"lastName": "Hall",
"creatorType": "author"
},
{
"firstName": "Will",
"lastName": "Brill",
"creatorType": "author"
},
{
"firstName": "Gail",
"lastName": "Bean",
"creatorType": "author"
},
{
"firstName": "Drew",
"lastName": "Fuller",
"creatorType": "author"
},
{
"lastName": "Kino Lorber, Inc",
"creatorType": "contributor",
"fieldMode": true
}
],
"date": "2021",
"abstractNote": "The movie follows an interracial couple whose relationship is put to the test after a Black woman is sexually assaulted and her white boyfriend drives her from hospital to hospital in search of a rape kit. Their story reveals the systemic injustices and social conditioning women face when navigating sex and consent within the American patriarchy. Winner of top prizes at the BlackStar and New Orleans Film Festivals, this gripping social thriller offers a unique exploration of institutional racism and sexism from a Black female point of view",
"callNumber": "PN1997.2 .T47 2021",
"distributor": "Kino Lorber",
"language": "eng",
"libraryCatalog": "Aims Community College",
"attachments": [],
"tags": [
{
"tag": "Drama"
},
{
"tag": "Drama"
},
{
"tag": "Drama"
},
{
"tag": "Drama"
},
{
"tag": "Drama"
},
{
"tag": "Feature films"
},
{
"tag": "Feature films"
},
{
"tag": "Interracial couples"
},
{
"tag": "Interracial couples"
},
{
"tag": "Justice"
},
{
"tag": "Justice"
},
{
"tag": "Rape"
},
{
"tag": "Rape"
},
{
"tag": "Social problem films"
},
{
"tag": "Video recordings"
}
],
"notes": [
{
"note": "Title from sell sheet Originally released as a motion picture in 2020 Wide screen Special features: Audio commentary by Shatara Michelle Ford; Shatara Michelle Ford in conversation with James Gray"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://catalog.lionlibraries.org/Record/.b26815862",
"items": [
{
"itemType": "book",
"title": "The dating playbook",
"creators": [
{
"firstName": "Farrah",
"lastName": "Rochon",
"creatorType": "author"
}
],
"date": "2021",
"ISBN": "9781538716670",
"callNumber": "813.6",
"libraryCatalog": "Libraries Online Inc.",
"numPages": "367",
"publisher": "Forever",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://aimslibrary.marmot.org/GroupedWork/76eafa1e-d054-9db7-7a1e-3ee083de25b5/Home",
"items": "multiple"
},
{
"type": "web",
"url": "https://aimslibrary.marmot.org/GroupedWork/d1abd191-3f9f-0921-2894-4d6e7c352e45/Home",
"items": "multiple"
},
{
"type": "web",
"url": "https://flc.flatironslibrary.org/Record/.b29911680",
"items": [
{
"itemType": "book",
"title": "Darling",
"creators": [
{
"firstName": "K.",
"lastName": "Ancrum",
"creatorType": "author"
},
{
"firstName": "J. M.",
"lastName": "Barrie",
"creatorType": "author"
}
],
"date": "2021",
"ISBN": "9781250265265",
"abstractNote": "On Wendy Darling's first night in Chicago, a boy called Peter appears at her window. He's dizzying, captivating, beautiful-- and she agrees to join him for a night on the town. They're soon running in the city's underground. She makes friends: a punk girl named Tinkerbelle and the lost boys Peter watches over. And she makes enemies: the terrifying Detective Hook, and maybe Peter himself, as his sinister secrets start coming to light. Will Wendy survive this night-- and make sure everyone else does, too?",
"callNumber": "PZ",
"edition": "First edition",
"libraryCatalog": "Flatirons Library Consortium",
"numPages": "282",
"place": "New York",
"publisher": "Imprint",
"attachments": [],
"tags": [
{
"tag": "Adaptations"
},
{
"tag": "Adventure and adventurers"
},
{
"tag": "Adventure stories"
},
{
"tag": "Chicago (Ill.)"
},
{
"tag": "Darling, Wendy"
},
{
"tag": "Fiction"
},
{
"tag": "Fiction"
},
{
"tag": "Fiction"
},
{
"tag": "Fiction"
},
{
"tag": "Fiction"
},
{
"tag": "Love stories"
},
{
"tag": "Nightlife"
},
{
"tag": "Peter Pan"
},
{
"tag": "Young adult fiction"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://bemis.marmot.org/Record/.b33973477",
"items": [
{
"itemType": "book",
"title": "First test",
"creators": [
{
"firstName": "Tamora",
"lastName": "Pierce",
"creatorType": "author"
},
{
"firstName": "Tamora",
"lastName": "Pierce",
"creatorType": "author"
}
],
"date": "1999",
"ISBN": "9780679889144 9780679989141 9780679889175 9780756904869 9780375829055 9781435233638 9781415553169",
"abstractNote": "Ten-year-old Keladry of Mindalen, daughter of nobles, serves as a page but must prove herself to the males around her if she is ever to fulfill her dream of becoming a knight. When Alanna became the King's Champion, it was decided that girls would henceforth be allowed to train for the knighthood. But ten years have passed, and no girls have come forward. Now, however, someone is about to change all that. Her name is Kel. In this first book in a new series from popular children's fantasy writer Tamora Pierce, we are introduced to a strong, adventurous new heroine who will win the hearts and minds of fantasy fans",
"callNumber": "PZ7.P61464 Fi 1999",
"libraryCatalog": "Bemis Public Library",
"numPages": "216",
"place": "New York",
"publisher": "Random House",
"series": "Protector of the small",
"attachments": [],
"tags": [
{
"tag": "Fantasy"
},
{
"tag": "Fantasy fiction"
},
{
"tag": "Fantasy fiction"
},
{
"tag": "Fantasy fiction"
},
{
"tag": "Fiction"
},
{
"tag": "Fiction"
},
{
"tag": "Knights and knighthood"
},
{
"tag": "Knights and knighthood"
},
{
"tag": "Sex role"
},
{
"tag": "Sex role"
},
{
"tag": "Young adult"
}
],
"notes": [
{
"note": "Sequel: Page"
},
{
"note": "Decisions -- Not So Welcome -- Practice Courts -- Classrooms -- Kel Backs Away -- Lance -- Kel Takes a Stand -- Winter -- Tests -- Royal Forest -- Spidren Hunt -- Cast of Characters"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://bemis.marmot.org/Union/Search?basicType=&genealogyType=&view=list&lookfor=test&basicType=Keyword&searchSource=local",
"items": "multiple"
}
]
/** END TEST CASES **/
100Abe Jellinekhttps?://ceur-ws\.org/Vol-/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.endsWith('.pdf')) {
return 'conferencePaper';
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('ul li[id]');
for (let row of rows) {
let id = row.id;
let title = ZU.trimInternal(text(row, 'a'));
if (!id || !title) continue;
if (checkOnly) return true;
found = true;
items[id] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) scrapeIDs(doc, url, Object.keys(items));
});
}
else {
let id = url.match(/([^/])\.pdf/)[1];
ZU.processDocuments('index.html', doc =>
scrapeIDs(doc, url.replace(/[^/]+\.pdf.*/, ''), [id]));
}
}
function scrapeIDs(doc, url, ids) {
for (let id of ids) {
let row = doc.getElementById(id);
let item = new Zotero.Item('conferencePaper');
item.title = text(row, '.CEURTITLE')
|| text(row, '.AUXTITLE').replace(' (invited paper)', '')
|| row.textContent;
item.date = ZU.strToISO(text(doc, '.CEURLOCTIME'))
|| ZU.strToISO(text(doc, '.CEURPUBDATE'));
item.proceedingsTitle = text(doc, '.CEURFULLTITLE');
item.conferenceName = text(doc, '.CEURVOLTITLE');
item.place = text(doc, '.CEURLOCTIME')
.match(/((?:(?:,\s*)?[^\d,]+){0,2})/)[1]
.replace(/,\s*$/, '');
item.publisher = 'CEUR';
item.volume = text(doc, '.CEURVOLNR').replace('Vol-', '');
item.series = 'CEUR Workshop Proceedings';
item.pages = text(row, '.CEURPAGES');
item.language = 'en';
item.ISSN = '1613-0073';
item.url = url.replace(/[#?].*/, '') + '#' + id;
for (let author of row.querySelectorAll('.CEURAUTHOR, .AUXAUTHOR')) {
item.creators.push(ZU.cleanAuthor(author.textContent, 'author'));
}
for (let author of text(row, '.CEURAUTHORS').split(', ')) {
item.creators.push(ZU.cleanAuthor(author, 'author'));
}
for (let editor of doc.querySelectorAll('.CEURVOLEDITOR')) {
item.creators.push(ZU.cleanAuthor(editor.textContent, 'editor'));
}
item.attachments.push({
title: 'Full Text PDF',
mimeType: 'application/pdf',
url: attr(row, 'a', 'href')
});
item.complete();
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://ceur-ws.org/Vol-2460/",
"items": "multiple"
},
{
"type": "web",
"url": "http://ceur-ws.org/Vol-2919/",
"items": "multiple"
},
{
"type": "web",
"url": "http://ceur-ws.org/Vol-1117/",
"items": "multiple"
},
{
"type": "web",
"url": "http://ceur-ws.org/Vol-2636/",
"items": "multiple"
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://www\.arxiv-vanity\.com/papers//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, _url) {
if (doc.querySelector('nav a.btn[href*="arxiv.org"]')) {
return "journalArticle";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.paper-list-item h3 > a');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, _url) {
let arxivURL = attr(doc, 'nav a.btn[href*="arxiv.org"]', 'href');
ZU.processDocuments(arxivURL, function (arxivDoc) {
var translator = Zotero.loadTranslator('web');
// arXiv
translator.setTranslator('ecddda2e-4fc6-4aea-9f17-ef3b56d7377a');
translator.setDocument(arxivDoc);
translator.setHandler('itemDone', function (obj, item) {
item.libraryCatalog = 'arXiv';
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.doWeb(arxivDoc, arxivURL);
});
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.arxiv-vanity.com/papers/1708.05866/",
"items": [
{
"itemType": "journalArticle",
"title": "A Brief Survey of Deep Reinforcement Learning",
"creators": [
{
"firstName": "Kai",
"lastName": "Arulkumaran",
"creatorType": "author"
},
{
"firstName": "Marc Peter",
"lastName": "Deisenroth",
"creatorType": "author"
},
{
"firstName": "Miles",
"lastName": "Brundage",
"creatorType": "author"
},
{
"firstName": "Anil Anthony",
"lastName": "Bharath",
"creatorType": "author"
}
],
"date": "11/2017",
"DOI": "10.1109/MSP.2017.2743240",
"ISSN": "1053-5888",
"abstractNote": "Deep reinforcement learning is poised to revolutionise the field of AI and represents a step towards building autonomous systems with a higher level understanding of the visual world. Currently, deep learning is enabling reinforcement learning to scale to problems that were previously intractable, such as learning to play video games directly from pixels. Deep reinforcement learning algorithms are also applied to robotics, allowing control policies for robots to be learned directly from camera inputs in the real world. In this survey, we begin with an introduction to the general field of reinforcement learning, then progress to the main streams of value-based and policy-based methods. Our survey will cover central algorithms in deep reinforcement learning, including the deep $Q$-network, trust region policy optimisation, and asynchronous advantage actor-critic. In parallel, we highlight the unique advantages of deep neural networks, focusing on visual understanding via reinforcement learning. To conclude, we describe several current areas of research within the field.",
"extra": "arXiv: 1708.05866",
"issue": "6",
"journalAbbreviation": "IEEE Signal Process. Mag.",
"libraryCatalog": "arXiv",
"pages": "26-38",
"publicationTitle": "IEEE Signal Processing Magazine",
"url": "http://arxiv.org/abs/1708.05866",
"volume": "34",
"attachments": [
{
"title": "arXiv Fulltext PDF",
"mimeType": "application/pdf"
},
{
"title": "arXiv.org Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Computer Science - Artificial Intelligence"
},
{
"tag": "Computer Science - Computer Vision and Pattern Recognition"
},
{
"tag": "Computer Science - Machine Learning"
},
{
"tag": "Statistics - Machine Learning"
}
],
"notes": [
{
"note": "Comment: IEEE Signal Processing Magazine, Special Issue on Deep Learning for Image Understanding (arXiv extended version)"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.arxiv-vanity.com/papers/2108.06338/",
"items": [
{
"itemType": "journalArticle",
"title": "Graph2MDA: a multi-modal variational graph embedding model for predicting microbe-drug associations",
"creators": [
{
"firstName": "Lei",
"lastName": "Deng",
"creatorType": "author"
},
{
"firstName": "Yibiao",
"lastName": "Huang",
"creatorType": "author"
},
{
"firstName": "Xuejun",
"lastName": "Liu",
"creatorType": "author"
},
{
"firstName": "Hui",
"lastName": "Liu",
"creatorType": "author"
}
],
"date": "2021-08-14",
"abstractNote": "Accumulated clinical studies show that microbes living in humans interact closely with human hosts, and get involved in modulating drug efficacy and drug toxicity. Microbes have become novel targets for the development of antibacterial agents. Therefore, screening of microbe-drug associations can benefit greatly drug research and development. With the increase of microbial genomic and pharmacological datasets, we are greatly motivated to develop an effective computational method to identify new microbe-drug associations. In this paper, we proposed a novel method, Graph2MDA, to predict microbe-drug associations by using variational graph autoencoder (VGAE). We constructed multi-modal attributed graphs based on multiple features of microbes and drugs, such as molecular structures, microbe genetic sequences, and function annotations. Taking as input the multi-modal attribute graphs, VGAE was trained to learn the informative and interpretable latent representations of each node and the whole graph, and then a deep neural network classifier was used to predict microbe-drug associations. The hyperparameter analysis and model ablation studies showed the sensitivity and robustness of our model. We evaluated our method on three independent datasets and the experimental results showed that our proposed method outperformed six existing state-of-the-art methods. We also explored the meaningness of the learned latent representations of drugs and found that the drugs show obvious clustering patterns that are significantly consistent with drug ATC classification. Moreover, we conducted case studies on two microbes and two drugs and found 75\\%-95\\% predicted associations have been reported in PubMed literature. Our extensive performance evaluations validated the effectiveness of our proposed method.\\",
"extra": "arXiv: 2108.06338",
"libraryCatalog": "arXiv",
"publicationTitle": "arXiv:2108.06338 [cs, q-bio]",
"shortTitle": "Graph2MDA",
"url": "http://arxiv.org/abs/2108.06338",
"attachments": [
{
"title": "arXiv Fulltext PDF",
"mimeType": "application/pdf"
},
{
"title": "arXiv.org Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Computer Science - Machine Learning"
},
{
"tag": "Quantitative Biology - Quantitative Methods"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.arxiv-vanity.com/papers/",
"items": "multiple"
}
]
/** END TEST CASES **/
100Ben Swift^https?://searchthecollection\.nga\.gov\.au//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Ben Swift
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.match(/uniqueId=(\d+)/)) {
return "artwork";
}
return false;
}
function parseArtwork(uniqueId) {
let jsonURL = `https://searchthecollection.nga.gov.au/stcapi/service/stc/node?uniqueId=${uniqueId}`;
ZU.doGet(jsonURL, function (respText) {
let newArtwork = new Zotero.Item("artwork");
let json = JSON.parse(respText);
if (parseInt(json.responseCode) != 200) {
throw new Error(`NGA Collection API request failed: ${json.responseMessage}`);
}
let data = json.payLoad;
// start populating the Zotero artwork item
newArtwork.callNumber = uniqueId;
newArtwork.url = `https://searchthecollection.nga.gov.au/object?uniqueId=${uniqueId}`;
// pull data from the relevant fields of the json response
newArtwork.title = data.vraTitleDisplayText;
newArtwork.libraryCatalog = `National Gallery of Australia - ${data.ngadCollectionStatus}`;
newArtwork.date = data.vraDateDisplayText;
newArtwork.artworkMedium = data.vraMaterialDisplayText;
let creators = JSON.parse(data.creatorsJson);
let irns = []; // for deduplication
for (let creator of creators) {
// the API sometimes returns duplicate creators, so here we check
// if we've seen this one before
if (irns.includes(creator.irn)) continue;
// if not, on with the show!
let name = creator.NamFullName;
let type = creator.NamPartyType;
if (type == "Person") {
// if we get a person, we should treat their name like
// a personal name and attempt to parse it
newArtwork.creators.push(ZU.cleanAuthor(name, "artist"));
}
else {
// if we get an organization, we should pass its name
// through as-is
newArtwork.creators.push({
lastName: name,
creatorType: "contributor",
fieldMode: 1
});
}
irns.push(creator.irn);
}
newArtwork.tags = data.aatTerTerm;
// provenance info (if present) is a useful thing to store in the notes field
if (data.provenance) {
newArtwork.notes.push(data.provenance);
}
newArtwork.complete();
});
}
function doWeb(doc, url) {
if (detectWeb(doc, url)) {
// if `detectWeb' returns true then this will definitely match,
// since it's the same regex
let uniqueId = url.match(/uniqueId=(\d+)/)[1];
parseArtwork(uniqueId);
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://searchthecollection.nga.gov.au/object?uniqueId=4193",
"items": [
{
"itemType": "artwork",
"title": "Be sure. Have a pap test. Visit your doctor or health centre now.",
"creators": [
{
"firstName": "Alison",
"lastName": "Alder",
"creatorType": "artist"
},
{
"lastName": "Redback Graphix",
"creatorType": "contributor",
"fieldMode": 1
},
{
"lastName": "NSW Women's Advisory Service",
"creatorType": "contributor",
"fieldMode": 1
},
{
"lastName": "Printcraft Pty Ltd",
"creatorType": "contributor",
"fieldMode": 1
}
],
"date": "1991",
"artworkMedium": "offset-lithograph, printed in colour inks, from multiple plates",
"callNumber": "4193",
"libraryCatalog": "National Gallery of Australia - Permanent Collection",
"url": "https://searchthecollection.nga.gov.au/object?uniqueId=4193",
"attachments": [],
"tags": [
{
"tag": "feminism"
},
{
"tag": "women"
}
],
"notes": [
"created by Alison Alder with Redback Graphix, Sydney, New South Wales, Australia, 1991\nwith Redback Graphix, the design studio, Sydney, New South Wales, Australia, from creation\nwho sold it to the National Gallery, Canberra, Australian Capital Territory, Australia, 1993\n\nThe collecting history of this work is complete. An unbroken chain of ownership is documented and has been verified."
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://searchthecollection.nga.gov.au/landing-info?uniqueId=13972",
"items": [
{
"itemType": "artwork",
"title": "Third detail. SNAILS SPACE, March 25 1995",
"creators": [
{
"firstName": "David",
"lastName": "Hockney",
"creatorType": "artist"
},
{
"lastName": "Nash Editions",
"creatorType": "contributor",
"fieldMode": 1
}
],
"date": "1995",
"artworkMedium": "colour inkjet print",
"callNumber": "13972",
"libraryCatalog": "National Gallery of Australia - Permanent Collection",
"url": "https://searchthecollection.nga.gov.au/object?uniqueId=13972",
"attachments": [],
"tags": [
{
"tag": "Abstract"
},
{
"tag": "Cubist"
},
{
"tag": "arcs"
},
{
"tag": "curves"
},
{
"tag": "dots"
},
{
"tag": "eclecticism"
},
{
"tag": "form"
},
{
"tag": "humour"
},
{
"tag": "imagination"
},
{
"tag": "lines"
},
{
"tag": "narrative"
},
{
"tag": "perspective"
},
{
"tag": "pictorial space"
},
{
"tag": "self-expression"
},
{
"tag": "serial art"
},
{
"tag": "shape"
},
{
"tag": "symbolism"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://baruchfoundation\.org//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, _url) {
if (doc.querySelector('#img-artist')) {
return "artwork";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('h4 > a[href*=".jpg.php"]');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
let item = new Zotero.Item('artwork');
item.title = text(doc, 'h1#title b');
item.abstractNote = text(doc, '.description');
item.artworkMedium = [...doc.querySelectorAll('.taglist a')]
.map(a => a.innerText.trim()).join(', ');
item.artworkSize = text(doc, '.zp_uneditable_image_location'); // not sure why this class
item.date = text(doc, '.zp_uneditable_image_city'); // again...
if (item.date.trim() == 'no date') item.date = '';
item.archive = 'Baruch Foundation';
item.url = url;
item.rights = text(doc, '.credit');
item.creators.push(ZU.cleanAuthor(
text(doc, '#img-artist em').replace(/^Dr\.?\b/, ''),
'artist'
));
item.attachments.push({
title: 'Image',
mimeType: 'image/jpeg',
url: attr(doc, '#img-full', 'href')
});
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://baruchfoundation.org/banka/banka_portrait-with-coiled-wire.jpg.php",
"items": [
{
"itemType": "artwork",
"title": "Portrait with Coiled Wire",
"creators": [
{
"firstName": "Pavel",
"lastName": "Baňka",
"creatorType": "artist"
}
],
"date": "1986",
"archive": "Baruch Foundation",
"artworkMedium": "Gelatin Silver Print, Toned Photograph",
"artworkSize": "12 1/4 x 15 5/16 in.",
"libraryCatalog": "Baruch Foundation",
"url": "http://baruchfoundation.org/banka/banka_portrait-with-coiled-wire.jpg.php",
"attachments": [
{
"title": "Image",
"mimeType": "image/jpeg"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://baruchfoundation.org/j_feyfar/j_feyfar_untitled-stream-in-woods.jpg.php",
"items": [
{
"itemType": "artwork",
"title": "Untitled (Wooded Landscape with Stream)",
"creators": [
{
"firstName": "Jaroslav",
"lastName": "Feyfar",
"creatorType": "artist"
}
],
"abstractNote": "on blue mount",
"archive": "Baruch Foundation",
"artworkMedium": "Black And White Photograph, Gelatin Silver Print",
"artworkSize": "4 3/4 x 3 1/2 in.",
"libraryCatalog": "Baruch Foundation",
"url": "http://baruchfoundation.org/j_feyfar/j_feyfar_untitled-stream-in-woods.jpg.php",
"attachments": [
{
"title": "Image",
"mimeType": "image/jpeg"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://baruchfoundation.org/balcar",
"items": "multiple"
}
]
/** END TEST CASES **/
100Andrew Schwartz^https?://leg\.colorado\.gov/(bills|bill-search)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2020 Andrew Schwartz
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/bills/')) {
return "bill";
}
else if (url.includes('/bill-search') && getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll(`header.search-result-single-item>h4>a[href*="/bills/"]`);
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function scrape(doc) {
var item = new Zotero.Item("bill");
item.title = text(doc, 'h1.node-title');
let billNumber = text(doc, '.field-name-field-bill-number');
if (billNumber) {
item.billNumber = ZU.trimInternal(billNumber);
}
let sponsors = [...doc.querySelectorAll('.sponsor-item .member h4')].reverse();
for (let sponsor of sponsors) {
let sponsorName = ZU.trimInternal(sponsor.textContent);
item.creators.push(ZU.cleanAuthor(sponsorName, "sponsor", false));
}
item.legislativeBody = 'Colorado General Assembly';
item.session = text(doc, '.bill-session .field-items > *');
item.attachments.push({ title: "Snapshot", document: doc });
let tags = doc.querySelectorAll('.bill-subjects .field-item');
for (let tag of tags) {
item.tags.push(tag.textContent);
}
item.complete();
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://leg.colorado.gov/bills/hb20-1084",
"items": [
{
"itemType": "bill",
"title": "Requirements For Dog And Cat Breeders And Sellers",
"creators": [
{
"firstName": "Mike",
"lastName": "Foote",
"creatorType": "sponsor"
},
{
"firstName": "Monica",
"lastName": "Duran",
"creatorType": "sponsor"
}
],
"billNumber": "HB20-1084",
"legislativeBody": "Colorado General Assembly",
"session": "2020 Regular Session",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Agriculture"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://leg.colorado.gov/bill-search?search_api_views_fulltext=education%20sirota&field_chamber=All&field_bill_type=All&field_sessions=64656&sort_bef_combine=search_api_relevance%20DESC",
"items": "multiple"
},
{
"type": "web",
"url": "https://leg.colorado.gov/bills/hjr19-1015",
"items": [
{
"itemType": "bill",
"title": "Adjourn Sine Die",
"creators": [
{
"firstName": "Stephen",
"lastName": "Fenberg",
"creatorType": "sponsor"
},
{
"firstName": "Alec",
"lastName": "Garnett",
"creatorType": "sponsor"
}
],
"billNumber": "HJR19-1015",
"legislativeBody": "Colorado General Assembly",
"session": "2019 Regular Session",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://leg.colorado.gov/bills/sb17b-001",
"items": [
{
"itemType": "bill",
"title": "Taxation Of Retail Marijuana Sales",
"creators": [
{
"firstName": "Lucia",
"lastName": "Guzman",
"creatorType": "sponsor"
}
],
"billNumber": "SB17B-001",
"legislativeBody": "Colorado General Assembly",
"session": "2017 Extraordinary Session",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100018<lyb018@gmail.com>^https?://(book|jour)\.ucdrs\.superlib\.net/(search|views/specific)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2020 018<lyb018@gmail.com>
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function trim(content) {
return content.replace(/^[\xA0\s]+/gm, '')
.replace(/[\xA0\s]+$/gm, '')
.replace(/\n+/g, '\n')
.replace(/:\n+/g, ': ')
.replace(/]\n/g, ']')
.replace(/】\n/g, '】')
.replace(/\n\/\n/g, '/');
}
// https://aurimasv.github.io/z2csl/typeMap.xml#map-book
// https://aurimasv.github.io/z2csl/typeMap.xml#map-conferencePaper
// https://aurimasv.github.io/z2csl/typeMap.xml#map-thesis
// https://aurimasv.github.io/z2csl/typeMap.xml#map-journalArticle
// https://aurimasv.github.io/z2csl/typeMap.xml#map-patent
var TYPE_MAP = {
图书: 'book',
会议论文: 'conferencePaper',
学位论文: 'thesis',
期刊: 'journalArticle',
专利: 'patent'
};
function doPerson(item, data) {
// (日)本田晃一著;朱运程译 translator author
if (!data) return;
const persons = data.split(/;|;/g);
for (var person of persons) {
if (person.endsWith('著')) {
item.creators.push({
lastName: person.trim().replace(/著$/g, ''),
creatorType: 'author',
fieldMode: 1
});
}
else if (person.endsWith('译')) {
item.creators.push({
lastName: person.trim().replace(/译$/g, ''),
creatorType: 'translator',
fieldMode: 1
});
}
else {
item.creators.push({
lastName: person,
creatorType: 'author',
fieldMode: 1
});
}
}
}
function doInventor(item, data) {
if (!data || data.length <= 0) return;
const persons = data.split(',');
for (var person of persons) {
item.creators.push({
lastName: person,
creatorType: 'inventor',
fieldMode: 1
});
}
}
function doTag(item, data) {
if (!data || data.length <= 0) return;
const tags = data.split(';');
for (var tag of tags) {
item.tags.push(tag.trim());
}
}
function sourceType(doc) {
var type = doc.querySelector('.on span').textContent;
return type;
}
function detectType(doc) {
return TYPE_MAP[sourceType(doc)];
}
function detectWeb(doc, url) {
if (url.includes('/search')) {
return getSearchResults(doc, true) ? 'multiple' : false;
}
else {
var dType = detectType(doc, url);
if (dType) {
return dType;
}
}
return false;
}
function getSearchResults(doc, checkOnly, itemInfo) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.book1');
for (let row of rows) {
let a = row.querySelector('td > table .px14');
if (!a) {
a = row.querySelector('a');
}
if (!a) {
continue;
}
if (checkOnly) return true;
let url = a.href;
// Z.debug(url);
let title = ZU.trimInternal(a.textContent);
found = true;
if (!found['']) {
items[''] = '【提醒:存在失败的可能,请隔几个小时后试试,或单个抓取。】';
}
if (itemInfo) {
var download = row.querySelector('.get a');
if (download && download.textContent == 'PDF下载') {
itemInfo[url] = {
pdfurl: download.href
};
}
}
if (title.startsWith('《') && title.endsWith('》')) {
title = title.replace(/《|》/g, '');
}
items[url] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
var itemInfo = {};
Zotero.selectItems(getSearchResults(doc, false, itemInfo), function (items) {
if (items) {
if (items['']) {
delete items[''];
}
scrapeItem(Object.keys(items), itemInfo);
}
});
}
else {
scrape(doc, url);
}
}
function scrapeItem(items, itemInfo) {
ZU.processDocuments(items, function (doc, url) {
scrape(doc, url, itemInfo[url] ? itemInfo[url].pdfurl : null);
});
}
function scrape(doc, url, pdfurl) {
if (!url || url.length <= 0) {
return;
}
var itemType = detectType(doc);
var item = new Zotero.Item(itemType);
item.url = url;
switch (sourceType(doc)) {
case '图书':
item.title = text(doc, '.tutilte');
var infos = text(doc, '.tubox dl');
infos = trim(infos);
for (var section0 of infos.split('\n')) {
if (!section0.trim()) continue;
let index = section0.indexOf('】');
if (index <= -1) continue;
let key = section0.substr(0, index + 1).trim();
let value = section0.substr(index + 1).trim();
// Z.debug(key + ':' + value);
switch (key) {
case "【作 者】":
doPerson(item, value);
break;
case "【出版项】":
var vals = Object.values(value.split(/:|,/g));
item.publisher = vals[1];
item.date = vals[2];
break;
case "【ISBN号】":
item.ISBN = value;
break;
case "【形态项】":
item.numPages = value;
break;
case "【中图法分类号】":
item.archiveLocation = value.replace(/\(.*\)/, '');
break;
default:
break;
}
}
// 摘要
item.abstractNote = text(doc, '.tu_content').replace(/内容提要:\n*/g, '');
break;
case '期刊':
item.title = ZU.trimInternal(text(doc, 'h1.title'));
infos = doc.querySelectorAll('#m_top li');
for (var section1 of infos) {
let content = ZU.trimInternal(section1.textContent);
if (!content || content.length <= 0) continue;
let index = content.indexOf('】');
if (index <= -1) continue;
content = trim(content);
let key = content.substr(0, index + 1).trim();
let value = content.substr(index + 1).trim();
switch (key) {
case "【作 者】":
doPerson(item, value);
break;
case "【刊 名】":
item.publicationTitle = value;
break;
case "【期 号】":
item.issue = value;
break;
case "【出版日期】":
item.date = value;
break;
case "【摘 要】":
item.abstractNote = value;
break;
case "【关键词】":
doTag(item, value);
break;
case "【影响因子】":
item.extra = '影响因子: ' + value;
break;
default:
break;
}
}
break;
case '学位论文':
item.title = ZU.trimInternal(text(doc, 'h1.title'));
infos = doc.querySelectorAll('#m_top li');
for (var section5 of infos) {
let content = ZU.trimInternal(section5.textContent);
if (!content || content.length <= 0) continue;
let index = content.indexOf('】');
if (index <= -1) continue;
content = trim(content);
let key = content.substr(0, index + 1).trim();
let value = content.substr(index + 1).trim();
switch (key) {
case "【作 者】":
doPerson(item, value);
break;
case "【学位授予单位】":
item.university = value;
break;
case "【导师姓名】":
item.creators.push({
lastName: value,
creatorType: 'contributor',
fieldMode: 1
});
break;
case "【学位年度】":
item.date = value;
break;
case "【摘 要】":
item.abstractNote = value.replace(/隐藏更多/g, '');
break;
case "【关键词】":
doTag(item, value);
break;
case "【学位名称】":
item.type = value;
break;
default:
break;
}
}
break;
case '会议论文':
item.title = ZU.trimInternal(text(doc, 'h1.title'));
infos = doc.querySelectorAll('#m_top li');
for (var section3 of infos) {
let content = ZU.trimInternal(section3.textContent);
if (!content || content.length <= 0) continue;
let index = content.indexOf('】');
if (index <= -1) continue;
content = trim(content);
let key = content.substr(0, index + 1).trim();
let value = content.substr(index + 1).trim();
switch (key) {
case "【作 者】":
doPerson(item, value);
break;
case "【会议名称】":
item.conferenceName = value;
break;
case "【会议录名称】":
item.series = value;
break;
case "【日 期】":
item.date = value;
break;
case "【摘 要】":
item.abstractNote = value.replace(/隐藏更多/g, '');
break;
case "【关键词】":
doTag(item, value);
break;
case "【作者联系方式】":
item.place = value;
break;
default:
break;
}
}
break;
case '专利':
item.title = ZU.trimInternal(text(doc, 'h1.title'));
infos = doc.querySelectorAll('.content li');
for (var section4 of infos) {
let content = ZU.trimInternal(section4.textContent);
if (!content || content.length <= 0) continue;
let index = content.indexOf('】');
if (index <= -1) continue;
content = trim(content);
let key = content.substr(0, index + 1).trim();
let value = content.substr(index + 1).trim();
switch (key) {
case "【申请号】":
item.applicationNumber = value;
break;
case "【申请人】":
doInventor(item, value);
break;
case "【发明人】":
doInventor(item, value);
break;
case "【申请日期】":
item.filingDate = value;
break;
case "【地 址】":
item.place = value;
break;
case "【专利类型】":
item.extra = '专利类型: ' + value;
break;
case "【IPC号】":
item.extra += '; IPC号: ' + value;
break;
case "【摘 要】":
item.abstractNote = value;
break;
default:
break;
}
}
break;
}
if (item.title.startsWith('《') && item.title.endsWith('》')) {
item.title = item.title.replace(/《|》/g, '');
}
// 如果抓取失败,请配合油猴脚本使用:https://greasyfork.org/zh-CN/scripts/408790
if (pdfurl) {
item.attachments.push({
url: pdfurl,
title: 'Full Text PDF',
mimeType: 'application/pdf'
});
}
else {
var download = doc.querySelector('.link a');
if (download && download.textContent == 'PDF下载') {
item.attachments.push({
url: download.href,
title: 'Full Text PDF',
mimeType: 'application/pdf'
});
}
}
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://book.ucdrs.superlib.net/views/specific/2929/bookDetail.jsp?dxNumber=000018108791&d=F788C1F57DDBFD163B5EDCB5371550F0&fenlei=02140804",
"items": [
{
"itemType": "book",
"title": "认知跃迁",
"creators": [
{
"lastName": "(日)本田晃一",
"creatorType": "author",
"fieldMode": 1
},
{
"lastName": "朱运程",
"creatorType": "translator",
"fieldMode": 1
}
],
"date": "2019.04",
"ISBN": "9787221152459",
"abstractNote": "在这个发展迅速的世界,每个人都承受着前所未有的压力和挑战。一个人想要取得成功,不是去苛求外部环境,而是要打破固有认知,扩展人生格局,形成更加高效的认知系统。作者将在成功人士身上得到的启发,通过验证形成了自己的认知。通过这些认知,作者将父亲负债累累濒临破产的企业转亏为盈,并积累下了巨额财富。本书将这些认知通过轻松幽默的语言,结合自己的经历阐述出来,为我们看待事物提供与众不同的视角,帮助我们重新认识自我、认清世界。通过本书可以迅速提高认知、扩展格局,快速找到事物本质,打破生活和事业中的困境,让我们成为一个有竞争力的人。",
"archiveLocation": "B848.4-49",
"libraryCatalog": "Superlib",
"numPages": "239",
"publisher": "贵州人民出版社",
"url": "http://book.ucdrs.superlib.net/views/specific/2929/bookDetail.jsp?dxNumber=000018108791&d=F788C1F57DDBFD163B5EDCB5371550F0&fenlei=02140804",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://jour.ucdrs.superlib.net/views/specific/2929/thesisDetail.jsp?dxNumber=390107316149&d=73BC951F9D12D3EF5BFAD6281BFC35F0&sw=%E8%AE%A4%E7%9F%A5",
"items": [
{
"itemType": "thesis",
"title": "认知是否具有现象性?",
"creators": [
{
"lastName": "孙玉婷",
"creatorType": "author",
"fieldMode": 1
},
{
"lastName": "蔡仲",
"creatorType": "contributor",
"fieldMode": 1
}
],
"date": "2019",
"abstractNote": "意识有感官、身体感觉、情绪情感、认知等形式,前三种意识形式的每一种意识状态似乎都具有独特的现象特征,但是对于认知状态是否具有现象特征存在激烈争论。一方面,一些理论家认为现象特征是有意识的认知状态固有的现象属性;另一方面,另一些理论家则固守心灵哲学中的传统观点,认为有意识的认知状态不具有现象特征,并且将有意识的认知状态的现象特征还原到感官的现象特征上。本文基于以下几点采取支持认知现象学的立场。首先,我们能够通过内省立即知道我们自身所处的认知状态,而要解释这一事实,就必须承认认知状态的现象感受性,这也就是所谓的自我认识论证;其次,我们能够通过许多案例直观地体验认知的现象感受性,一些理论家基于这些经验实例,构造出巧妙的现象对比论证。这是一种非还原的认知现象学立场,也就是说,现象性是认知状态的固有属性,不可以还原到感官现象性上,现象意识的范围可以拓展到有意识的认知状态。当然,对于以上观点,认知现象学的反对者从不同方面提出质疑。对于自我认识论证,要么质疑内省的可靠性,要么否认我们对自身心理状态的认识特权,要么提出其它方式来解释这种认识特权;对于现象对比论证,还是要将案例中涉及的现象差异还原到心理意象的现象性上。对于反对者的这些做法,我们将指出其中的不足指出,因而他们并不能完成反对认知的现象性的目标,从而捍卫非还原的认知现象学观点。",
"libraryCatalog": "Superlib",
"thesisType": "硕士",
"university": "南京大学",
"url": "http://jour.ucdrs.superlib.net/views/specific/2929/thesisDetail.jsp?dxNumber=390107316149&d=73BC951F9D12D3EF5BFAD6281BFC35F0&sw=%E8%AE%A4%E7%9F%A5",
"attachments": [],
"tags": [
{
"tag": "内省论证"
},
{
"tag": "现象对比论证"
},
{
"tag": "现象特征"
},
{
"tag": "自我认识论证"
},
{
"tag": "认知"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://jour.ucdrs.superlib.net/views/specific/2929/CPDetail.jsp?dxNumber=330107854501&d=FDBE0D57AC904E5720CCAD02A1BBDA49&sw=%E5%BA%94%E6%BF%80%E4%B8%8E%E8%AE%A4%E7%9F%A5%E7%9A%84ERP%E7%A0%94%E7%A9%B6",
"items": [
{
"itemType": "conferencePaper",
"title": "慢性应激对注意控制影响的ERP证据及tDCS干预",
"creators": [
{
"lastName": "刘清衿",
"creatorType": "author",
"fieldMode": 1
},
{
"lastName": "刘永",
"creatorType": "author",
"fieldMode": 1
},
{
"lastName": "冷雪晨",
"creatorType": "author",
"fieldMode": 1
},
{
"lastName": "韩金凤",
"creatorType": "author",
"fieldMode": 1
},
{
"lastName": "王喜术",
"creatorType": "author",
"fieldMode": 1
},
{
"lastName": "夏锋",
"creatorType": "author",
"fieldMode": 1
},
{
"lastName": "陈红",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "2019",
"abstractNote": "慢性应激是指应激源持续时间超过30天或应激源持续时间较短,但对个体的影响在30天以上的应激。慢性应激不但会引起一系列身心疾病,也会影响大脑的认知功能,尤其是前额叶执行功能。测量、评估慢性应激的危害,并且找到对应的干预方法对人类心理健康十分重要。本研究即以重大考试(研究生入学考试)作为慢性应激源,以多个应激状态评估量表和血压等生理指标作为评定慢性应激的主客观指标,引用注意控制网络ANT范式,采用事件",
"conferenceName": "第二十二届全国心理学学术会议",
"libraryCatalog": "Superlib",
"place": "西南大学心理学部;陆军军医大学西南医院全军肝胆外科研究所",
"series": "第二十二届全国心理学学术会议摘要集",
"url": "http://jour.ucdrs.superlib.net/views/specific/2929/CPDetail.jsp?dxNumber=330107854501&d=FDBE0D57AC904E5720CCAD02A1BBDA49&sw=%E5%BA%94%E6%BF%80%E4%B8%8E%E8%AE%A4%E7%9F%A5%E7%9A%84ERP%E7%A0%94%E7%A9%B6",
"attachments": [],
"tags": [
{
"tag": "ERPs"
},
{
"tag": "tDCS"
},
{
"tag": "慢性应激"
},
{
"tag": "注意控制"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://jour.ucdrs.superlib.net/views/specific/2929/thesisDetail.jsp?dxNumber=390107059051&d=3F56D2F62968EC84A161D3152EBC23C5&sw=%E5%BA%94%E6%BF%80%E4%B8%8E%E8%AE%A4%E7%9F%A5%E7%9A%84ERP%E7%A0%94%E7%A9%B6",
"items": [
{
"itemType": "thesis",
"title": "在校大学生特质焦虑人群情绪与认知冲突的ERP研究",
"creators": [
{
"lastName": "徐丹丹",
"creatorType": "author",
"fieldMode": 1
},
{
"lastName": "季淑梅",
"creatorType": "contributor",
"fieldMode": 1
}
],
"date": "2018",
"abstractNote": "目前大多数研究者主要关注临床焦虑障碍的情绪、认知加工的特点,对于在应激条件下非临床的高特质焦虑得分者研究相对较少。而较高水平的焦虑易感倾向预示着高风险的焦虑障碍以及其它精神疾病。研究在校大学生特质焦虑人群对情绪、认知加工的特点,有助于焦虑症及其他精神疾病的早期诊断和预防。本文利用事件相关电位(Event-Related Potentials,ERP)技术,以高、低特质焦虑个体为研究对象,探讨在校大学生特质焦虑人群情绪冲突和认知冲突的ERP时空模式特点。本研究内容包含以下两部分:第一部分采用“词-面孔”Stroop范式,令16名高、低特质焦虑被试完成由“开心”和“悲伤”面孔及对应情绪词作为材料的情绪冲突任务,探讨在校大学生特质焦虑人群情绪冲突效应及冲突适应效应。对反应正确率的统计分析显示,高、低特质焦虑组均出现情绪冲突效应和冲突适应效应;在反应时上,高、低特质焦虑组均呈现情绪冲突效应,而高特质焦虑组无冲突适应效应,表明高特质焦虑人群冲突监控能力较弱。ERP结果显示,高特质焦虑组在前额区P100和中央顶区N450波幅上表现出冲突适应效应,表明早期注意和冲突监测能力增强;而高特质焦虑组前额区冲突慢电位SP波幅无冲突适应效应,表明对情绪冲突的反应选择及冲突解决能力减弱。第二部分:利用经典Simon范式,令16名高、低特质焦虑被试完成颜色-位置冲突任务,探讨在校大学生特质焦虑人群对空间位置认知冲突的解决和脑加工特征。行为结果表明,高、低特质焦虑组在反应时和正确率上表现出相同干扰模式的Simon效应。ERP结果表明,高特质焦虑组比低特质焦虑组在中央顶区的P300波幅的Simon效应量大,表现出更大的Simon效应;高特质焦虑组对冲突反应的N270和P300波幅小于低特质焦虑组,表明高特质焦虑人群对空间位置冲突加工的认知抑制能力下降。本研究通过情绪冲突和认知冲突揭示了在校大学生特质焦虑人群对冲突反应监控和抑制能力不足。",
"libraryCatalog": "Superlib",
"thesisType": "硕士",
"university": "燕山大学",
"url": "http://jour.ucdrs.superlib.net/views/specific/2929/thesisDetail.jsp?dxNumber=390107059051&d=3F56D2F62968EC84A161D3152EBC23C5&sw=%E5%BA%94%E6%BF%80%E4%B8%8E%E8%AE%A4%E7%9F%A5%E7%9A%84ERP%E7%A0%94%E7%A9%B6",
"attachments": [],
"tags": [
{
"tag": "事件相关电位"
},
{
"tag": "冲突适应效应"
},
{
"tag": "情绪冲突"
},
{
"tag": "特质焦虑"
},
{
"tag": "认知冲突"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://newlinesmag\.com//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (doc.body.classList.contains('single')) {
// Newlines has no physical magazine, so I can't really justify
// returning magazineArticle
return "blogPost";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('h3 > a');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
if (item.creators.length <= 1) {
item.creators = [];
for (let author of doc.querySelectorAll('.single_post__author a')) {
item.creators.push(ZU.cleanAuthor(
author.textContent.replace(/^\s*Dr\.? /, ''), 'author'
));
}
}
for (let term of doc.querySelectorAll('.tax_term')) {
item.tags.push({ tag: term.textContent });
}
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.itemType = "blogPost";
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://newlinesmag.com/argument/classifying-middle-east-americans-as-white-undermines-the-communitys-health/",
"items": [
{
"itemType": "blogPost",
"title": "Classifying Middle East Americans as ‘White’ Undermines the Community’s Health",
"creators": [
{
"firstName": "Deena",
"lastName": "Kishawi",
"creatorType": "author"
}
],
"date": "2021-08-16T11:22:43+00:00",
"abstractNote": "The goal would be to have a demographic identifier that places Middle East, North Africa and the Mediterranean Basin as a separate category in the census, therefore allowing more medical and health-related research to occur in these populations and adequate funding for targeted interventions.",
"blogTitle": "Newlines Magazine",
"language": "en",
"url": "https://newlinesmag.com/argument/classifying-middle-east-americans-as-white-undermines-the-communitys-health/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Health"
},
{
"tag": "Healthcare"
},
{
"tag": "United States"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://newlinesmag.com/essays/yiddish-and-arabic-share-an-uncommon-commonality/",
"items": [
{
"itemType": "blogPost",
"title": "Yiddish and Arabic Share an Uncommon Commonality",
"creators": [
{
"firstName": "Alexander",
"lastName": "Jabbari",
"creatorType": "author"
}
],
"date": "2021-08-13T11:18:17+00:00",
"abstractNote": "For the Zionists, Yiddish represented the weak, emasculated Jew of the shtetl. They saw it as feminine, backward and hybrid, a mixture of many languages. This stood in stark contrast with Hebrew, which they associated with the new, muscular Jewish identity they sought to engender in Palestine.",
"blogTitle": "Newlines Magazine",
"language": "en",
"url": "https://newlinesmag.com/essays/yiddish-and-arabic-share-an-uncommon-commonality/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Language"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://newlinesmag.com/?s=test",
"items": "multiple"
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://[^/]+\.kanopy\.com//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/video/')) {
return "film";
}
return false;
}
function doWeb(doc, url) {
scrape(doc, url);
}
function scrape(doc, url) {
let item = new Zotero.Item('film');
item.title = ZU.trimInternal(text(doc, 'h1.title').trim().replace(/\s*\n/, ':'));
item.abstractNote = text(doc, '#video-panel-details p');
item.distributor = text(doc, '.author a');
item.url = attr(doc, 'link[rel="canonical"]', 'href') || url;
for (let elem = doc.querySelector('.features > *'); elem; elem = elem.nextElementSibling) {
let key = elem.textContent.trim();
let value = (elem = elem.nextElementSibling).textContent.trim();
switch (key) {
case 'Running Time':
item.runningTime = value;
break;
case 'Year':
item.date = value;
break;
case 'Filmmakers':
for (let person of elem.querySelectorAll('a')) {
item.creators.push(ZU.cleanAuthor(person.textContent, 'director'));
}
break;
case 'Features':
for (let person of elem.querySelectorAll('a')) {
item.creators.push(ZU.cleanAuthor(person.textContent, 'contributor'));
}
break;
case 'Languages':
item.language = value;
break;
case 'Subjects':
for (let subj of elem.querySelectorAll('.item')) {
let tag = subj.textContent.replace(/\s*>\s*/g, '--').trim();
if (tag != 'Staff Picks') {
item.tags.push({ tag });
}
}
break;
}
}
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://berkeley.kanopy.com/video/metropolis-0",
"items": [
{
"itemType": "film",
"title": "Metropolis",
"creators": [
{
"firstName": "Fritz",
"lastName": "Lang",
"creatorType": "director"
}
],
"date": "1927",
"abstractNote": "Perhaps the most famous and influential of all silent films, METROPOLIS had for 75 years been seen only in shortened or truncated versions. Now, restored in Germany with state-of-the-art digital technology, under the supervision of the Murnau Foundation, and with the original 1927 orchestral score by Gottfried Huppertz added, METROPOLIS can be appreciated in its full glory.",
"distributor": "Kino Lorber",
"language": "German, Silent",
"libraryCatalog": "Kanopy",
"runningTime": "149 mins",
"url": "https://berkeley.kanopy.com/video/metropolis-0",
"attachments": [],
"tags": [
{
"tag": "Global Studies & Languages--German Studies"
},
{
"tag": "Movies"
},
{
"tag": "Movies--Early Film"
},
{
"tag": "Movies--Science Fiction & Fantasy"
},
{
"tag": "The Arts--Film Studies"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://berkeley.kanopy.com/video/modern-times",
"items": [
{
"itemType": "film",
"title": "Modern Times",
"creators": [
{
"firstName": "Charlie",
"lastName": "Chaplin",
"creatorType": "director"
},
{
"firstName": "Charlie",
"lastName": "Chaplin",
"creatorType": "contributor"
},
{
"firstName": "Henry",
"lastName": "Bergman",
"creatorType": "contributor"
},
{
"firstName": "Paulette",
"lastName": "Goddard",
"creatorType": "contributor"
}
],
"date": "1936",
"abstractNote": "Charlie Chaplin's last outing as the Little Tramp puts the iconic character to work as a giddily inept factory employee who becomes smitten with a gorgeous gamine (Paulette Goddard).",
"distributor": "The Criterion Collection",
"language": "English, Silent",
"libraryCatalog": "Kanopy",
"runningTime": "88 mins",
"url": "https://berkeley.kanopy.com/video/modern-times",
"attachments": [],
"tags": [
{
"tag": "Movies"
},
{
"tag": "Movies--Classic Cinema"
},
{
"tag": "Movies--Comedy"
},
{
"tag": "Movies--Early Film"
},
{
"tag": "The Arts--Film Studies"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://berkeley.kanopy.com/video/hard-days-night",
"items": [
{
"itemType": "film",
"title": "A Hard Day's Night",
"creators": [
{
"firstName": "Richard",
"lastName": "Lester",
"creatorType": "director"
},
{
"firstName": "George",
"lastName": "Harrison",
"creatorType": "contributor"
},
{
"firstName": "John",
"lastName": "Lennon",
"creatorType": "contributor"
},
{
"firstName": "Paul",
"lastName": "McCartney",
"creatorType": "contributor"
},
{
"firstName": "Ringo",
"lastName": "Starr",
"creatorType": "contributor"
}
],
"date": "1964",
"abstractNote": "Meet the Beatles! Just one month after they exploded onto the U.S. scene with their Ed Sullivan Show appearance, John, Paul, George, and Ringo began working on a project that would bring their revolutionary talent to the big screen, earning them a 1965 BAFTA nomination for Most Promising Newcomer to Leading Film Roles.",
"distributor": "The Criterion Collection",
"language": "English",
"libraryCatalog": "Kanopy",
"runningTime": "89 mins",
"url": "https://berkeley.kanopy.com/video/hard-days-night",
"attachments": [],
"tags": [
{
"tag": "Global Studies & Languages--European/Baltic Studies"
},
{
"tag": "Movies"
},
{
"tag": "Movies--Classic Cinema"
},
{
"tag": "Movies--Comedy"
},
{
"tag": "The Arts--Music"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://berkeley.kanopy.com/video/black-panthers-0",
"items": [
{
"itemType": "film",
"title": "The Black Panthers: Vanguard of the Revolution",
"creators": [
{
"firstName": "Stanley",
"lastName": "Nelson",
"creatorType": "director"
}
],
"date": "2015",
"abstractNote": "In the turbulent 1960s, change was coming to America and the fault lines could no longer be ignored -- cities were burning, Vietnam was exploding, and disputes raged over equality and civil rights. A new revolutionary culture was emerging and it sought to drastically transform the system. The Black Panther Party for Self-Defense would, for a short time, put itself at the vanguard of that change. The Black Panthers: Vanguard of the Revolution is the first feature-length documentary to explore the Black Panther Party, its significance to the broader American culture, its cultural and political awakening for black people, and the painful lessons wrought when a movement derails. Master documentarian Stanley Nelson goes straight to the source, weaving a treasure trove of rare archival footage with the diverse group of voices of the people who were there: police, FBI informants, journalists, white supporters and detractors, and Black Panthers who remained loyal to the party and those who left it.",
"distributor": "PBS",
"language": "English",
"libraryCatalog": "Kanopy",
"runningTime": "115 mins",
"shortTitle": "The Black Panthers",
"url": "https://berkeley.kanopy.com/video/black-panthers-0",
"attachments": [],
"tags": [
{
"tag": "Documentaries"
},
{
"tag": "Documentaries--Ethnicity & Identity"
},
{
"tag": "Documentaries--Historical Perspectives"
},
{
"tag": "Movies--TV Series"
},
{
"tag": "Social Sciences--History - Modern"
},
{
"tag": "Social Sciences--Race & Class Studies"
},
{
"tag": "Social Sciences--Sociology"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://berkeley.kanopy.com/video/berlin-symphony-great-city",
"items": [
{
"itemType": "film",
"title": "Berlin, Symphony of a Great City",
"creators": [
{
"firstName": "Walter",
"lastName": "Ruttmann",
"creatorType": "director"
}
],
"date": "1927",
"abstractNote": "At once an invaluable photographic record of life in Weimar Berlin and a timeless demonstration of the cinema's ability to enthrall on a purely visceral level, Berlin, Symphony of a Great City (Berlin, die Symphonie der Grosstadt) offers a kaleidoscopic view of a single day in the life of a bustling metropolis.",
"distributor": "Flicker Alley",
"language": "English, Silent",
"libraryCatalog": "Kanopy",
"runningTime": "63 mins",
"url": "https://berkeley.kanopy.com/video/berlin-symphony-great-city",
"attachments": [],
"tags": [
{
"tag": "Global Studies & Languages--German Studies"
},
{
"tag": "Movies--Early Film"
},
{
"tag": "The Arts"
},
{
"tag": "The Arts--Film Studies"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://(www\.)?sipri\.org//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/publications/') && doc.body.classList.contains('node--type-publication')) {
if (doc.querySelector('.views-field-field-isbn')) {
return "book";
}
else {
return "report";
}
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('td.views-field-title a');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
let item = new Zotero.Item('report');
item.title = text(doc, '#sipri-2016-page-title');
item.abstractNote = text(doc, '.body p');
item.date = ZU.strToISO(text(doc, '.views-field-field-year-of-publication'));
item.language = 'en';
item.url = attr(doc, 'link[rel="canonical"]', 'href') || url;
for (let author of doc.querySelectorAll('.views-field-combinedauthors a')) {
let name = author.innerText.replace(/^\s*Dr\.?\b/, '');
item.creators.push(ZU.cleanAuthor(name, 'author'));
}
if (doc.querySelector('.views-field-field-isbn')) {
item.itemType = 'book';
item.ISBN = ZU.cleanISBN(text(doc, '.views-field-field-isbn .field-content'));
item.numPages = text(doc, '.views-field-field-pages .field-content')
.replace('pp.', '');
item.publisher = text(doc, '.views-field-field-publisher-name .field-content');
// this is VERY fragile, but oh well. it isn't crucial and there's no
// better way besides fetching info from the ISBN (which is worse in terms
// of speed and isn't guaranteed to be more accurate).
for (let h3 of doc.querySelectorAll('h3')) {
if (h3.textContent.includes('About the series editor')) {
let p = h3.nextElementSibling;
let seriesEditor = text(p, 'i').replace(/^\s*Dr\.?\b/, '');
item.creators.push(ZU.cleanAuthor(seriesEditor, 'seriesEditor'));
break;
}
}
}
else {
item.institution = text(doc, '.views-field-field-publisher-name .field-content');
}
let pdfURL = attr(doc, '.field-pdf-full-publication a', 'href');
if (pdfURL) {
item.attachments.push({
title: 'Full Text PDF',
mimeType: 'application/pdf',
url: pdfURL
});
}
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.sipri.org/publications/2021/other-publications/new-technologies-and-nuclear-disarmament-outlining-way-forward",
"items": [
{
"itemType": "report",
"title": "New Technologies and Nuclear Disarmament: Outlining a Way Forward",
"creators": [
{
"firstName": "Tytti",
"lastName": "Erästö",
"creatorType": "author"
}
],
"date": "2021-05",
"abstractNote": "This report sheds light on the impact of recent military-technological advancements on nuclear deterrence and disarmament. Noting that progress towards multilateral disarmament is hardly possible without prior and significant reductions in the largest nuclear weapon arsenals, the report views the resumption of bilateral arms control between Russia and the United States as the most important step towards disarmament at the present moment. It argues that these two countries should move away from their cold war era nuclear doctrines, which seek an ability to win nuclear wars, towards a policy of ‘minimal nuclear deterrence’, that is focused on deterring a nuclear attack.",
"institution": "SIPRI",
"language": "en",
"libraryCatalog": "SIPRI",
"shortTitle": "New Technologies and Nuclear Disarmament",
"url": "https://www.sipri.org/publications/2021/other-publications/new-technologies-and-nuclear-disarmament-outlining-way-forward",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.sipri.org/publications/2021/sipri-policy-papers/china-eu-connectivity-era-geopolitical-competition",
"items": [
{
"itemType": "report",
"title": "China–EU Connectivity in an Era of Geopolitical Competition",
"creators": [
{
"firstName": "Ian",
"lastName": "Anthony",
"creatorType": "author"
},
{
"firstName": "Jiayi",
"lastName": "Zhou",
"creatorType": "author"
},
{
"firstName": "Jingdong",
"lastName": "Yuan",
"creatorType": "author"
},
{
"firstName": "Fei",
"lastName": "Su",
"creatorType": "author"
},
{
"firstName": "Jinyung",
"lastName": "Kim",
"creatorType": "author"
}
],
"date": "2021-03",
"abstractNote": "The long-standing relationship between China and the European Union (EU) is being subsumed into a broader geopolitical competition between major power centres. Alongside cooperation, elements of competition and rivalry have been sharpened by a re-evaluation of the bilateral relationship by EU actors. Areas of cooperation have included Chinese involvement in the EU’s internal connectivity projects—specifically in transport and digital networks. This report examines this cooperation and assesses its prospects.",
"institution": "SIPRI",
"language": "en",
"libraryCatalog": "SIPRI",
"url": "https://www.sipri.org/publications/2021/sipri-policy-papers/china-eu-connectivity-era-geopolitical-competition",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.sipri.org/publications/2001/evolution-biological-disarmament",
"items": [
{
"itemType": "book",
"title": "The Evolution of Biological Disarmament",
"creators": [
{
"firstName": "Nicolas A.",
"lastName": "Sims",
"creatorType": "author"
},
{
"firstName": "Jean Pascal",
"lastName": "Zanders",
"creatorType": "seriesEditor"
}
],
"date": "2001",
"ISBN": "9780198295785",
"abstractNote": "In this volume the evolution of the disarmament regime of the 1972 Biological and Toxin Weapons Convention (BTWC) is described from 1980, when the first BTWC Review Conference was held, until 1998. Nicholas A. Sims analyses the results of the first four review conferences; the meetings of the Ad Hoc Group of Governmental Experts to Identify and Examine Potential Verification Measures from a Scientific and Technical Standpoint; the 1994 Special Conference; the current negotiations of the Ad Hoc Group to produce an additional protocol to the BTWC, which may include verification measures; handling of the 1997 Cuban allegation of US biological warfare; and the implementation of Article X of the BTWC on international exchanges and cooperation for peaceful purposes. The strength of the BTWC regime is assessed in the light of its evolution through the review process and its changing contexts, including Russia's admission that it had inherited an offensive biological weapon programme. The Evolution of Biological Disarmament applies an original sector-by-sector approach to its analysis of the BTWC, studied in a long-term perspective.",
"language": "en",
"libraryCatalog": "SIPRI",
"numPages": "203",
"publisher": "Oxford University Press",
"url": "https://www.sipri.org/publications/2001/evolution-biological-disarmament",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.sipri.org/publications/search?keys=&author_editor=&field_associated_research_area_target_id=All&field_publication_type_target_id=284",
"items": "multiple"
}
]
/** END TEST CASES **/
100Martin Meyerhoff, Sebastian Karcher, Jaco Lüken^https?://www\.tagesspiegel\.de/*
Tagesspiegel Translator
Copyright (C) 2011 Martin Meyerhoff
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
function detectWeb(doc, url) {
if (ZU.xpathText(doc, "//meta[@property='og:type']/@content") == "article") {
return "newspaperArticle";
}
else if (url.includes('/suchergebnis/')) {
return "multiple";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = ZU.xpath(doc, '//h2/a[span[contains(@class, "hcf-headline")]]');
for (var i = 0; i < rows.length; i++) {
var href = rows[i].href;
var title = ZU.xpathText(rows[i], './span[contains(@class, "hcf-headline")]');
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) {
return;
}
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var newItem = new Zotero.Item("newspaperArticle");
newItem.title = ZU.xpathText(doc, "//meta[@property='og:title']/@content");
newItem.date = ZU.xpathText(doc, "//time[@itemprop='datePublished']/@datetime");
newItem.abstractNote = ZU.xpathText(doc, '//meta[@name="description"]/@content');
// Note: it only grabs the top-level section
newItem.section = ZU.xpathText(doc, '//ul[contains(@class, "ts-main-nav-items")]/li[contains(@class, "ts-active")]/a');
// Authors
var author = ZU.xpathText(doc, "//header[contains(@class, 'ts-article-header')]//a[@rel='author']");
// Zotero.debug(author);
if (author) {
author = author.replace(/^[Vv]on\s|Kommentar\svon\s/g, '');
author = author.split(/,\s|\sund\s/);
for (var i = 0; i < author.length; i++) {
newItem.creators.push(ZU.cleanAuthor(author[i], "author"));
}
}
newItem.url = ZU.xpathText(doc, '//link[@rel="canonical"]/@href') || url;
newItem.attachments.push({
url: newItem.url,
title: "Snapshot",
mimeType: "text/html"
});
// Tags
/* We read the tags from the initialisation of variable cmsObject.
* This object and the keywords are defined in a head script tag.
*/
let tags = [];
let scriptItems = doc.querySelectorAll('head > script');
if (scriptItems) {
for (let i = 0; i < scriptItems.length; i++) {
let scriptItemText = scriptItems[i].textContent;
// search for script tag that declares the variable
if (!scriptItemText.match(/var\s+cmsObject\s*=/)) {
continue;
}
// the pid seems to be added at the end of the keywords, so we remove it
let matches = scriptItemText.match(/keywords:\s*"(.+?)(,pid\d+)?",/);
if (!matches) {
continue;
}
tags = matches[1].split(',');
break;
}
}
for (let tag of tags) {
if (tag.match(/^\s*_/)) {
continue;
}
newItem.tags.push(tag.replace(/_/g, ' ').trim());
}
newItem.publicationTitle = "Der Tagesspiegel Online";
newItem.language = "de-DE";
newItem.ISSN = "1865-2263";
newItem.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://www.tagesspiegel.de/",
"items": "multiple"
},
{
"type": "web",
"url": "http://www.tagesspiegel.de/meinung/ddr-drama-der-turm-ich-leb-mein-leben/7216226.html",
"items": [
{
"itemType": "newspaperArticle",
"title": "Ich leb’ mein Leben",
"creators": [
{
"firstName": "Robert",
"lastName": "Ide",
"creatorType": "author"
}
],
"date": "2012-10-05T00:00:00+02:00",
"ISSN": "1865-2263",
"language": "de-DE",
"libraryCatalog": "Tagesspiegel",
"publicationTitle": "Der Tagesspiegel Online",
"url": "https://www.tagesspiegel.de/meinung/ddr-drama-der-turm-ich-leb-mein-leben/7216226.html",
"abstractNote": "Das DDR-Familiendrama \"Der Turm\" hat zwei Abende lang Deutschlands Fernsehzuschauer bewegt, die Gedanken flogen zurück in die gemeinsam geteilte Vergangenheit. 17 Millionen Menschen sind irgendwann einmal mit der Frage konfrontiert worden: Dafür oder dagegen? Verrat an Freunden oder der eigenen Karriere?",
"section": "Meinung",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
"ARD",
"DDR",
"Der Turm"
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.tagesspiegel.de/berlin/queerspiegel/bundestagsabstimmung-ohne-fraktionszwang-ehe-fuer-alle-noch-diese-woche/19984104.html",
"items": [
{
"itemType": "newspaperArticle",
"title": "Ehe für alle – noch diese Woche",
"creators": [
{
"firstName": "Andrea",
"lastName": "Dernbach",
"creatorType": "author"
},
{
"firstName": "Maria",
"lastName": "Fiedler",
"creatorType": "author"
},
{
"firstName": "Carsten",
"lastName": "Werner",
"creatorType": "author"
}
],
"date": "2017-06-27T18:20:46+02:00",
"ISSN": "1865-2263",
"language": "de-DE",
"libraryCatalog": "Tagesspiegel",
"publicationTitle": "Der Tagesspiegel Online",
"url": "https://www.tagesspiegel.de/gesellschaft/queerspiegel/bundestagsabstimmung-ohne-fraktionszwang-ehe-fuer-alle-noch-diese-woche/19984104.html",
"abstractNote": "Erst gestern hat Angela Merkel ihre Position zur \"Ehe für alle\" geändert - nun soll der Bundestag wohl schon am Freitag darüber abstimmen.",
"section": "Gesellschaft",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
"Angela Merkel",
"Bundestagswahl 2017",
"CDU",
"CSU",
"Ehe fuer alle",
"Grosse Boehmer",
"Queerspiegel",
"Renate Kuenast",
"SPD"
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.tagesspiegel.de/suchergebnis/?sw=plagiarismus&search-ressort=all&search-period=empty&search-fromday=1&search-frommonth=1&search-fromyear=1996&search-today=27&search-tomonth=6&search-toyear=2017&submit-search=anzeigen",
"items": "multiple"
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://www\.hrw\.org//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
// can't go off URLs alone because some reports are under /news/
if (url.includes('/report/') || doc.querySelector('.report-header')) {
return "report";
}
else if (url.includes('world-report') || doc.querySelector('.wr-hero')) {
if (url.includes('/country-chapters/')) {
return "bookSection";
}
else {
return "book";
}
}
else if (doc.querySelector('.news-header')) {
return "blogPost";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('h3.media-block__title > a');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
if (item.itemType == 'report') {
if (url.includes('/world-report/') || doc.querySelector('.wr-hero')) {
// world reports get the wrong title
item.title = text(doc, 'h1');
}
else {
// we only bother with subtitles for regular reports because they're
// just descriptions on news/briefings/blog posts/world reports.
let subtitle = text(doc, '.report-header__subtitle');
if (subtitle && !item.title.includes(': ')) {
item.title += `: ${subtitle}`;
}
}
item.institution = 'Human Rights Watch';
// HRW reports have ISBNs, but there's no way to get them from the page,
// only from some text in the PDF. Such a pain.
if (item.abstractNote) {
item.abstractNote = item.abstractNote.replace(/^Summary\b/, '');
}
}
else if (item.itemType == 'bookSection') {
item.title = text(doc, 'h1');
let subtitle = text(doc, '.chapter-header__subtitle');
if (subtitle && !item.title.includes(': ')) {
item.title += `: ${subtitle}`;
}
item.bookTitle = text(doc, 'header a[href*="/world-report/"]');
}
if (['book', 'bookSection'].includes(item.itemType)) {
// can't get the publisher...
item.creators = [{
lastName: 'Human Rights Watch',
creatorType: 'author',
fieldMode: 1
}];
}
let downloadLink = attr(doc, 'a.download-item-link, a.wr-hero__report-dl', 'href');
if (downloadLink) {
// replace snapshot
item.attachments = [
{
title: 'Full Text PDF',
mimeType: 'application/pdf',
url: downloadLink
}
];
}
item.libraryCatalog = 'Human Rights Watch';
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.itemType = detectWeb(doc, url);
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.hrw.org/report/2021/08/10/underwater/human-rights-impacts-china-belt-and-road-project-cambodia",
"items": [
{
"itemType": "report",
"title": "Underwater: Human Rights Impacts of a China Belt and Road Project in Cambodia",
"creators": [],
"date": "2021-08-10T10:31:33-0400",
"abstractNote": "“Dao,” an ethnic Lao man in his 40s, previously lived a largely self-sufficient life in the village of Srekor in northeastern Cambodia’s Stung Treng province. He fished on the Sesan River and farmed rice and fruit on the fertile soil along the river. His family gathered herbs, mushrooms, resins, and medicinal plants from his village’s communal forests and sold them at the local market.",
"institution": "Human Rights Watch",
"language": "en",
"libraryCatalog": "Human Rights Watch",
"shortTitle": "Underwater",
"url": "https://www.hrw.org/report/2021/08/10/underwater/human-rights-impacts-china-belt-and-road-project-cambodia",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.hrw.org/km/report/2021/08/10/379432",
"items": [
{
"itemType": "report",
"title": "នៅក្រោមផ្ទែទឹក: ផលប៉ះពាល់សិទ្ធិមនុស្សពីគម្រោងផ្លូវមួយ ខ្សែក្រវាត់មួយនៅកម្ពុជា របាការណ៍សង្ខេប",
"creators": [],
"date": "2021-08-10T17:28:43-0400",
"abstractNote": "“លោក ដាវ” ជាជនជាតិភាគតិចឡាវ មានអាយុ ជាង ៤០ ឆ្នាំ ធ្លាប់រស់នៅក្នុងជីវភាពដែលស្វ័យភាពបរិបូរក្នុងភូមិ ស្រែគ ខេត្តស្ទឹងត្រែង ភាគឦសាននៃប្រទេសកម្ពុជា។ គាត់ប្រកបរបរនេសាទក្នុងទន្លេសេសាន និងធ្វើស្រែចំការ នៅលើដីដ៏មានជីជាតិតាមដងទន្លេ។ គ្រួសាររបស់លោក ចេញទៅរករុក្ខជាតិ ផ្សិត ជ័រទឹក រុក្ខជាតិឱសថផ្សេងៗពីព",
"institution": "Human Rights Watch",
"language": "km",
"libraryCatalog": "Human Rights Watch",
"shortTitle": "នៅក្រោមផ្ទែទឹក",
"url": "https://www.hrw.org/km/report/2021/08/10/379432",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.hrw.org/report/2018/07/01/scared-public-and-now-no-privacy/human-rights-and-public-health-impacts",
"items": [
{
"itemType": "report",
"title": "“Scared in Public and Now No Privacy”: Human Rights and Public Health Impacts of Indonesia’s Anti-LGBT Moral Panic",
"creators": [],
"date": "2018-07-01T21:01:01-0400",
"abstractNote": "On May 21, 2017, police in Indonesia’s capital, Jakarta, raided the Atlantis gym and sauna, arresting 141 people, most of whom were gay or bisexual men. Ten were ultimately prosecuted under Indonesia’s pornography law. The Atlantis was not just a “gay club,” but a public health outreach center—a well-known hub for HIV education, testing, and counseling among men who have sex with men (MSM).",
"institution": "Human Rights Watch",
"language": "en",
"libraryCatalog": "Human Rights Watch",
"shortTitle": "“Scared in Public and Now No Privacy”",
"url": "https://www.hrw.org/report/2018/07/01/scared-public-and-now-no-privacy/human-rights-and-public-health-impacts",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.hrw.org/report/2019/05/28/if-you-are-afraid-your-lives-leave-sinai/egyptian-security-forces-and-isis",
"items": [
{
"itemType": "report",
"title": "If You Are Afraid for Your Lives, Leave Sinai!: Egyptian Security Forces and ISIS-Affiliate Abuses in North Sinai",
"creators": [],
"date": "2019-05-28T00:59:01-0400",
"institution": "Human Rights Watch",
"language": "en",
"libraryCatalog": "Human Rights Watch",
"shortTitle": "If You Are Afraid for Your Lives, Leave Sinai!",
"url": "https://www.hrw.org/report/2019/05/28/if-you-are-afraid-your-lives-leave-sinai/egyptian-security-forces-and-isis",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.hrw.org/news/2021/08/05/afghanistan-justice-system-failing-women",
"items": [
{
"itemType": "blogPost",
"title": "Afghanistan: Justice System Failing Women",
"creators": [],
"date": "2021-08-05T08:00:00-0400",
"abstractNote": "The Afghan government’s failure to provide accountability for violence against women and girls has undermined progress to protect women’s rights, Human Rights Watch said in a report released today.",
"blogTitle": "Human Rights Watch",
"language": "en",
"shortTitle": "Afghanistan",
"url": "https://www.hrw.org/news/2021/08/05/afghanistan-justice-system-failing-women",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.hrw.org/the-day-in-human-rights/2021/07/26",
"items": [
{
"itemType": "blogPost",
"title": "Fears of Further Taliban Atrocities in Afghanistan: Daily Brief",
"creators": [],
"date": "2021-07-26T03:29:54-0400",
"abstractNote": "Afghanistan's civilian casualties have hit a record high, according to a new UN study.",
"blogTitle": "Human Rights Watch",
"language": "en",
"shortTitle": "Fears of Further Taliban Atrocities in Afghanistan",
"url": "https://www.hrw.org/the-day-in-human-rights/2021/07/26",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.hrw.org/sitesearch?search=test",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.hrw.org/news/2021/08/11/left-fish-too-small-sell-cambodias-mekong-river-basin",
"items": [
{
"itemType": "report",
"title": "Left With Fish Too Small to Sell in Cambodia’s Mekong River Basin: How a China-Built Dam Destroyed an Ecosystem and Livelihoods",
"creators": [],
"date": "2021-08-10T17:16:06-0400",
"abstractNote": "Thousands have lost their homes and livelihoods since the completion of one of Asia’s widest dams, the Lower Sesan 2, in Cambodia’s Mekong River Basi",
"institution": "Human Rights Watch",
"language": "en",
"libraryCatalog": "Human Rights Watch",
"shortTitle": "Left With Fish Too Small to Sell in Cambodia’s Mekong River Basin",
"url": "https://www.hrw.org/news/2021/08/11/left-fish-too-small-sell-cambodias-mekong-river-basin",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.hrw.org/world-report/2019",
"items": [
{
"itemType": "book",
"title": "World Report 2019 | Human Rights Watch",
"creators": [
{
"lastName": "Human Rights Watch",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "2018-12-04T13:10:21-0500",
"abstractNote": "World Report 2019 is Human Rights Watch’s 29th annual review of human rights practices around the globe. It summarizes key human rights issues in more than 100 countries and territories worldwide, drawing on events from late 2017 through November 2018.\n\nIn his keynote essay, “World’s Autocrats Face Rising Resistance,” Human Rights Watch Executive Director Kenneth Roth argues that while autocrats and rights abusers often captured headlines in 2018, rights defenders pushed back and gained strength in unexpected ways.",
"language": "en",
"libraryCatalog": "Human Rights Watch",
"url": "https://www.hrw.org/world-report/2019",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.hrw.org/world-report/2019/country-chapters/australia",
"items": [
{
"itemType": "bookSection",
"title": "Australia: Events of 2018",
"creators": [
{
"lastName": "Human Rights Watch",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "2018-12-20T19:12:50-0500",
"abstractNote": "Australia has a strong record of protecting civil and political rights, but serious human rights issues remain. In 2018, the government continued to hold refugees and asylum seekers who arrived by boat in Australian waters on Manus Island in Papua New Guinea and on Nauru, marking more than five years since the reintroduction of its draconian offshore processing and settlement policy.\n\nIn October, the Queensland government introduced a human rights act, becoming the third jurisdiction in Australia to do so behind the Australian Capital Territory and Victoria.",
"bookTitle": "World Report 2019",
"language": "en",
"libraryCatalog": "Human Rights Watch",
"shortTitle": "Australia",
"url": "https://www.hrw.org/world-report/2019/country-chapters/australia",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.hrw.org/world-report/2019/country-chapters/global-5",
"items": [
{
"itemType": "bookSection",
"title": "Caught in the Middle: Convincing “Middle Powers” to Fight Autocrats Despite High Costs",
"creators": [
{
"lastName": "Human Rights Watch",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "2019-01-08T10:54:37-0500",
"abstractNote": "In a stifling political climate dominated by thin-skinned autocrats, governments that criticize another country’s human rights record risk paying an increasingly heavy price.\n\nIn August, a routine tweet by Canada’s Foreign Ministry calling for the release of Saudi women’s rights defenders triggered a full-blown diplomatic crisis, with Saudi Arabia retaliating by expelling Canada’s ambassador in Riyadh and freezing all new bilateral trade and investments.",
"bookTitle": "World Report 2019",
"language": "en",
"libraryCatalog": "Human Rights Watch",
"shortTitle": "Caught in the Middle",
"url": "https://www.hrw.org/world-report/2019/country-chapters/global-5",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://archives\.saltresearch\.org//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, _url) {
if (doc.querySelector('.itemTitle')) {
return "artwork";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('td[headers="t2"] a[href*="/handle/"]');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
// always use issued (created) date, not accession date
item.date = attr(doc, 'meta[name="DCTERMS.issued"]', 'content');
item.archive = 'SALT Research';
for (let attachment of item.attachments) {
// images are attached as PDFs
if (attachment.url && attachment.url.endsWith('.jpg')) {
attachment.mimeType = 'image/jpeg';
attachment.title = 'Image';
}
}
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.itemType = "artwork";
trans.addCustomFields({
'DC.format': 'artworkSize',
'DC.identifier': 'archiveLocation'
});
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://archives.saltresearch.org/handle/123456789/68422",
"items": [
{
"itemType": "artwork",
"title": "Peyzaj resimleri - Landscape drawings",
"creators": [],
"archive": "SALT Research",
"archiveLocation": "TSOBOSK054",
"artworkSize": "17,6-25,5 cm",
"libraryCatalog": "archives.saltresearch.org",
"rights": "Open Access",
"url": "https://archives.saltresearch.org/handle/123456789/68422",
"attachments": [
{
"title": "Image",
"mimeType": "image/jpeg"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Çizim - Drawing"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://archives.saltresearch.org/handle/123456789/88363",
"items": [
{
"itemType": "artwork",
"title": "Ankara Saraçoğlu Mahallesinin suluboya resmi - Watercolor painting of Ankara Saraçoğlu settlement",
"creators": [
{
"firstName": "Toğan",
"lastName": "Düzgören",
"creatorType": "author"
}
],
"date": "1951-01-01",
"archive": "SALT Research",
"archiveLocation": "TSOBOSK089",
"artworkSize": "39-29 cm",
"language": "Almanca - German",
"libraryCatalog": "archives.saltresearch.org",
"rights": "Open Access",
"url": "https://archives.saltresearch.org/handle/123456789/88363",
"attachments": [
{
"title": "Image",
"mimeType": "image/jpeg"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Resim - Painting"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://archives.saltresearch.org/simple-search?query=kadikoy",
"items": "multiple"
},
{
"type": "web",
"url": "https://archives.saltresearch.org/handle/123456789/2298",
"items": "multiple"
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://agris\.fao\.org/agris-search/search/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, _url) {
if (doc.querySelector('.docType_ico img[title*="Dataset"]')) {
return "document";
}
else if (doc.querySelector('meta[name="citation_journal_title"]')) {
return "journalArticle";
}
else if (doc.querySelector('meta[name="citation_title"]')) {
return "report";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('h3 > a[href*="search.do"]');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
// item.url will be empty if there's no full-text link; we don't want
// to use the catalog page as the URL in that case.
item.url = attr(doc, '.link-full-text a', 'href');
item.attachments = [];
if (item.itemType == 'document') {
item.extra = (item.extra || '') + '\nType: dataset';
}
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.itemType = detectWeb(doc, url);
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://agris.fao.org/agris-search/search.do?recordID=IR2012044101",
"items": [
{
"itemType": "report",
"title": "Possibility of artificial propagation in farmed great sturgeon (Huso huso)",
"creators": [
{
"firstName": "Mahmoud",
"lastName": "Bahmani",
"creatorType": "author"
},
{
"firstName": "M.",
"lastName": "Porkazemi",
"creatorType": "author"
},
{
"firstName": "H.",
"lastName": "Khara",
"creatorType": "author"
},
{
"firstName": "M.",
"lastName": "Rahimidanesh",
"creatorType": "author"
},
{
"firstName": "M. A.",
"lastName": "Tolooei",
"creatorType": "author"
},
{
"firstName": "A.",
"lastName": "Abasalizadeh",
"creatorType": "author"
},
{
"firstName": "M.",
"lastName": "Hassanzadehsaber",
"creatorType": "author"
},
{
"firstName": "H.",
"lastName": "Mohamadiparashkohi",
"creatorType": "author"
},
{
"firstName": "O.",
"lastName": "Asghari",
"creatorType": "author"
},
{
"firstName": "R.",
"lastName": "Kazemi",
"creatorType": "author"
},
{
"firstName": "S.",
"lastName": "Dezhandian",
"creatorType": "author"
},
{
"firstName": "A.",
"lastName": "Yousefi Jourdehi",
"creatorType": "author"
},
{
"firstName": "M.",
"lastName": "Mohseni",
"creatorType": "author"
},
{
"firstName": "M. A.",
"lastName": "Yazdani",
"creatorType": "author"
},
{
"firstName": "A.",
"lastName": "Hallajian",
"creatorType": "author"
},
{
"firstName": "M.",
"lastName": "Shakourian",
"creatorType": "author"
},
{
"firstName": "M.",
"lastName": "Pourdehghani",
"creatorType": "author"
}
],
"date": "2011",
"abstractNote": "In this research, morphometrical and physiological indicators of farmed great sturgeon, Huso huso in the Dr.Dadman International Sturgeon Research Institute studied. After biopsy of male and female gonads, two groups in terms of sexual maturity stage were observed. According to the histological observations, gonad development of male fish in the test group 1, stage II to III and in the test group 2 stage II to IV and in female fish in the test group 1 from stage II to stage II-III and in the test group 2 in stage III of sexual development and maturity stage was determined Maximum average weight and total length in a group of male fish in the summer (39/07±5/79 kg and 170 ± 6/48cm) and minimum average weight and total length in the two test groups of male fish in the autumn (26/25±3/65 kg and 155/5±4/40 cm) were measured. In the female test groups, the maximum average of weight and total length of the test group 2 in the summer (40/32±3/09 kg 170/12±1/96 cm), and the minimum of the test group 1 in the fall (25/8±1/30 kg and 160/6± 1/97 cm) were determined. The results of measuring the cortisol hormone in male test group, maximum and minimum average in the test group 1, respectively, in the summer (41/25±6/34 ng/ml) and fall (24/62±13/96 ng/ml) showed a significant difference between groups (p0.05). While the results of female group tests in test groups in relation with cortisol hormone had suggested that the maximum in group 2 in winter (58±25/92 ng/ml) and minimum in group 1 in the autumn (9/32±5/6 ng/ml) were observed and there were significant difference between groups (p0.05). Male, the results had suggested that the maximum average testosterone in the test group 2 in winter (71/25±15/52 ng / ml) and minimum in group 1 and in winter (27±6/60 ng/ml), respectively. So that showed significant difference between groups (P0.05). progesterone hormone were in the test group 2 and in summer (1/52±0/18 ng/ml) and its minimum in winter (0/14± 0/10 ng/ml) in test group 1 (p0.05), respectively. Maximum hormone levels 17-beta estradiol in the test group 2 in the autumn (16/42±6/36 ng/ml) and its minimum in the test group 1 in the winter (3/1±0/74 ng/ml) was observed and showed no statistical difference between groups (p 0.05). Based on the results, levels of female sex hormones in the test group showed that maximum testosterone (19/87±10/72 ng/ml) in the test group 2 in summer and minimum16/0±0/02 ng/ml) in the test group 1, were determined and had significant difference in all seasons (p0.05 (0/03±0/01 ng/ml) in the test group 1 was observed in winter that a significant difference between groups showed at fall (P0.05). Maximum and minimum levels of the hormone 17-beta estradiol in the test group 2 was observed in autumn (12/37±7/23 ng/ml), respectively (p0.05). The results of plasma metabolites (glucose, cholesterol, triglycerides and total lipid in the male test groups had suggested that the maximum and minimum of glucose in the test group 1 was (75/25±8/71 mg/dl) in winter and (39/5±6/71 mg / dl) summer, respectively. Maximum and minimum levels of cholesterol in group 1 was observed in autumn (128/75±54/34 mg/dl) and in winter (74/5±8/19 mg/dl), respectively. Maximum and minimum amount of triglycerides in the test group 2 observed in winter (384/75±50/93 mg/dl) and (156/25±16/34 mg / dl) in spring, so that in the spring between the groups showed significant difference (p0.05). Maximum total lipid in the test group 2 was observed in summer (686/25 ± 83/27 mg/dl) and minimum in the test group 1 in spring (410±62/03 mg/dl). Maximum and minimum glucose levels in a female group was observed in winter (82/7±11/55 mg/dl) and autumn (27/6±6 /41 mg/dl), respectively. The maximum cholesterol amount of the test group 1 was observed in winter (87±3/66 mg/dl) and minimum in the test group 2 in autumn (63/5±5/23 mg/dl). Maximum and minimum amount of triglycerides in the test group 2 was in the spring (281±33/67 mg/dl) and its minimum in autumn (213/75 ± 32/44 mg/dl), respectively, so that in the spring showed significant difference between the groups (p0.05).Maximum total lipid amount was in the test group 2 in spring (554/7±31/59 mg/dl) and minimum in the test group 1 in winter (367±21/22 mg/dl) and in summer between groups significant difference was observed (p0.05). The results of calcium and sodium cations and osmolarity in males suggested that calcium in females and sodium in males showed significant difference related to sexual maturation stage (P0.05). But osmolarity didn t show significant difference in both sex (p0.05).",
"institution": "Iranian Fisheries Research Organization",
"language": "Farsi",
"libraryCatalog": "agris.fao.org",
"url": "https://agris.fao.org/agris-search/search.do?recordID=IR2012044101",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://agris.fao.org/agris-search/search.do?recordID=TH2005000236",
"items": [
{
"itemType": "journalArticle",
"title": "Efficiency of antimicrobial residue screening test kit for meat CM-Test",
"creators": [
{
"firstName": "Thongchai",
"lastName": "Chalermchaikit",
"creatorType": "author"
},
{
"firstName": "Kriengsak",
"lastName": "Poonsook",
"creatorType": "author"
},
{
"firstName": "Kriengsuk",
"lastName": "Dangprom",
"creatorType": "author"
},
{
"firstName": "Monthon",
"lastName": "Lertworapreecha",
"creatorType": "author"
},
{
"firstName": "Kittikorn",
"lastName": "Jotisakulratana",
"creatorType": "author"
}
],
"date": "2002",
"ISSN": "0125-0369",
"abstractNote": "Concerns of antimicrobial residues in food of animal origins are not only the adverse health effect to consumers but also the impact on exportation. The conventional methods for detecting antimicrobial residues in meat are European Four Pate Test (EDPR) method which use Bacillus subtilis and Micrococcus luteus in Test agar or Microbial Inhibition Disk Assay (MIDA) which use Bacillus mycoides, Bacillus subtilis and Micrococcus luteus in Antibiotic medium as indicators. However, EFPT and MIDA are required incubating time at least 18 hours for reading the results. Besides, EFPT and MIDA have been showed low specificity, which lead to false negative results. Therefore, antimicrobial screening test kit for meat has been developed by the full support from Thai Research Fund (TRF). The concept of new developed antimicrobial screening test kit (CM-Test) is tube diffusion method. There are consisted of Bacillus stearothermophilus in appropriated medium, which contained in polypropylene tube (1*4 cm). The tested results can be read after the meat extract supernatant of 0.1 ml is put into the test kit and incubated at 65+-1 deg C for 3 1/2-4 1/2 hours. The color of test kit will not be changed if the sample is positive (contain antimicrobial residue). If the sample is negative, test kit color will be changed to yellow. The prevalence of antimicrobial residues in 300 chicken meat samples and 300 pork samples, randomly purchased from markets and supermarkets in Bangkok during July 2001 to February 2002, had been studied. The results of chicken meat samples were found positive 12.3, 0 and 1.7 percent by using CM-Test, EFPT and MIDA methods, respectively. The results of pork samples were found positive 8.3, 2 and 2.7 percent by using CM-Test, EFPT and MIDA methods, respectively. Positive samples were confirmed by Charm II Test method. These results reveal that the detection limits developed antimicrobial residue screening test kit are better than conventional methods, EFPT and MIDA.",
"language": "Thai",
"libraryCatalog": "agris.fao.org",
"publicationTitle": "Warasan Witthayasat Kaset",
"url": "https://agris.fao.org/agris-search/search.do?recordID=TH2005000236",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://agris.fao.org/agris-search/search.do?request_locale=ar&recordID=AV20120164931&query=&sourceQuery=&sortField=&sortOrder=&countryResource=&agrovocString=&advQuery=¢erString=&enableField=",
"items": [
{
"itemType": "report",
"title": "Petroleum Hydrocarbons in Saudi Red Sea Coastal Waters الهيدروكربونات البترولية في المياه السطحية لساحل البحر الاحمر السعودية (منطقة بترومين)",
"creators": [
{
"firstName": "Sultan",
"lastName": "Al-Lihaibi",
"creatorType": "author"
},
{
"firstName": "Turki",
"lastName": "Al-Ghamdy",
"creatorType": "author"
}
],
"date": "1997",
"abstractNote": "Total petroleum hydrocarbons in surface water samples collected from the Red Sea coast al area of Jeddah (Saudi Arabia), have been measured using ultraviolet fluorescence spectroscopy (UVF). Concentration level ranged between 1.79 and 17.9 J..I.g 1,1 light Arabian oil equivalents . Samples taken near the oil terminal (Petromin) showed relatively high concentrations (2.8-17.9 J..I.g I\" 1). whereas in the relatively clean Obhur Creek concentrations wer~ low (2 J..I.g 1- I). Perfect agreement has been obtained between concentrations calculated as chrysene and light Arabian equivalents. However, the light Arabian equivalent concentration is almost 6 times the chrysene equivalent concentration . تم قياس الهيدروكربونات البترولية في المياه السطحية للمنطقة الساحلية لمدينة جدة باستخدام مطياف الفلورة فوق البنفسجية . وجد أن مستوى التركيز في العينات تراوح بين 1.8 و 17.9 مايكروجرام / لتر وحدات زيت عربي خفيف مكافئة . وقد لوحظ أن العينات القريبة من مصرف مصفاة الزيت (بترومين) أعطت تراكيز عالية ( 2.8-17.9 مايكروجرام/ لتر ) بينما أعطت العينات المأخوذة من شرم أبحر ، والذي يعتبر الأنظف نسبيا ، قراءات منخفضة ( 2.0 مايكروجرام / لتر أو أقل ) . كما لوحظ وجود علاقة بين التركيزات المحسوبة على أساس وحدات كرايسين مكافئة وتلك المحسوبة على أساس وحدات زيت عربي خفيف مكافئة بحيث يكون الأخير مساويا لما يقارب 6 أضعاف الأول.",
"institution": "KAU - Scientific Publishing Center",
"language": "English",
"libraryCatalog": "agris.fao.org",
"url": "http://www.kau.edu.sa/centers/spc/jkau/Doc/Mar/8/Petroleum%20Hydrocarbons%20in%20Saudi%20Red%20Sea%20Coastal%20Waters.pdf",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://agris.fao.org/agris-search/searchIndex.do?query=soil+water",
"items": "multiple"
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://app\.dimensions\.ai//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/details/publication/')) {
return "journalArticle";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('h3 > a[href*="/details/publication/"]');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
let id = url.match(/\/publication\/([^/?#]+)/)[1];
let bibURL = `/details/sources/publication/export/${id}/citation/bibtex`;
let readcube = getReadcubeConfig(doc);
let PMID = readcube && readcube.pmid;
let PMCID = readcube && readcube.pmc_id;
let arXiv = readcube && readcube.arxiv_id;
let oaURL = readcube && readcube.linkout;
ZU.doGet(bibURL, function (bibText) {
var translator = Zotero.loadTranslator("import");
translator.setTranslator("9cb70025-a888-4a29-a210-93ec52da40d4"); // BibTeX
translator.setString(bibText);
translator.setHandler("itemDone", function (obj, item) {
delete item.itemID;
if (PMID && !(item.extra && item.extra.includes('PMID:'))) {
item.extra = (item.extra || '') + `\nPMID: ${PMID}`;
}
if (PMCID && !(item.extra && item.extra.includes('PMCID:'))) {
item.extra = (item.extra || '') + `\nPMCID: ${PMCID}`;
}
if (arXiv && !(item.extra && item.extra.includes('arXiv:'))) {
item.extra = (item.extra || '') + `\narXiv: ${arXiv}`;
}
if (oaURL) {
item.attachments.push({
title: 'Full Text PDF',
mimeType: 'application/pdf',
url: oaURL
});
}
if (item.url.includes('app.dimensions.ai/')) {
delete item.url;
}
item.complete();
});
translator.translate();
});
}
function getReadcubeConfig(doc) {
for (let script of doc.body.querySelectorAll('script:not([src])')) {
let match = script.textContent
.match(/config\.details_actions\.readcube\s*=\s*({.*})/);
if (match) {
return JSON.parse(match[1]);
}
}
return null;
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://app.dimensions.ai/details/publication/pub.1134256083",
"items": [
{
"itemType": "journalArticle",
"title": "Inhibitory Control Across Athletic Expertise and Its Relationship With Sport Performance.",
"creators": [
{
"firstName": "Jack",
"lastName": "Hagyard",
"creatorType": "author"
},
{
"firstName": "Jack",
"lastName": "Brimmell",
"creatorType": "author"
},
{
"firstName": "Elizabeth J",
"lastName": "Edwards",
"creatorType": "author"
},
{
"firstName": "Robert S",
"lastName": "Vaughan",
"creatorType": "author"
}
],
"date": "2021",
"DOI": "10.1123/jsep.2020-0043",
"extra": "PMID: 33383568",
"issue": "1",
"libraryCatalog": "Dimensions",
"pages": "1-14",
"publicationTitle": "Journal of Sport and Exercise Psychology",
"volume": "43",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://app.dimensions.ai/details/publication/pub.1140184409",
"items": [
{
"itemType": "journalArticle",
"title": "PRISM: A Shelter-Based Partnership for People Experiencing Homelessness and Severe Mental Illness.",
"creators": [
{
"firstName": "Vincent",
"lastName": "Laliberté",
"creatorType": "author"
},
{
"firstName": "Delphine",
"lastName": "Roussel-Bergeron",
"creatorType": "author"
},
{
"firstName": "Eric A",
"lastName": "Latimer",
"creatorType": "author"
},
{
"firstName": "Olivier",
"lastName": "Farmer",
"creatorType": "author"
}
],
"date": "2021",
"DOI": "10.1176/appi.ps.202000682",
"extra": "PMID: 34346731",
"libraryCatalog": "Dimensions",
"pages": "appips202000682",
"publicationTitle": "Psychiatric Services",
"shortTitle": "PRISM",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://app.dimensions.ai/discover/publication?search_mode=content&search_text=galilee%20farmers%20hygiene&search_type=kws&search_field=full_search",
"items": "multiple"
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://inis\.iaea\.org//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('recordsFor=SingleRecord')) {
if (text(doc, '.recordtype').includes('Book')) {
return 'book';
}
else if (text(doc, '.recordtype').includes('Report')) {
return 'report';
}
else if (text(doc, '.literaturetype').includes('Conference')) {
return 'conferencePaper';
}
else {
return 'journalArticle';
}
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.g1');
for (let row of rows) {
let urlOrRef = attr(row, 'a.fileTypeIcon[href*=".pdf"]', 'href');
if (!urlOrRef) {
urlOrRef = attr(row, '.lnkCitation', 'id').match(/(\d+)/)[1];
}
let title = ZU.trimInternal(text(row, '.title-link'));
if (!urlOrRef || !title) continue;
if (checkOnly) return true;
found = true;
items[urlOrRef] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) return;
for (let urlOrRef of Object.keys(items)) {
if (urlOrRef.includes('.pdf')) {
// extract the ref number from the PDF URL
scrape(urlOrRef.match(/([^/]+)\.pdf/)[1], urlOrRef);
}
else {
scrape(urlOrRef, null);
}
}
});
}
else {
let refNumber = url.match(/RN=([^&]+)/)[1];
// no way to get the PDF from the abstract page, and no easy way to get
// to the abstract page for an article with a PDF, so this is fine.
scrape(refNumber, null);
}
}
function scrape(refNumber, pdfURL) {
let risURL = '/search/citationdownload.aspx';
let body = `RN=${refNumber}&citationFormat=Ris`;
ZU.doPost(risURL, body, function (text) {
var translator = Zotero.loadTranslator("import");
translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7");
translator.setString(text);
translator.setHandler("itemDone", function (obj, item) {
delete item.url;
if (pdfURL) {
item.attachments.push({
title: 'Full Text PDF',
mimeType: 'application/pdf',
url: pdfURL
});
}
item.extra = (item.extra || '') + `\nINIS Reference Number: ${refNumber}`;
item.complete();
});
translator.translate();
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://inis.iaea.org/search/searchsinglerecord.aspx?recordsFor=SingleRecord&RN=25072702",
"items": [
{
"itemType": "book",
"title": "Neuropsychiatric and psychologic effects of A-bomb radiation",
"creators": [
{
"lastName": "Yamada",
"firstName": "Michiko",
"creatorType": "author"
},
{
"lastName": "Sasaki",
"firstName": "Hideo .",
"creatorType": "author"
}
],
"date": "1992",
"abstractNote": "Few studies have assessed the influences of A-bombing from both psychiatric and psychologic\npoints of view This chapter deals with the knowledge of neuropsychiatric and psychologic\ninfluences of A-bombing Many A-bomb survivors were exposed not only to radiation but\nalso to rapid environmental alterations, such as death of family members and destruction\nof living In addition, they suffered from sequelae and anxiety Naturally, these were\nconsidered to cause psychological disturbance including autonomic imbalance and neurosis\nPsychological survey, made immediately after A-bombing, is presented, with special\nattention to behavioral patterns in 54 A-bomb survivors by dividing them into 5 stimulation\ngroups Radiation syndrome occurring early after exposure and leukemia or cancer occurring\nlater were referred to as 'Genbaku-sho' (A-bomb disease) A-bomb survivors' physically\neventful conditions tended to induce mental anxiety or the contrary Depression and\nphobia seemed to have correlated with physical conditions In addition to 'A-bomb disease',\nmass media, dealing with 'A-bomb neurosis,' 'marriage in A-bomb survivors,' 'suicide\nin A-bomb survivors,' 'A-bomb survivors orphan,' and 'lonely old A-bomb survivors,'\nhad a great impact on A-bomb survivors For in uterus exposed and infantile A-bomb\nsurvivors, there was no significant difference between the exposed and non-exposed\ngroups, although the incidence of eye tremor and sleeping disorder is found to be\nhigher in the in uterus exposed group than the control group (NK)",
"extra": "INIS Reference Number: 25072702",
"libraryCatalog": "International Nuclear Information System",
"place": "Japan",
"publisher": "Bunkodo Co Ltd",
"series": "Effects of A-bomb radiation on the human body",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://inis.iaea.org/search/search.aspx?search-option=everywhere&orig_q=fission&fulltext=true",
"items": "multiple"
},
{
"type": "web",
"url": "https://inis.iaea.org/search/search.aspx?search-option=everywhere&orig_q=test",
"items": "multiple"
},
{
"type": "web",
"url": "https://inis.iaea.org/search/searchsinglerecord.aspx?recordsFor=SingleRecord&RN=19023241",
"items": [
{
"itemType": "journalArticle",
"title": "Possible checking of technical parameters in nondestructive materials and products testing",
"creators": [
{
"lastName": "Kesl",
"firstName": "J.",
"creatorType": "author"
}
],
"date": "1987",
"abstractNote": "The requirements are summed up for partial technical parameters of instruments and\nfacilities for nondestructive testing by ultrasound, radiography, by magnetic, capillary\nand electric induction methods The requirements and procedures for testing instrument\nperformance are presented for the individual methods as listed in domestic and foreign\nstandards, specifications and promotional literature The parameters to be tested and\nthe methods of testing, including the testing and calibration instruments are shown\nin tables The Czechoslovak standards are listed currently valid for nondestructive\nmaterials testing (MD)",
"extra": "INIS Reference Number: 19023241",
"issue": "3",
"libraryCatalog": "International Nuclear Information System",
"pages": "104-113",
"publicationTitle": "Ceskoslovenska Standardizace",
"series": "Moznosti overeni technickych parametru pri provadeni nedestruktivnich defektoskopickych zkousek materialu a vyrobku",
"volume": "17",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://inis.iaea.org/search/searchsinglerecord.aspx?recordsFor=SingleRecord&RN=46011529",
"items": [
{
"itemType": "conferencePaper",
"title": "Proceedings of the Korean Society for Nondestructive Testing Spring Meeting 1995",
"creators": [
{
"lastName": "The Korean Society for Nondestructive Testing",
"firstName": "Seoul (Korea, Republic of)",
"creatorType": "author"
}
],
"date": "1995",
"abstractNote": "This proceedings contains articles of the Korean Society for Nondestructive Testing\nSpring Meeting, 1995 It was held on May 10, 1995 in Seoul, Korea and subject of the\nKorean Society for Nondestructive Testing Spring Meeting 1995 This proceedings is\ncomprised of 2 sessions",
"conferenceName": "1995 Spring Meeting of the Korean Society for Nondestructive Testing",
"extra": "INIS Reference Number: 46011529",
"libraryCatalog": "International Nuclear Information System",
"place": "Korea, Republic of",
"publisher": "KSNT",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://inis.iaea.org/search/searchsinglerecord.aspx?recordsFor=SingleRecord&RN=42080196",
"items": [
{
"itemType": "report",
"title": "Test equipment development for under-water vibration characteristics of dual-cooled fuel test assembly",
"creators": [
{
"lastName": "Lee",
"firstName": "Kang Hee",
"creatorType": "author"
},
{
"lastName": "Kang",
"firstName": "Heung Seok",
"creatorType": "author"
},
{
"lastName": "Kim",
"firstName": "Hyung Kyu",
"creatorType": "author"
},
{
"lastName": "Yoon",
"firstName": "Kyung Ho",
"creatorType": "author"
},
{
"lastName": "Lee",
"firstName": "Young Ho",
"creatorType": "author"
},
{
"lastName": "Kim",
"firstName": "Jae Yong",
"creatorType": "author"
}
],
"date": "2010",
"abstractNote": "Because of the structural peculiarity of the dual-cooled fuel against a conventional\nfuel, development of new experimental test equipment and methods for measuring dynamic\nparameters under water is needed to compare design characteristics and to prepare\nfuture structural design Major parts of the test equipment consists of square-steel\nwater channel, horizontal ports for shaker attachment and visual windows for measurement\nand installation Electromagnetic shaker is used as a major excitation device Non-contact\nlaser vibration sensor and under water accelerometer are used as a vibration measurement\nsensor Detail design parameters were determined by the test goal-oriented design specifications\nand requirements Basic functioning tests and performance testing using a test fuel\nassembly were carried out Functioning tests were involved in a dimension check, vertical\n/ horizontal flatness evaluation, leak test and installation/demounting of the test\nassembly Performance test includes an initial-deflection-sudden-release, impact, sine,\nrandom vibration testing of the 4x4 annular test fuel bundle in air and under water\nThis under-water test equipment names as 'Underwater Modal Testing Equipment for Dual-Cooled\nFuel Test Assembly: UMAP-DF' Test results for the 4x4 test partial fuel assembly shows\nreliability and validity of the newly developed test equipment for the dynamic testing\nin terms of external noise and repeatability",
"extra": "KAERI/TR--4202/2010\nINIS Reference Number: 42080196",
"libraryCatalog": "International Nuclear Information System",
"pages": "47",
"place": "Korea, Republic of",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Sebastian Karcher and Abe Jellinek^https?://cpps\.brepolis\.net/aph//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (getSearchResults(doc, true)) {
return "multiple";
}
else if (doc.querySelectorAll('a.icon-export')) {
let pubType = text(doc, 'a[href*="&publication_type="]');
switch (pubType.trim()) {
case 'Article in journal':
return 'journalArticle';
default:
return 'book';
}
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.result a.title');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
let risURL = attr(doc, 'a.icon-export', 'href');
let body = 'export_filename=export.ris&export_type=download&export_format=ris';
ZU.doPost(risURL, body, function (risText) {
var translator = Zotero.loadTranslator("import");
translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7");
translator.setString(risText);
translator.setHandler("itemDone", function (obj, item) {
delete item.archive;
item.libraryCatalog = "L'Année Philologique";
addAttachment(item, doc);
item.complete();
});
translator.translate();
});
}
function addAttachment(item, doc) {
// no meaningful classes or IDs here, so we'll crawl manually.
// it's easier than XPath!
for (let link of doc.querySelectorAll('table li a')) {
// "(Full text)" is the label across languages
if (link.nextSibling && link.nextSibling.textContent.includes('(Full text)')) {
if (link.href.endsWith('.pdf')) {
item.attachments.push({
title: 'Full Text PDF',
mimeType: 'application/pdf',
url: link.href
});
}
else {
item.attachments.push({
title: 'Full Text Source',
mimeType: 'text/html',
url: link.href
});
}
}
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://cpps.brepolis.net/aph/search.cfm?action=search_simple_detail_single&startrow=1&endrow=1&search_order=year_desc&ALLFIELDS=test&PERIOD_CLOSE_MATCHES=0&search_selection=725043",
"items": [
{
"itemType": "journalArticle",
"title": "« The only event mightier than everyone’s hope » : classical historiography and Eusebius’ plague narrative",
"creators": [
{
"lastName": "DeVore",
"firstName": "David J.",
"creatorType": "author"
}
],
"date": "2020",
"abstractNote": "Eusebius’s account of the plague of Cyprian in HE 7, 21-22 stands as a test case for Christian engagement with classical historiography. Deploying quotations from Dionysius, the bishop of Alexandria in the 250s, Eusebius referenced Thucydides’s plague and invited comparison to further plague narratives in Diodorus, Dionysius of Halicarnassus, and Josephus. Eusebius’s plague highlights divine vengeance on pagan Alexandrians and represents Christians as honorable sufferers.",
"libraryCatalog": "L'Année Philologique",
"pages": "1-34",
"publicationTitle": "Histos: The On-Line Journal of Ancient Historiography",
"shortTitle": "« The only event mightier than everyone’s hope »",
"url": "https://research.ncl.ac.uk/histos/documents/2020AA01DeVoreEusebiusPlagueNarrative.pdf",
"volume": "14",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://cpps.brepolis.net/aph/search.cfm?action=search_simple_detail_single&startrow=2&endrow=2&search_order=year_desc&ALLFIELDS=test&PERIOD_CLOSE_MATCHES=0&search_selection=726292",
"items": [
{
"itemType": "book",
"title": "Simply come copying : direct copies as test cases in the quest for scribal habits",
"creators": [
{
"lastName": "Farnes",
"firstName": "Alan Taylor",
"creatorType": "author"
}
],
"date": "2019",
"ISBN": "9783161569807",
"abstractNote": "Betrifft Abschriften des NT.",
"libraryCatalog": "L'Année Philologique",
"numPages": "XIV-253 p. 3 index",
"place": "Tübingen",
"publisher": "Mohr Siebeck",
"series": "Wissenschaftliche Untersuchungen zum Neuen Testament. 2. Reihe",
"shortTitle": "Simply come copying",
"url": "https://d-nb.info/1176726757/04",
"volume": "481",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://cpps.brepolis.net/aph/search.cfm?action=search_simple_detail_single&startrow=3&endrow=3&search_order=year_desc&ALLFIELDS=test&PERIOD_CLOSE_MATCHES=0&search_selection=722155",
"items": [
{
"itemType": "journalArticle",
"title": "A problem child : Herodotus and the young Athenian democracy",
"creators": [
{
"lastName": "Pelling",
"firstName": "Christopher",
"creatorType": "author"
}
],
"date": "2019",
"ISSN": "0165-8204",
"abstractNote": "Hippias prévient les Corinthiens, vers 504 av. J.-C., qu’ils souffriront peut-être un jour de la main d’Athènes (Hdt. 5, 93, 1). Hérodote accorde une plus grande importance à la liberté qu’à la démocratie. Son récit ne juge pas positivement ou négativement la jeune démocratie athénienne, qui n’a pas encore eu le temps de prouver sa valeur. Alors que la Perse et Xerxès ont offert un test sur la façon dont les hommes se comportent lorsque le pouvoir du dirigeant est au plus haut, Athènes offre un cadre d’analyse parfaitement opposé où la liberté personnelle est à son apogée.",
"issue": "1",
"libraryCatalog": "L'Année Philologique",
"pages": "28-42",
"publicationTitle": "Lampas: Tijdschrift voor Nederlandse Classici",
"shortTitle": "A problem child",
"url": "https://lampas.verloren.nl",
"volume": "52",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://cpps.brepolis.net/aph/search.cfm?action=search_simple_result&allfields_boolean=and&startrow=1&search_order=year_desc&log_quicksearch=1&allfields=environment&frm_quick_search_submithidden=submit",
"items": "multiple"
},
{
"type": "web",
"url": "http://cpps.brepolis.net/aph/search.cfm?ALLFIELDS=environment&action=search_simple_detail_single&endrow=1&PERIOD_CLOSE_MATCHES=0&startrow=1&search_selection=,&&search_order=year_desc",
"items": [
{
"itemType": "journalArticle",
"title": "Echoes of empire: Roman imperialism in Avienus’s « Descriptio orbis terrae »",
"creators": [
{
"lastName": "Bélanger",
"firstName": "Caroline",
"creatorType": "author"
}
],
"date": "2020",
"DOI": "10.1353/jla.2020.0017",
"ISSN": "1939-6716",
"abstractNote": "Examination of the imperial message behind Avienus’s « Descriptio orbis terrae », a poem that revolves around the Roman relationship with the environment and Rome’s suitability for imperial rule. Avienus constructs his poem against Vergilian ideas on the relationship between agricultural toil and civilization, as espoused in the « Georgics ». Avienus ascribes agency to lands and rivers and uses this technique to establish relationships between regions and their inhabitants in order to support his argument for the beneficial imperial rule of Rome.",
"issue": "2",
"libraryCatalog": "L'Année Philologique",
"pages": "193-219",
"publicationTitle": "Journal of Late Antiquity",
"shortTitle": "Echoes of empire",
"url": "https://doi.org/10.1353/jla.2020.0017",
"volume": "13",
"attachments": [
{
"title": "Full Text Source",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100czar, Bao Trinh^https?://(www\.)?pcgamer\.com//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2018-2021 czar, Bao Trinh
http://en.wikipedia.org/wiki/User_talk:Czar
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function getLinkedData(doc) {
const linkedData = [...doc.querySelectorAll('script[type="application/ld+json"]')]
.map(x => JSON.parse(x.innerText))
.find(x => ("@type" in x && !(["BreadcrumbList"].includes(x["@type"]))));
return linkedData;
}
function detectWeb(doc) {
const linkedData = getLinkedData(doc);
const pageType = linkedData ? linkedData["@type"] : null;
switch (pageType) {
case "Article":
case "Product":
return "magazineArticle";
case "NewsArticle":
return "newspaperArticle";
case "WebPage":
default:
if (getSearchResults(doc, true)) {
return "multiple";
}
break;
}
return false;
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48'); // embedded metadata
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
const linkedData = getLinkedData(doc);
if (linkedData && linkedData.publisher.name) item.publicationTitle = linkedData.publisher.name;
for (const tag of doc.querySelectorAll('*#articleTag .tag a')) {
item.tags.push(tag.textContent);
}
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.itemType = detectWeb(doc, url);
trans.doWeb(doc, url);
});
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('a.article-link');
for (const row of rows) {
const href = row.href;
const title = ZU.trimInternal(text(row, '.article-name'));
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), (items) => {
if (!items) {
return true;
}
const articles = [];
for (const i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
return true;
});
}
else {
scrape(doc, url);
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.pcgamer.com/the-voice-behind-symmetra-on-working-with-blizzard-overwatch-dream-couples-and-dd/",
"items": [
{
"itemType": "magazineArticle",
"title": "The voice behind Symmetra on working with Blizzard, Overwatch dream couples, and D&D",
"creators": [
{
"firstName": "James",
"lastName": "Davenport",
"creatorType": "author"
}
],
"date": "2017-02-09T22:22:41.390Z",
"abstractNote": "Anjali Bhimani is a self-proclaimed Chaotic Good who thinks Soldier: 76 and Ana are secretly hooking up.",
"language": "en",
"libraryCatalog": "www.pcgamer.com",
"publicationTitle": "PC Gamer",
"url": "https://www.pcgamer.com/the-voice-behind-symmetra-on-working-with-blizzard-overwatch-dream-couples-and-dd/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Best of"
},
{
"tag": "FPS"
},
{
"tag": "Interviews"
},
{
"tag": "Overwatch"
},
{
"tag": "Pro"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.pcgamer.com/search/?searchTerm=symmetra",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.pcgamer.com/the-9-best-digital-card-games-that-arent-hearthstone/",
"items": [
{
"itemType": "magazineArticle",
"title": "These 9 card games are better than Hearthstone",
"creators": [
{
"firstName": "Tom",
"lastName": "Marks",
"creatorType": "author"
},
{
"firstName": "Jody",
"lastName": "Macgregor",
"creatorType": "author"
}
],
"date": "2020-12-13T06:05:20Z",
"abstractNote": "From Gwent to Faeria, there are plenty of great multiplayer card games on PC.",
"language": "en",
"libraryCatalog": "www.pcgamer.com",
"publicationTitle": "PC Gamer",
"url": "https://www.pcgamer.com/the-9-best-digital-card-games-that-arent-hearthstone/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Best of"
},
{
"tag": "Card Game"
},
{
"tag": "Faeria"
},
{
"tag": "Gwent"
},
{
"tag": "Hearthstone"
},
{
"tag": "Kards"
},
{
"tag": "Magic: The Gathering Arena"
},
{
"tag": "The Elder Scrolls: Legends"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.pcgamer.com/it-turns-out-the-fcc-drastically-overstated-us-broadband-deployment-after-all/",
"items": [
{
"itemType": "newspaperArticle",
"title": "It turns out the FCC ‘drastically overstated’ US broadband deployment after all",
"creators": [
{
"firstName": "Paul",
"lastName": "Lilly",
"creatorType": "author"
}
],
"date": "2019-05-02T17:01:15Z",
"abstractNote": "Ajit Pai isn't sweating it, though.",
"language": "en",
"libraryCatalog": "www.pcgamer.com",
"publicationTitle": "PC Gamer",
"url": "https://www.pcgamer.com/it-turns-out-the-fcc-drastically-overstated-us-broadband-deployment-after-all/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Ajit Pai"
},
{
"tag": "FCC"
},
{
"tag": "Hardware"
},
{
"tag": "broadband"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.pcgamer.com/",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.pcgamer.com/author/paul-lilly/",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.pcgamer.com/indie/",
"items": "multiple"
}
]
/** END TEST CASES **/
100czar, Bao Trinh^https?://(www\.)?rockpapershotgun\.(com|de)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2018-2021 czar, Bao Trinh
http://en.wikipedia.org/wiki/User_talk:Czar
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc) {
let contentType = attr(doc, 'meta[property="og:type"]', 'content');
switch (contentType) {
case "article":
return "magazineArticle";
case "website":
case null:
default:
if (getSearchResults(doc, true)) {
return "multiple";
}
break;
}
return false;
}
function getSearchResults(doc, checkOnly) {
let items = {};
let found = false;
let rows = doc.querySelectorAll('.archive_list article .details .title a , .gsc-results .gsc-result .gsc-thumbnail-inside a.gs-title , main article .title a');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function scrape(doc, url) {
const translator = Zotero.loadTranslator('web');
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48'); // embedded metadata (EM)
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) { // corrections to EM
item.publicationTitle = "Rock, Paper, Shotgun";
item.tags = []; // reset bad tag metadata
for (const tag of doc.querySelectorAll('meta[property="article:tag"]')) {
item.tags.push(tag.getAttribute('content'));
}
let linkedData = JSON.parse(text(doc, 'script[type="application/ld+json"]'));
if (linkedData) {
if (linkedData.headline) item.title = linkedData.headline;
if (linkedData.description) item.abstractNote = linkedData.description;
if (linkedData.datePublished) item.date = linkedData.datePublished;
item.creators.push(ZU.cleanAuthor(linkedData.author.name, 'author'));
}
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.itemType = detectWeb(doc, url);
trans.doWeb(doc, url);
});
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), (items) => {
if (!items) {
return true;
}
const articles = [];
for (const i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
return true;
});
}
else {
scrape(doc, url);
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.rockpapershotgun.com/dr-langeskov-the-tiger-and-the-terribly-cursed-emerald-a-whirlwind-heist-review",
"items": [
{
"itemType": "magazineArticle",
"title": "Wot I Think - Dr. Langeskov, The Tiger and The Terribly Cursed Emerald: A Whirlwind Heist",
"creators": [
{
"firstName": "Alec",
"lastName": "Meer",
"creatorType": "author"
}
],
"date": "2015-12-04T17:00:03+00:00",
"abstractNote": "PC gaming news, previews, reviews, opinion.",
"language": "en",
"libraryCatalog": "www.rockpapershotgun.com",
"publicationTitle": "Rock, Paper, Shotgun",
"shortTitle": "Wot I Think - Dr. Langeskov, The Tiger and The Terribly Cursed Emerald",
"url": "https://www.rockpapershotgun.com/dr-langeskov-the-tiger-and-the-terribly-cursed-emerald-a-whirlwind-heist-review",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Action Adventure"
},
{
"tag": "Crows Crows Crows"
},
{
"tag": "Dr. Langeskov The Tiger and The Terribly Cursed Emerald: A Whirlwind Heist"
},
{
"tag": "Feature"
},
{
"tag": "Free games"
},
{
"tag": "Review"
},
{
"tag": "The Beginner's Guide"
},
{
"tag": "The Stanley Parable"
},
{
"tag": "William Pugh"
},
{
"tag": "Wot I Think"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.rockpapershotgun.com/thought-mass-effects-day-one-dlc-explained-considered",
"items": [
{
"itemType": "magazineArticle",
"title": "Thought: Mass Effect's Day One DLC Explained, Pondered",
"creators": [
{
"firstName": "John",
"lastName": "Walker",
"creatorType": "author"
}
],
"date": "2012-02-23T09:06:27+00:00",
"abstractNote": "PC gaming news, previews, reviews, opinion.",
"language": "en",
"libraryCatalog": "www.rockpapershotgun.com",
"publicationTitle": "Rock, Paper, Shotgun",
"shortTitle": "Thought",
"url": "https://www.rockpapershotgun.com/thought-mass-effects-day-one-dlc-explained-considered",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "BioWare"
},
{
"tag": "DLC"
},
{
"tag": "Electronic Arts"
},
{
"tag": "Mass Effect 3"
},
{
"tag": "day one DLC"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.rockpapershotgun.com/category/free-pc-games/",
"items": "multiple"
},
{
"type": "web",
"url": "http://www.rockpapershotgun.com/search?q=earthbound",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.rockpapershotgun.com/have-you-played-welcome-to-elk",
"items": [
{
"itemType": "magazineArticle",
"title": "Have You Played... Welcome To Elk?",
"creators": [
{
"firstName": "Katharine",
"lastName": "Castle",
"creatorType": "author"
}
],
"date": "2021-05-05T07:30:00+00:00",
"abstractNote": "Welcome To Elk is a heartfelt narrative game based on the real-life stories of a remote island community. Don't be fooled by its cartoon visuals.",
"language": "en",
"libraryCatalog": "www.rockpapershotgun.com",
"publicationTitle": "Rock, Paper, Shotgun",
"url": "https://www.rockpapershotgun.com/have-you-played-welcome-to-elk",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Feature"
},
{
"tag": "Have You Played"
},
{
"tag": "Triple Topping"
},
{
"tag": "Welcome To Elk"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.rockpapershotgun.com/hardware",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.rockpapershotgun.com/",
"items": "multiple"
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://ahvalnews\.com//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, _url) {
if (getJSONLD(doc)) {
return "newspaperArticle";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('h2.field-title > a');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, _url) {
let item = new Zotero.Item('newspaperArticle');
let json = getJSONLD(doc);
item.title = json.headline;
item.abstractNote = json.description;
item.publicationTitle = 'Ahval';
item.date = ZU.strToISO(json.dateModified || json.datePublished);
item.section = json.articleSection;
item.language = doc.documentElement.lang;
item.url = json.url;
if (json.author && json.author.name != 'Ahval') {
// usually no authors, sometimes one
item.creators.push(ZU.cleanAuthor(json.author.name, 'author'));
}
item.attachments.push({
title: 'Snapshot',
document: doc
});
item.complete();
}
function getJSONLD(doc) {
let jsonLDText = text(doc, 'script[type="application/ld+json"]');
if (!jsonLDText.trim()) {
return null;
}
let json = JSON.parse(jsonLDText);
if (!json['@graph']) {
return null;
}
for (let graphObj of json['@graph']) {
if (graphObj['@type'] == 'NewsArticle') {
return graphObj;
}
}
return null;
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://ahvalnews.com/turkish-lira/turkey-signs-2-billion-currency-swap-deal-south-korea",
"items": [
{
"itemType": "newspaperArticle",
"title": "Turkey signs $2 billion currency swap deal with South Korea",
"creators": [],
"date": "2021-08-12",
"abstractNote": "Turkey’s central bank and the Bank of Korea signed a currency swap agreement in lira and won worth as much as $2 billion.\r\n\r\nThe deal, effective for three years from Thursday, is designed to promote bilateral trade and financial cooperation for the economic development of both countries, the Bank of Korea said in a statement on its website.\r\n\r\nTurkey has sought to obtain currency swaps with central banks around the world to help bolster its foreign exchange reserves, which have fallen into negative territory when accounting for liabilities. The agreements, which have included arrangements worth about $10 billion with Turkey’s regional ally Qatar, have failed to halt a slide in the lira’s value to successive record lows since a 2018 currency crisis.\r\n\r\nIt is interesting that “another G20 central bank seems willing to support and prolong the continuation of really questionable monetary policy settings in Turkey”, said Tim Ash, a senior emerging markets strategist at BlueBay Asset Management in London. The deal \"does not really touch the sides\" in terms of defending the lira, he said.\r\n\r\nTurkey’s central bank kept interest rates at below inflation for much of last year to help the government engineer a borrowing boom. That led to an exodus of capital from the lira as deposit holders saw returns from their investments, net of inflation, disappear.\r\n\r\nThe lira rose 0.3 percent to 8.6 per dollar after the swap deal was announced after trading up 0.1 percent earlier in the day.\r\n\r\nThe agreement with the Bank of Korea was announced hours before the Turkish central bank was due to publish a monthly decision on interest rates. The benchmark rate in Turkey stands at 19 percent, marginally above annual consumer price inflation of 18.95 percent.\r\n\r\nPresident Recep Tayyip Erdoğan is calling for rate cuts and has sacked three central bank governors in just over two years due to disagreements over monetary policy. Erdoğan holds the unorthodox view that higher interest rates are inflationary. The latest governor, appointed in March, has kept rates unchanged even as inflation accelerated from 15.6 percent in February.\r\n\r\nSouth Korean companies make substantial investments in Turkey’s economy, particularly in the construction, energy and technology industries. The investments have included a 2017 contract for the building of the world’s longest suspension bridge over the Dardanelles straits worth around $2.7 billion.",
"language": "en",
"libraryCatalog": "Ahval News",
"publicationTitle": "Ahval",
"section": "News",
"url": "https://ahvalnews.com/turkish-lira/turkey-signs-2-billion-currency-swap-deal-south-korea",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://ahvalnews.com/northern-cyprus-turkey/former-turkish-cypriot-leader-akincis-adviser-banned-entering-turkey",
"items": [
{
"itemType": "newspaperArticle",
"title": "Former Turkish Cypriot leader Akıncı’s adviser banned from entering Turkey",
"creators": [
{
"firstName": "Tümay",
"lastName": "Tuğyan",
"creatorType": "author"
}
],
"date": "2021-07-13",
"abstractNote": "Ali Bizden, the press and communications coordinator of former Turkish Cypriot leader Mustafa Akıncı, was banned from entering Turkey for five years on charges of acting against the country’s national security.\r\n\r\nBizden was informed of the ban by immigration police in Turkey on Tuesday night after he sought to pass through passport control at Istanbul’s Sabiha Gökçen Airport. The ban had been ordered back in September last year, he said via social media on Wednesday.",
"language": "en",
"libraryCatalog": "Ahval News",
"publicationTitle": "Ahval",
"section": "News",
"url": "https://ahvalnews.com/northern-cyprus-turkey/former-turkish-cypriot-leader-akincis-adviser-banned-entering-turkey",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://ahvalnews.com/turkish-lira/turkey-signs-2-billion-currency-swap-deal-south-korea",
"items": [
{
"itemType": "newspaperArticle",
"title": "Turkey signs $2 billion currency swap deal with South Korea",
"creators": [],
"date": "2021-08-12",
"abstractNote": "Turkey’s central bank and the Bank of Korea signed a currency swap agreement in lira and won worth as much as $2 billion.\r\n\r\nThe deal, effective for three years from Thursday, is designed to promote bilateral trade and financial cooperation for the economic development of both countries, the Bank of Korea said in a statement on its website.\r\n\r\nTurkey has sought to obtain currency swaps with central banks around the world to help bolster its foreign exchange reserves, which have fallen into negative territory when accounting for liabilities. The agreements, which have included arrangements worth about $10 billion with Turkey’s regional ally Qatar, have failed to halt a slide in the lira’s value to successive record lows since a 2018 currency crisis.\r\n\r\nIt is interesting that “another G20 central bank seems willing to support and prolong the continuation of really questionable monetary policy settings in Turkey”, said Tim Ash, a senior emerging markets strategist at BlueBay Asset Management in London. The deal \"does not really touch the sides\" in terms of defending the lira, he said.\r\n\r\nTurkey’s central bank kept interest rates at below inflation for much of last year to help the government engineer a borrowing boom. That led to an exodus of capital from the lira as deposit holders saw returns from their investments, net of inflation, disappear.\r\n\r\nThe lira rose 0.3 percent to 8.6 per dollar after the swap deal was announced after trading up 0.1 percent earlier in the day.\r\n\r\nThe agreement with the Bank of Korea was announced hours before the Turkish central bank was due to publish a monthly decision on interest rates. The benchmark rate in Turkey stands at 19 percent, marginally above annual consumer price inflation of 18.95 percent.\r\n\r\nPresident Recep Tayyip Erdoğan is calling for rate cuts and has sacked three central bank governors in just over two years due to disagreements over monetary policy. Erdoğan holds the unorthodox view that higher interest rates are inflationary. The latest governor, appointed in March, has kept rates unchanged even as inflation accelerated from 15.6 percent in February.\r\n\r\nSouth Korean companies make substantial investments in Turkey’s economy, particularly in the construction, energy and technology industries. The investments have included a 2017 contract for the building of the world’s longest suspension bridge over the Dardanelles straits worth around $2.7 billion.",
"language": "en",
"libraryCatalog": "Ahval News",
"publicationTitle": "Ahval",
"section": "News",
"url": "https://ahvalnews.com/turkish-lira/turkey-signs-2-billion-currency-swap-deal-south-korea",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://ahvalnews.com/tr/din/secme-sacmalar-hukuk-islam-allah-kelami-vs",
"items": [
{
"itemType": "newspaperArticle",
"title": "Seçme saçmalar: Hukuk, İslam, Allah kelamı vs.",
"creators": [
{
"firstName": "Sevan",
"lastName": "Nişanyan",
"creatorType": "author"
}
],
"date": "2021-08-11",
"abstractNote": "“Laik toplumlarda kanunlar kutsal değildir. Zaman içinde insanların gelişen ihtiyaçlarına göre hukukta iyileştirme yapılabilir. Laik toplumlarda insanlar kendi yasalarını yapar, tanrı onların dünyada yaptıklarına karışmaz.”\r\n\r\nKanunları alelumum ‘insanlar’ yapmaz. ‘Birileri’ yapar. \r\n\r\n“Kanunlar zaman ve zemine göre değiştirilebilir” dediğiniz zaman kimin ne zaman ve hangi koşullarda değiştirebileceğini de belirtmeniz gerekir. \r\n\r\nYoksa birileri çıkar “arkadaşlar yarın beni padişah ilan edeceğiz” der, yahut gece yarısı torba yasa çıkarır, gık diyemezsin.\r\n\r\nKarşı taraf haklı mıdır, haksız mıdır ayrı mevzu. Ama laiklik hayranlarının yüz senedir halâ karşı tarafın gerekçesini fark etmemiş görünmeleri hayreti muciptir. \r\n\r\nKarşı taraf diyor ki, kanunlar kutsaldır. Yani kafana esti diye zırt pırt değiştiremezsin. O yetkiyi sana verirsek sonucu kaçınılmaz bir kesinlikle zorbalıktır, hukukun paçavra edilmesidir. Hukuku zamana uydurmak gerekiyor ise nasıl uydurulacağına devlet sopasını elinde tutanlar değil, ak sakallı alimler karar versin.\r\n\r\nAyrıca, müsterih olun, tanrı bir şeye karışmaz. \r\n\r\nÇünkü tanrı hayaldir. \r\n\r\nSadece yasa yapmanın farklı yöntemleri vardır.\r\n\r\n“Roma imparatorluğunda kanunlarla toplumda kutsal olan ve olmayan net bir şekilde ayrılmıştır. Laiklik esas alınmıştır.”\r\n\r\nBiraz Roma tarihi bilen bilir ki Roma hukuku ve siyasi kurumları iliğine kadar dini inanç ve törelerle yoğrulmuştur; dinsizliğin, dine zarar vermenin cezası ölümdür. \r\n\r\nMerak ediyorsanız Mommsen yahut Fustel de Coulanges okuyun. \r\n\r\nEski Roma dini geniş meşrepli olduğundan insanları çok üzmemiştir. \r\n\r\nHıristiyanlık resmi din olduğunda ise muhtemelen insanlık tarihinin en feci yobazlık sahneleri yaşandı. Yanlış inanç sahipleri acımasızca kovuşturuldu, tapınakları yakıldı, dini zulümden kaçanlar yüzünden koca vilayetler ıssız kaldı.\r\n\r\nKutsal olanla dünyevinin ayrışması Batı Avrupa Ortaçağının eseridir. Roma devleti Batıda yıkılınca kilise uzun süre tek medeni otorite mercii olarak kaldı. Sonra devletler yeniden güçlenince gücünü onlarla paylaşmamak için çatır çatır direndi. \r\n\r\nSonunda otoriteyi paylaşmaktan ve birbirinin alanına fazla bulaşmamayı kabul etmekten başka çare bulamadılar.\r\n\r\nDoğu Roma’da devlet çökmediği için böyle bir şey olmadı. Ne Bizans’ta, ne Rusya’da, ne Osmanlı’da o yüzden din ve devletin ayrılması diye bir şey duyulmamıştır.\r\n\r\n“Kuranın tanrıdan geldiğine inanıldığından değiştirilemez özelliği vardır. Bu durumda Kurandaki toplum yönetim yasalarını, hukuku değiştirebilir misiniz? Değiştiremezsiniz.”\r\n\r\nKuran’da birtakım şiirsel imgeler, muğlak deklarasyonlar, ne manaya geldiği belirsiz meseller ve bolca öfke krizi vardır. Hemen her ayetin zıddını söyleyen bir ayet illa ki bulunur. \r\n\r\nBu tuhaf metinden (ve onu tamamlamak için uydurulan on binlerce hadisten) bir hukuk sistemi kendiliğinden üremedi. Üretmek için çağın en parlak alimleri canhıraş bir gayretle 200 sene uğraştılar. Ürettikleri sistemi yorumlamak için, eskisi kadar parlak olmayan varisleri bin küsur senedir hala uğraşıyor. Siz orada değiştirilmez bir tanrı yasası bulduğunuzu iddia ediyorsanız yolunuz açık olsun.\r\n\r\nİslam hukukunun iki ana yolu ve dört tali mezhebi (ve tabii bugün terk edilmiş olan onlarca alternatifi) Abbasi devletinin ilk yüzyıllarında oluşturuldu. \r\n\r\nYani Kuran’ın telifinden kaba hesap 100 ila 200 yıl sonra. \r\n\r\nAllah’ı referans göstermeleri politik bir tercihti. Aşırı güçlenen ve meşruiyet zemini sarsak olan halife devletine karşı hukuk mesleği sırtını “Allah kelamına” dayama ihtiyacını hissetti. Buyur askeriye senin, vergi senin, ama hukuk senin tasarrufunda değil, ilmiye sınıfının tekelidir, dediler. \r\n\r\nSenin kılıcın varsa bizim de Allahımız ve kitabımız var diye kendi kendilerini teselli ettiler.\r\n\r\nSon derece akıllıca bir hamleydi. Sonuçta ilim mesleğinin yüzyıllar içinde aşırı derecede muhafazakarlaşmasına, kılıç sahibinin tasallutuna karşı istiridye gibi içine kapanmasına yol açtı, o ayrı mevzu.\r\n\r\nBugün “İslam değişir mi? Değişmez!” diyerek kendi sorup kendi cevaplayanların bu hakikatleri aklında tutmasında yarar vardır. \r\n\r\nİslam hukuku konusunda ahkam kesmeyi toplumun en cahil ve ezik sınıflarına terk edip sonra onların kalın kafalılığından şikayet etmek pek de rasyonel bir tavır olmasa gerek.\r\n\r\n\r\n* Bu yazı, Sevan Nişanyan’ın blogundan alınmıştır.",
"language": "tr",
"libraryCatalog": "Ahval News",
"publicationTitle": "Ahval",
"section": "Yazarlar",
"shortTitle": "Seçme saçmalar",
"url": "https://ahvalnews.com/tr/din/secme-sacmalar-hukuk-islam-allah-kelami-vs",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://ahvalnews.com/ar/70-mn-alatrak-ydwn-laghlaq-alhdwd-fy-wjh-allajyyn/alnsryt-altrkyt",
"items": [
{
"itemType": "newspaperArticle",
"title": "70% من الأتراك يدعون لإغلاق الحدود في وجه اللاجئين",
"creators": [],
"date": "2021-08-12",
"abstractNote": "اعتقلت السلطات التركية الخميس نحو ثمانين شخصا يشتبه بأنهم شجعوا أو شاركوا في الهجوم على محلات تجارية لسوريين في أنقرة على أثر مشاجرة سقط فيها قتيل في أجواء تصاعد خطاب كراهية الأجانب في تركيا.",
"language": "ar",
"libraryCatalog": "Ahval News",
"publicationTitle": "Ahval",
"section": "أخبار",
"url": "https://ahvalnews.com/ar/70-mn-alatrak-ydwn-laghlaq-alhdwd-fy-wjh-allajyyn/alnsryt-altrkyt",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://ahvalnews.com/ar/hl-ymkn-ltrkya-walhnd-ttqabla-wjhaan-lwjh-fy-afghanstan/alhnd",
"items": [
{
"itemType": "newspaperArticle",
"title": "هل يمكن لتركيا والهند أن تتقابلا وجهاً لوجه في أفغانستان؟",
"creators": [
{
"firstName": "نيكولاس",
"lastName": "مورغان",
"creatorType": "author"
}
],
"date": "2021-08-10",
"abstractNote": "لماذا ترحب #الهند بدور #تركيا في #أفغانستان بعد خروج الولايات المتحدة رغم خلافات البلدين العميقة؟",
"language": "ar",
"libraryCatalog": "Ahval News",
"publicationTitle": "Ahval",
"section": "رأي",
"url": "https://ahvalnews.com/ar/hl-ymkn-ltrkya-walhnd-ttqabla-wjhaan-lwjh-fy-afghanstan/alhnd",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://ahvalnews.com/special-feature",
"items": "multiple"
}
]
/** END TEST CASES **/
100Sebastian Karcher and Abe Jellinek^https?://discovery\.nationalarchives\.gov\.uk//**
Copyright (c) 2013-2021 Sebastian Karcher and Abe Jellinek
This program is free software: you can redistribute it and/or
modify it under the terms of the GNU Affero General Public License
as published by the Free Software Foundation, either version 3 of
the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public
License along with this program. If not, see
<http://www.gnu.org/licenses/>.
*/
function detectWeb(doc, url) {
if (/details\/r\//i.test(url)) {
return "manuscript";
}
else if (/results\/r\/?\?.+hb=tna/i.test(url)) {
return "multiple";
}
return false;
}
function scrape(doc, url) {
var id = url.match(/details\/r\/([A-Z\-0-9]+)/i)[1];
var reference = ZU.xpathText(doc, '//tr/th[contains(text(), "Reference")]/following-sibling::td');
var tags = ZU.xpath(doc, '//span/a[@class="tagName"]');
var apiUrl = "http://discovery.nationalarchives.gov.uk/API/records/v1/details/" + id;
Zotero.Utilities.doGet(apiUrl, function (text) {
var data = JSON.parse(text);
var item = new Zotero.Item("manuscript");
var title = data.title || doc.title.split(' | ')[0];
item.title = ZU.cleanTags(title.replace(/<.+?>/g, ""));
item.archiveLocation = reference;
item.language = data.language;
item.date = data.coveringDates;
if (data.scopeContent && data.scopeContent.description) {
item.abstractNote = ZU.cleanTags(data.scopeContent.description
.replace(/<p>/g, "\n").replace(/<p>/g, "\n"))
.replace(/\n+/g, "\n");
}
var holdings = data.heldBy;
if (holdings && holdings.length) {
item.archive = holdings.map(entry => entry.xReferenceName).join();
}
item.type = data.physicalDescriptionForm;
item.attachments.push({
document: doc,
title: "Catalog Entry"
});
var creators = data.creatorName;
for (let creator of creators) {
if (creator.surname) {
if (creator.firstName) {
item.creators.push({
lastName: creator.surname,
firstName: creator.firstName,
creatorType: "author"
});
}
else {
item.creators.push({
lastName: creator.surname,
fieldMode: 1,
creatorType: "author"
});
}
}
else {
item.creators.push({
lastName: creator.xReferenceName,
fieldMode: 1,
creatorType: "contributor"
});
}
}
for (var tag of tags) {
item.tags.push({ tag: tag.textContent });
}
item.complete();
});
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
var items = [];
// search results
var titles = ZU.xpath(doc, '//ul[@id="search-results"]//a');
if (!titles.length) {
// TODO - other multiples
return;
// titles = ZU.xpath(doc, '//td[@id="leaf-linkarea2"]//a[contains(@href, "/receive/jportal_jparticle")]');
}
for (var i in titles) {
items[titles[i].href] = ZU.trimInternal(titles[i].textContent);
}
Zotero.selectItems(items, function (items) {
if (!items) {
return;
}
ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://discovery.nationalarchives.gov.uk/details/r/C3454320",
"items": [
{
"itemType": "manuscript",
"title": "POSTERS: Food Production: Land girls - Horse-drawn plough, and girl. Artist: Dame Laura...",
"creators": [],
"date": "1939-1946",
"abstractNote": "POSTERS: Food Production: Land girls - Horse-drawn plough, and girl. \nArtist: Dame Laura Knight. \nMedia/Technique: Watercolour and gouache painting with a charcoal underdrawing.Executed on a heavy weight artist board. Light washes of the aqueous media have been applied on top of the loose charcoal sketch giving the painting a powdery, friable quality.",
"archive": "The National Archives, Kew",
"archiveLocation": "INF 3/108",
"libraryCatalog": "The National Archives (UK)",
"shortTitle": "POSTERS",
"attachments": [
{
"title": "Catalog Entry",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "land girls"
},
{
"tag": "women"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://discovery.nationalarchives.gov.uk/details/r/C31",
"items": [
{
"itemType": "manuscript",
"title": "Records of the National Dock Labour Corporation and National Dock Labour Board",
"creators": [
{
"lastName": "National Dock Labour Board",
"fieldMode": 1,
"creatorType": "contributor"
},
{
"lastName": "National Dock Labour Corporation",
"fieldMode": 1,
"creatorType": "contributor"
}
],
"date": "1748-1989",
"abstractNote": "Scope and Content\nThe records of the National Dock Labour Corporation, established to regularise dock labour during the Second World War, and the records of the National Dock Labour Board, which took over these functions in 1947.\nAlso included are the records of four local boards responsible for day to day running of the National Dock Labour Scheme from 1947:\nLondon Dock Labour BoardCumbria Dock Labour BoardGrimsby and Immingham Dock Labour BoardSouth Coast Dock Labour Board.",
"archive": "The National Archives, Kew",
"archiveLocation": "BK",
"language": "English",
"libraryCatalog": "The National Archives (UK)",
"manuscriptType": "series",
"attachments": [
{
"title": "Catalog Entry",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "bk23"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://discovery.nationalarchives.gov.uk/results/r?_q=labour&_hb=tna",
"items": "multiple"
},
{
"type": "web",
"url": "https://discovery.nationalarchives.gov.uk/details/r/6faa8c37-6e1a-4cf5-abf6-09eb73d68d68",
"items": [
{
"itemType": "manuscript",
"title": "Deeds relating to KIRKLEES",
"creators": [],
"date": "18 Sep 1236",
"abstractNote": "Confirmation by Henry III. to Kirklees Nunnery of grants from Reyner son of William Flandrensis, of the site of the house, Adam fil Peter for repairs and firing, Robert son of Gilbert de Barkeston, Henry Teutonicus, John fil Aumund, Agnes de Flammeuill, Reimund de Medelay. Witnesses, W(illiam) elect 'Valent' (Bp. of Valence?), Peter de Malo lacu (Manley), Hugh de Vinon, Godfrey de Craucumb, John fil. Philip, Geoffrey dispenser, Henry de Capella. Dated at York by the hand of Ralph (de Nevill), Bishop of Chichester Chancellor.",
"archive": "West Yorkshire Archive Service, Calderdale",
"archiveLocation": "KM/29",
"language": "English",
"libraryCatalog": "The National Archives (UK)",
"attachments": [
{
"title": "Catalog Entry",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Abe Jellinek^https://ariananews\.af//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, _url) {
if (doc.body.classList.contains('single')) {
return "newspaperArticle";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('ul.mvp-blog-story-list li a');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(text(row, 'h2'));
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
item.tags = item.tags.filter(tag => tag != 'featured' && tag != 'acci');
if (item.abstractNote) {
item.abstractNote = item.abstractNote.replace(/^\([^)]+\)/, '');
}
if (item.creators.length == 1 && item.creators[0].lastName == 'News') {
item.creators = [];
}
item.date = attr(doc, '[itemprop="datePublished"]', 'datetime');
item.publicationTitle = 'Ariana News';
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.itemType = "newspaperArticle";
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://ariananews.af/afghan-carpet-industry-facing-major-challenges-acci/",
"items": [
{
"itemType": "newspaperArticle",
"title": "Afghan carpet industry facing major challenges: ACCI",
"creators": [],
"date": "2021-07-26",
"abstractNote": "Afghanistan’s Chamber of Commerce and Investment (ACCI) said on Sunday that the Afghan carpet industry is facing numerous challenges despite the foreign aid that has been injected into the industry. The ACCI said that the lack of a dedicated industrial park and a suitable place to produce carpets are a […]",
"language": "en-US",
"libraryCatalog": "ariananews.af",
"publicationTitle": "Ariana News",
"shortTitle": "Afghan carpet industry facing major challenges",
"url": "https://ariananews.af/afghan-carpet-industry-facing-major-challenges-acci/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "carpet"
},
{
"tag": "export"
},
{
"tag": "kabul"
},
{
"tag": "production"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://ariananews.af/us-troops-arrive-in-kabul-to-assist-with-evacuations/",
"items": [
{
"itemType": "newspaperArticle",
"title": "US troops arrive in Kabul to assist with evacuations",
"creators": [],
"date": "2021-08-14",
"abstractNote": "American troops have flown into Kabul to help evacuate embassy personnel and other civilians in the Afghan capital, a U.S. official said on Saturday, a day after Taliban insurgents seized the country’s second- and third-biggest cities. The Pentagon has said two battalions of Marines and one infantry battalion will arrive […]",
"language": "en-US",
"libraryCatalog": "ariananews.af",
"publicationTitle": "Ariana News",
"url": "https://ariananews.af/us-troops-arrive-in-kabul-to-assist-with-evacuations/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "attacsk"
},
{
"tag": "doha"
},
{
"tag": "embassy"
},
{
"tag": "peace"
},
{
"tag": "taliban"
},
{
"tag": "troops"
},
{
"tag": "us"
},
{
"tag": "violence"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://ariananews.af/?s=covid",
"items": "multiple"
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://www\.khaama\.com//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (doc.body.classList.contains('single')) {
return "newspaperArticle";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.blog-posts .blog-title a');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
let author = text(doc, '.author-single a');
if (author != 'Khaama Press' && author != 'خامه پرس'
&& author != 'khaama') {
item.creators.push(ZU.cleanAuthor(author, 'author'));
}
item.abstractNote = '';
item.tags = [];
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.itemType = "newspaperArticle";
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.khaama.com/afghan-president-leaves-country-taliban-directed-to-enter-kabul-5645646/",
"items": [
{
"itemType": "newspaperArticle",
"title": "Afghan President leaves country, Taliban directed to enter Kabul",
"creators": [
{
"firstName": "Najibullah",
"lastName": "Lalzoy",
"creatorType": "author"
}
],
"date": "2021-08-15T14:18:09+00:00",
"language": "en-US",
"libraryCatalog": "www.khaama.com",
"publicationTitle": "The Khaama Press News Agency",
"section": "Afghanistan",
"url": "https://www.khaama.com/afghan-president-leaves-country-taliban-directed-to-enter-kabul-5645646/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.khaama.com/pashto-singer-abdullah-muquri-dies-of-covid-19-89798/",
"items": [
{
"itemType": "newspaperArticle",
"title": "Pashto singer Abdullah Muquri is alive, his death news is false",
"creators": [],
"date": "2021-06-14T06:10:43+00:00",
"language": "en-US",
"libraryCatalog": "www.khaama.com",
"publicationTitle": "The Khaama Press News Agency",
"section": "Afghanistan",
"url": "https://www.khaama.com/pashto-singer-abdullah-muquri-dies-of-covid-19-89798/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.khaama.com/pashto/archives/39632",
"items": [
{
"itemType": "newspaperArticle",
"title": "اردوغان وايي، د افغان سولې لپاره به خپلې هڅې چټکې کړي",
"creators": [],
"date": "2021-08-12T04:22:02+00:00",
"language": "ps",
"libraryCatalog": "www.khaama.com",
"publicationTitle": "خامه پرس پښتو",
"section": "افغانستان",
"url": "https://www.khaama.com/pashto/archives/39632",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.khaama.com/persian/archives/92013",
"items": [
{
"itemType": "newspaperArticle",
"title": "همبستگی در کابل آشفتهگی در اسلامآباد؛ عمران خان در نقش سخنگوی طالبان از غنی خواست کنار برود",
"creators": [],
"date": "2021-08-12T04:18+00:00",
"language": "fa-IR",
"libraryCatalog": "www.khaama.com",
"publicationTitle": "خبرگزاری خامه پرس – فارسی",
"url": "https://www.khaama.com/persian/archives/92013",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.khaama.com/compromise-on-the-supremacy-of-afghan-constitution-and-creation-of-the-national-unity-government-in-afghanistan-in-2014/",
"items": [
{
"itemType": "newspaperArticle",
"title": "Compromise on the Supremacy of Constitution in Afghanistan and Creation the Post of Chief Executive after 2014 Presidential Election",
"creators": [
{
"firstName": "Mohammad Tahir Khan",
"lastName": "Nasiri",
"creatorType": "author"
}
],
"date": "2021-06-19T02:22:15+00:00",
"language": "en-US",
"libraryCatalog": "www.khaama.com",
"publicationTitle": "The Khaama Press News Agency",
"section": "Afghanistan",
"url": "https://www.khaama.com/compromise-on-the-supremacy-of-afghan-constitution-and-creation-of-the-national-unity-government-in-afghanistan-in-2014/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.khaama.com/category/elections/",
"items": "multiple"
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://pajhwok\.com//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (doc.body.classList.contains('single')) {
return "newspaperArticle";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('h3.story-title > a');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
let author = text(doc, '.author-link');
if (author != 'Pajhwok') {
item.creators.push(ZU.cleanAuthor(author, 'author'));
}
if (!item.date) {
item.date = ZU.strToISO(text(doc, '.publish-date'));
}
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.itemType = "newspaperArticle";
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://pajhwok.com/2021/08/15/5-more-provinces-including-nangarhar-fall-to-taliban/",
"items": [
{
"itemType": "newspaperArticle",
"title": "5 more provinces including Nangarhar fall to Taliban",
"creators": [
{
"firstName": "Javed Hamim",
"lastName": "Kakar",
"creatorType": "author"
}
],
"date": "2021-08-15",
"language": "en-GB",
"libraryCatalog": "pajhwok.com",
"url": "https://pajhwok.com/2021/08/15/5-more-provinces-including-nangarhar-fall-to-taliban/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://pajhwok.com/2021/07/01/herat-city-to-be-put-on-world-cultural-heritage-list/",
"items": [
{
"itemType": "newspaperArticle",
"title": "Herat City to be put on World Cultural Heritage List",
"creators": [
{
"firstName": "Hijratullah",
"lastName": "Kakar",
"creatorType": "author"
}
],
"date": "2021-07-01",
"language": "en-GB",
"libraryCatalog": "pajhwok.com",
"url": "https://pajhwok.com/2021/07/01/herat-city-to-be-put-on-world-cultural-heritage-list/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://pajhwok.com/category/environment/",
"items": "multiple"
},
{
"type": "web",
"url": "https://pajhwok.com/ps/2021/08/10/if-kabuls-groundwater-pollution-is-not-stopped-disaster-will-ensue/",
"items": [
{
"itemType": "newspaperArticle",
"title": "«که د کابل ښار تر ځمکې لاندې اوبو د ککړتیا مخه ونه نیول شي ناورین رامنځته کېږي»",
"creators": [
{
"firstName": "عبدالباسط",
"lastName": "کروخیل",
"creatorType": "author"
}
],
"date": "2021-08-10",
"language": "ps",
"libraryCatalog": "pajhwok.com",
"url": "https://pajhwok.com/ps/2021/08/10/if-kabuls-groundwater-pollution-is-not-stopped-disaster-will-ensue/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://(pubag|naldc)\.nal\.usda\.gov//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
// This translator targets PubAg and NALDC, which are both Blacklight-based
// catalogs. It does not cover AGRICOLA, which runs Voyager 7 and is covered by
// that translator.
function detectWeb(doc, _url) {
if (doc.querySelector('#document')) {
return "journalArticle";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('#documents h3 > a');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
let risURL = url.replace(/[#?].*$/, '').replace(/\/$/, '') + '.zotero';
ZU.doGet(risURL, function (risText) {
if (/^A4/m.test(risText)) {
// PubAg puts the primary author in A1 and then *all* the authors,
// including the primary author again, in A4
risText = risText
.replace(/^A1.+$/gm, '')
.replace(/^A4/gm, 'A1');
}
// remove ca./b. dates from author names
risText = risText.replace(/^(A[U1-4].\s*-\s*.*)(?:ca\.|b\.).*$/m, '$1');
var translator = Zotero.loadTranslator("import");
translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7"); // RIS
translator.setString(risText);
translator.setHandler("itemDone", function (obj, item) {
if (url.includes('naldc.nal.usda.gov')) {
item.libraryCatalog = 'National Agricultural Library Digital Collections';
}
else {
item.libraryCatalog = 'PubAg';
if (item.archiveLocation) {
// like a PMID
item.extra = (item.extra || '')
+ `\nPubAg AGID: ${item.archiveLocation}`;
}
}
let PMID = text(doc, 'a[href*="/pubmed/?term="] span');
if (PMID) {
item.extra = (item.extra || '') + `\nPMID: ${PMID}`;
}
let PMCID = text(doc, 'a[title*="Access PMCID"] span');
if (PMCID) {
item.extra = (item.extra || '') + `\nPMCID: ${PMCID}`;
}
if (!item.url) {
let externalURL = attr(doc, '.external a', 'href');
if (!externalURL.includes('doi.org')) { // not useful - already saving DOI
item.url = externalURL;
}
}
else if (item.url.includes('doi.org')) {
delete item.url;
}
delete item.archive; // 'PubAg'
delete item.archiveLocation; // AGID, etc.
delete item.numPages; // volume/issue
if (item.journalAbbreviation == item.publicationTitle) {
delete item.journalAbbreviation;
}
if (item.volume) {
item.volume = item.volume.replace('v.', '');
}
if (item.issue) {
item.issue = item.issue.replace('no.', '');
}
if (item.pages) {
item.pages = item.pages.replace(/pp?\./, '');
}
if (!item.ISSN) {
item.ISSN = ZU.cleanISSN(attr(doc, 'meta[name="citation_issn"]', 'content'));
}
if (doc.querySelector('.pdf a')) {
item.attachments.push({
title: 'Full Text PDF',
mimeType: 'application/pdf',
url: attr(doc, '.pdf a', 'href')
});
}
item.complete();
});
translator.translate();
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://pubag.nal.usda.gov/catalog/7284823",
"items": [
{
"itemType": "journalArticle",
"title": "What Makes Bread and Durum Wheat Different?",
"creators": [
{
"lastName": "Mastrangelo",
"firstName": "Anna M.",
"creatorType": "author"
},
{
"lastName": "Cattivelli",
"firstName": "Luigi",
"creatorType": "author"
}
],
"date": "2021-07",
"DOI": "10.1016/j.tplants.2021.01.004",
"ISSN": "1360-1385",
"abstractNote": "Durum wheat (tetraploid) and bread wheat (hexaploid) are two closely related species with potentially different adaptation capacities and only a few distinct technological properties that make durum semolina and wheat flour more suitable for pasta, or bread and bakery products, respectively. Interspecific crosses and new breeding technologies now allow researchers to develop wheat lines with durum or bread quality features in either a tetraploid or hexaploid genetic background; such lines combine any technological properties of wheat with the different adaptation capacity expressed by tetraploid and hexaploid wheat genomes. Here, we discuss what makes bread and durum wheat different, consider their environmental adaptation capacity and the major quality-related genes that explain the different end-uses of semolina and bread flour and that could be targets for future wheat breeding programs.",
"extra": "PubAg AGID: 7284823",
"issue": "7",
"libraryCatalog": "PubAg",
"pages": "677-684",
"publicationTitle": "Trends in plant science",
"volume": "26",
"attachments": [],
"tags": [
{
"tag": "breadmaking quality"
},
{
"tag": "breads"
},
{
"tag": "durum wheat"
},
{
"tag": "genetic background"
},
{
"tag": "hexaploidy"
},
{
"tag": "pasta"
},
{
"tag": "semolina"
},
{
"tag": "tetraploidy"
},
{
"tag": "wheat flour"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://pubag.nal.usda.gov/catalog/7161673",
"items": [
{
"itemType": "journalArticle",
"title": "Predicting micronutrients of wheat using hyperspectral imaging",
"creators": [
{
"lastName": "Hu",
"firstName": "Naiyue",
"creatorType": "author"
},
{
"lastName": "Li",
"firstName": "Wei",
"creatorType": "author"
},
{
"lastName": "Du",
"firstName": "Chenghang",
"creatorType": "author"
},
{
"lastName": "Zhang",
"firstName": "Zhen",
"creatorType": "author"
},
{
"lastName": "Gao",
"firstName": "Yanmei",
"creatorType": "author"
},
{
"lastName": "Sun",
"firstName": "Zhencai",
"creatorType": "author"
},
{
"lastName": "Yang",
"firstName": "Li",
"creatorType": "author"
},
{
"lastName": "Yu",
"firstName": "Kang",
"creatorType": "author"
},
{
"lastName": "Zhang",
"firstName": "Yinghua",
"creatorType": "author"
},
{
"lastName": "Wang",
"firstName": "Zhimin",
"creatorType": "author"
}
],
"date": "2021-05-01",
"DOI": "10.1016/j.foodchem.2020.128473",
"ISSN": "0308-8146",
"abstractNote": "Micronutrients are the key factors to evaluate the nutritional quality of wheat. However, measuring micronutrients is time-consuming and expensive. In this study, the potential of hyperspectral imaging for predicting wheat micronutrient content was investigated. The spectral reflectance of wheat kernels and flour was acquired in the visible and near-infrared range (VIS-NIR, 375–1050 nm). Afterwards, wheat micronutrient contents were measured and their associations with the spectra were modeled. Results showed that the models based on the spectral reflectance of wheat kernel achieved good predictions for Ca, Mg, Mo and Zn (r²>0.70). The models based on the spectra reflectance of wheat flour showed good predictive capabilities for Mg, Mo and Zn (r²>0.60). The prediction accuracy was higher for wheat kernels than for the flour. This study showed the feasibility of hyperspectral imaging as a non-invasive, non-destructive tool to predict micronutrients of wheat.",
"extra": "PubAg AGID: 7161673",
"libraryCatalog": "PubAg",
"pages": "2021 v.343",
"publicationTitle": "Food chemistry",
"volume": "343",
"attachments": [],
"tags": [
{
"tag": "accuracy"
},
{
"tag": "food chemistry"
},
{
"tag": "nutritive value"
},
{
"tag": "prediction"
},
{
"tag": "reflectance"
},
{
"tag": "seeds"
},
{
"tag": "wheat"
},
{
"tag": "wheat flour"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://pubag.nal.usda.gov/catalog/6838747",
"items": [
{
"itemType": "journalArticle",
"title": "Staling kinetics of whole wheat pan bread",
"creators": [
{
"lastName": "Sehn",
"firstName": "Georgia Ane Raquel",
"creatorType": "author"
},
{
"lastName": "Steel",
"firstName": "Caroline Joy",
"creatorType": "author"
}
],
"date": "2020-02",
"DOI": "10.1007/s13197-019-04087-9",
"ISSN": "0022-1155",
"abstractNote": "Understanding the staling process of whole grain breads, especially in relation to the increase in firmness, can contribute to optimize the shelf life of these products. The aim of this work was to develop an equation (staling rate) capable of estimating the increase in firmness of whole wheat pan breads. The staling rate (K) demonstrated that the greater the bran content, the greater the increase in bread firmness (from 0.011 day⁻¹ for 0% replacement, to 0.174 day⁻¹ and 0.091 day⁻¹ for 30% replacement of fine and coarse bran, respectively). Thereby, we established an equation to estimate the firmness of whole wheat pan bread on a given day, considering the concentration of bran in the formulation, thus helping baking industries to predict bread behavior during storage and optimize the use of additives.",
"extra": "PubAg AGID: 6838747\nPMID: 32116365\nPMCID: PMC7016051",
"issue": "2",
"libraryCatalog": "PubAg",
"pages": "557-563",
"publicationTitle": "Journal of food science and technology",
"url": "http://ncbi.nlm.nih.gov/pmc/articles/PMC7016051",
"volume": "57",
"attachments": [],
"tags": [
{
"tag": "additives"
},
{
"tag": "baking"
},
{
"tag": "bran"
},
{
"tag": "breads"
},
{
"tag": "equations"
},
{
"tag": "firmness"
},
{
"tag": "food spoilage"
},
{
"tag": "industry"
},
{
"tag": "shelf life"
},
{
"tag": "wheat"
},
{
"tag": "whole grain foods"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://pubag.nal.usda.gov/?q=soy&search_field=all_fields",
"items": "multiple"
},
{
"type": "web",
"url": "https://naldc.nal.usda.gov/catalog/6964450",
"items": [
{
"itemType": "journalArticle",
"title": "Southern Plains Assessment of Vulnerability and Preliminary Adaptation and Mitigation Strategies for Farmers, Ranchers and Forest Land Owners",
"creators": [
{
"lastName": "Jean Steiner",
"creatorType": "author",
"fieldMode": 1
},
{
"lastName": "Jeanne Schneider",
"creatorType": "author",
"fieldMode": 1
},
{
"lastName": "Clay Pope",
"creatorType": "author",
"fieldMode": 1
},
{
"lastName": "Sarah Pope",
"creatorType": "author",
"fieldMode": 1
},
{
"lastName": "Paulette Ford",
"creatorType": "author",
"fieldMode": 1
},
{
"lastName": "Rachel Steele",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "2015",
"DOI": "10.32747/2015.6964450.ch",
"abstractNote": "The Southern Plains region contributes significantly to the Nation’s wheat and beef production. Winter wheat is the principal annual crop, with much of it serving dual-use as a cool-season annual forage in addition to grain production. Cattle are raised on extensive pasture and rangelands across the region.",
"language": "English",
"libraryCatalog": "National Agricultural Library Digital Collections",
"pages": "1 online resource (61 pages)",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://naldc.nal.usda.gov/catalog/7232772",
"items": [
{
"itemType": "journalArticle",
"title": "Heartwood taper in Northern Red Oak (Quercus rubra L.)",
"creators": [
{
"lastName": "John P. Brown",
"creatorType": "author",
"fieldMode": 1
},
{
"lastName": "United States. Forest Service. Northern Research Station",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "2019",
"abstractNote": "To better understand how the practice of long-term tree retention affects value, northern red oak (Quercus rubra L.) trees from the Menominee Indian Reservation in Wisconsin were harvested and examined for patterns of heartwood development in relation to several tree characteristics. A total of 69 mature northern red oak trees from three dbh size classes, small (34-47 cm, 20 trees), medium (48-60 cm, 20 trees), and large (>= 61 cm, 29 trees), were logged and optimally bucked. Cross-sectional disks were then removed from the tops of the stumps and each log and were analyzed for patterns of change in heartwood radius. Four factors were found to have a statistically significant effect on heartwood radius: age of the tree, size class, height, and inside bark radius. The inside bark radius was the strongest predictor of heartwood radius. A 1 cm increase in inside bark radius led to approximately a 0.95 cm increase in heartwood radius. Increasing height had a small negative effect, with heartwood radius decreasing approximately 0.05 cm for each meter above ground. Age of the tree had a small positive effect of 0.0016 cm per year and was only significant in one expert model considered. These results provide consumers of oak logs and forest managers insight to the interior heartwood pattern and can lead to improved value assessments for northern red oak logs.",
"language": "English",
"libraryCatalog": "National Agricultural Library Digital Collections",
"pages": "1 online resource (9 pages) : one color illustration.-USDA",
"url": "https://purl.fdlp.gov/GPO/gpo117952",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Dendrochronology"
},
{
"tag": "Forest management"
},
{
"tag": "Green tree retention"
},
{
"tag": "Heartwood"
},
{
"tag": "Quercus rubra"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://naldc.nal.usda.gov/?utf8=%E2%9C%93&search_field=all_fields&q=trees",
"items": "multiple"
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://rosap\.ntl\.bts\.gov//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, _url) {
if (doc.querySelector('#doc-viewr-container')) {
return typeFromM3(text(doc, 'a[href*="sm_resource_type="]'));
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.search-result-row .object-title');
for (let row of rows) {
let href = attr(row, 'form[action]', 'action');
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var risURL = url.replace(/[#?].*$/, '').replace(/\/$/, '') + '/export';
let pdfURL = attr(doc, 'form#download-document', 'action');
ZU.doGet(risURL, function (risText) {
let m3 = (risText.match(/^M3\s*-\s*(.+)$/m) || [])[1] || '';
var translator = Zotero.loadTranslator("import");
translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7");
translator.setString(risText);
translator.setHandler("itemDone", function (obj, item) {
item.itemType = typeFromM3(m3);
if (m3.trim() == 'Dataset') {
item.extra = (item.extra || '') + `\nType: dataset`;
}
item.libraryCatalog = 'ROSA P';
if (item.itemType == 'report' && !item.reportNumber) {
item.reportNumber = item.issue;
delete item.issue;
}
if (!item.callNumber) {
item.callNumber = item.archiveLocation;
delete item.archiveLocation;
}
if (pdfURL) {
item.attachments.push({
url: pdfURL,
title: 'Full Text PDF',
mimeType: 'application/pdf'
});
}
item.complete();
});
translator.translate();
});
}
// Map ROSA P types to Zotero types. Some of these mappings are rather arbitrary.
function typeFromM3(statedType) {
switch (statedType.trim()) {
case 'Application':
case 'Brief':
case 'Example':
case 'In Collection':
case 'Organization Info':
case 'Other':
case 'Policy Statement':
case 'Press Release':
case 'Research Paper': // no journal articles that I can find
case 'Tech Report':
return 'report';
case 'Biography':
case 'Book':
case 'Booklet/Pamphlet':
case 'Journal':
case 'Magazine':
case 'Manual':
case 'Newspaper':
case 'Proceedings':
return 'book';
case 'Data Management Plan':
case 'Dataset':
case 'Memorandum':
case 'Multipart': // not common, doesn't really mean anything
case 'PDF':
case 'Text':
return 'document';
case 'Dissertation':
case 'Thesis':
return 'thesis';
case 'Image':
return 'artwork';
case 'In Book':
return 'bookSection';
case 'In Proceedings':
return 'conferencePaper';
case 'Journal Article':
return 'journalArticle';
case 'Letter':
return 'letter';
case 'Manuscript':
return 'manuscript';
case 'Map':
return 'map';
case 'Presentations':
return 'presentation';
case 'Video':
return 'videoRecording';
case 'Web Document':
return 'webpage';
default:
return 'report'; // this is a pretty safe guess in this catalog
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://rosap.ntl.bts.gov/view/dot/31128",
"items": [
{
"itemType": "report",
"title": "Development of delineator material/impact testing specific to managed lane use for optimization of service life : final report.",
"creators": [
{
"lastName": "Arrington",
"firstName": "Dusty R.",
"creatorType": "author"
},
{
"lastName": "Garza",
"firstName": "William H.",
"creatorType": "author"
},
{
"lastName": "Texas A&M Transportation Institute",
"creatorType": "editor",
"fieldMode": 1
}
],
"date": "2016-07-01",
"abstractNote": "The durability of delineators should be considered when selecting a product. Looking at the data",
"callNumber": "dot:31128",
"language": "English",
"libraryCatalog": "ROSA P",
"reportNumber": "Test Report No. 605601",
"shortTitle": "Development of delineator material/impact testing specific to managed lane use for optimization of service life",
"url": "https://rosap.ntl.bts.gov/view/dot/31128",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Delineators"
},
{
"tag": "Delineators"
},
{
"tag": "Durability"
},
{
"tag": "Highway delineators"
},
{
"tag": "Impact tests"
},
{
"tag": "Managed lanes"
},
{
"tag": "Optimization"
},
{
"tag": "Recommendations"
},
{
"tag": "Service life"
},
{
"tag": "Specifications"
},
{
"tag": "Test procedures"
},
{
"tag": "impact durability"
},
{
"tag": "impact durability"
},
{
"tag": "impact endurance"
},
{
"tag": "impact endurance"
},
{
"tag": "roadside safety"
},
{
"tag": "roadside safety"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://rosap.ntl.bts.gov/view/dot/39145",
"items": [
{
"itemType": "map",
"title": "Air traffic hubs: 2009",
"creators": [
{
"lastName": "United States. Department of Transportation. Bureau of Transportation Statistics",
"creatorType": "editor",
"fieldMode": 1
}
],
"date": "2009-01-01",
"abstractNote": "An Air Traffic Hub is a community of geographic area whose airport(s) serve at least .05% of all enplaned (boarded) passengers in the United States. All locations displayed here had a total enplanement of 30,000 or more for 2008. They are categorized based on their share of total enplaned passengers: Large, 1% or more; Medium. 0.25%-0.99%; and Small, 0.05%-0.24%.",
"callNumber": "dot:39145",
"language": "English",
"libraryCatalog": "ROSA P",
"shortTitle": "Air traffic hubs",
"url": "https://rosap.ntl.bts.gov/view/dot/39145",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Air traffic"
},
{
"tag": "Airport Hubs"
},
{
"tag": "Airport facilities"
},
{
"tag": "Boarding"
},
{
"tag": "Hubs"
},
{
"tag": "Map"
},
{
"tag": "Maps"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://rosap.ntl.bts.gov/view/dot/36310",
"items": [
{
"itemType": "letter",
"title": "Letter From William Coleman, Jr. to Mayor Bradley and Mr. Cook",
"creators": [
{
"lastName": "William T. Coleman",
"firstName": "Jr.",
"creatorType": "author"
},
{
"lastName": "United States. Department of Transportation. Office of the Secretary",
"creatorType": "editor",
"fieldMode": 1
}
],
"date": "1976-01-01",
"abstractNote": "Letter written by William Coleman, Jr. to the Mayor Bradley and Mr. Cook -",
"callNumber": "dot:36310",
"language": "English",
"libraryCatalog": "ROSA P",
"url": "https://rosap.ntl.bts.gov/view/dot/36310",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Light rail transit"
},
{
"tag": "Public Transportation"
},
{
"tag": "Public transit"
},
{
"tag": "Transportation systems"
},
{
"tag": "Urbanized Areas"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://rosap.ntl.bts.gov/view/dot/18229",
"items": [
{
"itemType": "thesis",
"title": "An examination of the career paths and professional challenges of women in management positions in major university and college transportation departments.",
"creators": [
{
"lastName": "Davis",
"firstName": "Teresa A.",
"creatorType": "author"
}
],
"date": "2008",
"abstractNote": "Women have been involved in the field of transportation since the 1800s and comprise almost half of today‟s workforce, yet the transportation industry continues to be male-dominated. The Transportation Research Board in its 2000 Task Force on Women‟s Issues in Transportation identified a need to learn more about women leaders in transportation. Such knowledge would help the transportation industry in the pursuit and hiring of women and also assist those wishing to pursue a career in transportation. This study provides information on the demographics, career paths, and professional challenges of women managers in major university transportation departments.",
"callNumber": "dot:18229",
"language": "English",
"libraryCatalog": "ROSA P",
"url": "https://rosap.ntl.bts.gov/view/dot/18229",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "College graduates"
},
{
"tag": "Education"
},
{
"tag": "Job opportunities"
},
{
"tag": "Management"
},
{
"tag": "Occupations"
},
{
"tag": "Transportation careers"
},
{
"tag": "Universities and colleges"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://rosap.ntl.bts.gov/view/dot/56584",
"items": [
{
"itemType": "document",
"title": "A Connected Vehicle-Based Adaptive Navigation Algorithm [supporting dataset]",
"creators": [
{
"lastName": "Wang",
"firstName": "Yinhai",
"creatorType": "author"
},
{
"lastName": "Pacific Northwest Transportation Consortium",
"creatorType": "editor",
"fieldMode": 1
}
],
"date": "2020-01-16",
"abstractNote": "The dataset contains the vehicle count by movement information for 35 intersections in Bellevue, WA. It can be used for network-wide traffic simulation. The data were collected in 2017, during an off-peak (1 pm) period in a normal weekday. The Turn_ratio.xlsx file contains intersection identification numbers and vehicle count for each movement. The Intersection_address.xlsx file contains the north-south and east-west road names for each intersection. The two files are linked with intersection identification number.",
"callNumber": "dot:56584",
"extra": "Type: dataset",
"language": "English",
"libraryCatalog": "ROSA P",
"url": "https://rosap.ntl.bts.gov/view/dot/56584",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Algorithms"
},
{
"tag": "Bellevue"
},
{
"tag": "Connected vehicles"
},
{
"tag": "Information processing"
},
{
"tag": "Navigation"
},
{
"tag": "Optimization"
},
{
"tag": "Shortest path algorithms"
},
{
"tag": "Traffic Intersection"
},
{
"tag": "Traffic delays"
},
{
"tag": "Traffic simulation"
},
{
"tag": "Travel costs"
},
{
"tag": "Travel time"
},
{
"tag": "Turning Movement Count Data"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://rosap.ntl.bts.gov/view/dot/49511",
"items": [
{
"itemType": "report",
"title": "Choosing a Roundabout as a Multimodal Solution",
"creators": [
{
"lastName": "United States. Federal Highway Administration. Office of Safety",
"creatorType": "editor",
"fieldMode": 1
}
],
"date": "2014-07-01",
"abstractNote": "The City of Santa Cruz, California, is committed to creating and maintaining a walkable and bikeable community. Master plans adopted for pedestrians in 2003 and bicycles in 2008 back up that commitment with city policies to improve the quality of life for non-motorized road users. Located on Monterey Bay, Santa Cruz is a vibrant community that has received national recognition and awards for being a “bicycle friendly community.” Residents of the city, students at the nearby University of California Santa Cruz, and visitors to the coastline all contribute to a diverse and active-lifestyle community. The city’s General Plan 2030 states: “We will provide an accessible, comprehensive, and effective transportation system that integrates automobile use with sustainable and innovative transportation options—including enhanced public transit, bicycle, and pedestrian networks throughout the community.” In addition, transportation safety and mobility around and through the community are important to the city, and the city’s staff is encouraged to consider innovative ideas and solutions to improve traffic flow and safety. As part of a revitalization of the connection between downtown and beach areas of Santa Cruz, and in keeping with active transportation goals, the city studied upgrading the intersection of Pacific Avenue, Center Street, and Depot Park from an all-way stop to a single-lane roundabout.",
"callNumber": "dot:49511",
"language": "English",
"libraryCatalog": "ROSA P",
"reportNumber": "FHWA-SA-14-011",
"url": "https://rosap.ntl.bts.gov/view/dot/49511",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Interchanges and intersections"
},
{
"tag": "Multimodal transportation"
},
{
"tag": "Roundabouts"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://rosap.ntl.bts.gov/gsearch?terms=santa+clarita&collection=",
"items": "multiple"
}
]
/** END TEST CASES **/
100Sebastian Karcher^https?://www\.vanityfair\.com//*
***** BEGIN LICENSE BLOCK *****
Vanity Fair Translator
Copyright © 2011 Sebastian Karcher
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, _url) {
if (doc.querySelector('.content-header__rubric--issue-date')) {
return 'magazineArticle';
}
if (doc.querySelector('time.content-header__publish-date')) {
return 'blogPost';
}
return false;
}
function doWeb(doc, url) {
// no multiples - Vanity Fair seems to detect headless browsers and gives
// a 402 error
scrape(doc, url);
}
function scrape(doc, url) {
let itemType = detectWeb(doc, url);
let item = new Zotero.Item(itemType);
item.url = url;
item.attachments = [{ document: doc, title: 'Snapshot' }];
let author = text(doc, '.byline__name');
if (author) item.creators = [ZU.cleanAuthor(author, 'author')];
let date = text(doc, 'time.content-header__publish-date');
if (date) item.date = ZU.strToISO(date);
item.language = "en-US";
item.ISSN = "0733-8899";
item.title = text(doc, 'h1');
let issue;
switch (itemType) {
case 'magazineArticle':
item.abstractNote = text(doc, '.dek');
issue = text(doc, '.content-header__rubric--issue-date');
if (issue) item.issue = issue.replace(/\s.*/, '');
item.publicationTitle = "Vanity Fair";
item.tags = attr(doc, 'meta[name="keywords"]', 'content').split(',').filter(tag => !tag.startsWith('_legacy_/'));
break;
case 'blogPost':
item.blogTitle = "Vanity Fair Blogs";
break;
default:
throw new Error(`Unexpected item type ${itemType}`);
}
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.vanityfair.com/news/2011/08/qa-michael-lewis-on-future-of-europe-economy-and-germany-italy",
"items": [
{
"itemType": "blogPost",
"title": "Q&A: Michael Lewis on the Future of Europe’s Economy",
"creators": [
{
"firstName": "Jaime",
"lastName": "Lalinde",
"creatorType": "author"
}
],
"date": "2011-08-10",
"blogTitle": "Vanity Fair Blogs",
"language": "en-US",
"shortTitle": "Q&A",
"url": "https://www.vanityfair.com/news/2011/08/qa-michael-lewis-on-future-of-europe-economy-and-germany-italy",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.vanityfair.com/news/2011/05/top-one-percent-201105",
"items": [
{
"itemType": "magazineArticle",
"title": "Of the 1%, by the 1%, for the 1%",
"creators": [
{
"firstName": "Joseph E.",
"lastName": "Stiglitz",
"creatorType": "author"
}
],
"date": "2011-03-31",
"ISSN": "0733-8899",
"issue": "May",
"language": "en-US",
"libraryCatalog": "Vanity Fair",
"publicationTitle": "Vanity Fair",
"url": "https://www.vanityfair.com/news/2011/05/top-one-percent-201105",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "americans"
},
{
"tag": "archive"
},
{
"tag": "magazine"
},
{
"tag": "one percent"
},
{
"tag": "society"
},
{
"tag": "wealth"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.vanityfair.com/news/2011/08/qa-michael-lewis-on-future-of-europe-economy-and-germany-italy",
"items": [
{
"itemType": "blogPost",
"title": "Q&A: Michael Lewis on the Future of Europe’s Economy",
"creators": [
{
"firstName": "Jaime",
"lastName": "Lalinde",
"creatorType": "author"
}
],
"date": "2011-08-10",
"blogTitle": "Vanity Fair Blogs",
"language": "en-US",
"shortTitle": "Q&A",
"url": "https://www.vanityfair.com/news/2011/08/qa-michael-lewis-on-future-of-europe-economy-and-germany-italy",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.vanityfair.com/news/2021/08/how-florida-turned-american-politics-into-a-tabloid-nightmare",
"items": [
{
"itemType": "blogPost",
"title": "How Florida Turned American Politics Into a Tabloid Nightmare",
"creators": [
{
"firstName": "Joe",
"lastName": "Hagan",
"creatorType": "author"
}
],
"date": "2021-08-13",
"blogTitle": "Vanity Fair Blogs",
"language": "en-US",
"url": "https://www.vanityfair.com/news/2021/08/how-florida-turned-american-politics-into-a-tabloid-nightmare",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://www\.npr\.org//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
// NPR assumes that only a crawler (which always loads pages fresh rather
// than letting the SPA framework fake a reload) would want JSON-LD, so we
// can't use that as our only check, and we'll have to manually reload the
// page to get it in doWeb.
// The JSON-LD also sticks around when you navigate to a non-story page,
// which is odd, so we can't use it as a test for a story page at all!
if (doc.querySelector('#storytext')) {
if (doc.querySelector('h1.transcript a')) {
if (attr(doc, '.slug a', 'href').includes('npr.org/podcasts/')) {
return "podcast";
}
else {
return "radioBroadcast";
}
}
else if (doc.querySelector('#primaryaudio')) {
return "multiple";
}
else {
return "newspaperArticle";
}
}
else if (/^https?:\/\/www\.npr\.org\/.+/.test(url)) {
// wait for SPA reload
Z.monitorDOMChanges(doc.querySelector('#loading-bar'));
}
// we can't really do search results, because each result might be a
// multiple and there's no way to tell from the search page
return false;
}
function doWeb(doc, url) {
if (doc.querySelector('script[type="application/ld+json"]')) {
scrape(doc, url);
}
else {
// See comment in detectWeb. Have to add a # to ensure that
// processDocuments doesn't use the already-loaded page.
ZU.processDocuments(url + '#', scrape);
}
}
function scrape(doc, url) {
let detected = detectWeb(doc, url);
switch (detected) {
case 'multiple': {
// we're detecting "multiple" because we have audio and text,
// so we can just hardcode the options here
let options = { text: 'Text', audio: 'Audio' };
Zotero.selectItems(options, function (items) {
if (items.text) {
scrapeText(doc, url);
}
if (items.audio) {
scrapeAudio(doc, url);
}
});
break; }
case 'newspaperArticle':
scrapeText(doc, url);
break;
case 'radioBroadcast':
case 'podcast':
scrapeAudio(doc, url);
break;
}
}
function scrapeText(doc, _url) {
let item = new Zotero.Item('newspaperArticle');
let json = JSON.parse(text(doc, 'script[type="application/ld+json"]'));
item.title = json.headline;
item.abstractNote = ZU.cleanTags(json.description);
item.publicationTitle = 'NPR';
item.date = json.dateModified || json.datePublished;
item.section = text(doc, 'h3.slug');
item.language = 'en';
item.url = json.mainEntityOfPage['@id'];
if (json.author) {
for (let name of json.author.name) {
item.creators.push(ZU.cleanAuthor(name, 'author'));
}
}
item.attachments.push({
title: 'Snapshot',
document: doc
});
item.complete();
}
function scrapeAudio(doc, _url) {
// first we need to figure out whether we're looking at a radio broadcast
// or a podcast
let itemType;
if (doc.querySelector('h1.transcript a')) {
// if we're on a transcript page, the slug link will include /podcasts/
// if the show in question is a podcast
if (attr(doc, '.slug a', 'href').includes('npr.org/podcasts/')) {
itemType = 'podcast';
}
else {
itemType = 'radioBroadcast';
}
}
else if (doc.querySelector('.program-block a')) {
// if we're on an article page, there'll be a .program-block link iff
// the show aired on a radio program
itemType = 'radioBroadcast';
}
else {
itemType = 'podcast';
}
let item = new Zotero.Item(itemType);
let json = JSON.parse(text(doc, 'script[type="application/ld+json"]'));
item.title = text(doc, '#primaryaudio .audio-module-title') || json.headline;
item.abstractNote = ZU.cleanTags(json.description);
// strip the time from the date, since we have no way of knowing exactly
// what time it aired (and the time on the article is based on when the
// transcript was published)
let date = (json.dateModified || json.datePublished).replace(/T.+$/, '');
if (itemType == 'radioBroadcast') {
item.date = date;
item.programTitle = text(doc, '.program-block a');
if (!item.programTitle) {
// transcript pages don't have a .program-block, so we'll use a
// shakier approach based on internal audio player metadata
try {
item.programTitle = JSON.parse(
attr(doc, 'div[data-audio]', 'data-audio')
).program;
}
catch (_) {}
}
item.network = 'NPR';
}
else {
// podcasts have no date field
item.extra = `issued: ${date}\n`;
item.seriesTitle = text(doc, 'h3.slug');
item.publisher = 'NPR'; // no good analogue for this, so let it go into extra
}
item.runningTime = attr(doc, '#primaryaudio .audio-module-duration', 'datetime')
.replace(/P(\d+)H,(\d+)M,(\d+)S/, '$1:$2:$3')
.replace(/P(\d+)M,(\d+)S/, '$1:$2');
item.language = 'en';
item.url = json.mainEntityOfPage['@id'];
if (json.author) {
for (let name of json.author.name) {
let creatorType = itemType == 'radioBroadcast' ? 'director' : 'podcaster';
item.creators.push(ZU.cleanAuthor(name, creatorType));
}
}
item.attachments.push({
title: 'Audio',
mimeType: 'audio/mpeg',
url: attr(doc, '#primaryaudio .audio-tool-download > a', 'href')
});
item.attachments.push({
title: 'Transcript',
mimeType: 'text/html',
url: attr(doc, '#primaryaudio .audio-tool-transcript > a', 'href'),
snapshot: true
});
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.npr.org/2020/07/09/889562040/supreme-court-rules-that-about-half-of-oklahoma-is-indian-land",
"items": [
{
"itemType": "newspaperArticle",
"title": "Supreme Court Rules That About Half Of Oklahoma Is Native American Land",
"creators": [
{
"firstName": "Laurel",
"lastName": "Wamsley",
"creatorType": "author"
}
],
"date": "2020-07-09T19:17:00-04:00",
"abstractNote": "\"Today we are asked whether the land these treaties promised remains an Indian reservation. ... Because Congress has not said otherwise, we hold the government to its word,\" wrote Justice Gorsuch.",
"language": "en",
"libraryCatalog": "NPR",
"publicationTitle": "NPR",
"section": "Law",
"url": "https://www.npr.org/2020/07/09/889562040/supreme-court-rules-that-about-half-of-oklahoma-is-indian-land",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.npr.org/2021/07/13/1011376403/its-summer-and-that-means-the-mysterious-return-of-glacier-ice-worms",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.npr.org/transcripts/1011376403",
"items": [
{
"itemType": "radioBroadcast",
"title": "It's Summer, And That Means The Mysterious Return Of Glacier Ice Worms",
"creators": [
{
"firstName": "Nell",
"lastName": "Greenfieldboyce",
"creatorType": "director"
}
],
"date": "2021-07-13",
"abstractNote": "On mountaintop glaciers of Alaska, Washington and Oregon, billions of tiny black worms are tunneling upward to the barren, icy surface. What lures them, and how do they survive the frozen depths?",
"language": "en",
"libraryCatalog": "NPR",
"network": "NPR",
"programTitle": "Morning Edition",
"runningTime": "6:38",
"url": "https://www.npr.org/2021/07/13/1011376403/its-summer-and-that-means-the-mysterious-return-of-glacier-ice-worms",
"attachments": [
{
"title": "Audio",
"mimeType": "audio/mpeg"
},
{
"title": "Transcript",
"mimeType": "text/html",
"snapshot": true
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.npr.org/transcripts/1011289394",
"items": [
{
"itemType": "podcast",
"title": "Égalité, Fraternité, And 'Libertie'",
"creators": [
{
"firstName": "Gene",
"lastName": "Demby",
"creatorType": "podcaster"
},
{
"firstName": "Shereen Marisol",
"lastName": "Meraji",
"creatorType": "podcaster"
}
],
"abstractNote": "This month on Code Switch, we're talking about books — new and old — that have deepened our understandings of what it means to be free. First up, a conversation with author Kaitlyn Greenidge about her new novel, Libertie, which tells the story of a young woman pushing back against her mother's expectations of what her life should look like.",
"extra": "issued: 2021-07-07",
"language": "en",
"runningTime": "23:33",
"seriesTitle": "Code Switch",
"url": "https://www.npr.org/2021/06/29/1011289394/egalite-fraternite-and-libertie",
"attachments": [
{
"title": "Audio",
"mimeType": "audio/mpeg"
},
{
"title": "Transcript",
"mimeType": "text/html",
"snapshot": true
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100czar^https?://(www\.)?theartnewspaper\.com//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2019-2021 czar
http://en.wikipedia.org/wiki/User_talk:Czar
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (/\/(news|analysis|blog|comment|preview|review)\/./.test(url)) {
return text(doc, '.af-issue-number') ? "magazineArticle" : "blogPost";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function scrape(doc, _url) {
var issue = text(doc, '.af-issue-number'); // when issue info is available ("Appeared in The Art Newspaper"), change type to magazineArticle
var item;
if (issue) {
item = new Zotero.Item("magazineArticle");
issue = issue.replace(/^,\s*/, '');
item.issue = issue.substr(0, issue.indexOf(' '));
item.date = issue.substr(issue.indexOf(' ') + 1);
item.ISSN = '0960-6556';
}
else {
item = new Zotero.Item("blogPost");
}
var jsonLD = doc.querySelector('script[type="application/ld+json"]'); // JSON-LD not yet built into EM
if (jsonLD) {
var json = JSON.parse(jsonLD.textContent);
item.title = json.headline;
if (!item.date) {
item.date = ZU.strToISO(json.dateModified || json.datePublished);
}
for (let author of json.author) {
if (author != 'The Art Newspaper') {
item.creators.push(ZU.cleanAuthor(author, "author"));
}
}
}
item.publicationTitle = "The Art Newspaper";
item.language = "en";
item.url = attr(doc, 'link[rel=canonical]', 'href');
item.abstractNote = attr(doc, 'meta[name="description"]', 'content');
item.attachments.push({
document: doc,
title: "Snapshot",
mimeType: "text/html"
});
item.complete();
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.ais-Hits__root a, a.cp-link'); // 1st selector is search results; 2nd is CMS
var titles = doc.querySelectorAll('.sr-furniture h4, a.cp-link');
for (let i = 0; i < rows.length; i++) {
let href = rows[i].href;
let title = ZU.trimInternal(titles[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) {
return true;
}
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
}
else {
scrape(doc, url);
}
}/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.theartnewspaper.com/comment/does-venice-still-matter",
"items": [
{
"itemType": "magazineArticle",
"title": "Why is the Venice Biennale still so important?",
"creators": [
{
"firstName": "Jane",
"lastName": "Morris",
"creatorType": "author"
}
],
"date": "May 2019",
"ISSN": "0960-6556",
"abstractNote": "Historical importance, glamour, big spenders—it continues to be an art festival like no other",
"issue": "312",
"language": "en",
"libraryCatalog": "The Art Newspaper",
"publicationTitle": "The Art Newspaper",
"url": "https://www.theartnewspaper.com/comment/does-venice-still-matter",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.theartnewspaper.com/comment",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.theartnewspaper.com/news/what-next-for-notre-dame",
"items": [
{
"itemType": "magazineArticle",
"title": "Notre Dame: experts explain why Macron's five-year restoration deadline is impossible",
"creators": [
{
"firstName": "Hannah",
"lastName": "McGivern",
"creatorType": "author"
},
{
"firstName": "Nancy",
"lastName": "Kenney",
"creatorType": "author"
}
],
"date": "May 2019",
"ISSN": "0960-6556",
"abstractNote": "Complex conservation issues mean it could easily take a decade or more to rebuild the Medieval cathedral",
"issue": "312",
"language": "en",
"libraryCatalog": "The Art Newspaper",
"publicationTitle": "The Art Newspaper",
"shortTitle": "Notre Dame",
"url": "https://www.theartnewspaper.com/news/what-next-for-notre-dame",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.theartnewspaper.com/blog/frieze-new-york-diary-from-tom-sachs-channeling-family-guy-to-an-art-handler-at-centre-stage",
"items": [
{
"itemType": "magazineArticle",
"title": "Frieze New York diary: from Tom Sachs channelling Family Guy to an art handler taking centre stage",
"creators": [],
"date": "2019",
"ISSN": "0960-6556",
"abstractNote": "Plus, Helena Christensen supports MFA graduates and MoMA screens the de-installation of Picasso's Guernica",
"language": "en",
"libraryCatalog": "The Art Newspaper",
"publicationTitle": "The Art Newspaper",
"shortTitle": "Frieze New York diary",
"url": "https://www.theartnewspaper.com/blog/frieze-new-york-diary-from-tom-sachs-channeling-family-guy-to-an-art-handler-at-centre-stage",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.theartnewspaper.com/review/lynn-hershman-leeson-digital-art-pioneer-traces-the-tangled-web-of-virtual-life",
"items": [
{
"itemType": "blogPost",
"title": "Lynn Hershman Leeson, digital art pioneer, traces the tangled web of virtual life",
"creators": [
{
"firstName": "Gabriella",
"lastName": "Angeleti",
"creatorType": "author"
}
],
"date": "2021-08-13",
"abstractNote": "A sprawling retrospective at the New Museum, featuring early online works and recent projects exploring DNA, proves how farsighted her work has been",
"blogTitle": "The Art Newspaper",
"language": "en",
"url": "https://www.theartnewspaper.com/review/lynn-hershman-leeson-digital-art-pioneer-traces-the-tangled-web-of-virtual-life",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Philipp Zumstein, Bao Trinh^https?://www\.thestar\.com//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2017-2021 Philipp Zumstein, Bao Trinh
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc) {
let contentType = attr(doc, 'meta[property="og:type"]', 'content');
switch (contentType) {
case "article":
return "newspaperArticle";
case "website":
default:
if (getSearchResults(doc, true)) {
return "multiple";
}
break;
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('a[class*="-mediacard"]');
for (let row of rows) {
let href = row.href;
let title = text(row, 'h3');
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) return;
ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var trans = Zotero.loadTranslator('web');
trans.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48'); // Embedded Metadata
trans.setDocument(doc);
trans.setHandler('itemDone', function (obj, item) {
if (item.itemType == "newspaperArticle") {
item.publicationTitle = "The Toronto Star";
item.libraryCatalog = "Toronto Star";
item.ISSN = "0319-0781";
}
item.language = "en-CA";
let linkedData = JSON.parse(text(doc, 'script[type="application/ld+json"]'))["@graph"];
if (linkedData.length > 0) {
let articleData = linkedData.find(x => x["@type"] == "ReportageNewsArticle");
if (articleData) {
item.title = articleData.headline;
item.date = articleData.datePublished;
item.abstractNote = articleData.description;
if (articleData.author) {
if (Array.isArray(articleData.author)) {
for (let author of articleData.author) {
if (author.name) item.creators.push(ZU.cleanAuthor(author.name, 'author'));
}
}
else if (articleData.author.name) {
item.creators.push(ZU.cleanAuthor(articleData.author.name, 'author'));
}
}
}
}
for (let tag of doc.querySelectorAll('div.tags a')) {
item.tags.push(tag.textContent);
}
item.tags = item.tags.filter(tag => !tag.includes('_'));
item.complete();
});
trans.getTranslatorObject(function (trans) {
trans.itemType = detectWeb(doc, url);
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.thestar.com/news/world/2010/01/26/france_should_ban_muslim_veils_commission_says.html",
"items": [
{
"itemType": "newspaperArticle",
"title": "France should ban Muslim veils, commission says",
"creators": [],
"date": "2010-01-26",
"ISSN": "0319-0781",
"abstractNote": "France's National Assembly should pass a resolution denouncing full Muslim face veils and then vote the strictest law possible to ban women from wearing them, a parliamentary commission proposed on Tuesday.",
"language": "en-CA",
"libraryCatalog": "Toronto Star",
"publicationTitle": "The Toronto Star",
"section": "World",
"url": "https://www.thestar.com/news/world/2010/01/26/france_should_ban_muslim_veils_commission_says.html",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "France"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.thestar.com/business/tech_news/2011/07/29/hamilton_ontario_should_reconsider_offshore_wind.html",
"items": [
{
"itemType": "newspaperArticle",
"title": "Hamilton: Ontario should reconsider offshore wind",
"creators": [
{
"firstName": "Tyler",
"lastName": "Hamilton",
"creatorType": "author"
}
],
"date": "2011-07-29",
"ISSN": "0319-0781",
"abstractNote": "There’s no reason why Ontario can’t regain the momentum it once had.",
"language": "en-CA",
"libraryCatalog": "Toronto Star",
"publicationTitle": "The Toronto Star",
"section": "Tech News",
"shortTitle": "Hamilton",
"url": "https://www.thestar.com/business/tech_news/2011/07/29/hamilton_ontario_should_reconsider_offshore_wind.html",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Great Lakes"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.thestar.com/news/canada/2012/07/03/bev_oda_resigns_as_international_cooperation_minister_conservative_mp_for_durham.html",
"items": [
{
"itemType": "newspaperArticle",
"title": "Bev Oda resigns as International Co-operation minister, Conservative MP for Durham",
"creators": [
{
"firstName": "Joanna",
"lastName": "Smith",
"creatorType": "author"
},
{
"firstName": "Allan",
"lastName": "Woods",
"creatorType": "author"
}
],
"date": "2012-07-03",
"ISSN": "0319-0781",
"abstractNote": "Bev Oda will leave politics later this month following a series of scandals over her travel expenses and funding decisions.",
"language": "en-CA",
"libraryCatalog": "Toronto Star",
"publicationTitle": "The Toronto Star",
"section": "Canada",
"url": "https://www.thestar.com/news/canada/2012/07/03/bev_oda_resigns_as_international_cooperation_minister_conservative_mp_for_durham.html",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Bev Oda"
},
{
"tag": "Conservatives"
},
{
"tag": "Durham"
},
{
"tag": "Stephen Harper"
},
{
"tag": "orange juice"
},
{
"tag": "savoy hotel"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.thestar.com/search.html?q=labor&contenttype=articles%2Cvideos%2Cslideshows",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.thestar.com/news/canada.html",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.thestar.com/authors.sarrouh_maria.html",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.thestar.com/topic.ottawa.html",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.thestar.com/news/canada/2021/08/12/yukon-reports-nine-new-cases-of-covid-19-territory-has-45-active-infections.html",
"items": [
{
"itemType": "newspaperArticle",
"title": "Yukon reports nine new cases of COVID-19; territory has 45 active infections",
"creators": [],
"date": "2021-08-12",
"ISSN": "0319-0781",
"abstractNote": "WHITEHORSE - Yukon health officials are reporting nine new cases of COVID-19.",
"language": "en-CA",
"libraryCatalog": "Toronto Star",
"publicationTitle": "The Toronto Star",
"section": "Canada",
"url": "https://www.thestar.com/news/canada/2021/08/12/yukon-reports-nine-new-cases-of-covid-19-territory-has-45-active-infections.html",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Canada"
},
{
"tag": "Health"
},
{
"tag": "Whitehorse"
},
{
"tag": "bc"
},
{
"tag": "social"
},
{
"tag": "yukon territory"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Philipp Zumstein^https?://beck[-.]online\.beck\.de//*
***** BEGIN LICENSE BLOCK *****
beck-online Translator, Copyright © 2014 Philipp Zumstein
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
var mappingClassNameToItemType = {
ZAUFSATZ: 'journalArticle',
ZRSPR: 'case', // Rechtssprechung
ZRSPRAKT: 'case',
BECKRS: 'case',
ZENTB: 'journalArticle', // Entscheidungsbesprechung
ZBUCHB: 'journalArticle', // Buchbesprechung
ZSONST: 'journalArticle', // Sonstiges, z.B. Vorwort,
LSK: 'journalArticle', // Artikel in Leitsatzkartei
ZINHALTVERZ: 'multiple', // Inhaltsverzeichnis
KOMMENTAR: 'encyclopediaArticle',
ALTEVERSION: 'encyclopediaArticle',
'ALTEVERSION KOMMENTAR': 'encyclopediaArticle',
HANDBUCH: 'encyclopediaArticle',
BUCH: 'book',
// ? 'FESTSCHRIFT' : 'bookSection'
};
// build a regular expression for author cleanup in authorRemoveTitlesEtc()
var authorTitlesEtc = ['\\/',
'Dr\\.',
'\\b[ji]ur\\.',
'\\bh\\. c\\.',
'Prof\\.',
'Professor(?:in)?',
'\\bwiss\\.',
'Mitarbeiter(?:in)?',
'RA,?',
'PD',
'FAArbR',
'Fachanwalt für Insolvenzrecht',
'Rechtsanw[aä]lt(?:e|in)?',
'Richter am (?:AG|LG|OLG|BGH)',
'\\bzur Fussnote',
'LL\\.\\s?M\\.(?: \\(UCLA\\))?',
'^Von',
"\\*"];
var authorRegEx = new RegExp(authorTitlesEtc.join('|'), 'g');
function detectWeb(doc, _url) {
var dokument = doc.getElementById("dokument");
if (!dokument) {
return getSearchResults(doc, true) ? "multiple" : false;
}
var type = mappingClassNameToItemType[dokument.className.toUpperCase()];
// Z.debug(dokument.className.toUpperCase());
if (type == 'multiple') {
return getSearchResults(doc, true) ? "multiple" : false;
}
return type;
}
function getSearchResults(doc, checkOnly) {
var items = {}, found = false,
rows = ZU.xpath(doc, '//div[@class="inh"]//span[@class="inhdok"]//a | //div[@class="autotoc"]//a | //div[@id="trefferliste"]//a[@class="sndline"]');
for (var i = 0; i < rows.length; i++) {
// rows[i] contains an invisible span with some text, which we have to exclude, e.g.
// <span class="unsichtbar">BKR Jahr 2014 Seite </span>
// Dr. iur. habil. Christian Hofmann: Haftung im Zahlungsverkehr
var title = ZU.trimInternal(ZU.xpathText(rows[i], './text()[1]'));
var link = rows[i].href;
if (!link || !title) continue;
if (checkOnly) return true;
found = true;
items[link] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc), function (items) {
if (!items) {
return;
}
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
}
else {
scrape(doc, url);
}
}
function authorRemoveTitlesEtc(authorStr) {
// example 1: Dr. iur. Carsten Peter
// example 2: Rechtsanwälte Christoph Abbott
// example 3: Professor Dr. Klaus Messer
return ZU.trimInternal(ZU.trimInternal(authorStr).replace(authorRegEx, ""));
}
function scrapeKommentar(doc, url) {
var item = new Zotero.Item("encyclopediaArticle");
item.title = ZU.xpathText(doc, '//div[@class="dk2"]//span[@class="ueber"]');
var authorText = ZU.xpathText(doc, '//div[@class="dk2"]//span[@class="autor"]');
if (authorText) {
var authors = authorText.split("/");
for (let i = 0; i < authors.length; i++) {
item.creators.push(ZU.cleanAuthor(authors[i], 'author', false));
}
}
// e.g. a) Beck'scher Online-Kommentar BGB, Bamberger/Roth
// e.g. b) Langenbucher/Bliesener/Spindler, Bankrechts-Kommentar
// e.g. c) Scherer, Münchener Anwaltshandbuch Erbrecht
var citationFirst = ZU.xpathText(doc, '//div[@class="dk2"]//span[@class="citation"]/text()[following-sibling::br and not(preceding-sibling::br)]', null, ' ');// e.g. Beck'scher Online-Kommentar BGB, Bamberger/Roth
var pos = citationFirst.lastIndexOf(",");
if (pos > 0) {
item.publicationTitle = ZU.trimInternal(citationFirst.substr(0, pos));
var editorString = citationFirst.substr(pos + 1);
if ((!editorString.includes("/") && item.publicationTitle.includes("/"))
|| editorString.toLowerCase().includes("handbuch")
|| editorString.toLowerCase().includes("kommentar")
) {
var temp = item.publicationTitle;
item.publicationTitle = editorString;
editorString = temp;
}
editorString = editorString.replace(/, /g, '');
var editors = editorString.trim().split("/");
for (let i = 0; i < editors.length; i++) {
item.creators.push(ZU.cleanAuthor(editors[i], 'editor', false));
}
}
else {
// e.g. Münchener Kommentar zum BGB
// from https://beck-online.beck.de/?vpath=bibdata%2fkomm%2fmuekobgb_7_band2%2fbgb%2fcont%2fmuekobgb.bgb.p305.htm
item.publicationTitle = ZU.trimInternal(citationFirst);
}
var editionText = ZU.xpathText(doc, '//div[@class="dk2"]//span[@class="citation"]/text()[preceding-sibling::br]');
if (editionText) {
if (editionText.search(/\d+/) > -1) {
item.edition = editionText.match(/\d+/)[0];
}
else {
item.edition = editionText;
}
}
item.date = ZU.xpathText(doc, '//div[@class="dk2"]//span[@class="stand"]');
if (!item.date && editionText.match(/\d{4}$/)) {
item.date = editionText.match(/\d{4}$/)[0];
}
finalize(doc, url, item);
}
// scrape documents that are only in the beck-online "Leitsatz-Kartei", i.e.
// where only information about the article, not the article itself is in beck-online
function scrapeLSK(doc, url) {
var item = new Zotero.Item(mappingClassNameToItemType.LSK);
// description example 1: "Marco Ganzhorn: Ist ein E-Book ein Buch?"
// description example 2: "Michael Fricke/Dr. Martin Gerecke: Informantenschutz und Informantenhaftung"
// description example 3: "Sara Sun Beale: Die Entwicklung des US-amerikanischen Rechts der strafrechtlichen Verantwortlichkeit von Unternehmen"
var description = ZU.xpathText(doc, "//*[@id='dokcontent']/h1");
var descriptionItems = description.split(':');
// authors
var authorsString = descriptionItems[0];
var authors = authorsString.split("/");
for (var index = 0; index < authors.length; ++index) {
var author = authorRemoveTitlesEtc(ZU.trimInternal(authors[index]));
item.creators.push(ZU.cleanAuthor(author, 'author', false));
}
// title
item.title = ZU.trimInternal(descriptionItems[1]);
// src => journalTitle, date and pages
// example 1: "Ganzhorn, CR 2014, 492"
// example 2: "Fricke, Gerecke, AfP 2014, 293"
// example 3 (no date provided): "Beale, ZStrW Bd. 126, 27"
var src = ZU.xpathText(doc, "//div[@class='lsk-fundst']/ul/li");
var m = src.trim().match(/([^,]+?)(\b\d{4})?,\s*(\d+)$/);
if (m) {
item.pages = m[3];
if (m[2]) item.date = m[2];
item.publicationTitle = ZU.trimInternal(m[1]);
item.journalAbbreviation = item.publicationTitle;
// if src is like example 3, then extract the volume
var tmp = item.publicationTitle.match(/(^[A-Za-z]+) Bd\. (\d+)/);
if (tmp) {
item.publicationTitle = tmp[1];
item.journalAbbreviation = item.publicationTitle;
item.volume = tmp[2];
}
}
finalize(doc, url, item);
}
function scrapeBook(doc, _url) {
var item = new Zotero.Item("book");
item.title = text(doc, '#titelseitetext .tptitle');
item.shortTitle = attr(doc, '.bf_selected span[title]', 'title');
var creatorType = "author";
var contributorsAreNext = false;
var contributors;
var spaces = doc.querySelectorAll('#titelseitetext .tpspace');
for (let space of spaces) {
if (space.textContent.includes("Kommentar")) {
item.title += ": Kommentar";
}
if (space.textContent.includes("Herausgegeben")) {
creatorType = "editor";
}
// e.g. "2. Auflage 2018"
if (space.textContent.includes("Auflage")) {
let parts = space.textContent.split("Auflage");
item.edition = parts[0].replace('.', '');
item.date = parts[1];
}
if (contributorsAreNext) {
contributors = space.textContent.split("; ");
contributorsAreNext = false;
}
if (space.textContent.includes("Bearbeitet")) {
contributorsAreNext = true;
}
}
var creators = doc.querySelectorAll('#titelseitetext .tpauthor');
for (let creator of creators) {
creator = authorRemoveTitlesEtc(creator.textContent);
item.creators.push(ZU.cleanAuthor(creator, creatorType));
}
if (contributors) {
for (let contributor of contributors) {
contributor = authorRemoveTitlesEtc(contributor);
item.creators.push(ZU.cleanAuthor(contributor, "contributor"));
}
}
item.ISBN = text(doc, '#titelseitetext .__beck_titelei_impressum_isbn');
item.rights = text(doc, '#titelseitetext .__beck_titelei_impressum_p');
if (item.rights && item.rights.includes("Beck")) {
item.publisher = "Verlag C. H. Beck";
item.place = "München";
}
item.complete();
}
function addNote(originalNote, newNote) {
if (originalNote.length == 0) {
originalNote = "<h2>Additional Metadata</h2>" + newNote;
}
else {
originalNote += newNote;
}
return originalNote;
}
function scrapeCase(doc, url) {
var documentClassName = doc.getElementById("dokument").className.toUpperCase();
var item = new Zotero.Item('case');
var note = "";
// case name
// in some cases, the caseName is in a separate <span>
var caseName = ZU.xpathText(doc, '//div[@class="titel sbin4"]/h1/span');
// if not, we have to extract it from the title
if (!caseName) {
var caseDescription = ZU.xpathText(doc, '//div[contains(@class, "titel")]/h1');
if (caseDescription) {
// take everything after the last slash
var tmp = caseDescription.split(/\s[-–]\s/);
caseName = tmp[tmp.length - 1];
// sometimes the caseName is enclosed in („”)
tmp = caseDescription.match(/\(„([^”)]+)”\)/);
if (tmp) {
caseName = ZU.trimInternal(tmp[1]);
}
if (caseDescription != caseName) {
// save the former title (which is mostly a description of the case by the journal it is published in) in the notes
note = addNote(note, "<h3>Beschreibung</h3><p>" + ZU.trimInternal(caseDescription) + "</p>");
}
}
if (caseName) {
item.shortTitle = caseName.trim().replace(/^\*|\*$/, '').trim();
}
}
var courtLine = ZU.xpath(doc, '//div[contains(@class, "gerzeile")]/p')[0];
var alternativeLine = "";
var alternativeData = [];
if (courtLine) {
item.court = ZU.xpathText(courtLine, './span[@class="gericht"] | ./span[@class="GERICHT"]');
}
else {
alternativeLine = ZU.xpathText(doc, '//span[@class="entscheidung"]');
// example: OLG Köln: Beschluss vom 23.03.2012 - 6 U 67/11
alternativeData = alternativeLine.match(/^([A-Za-zÖöÄäÜüß ]+): \b(.*?Urteil|.*?Urt\.|.*?Beschluss|.*?Beschl\.) vom (\d\d?\.\s*\d\d?\.\s*\d\d\d\d) - ([\w\s/]*)/i);
item.court = ZU.trimInternal(alternativeData[1]);
}
// add jurisdiction to item.extra - in accordance with citeproc-js - for compatability with Zotero-MLZ
item.extra = "";
if (item.court.indexOf('EuG') == 0) {
item.extra += "Jurisdiction: europa.eu";
}
else {
item.extra += "Jurisdiction: de";
}
var decisionDateStr = ZU.xpathText(doc, '(//span[@class="edat"] | //span[@class="EDAT"] | //span[@class="datum"])[1]');
if (decisionDateStr === null) {
decisionDateStr = alternativeData[3];
}
// e.g. 24. 9. 2001 or 24-9-1990
item.dateDecided = decisionDateStr.replace(/(\d\d?)[.-]\s*(\d\d?)[.-]\s*(\d\d\d\d)/, "$3-$2-$1");
item.docketNumber = ZU.xpathText(doc, '(//span[@class="az"])[1]');
if (item.docketNumber === null) {
item.docketNumber = alternativeData[4];
}
item.title = item.court + ", " + decisionDateStr + " - " + item.docketNumber;
if (item.shortTitle) {
item.title += " - " + item.shortTitle;
}
var decisionType;
if (courtLine) {
item.history = ZU.xpathText(courtLine, './span[@class="vorinst"]');
// type of decision. Save this in item.extra according to citeproc-js
decisionType = ZU.xpathText(courtLine, './span[@class="etyp"]');
}
if (!decisionType) {
decisionType = alternativeData[2];
}
if (decisionType) {
if (/Beschluss|Beschl\./i.test(decisionType)) {
item.extra += "\nGenre: Beschl.";
}
else if (/Urteil|(Urt\.)/i.test(decisionType)) {
item.extra += "\nGenre: Urt.";
}
}
// code to scrape the BeckRS source, if available
// example: BeckRS 2013, 06445
// Since BeckRS is not suitable for citing, let's push it into the notes instead
var beckRSline = ZU.xpathText(doc, '//span[@class="fundstelle"]');
if (beckRSline) {
note = addNote(note, "<h3>Fundstelle</h3><p>" + ZU.trimInternal(beckRSline) + "</p>");
/* commented out, because we cannot use it for the CSL-stylesheet at the moment.
* If we find a better solution later, we can reactivate this code and save the
* information properly
*
var beckRSsrc = beckRSline.match(/^([^,]+)\s(\d{4})\s*,\s*(\d+)/);
item.reporter = beckRSsrc[1];
item.date = beckRSsrc[2];
item.pages = beckRSsrc[3];*/
}
var otherCitationsText = ZU.xpathText(doc, '//div[@id="parallelfundstellenNachDokument"]');
if (otherCitationsText) {
note = addNote(note, "<h3>Parallelfundstellen</h3><p>" + otherCitationsText.replace(/\n/g, "").replace(/\s+/g, ' ').trim() + "</p>");
}
var basedOnRegulations = ZU.xpathText(doc, '//div[contains(@class,"normenk")]');
if (basedOnRegulations) {
note = addNote(note, "<h3>Normen</h3><p>" + ZU.trimInternal(basedOnRegulations) + "</p>");
}
item.abstractNote = ZU.xpathText(doc, '//div[@class="abstract" or @class="leitsatz"]');
if (item.abstractNote) {
item.abstractNote = item.abstractNote.replace(/\n\s*\n/g, "\n");
}
// there is additional information if the case is published in a journal
if (documentClassName == 'ZRSPR') {
// short title of publication, publication year
item.reporter = ZU.xpathText(doc, '//div[@id="toccontent"]/ul/li/a[2]');
item.reporterVolume = ZU.xpathText(doc, '//div[@id="toccontent"]/ul/li/ul/li/a[2]');
// long title of publication
var publicationTitle = ZU.xpathText(doc, '//li[@class="breadcurmbelemenfirst"]');
if (publicationTitle) {
note = addNote(note, "<h3>Zeitschrift Titel</h3><p>" + ZU.trimInternal(publicationTitle) + "</p>");
}
// e.g. ArbrAktuell 2014, 150
var shortCitation = ZU.xpathText(doc, '//div[@class="dk2"]//span[@class="citation"]');
var pagesStart = ZU.trimInternal(shortCitation.substr(shortCitation.lastIndexOf(",") + 1));
var pagesEnd = ZU.xpathText(doc, '(//span[@class="pg"])[last()]');
if (pagesEnd) {
item.pages = pagesStart + "-" + pagesEnd;
}
else {
item.pages = pagesStart;
}
}
if (note.length != 0) {
item.notes.push({ note: note });
}
finalize(doc, url, item);
}
function scrape(doc, url) {
var dokument = doc.getElementById("dokument");
if (!dokument) {
throw new Error("Could not find element with ID 'dokument'. "
+ "Probably attempting to scrape multiples with no access.");
}
var documentClassName = dokument.className.toUpperCase();
// use different scraping function for documents in LSK
if (documentClassName == 'LSK') {
scrapeLSK(doc, url);
return;
}
if (documentClassName == 'BUCH') {
scrapeBook(doc, url);
return;
}
if (mappingClassNameToItemType[documentClassName] == 'case') {
scrapeCase(doc, url);
return;
}
if (mappingClassNameToItemType[documentClassName] == 'encyclopediaArticle') {
scrapeKommentar(doc, url);
return;
}
var item;
if (mappingClassNameToItemType[documentClassName]) {
item = new Zotero.Item(mappingClassNameToItemType[documentClassName]);
}
var titleNode = ZU.xpath(doc, '//div[@class="titel"]')[0]
|| ZU.xpath(doc, '//div[@class="dk2"]//span[@class="titel"]')[0];
item.title = ZU.trimInternal(titleNode.textContent);
// in some cases (e.g. NJW 2007, 3313) the title contains an asterisk with a footnote that is imported into the title
// therefore, this part should be removed from the title
var indexOfAdditionalText = item.title.indexOf("zur Fussnote");
if (indexOfAdditionalText != -1) {
item.title = item.title.substr(0, indexOfAdditionalText);
}
var authorNode = ZU.xpath(doc, '//div[@class="autor"]');
for (var i = 0; i < authorNode.length; i++) {
// normally several authors are under the same authorNode
// and they occur in pairs with first and last names
var authorFirstNames = ZU.xpath(authorNode[i], './/span[@class="vname"]');
var authorLastNames = ZU.xpath(authorNode[i], './/span[@class="nname"]');
for (let j = 0; j < authorFirstNames.length; j++) {
item.creators.push({
lastName: authorLastNames[j].textContent,
firstName: authorFirstNames[j].textContent,
creatorType: "author"
});
}
}
if (item.creators.length == 0) {
authorNode = ZU.xpath(doc, '//div[@class="autor"]/p | //p[@class="authorline"]/text() | //div[@class="authorline"]/p/text()');
for (let j = 0; j < authorNode.length; j++) {
// first we delete some prefixes
var authorString = authorRemoveTitlesEtc(authorNode[j].textContent);
// authors can be seperated by "und" and "," if there are 3 or more authors
// a comma can also mark the beginning of suffixes, which we want to delete
// therefore we have to distinguish these two cases in the following
var posUnd = authorString.indexOf("und");
var posComma = authorString.indexOf(",");
if (posUnd > posComma) {
posComma = authorString.indexOf(",", posUnd);
}
if (posComma > 0) {
authorString = authorString.substr(0, posComma);
}
var authorArray = authorString.split(/und|,/);
for (var k = 0; k < authorArray.length; k++) {
authorString = ZU.trimInternal(authorRemoveTitlesEtc(authorArray[k]));
item.creators.push(ZU.cleanAuthor(authorString, "author"));
}
}
}
item.publicationTitle = ZU.xpathText(doc, '//li[@class="breadcurmbelemenfirst"]');
item.journalAbbreviation = ZU.xpathText(doc, '//div[@id="toccontent"]/ul/li/a[2]');
item.date = ZU.xpathText(doc, '//div[@id="toccontent"]/ul/li/ul/li/a[2]');
// e.g. Heft 6 (Seite 141-162)
var issueText = ZU.xpathText(doc, '//div[@id="toccontent"]/ul/li/ul/li/ul/li/a[2]');
if (issueText) {
item.issue = issueText.replace(/\([^)]*\)/, "");
if (item.issue.search(/\d+/) > -1) {
item.issue = item.issue.match(/\d+/)[0];
}
}
// e.g. ArbrAktuell 2014, 150
var shortCitation = ZU.xpathText(doc, '//div[@class="dk2"]//span[@class="citation"]');
if (shortCitation) {
var pagesStart = ZU.trimInternal(shortCitation.substr(shortCitation.lastIndexOf(",") + 1));
}
var pagesEnd = ZU.xpathText(doc, '(//span[@class="pg"])[last()]');
if (pagesEnd) {
item.pages = pagesStart + "-" + pagesEnd;
}
else {
item.pages = pagesStart;
}
item.abstractNote = ZU.xpathText(doc, '//div[@class="abstract"]') || ZU.xpathText(doc, '//div[@class="leitsatz"]');
if (item.abstractNote) {
item.abstractNote = item.abstractNote.replace(/\n\s*\n/g, "\n");
}
if (documentClassName == "ZBUCHB") {
item.extra = ZU.xpathText(doc, '//div[@class="biblio"]');
}
finalize(doc, url, item);
}
function finalize(doc, url, item) {
item.attachments = [{
title: "Snapshot",
document: doc
}];
var perma = ZU.xpathText(doc, '//div[@class="doc-link"]/a/@href');
if (perma) {
// not clear that this case ever comes up - permalinks appear always
// to be relative now. but just in case it's absolute, we want to strip
// the domain off and add the known beck-online domain back manually to
// avoid dot-dash proxy-to-proper confusion
// (beck-online-beck-de.proxy.university.edu being converted to
// beck.online.beck.de instead of beck-online.beck.de)
let pathRe = /^https?:\/\/[^/]+(\/.*)$/;
if (pathRe.test(perma)) {
perma = perma.match(pathRe)[1];
}
if (perma.startsWith('/')) {
perma = 'https://beck-online.beck.de' + perma;
}
item.url = perma;
}
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://beck-online.beck.de/default.aspx?vpath=bibdata%2Fzeits%2FDNOTZ-SONDERH%2F2012%2Fcont%2FDNOTZ-SONDERH.2012.88.1.htm",
"items": [
{
"itemType": "journalArticle",
"title": "Best practice – Grundstrukturen des kontinentaleuropäischen Gesellschaftsrechts",
"creators": [
{
"lastName": "Roth",
"firstName": "Günter H.",
"creatorType": "author"
}
],
"date": "2012",
"issue": "1",
"journalAbbreviation": "DNotZ-Sonderheft",
"libraryCatalog": "beck-online",
"pages": "88-95",
"publicationTitle": "Sonderheft der Deutschen Notar-Zeitschrift",
"url": "https://beck-online.beck.de/Bcid/Y-300-Z-DNOTZ-SONDERH-B-2012-S-88-N-1",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://beck-online.beck.de/?vpath=bibdata%2fzeits%2fbkr%2f2001%2fcont%2fbkr.2001.99.1.htm",
"items": [
{
"itemType": "case",
"caseName": "LG Augsburg, 24. 9. 2001 - 3 O 4995/00 - Infomatec",
"creators": [],
"dateDecided": "2001-9-24",
"abstractNote": "Leitsätze der Redaktion:\n 1. Ad-hoc-Mitteilungen richten sich nicht nur an ein bilanz- und fachkundiges Publikum, sondern an alle tatsächlichen oder potenziellen Anleger und Aktionäre.\n 2. \n § BOERSG § 88 Abs. BOERSG § 88 Absatz 1 Nr. 1 BörsG dient neben dem Schutz der Allgemeinheit gerade auch dazu, das Vermögen des einzelnen Kapitalanlegers vor möglichen Schäden durch eine unredliche Beeinflussung der Preisbildung an Börsen und Märkten zu schützen.",
"court": "LG Augsburg",
"docketNumber": "3 O 4995/00",
"extra": "Jurisdiction: de\nGenre: Urt.",
"firstPage": "99-101",
"reporter": "BKR",
"reporterVolume": "2001",
"shortTitle": "Infomatec",
"url": "https://beck-online.beck.de/Bcid/Y-300-Z-BKR-B-2001-S-99-N-1",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [],
"notes": [
{
"note": "<h2>Additional Metadata</h2><h3>Beschreibung</h3><p>Schadensersatz wegen fehlerhafter Ad-hoc-Mitteilungen („Infomatec”)</p><h3>Parallelfundstellen</h3><p>Parallelfundstellen: Entscheidungen:NJW-RR 2001, 1705 ◊NJOZ 2001, 1878 ◊NZG 2002, 429 ◊ZIP 2001, 1881 (m. Anm.) ◊WM 2001 Heft 41, 1944 ◊BeckRS 9998, 3964 ◊NJW-RR 2003, 216 (Ls.) ◊FHZivR 48 Nr. 6053 (Ls.) ◊FHZivR 47 Nr. 2816 (Ls.) ◊FHZivR 47 Nr. 6449 (Ls.) ◊FHZivR 48 Nr. 2514 (Ls.) ◊LSK 2001, 520032 (Ls.) Entscheidungsbesprechungen:WuB I G 7. - 8.01 ◊EWiR 2001, 1049 (Schwark, Eberhard) Weitere Fundstellen:DB 2001, 2334 ◊WuB 2001, 1269 ◊WuB 2001, 1269 (m. Anm. Professor Dr. Frank A. Schäfer)</p><h3>Normen</h3><p>§ WPHG § 15 WpHG; § BOERSG § 88 BörsG; §§ BGB § 823, BGB § 826 BGB</p><h3>Zeitschrift Titel</h3><p>Zeitschrift für Bank- und Kapitalmarktrecht</p>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://beck-online.beck.de/?vpath=bibdata%2fzeits%2fnjw%2f2014%2fcont%2fnjw.2014.898.1.htm",
"items": [
{
"itemType": "journalArticle",
"title": "Die Entwicklung des Energierechts im Jahr 2013",
"creators": [
{
"firstName": "Boris",
"lastName": "Scholtka",
"creatorType": "author"
},
{
"firstName": "Antje",
"lastName": "Baumbach",
"creatorType": "author"
},
{
"firstName": "Marike",
"lastName": "Pietrowicz",
"creatorType": "author"
}
],
"date": "2014",
"abstractNote": "Der Bericht knüpft an die bisher in dieser Reihe erschienenen Beiträge zur Entwicklung des Energierechts (zuletzt NJW2013, NJW Jahr 2013 Seite 2724) an und zeigt die Schwerpunkte energierechtlicher Entwicklungen in Gesetzgebung und Rechtsanwendung im Jahr 2013 auf.",
"issue": "13",
"journalAbbreviation": "NJW",
"libraryCatalog": "beck-online",
"pages": "898-903",
"publicationTitle": "Neue Juristische Wochenschrift",
"url": "https://beck-online.beck.de/Bcid/Y-300-Z-NJW-B-2014-S-898-N-1",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://beck-online.beck.de/?vpath=bibdata%2fzeits%2fGRUR%2f2003%2fcont%2fGRUR%2e2003%2eH09%2eNAMEINHALTSVERZEICHNIS%2ehtm",
"items": "multiple"
},
{
"type": "web",
"url": "https://beck-online.beck.de/?vpath=bibdata%2fzeits%2fnjw%2f2014%2fcont%2fnjw.2014.3329.1.htm",
"items": [
{
"itemType": "journalArticle",
"title": "Zumutbarkeit von Beweiserhebungen und Wohnungsbetroffenheit im Zivilprozess",
"creators": [
{
"firstName": "Christoph",
"lastName": "Basler",
"creatorType": "author"
},
{
"firstName": "Klaus",
"lastName": "Meßerschmidt",
"creatorType": "author"
}
],
"date": "2014",
"abstractNote": "Die Durchführung von Beweisverfahren ist mit Duldungs- und Mitwirkungspflichten von Beweisgegnern und Dritten verbunden, die nur über begrenzte Weigerungsrechte verfügen. Einen Sonderfall bildet der bei „Wohnungsbetroffenheit“ eingreifende letzte Halbsatz des § ZPO § 144 ZPO § 144 Absatz I 3 ZPO. Dessen Voraussetzungen und Reichweite bedürfen der Klärung. Ferner gibt die neuere Rechtsprechung Anlass zu untersuchen, inwieweit auch der Eigentumsschutz einer Beweisaufnahme entgegenstehen kann.",
"issue": "46",
"journalAbbreviation": "NJW",
"libraryCatalog": "beck-online",
"pages": "3329-3334",
"publicationTitle": "Neue Juristische Wochenschrift",
"url": "https://beck-online.beck.de/Bcid/Y-300-Z-NJW-B-2014-S-3329-N-1",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://beck-online.beck.de/Default.aspx?vpath=bibdata%2fzeits%2fGRUR%2f2014%2fcont%2fGRUR.2014.431.1.htm",
"items": [
{
"itemType": "journalArticle",
"title": "Kennzeichen- und lauterkeitsrechtlicher Schutz für Apps",
"creators": [
{
"firstName": "Stephanie",
"lastName": "Zöllner",
"creatorType": "author"
},
{
"firstName": "Philipp",
"lastName": "Lehmann",
"creatorType": "author"
}
],
"date": "2014",
"abstractNote": "Auf Grund der rasanten Entwicklung und der zunehmenden wirtschaftlichen Bedeutung von Apps kommen in diesem Zusammenhang immer neue rechtliche Probleme auf. Von den urheberrechtlichen Fragen bei der Entwicklung, über die vertragsrechtlichen Probleme beim Verkauf, bis hin zu Fragen der gewerblichen Schutzrechte haben sich Apps zu einem eigenen rechtlichen Themenfeld entwickelt. Insbesondere im Bereich des Kennzeichen- und Lauterkeitsrechts werden Rechtsprechung und Praxis vor neue Herausforderungen gestellt. Dieser Beitrag erörtert anhand von zwei Beispielsfällen die Frage nach den kennzeichen- und lauterkeitsrechtlichen Schutzmöglichkeiten von Apps, insbesondere der Übertragbarkeit bereits etablierter Grundsätze. Gleichzeitig werden die diesbezüglichen Besonderheiten herausgearbeitet.",
"issue": "5",
"journalAbbreviation": "GRUR",
"libraryCatalog": "beck-online",
"pages": "431-436",
"publicationTitle": "Gewerblicher Rechtsschutz und Urheberrecht",
"url": "https://beck-online.beck.de/Bcid/Y-300-Z-GRUR-B-2014-S-431-N-1",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://beck-online.beck.de/?vpath=bibdata%2fzeits%2fdstr%2f2014%2fcont%2fdstr.2014.2261.1.htm",
"items": [
{
"itemType": "journalArticle",
"title": "Der Regierungsentwurf eines Gesetzes zur Änderung der Abgaben- ordnung und des Einführungsgesetzes zur Abgabenordnung",
"creators": [
{
"firstName": "Wolfgang",
"lastName": "Joecks",
"creatorType": "author"
}
],
"date": "2014",
"abstractNote": "Nachdem die Selbstanzeige nach § AO § 371 AO bereits im Frühjahr 2011 nur knapp einer Abschaffung entging und (lediglich) verschärft wurde, plant der Gesetzgeber nun eine weitere Einschränkung. Dabei unterscheiden sich der Referentenentwurf vom 27.8.2014 und der Regierungsentwurf vom 26.9.2014 scheinbar kaum; Details legen aber die Vermutung nahe, dass dort noch einmal jemand „gebremst“ hat. zur Fussnote 1",
"issue": "46",
"journalAbbreviation": "DStR",
"libraryCatalog": "beck-online",
"pages": "2261-2267",
"publicationTitle": "Deutsches Steuerrecht",
"url": "https://beck-online.beck.de/Bcid/Y-300-Z-DSTR-B-2014-S-2261-N-1",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://beck-online.beck.de/default.aspx?vpath=bibdata%2Fzeits%2FDNOTZ-SONDERH%2F2012%2Fcont%2FDNOTZ-SONDERH.2012.88.1.htm",
"items": [
{
"itemType": "journalArticle",
"title": "Best practice – Grundstrukturen des kontinentaleuropäischen Gesellschaftsrechts",
"creators": [
{
"lastName": "Roth",
"firstName": "Günter H.",
"creatorType": "author"
}
],
"date": "2012",
"issue": "1",
"journalAbbreviation": "DNotZ-Sonderheft",
"libraryCatalog": "beck-online",
"pages": "88-95",
"publicationTitle": "Sonderheft der Deutschen Notar-Zeitschrift",
"url": "https://beck-online.beck.de/Bcid/Y-300-Z-DNOTZ-SONDERH-B-2012-S-88-N-1",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://beck-online.beck.de/?vpath=bibdata%2fzeits%2fnjw%2f2014%2fcont%2fnjw.2014.3329.1.htm",
"items": [
{
"itemType": "journalArticle",
"title": "Zumutbarkeit von Beweiserhebungen und Wohnungsbetroffenheit im Zivilprozess",
"creators": [
{
"firstName": "Christoph",
"lastName": "Basler",
"creatorType": "author"
},
{
"firstName": "Klaus",
"lastName": "Meßerschmidt",
"creatorType": "author"
}
],
"date": "2014",
"abstractNote": "Die Durchführung von Beweisverfahren ist mit Duldungs- und Mitwirkungspflichten von Beweisgegnern und Dritten verbunden, die nur über begrenzte Weigerungsrechte verfügen. Einen Sonderfall bildet der bei „Wohnungsbetroffenheit“ eingreifende letzte Halbsatz des § ZPO § 144 ZPO § 144 Absatz I 3 ZPO. Dessen Voraussetzungen und Reichweite bedürfen der Klärung. Ferner gibt die neuere Rechtsprechung Anlass zu untersuchen, inwieweit auch der Eigentumsschutz einer Beweisaufnahme entgegenstehen kann.",
"issue": "46",
"journalAbbreviation": "NJW",
"libraryCatalog": "beck-online",
"pages": "3329-3334",
"publicationTitle": "Neue Juristische Wochenschrift",
"url": "https://beck-online.beck.de/Bcid/Y-300-Z-NJW-B-2014-S-3329-N-1",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://beck-online.beck.de/default.aspx?vpath=bibdata/ents/lsk/2014/3500/lsk.2014.35.0537.htm&pos=1",
"items": [
{
"itemType": "journalArticle",
"title": "Zum Folgenbeseitigungsanspruch bei Buchveröffentlichungen - Der Rückrufanspruch",
"creators": [
{
"firstName": "Daniel",
"lastName": "Jipp",
"creatorType": "author"
}
],
"date": "2014",
"journalAbbreviation": "AfP",
"libraryCatalog": "beck-online",
"pages": "300",
"publicationTitle": "AfP",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://beck-online.beck.de/?vpath=bibdata%2fzeits%2fnjw%2f2014%2fcont%2fnjw.2014.898.1.htm",
"items": [
{
"itemType": "journalArticle",
"title": "Die Entwicklung des Energierechts im Jahr 2013",
"creators": [
{
"firstName": "Boris",
"lastName": "Scholtka",
"creatorType": "author"
},
{
"firstName": "Antje",
"lastName": "Baumbach",
"creatorType": "author"
},
{
"firstName": "Marike",
"lastName": "Pietrowicz",
"creatorType": "author"
}
],
"date": "2014",
"abstractNote": "Der Bericht knüpft an die bisher in dieser Reihe erschienenen Beiträge zur Entwicklung des Energierechts (zuletzt NJW2013, NJW Jahr 2013 Seite 2724) an und zeigt die Schwerpunkte energierechtlicher Entwicklungen in Gesetzgebung und Rechtsanwendung im Jahr 2013 auf.",
"issue": "13",
"journalAbbreviation": "NJW",
"libraryCatalog": "beck-online",
"pages": "898-903",
"publicationTitle": "Neue Juristische Wochenschrift",
"url": "https://beck-online.beck.de/Bcid/Y-300-Z-NJW-B-2014-S-898-N-1",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://beck-online.beck.de/Dokument?vpath=bibdata%2Fents%2Fbeckrs%2F2012%2Fcont%2Fbeckrs.2012.09546.htm&anchor=Y-300-Z-BECKRS-B-2012-N-09546",
"items": [
{
"itemType": "case",
"caseName": "OLG Köln, 23.03.2012 - 6 U 67/11",
"creators": [],
"dateDecided": "2012-03-23",
"abstractNote": "Amtliche Leitsätze:\n\t\t\t\t\t1. Die Eltern eines 13-jährigen Sohnes, dem sie einen PC mit Internetanschluss überlassen haben, können ihrer aus § BGB § 832 BGB § 832 Absatz I BGB resultierenden Aufsichtspflicht zur Verhinderung der Teilnahme des Kindes an illegalen sog. Tauschbörsen durch die Installation einer Firewall und eines Passwortes sowie monatliche stichprobenmäßige Kontrollen genügen. Diese Kontrollen sind aber nicht hinreichend durchgeführt worden, wenn die Eltern über Monate das trotz der installierten Schutzmaßnahmen erfolgte Herunterladen zweier Filesharingprogramme nicht entdecken, für die Ikons auf dem Desktop sichtbar waren.\n\t\t\t\t\t2. Die Höhe des dem Rechteinhaber durch die Teilnahme an einer sog. Tauschbörse entstandenen, im Wege der Lizenzanalogie berechneten Schadens ist mangels besser geeigneter Grundlagen an dem GEMA Tarif zu orientieren, der dem zu beurteilenden Sachverhalt am nächsten kommt. Das ist nicht der Tarif VR W 1, sondern der (frühere) Tarif VR-OD 5. Es sind weiter alle in Betracht kommenden Umstände wie die Länge des Zeitraumes, in dem der Titel in die \"Tauschbörse\" eingestellt war, und die Höhe des Lizenzbetrages zu berücksichtigen, der für vergleichbare Titel nach Lizenzierung gezahlt wird. Sind gängige Titel über Monate durch die Tauschbörse öffentlich zugänglichgemacht worden, so kann ein Betrag von 200 € für jeden Titel geschuldet sein.",
"court": "OLG Köln",
"docketNumber": "6 U 67/11",
"extra": "Jurisdiction: de\nGenre: Urt.",
"url": "https://beck-online.beck.de/Bcid/Y-300-Z-BECKRS-B-2012-N-09546",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [],
"notes": [
{
"note": "<h2>Additional Metadata</h2><h3>Fundstelle</h3><p>BeckRS 2012, 9546</p><h3>Parallelfundstellen</h3><p>Parallelfundstellen: Entscheidungen:MMR 2012, 387 (m. Anm. Hoffmann) ◊NJOZ 2013, 365 ◊ZUM 2012, 697 ◊LSK 2012, 250148 (Ls.) Entscheidungsbesprechung:GRUR-Prax 2012, 238 (Dr. Christian Dietrich) Weitere Fundstellen:CR 2012, 397 ◊K & R 2012, 437 (Ls.) ◊MD 2012, 621 ◊WRP 2012, 1007</p><h3>Normen</h3><p>Normenketten: BGB § BGB § 683 S. 1, § 670, § 832 Abs. 1 UrhG § URHG § 19a, § 97 Abs. 2</p>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://beck-online.beck.de/default.aspx?vpath=bibdata%2Fzeits%2Fgrur%2F2014%2Fcont%2Fgrur.2014.468.1.htm",
"items": [
{
"itemType": "case",
"caseName": "EuGH, 27.3.2014 - C-314/12 - UPC Telekabel/Constantin Film ua [kino.to]",
"creators": [],
"dateDecided": "2014-3-27",
"court": "EuGH",
"docketNumber": "C-314/12",
"extra": "Jurisdiction: europa.eu\nGenre: Urt.",
"firstPage": "468-473",
"reporter": "GRUR",
"reporterVolume": "2014",
"shortTitle": "UPC Telekabel/Constantin Film ua [kino.to]",
"url": "https://beck-online.beck.de/Bcid/Y-300-Z-GRUR-B-2014-S-468-N-1",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [],
"notes": [
{
"note": "<h2>Additional Metadata</h2><h3>Beschreibung</h3><p>EU-konforme unbestimmte Sperrverfügung gegen Internetprovider - UPC Telekabel/Constantin Film ua [kino.to]</p><h3>Parallelfundstellen</h3><p>Parallelfundstellen: Entscheidungen:MMR 2014, 397 (m. Anm. Roth) ◊GRUR Int. 2014, 469 ◊NJW 2014, 1577 ◊EuZW 2014, 388 (m. Anm. Karl) ◊ZUM 2014, 494 ◊BeckRS 2014, 80615 ◊BeckEuRS 2014, 417030 ◊LSK 2014, 160153 (Ls.) Entscheidungsbesprechung:GRUR-Prax 2014, 157 (Dr. Stefan Maaßen) Weitere Fundstellen:CELEX 62012CJ0314 ◊EuGRZ 2014, 301 ◊K & R 2014, 329 (m. Anm. Simon Assion) ◊MittdtPatA 2014, 335 (Ls.) ◊WRP 2014, 540</p><h3>Normen</h3><p>AEUV Art. AEUV Artikel 267; Richtlinie 2001/29/EG Art. EWG_RL_2001_29 Artikel 3 EWG_RL_2001_29 Artikel 3 Absatz II, EWG_RL_2001_29 Artikel 8 EWG_RL_2001_29 Artikel 8 Absatz III</p><h3>Zeitschrift Titel</h3><p>Gewerblicher Rechtsschutz und Urheberrecht</p>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://beck-online.beck.de/?vpath=bibdata/zeits/njw/1991/cont/njw.1991.1471.1.htm&pos=4&lasthit=true",
"items": [
{
"itemType": "case",
"caseName": "BVerfG, 27-11-1990 - 1 BvR 402/87 - Indizierung eines pornographischen Romans (\"Josefine Mutzenbacher\")\n zur Fussnote †",
"creators": [],
"dateDecided": "1990-11-27",
"abstractNote": "1. Ein pornographischer Roman kann Kunst i. S. von Art. GG Artikel 5 GG Artikel 5 Absatz III 1 GG sein.\n 2. Die Indizierung einer als Kunstwerk anzusehenden Schrift setzt auch dann eine Abwägung mit der Kunstfreiheit voraus, wenn die Schrift offensichtlich geeignet ist, Kinder oder Jugendliche sittlich schwer zu gefährden (§ 6 Nr. 3 des Gesetzes über die Verbreitung jugendgefährdender Schriften - GjS).\n 3. Die Vorschrift des § 9 II GjS ist verfassungsrechtlich unzulänglich, weil die Auswahl der Beisitzer für die Bundesprüfstelle nicht ausreichend geregelt ist.",
"court": "BVerfG",
"docketNumber": "1 BvR 402/87",
"extra": "Jurisdiction: de",
"firstPage": "1471-1475",
"reporter": "NJW",
"reporterVolume": "1991",
"shortTitle": "Indizierung eines pornographischen Romans (\"Josefine Mutzenbacher\")\n zur Fussnote †",
"url": "https://beck-online.beck.de/Bcid/Y-300-Z-NJW-B-1991-S-1471-N-1",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [],
"notes": [
{
"note": "<h2>Additional Metadata</h2><h3>Parallelfundstellen</h3><p>Parallelfundstellen: Entscheidungen:NStZ 1991, 188 ◊BVerfGE Band 83, 130 ◊BeckRS 9998, 165476 ◊NVwZ 1991, 663 (Ls.) ◊LSK 1991, 230089 (Ls.) ◊FHOeffR 42 Nr. 13711 (Ls.) ◊FHOeffR 42 Nr. 6327 (Ls.) ◊FHOeffR 42 Nr. 7072 (Ls.) ◊FHOeffR 42 Nr. 13713 (Ls.) Weitere Fundstellen:AfP 1991, 379 ◊AfP 1991, 384 ◊Bespr.: , JZ 1991, 470 ◊BVerfGE 83, 130 ◊DVBl 1991, 261 ◊EuGRZ 1991, 33 ◊JZ 1991, 465 ◊ZUM 1991, 310</p><h3>Normen</h3><p>GG Art. GG Artikel 1 GG Artikel 1 Absatz I, GG Artikel 2 GG Artikel 2 Absatz I, GG Artikel 5 GG Artikel 5 Absatz III 1, GG Artikel 6 GG Artikel 6 Absatz II, GG Artikel 19 GG Artikel 19 Absatz I 2, GG Artikel 19 Absatz IV, GG Artikel 20 GG Artikel 20 Absatz III, GG Artikel 103 GG Artikel 103 Absatz I; GjS §§ 1, 6, 9 II</p><h3>Zeitschrift Titel</h3><p>Neue Juristische Wochenschrift</p>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://beck-online.beck.de/?vpath=bibdata/komm/beckok_38_BandBGB/BGB/cont/beckok.BGB.p489.htm",
"items": [
{
"itemType": "encyclopediaArticle",
"title": "BGB § 489 Ordentliches Kündigungsrecht des Darlehensnehmers",
"creators": [
{
"firstName": "",
"lastName": "Rohe",
"creatorType": "author"
},
{
"firstName": "",
"lastName": "Bamberger",
"creatorType": "editor"
},
{
"firstName": "",
"lastName": "Roth",
"creatorType": "editor"
}
],
"date": "01.02.2016",
"edition": "38",
"encyclopediaTitle": "Beck'scher Online-Kommentar BGB",
"libraryCatalog": "beck-online",
"url": "https://beck-online.beck.de/Bcid/Y-400-W-beckok-G-BGB-P-489",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://beck-online.beck.de/?vpath=bibdata%2fkomm%2fdaulankobgb_2%2fbgb%2fcont%2fdaulankobgb.bgb.p489.htm",
"items": [
{
"itemType": "encyclopediaArticle",
"title": "BGB § 489 Ordentliches Kündigungsrecht des Darlehensnehmers",
"creators": [
{
"firstName": "Gerd",
"lastName": "Krämer",
"creatorType": "author"
},
{
"firstName": "Miriam",
"lastName": "Müller",
"creatorType": "author"
},
{
"firstName": "",
"lastName": "Dauner-Lieb",
"creatorType": "editor"
},
{
"firstName": "",
"lastName": "Langen",
"creatorType": "editor"
}
],
"date": "2012",
"edition": "2",
"encyclopediaTitle": "BGB | Schuldrecht",
"libraryCatalog": "beck-online",
"url": "https://beck-online.beck.de/Bcid/Y-400-W-DauLanKoBGB-G-BGB-P-489",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://beck-online.beck.de/Dokument?vpath=bibdata%2Fkomm%2Fscheanwhdb_5%2Fcont%2Fscheanwhdb.glsect19.glii.gl2.gla.htm&pos=2&hlwords=on",
"items": [
{
"itemType": "encyclopediaArticle",
"title": "§ 19 Testamentsvollstreckung",
"creators": [
{
"firstName": "",
"lastName": "Lorz",
"creatorType": "author"
},
{
"firstName": "",
"lastName": "Scherer",
"creatorType": "editor"
}
],
"date": "2018",
"edition": "5",
"encyclopediaTitle": "Münchener Anwaltshandbuch Erbrecht",
"libraryCatalog": "beck-online",
"url": "https://beck-online.beck.de/Bcid/Y-400-W-ScheAnwHdb-GL-sect19-II-2-a",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://beck-online.beck.de/?vpath=bibdata/komm/KueBuchnerKoDSGVO_2/cont/KueBuchnerKoDSGVO.htm",
"items": [
{
"itemType": "book",
"title": "Datenschutz-Grundverordnung/BDSG: Kommentar",
"creators": [
{
"firstName": "Jürgen",
"lastName": "Kühling",
"creatorType": "editor"
},
{
"firstName": "Benedikt",
"lastName": "Buchner",
"creatorType": "editor"
},
{
"firstName": "Matthias",
"lastName": "Bäcker",
"creatorType": "contributor"
},
{
"firstName": "Matthias",
"lastName": "Bergt",
"creatorType": "contributor"
},
{
"firstName": "Franziska",
"lastName": "Boehm",
"creatorType": "contributor"
},
{
"firstName": "Benedikt",
"lastName": "Buchner",
"creatorType": "contributor"
},
{
"firstName": "Johannes",
"lastName": "Caspar",
"creatorType": "contributor"
},
{
"firstName": "Alexander",
"lastName": "Dix",
"creatorType": "contributor"
},
{
"firstName": "Sebastian",
"lastName": "Golla",
"creatorType": "contributor"
},
{
"firstName": "Jürgen",
"lastName": "Hartung",
"creatorType": "contributor"
},
{
"firstName": "Tobias",
"lastName": "Herbst",
"creatorType": "contributor"
},
{
"firstName": "Silke",
"lastName": "Jandt",
"creatorType": "contributor"
},
{
"firstName": "Manuel",
"lastName": "Klar",
"creatorType": "contributor"
},
{
"firstName": "Jürgen",
"lastName": "Kühling",
"creatorType": "contributor"
},
{
"firstName": "Frank",
"lastName": "Maschmann",
"creatorType": "contributor"
},
{
"firstName": "Thomas",
"lastName": "Petri",
"creatorType": "contributor"
},
{
"firstName": "Johannes",
"lastName": "Raab",
"creatorType": "contributor"
},
{
"firstName": "Florian",
"lastName": "Sackmann",
"creatorType": "contributor"
},
{
"firstName": "Christian",
"lastName": "Schröder",
"creatorType": "contributor"
},
{
"firstName": "Simon",
"lastName": "Schwichtenberg",
"creatorType": "contributor"
},
{
"firstName": "Marie-Theres",
"lastName": "Tinnefeld",
"creatorType": "contributor"
},
{
"firstName": "Thilo",
"lastName": "Weichert",
"creatorType": "contributor"
},
{
"firstName": "Ri Mirko",
"lastName": "Wieczorek",
"creatorType": "contributor"
}
],
"date": "2018",
"ISBN": "9783406719325",
"edition": "2",
"libraryCatalog": "beck-online",
"place": "München",
"publisher": "Verlag C. H. Beck",
"rights": "© 2018 Verlag C. H. Beck oHG",
"shortTitle": "Kühling/Buchner, DS-GVO BDSG",
"url": "https://beck-online.beck.de/Bcid/Y-400-W-KueBuchnerKoDSGVO",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Abe Jellinek^https://www\.rand\.org/(pubs/|search\.html)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/pubs/external_publications/')) {
return "journalArticle";
}
else if (url.includes('/pubs/')) {
return "report";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('main h3.title a[href*="/pubs/"]');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
item.attachments = item.attachments.filter(a => a.title != 'Snapshot');
if (item.itemType == 'journalArticle') {
let citation = text(doc, '.citation');
if (!item.publicationTitle) {
item.publicationTitle = (citation.match(/Published in: ([^,]+)/) || [])[1];
}
if (!item.volume) {
item.volume = (citation.match(/Volume ([0-9]+)/) || [])[1];
}
if (!item.issue) {
item.issue = (citation.match(/Issue ([0-9]+)/) || [])[1];
}
if (!item.pages) {
item.pages = (citation.match(/pages ([0-9\-–]+)/) || [])[1];
}
}
delete item.reportType;
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.itemType = detectWeb(doc, url);
if (trans.itemType == 'multiple') return;
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.rand.org/pubs/conf_proceedings/CFA1299-1.html",
"items": [
{
"itemType": "report",
"title": "COVID-19 and the Courts: Lessons from the Pandemic",
"creators": [
{
"firstName": "Nicholas M.",
"lastName": "Pace",
"creatorType": "author"
},
{
"firstName": "Bethany",
"lastName": "Saunders-Medina",
"creatorType": "author"
},
{
"firstName": "Jamie",
"lastName": "Morikawa",
"creatorType": "author"
},
{
"firstName": "Sanjana",
"lastName": "Manjeshwar",
"creatorType": "author"
},
{
"firstName": "Anne",
"lastName": "Bloom",
"creatorType": "author"
}
],
"date": "2021/6/4",
"abstractNote": "<p>The U.S. civil justice system was forced to restructure almost overnight due to the coronavirus pandemic in 2020. Panelists in this virtual conference discussed how the pandemic has affected civil juries and pretrial case management, addressed implications that the pandemic might have for federal and state civil rules, and discussed solutions that could be applied to the civil justice system after circumstances eventually return to",
"institution": "RAND Corporation",
"language": "en",
"libraryCatalog": "www.rand.org",
"reportType": "Product Page",
"shortTitle": "COVID-19 and the Courts",
"url": "https://www.rand.org/pubs/conf_proceedings/CFA1299-1.html",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Civil Law"
},
{
"tag": "Coronavirus Disease 2019 (COVID-19)"
},
{
"tag": "Juries"
},
{
"tag": "Legal Case and Court Management"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.rand.org/pubs/perspectives/PEA787-1.html",
"items": [
{
"itemType": "report",
"title": "Opportunities for the Brazilian Navy to Employ Additional Unmanned Systems",
"creators": [
{
"firstName": "Scott",
"lastName": "Savitz",
"creatorType": "author"
}
],
"date": "2021/8/10",
"abstractNote": "<p>This Perspective is an exploration of some of the ways the Brazilian Navy could use unmanned systems to improve effectiveness and, potentially, reduce risks and costs while meeting a wide range of demands over vast and diverse geographic areas. This analysis can also serve as a basic template for how other navies could employ unmanned vehicles.</p>",
"institution": "RAND Corporation",
"language": "en",
"libraryCatalog": "www.rand.org",
"reportType": "Product Page",
"url": "https://www.rand.org/pubs/perspectives/PEA787-1.html",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Brazil"
},
{
"tag": "Unmanned Aerial Vehicles"
},
{
"tag": "Unmanned Maritime Vessels"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.rand.org/pubs/external_publications/EP68699.html",
"items": [
{
"itemType": "journalArticle",
"title": "Absenteeism and Presenteeism Among American Workers",
"creators": [
{
"firstName": "Nicole",
"lastName": "Maestas",
"creatorType": "author"
},
{
"firstName": "Kathleen J.",
"lastName": "Mullen",
"creatorType": "author"
},
{
"firstName": "Stephanie",
"lastName": "Rennane",
"creatorType": "author"
}
],
"date": "2021/8/10",
"abstractNote": "We analyze the relationship between absences, presenteeism, and work outcomes using data from the American Working Conditions Survey.",
"issue": "1",
"language": "en",
"libraryCatalog": "www.rand.org",
"pages": "13–23",
"publicationTitle": "Journal of Disability Policy Studies",
"url": "https://www.rand.org/pubs/external_publications/EP68699.html",
"volume": "32",
"attachments": [],
"tags": [
{
"tag": "Disability Insurance"
},
{
"tag": "People with Disabilities"
},
{
"tag": "Workplace Well-Being"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.rand.org/search.html?query=test",
"items": "multiple"
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://search\.mandumah\.com/(Search|Record)//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/Record/') && doc.querySelector('#record')) {
return "journalArticle";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.result a.title');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
// the EndNote metadata is somehow better than the MARC
// (or at least Zotero imports it better)
let exportURL;
let id = attr(doc, '#record_id', 'value');
if (id) {
// this should always work, so the fallback below is Just In Case
exportURL = `https://search.mandumah.com/Record/${id}/Export?style=EndNote`;
}
if (!exportURL) {
exportURL = attr(doc, '#exportMenu', 'li a[href*="style=EndNote"]');
}
let pdfURL = attr(doc, '.downloadPdfImg', 'href');
ZU.doGet(exportURL, function (exportText) {
// a janky regex to replace Arabic commas in author names with Latin commas
exportText = exportText.replace(/^(\s*%[AEY].*)،/m, '$1,');
let translator = Zotero.loadTranslator("import");
// Refer/BibIX
translator.setTranslator("881f60f2-0802-411a-9228-ce5f47b64c7d");
translator.setString(exportText);
translator.setHandler("itemDone", function (obj, item) {
if (item.publicationTitle && item.itemType == 'book') {
item.itemType = 'journalArticle';
}
// strip leading zeroes
for (let prop of ['volume', 'issue', 'seriesNumber']) {
if (!item[prop]) continue;
item[prop] = item[prop].replace(/^\s*0+/, '');
}
if (item.url) {
item.url = item.url.split(', ')[0];
}
else {
item.url = url;
}
// a couple things are missing from the .enw export
for (let tr of doc.querySelectorAll('table.citation tr')) {
let key = ZU.trimInternal(text(tr, 'th'));
let value = text(tr, 'td');
if (key == 'ISSN:') {
item.ISSN = ZU.cleanISSN(value);
}
else if (key == 'الصفحات:' || key == 'Pages:') {
item.pages = value.replace(' - ', '-');
}
else if (key == 'مكان انعقاد المؤتمر:' || key == 'Conference Venue:') {
item.itemType = 'conferencePaper';
item.place = value;
item.proceedingsTitle = item.publicationTitle;
delete item.publicationTitle;
}
}
if (pdfURL) {
item.attachments.push({
url: pdfURL,
title: "Full Text PDF",
mimeType: "application/pdf"
});
}
item.complete();
});
translator.translate();
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://search.mandumah.com/Record/58382",
"items": [
{
"itemType": "journalArticle",
"title": "التلقين وأثره في الرواية عند المحدثين",
"creators": [
{
"firstName": "محمد بن عبدالكريم",
"lastName": "ابن عبيد",
"creatorType": "author"
}
],
"date": "1998",
"ISSN": "1319-4216",
"issue": "18",
"libraryCatalog": "Dar Almandumah",
"pages": "16-82",
"publicationTitle": "مجلة جامعة أم القرى للبحوث العلمية",
"url": "http://search.mandumah.com/Record/58382",
"volume": "11",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://search.mandumah.com/Record/121184",
"items": [
{
"itemType": "journalArticle",
"title": "الظروف المخففة للعقوبة في التشريع الجزائي الاردني",
"creators": [
{
"firstName": "محمد سعيد",
"lastName": "نمور",
"creatorType": "author"
}
],
"date": "1989",
"issue": "2",
"libraryCatalog": "Dar Almandumah",
"pages": "9-69",
"publicationTitle": "مؤتة للبحوث والدراسات",
"url": "http://search.mandumah.com/Record/121184",
"volume": "4",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://search.mandumah.com/Record/393427",
"items": [
{
"itemType": "conferencePaper",
"title": "كلمة افتتاح الندوة",
"creators": [
{
"firstName": "محمد",
"lastName": "أبو هلال",
"creatorType": "author"
}
],
"date": "2006",
"libraryCatalog": "Dar Almandumah",
"pages": "7-10",
"place": "سوسة",
"proceedingsTitle": "أعمال ندوة البحث من قضايا التفاعل بين العلوم : إتصال العلوم وإنفصالها في الثقافة العربية",
"publisher": "كلية الآداب والعلوم الإنسانية بسوسة",
"url": "http://search.mandumah.com/Record/393427",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://search.mandumah.com/Search/Results?lookfor=%D8%A7%D9%84%D8%B7%D8%A7%D8%A6%D9%81%D9%8A%D8%A9&type=AllFields&submit=Find&limit=20&sort=relevance",
"items": "multiple"
}
]
/** END TEST CASES **/
250Simon Kornblith and Michael Berkowitz(search~|/search\?|(a|X|t|Y|w)\?|\?(searchtype|searchscope)|frameset&FF|record=[bi]?[0-9]+(~S[0-9])?|/search/q\?)function detectWeb(doc, url) {
//***********
// URL MATCHING - translator should detect the following urls...
// First page results
// http://bearcat.baylor.edu/search~S7/?searchtype=t&searcharg=test&searchscope=7&sortdropdown=-&SORT=D&extended=0&SUBMIT=Search&searchlimits=&searchorigarg=tone+hundred+years+of+solitude
// http://bearcat.baylor.edu/search~S7?/ttest/ttest/1837%2C1838%2C2040%2CB/browse/indexsort=-
// http://innopac.cooley.edu/search~S0?/Xtest&SORT=DZ/Xtest&SORT=DZ&SUBKEY=test/1%2C960%2C960%2CB/browse
// Individual item from search
// http://bearcat.baylor.edu/search~S7?/ttest/ttest/1837%2C1838%2C2040%2CB/frameset&FF=ttestteori+english&1%2C1%2C/indexsort=-
// http://innopac.cooley.edu/search~S0?/Xtest&SORT=DZ/Xtest&SORT=DZ&SUBKEY=test/1%2C960%2C960%2CB/frameset&FF=Xtest&SORT=DZ&1%2C1%2C
// Persistent URL for item
// http://bearcat.baylor.edu/record=b1540169~S7
// http://innopac.cooley.edu/record=b507916~S0
// http://libcat.dartmouth.edu/record=b4054652~S1
// Persistent URL for item, without suffix
// http://luna.wellesley.edu/record=b2398784
// Specific search parameters
// http://library.cooley.edu/search/q?author=shakespeare&title=hamlet
//***********
// Central Michigan University fix
var xpath = '//div[@class="bibRecordLink"]';
var elmt = doc.evaluate(xpath, doc, null, XPathResult.ANY_TYPE, null).iterateNext();
if (elmt) {
return "book";
}
// Regular expression to reduce false positives
if (!url.match(/SEARCH=/) && !url.match(/searchargs?=/) && !url.match(/&FF/) && !url.match(/search~S[0-9]/) && !url.match(/\/search\/q\?/) && !url.match(/record=/)) return false;
// First, check to see if the URL alone reveals InnoPAC, since some sites don't reveal the MARC button
var matchRegexp = new RegExp('^https?://[^/]+/search[^/]*\\??/[^/]+/[^/]+/[^/]+\%2C[^/]+/frameset(.+)$');
if (matchRegexp.test(doc.location.href)) {
if (!url.match("SEARCH") && !url.match("searchtype")) {
return "book";
}
}
// Next, look for the MARC button
xpath = '//a[img[@src="/screens/marc_display.gif" or @src="/screens/ico_marc.gif" or\
@src="/screens/marcdisp.gif" or starts-with(@alt, "MARC ") or\
@src="/screens/regdisp.gif" or\
@alt="REGULAR RECORD DISPLAY"]] |\
//a[span/img[@src="/screens/marc_display.gif" or\
@src="/screens/ico_marc.gif" or @src="/screens/marcdisp.gif" or\
starts-with(@alt, "MARC ") or @src="/screens/regdisp.gif" or\
@alt="REGULAR RECORD DISPLAY"]] |\
//a[contains(@href, "/marc~")]';
elmt = doc.evaluate(xpath, doc, null, XPathResult.ANY_TYPE, null).iterateNext();
if (elmt) {
return "book";
}
// Also, check for links to an item display page
var tags = ZU.xpath(doc, '//a[@href]');
for (var i=0; i<tags.length; i++) {
if (matchRegexp.test(tags[i].href) || tags[i].href.match(/^https?:\/\/([^/]+\/(?:search\??\/|record=?|search%7e\/)|frameset&FF=)/)) {
return "multiple";
}
}
return false;
}
function scrape(marc, newDoc) {
var xpath = '//pre/text()';
if (newDoc.evaluate(xpath, newDoc, null, XPathResult.ANY_TYPE, null).iterateNext()) {
var elmts = newDoc.evaluate(xpath, newDoc, null, XPathResult.ANY_TYPE, null);
var useNodeValue = true;
} else {
var elmts = newDoc.evaluate('//pre', newDoc, null, XPathResult.ANY_TYPE, null);
var useNodeValue = false;
}
var elmt;
while (elmt = elmts.iterateNext()) {
if (useNodeValue) {
var text = elmt.nodeValue;
} else {
var text = elmt.textContent;
}
var newItem = new Zotero.Item();
var record = new marc.record();
var linee = text.split("\n");
for (var i=0; i<linee.length; i++) {
if (!linee[i]) {
continue;
}
linee[i] = linee[i].replace(/[\xA0_\t]/g, " ");
var value = linee[i].substr(7);
if (linee[i].substr(0, 6) == " ") {
// add this onto previous value
tagValue += value;
} else {
if (linee[i].substr(0, 6) == "LEADER") {
// trap leader
record.leader = value;
} else {
if (tagValue) { // finish last tag
tagValue = tagValue.replace(/\|(.)/g, marc.subfieldDelimiter+"$1");
if (tagValue[0] != marc.subfieldDelimiter) {
tagValue = marc.subfieldDelimiter+"a"+tagValue;
}
// add previous tag
record.addField(tag, ind, tagValue);
}
var tag = linee[i].substr(0, 3);
var ind = linee[i].substr(4, 2);
var tagValue = value;
}
}
}
if (tagValue) {
tagValue = tagValue.replace(/\|(.)/g, marc.subfieldDelimiter+"$1");
if (tagValue[0] != marc.subfieldDelimiter) {
tagValue = marc.subfieldDelimiter+"a"+tagValue;
}
// add previous tag
record.addField(tag, ind, tagValue);
}
record.translate(newItem);
var domain = newDoc.location.href.match(/https?:\/\/([^/]+)/);
newItem.repository = domain[1]+" Library Catalog";
newItem.complete();
}
}
function pageByPage(marc, urls) {
Zotero.Utilities.processDocuments(urls, function(newDoc) {
scrape(marc, newDoc);
}, function() { Zotero.done() });
}
function doWeb(doc, url) {
var uri = doc.location.href;
var newUri;
// load translator for MARC
var translator = Zotero.loadTranslator("import");
translator.setTranslator("a6ee60df-1ddc-4aae-bb25-45e0537be973");
translator.getTranslatorObject(function(marc) {
if (detectWeb(doc, url) == "book") {
var matchRegexp = new RegExp('^(.*)frameset(.+)$');
var m = matchRegexp.exec(uri);
if (m) {
newUri = uri.replace(/frameset/, "marc");
} else {
var xpath = '//a[\
.//img[\
@src="/screens/marc_display.gif" or\
@src="/screens/ico_marc.gif" or\
@src="/screens/marcdisp.gif" or\
starts-with(@alt, "MARC ") or\
@src="/screens/regdisp.gif" or\
@alt="REGULAR RECORD DISPLAY"\
]\
]';
newUri = ZU.xpath(doc, xpath);
if (!newUri.length) newUri = ZU.xpath(doc, '//a[contains(@href, "/marc~")]');
if (!newUri.length) throw new Error("MARC link not found");
newUri = newUri[0].href.replace(/frameset/, "marc");
}
pageByPage(marc, [newUri]);
} else { // Search results page
// Require link to match this
var tagRegexp = new RegExp();
tagRegexp.compile('^https?://[^/]+/search\\??/[^/]+/[^/]+/[0-9]+\%2C[^/]+/frameset');
var urls = new Array();
var availableItems = {};
var firstURL = false;
var tableRows = doc.evaluate('//table//tr[@class="browseEntry" or @class="briefCitRow" or td/input[@type="checkbox"] or td[contains(@class,"briefCitRow") or contains(@class,"briefcitCell") or contains(@class,"briefcitDetail")]]',
doc, null, XPathResult.ANY_TYPE, null);
// Go through table rows
var i = 0;
while (tableRow = tableRows.iterateNext()) {
// get link
var links = doc.evaluate('.//*[@class="briefcitTitle"]//a', tableRow, null, XPathResult.ANY_TYPE, null);
var link = links.iterateNext();
if (!link) {
var links = doc.evaluate(".//a[@href]", tableRow, null, XPathResult.ANY_TYPE, null);
link = links.iterateNext();
}
if (link) {
if (availableItems[link.href]) {
continue;
}
// Go through links
while (link) {
if (link.textContent.trim()) availableItems[link.href] = link.textContent;
link = links.iterateNext();
}
i++;
}
};
Zotero.selectItems(availableItems, function (items) {
if (!items) {
return true;
}
var newUrls = new Array();
for (var i in items) {
newUrls.push(i.replace("frameset", "marc"));
}
pageByPage(marc, newUrls);
});
}
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://utmost.cl.utoledo.edu/search/?searchtype=X&SORT=D&searcharg=history+of+communication&searchscope=3",
"items": "multiple"
},
{
"type": "web",
"url": "http://umiss.lib.olemiss.edu/search/?searchtype=X&SORT=D&searcharg=history+of+communication",
"items": "multiple"
},
{
"type": "web",
"url": "http://luna.wellesley.edu/search/?searchtype=X&SORT=D&searcharg=history+of+ideas&searchscope=1",
"items": "multiple"
},
{
"type": "web",
"url": "https://las.sinica.edu.tw/search*eng/a?searchtype=Y&searcharg=test&SORT=D&submit.x=0&submit.y=0",
"items": "multiple"
},
{
"type": "web",
"url": "https://science-catalogue.canada.ca/record=3038268~S6",
"items": [
{
"itemType": "book",
"title": "Nonparametric statistics: a step-by-step approach",
"creators": [
{
"firstName": "Gregory W.",
"lastName": "Corder",
"creatorType": "author"
},
{
"firstName": "Dale I.",
"lastName": "Foreman",
"creatorType": "author"
}
],
"date": "2014",
"ISBN": "9781118840313",
"callNumber": "QA278.8 C67 2014",
"edition": "Second edition",
"extra": "OCLC: ocn862066449",
"libraryCatalog": "science-catalogue.canada.ca Library Catalog",
"numPages": "267",
"place": "Hoboken, New Jersey",
"publisher": "Wiley",
"shortTitle": "Nonparametric statistics",
"attachments": [],
"tags": [
{
"tag": "Nonparametric statistics"
}
],
"notes": [
{
"note": "\"This Second Edition presents nonparametric statistical procedures in a clear manner and was specifically written for readers with a background in the social, behavioral, and health sciences. The book continues to follow the sameformat in all chapters to aid in reader comprehension, andeach chapter begins with a general introduction and a listof the chapter's main learning objectives. A nonparametricprocedure is then presented and is followed by context-based examples in a step-by-step fashion. Next, updated SPSS(r) screen captures are used to demonstrate how to perform and how to identify the steps in the various procedures. Finally, the authors identify and briefly describe actual examples of corresponding nonparametric tests from diverse fields. Additional tests including the sign test and the Kolmogorov-Smirnov two sample test have been added in addition to new coverage on statistical power. Data sets and odd-numbered solutions are provided in an appendix, and tables of critical values are also provided for reader reference. The authors have also prepared new supplementary material to aid in reader comprehension, which includes: narrated videos and screen animations with step-by-step instructions on how to followthe tests using SPSS; online decision trees to help users determine the needed type of statistical test; and additional solutions not found within the book. Chapter coverage includes: Nonparametric Statistics: An Introduction; Testing Your Data for Normality; Comparing Two Related Samples: The Wilcoxon Signed Rank Test; Comparing Two Unrelated Samples: The Mann-Whitney U Test; Comparing More Than Two Related Samples: Friedman's Test; Comparing More Than Two Unrelated Samples: Kruskal-Wallis H Test; Comparing Variables of Ordinal or Dichotomous Scales: Spearman Rank-Order, Point-Biserial, and Biserial Correlations; Tests for Nominal Scale Data: Chi-Square Tests; and Test for Randomness: Runs Test\"-- \"The book continues to follow the same format in all chapters to aid in reader comprehension, and each chapter begins with a general introduction and a list of the chapter's main learning objectives\"--"
}
],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://(www\.)?aina\.ucalgary\.ca//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, _url) {
if (doc.querySelector('a[href*="doi."]')) {
return "journalArticle";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('a[href*="?RECORD"]');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, _url) {
let DOI = ZU.cleanDOI(attr(doc, 'a[href*="doi."]', 'href'));
let search = Zotero.loadTranslator('search');
search.setHandler('translators', function (_, translators) {
search.setTranslator(translators);
search.setHandler('itemDone', function (_, item) {
item.complete();
});
search.translate();
});
search.setSearch({ DOI });
search.getTranslators();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.aina.ucalgary.ca/scripts/mwimain.dll/415/4/1?RECLIST&DATABASE=ASTIS&TM=1628105772.604",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.aina.ucalgary.ca/scripts/mwimain.dll/415/4/4/85845?RECORD&DATABASE=ASTIS",
"items": [
{
"itemType": "journalArticle",
"title": "Parasitoids indicate major climate‐induced shifts in arctic communities",
"creators": [
{
"creatorType": "author",
"firstName": "Tuomas",
"lastName": "Kankaanpää"
},
{
"creatorType": "author",
"firstName": "Eero",
"lastName": "Vesterinen"
},
{
"creatorType": "author",
"firstName": "Bess",
"lastName": "Hardwick"
},
{
"creatorType": "author",
"firstName": "Niels M.",
"lastName": "Schmidt"
},
{
"creatorType": "author",
"firstName": "Tommi",
"lastName": "Andersson"
},
{
"creatorType": "author",
"firstName": "Paul E.",
"lastName": "Aspholm"
},
{
"creatorType": "author",
"firstName": "Isabel C.",
"lastName": "Barrio"
},
{
"creatorType": "author",
"firstName": "Niklas",
"lastName": "Beckers"
},
{
"creatorType": "author",
"firstName": "Joël",
"lastName": "Bêty"
},
{
"creatorType": "author",
"firstName": "Tone",
"lastName": "Birkemoe"
},
{
"creatorType": "author",
"firstName": "Melissa",
"lastName": "DeSiervo"
},
{
"creatorType": "author",
"firstName": "Katherine H. I.",
"lastName": "Drotos"
},
{
"creatorType": "author",
"firstName": "Dorothee",
"lastName": "Ehrich"
},
{
"creatorType": "author",
"firstName": "Olivier",
"lastName": "Gilg"
},
{
"creatorType": "author",
"firstName": "Vladimir",
"lastName": "Gilg"
},
{
"creatorType": "author",
"firstName": "Nils",
"lastName": "Hein"
},
{
"creatorType": "author",
"firstName": "Toke T.",
"lastName": "Høye"
},
{
"creatorType": "author",
"firstName": "Kristian M.",
"lastName": "Jakobsen"
},
{
"creatorType": "author",
"firstName": "Camille",
"lastName": "Jodouin"
},
{
"creatorType": "author",
"firstName": "Jesse",
"lastName": "Jorna"
},
{
"creatorType": "author",
"firstName": "Mikhail V.",
"lastName": "Kozlov"
},
{
"creatorType": "author",
"firstName": "Jean‐Claude",
"lastName": "Kresse"
},
{
"creatorType": "author",
"firstName": "Don‐Jean",
"lastName": "Leandri‐Breton"
},
{
"creatorType": "author",
"firstName": "Nicolas",
"lastName": "Lecomte"
},
{
"creatorType": "author",
"firstName": "Maarten",
"lastName": "Loonen"
},
{
"creatorType": "author",
"firstName": "Philipp",
"lastName": "Marr"
},
{
"creatorType": "author",
"firstName": "Spencer K.",
"lastName": "Monckton"
},
{
"creatorType": "author",
"firstName": "Maia",
"lastName": "Olsen"
},
{
"creatorType": "author",
"firstName": "Josée‐Anne",
"lastName": "Otis"
},
{
"creatorType": "author",
"firstName": "Michelle",
"lastName": "Pyle"
},
{
"creatorType": "author",
"firstName": "Ruben E.",
"lastName": "Roos"
},
{
"creatorType": "author",
"firstName": "Katrine",
"lastName": "Raundrup"
},
{
"creatorType": "author",
"firstName": "Daria",
"lastName": "Rozhkova"
},
{
"creatorType": "author",
"firstName": "Brigitte",
"lastName": "Sabard"
},
{
"creatorType": "author",
"firstName": "Aleksandr",
"lastName": "Sokolov"
},
{
"creatorType": "author",
"firstName": "Natalia",
"lastName": "Sokolova"
},
{
"creatorType": "author",
"firstName": "Anna M.",
"lastName": "Solecki"
},
{
"creatorType": "author",
"firstName": "Christine",
"lastName": "Urbanowicz"
},
{
"creatorType": "author",
"firstName": "Catherine",
"lastName": "Villeneuve"
},
{
"creatorType": "author",
"firstName": "Evgenya",
"lastName": "Vyguzova"
},
{
"creatorType": "author",
"firstName": "Vitali",
"lastName": "Zverev"
},
{
"creatorType": "author",
"firstName": "Tomas",
"lastName": "Roslin"
}
],
"date": "11/2020",
"DOI": "10.1111/gcb.15297",
"ISSN": "1354-1013, 1365-2486",
"issue": "11",
"journalAbbreviation": "Glob Change Biol",
"language": "en",
"libraryCatalog": "DOI.org (Crossref)",
"pages": "6276-6295",
"publicationTitle": "Global Change Biology",
"url": "https://onlinelibrary.wiley.com/doi/10.1111/gcb.15297",
"volume": "26",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
150Abe Jellinek^https?://([^/]+\.)?finna\.fi//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/Record/')) {
let format = doc.querySelector('.recordFormat span').className;
if (format.includes('video')) {
return "videoRecording";
}
else if (format.includes('sound')) {
return "audioRecording";
}
else if (format.includes('journalarticle')) {
return "journalArticle";
}
else if (format.includes('thesis')) {
return "thesis";
}
else {
return "book";
}
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('h2 > a.title[href*="/Record/"]');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent)
.replace(/Show detailed view|Näytä tarkat tiedot|Visa detaljrik vy/, '');
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) {
for (let url of Object.keys(items)) {
scrapeMARC(url);
}
}
});
}
else {
scrapeMARC(url);
}
}
function scrapeMARC(url) {
let cleanURL = url.replace(/[#?].*$/, '').replace(/\/$/, '');
let marcURL = cleanURL + '/Export?style=MARC';
// would like to pass all the URLs at once as an array here, but it makes
// the RIS fallback difficult.
ZU.doGet(marcURL, function (marcData) {
var success = false;
var translator = Zotero.loadTranslator("import");
// MARC
translator.setTranslator("a6ee60df-1ddc-4aae-bb25-45e0537be973");
translator.setString(marcData);
translator.setHandler('itemDone', function (_, item) {
if (item.place) {
item.place = item.place.replace(/\[[^[]+\]/, '');
}
if (item.publisher) {
item.publisher = item.publisher.replace(/&/g, '&');
}
success = true;
item.complete();
});
translator.setHandler('done', function (_) {
if (!success) {
Z.debug('Falling back to RIS.');
scrapeRIS(cleanURL);
}
});
translator.translate();
});
}
function scrapeRIS(cleanURL) {
let risURL = cleanURL + '/Export?style=RIS';
ZU.doGet(risURL, function (text) {
var translator = Zotero.loadTranslator("import");
// RIS
translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7");
translator.setString(text);
translator.setHandler("itemDone", function (obj, item) {
item.complete();
});
translator.translate();
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://kansalliskirjasto.finna.fi/Record/fikka.3295274",
"items": [
{
"itemType": "book",
"title": "Test pilot",
"creators": [
{
"firstName": "Leonard",
"lastName": "Sealey",
"creatorType": "author"
}
],
"date": "1977",
"ISBN": "9789511044376",
"callNumber": "Ga 1973- Ga 1973- Ga 1973-",
"language": "eng fin",
"libraryCatalog": "Finna",
"numPages": "16",
"place": "Helsingissä",
"publisher": "Otava",
"series": "Lively readers",
"seriesNumber": "4",
"attachments": [],
"tags": [],
"notes": [
{
"note": "Finnish vocabulary comp. by Anneli Aarikka"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://kansalliskirjasto.finna.fi/Record/doria.10024_82096",
"items": [
{
"itemType": "book",
"title": "Goodrich \"High-test\" konehihnat",
"creators": [
{
"lastName": "Auto-Vulcano",
"creatorType": "author",
"fieldMode": 1
}
],
"language": "fin",
"libraryCatalog": "Finna",
"url": "http://www.doria.fi/handle/10024/82096",
"attachments": [],
"tags": [
{
"tag": "Goodrich (tavaramerkki)"
},
{
"tag": "Moottoriajoneuvojen esitteet ja hinnastot"
},
{
"tag": "hinnastot"
},
{
"tag": "moottoriajoneuvot"
},
{
"tag": "tavaramerkit"
},
{
"tag": "tieliikenne"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://kirkes.finna.fi/Record/kirkes.252925",
"items": [
{
"itemType": "book",
"title": "Suomen maatalouden historia: jälleenrakennuskaudesta EU-Suomeen. 3: Suurten muutosten aika",
"creators": [
{
"firstName": "Pirjo",
"lastName": "Markkola",
"creatorType": "editor"
},
{
"firstName": "Viljo",
"lastName": "Rasila",
"creatorType": "editor"
}
],
"date": "2004",
"ISBN": "9789517464833 9789517464802",
"abstractNote": "Summary: Overwiew of tghe history of finnish agriculture - from prehistory to the 21st century / Viljo Rasila",
"callNumber": "67.09",
"language": "fin",
"libraryCatalog": "Finna",
"numPages": "518",
"place": "Helsinki",
"publisher": "Suomalaisen Kirjallisuuden Seura",
"series": "Suomalaisen Kirjallisuuden Seuran toimituksia",
"seriesNumber": "914:3",
"shortTitle": "Suomen maatalouden historia",
"attachments": [],
"tags": [
{
"tag": "1870-1950-luku"
},
{
"tag": "1940-2000-luku"
},
{
"tag": "Euroopan Unioni"
},
{
"tag": "Euroopan unioni"
},
{
"tag": "Eurooppa"
},
{
"tag": "Suomi"
},
{
"tag": "asutustoiminta"
},
{
"tag": "historia"
},
{
"tag": "integraatio"
},
{
"tag": "jälleenrakentaminen"
},
{
"tag": "karjatalous"
},
{
"tag": "kasvu"
},
{
"tag": "luonnonmukainen tuotanto"
},
{
"tag": "maaltamuutto"
},
{
"tag": "maaseutu"
},
{
"tag": "maatalous"
},
{
"tag": "maatalous"
},
{
"tag": "maatalouspolitiikka"
},
{
"tag": "maatalousteknologia"
},
{
"tag": "maataloustuotanto"
},
{
"tag": "maataloustyö"
},
{
"tag": "osuustoiminta"
},
{
"tag": "rakennemuutos"
},
{
"tag": "taloushistoria"
},
{
"tag": "tukimuodot"
}
],
"notes": [
{
"note": "S. 490-507: Overview of the Finnish agriculture / Viljo Rasila"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://blanka.finna.fi/Search/Results?sort=main_date_str+desc&limit=0&filter%5B%5D=first_indexed%3A%22%5BNOW-1MONTHS%2FDAY+TO+%2A%5D%22&filter%5B%5D=%7Eformat%3A%220%2FBook%2F%22&filter%5B%5D=%7Eformat%3A%220%2FOther%2F%22&filter%5B%5D=%7Eformat%3A%220%2FSound%2F%22&filter%5B%5D=%7Eformat%3A%220%2FVideo%2F%22&filter%5B%5D=%7Eformat%3A%220%2FMusicalScore%2F%22&type=AllFields",
"items": "multiple"
},
{
"type": "web",
"url": "https://finna.fi/Search/Results?lookfor=test&type=AllFields",
"items": "multiple"
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://www\.fulcrum\.org//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, _url) {
if (doc.querySelector('meta[name="citation_title"]')) {
return "book";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.document a');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(text(row, 'h3'));
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
item.libraryCatalog = 'ACLS Humanities EBook';
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.fulcrum.org/concern/monographs/79408038k?locale=en",
"items": [
{
"itemType": "book",
"title": "Empire, Architecture, and the City: French-Ottoman Encounters, 1830-1914",
"creators": [
{
"firstName": "Zeynep",
"lastName": "Celik",
"creatorType": "author"
}
],
"date": "2008",
"ISBN": "9780295987798",
"language": "en",
"libraryCatalog": "ACLS Humanities EBook",
"publisher": "U of Washington Press",
"shortTitle": "Empire, Architecture, and the City",
"url": "https://hdl.handle.net/2027/heb.33994",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.fulcrum.org/concern/monographs/9z9032224?locale=en",
"items": [
{
"itemType": "book",
"title": "Black Rock: Mining Folklore of the Pennsylvania Dutch",
"creators": [
{
"firstName": "George",
"lastName": "Korson",
"creatorType": "author"
}
],
"date": "1960",
"ISBN": "9780801803451",
"language": "en",
"libraryCatalog": "ACLS Humanities EBook",
"publisher": "Johns Hopkins UP",
"shortTitle": "Black Rock",
"url": "https://hdl.handle.net/2027/heb.33116",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.fulcrum.org/heb?utf8=%E2%9C%93&press=heb&q=istanbul",
"items": "multiple"
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://www\.currentaffairs\.org//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, _url) {
if (doc.querySelector('h1.title') && doc.querySelector('.primary')) {
return "magazineArticle";
}
// search just redirects to DuckDuckGo
return false;
}
function doWeb(doc, url) {
scrape(doc, url);
}
function scrape(doc, url) {
let item = new Zotero.Item('magazineArticle');
item.title = text(doc, 'h1.title');
item.abstractNote = ZU.cleanTags(attr(doc, 'meta[name="description"]', 'content'));
item.publicationTitle = 'Current Affairs';
item.issue = attr(doc, '#wpIssueName', 'value');
item.date = ZU.strToISO(text(doc, '.dateline span'));
item.language = 'en';
item.ISSN = '2471-2647';
item.url = url.replace(/[#?].*$/, '');
for (let byline of doc.querySelectorAll('.primary .bylines li')) {
item.creators.push(ZU.cleanAuthor(byline.innerText, 'author'));
}
item.attachments.push({
title: 'Snapshot',
document: doc
});
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.currentaffairs.org/2021/08/taming-the-greedocracy",
"items": [
{
"itemType": "magazineArticle",
"title": "Taming The Greedocracy",
"creators": [
{
"firstName": "Jag",
"lastName": "Bhalla",
"creatorType": "author"
}
],
"date": "2021-08-04",
"ISSN": "2471-2647",
"abstractNote": "American elites want magical technological fixes to climate change because they refuse to confront the truth that seriously addressing the problem would require limits to their own power and luxury.",
"issue": "July/Aug 2021",
"language": "en",
"libraryCatalog": "Current Affairs",
"publicationTitle": "Current Affairs",
"url": "https://www.currentaffairs.org/2021/08/taming-the-greedocracy",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.currentaffairs.org/2021/08/tenant-organizing-in-washington-d-c-and-beyond",
"items": [
{
"itemType": "magazineArticle",
"title": "Tenant Organizing in Washington D.C. and Beyond",
"creators": [
{
"firstName": "Amanda",
"lastName": "Huron",
"creatorType": "author"
},
{
"firstName": "Amanda",
"lastName": "Korber",
"creatorType": "author"
},
{
"firstName": "Rob",
"lastName": "Wohl",
"creatorType": "author"
},
{
"firstName": "Vanessa A.",
"lastName": "Bee",
"creatorType": "author"
}
],
"date": "2021-08-05",
"ISSN": "2471-2647",
"abstractNote": "Despite the eviction moratorium, the housing crisis is still severe. This interview, originally from August 2019, explains several ways that tenants can successfully fight their landlords.",
"language": "en",
"libraryCatalog": "Current Affairs",
"publicationTitle": "Current Affairs",
"url": "https://www.currentaffairs.org/2021/08/tenant-organizing-in-washington-d-c-and-beyond",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://(www\.)?bloomsburyfoodlibrary\.com//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (doc.querySelector('a[href*="/getris"]')) {
if (url.includes('bloomsburyfoodlibrary.com/encyclopedia-chapter')) {
if (text(doc, '.subfacet').includes('Book chapter')) {
return 'bookSection';
}
else {
return 'encyclopediaArticle';
}
}
else if (url.includes('bloomsburyfoodlibrary.com/audio')) {
// would like to support these, but the RIS isn't useful
return false;
}
else if (url.includes('bloomsburyfoodlibrary.com/museum')) {
return 'artwork';
}
else {
return 'book';
}
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('a#search-result-link');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var risURL = attr(doc, 'a[href*="/getris"]', 'href');
ZU.doGet(risURL, function (text) {
var translator = Zotero.loadTranslator("import");
translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7");
translator.setString(text);
translator.setHandler("itemDone", function (obj, item) {
let detectedType = detectWeb(doc, url);
if (detectedType == 'encyclopediaArticle' && item.itemType == 'bookSection') {
item.itemType = 'encyclopediaArticle';
item.encyclopediaTitle = item.bookTitle;
delete item.bookTitle;
}
else if (detectedType == 'book' && item.itemType == 'bookSection') {
item.itemType = 'book';
delete item.bookTitle;
// filter out duplicate "editor" names
let names = new Set();
item.creators = item.creators.filter((creator) => {
let fullName = `${creator.lastName}, ${creator.firstName}`;
if (names.has(fullName)) {
return false;
}
names.add(fullName);
return true;
});
}
else if (detectedType == 'artwork') {
item.itemType = 'artwork';
}
for (let prop of ['title', 'bookTitle', 'encyclopediaTitle']) {
if (item[prop]) {
item[prop] = item[prop].replace(/ : /, ': ');
}
}
if (item.publisher) {
item.publisher = item.publisher.replace('©', '');
}
item.archive = '';
// contains full text, if we're on a chapter
item.attachments.push({
title: 'Snapshot',
document: doc
});
item.complete();
});
translator.translate();
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.bloomsburyfoodlibrary.com/encyclopedia-chapter?docid=b-9781474208642&tocid=b-9781474208642-000399&pdfid=9781474208642.0008.pdf",
"defer": true,
"items": [
{
"itemType": "encyclopediaArticle",
"title": "Burkina Faso",
"creators": [
{
"lastName": "Debevec",
"firstName": "Liza",
"creatorType": "author"
},
{
"lastName": "Albala",
"firstName": "Ken",
"creatorType": "editor"
}
],
"date": "2011",
"ISBN": "9781474208642",
"edition": "1",
"encyclopediaTitle": "Food Cultures of the World Encyclopedia: Africa and the Middle East",
"language": "en",
"libraryCatalog": "Bloomsbury Food Library",
"pages": "23-30",
"place": "Santa Barbara",
"publisher": "ABC-Clio Inc",
"url": "https://www.bloomsburyfoodlibrary.com/encyclopedia-chapter?docid=b-9781474208642&tocid=b-9781474208642-000399",
"volume": "1",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.bloomsburyfoodlibrary.com/encyclopedia?docid=b-9781474205283",
"items": [
{
"itemType": "book",
"title": "The Agency of Eating: Mediation, Food and the Body",
"creators": [
{
"lastName": "Abbots",
"firstName": "Emma-Jayne",
"creatorType": "author"
}
],
"date": "2017",
"ISBN": "9781474205283",
"edition": "1",
"language": "en",
"libraryCatalog": "Bloomsbury Food Library",
"place": "London",
"publisher": "Bloomsbury Academic",
"series": "Contemporary Food Studies: Economy, Culture and Politics",
"shortTitle": "The Agency of Eating",
"url": "https://www.bloomsburyfoodlibrary.com/encyclopedia?docid=b-9781474205283",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.bloomsburyfoodlibrary.com/encyclopedia?docid=b-9781474203937",
"items": [
{
"itemType": "book",
"title": "Agri-Food and Rural Development: Sustainable Place-Making",
"creators": [
{
"lastName": "Marsden",
"firstName": "Terry",
"creatorType": "author"
}
],
"date": "2017",
"ISBN": "9781474203937",
"edition": "1",
"language": "en",
"libraryCatalog": "Bloomsbury Food Library",
"place": "London",
"publisher": "Bloomsbury Academic",
"series": "Contemporary Food Studies: Economy, Culture and Politics",
"shortTitle": "Agri-Food and Rural Development",
"url": "https://www.bloomsburyfoodlibrary.com/encyclopedia?docid=b-9781474203937",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.bloomsburyfoodlibrary.com/museumobject?docid=TNA_COPY1_241-95",
"defer": true,
"items": [
{
"itemType": "artwork",
"title": "Advert for Hill Evans's barley malt vinegar",
"creators": [],
"libraryCatalog": "Bloomsbury Food Library",
"url": "https://www.bloomsburyfoodlibrary.com/museum?docid=TNA_COPY1_241-95",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.bloomsburyfoodlibrary.com/search-results?any=corn",
"items": "multiple"
}
]
/** END TEST CASES **/
100Abe Jellinek^https://institute\.global//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
const excludeRe = /\b(commentary|statement)\b/i;
function detectWeb(doc, _url) {
if (doc.querySelector('.tbi-article')
&& !excludeRe.test(attr(doc, 'meta[name="keywords"]', 'content'))) {
// the site calls some articles "reports" and some "papers," but in
// Zotero terms they're really all reports (freestanding short-form works)
return "report";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.search-result');
for (let row of rows) {
if (excludeRe.test(text(row, '.type-date'))) continue;
let href = attr(row, 'a', 'href');
let title = ZU.trimInternal(text(row, 'a'));
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
item.abstractNote = text(doc, '.text-block p');
// this won't stick around...
item.date = ZU.strToISO(text('.tbi-article__hero-text__meta-type__date span'));
item.institution = 'Tony Blair Institute for Global Change';
item.creators = [];
for (let author of doc.querySelectorAll('.article-info h6')) {
let name = ZU.trimInternal(author.textContent);
item.creators.push(ZU.cleanAuthor(name, 'author'));
}
item.attachments = [];
item.attachments.push({
title: 'Full Text PDF',
mimeType: 'application/pdf',
url: attr(doc, 'a[href$=".pdf"]', 'href')
});
item.tags = [];
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.itemType = "report";
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://institute.global/policy/violent-extremism-sub-saharan-africa-lessons-rise-boko-haram",
"items": [
{
"itemType": "report",
"title": "Violent Extremism in Sub-Saharan Africa: Lessons From the Rise of Boko Haram",
"creators": [
{
"firstName": "Audu Bulama",
"lastName": "Bukarti",
"creatorType": "author"
}
],
"date": "2021-07-23",
"abstractNote": "On 26 July 2009, Boko Haram launched its first series of attacks on several police stations across northern Nigeria, culminating in a four-day standoff with security forces that ended with the death of hundreds of its members including founder and first leader, Muhammed Yusuf. As surviving members went underground to plan a deadly insurgency, Nigerian authorities expressed confidence that the group had been defeated. The following summer, Boko Haram returned under new leadership with an official name and a fresh mode of operation that would prove to be far more sophisticated and lethal than the original.",
"institution": "Tony Blair Institute for Global Change",
"language": "en",
"libraryCatalog": "institute.global",
"shortTitle": "Violent Extremism in Sub-Saharan Africa",
"url": "https://institute.global/policy/violent-extremism-sub-saharan-africa-lessons-rise-boko-haram",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://institute.global/policy/mind-gap-success-cop26",
"items": [
{
"itemType": "report",
"title": "Mind the Gap: Success at COP26",
"creators": [
{
"firstName": "Phil",
"lastName": "McNally",
"creatorType": "author"
},
{
"firstName": "Tim",
"lastName": "Lord",
"creatorType": "author"
}
],
"date": "2021-07-29",
"abstractNote": "COP26, to be held this November in Glasgow, is the most important meeting on climate since the Paris Agreement of 2015. Indeed, some – including Alok Sharma, the man charged with delivering a successful summit outcome – argue that it is the world’s last chance to keep climate change in check.1 https://www.gov.uk/government/news/cop26-president-designate-alok-sharma-pick-the-planet And while that may be too stark an assessment, there is no doubt that success at COP26 will put the world in a much better position to tackle the increasingly urgent threat of climate change. Failure, on the other hand, could be a disastrous setback, from both a global and UK perspective.",
"institution": "Tony Blair Institute for Global Change",
"language": "en",
"libraryCatalog": "institute.global",
"shortTitle": "Mind the Gap",
"url": "https://institute.global/policy/mind-gap-success-cop26",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://institute.global/search?term=iraq+weapons+of+mass+destruction§ion=All",
"items": "multiple"
}
]
/** END TEST CASES **/
260Abe Jellinek/search.+p=|record/[0-9]+/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (!doc.querySelector('#tindfooter')) {
return false;
}
if (url.includes('/record/')) {
return "book";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
else if (url.includes('/search')) {
Z.monitorDOMChanges(doc.querySelector('.pagebody'));
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.result-title a');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, _url) {
let marcXMLURL = attr(doc, 'a[href$="/export/xm"], a[download$=".xml"]', 'href');
ZU.doGet(marcXMLURL, function (respText) {
var translator = Zotero.loadTranslator("import");
// MARCXML
translator.setTranslator("edd87d07-9194-42f8-b2ad-997c4c7deefd");
translator.setString(respText);
translator.setHandler("itemDone", function (obj, item) {
item.libraryCatalog = text(doc, '#headerlogo')
|| attr(doc, 'meta[property="og:site_name"]', 'content');
let erURL = attr(doc, '.er-link', 'href');
if (erURL) {
item.url = erURL;
}
item.complete();
});
translator.translate();
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://caltech.tind.io/record/483199?ln=en",
"items": [
{
"itemType": "book",
"title": "Handbook of the engineering sciences",
"creators": [
{
"firstName": "James Harry",
"lastName": "Potter",
"creatorType": "author"
}
],
"date": "1967",
"callNumber": "TA151 .P79",
"libraryCatalog": "Caltech Library Catalog",
"numPages": "2",
"place": "Princeton, N.J",
"publisher": "Van Nostrand",
"attachments": [],
"tags": [
{
"tag": "Engineering"
},
{
"tag": "Handbooks, manuals, etc"
}
],
"notes": [
{
"note": "Housner Earthquake Engineering Collection"
},
{
"note": "v.1. The basic sciences.--v.2. The applied sciences"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://caltech.tind.io/record/688072?ln=en",
"items": [
{
"itemType": "book",
"title": "Harry Potter and the deathly hallows",
"creators": [
{
"firstName": "J. K.",
"lastName": "Rowling",
"creatorType": "author"
},
{
"firstName": "Mary",
"lastName": "GrandPré",
"creatorType": "author"
}
],
"date": "2007",
"ISBN": "9780545010221",
"abstractNote": "Burdened with the dark, dangerous, and seemingly impossible task of locating and destroying Voldemort's remaining Horcruxes, Harry, feeling alone and uncertain about his future, struggles to find the inner strength he needs to follow the path set out before him",
"callNumber": "PR6068.O94 H377 2007",
"edition": "1st ed",
"libraryCatalog": "Caltech Library Catalog",
"numPages": "759",
"place": "New York, NY",
"publisher": "Arthur A. Levine Books",
"attachments": [],
"tags": [
{
"tag": "England"
},
{
"tag": "Hogwarts School of Witchcraft and Wizardry (Imaginary place)"
},
{
"tag": "Juvenile fiction"
},
{
"tag": "Juvenile fiction"
},
{
"tag": "Juvenile fiction"
},
{
"tag": "Juvenile fiction"
},
{
"tag": "Juvenile fiction"
},
{
"tag": "Juvenile fiction"
},
{
"tag": "Magic"
},
{
"tag": "Potter, Harry"
},
{
"tag": "Schools"
},
{
"tag": "Wizards"
}
],
"notes": [
{
"note": "\"Year 7\"--Spine Sequel to: Harry Potter and the Half-Blood Prince"
},
{
"note": "The Dark Lord ascending -- In memoriam -- The Dursleys departing -- The seven Potters -- Fallen warrior -- The ghoul in pajamas -- The will of Albus Dumbledore -- The wedding -- A place to hide -- Kreacher's tale -- The bribe -- Magic is might -- The Muggle-born Registration Commission -- The thief -- The goblin's revenge -- Godric's Hollow -- Bathilda's secret -- The life and lies of Albus Dumbledore -- The silver doe -- Xenophilius Lovegood -- The tale of the three brothers -- The Deathly Hallows -- Malfoy Manor -- The wandmaker -- Shell Cottage -- Gringotts -- The final hiding place -- The missing mirror -- The lost diadem -- The sacking of Severus Snape -- The Battle of Hogwarts -- The Elder Wand -- The prince's tale -- The forest again -- King's Cross -- The flaw in the plan"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://caltech.tind.io/record/578424?ln=en",
"items": [
{
"itemType": "thesis",
"title": "Vibration tests of a multistory building",
"creators": [
{
"firstName": "Julio Horiuch",
"lastName": "Kuroiwa",
"creatorType": "author"
},
{
"lastName": "California Institute of Technology",
"creatorType": "contributor",
"fieldMode": true
}
],
"date": "1967",
"callNumber": "THESIS",
"libraryCatalog": "Caltech Library Catalog",
"numPages": "113",
"place": "Pasadena, Calif",
"university": "California Institute of Technology",
"attachments": [],
"tags": [],
"notes": [
{
"note": "Housner Earthquake Engineering Collection"
},
{
"note": "Thesis (Engineer) -- California Institute of Technology, 1967"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://caltech.tind.io/record/666881?ln=en",
"items": [
{
"itemType": "book",
"title": "Asymptotically optimal multistage hypothesis tests",
"creators": [
{
"firstName": "Jay L.",
"lastName": "Bartroff",
"creatorType": "author"
},
{
"firstName": "Gary",
"lastName": "Lorden",
"creatorType": "author"
},
{
"lastName": "California Institute of Technology",
"creatorType": "contributor",
"fieldMode": true
}
],
"date": "2004",
"callNumber": "THESIS",
"libraryCatalog": "Caltech Library Catalog",
"numPages": "181",
"place": "Pasadena, Calif",
"publisher": "California Institute of Technology",
"series": "CIT theses",
"seriesNumber": "2004",
"url": "http://resolver.caltech.edu/CaltechETD:etd-05202004-133633",
"attachments": [],
"tags": [
{
"tag": "Electronic dissertations"
}
],
"notes": [
{
"note": "Thesis (Ph. D.) PQ #3151340"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://caltech.tind.io/search?ln=en&rm=&ln=en&sf=&so=d&rg=25&c=Caltech&of=hb&fct__4=Thesis&fct__4=Thesis&fct__4=Remote%20access&p=test",
"items": "multiple"
},
{
"type": "web",
"url": "https://pegasus.law.columbia.edu/record/511151?ln=en",
"items": [
{
"itemType": "book",
"title": "Sex and race differences on standardized tests: oversight hearings before the Subcommittee on Civil and Constitutional Rights of the Committee on the Judiciary, House of Representatives, One Hundredth Congress, first session ... April 23, 1987",
"creators": [
{
"lastName": "United States",
"creatorType": "editor",
"fieldMode": true
}
],
"date": "1989",
"callNumber": "KF27 .J847 1987e",
"libraryCatalog": "CLS Pegasus Library Catalog",
"numPages": "305",
"place": "Washington",
"publisher": "U.S. G.P.O. : For sale by the Supt. of Docs., Congressional Sales Office, U.S. G.P.O",
"shortTitle": "Sex and race differences on standardized tests",
"attachments": [],
"tags": [
{
"tag": "Educational tests and measurements"
},
{
"tag": "SAT (Educational test)"
},
{
"tag": "Sexism in educational tests"
},
{
"tag": "Test bias"
},
{
"tag": "United States"
},
{
"tag": "United States"
},
{
"tag": "United States"
}
],
"notes": [
{
"note": "Distributed to some depository libraries in microfiche Shipping list no.: 89-175-P \"Serial no. 93.\" Item 1020-A, 1020-B (microfiche)"
}
],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://scholia\.toolforge\.org/work/Q/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
let _cachedWikidataTranslator;
let _cachedWikidataDoc;
let _cachedWikidataURL;
function detectWeb(doc, _url) {
let wikidataURL = attr(doc, 'h1 a[href^="https://www.wikidata.org/wiki/Q"]', 'href');
if (wikidataURL) {
loadWikidataTranslator((wikidata) => {
loadWikidataPage(wikidataURL, (doc, url) => {
Zotero.done(wikidata.detectWeb(doc, url));
});
});
}
}
function doWeb(doc, url) {
scrape(doc, url);
}
function scrape(doc, _url) {
let wikidataURL = attr(doc, 'h1 a[href^="https://www.wikidata.org/wiki/Q"]', 'href');
loadWikidataTranslator((wikidata) => {
loadWikidataPage(wikidataURL, (doc, url) => {
wikidata.doWeb(doc, url);
});
});
}
function loadWikidataTranslator(callback) {
if (_cachedWikidataTranslator) {
callback(_cachedWikidataTranslator);
}
else {
let translator = Zotero.loadTranslator('web');
// Wikidata
translator.setTranslator('eaef8d43-2f17-45b3-a5cb-affb49bc5e81');
translator.getTranslatorObject(function (wikidataTranslator) {
_cachedWikidataTranslator = wikidataTranslator;
callback(wikidataTranslator);
});
}
}
function loadWikidataPage(url, callback) {
if (_cachedWikidataDoc && _cachedWikidataURL) {
callback(_cachedWikidataDoc, _cachedWikidataURL);
}
else {
ZU.processDocuments(url, function (doc, url) {
_cachedWikidataDoc = doc;
_cachedWikidataURL = url;
callback(doc, url);
});
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://scholia.toolforge.org/work/Q21090025",
"items": [
{
"itemType": "journalArticle",
"title": "The Alzheimer's disease-associated amyloid beta-protein is an antimicrobial peptide",
"creators": [
{
"firstName": "Stephanie J.",
"lastName": "Soscia",
"creatorType": "author"
},
{
"firstName": "James E.",
"lastName": "Kirby",
"creatorType": "author"
},
{
"firstName": "Kevin J.",
"lastName": "Washicosky",
"creatorType": "author"
},
{
"firstName": "Stephanie M.",
"lastName": "Tucker",
"creatorType": "author"
},
{
"firstName": "Martin",
"lastName": "Ingelsson",
"creatorType": "author"
},
{
"firstName": "Bradley",
"lastName": "Hyman",
"creatorType": "author"
},
{
"firstName": "Mark A.",
"lastName": "Burton",
"creatorType": "author"
},
{
"firstName": "Lee E.",
"lastName": "Goldstein",
"creatorType": "author"
},
{
"firstName": "Scott",
"lastName": "Duong",
"creatorType": "author"
},
{
"firstName": "Rudolph E.",
"lastName": "Tanzi",
"creatorType": "author"
},
{
"firstName": "Robert D.",
"lastName": "Moir",
"creatorType": "author"
}
],
"date": "2010-01-01T00:00:00Z",
"DOI": "10.1371/JOURNAL.PONE.0009505",
"extra": "QID: Q21090025\nPMID: 20209079\nPMCID: PMC2831066",
"issue": "3",
"language": "English",
"libraryCatalog": "Scholia",
"pages": "e9505",
"publicationTitle": "PLOS ONE",
"volume": "5",
"attachments": [],
"tags": [
{
"tag": "Alzheimer's disease"
},
{
"tag": "Beta amyloid"
},
{
"tag": "antimicrobial peptide"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
200Abe Jellinek/((notebook(_f?ext)?)|list)\.asp/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
const pdfViewerSel = 'a[href*="pdf_viewer.asp?"]';
const keys = {
title: ['Title', 'כותר', 'Brief Description', 'תיאור מקוצר'],
itemType: ['Item Type'],
pages: ['Pages', 'עמודים'],
ISBN: ['ISBN'],
date: ['Date Created', 'תאריך יצירה', 'Year', 'שנה לועזית'],
description: ['Physical Description', 'Description'],
language: ['Language', 'שפה', 'Script', 'Script of Material'],
publisher: ['Publisher', 'מוציא לאור'],
author: ['Author', 'מחבר', 'Author/Creator'],
permalink: ['Permanent Link', 'קישור לפריט']
};
function detectWeb(doc, url) {
if (doc.querySelector('#item table')) {
let properties = parseTable(doc);
if (!properties.query(keys.title)) {
return false;
}
if (doc.querySelector(pdfViewerSel)
|| properties.query(keys.itemType) == 'Book'
|| properties.query(keys.itemType) == 'ספר'
|| properties.query(keys.pages)
|| properties.query(keys.ISBN)) {
return "book";
}
else {
return "artwork";
}
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('h5 a');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
let properties = parseTable(doc);
let item = new Zotero.Item('artwork');
item.extra = '';
item.title = properties.query(keys.title);
item.date = properties.query(keys.date);
// don't run through strToISO if the date is a range
if (item.date && !item.date.includes('-')) {
item.date = ZU.strToISO(item.date);
}
item.abstractNote = properties.query(keys.description);
item.language = properties.query(keys.language);
item.publisher = properties.query(keys.publisher);
item.place = properties['Creation Place'] || properties['מקום יצור הפריט'];
item.artworkMedium = properties['Medium'];
let accessionNumber = properties['Accession Number'] || properties['מספר רישום'];
if (accessionNumber) {
item.extra += `Accession Number: ${accessionNumber}\n`;
}
if (doc.querySelector(pdfViewerSel)
|| properties.query(keys.itemType) == 'Book'
|| properties.query(keys.itemType) == 'ספר'
|| properties.query(keys.pages)
|| properties.query(keys.ISBN)) {
item.itemType = 'book';
item.numPages = properties['Pages'] || properties['עמודים'];
if (item.numPages) item.numPages = item.numPages.replace(/p\.$/, '');
}
let authorGroups = properties.query(keys.author);
addCreators(item, authorGroups, 'author');
if (!item.creators.length && properties['מחבר - שם משפחה']) {
item.creators.push({
firstName: properties['שם פרטי מחבר'],
lastName: properties['מחבר - שם משפחה'],
creatorType: 'author'
});
}
let editorGroups = properties['Editor'] || properties['עורך'];
addCreators(item, editorGroups, 'editor');
for (let key of Object.keys(properties)) {
if (key.startsWith('Link to ')) {
let url = ZU.cleanURL(properties[key]);
if (url) {
item.attachments.push({
title: key,
url,
mimeType: 'text/html',
snapshot: false
})
}
}
}
if (doc.querySelector('a.main_image[href*=".jp"]')) {
item.attachments.push({
title: 'Low-Resolution Image',
mimeType: 'image/jpeg',
url: attr(doc, 'a.main_image', 'href')
});
}
if (doc.querySelector(pdfViewerSel)) {
let pdfPath = attr(doc, pdfViewerSel, 'href')
.match(/<pdf_path>([^<]+)<\/>/);
if (pdfPath) {
item.attachments.push({
title: 'Full Text PDF',
mimeType: 'application/pdf',
url: pdfPath[1]
});
}
}
item.attachments.push({
title: 'Snapshot',
document: doc
});
item.libraryCatalog = text(doc, '#topbar_tx')
|| `IDEA ALM (${doc.location.hostname})`;
item.url = properties.query(keys.permalink);
if (item.url) {
item.complete();
}
else {
let getURLPage = attr(doc, '#sidenav1', 'onclick').match(/'(.*)'/);
if (getURLPage) {
Z.debug('Finding URL from dialog page: ' + getURLPage[1]);
ZU.processDocuments(getURLPage[1], function (getURLDoc) {
item.url = text(getURLDoc, '#form');
item.complete();
});
}
else {
item.url = url; // ugly, but what can we do?
item.complete();
}
}
}
function parseTable(doc) {
let properties = {};
for (let row of doc.querySelectorAll('#item table tbody tr')) {
let key = text(row, 'td.strong');
let value = text(row, 'td .bidie, td .bidi, td a[id^="t"], td a[id^="link"]');
if (properties[key]) {
properties[key] += `; ${value}`;
}
else {
properties[key] = value;
}
}
properties.query = function (possibleKeys) {
for (let key of possibleKeys) {
if (properties[key]) return properties[key];
}
return '';
}
return properties;
}
function addCreators(item, creatorGroups, creatorType) {
if (!creatorGroups) return;
for (let creatorGroup of creatorGroups.split('; ')) {
for (let creator of creatorGroup.split(' and ')) {
if (!creator.trim() || creator == 'Unknown') continue;
creator = creator
.replace(/\b(Mr|Mrs|Dr|Sir|Prof)(\.|\b)/i, '')
.replace(/,\s*$/, '');
item.creators.push(ZU.cleanAuthor(creator, creatorType,
creator.includes(',')));
}
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://magnesalm.org/notebook_ext.asp?item=166740&site=magnes&lang=ENG&menu=1",
"items": [
{
"itemType": "book",
"title": "The Jewish World: 100 Treasures of Art & Culture, The Magnes",
"creators": [
{
"firstName": "Alla",
"lastName": "Efimova",
"creatorType": "author"
}
],
"date": "2014",
"language": "English",
"libraryCatalog": "IDEA ALM (magnesalm.org)",
"numPages": "176",
"publisher": "Rizzoli International Publications",
"shortTitle": "The Jewish World",
"url": "http://magnesalm.org/notebook_ext.asp?site=magnes&book=166740&lang=ENG",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://magnesalm.org/notebook_ext.asp?site=magnes&book=163129",
"items": [
{
"itemType": "book",
"title": "Famous cook book",
"creators": [
{
"firstName": "Sigismund",
"lastName": "Aronson",
"creatorType": "author"
},
{
"firstName": "Samuel",
"lastName": "Brown",
"creatorType": "author"
}
],
"date": "1916",
"abstractNote": "20 cm.",
"extra": "Accession Number: MCBC 1.",
"libraryCatalog": "IDEA ALM (magnesalm.org)",
"numPages": "446, xii",
"place": "United States, Seattle, Oregon",
"publisher": "The Auxiliary",
"url": "http://magnesalm.org/notebook_ext.asp?site=magnes&book=163129",
"attachments": [
{
"title": "Link to OCLC WorldCat",
"mimeType": "text/html",
"snapshot": false
},
{
"title": "Link to related content",
"mimeType": "text/html",
"snapshot": false
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://magnesalm.org/notebook_fext.asp?site=magnes&book=40",
"items": [
{
"itemType": "artwork",
"title": "Ketubbah",
"creators": [
{
"firstName": "Shabtai ben Ezra",
"lastName": "ha-Cohen",
"creatorType": "author"
},
{
"firstName": "Esther bat Isaac",
"lastName": "Ohayon",
"creatorType": "author"
}
],
"date": "1880-03-26",
"abstractNote": "Manuscript Ketubbah on brown paper; lobed arch of multicolor flowers and vines; blessings and good wishes for the couple form an arch above the acronym \"In a good sign\" in large, purple, square script Hebrew; text in small cursive script with several phrases in enlarged square script blue ink seal in lower right near witness signatures; blue ink seal of Rabbi M. Pardo on lower right by signatures.",
"artworkMedium": "watercolor and ink on paper",
"extra": "Accession Number: 69.0.11",
"language": "Hebrew",
"libraryCatalog": "IDEA ALM (magnesalm.org)",
"url": "http://magnesalm.org/notebook_fext.asp?site=magnes&book=40",
"attachments": [
{
"title": "Low-Resolution Image",
"mimeType": "image/jpeg"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://magnesalm.org/notebook_ext.asp?item=159652&site=magnes&lang=ENG&menu=1",
"items": [
{
"itemType": "artwork",
"title": "Gertrude Stein portrait",
"creators": [
{
"firstName": "Bachrach",
"lastName": "Studios",
"creatorType": "author"
}
],
"date": "1903-1904",
"artworkMedium": "black and white photograph",
"extra": "Accession Number: 2009.8 AR1.5",
"libraryCatalog": "IDEA ALM (magnesalm.org)",
"url": "http://magnesalm.org/notebook_ext.asp?item=159652&site=magnes&lang=ENG&menu=1",
"attachments": [
{
"title": "Low-Resolution Image",
"mimeType": "image/jpeg"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://magnesalm.org/notebook_ext.asp?item=159656&site=magnes&lang=ENG&menu=1",
"items": [
{
"itemType": "artwork",
"title": "Interior of 27 Rue de Fleurus",
"creators": [],
"date": "circa 1906-1909",
"artworkMedium": "black and white photograph",
"extra": "Accession Number: 2009.8 AR1.10",
"libraryCatalog": "IDEA ALM (magnesalm.org)",
"url": "http://magnesalm.org/notebook_ext.asp?item=159656&site=magnes&lang=ENG&menu=1",
"attachments": [
{
"title": "Low-Resolution Image",
"mimeType": "image/jpeg"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://maapilim.org.il/notebook_ext.asp?item=183576&site=maapilim&lang=ENG&menu=1",
"items": [
{
"itemType": "artwork",
"title": "Stone carving from Cyprus - Moshe Eichenbaum",
"creators": [],
"libraryCatalog": "Bintivey Haapala",
"url": "http://maapilim.org.il/notebook_ext.asp?item=183576&site=maapilim&lang=ENG&menu=1",
"attachments": [
{
"title": "Low-Resolution Image",
"mimeType": "image/jpeg"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://maapilim.org.il/notebook_ext.asp?item=185597&site=maapilim&lang=ENG&menu=1",
"items": [
{
"itemType": "book",
"title": "A Hug From Afar: One family's dramatic journey through three continents to escape the Holocaust",
"creators": [
{
"firstName": "Claire",
"lastName": "Barkey Flash",
"creatorType": "author"
},
{
"firstName": "Cynthia Barkey",
"lastName": "Flash",
"creatorType": "editor"
}
],
"language": "אנגלית",
"libraryCatalog": "Bintivey Haapala",
"shortTitle": "A Hug From Afar",
"url": "http://maapilim.org.il/notebook_ext.asp?item=185597&site=maapilim&lang=ENG&menu=1",
"attachments": [
{
"title": "Low-Resolution Image",
"mimeType": "image/jpeg"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.infocenters.co.il/gfh/notebook_ext.asp?item=98034&site=gfh&lang=HEB&menu=1",
"items": [
{
"itemType": "book",
"title": "מארכיון \"עונג שבת\": שלושה סיפורים.",
"creators": [],
"language": "פולנית",
"libraryCatalog": "ארכיון בית לוחמי הגטאות",
"shortTitle": "מארכיון \"עונג שבת\"",
"url": "http://www.infocenters.co.il/gfh/notebook_ext.asp?item=98034&site=gfh&lang=HEB&menu=1",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
98Abe Jellinek/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
let ns = {
srw: 'http://www.loc.gov/zing/srw/',
mxc: 'info:lc/xmlns/marcxchange-v2'
};
function detectSearch(item) {
return !!item.ISBN;
}
function doSearch(item) {
let ISBN = ZU.cleanISBN(item.ISBN);
let url = `https://catalogue.bnf.fr/api/SRU?version=1.2&operation=searchRetrieve&query=bib.isbn%20all%20%22${ISBN}%22`;
ZU.doGet(url, function (xmlText) {
let parser = new DOMParser();
let xml = parser.parseFromString(xmlText, 'application/xml');
let records = ZU.xpath(xml.documentElement, '/srw:searchRetrieveResponse/srw:records/srw:record', ns);
if (!records) return;
for (let record of records) {
if (ZU.xpathText(record, '//srw:recordSchema', ns) != 'marcxchange') continue;
let marcRecords = ZU.xpath(record, '//srw:recordData/mxc:record', ns);
if (!marcRecords) continue;
for (let marcRecord of marcRecords) {
marcRecord.setAttribute('xmlns:marc', 'http://www.loc.gov/MARC21/slim');
// Here we convert the XML we get from BnF from the original
// MarcXchange format into MARCXML by search-and-replacing
// the namespace. MARCXML and and MarcXchange are essentially
// the same format: the latter is a "generalization (mainly by
// weakening restrictions)" of the former. We didn't enforce
// those restrictions to begin with.
// MarcXchange spec:
// https://www.loc.gov/standards/iso25577/ISO_DIS_25577__E_.pdf
let marcxchangeText = new XMLSerializer().serializeToString(marcRecord);
let marcXMLText = marcxchangeText.replace(/<mxc:/g, '<marc:').replace(/<\/mxc:/g, '</marc:');
let translator = Zotero.loadTranslator('import');
// MARCXML
translator.setTranslator('edd87d07-9194-42f8-b2ad-997c4c7deefd');
translator.setString(marcXMLText);
translator.translate();
}
}
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "search",
"input": {
"ISBN": "9781841692203"
},
"items": [
{
"itemType": "book",
"creators": [
{
"lastName": "Markus",
"firstName": "Keith A.",
"creatorType": "author"
},
{
"lastName": "Borsboom",
"creatorType": "author",
"firstName": "Denny"
}
],
"notes": [],
"tags": [],
"seeAlso": [],
"attachments": [],
"libraryCatalog": "BnF ISBN",
"place": "New York",
"ISBN": "9781841692203",
"title": "Frontiers in test validity theory: measurement, causation and meaning",
"publisher": "Routledge",
"date": "2013",
"language": "eng",
"shortTitle": "Frontiers in test validity theory",
"series": "Multivariate applications series",
"callNumber": "150.287"
}
]
}
]
/** END TEST CASES **/
100Martin Fenner, Philipp Zumstein^https?://(www\.)?github\.com/([^/]+/[^/]+|search\?)/**
Copyright (c) 2017-2021 Martin Fenner, Philipp Zumstein
This program is free software: you can redistribute it and/or
modify it under the terms of the GNU Affero General Public License
as published by the Free Software Foundation, either version 3 of
the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public
License along with this program. If not, see
<http://www.gnu.org/licenses/>.
*/
const apiUrl = "https://api.github.com/";
function detectWeb(doc, url) {
if (url.includes("/search?")) {
if (getSearchResults(doc, true)) {
return "multiple";
}
}
if (!doc.querySelector('meta[property="og:type"][content="object"]')) {
// exclude the home page and marketing pages
return false;
}
// `og:title` is messed up when browsing a file.
if (url.startsWith(attr(doc, 'meta[property="og:url"]', 'content') + '/blob/')) {
return "computerProgram";
}
if (!/^(GitHub - )?[^/\s]+\/[^/\s]+(: .*)?$/.test(attr(doc, 'meta[property="og:title"]', 'content'))) {
// and anything without a repo name (abc/xyz) as its og:title.
// deals with repo pages that we can't scrape, like GitHub Discussions.
return false;
}
return "computerProgram";
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.repo-list-item .f4 a');
for (var i = 0; i < rows.length; i++) {
var href = rows[i].href;
var title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) {
return;
}
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var item = new Z.Item("computerProgram");
// basic metadata from the meta tags in the head
item.url = attr(doc, 'meta[property="og:url"]', 'content');
if (url.includes('/blob/') && !item.url.includes('/blob/')) {
// github is doing something weird with the og:url meta tag right now -
// it always points to the repo root (e.g. zotero/translators), even
// when we're in a specific directory/file (e.g. zotero/translators/
// blob/master/GitHub.js). this fix (hopefully) won't stick around
// long-term, but for now, let's just grab the user-facing permalink
let permalink = attr(doc, '.js-permalink-shortcut', 'href');
if (permalink) {
item.url = 'https://github.com' + permalink;
}
else {
let clipboardCopyPermalink = attr(doc, '#blob-more-options-details clipboard-copy', 'value');
if (clipboardCopyPermalink) {
item.url = clipboardCopyPermalink;
}
}
}
// Do not rely on `og:title` since GitHub isn't consistent with its meta attribute.
item.title = item.url.split('/').slice(3, 5).join('/');
item.abstractNote = attr(doc, 'meta[property="og:description"]', 'content').split(' - ')[0]
.replace(` Contribute to ${item.title} development by creating an account on GitHub.`, '');
item.libraryCatalog = "GitHub";
var topics = doc.getElementsByClassName('topic-tag');
for (var i = 0; i < topics.length; i++) {
item.tags.push(topics[i].textContent.trim());
}
ZU.doGet(apiUrl + "repos/" + item.title, function (result) {
var json = JSON.parse(result);
if (json.message && json.message.includes("API rate limit exceeded")) {
// finish and stop in this case
item.complete();
return;
}
var owner = json.owner.login;
item.programmingLanguage = json.language;
item.extra = "original-date: " + json.created_at;
item.date = json.updated_at;
if (json.license && json.license.spdx_id != "NOASSERTION") {
item.rights = json.license.spdx_id;
}
item.abstractNote = json.description;
ZU.doGet(`/${item.title}/hovercards/citation`, function (respText, xhr) {
if (xhr.status == 200) {
let doc = new DOMParser().parseFromString(respText, 'text/html');
let bibtex = attr(doc, '[aria-labelledby="bibtex-tab"] input', 'value');
if (bibtex && bibtex.trim()) {
completeWithBibTeX(item, bibtex);
return;
}
}
// if there was no CITATION.cff or the response didn't include a
// BibTeX representation, we fall back to filling in the title and
// authorship using the API.
completeWithAPI(item, owner);
}, null, null, { 'X-Requested-With': 'XMLHttpRequest' }, false);
});
}
function completeWithBibTeX(item, bibtex) {
var translator = Zotero.loadTranslator("import");
// BibTeX
translator.setTranslator("9cb70025-a888-4a29-a210-93ec52da40d4");
translator.setString(bibtex);
translator.setHandler("itemDone", function (obj, bibItem) {
let path = item.title;
delete bibItem.itemType;
delete bibItem.attachments;
delete bibItem.itemID;
Object.assign(item, bibItem);
if (item.version) {
item.complete();
}
else {
ZU.doGet(`https://raw.githubusercontent.com/${path}/HEAD/CITATION.cff`, function (cffText) {
let version = cffText.match(/^\s*(?:"version"|version)\s*:\s*"?(.+)"?\s*$/m);
if (version) {
item.versionNumber = version[1];
}
item.complete();
}, null, null, null, false);
}
});
translator.translate();
}
function completeWithAPI(item, owner) {
ZU.doGet(apiUrl + "users/" + owner, function (user) {
var jsonUser = JSON.parse(user);
var ownerName = jsonUser.name || jsonUser.login;
if (jsonUser.type == "User") {
item.creators.push(ZU.cleanAuthor(ownerName, "programmer"));
}
else {
item.company = ownerName;
}
ZU.processDocuments(`/${item.title}`, function (rootDoc) {
let readmeTitle = text(rootDoc, '#readme h1');
if (readmeTitle) {
item.title = readmeTitle;
}
item.complete();
});
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://github.com/zotero/zotero/",
"items": [
{
"itemType": "computerProgram",
"title": "Zotero",
"creators": [],
"date": "2021-07-29T14:50:36Z",
"abstractNote": "Zotero is a free, easy-to-use tool to help you collect, organize, cite, and share your research sources.",
"company": "Zotero",
"extra": "original-date: 2011-10-27T07:46:48Z",
"libraryCatalog": "GitHub",
"programmingLanguage": "JavaScript",
"url": "https://github.com/zotero/zotero",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://github.com/search?utf8=%E2%9C%93&q=topic%3Ahocr&type=",
"items": "multiple"
},
{
"type": "web",
"url": "https://github.com/datacite/schema",
"items": [
{
"itemType": "computerProgram",
"title": "DataCite Schema Repository",
"creators": [],
"date": "2021-07-23T10:14:44Z",
"abstractNote": "DataCite Metadata Schema Repository",
"company": "DataCite",
"extra": "original-date: 2011-04-13T07:08:41Z",
"libraryCatalog": "GitHub",
"programmingLanguage": "Ruby",
"url": "https://github.com/datacite/schema",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://github.com/mittagessen/kraken",
"items": [
{
"itemType": "computerProgram",
"title": "mittagessen/kraken",
"creators": [
{
"firstName": "",
"lastName": "mittagessen",
"creatorType": "programmer"
}
],
"date": "2021-07-29T12:26:11Z",
"abstractNote": "OCR engine for all the languages",
"extra": "original-date: 2015-05-19T09:24:38Z",
"libraryCatalog": "GitHub",
"programmingLanguage": "Python",
"rights": "Apache-2.0",
"url": "https://github.com/mittagessen/kraken",
"attachments": [],
"tags": [
{
"tag": "alto-xml"
},
{
"tag": "hocr"
},
{
"tag": "lstm"
},
{
"tag": "neural-networks"
},
{
"tag": "ocr"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://github.com/aurimasv/z2csl",
"items": [
{
"itemType": "computerProgram",
"title": "z2csl - Zotero to CSL extension and mappings",
"creators": [
{
"firstName": "Aurimas",
"lastName": "Vinckevicius",
"creatorType": "programmer"
}
],
"date": "2021-03-20T15:33:50Z",
"abstractNote": "Zotero extension for creating Zotero to CSL item type and field mappings.",
"extra": "original-date: 2012-05-20T07:53:58Z",
"libraryCatalog": "GitHub",
"programmingLanguage": "JavaScript",
"url": "https://github.com/aurimasv/z2csl",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://github.com/zotero/translators/blob/master/GitHub.js",
"items": [
{
"itemType": "computerProgram",
"title": "zotero/translators",
"creators": [],
"date": "2021-07-29T04:53:43Z",
"abstractNote": "Zotero Translators",
"company": "Zotero",
"extra": "original-date: 2011-07-03T17:40:38Z",
"libraryCatalog": "GitHub",
"programmingLanguage": "JavaScript",
"url": "https://github.com/zotero/translators/blob/eb4f39007e62d3d632448e184b1fd3671b3a1349/GitHub.js",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://github.com/citation-file-format/citation-file-format",
"items": [
{
"itemType": "computerProgram",
"title": "Citation File Format",
"creators": [
{
"firstName": "Stephan",
"lastName": "Druskat",
"creatorType": "author"
},
{
"firstName": "Jurriaan H.",
"lastName": "Spaaks",
"creatorType": "author"
},
{
"firstName": "Neil",
"lastName": "Chue Hong",
"creatorType": "author"
},
{
"firstName": "Robert",
"lastName": "Haines",
"creatorType": "author"
},
{
"firstName": "James",
"lastName": "Baker",
"creatorType": "author"
},
{
"firstName": "Spencer",
"lastName": "Bliven",
"creatorType": "author"
},
{
"firstName": "Egon",
"lastName": "Willighagen",
"creatorType": "author"
},
{
"firstName": "David",
"lastName": "Pérez-Suárez",
"creatorType": "author"
},
{
"firstName": "Alexander",
"lastName": "Konovalov",
"creatorType": "author"
}
],
"date": "2021-05",
"abstractNote": "A machine-readable and human-readable and -writable format for CITATION files. CITATION files provide reference and citation information for (research/scientific) software.",
"extra": "DOI: 10.5281/zenodo.4751536",
"libraryCatalog": "GitHub",
"programmingLanguage": "Python",
"rights": "CC-BY-4.0",
"url": "https://github.com/citation-file-format/citation-file-format",
"versionNumber": "1.1.0",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://github.com/citation-file-format/citation-file-format/blob/main/test/pytest.ini",
"items": [
{
"itemType": "computerProgram",
"title": "Citation File Format",
"creators": [
{
"firstName": "Stephan",
"lastName": "Druskat",
"creatorType": "author"
},
{
"firstName": "Jurriaan H.",
"lastName": "Spaaks",
"creatorType": "author"
},
{
"firstName": "Neil",
"lastName": "Chue Hong",
"creatorType": "author"
},
{
"firstName": "Robert",
"lastName": "Haines",
"creatorType": "author"
},
{
"firstName": "James",
"lastName": "Baker",
"creatorType": "author"
},
{
"firstName": "Spencer",
"lastName": "Bliven",
"creatorType": "author"
},
{
"firstName": "Egon",
"lastName": "Willighagen",
"creatorType": "author"
},
{
"firstName": "David",
"lastName": "Pérez-Suárez",
"creatorType": "author"
},
{
"firstName": "Alexander",
"lastName": "Konovalov",
"creatorType": "author"
}
],
"date": "2021-05",
"abstractNote": "A machine-readable and human-readable and -writable format for CITATION files. CITATION files provide reference and citation information for (research/scientific) software.",
"extra": "DOI: 10.5281/zenodo.4751536",
"libraryCatalog": "GitHub",
"programmingLanguage": "Python",
"rights": "CC-BY-4.0",
"url": "https://github.com/citation-file-format/citation-file-format/blob/9879c64a37a9d4f3f18b67594aa3f3bf763fb69a/test/pytest.ini",
"versionNumber": "1.1.0",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://(www\.)?ntsb\.gov/investigations/AccidentReports/Pages//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, _url) {
if (doc.querySelector('#aiBriefBox')) {
return "report";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.reporttitle a');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
let item = new Zotero.Item('report');
item.title = filterTagsInHTML(
doc.querySelector('div.page-title > *:last-child').innerHTML
.replace(' ', ' ')
.replace(/<em>/g, '<i>')
.replace(/<\/em>/g, '</i>')
.replace(/<strong>/, '<b>')
.replace(/<\/strong>/, '</b>'), 'i, b');
item.abstractNote = text(doc, '#exec-summary p');
item.reportNumber = text(doc, '#NTSBNumber')
.replace('NTSB Number:', '')
.trim();
item.reportType = 'Accident report';
item.institution = 'National Transportation Safety Board';
item.date = ZU.strToISO(text(doc, '#AdoptedDate'));
item.language = 'en';
item.url = url;
let pdfURL = attr(doc, '#FullReportDiv .link-item a', 'href');
if (pdfURL) {
item.attachments.push({
title: 'Full Text PDF',
mimeType: 'application/pdf',
url: pdfURL
});
}
item.complete();
}
function filterTagsInHTML(html, allowSelector) {
let elem = new DOMParser().parseFromString(html, 'text/html');
filterTags(elem.body, allowSelector);
return elem.body.innerHTML;
}
function filterTags(root, allowSelector) {
for (let node of root.childNodes) {
if (!node.tagName) {
continue;
}
if (node.matches(allowSelector)) {
filterTags(node, allowSelector);
}
else {
while (node.firstChild) {
let firstChild = node.firstChild;
node.parentNode.insertBefore(firstChild, node);
filterTags(firstChild, allowSelector);
}
node.remove();
}
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.ntsb.gov/investigations/AccidentReports/Pages/MAR2102.aspx",
"items": [
{
"itemType": "report",
"title": "Capsizing and Sinking of Commercial Fishing Vessel <i>Scandies Rose</i>",
"creators": [],
"date": "2021-07-13",
"abstractNote": "On December 31, 2019, about 2200 Alaska standard time, US Coast Guard Communications Detachment Kodiak received a distress call from the fishing vessel Scandies Rose. The vessel was en route from Kodiak to fishing grounds in the Bering Sea when it capsized about 2.5 miles south of Sutwik Island, Alaska, and sank several minutes later. At the time of the accident, the Scandies Rose had seven crewmembers aboard, two of whom were rescued by the Coast Guard several hours later. The other missing crewmembers were not found and are presumed dead. The Scandies Rose, valued at $15 million, was declared a total loss.",
"institution": "National Transportation Safety Board",
"language": "en",
"libraryCatalog": "NTSB Accident Reports",
"reportNumber": "MAR-21-02",
"reportType": "Accident report",
"url": "https://www.ntsb.gov/investigations/AccidentReports/Pages/MAR2102.aspx",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.ntsb.gov/investigations/AccidentReports/Pages/MAB2109.aspx",
"items": [
{
"itemType": "report",
"title": "Container Damage and Loss aboard Deck Cargo Barge <i>Ho'omaka Hou</i>, Towed by <i>Hoku Loa</i>",
"creators": [],
"date": "2021-04-06",
"abstractNote": "On June 22, 2020, about 0230 local time, the deck cargo barge Ho'omaka Hou was under tow by the towing vessel Hoku Loa off the northeast coast of the big island of Hawaii en route to Hilo, when fifty 40-foot containers stacked on the after deck of the barge toppled, causing 21 to fall into the ocean. There were no injuries or pollution reported. Eight containers were eventually recovered by salvors, and 13 remain missing. Cargo loss was estimated at $1.5 million, and damage to the barge and containers was estimated at $131,000.",
"institution": "National Transportation Safety Board",
"language": "en",
"libraryCatalog": "NTSB Accident Reports",
"reportNumber": "MAB-21-09",
"reportType": "Accident report",
"url": "https://www.ntsb.gov/investigations/AccidentReports/Pages/MAB2109.aspx",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.ntsb.gov/investigations/AccidentReports/Pages/HWY21MH006-preliminary-report.aspx",
"items": [
{
"itemType": "report",
"title": "Preliminary Report - Highway: HWY21MH006",
"creators": [],
"date": "2021-04-12",
"abstractNote": "The information in this report is preliminary and will be supplemented or corrected during the course of the investigation.",
"institution": "National Transportation Safety Board",
"language": "en",
"libraryCatalog": "NTSB Accident Reports",
"reportNumber": "HWY21MH006-preliminary-report",
"reportType": "Accident report",
"shortTitle": "Preliminary Report - Highway",
"url": "https://www.ntsb.gov/investigations/AccidentReports/Pages/HWY21MH006-preliminary-report.aspx",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.ntsb.gov/investigations/AccidentReports/Pages/pipeline.aspx",
"items": "multiple"
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://(www\.)?ancestry\.com//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (text(doc, '.pageTitle .pageIntro a').includes('United States Federal Census')) {
return "bookSection";
}
return false;
}
function doWeb(doc, url) {
scrape(doc, url);
}
function scrape(doc, url) {
let item = new Zotero.Item('bookSection');
item.title = text(doc, '.pageTitle span');
let [date, place, roll, page] = doc.querySelectorAll('.sourceText em'); // not ideal
item.bookTitle = text(doc, '.pageTitle .pageIntro a').trim()
+ ` [${place.textContent}]`;
item.publisher = 'National Archives and Records Administration';
// technically the Census is published 72 years after it's taken, but citing
// that way doesn't seem to be the convention.
item.date = date.textContent;
item.pages = `${page.textContent} (roll ${roll.textContent})`;
item.archive = 'Ancestry.com';
item.url = url.replace(/[?#].*/, '');
let recordTable = doc.querySelector('#recordServiceData');
if (recordTable) {
recordTable = recordTable.cloneNode(true);
let familyMembers = recordTable.querySelector('.tableContainerRow');
if (familyMembers) familyMembers.remove();
item.notes.push({
note: ZU.trimInternal(recordTable.outerHTML)
});
}
let imageSrc = attr(doc, '.photo.clickable img', 'src');
let dbId = imageSrc.match(/\/namespaces\/([^/]+)/)[1];
let imageId = imageSrc.match(/([^/]+)\.jpg/)[1];
ZU.doGet(
`/imageviewer/api/media/token?dbId=${dbId}&imageId=${imageId}`,
function (respText) {
try {
let json = JSON.parse(respText);
item.attachments.push({
title: 'Census Record',
mimeType: 'image/jpeg',
url: json.imageDownloadUrl
});
item.complete();
}
catch (_) {
item.complete(); // whatever, this is fragile
}
}
);
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.ancestry.com/discoveryui-content/view/131479739:2442?tid=&pid=&queryId=2a5ea51171527460c8a3755eb4b3fc1e&_phsrc=BYN5&_phstart=successSource",
"items": [
{
"itemType": "bookSection",
"title": "Albert Einstein",
"creators": [],
"date": "1940",
"archive": "Ancestry.com",
"bookTitle": "1940 United States Federal Census [Princeton, Mercer, New Jersey]",
"libraryCatalog": "Ancestry.com US Federal Census",
"pages": "10B (roll m-t0627-02357)",
"publisher": "National Archives and Records Administration",
"url": "https://www.ancestry.com/discoveryui-content/view/131479739:2442",
"attachments": [
{
"title": "Census Record",
"mimeType": "image/jpeg"
}
],
"tags": [],
"notes": [
{
"note": "<table id=\"recordServiceData\" class=\"table tableHorizontal tableHorizontalRuled\"> <tbody> <tr> <th>Name:</th> <td> Albert Einstein </td> </tr> <tr> <th>Respondent:</th> <td> Yes </td> </tr> <tr> <th>Age:</th> <td> 61 </td> </tr> <tr> <th>Estimated Birth Year:</th> <td> <span class=\"srchHit\"> <span title=\"Alternate values for this record\" class=\"altValue\">[abt 1879]</span> </span> <span title=\"This value was member submitted. Click to see details.\" class=\"altValue\"> [<button class=\"link correction\" data-tracking-event=\"content : correction clicked\">14 Mar 1879</button>] </span> </td> </tr> <tr> <th>Gender:</th> <td> Male </td> </tr> <tr> <th>Race:</th> <td> White </td> </tr> <tr> <th>Birthplace:</th> <td> Germany </td> </tr> <tr> <th>Marital Status:</th> <td> Widowed </td> </tr> <tr> <th>Relation to Head of House:</th> <td> Head </td> </tr> <tr> <th>Home in 1940:</th> <td> Princeton, Mercer, New Jersey </td> </tr> <tr> <th>Map of Home in 1940:</th> <td> <button type=\"button\" title=\"View map\" class=\"link mapLink\" data-modal-title=\"Princeton, Mercer, New Jersey\" data-place-names=\"Princeton,Mercer,New Jersey\" data-tracking-event=\"content : map link clicked\">Princeton, Mercer, New Jersey</button> </td> </tr> <tr> <th>Street:</th> <td> Mercer - Street </td> </tr> <tr> <th>House Number:</th> <td> 112 </td> </tr> <tr> <th>Farm:</th> <td> No </td> </tr> <tr> <th>Inferred Residence in 1935:</th> <td> Princeton, Mercer, New Jersey </td> </tr> <tr> <th>Residence in 1935:</th> <td> Princeton </td> </tr> <tr> <th>Resident on farm in 1935:</th> <td> No </td> </tr> <tr> <th>Citizenship:</th> <td> Having first papers </td> </tr> <tr> <th>Sheet Number:</th> <td> 10B </td> </tr> <tr> <th>Number of Household in Order of Visitation:</th> <td> 267 </td> </tr> <tr> <th>Occupation:</th> <td> Pychies Professor </td> </tr> <tr> <th>Industry:</th> <td> Private School </td> </tr> <tr> <th>House Owned or Rented:</th> <td> Owned </td> </tr> <tr> <th>Value of Home or Monthly Rental if Rented:</th> <td> 22000 </td> </tr> <tr> <th>Attended School or College:</th> <td> No </td> </tr> <tr> <th>Highest Grade Completed:</th> <td> College, 5th or subsequent year </td> </tr> <tr> <th>Hours Worked Week Prior to Census:</th> <td> 44 </td> </tr> <tr> <th>Class of Worker:</th> <td> Wage or salary worker in private work </td> </tr> <tr> <th>Weeks Worked in 1939:</th> <td> 52 </td> </tr> <tr> <th>Income:</th> <td> 5000 </td> </tr> <tr> <th>Income Other Sources:</th> <td> Yes </td> </tr> <tr> <th>Neighbors:</th> <td> <button type=\"button\" title=\"View others on page\" class=\"link neighborsLink\" data-modal-title=\"View others on page\" data-image-gid=\"m-t0627-02357-00675:2442\" data-tracking-event=\"content : neighbors link clicked\">View others on page</button> </td> </tr> </tbody> </table>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.ancestry.com/discoveryui-content/view/18443183:7884?tid=&pid=&queryId=283135001368664572d798e1a9012c06&_phsrc=oJW436&_phstart=successSource",
"items": [
{
"itemType": "bookSection",
"title": "Pauline Rosenboom",
"creators": [],
"date": "1910",
"archive": "Ancestry.com",
"bookTitle": "1910 United States Federal Census [Bronx Assembly District 34, New York, New York]",
"libraryCatalog": "Ancestry.com US Federal Census",
"pages": "4A (roll T624_1001)",
"publisher": "National Archives and Records Administration",
"url": "https://www.ancestry.com/discoveryui-content/view/18443183:7884",
"attachments": [
{
"title": "Census Record",
"mimeType": "image/jpeg"
}
],
"tags": [],
"notes": [
{
"note": "<table id=\"recordServiceData\" class=\"table tableHorizontal tableHorizontalRuled\"> <tbody> <tr> <th>Name:</th> <td> <span class=\"srchHit\">Pauline Rosenboom <span title=\"Alternate name for this record\" class=\"altValue\">[Pauline Rosenbaum]</span> </span> </td> </tr> <tr> <th>Age in 1910:</th> <td> 51 </td> </tr> <tr> <th>Birth Date:</th> <td> <span class=\"srchHit\">1859 <span title=\"Alternate date for this record\" class=\"altValue\">[1859]</span> </span> </td> </tr> <tr> <th>Birthplace:</th> <td> Austria </td> </tr> <tr> <th>Home in 1910:</th> <td> Bronx Assembly District 34, New York, New York, USA </td> </tr> <tr> <th>Street:</th> <td> est Clenton Ave </td> </tr> <tr> <th>Race:</th> <td> White </td> </tr> <tr> <th>Gender:</th> <td> Female </td> </tr> <tr> <th>Immigration Year:</th> <td> 1887 </td> </tr> <tr> <th>Relation to Head of House:</th> <td> Mother-in-law </td> </tr> <tr> <th>Marital Status:</th> <td> Widowed </td> </tr> <tr> <th>Father's Birthplace:</th> <td> Austria </td> </tr> <tr> <th>Mother's Birthplace:</th> <td> Austria </td> </tr> <tr> <th>Native Tongue:</th> <td> English </td> </tr> <tr> <th>Attended School:</th> <td> No </td> </tr> <tr> <th>Able to read:</th> <td> Yes </td> </tr> <tr> <th>Able to Write:</th> <td> Yes </td> </tr> <tr> <th>Number of Children Born:</th> <td> 7 </td> </tr> <tr> <th>Number of Children Living:</th> <td> 5 </td> </tr> <tr> <th>Neighbors:</th> <td> <button type=\"button\" title=\"View others on page\" class=\"link neighborsLink\" data-modal-title=\"View others on page\" data-image-gid=\"4450082_00484:7884\" data-tracking-event=\"content : neighbors link clicked\">View others on page</button> </td> </tr> </tbody> </table>"
}
],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://catalog\.data\.gov/dataset/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (doc.querySelector('article[itemtype="http://schema.org/Dataset"]')) {
return "document"; // will map to dataset
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('h3.dataset-heading a');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
// Data.gov gives us RDF, but it uses some schemas that the RDF translator
// doesn't understand, so for now we'll use the embedded Schema.org
// metadata.
let item = new Zotero.Item('document');
item.extra = 'Type: dataset\n'; // will map to dataset
let art = doc.querySelector('article[itemtype="http://schema.org/Dataset"]');
item.title = text(art, '[itemprop="name"]');
item.abstractNote = text(art, '[itemprop="description"]');
item.publisher = text(art, '[itemprop="publisher"] [itemprop="name"]');
item.language = 'en';
item.url = url;
for (let row of art.querySelectorAll('[rel="dc:relation"]')) {
let label = text(row, '[property="rdfs:label"]').trim();
let value = text(row, '[property="rdf:value"]');
if (label == 'Data Last Modified') {
item.date = ZU.strToISO(value);
break;
}
else if (label == 'Language') {
item.language = value;
}
}
for (let tag of doc.querySelectorAll('.tag')) {
item.tags.push(tag.textContent);
}
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://catalog.data.gov/dataset/feed-the-future-senegal-economic-growth-project-2014-2015",
"items": [
{
"itemType": "document",
"title": "Feed the Future Senegal: Economic Growth Project 2014-2015",
"creators": [],
"date": "2019-07-07",
"abstractNote": "The datasets contained in this data asset were generated through the USAID/PCE (Projet Croissance Economique or Economic Growth Project), a USAID/Senegal agriculture development project from 2009-2015. PCE employed a data collection system for monitoring and evaluation data that relied on engaging farmers and field agents of partner producer networks as active members of a data collection/feedback loop. Producer networks were trained to collect data and to use it to better plan and manage their own activities while also providing data for the project performance indicators. The producer networks used a set of data management tools established and validated through a close participatory process between the USAID/PCE technical team and partner networks across different value chains. Excel spreadsheets and GIS software were used to generate agricultural input (fertilizer, seeds) requirements and crop forecasts, track field activities, map farms, and organize harvests. The databases contain information on the producer members, partner producer organizations of the project, monitoring of agronomic activities of plots, financing, marketing, rainfall data, and results of output quality grading tests. The databases were audited by the PCE project's M&E staff and aggregated for the project's key performance indicators.",
"extra": "Type: dataset",
"language": "en",
"libraryCatalog": "Data.gov",
"publisher": "USAID",
"shortTitle": "Feed the Future Senegal",
"url": "https://catalog.data.gov/dataset/feed-the-future-senegal-economic-growth-project-2014-2015",
"attachments": [],
"tags": [
{
"tag": "agriculture"
},
{
"tag": "economic-growth"
},
{
"tag": "monitoring"
},
{
"tag": "senegal"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://catalog.data.gov/dataset/annual-statistical-supplement-2014",
"items": [
{
"itemType": "document",
"title": "Annual Statistical Supplement, 2014",
"creators": [],
"date": "2015-06-26",
"abstractNote": "The Annual Statistical Supplement, 2014 includes the most comprehensive data available on the Social Security and Supplemental Security Income programs. More than 250 statistical tables convey a wide range of information about those programs from beneficiary counts and benefit amounts to the status of the trust funds. The tables also contain data on Medicare, Medicaid, veterans' benefits, and other related income security programs. The Supplement also includes summaries of the history of the major programs and of current legislative developments and a glossary of terms used in explaining the programs and data.",
"extra": "Type: dataset",
"language": "en",
"libraryCatalog": "Data.gov",
"publisher": "Social Security Administration",
"url": "https://catalog.data.gov/dataset/annual-statistical-supplement-2014",
"attachments": [],
"tags": [
{
"tag": "2014"
},
{
"tag": "benefits-calculations"
},
{
"tag": "disability-insurance"
},
{
"tag": "hospital-insurance"
},
{
"tag": "oasdi"
},
{
"tag": "oasdi-benefit-award..."
},
{
"tag": "oasdi-coverage"
},
{
"tag": "oasdi-financing"
},
{
"tag": "oasdi-insured-status"
},
{
"tag": "old-age"
},
{
"tag": "old-age-and-survivo..."
},
{
"tag": "social-security"
},
{
"tag": "social-security-adm..."
},
{
"tag": "ssa"
},
{
"tag": "ssa-annual-statistics"
},
{
"tag": "survivors"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://catalog.data.gov/dataset?q=corn",
"items": "multiple"
}
]
/** END TEST CASES **/
150Abe Jellinek^https?://([^/]+\.)?summon\.serialssolutions\.com//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, _url) {
if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.documentSummary');
for (let row of rows) {
let id = row.id;
let title = ZU.trimInternal(text(row, 'h3'));
if (!id || !title) continue;
if (checkOnly) return true;
found = true;
items[id] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) scrape(Object.keys(items), doc.location.hostname);
});
}
}
function scrape(ids, hostname) {
let url = `/citation/export?ids=${ids.join(',')}&format=endnote&file_name=zotero`;
ZU.doGet(url, function (ris) {
let translator = Zotero.loadTranslator("import");
// RIS
translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7");
translator.setString(ris);
translator.setHandler("itemDone", function (obj, item) {
item.creators = item.creators.filter(
creator => !creator.lastName.includes('(Online service)')
);
if (item.date) {
if (item.date.includes(';')) {
item.date = item.date.split(';')[0];
}
item.date = ZU.strToISO(item.date);
}
item.libraryCatalog = `Summon 2 (${hostname})`;
item.complete();
});
translator.translate();
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://aub.summon.serialssolutions.com/#!/search?ho=t&l=en&bookMark=eNqFj01Lw0AYhFf8QFvzDzykJ_FQ2M_s7rGGWoWCl-J12WzeaGyardmN_v0G04sieBqGeRhmJuis9S2coERLRbjilClGxekvf4EmBAtOqNJKXqIkhHeMMcVKSUyu0Cz3u30DEdJVX5eQRp9uIMR00Ue_s7H27TU6r2wTIDnqFL08LDf543z9vHrKF-u5pZJJPFdOikIyXlauAMIzoqDi2pa0lCCJ4kxr7QoumOMZZpYwyEBmglQOl6UjjE3RzVhs-8I4G23jX01BKRWEZXyI745x2MJXePNNDOazgcL7bTA_Pg_sbGSDrWxXm7-Z25HZd_6jHz6b7yoHbexsY5b3uRCUEqr_G3YA3UVrQQ",
"defer": true,
"items": "multiple"
},
{
"type": "web",
"url": "http://aub.summon.serialssolutions.com/#!/search?ho=t&fvf=ContentType,Book%20Review,t&l=en&q=(test)",
"defer": true,
"items": "multiple"
},
{
"type": "web",
"url": "https://uvic.summon.serialssolutions.com/#!/search?ho=t&l=en&q=test",
"defer": true,
"items": "multiple"
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://(www\.)?saildart\.org//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
let taglineRe = /perm filename ([^[]+)\[([^,]+),([^\]]+)\](\d*).+filedate ([^\s]+)/;
function detectWeb(doc, _url) {
let viewFrame = doc.querySelector('frame[name="view"]');
if (viewFrame) {
doc = viewFrame.contentWindow.document;
}
if (taglineRe.test(text(doc, 'div#tagline'))) {
return "computerProgram";
}
return false;
}
function doWeb(doc, url) {
let viewFrame = doc.querySelector('frame[name="view"]');
if (viewFrame) {
doc = viewFrame.contentWindow.document;
}
let item = new Zotero.Item('computerProgram');
let meta = text(doc, 'div#tagline').match(taglineRe);
let [, title, project, owner, rev, date] = meta;
item.title = title;
item.seriesTitle = project;
item.creators.push(mapUsername(owner));
item.versionNumber = rev;
item.date = date; // already in ISO form
item.attachments.push({
title: 'Snapshot',
document: doc
});
item.url = url;
item.company = 'Stanford Artificial Intelligence Laboratory';
item.archive = 'SAILDART';
item.complete();
}
function mapUsername(username) {
let mapping = {
LCS: "Leland Smith",
JMC: "John McCarthy",
RWW: "Richard Weyhrauch",
CLT: "Carolyn Talcott",
DEK: "Don Knuth",
LCW: "Curt Widdoes",
LES: "Les Earnest",
JAM: "Andy Moorer",
TVR: "Tovar",
ZM: "Zohar Manna",
RFN: "Rosemary F. Napier",
HPM: "Hans Moravec",
REM: "Robert Maas",
FWH: "Friedrich VonHenke",
RPG: "Richard P. Gabriel",
JMG: "John Grey",
TOB: "Tom Binford",
MUS: "John M. Chowning",
ME: "Martin Frost",
GFS: "George Schnurle",
PN: "Peter Nye",
SEK: "Scott Kim",
ALS: "Arthur Samuel",
ARK: "Arthur Keller",
AVB: "Andy Bechtolsheim",
REF: "Bob Filman",
BGB: "Bruce Baumgart",
TW: "Terry Winograd",
MSM: "Shahid Mujtaba",
KRD: "Randy Davis",
PAM: "Paul Martin",
PW: "Paul Wieneke",
DEW: "David E. Wilkins",
GHB: "Garrett Bowles",
DCO: "Derek Oppen",
EJG: "Erik Gilbert",
ROD: "Rodney A. Brooks",
TED: "Ted Panofsky",
BLF: "Bill Faught",
DGL: "Garreth Loy",
MMM: "Mike McNabb",
YM: "Yonatan Malachi",
DRB: "David Barstow",
JK: "Jussi Ketonen",
REG: "Ralph Gorin",
RDG: "Russell Greiner",
WP: "Wolfgang Polak",
JBR: "Jeff Rubin",
JLS: "Juan Ludlow",
BPM: "Brian McCune",
PMF: "Mike Farmwald",
PHY: "Phyllis Winkler",
MUZ: "Loren Rush",
CG: "Chris Goad",
JP: "Jorge Phillips",
JJ: "Jerrold Ginsparg",
JOS: "Julius Smith",
DAV: "Dave Smith",
DCL: "David Luckham",
DPB: "Denny Brown",
ARG: "Ron Goldman",
RBA: "Rosemary Brock",
LYN: "Lynne Toribara",
JJC: "John J. Craig",
SUZ: "Nori Suzuki",
JJW: "Joe Weening",
AJT: "Arthur Thomas",
HHB: "Harlyn Baker",
JRA: "John Allen",
JED: "Jim Davidson",
DBL: "Doug Lenat",
SMG: "Steven German",
BH: "Brian Harvey",
KMC: "Ken Colby",
DLO: "David Lowe",
MJC: "Mike Clancy",
PDQ: "Lynn Quam",
RHT: "Russ Taylor",
RKN: "Ram Nevatia",
JB: "Juan Bulnes-Rozas",
JJM: "Jorge Morales",
RCB: "Bob Bolles",
WD: "Whit Diffie",
DON: "Don Woods",
MJH: "Jo Hannah",
BIS: "Barry Soroka",
DWP: "Dave Poole",
TAG: "Tom Gafford",
FC: "Frederick Chow",
DBG: "Don Gennery",
ND: "Nachum Dershowitz",
BRG: "John Berger",
BES: "Bruce Shimano",
RDA: "Dave Arnold",
ROB: "Robert Poor",
HYS: "Yung Shen",
FML: "Frank Liang",
EK: "Elaine Kant",
MFB: "Martin Brooks",
HJS: "Hanan Samet",
RAK: "Dick Karp",
MRC: "Mark Crispin",
NWD: "David Siegel",
DES: "David Shaw",
AH: "Annette Herskovits",
KIC: "Kicha Ganapathy",
MLM: "Mitch Model",
JJK: "Jonathan King",
RV: "Richard Vistnes",
H: "Jack Holloway",
EHS: "Bridge Stuart",
GIO: "Gio Wiederhold",
PB: "Peter Blicher",
RF: "Raphael Finkel",
DBA: "Bruce Anderson",
JWG: "John Gordon",
JRL: "Jim Low",
JC: "John Chowning",
NJM: "Neil Miller",
BLB: "Bruce Bullock",
GLB: "Gianluigi Bellin",
DRF: "David Fuchs",
AAM: "Allan A Miller",
RSF: "Ross Finlayson",
OK: "Oussama Khatib",
SJF: "Shel Finkelstein",
RWG: "Bill Gosper",
RPH: "Dick Helliwell",
SL: "Sidney Liebes",
KIP: "Kip Sheeline",
ML: "Michael R. Lowry",
WLS: "Bill Scherlis",
LIS: "Louis Steinberg",
JKS: "Ken Salisbury",
ROZ: "Martin Morf",
SGK: "Stan Kugell",
SJG: "Matthew Ginsberg",
SJW: "Stephen Westfold",
BIL: "Bill Schottstaedt",
JFS: "Joachim Schreiber",
JRD: "Jacques Desarmenie",
STT: "Steve Tappel",
BO: "Bo Eross",
DCS: "Dan Swinehart",
TM: "Tom McWilliams",
LTP: "Luis Trabb-Pardo",
HWC: "Hon Wah Chin",
DML: "David Levy",
PMP: "Phil Petit",
RCP: "Roger Parkison",
CJR: "Charles Rieger",
JMS: "John Strawn",
KS: "Ken Shoemake",
JDH: "John Hobby",
RXM: "Rick McWilliams",
UW: "Bill Menkin",
LEE: "Dan Lee",
JOE: "Joe Zingheim",
YYY: "Yoram Yakimovsky",
PAT: "Patte Wood",
TJW: "Todd Wagner",
RWF: "Robert W. Floyd",
CGN: "Greg Nelson",
RSC: "Corky Cartwright",
PAW: "Patte Wood",
MWK: "Mark Kahrs",
MA: "Martin Abadi",
PTZ: "Polle Zellweger",
HJL: "Howard Larsen",
MAS: "Marianne Siroker",
MLB: "Marc Lebrun",
VDS: "Vic Scheinman",
JEG: "Johannes Goebel",
JRM: "Jan Mattox",
IAZ: "Ignacio Zabala-Salelles",
LOU: "Lou Paul",
AB: "Avron Barr",
ELM: "Ed McGuire",
LGC: "Lewis Creary",
REP: "Richard Pattis",
NMG: "Neil Goldman",
CCG: "Cordell Green",
MFP: "Michael Plass",
CJS: "Connie Stanley",
RP: "Robert Poor",
JRG: "John C. Gilbert",
FRM: "Dick Moore",
BRP: "Bruce Pennycook",
GFF: "Geoff Goodfellow",
YOM: "Yoram O. Moses",
LMM: "Larry Masinter",
BG: "Bill Glassmire",
MAL: "Malcolm Newey",
KKP: "Karl Pingle",
RLD: "Robert Drysdale",
YAW: "Yorick Wilks",
DMC: "David M. Chelberg",
RJB: "Richard Beigel",
SM: "Scott McGregor"
};
let fullName = mapping[username];
if (fullName) {
return ZU.cleanAuthor(fullName, 'programmer');
}
else {
return {
lastName: username,
creatorType: 'programmer',
fieldMode: 1
};
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.saildart.org/ERRATA.TEX[TEX,DEK]33",
"items": [
{
"itemType": "computerProgram",
"title": "ERRATA.TEX",
"creators": [
{
"firstName": "Don",
"lastName": "Knuth",
"creatorType": "programmer"
}
],
"date": "1985-04-17",
"archive": "SAILDART",
"company": "Stanford Artificial Intelligence Laboratory",
"libraryCatalog": "SAILDART",
"seriesTitle": "TEX",
"url": "https://www.saildart.org/ERRATA.TEX[TEX,DEK]33",
"versionNumber": "33",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.saildart.org/CRAMM.SAI[PAT,LMM]",
"items": [
{
"itemType": "computerProgram",
"title": "CRAMM.SAI",
"creators": [
{
"firstName": "Larry",
"lastName": "Masinter",
"creatorType": "programmer"
}
],
"date": "1973-09-03",
"archive": "SAILDART",
"company": "Stanford Artificial Intelligence Laboratory",
"libraryCatalog": "SAILDART",
"seriesTitle": "PAT",
"url": "https://www.saildart.org/CRAMM.SAI[PAT,LMM]",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Félix Brezo (@febrezo)^https?://([a-z]+\.)?boe\.es//*
BOE Translator
Copyright (C) 2020-2021 Félix Brezo, felixbrezo@disroot.org
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the Affero GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
function detectWeb(doc, url) {
if (url.includes("diario_boe") || url.includes("www.boe.es/eli") || url.includes("/doc.php")) {
return "statute";
}
return false;
}
function doWeb(doc, url) {
var resourceType = detectWeb(doc, url);
var newItem = new Zotero.Item(resourceType);
var metadataUri;
if (!url.includes("/xml")) {
var index = 0;
while (true) {
index++;
metadataUri = ZU.xpathText(doc, "(//meta[@property='http://data.europa.eu/eli/ontology#is_embodied_by'])[" + index + "]/@resource");
if (!metadataUri || metadataUri.includes("/xml")) {
break;
}
}
}
else {
metadataUri = url;
}
Zotero.Utilities.HTTP.doGet(metadataUri, function (resText) {
// Clean and parse metadata web
resText = resText.replace(/<!DOCTYPE[^>]*>/, "").replace(/<\?xml[^>]*\?>/, "");
resText = Zotero.Utilities.trim(resText);
var parser = new DOMParser();
var metadataDoc = parser.parseFromString(resText, "text/xml");
// Start scraping
var tmpAuthor = ZU.xpathText(metadataDoc, "//departamento");
if (tmpAuthor) {
newItem.creators.push({ lastName: tmpAuthor, creatorType: "author", fieldMode: 1 });
}
var tmpDate = ZU.xpathText(metadataDoc, "//fecha_publicacion");
newItem.dateEnacted = ZU.strToISO(tmpDate.substring(0, 4) + "/" + tmpDate.substring(4, 6) + "/" + tmpDate.substring(6, 8));
newItem.nameOfAct = ZU.xpathText(metadataDoc, "//titulo").replace(/\.$/, ""); // Remove trailing dot
newItem.section = ZU.xpathText(metadataDoc, "//seccion");
newItem.pages = ZU.xpathText(metadataDoc, "//pagina_inicial") + "-" + ZU.xpathText(metadataDoc, "//pagina_final");
newItem.session = ZU.xpathText(metadataDoc, "//diario") + " núm. " + ZU.xpathText(metadataDoc, "//diario_numero");
newItem.codeNumber = ZU.xpathText(metadataDoc, "//identificador");
newItem.publicLawNumber = ZU.xpathText(metadataDoc, "//rango") + " " + ZU.xpathText(metadataDoc, "//numero_oficial");
newItem.url = ZU.xpathText(metadataDoc, "//url_eli");
// Adding the attachment
newItem.attachments.push({
title: "Snapshot",
mimeType: "text/html",
url: url
});
newItem.complete();
});
}/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.boe.es/eli/es/rd/2020/06/30/614",
"items": [
{
"itemType": "statute",
"nameOfAct": "Real Decreto 614/2020, de 30 de junio, por el que se establece una cualificación profesional de la familia profesional Comercio y Marketing, que se incluye en el Catálogo Nacional de Cualificaciones Profesionales",
"creators": [
{
"lastName": "Ministerio de Educación y Formación Profesional",
"creatorType": "author",
"fieldMode": 1
}
],
"dateEnacted": "2020-07-20",
"codeNumber": "BOE-A-2020-8150",
"pages": "53856-53876",
"publicLawNumber": "Real Decreto 614/2020",
"section": "1",
"session": "Boletín Oficial del Estado núm. 197",
"url": "https://www.boe.es/eli/es/rd/2020/06/30/614",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.boe.es/eli/es/rd/2020/06/30/614/dof/spa/xml",
"items": [
{
"itemType": "statute",
"nameOfAct": "Real Decreto 614/2020, de 30 de junio, por el que se establece una cualificación profesional de la familia profesional Comercio y Marketing, que se incluye en el Catálogo Nacional de Cualificaciones Profesionales",
"creators": [
{
"lastName": "Ministerio de Educación y Formación Profesional",
"creatorType": "author",
"fieldMode": 1
}
],
"dateEnacted": "2020-07-20",
"codeNumber": "BOE-A-2020-8150",
"pages": "53856-53876",
"publicLawNumber": "Real Decreto 614/2020",
"section": "1",
"session": "Boletín Oficial del Estado núm. 197",
"url": "https://www.boe.es/eli/es/rd/2020/06/30/614",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.boe.es/diario_boe/xml.php?id=BOE-A-1978-31229",
"items": [
{
"itemType": "statute",
"nameOfAct": "Constitución Española",
"creators": [
{
"lastName": "Cortes Generales",
"creatorType": "author",
"fieldMode": 1
}
],
"dateEnacted": "1978-12-29",
"codeNumber": "BOE-A-1978-31229",
"pages": "29313-29424",
"publicLawNumber": "Constitución",
"section": "1",
"session": "Boletín Oficial del Estado núm. 311",
"url": "https://www.boe.es/eli/es/c/1978/12/27/(1)",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.boe.es/buscar/doc.php?id=BOE-A-1978-31229",
"items": [
{
"itemType": "statute",
"nameOfAct": "Constitución Española",
"creators": [
{
"lastName": "Cortes Generales",
"creatorType": "author",
"fieldMode": 1
}
],
"dateEnacted": "1978-12-29",
"codeNumber": "BOE-A-1978-31229",
"pages": "29313-29424",
"publicLawNumber": "Constitución",
"section": "1",
"session": "Boletín Oficial del Estado núm. 311",
"url": "https://www.boe.es/eli/es/c/1978/12/27/(1)",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://(www\.)?harpers\.org//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (doc.querySelector('.single-article')) {
return "magazineArticle";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('a.hit-link');
if (!rows.length) rows = doc.querySelectorAll('.issue-readings a.ac-title');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
item.title = text(doc, '.title');
let subtitle = text(doc, '.subheading');
if (subtitle) item.title += `: ${subtitle}`;
item.creators = [];
let header = doc.querySelector('.title-header');
if (!header) header = doc.querySelector('.article-header');
for (let author of header.querySelectorAll('a[rel="author"]')) {
item.creators.push(ZU.cleanAuthor(author.innerText, 'author'));
}
item.tags = [];
for (let tag of doc.querySelectorAll('.tags .tag')) {
item.tags.push({ tag: tag.textContent.trim() });
}
item.volume = text(doc, '.related-issue-text .title')
.replace('issue', '');
item.abstractNote = ZU.cleanTags(item.abstractNote);
item.ISSN = '0017-789X';
item.publicationTitle = 'Harper\'s Magazine';
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.itemType = 'magazineArticle';
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://harpers.org/archive/2009/07/labors-last-stand/?single=1",
"items": [
{
"itemType": "magazineArticle",
"title": "Labor’s Last Stand: The foul legacy of Louisiana oil",
"creators": [
{
"firstName": "Ken",
"lastName": "Silverstein",
"creatorType": "author"
}
],
"date": "2009-07-01T00:00:22Z",
"ISSN": "0017-789X",
"abstractNote": "The corporate campaign to kill the Employee Free Choice Act",
"language": "en",
"libraryCatalog": "harpers.org",
"publicationTitle": "Harper's Magazine",
"shortTitle": "Labor’s Last Stand",
"url": "https://harpers.org/archive/2009/07/labors-last-stand/",
"volume": "July 2009",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "2009-"
},
{
"tag": "21st century"
},
{
"tag": "Business and politics"
},
{
"tag": "Chamber of Commerce of the United States of America"
},
{
"tag": "Coalition for a Democratic Workplace"
},
{
"tag": "Corporations"
},
{
"tag": "Employee Free Choice Act"
},
{
"tag": "Glenn Spencer"
},
{
"tag": "Labor movement"
},
{
"tag": "Labor unions"
},
{
"tag": "Law and legislation"
},
{
"tag": "Lobbying"
},
{
"tag": "Organizing"
},
{
"tag": "Political activity"
},
{
"tag": "Politics and government"
},
{
"tag": "United States"
},
{
"tag": "United StatesNational Labor Relations Board"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://harpers.org/archive/2013/11/",
"items": "multiple"
},
{
"type": "web",
"url": "https://harpers.org/archive/2021/07/history-as-end-politics-of-the-past-matthew-karp/",
"items": [
{
"itemType": "magazineArticle",
"title": "History As End: 1619, 1776, and the politics of the past",
"creators": [
{
"firstName": "Matthew",
"lastName": "Karp",
"creatorType": "author"
}
],
"date": "2021-06-08T21:39:29Z",
"ISSN": "0017-789X",
"abstractNote": "1619, 1776, and the politics of the past",
"language": "en",
"libraryCatalog": "harpers.org",
"publicationTitle": "Harper's Magazine",
"shortTitle": "History As End",
"url": "https://harpers.org/archive/2021/07/history-as-end-politics-of-the-past-matthew-karp/",
"volume": "July 2021",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "1619 Project"
},
{
"tag": "1861-1865"
},
{
"tag": "African Americans"
},
{
"tag": "Carol M. (Carol Miller) Swain"
},
{
"tag": "Civil war"
},
{
"tag": "Civilization"
},
{
"tag": "Conservatism"
},
{
"tag": "Historicism"
},
{
"tag": "History"
},
{
"tag": "Larry P. Arnn"
},
{
"tag": "Liberalism"
},
{
"tag": "Matthew Spalding"
},
{
"tag": "Nikole Hannah-Jones"
},
{
"tag": "Race relations"
},
{
"tag": "Racial justice"
},
{
"tag": "Slavery"
},
{
"tag": "The 1776 Report"
},
{
"tag": "United States"
},
{
"tag": "United States Revolution 1775-1783"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://harpers.org/2018/11/review-the-job-work-and-its-future-in-a-time-of-radical-change-ellen-ruppel-shell/",
"items": [
{
"itemType": "magazineArticle",
"title": "The Future of Work: Can suicide be predicted?",
"creators": [
{
"firstName": "Jessi",
"lastName": "Stevens",
"creatorType": "author"
}
],
"date": "2018-11-30T18:03:56Z",
"ISSN": "0017-789X",
"abstractNote": "No bleaker than it’s ever been",
"language": "en",
"libraryCatalog": "harpers.org",
"publicationTitle": "Harper's Magazine",
"shortTitle": "The Future of Work",
"url": "https://harpers.org/2018/11/review-the-job-work-and-its-future-in-a-time-of-radical-change-ellen-ruppel-shell/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Amazon.com (Firm)"
},
{
"tag": "Angela Davis"
},
{
"tag": "Automation"
},
{
"tag": "Effect of automation on"
},
{
"tag": "Labor"
},
{
"tag": "Marxian economics"
},
{
"tag": "Marxian historiography"
},
{
"tag": "Rosa Luxemburg"
},
{
"tag": "The Job: Work and Its Future in a Time of Radical Change"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://www\.cia\.gov/the-world-factbook/countries//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (getSearchResults(doc, true)) {
return "multiple";
}
else if (doc.querySelector('h1.hero-title')) {
return "encyclopediaArticle";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('#index-content-section a[href*="/countries/"]');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
let item = new Zotero.Item('encyclopediaArticle');
item.title = text(doc, 'h1.hero-title');
item.encyclopediaTitle = 'The World Factbook';
item.publisher = 'Central Intelligence Agency';
item.date = ZU.strToISO(text(doc, '.header-subsection-date'));
item.url = url;
item.language = 'en';
item.libraryCatalog = 'CIA.gov';
item.attachments.push({
title: 'Snapshot',
document: doc
});
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.cia.gov/the-world-factbook/countries/australia/",
"items": [
{
"itemType": "encyclopediaArticle",
"title": "Australia",
"creators": [],
"date": "2021-07-06",
"encyclopediaTitle": "The World Factbook",
"language": "en",
"libraryCatalog": "CIA.gov",
"publisher": "Central Intelligence Agency",
"url": "https://www.cia.gov/the-world-factbook/countries/australia/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.cia.gov/the-world-factbook/countries/",
"items": "multiple"
}
]
/** END TEST CASES **/
100Philipp Zumstein^https?://([^.]+\.)?medium\.com/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2016-2021 Philipp Zumstein and Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (doc.querySelector('article')) {
return "blogPost";
} else if (getSearchResults(doc, true)) {
return "multiple";
}
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = ZU.xpath(doc, '//a[@data-post-id and h3]|//div[contains(@class, "postArticle-content")]/a[section][1]|//a[div[contains(@class, "postArticle-content")]]|//h1//a[@rel="noopener"]');
for (let row of rows) {
var href = row.href;
var title = ZU.xpathText(row, './/h2|.//h3');
if (!title) title = row.textContent;
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) {
return true;
}
ZU.processDocuments(Object.keys(items), scrape);
});
} else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
delete item.publicationTitle;
item.blogTitle = JSON.parse(text(doc, 'script[type="application/ld+json"]'))
.publisher.name;
item.complete();
});
translator.getTranslatorObject(function(trans) {
trans.itemType = "blogPost";
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://medium.com/technology-and-society",
"items": "multiple"
},
{
"type": "web",
"url": "https://medium.com/search?q=labor",
"defer": true,
"items": "multiple"
},
{
"type": "web",
"url": "https://medium.com/@zeynep",
"items": "multiple"
},
{
"type": "web",
"url": "https://medium.com/message/what-if-the-feature-is-the-bug-7957d8e685c4",
"items": [
{
"itemType": "blogPost",
"title": "What If the Feature Is the Bug?",
"creators": [
{
"firstName": "Zeynep",
"lastName": "Tufekci",
"creatorType": "author"
}
],
"date": "2014-04-24T12:59:00.600Z",
"abstractNote": "Election monitoring, new power of social media and old power of structural power",
"blogTitle": "The Message",
"language": "en",
"url": "https://medium.com/message/what-if-the-feature-is-the-bug-7957d8e685c4",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://susanorlean.medium.com/lessons-from-an-old-dog-about-creaky-bones-and-graying-hair-9539ca79e49",
"items": [
{
"itemType": "blogPost",
"title": "Lessons from an Old Dog About Creaky Bones and Graying Hair",
"creators": [
{
"firstName": "Susan",
"lastName": "Orlean",
"creatorType": "author"
}
],
"date": "2021-07-15T16:37:56.246Z",
"abstractNote": "The terrible truth about pets aging faster than you",
"blogTitle": "Medium",
"language": "en",
"url": "https://susanorlean.medium.com/lessons-from-an-old-dog-about-creaky-bones-and-graying-hair-9539ca79e49",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://medium.com/illumination-curated/4-solid-facts-to-help-you-overcome-your-fear-of-selling-49be17f87255",
"items": [
{
"itemType": "blogPost",
"title": "4 Solid Facts To Help You Overcome Your Fear of Selling",
"creators": [
{
"firstName": "Dennis De",
"lastName": "Silva",
"creatorType": "author"
}
],
"date": "2021-07-19T19:18:52.609Z",
"abstractNote": "There is still hope introverts, do not despair",
"blogTitle": "ILLUMINATION-Curated",
"language": "en",
"url": "https://medium.com/illumination-curated/4-solid-facts-to-help-you-overcome-your-fear-of-selling-49be17f87255",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Abe Jellinekhttps?://(www\.)?artnet\.com//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, _url) {
if (doc.querySelector('.artworkInfo')) {
return "artwork";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.artworkBox p a[href*="/artists/"]');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, _url) {
let item = new Zotero.Item('artwork');
let json = JSON.parse(text(doc, 'script[type="application/ld+json"]'));
item.title = json.name;
item.abstractNote = json.description;
item.artworkMedium = (json.artMedium || []).join(',');
item.artworkSize = [json.width, json.height, json.depth]
.map(dim => dim.name).filter(s => s && !/^0\s/.test(s)).join(' x ');
item.date = json.dateCreated;
item.url = attr(doc, 'link[rel="canonical"]', 'href');
if (json.creator) {
item.creators.push(ZU.cleanAuthor(json.creator.name, 'artist'));
}
if (json.contributor) {
item.creators.push(ZU.cleanAuthor(json.contributor.name, 'contributor'));
}
if (json.image) {
item.attachments.push({
title: 'Artwork Image',
mimeType: 'image/jpeg',
url: json.image
});
}
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://www.artnet.com/artists/alexander-calder/zigzag-sun-and-crags-a-G6fqVgnImvcCbM8DkCx4tA2",
"items": [
{
"itemType": "artwork",
"title": "Zigzag Sun and Crags",
"creators": [
{
"firstName": "Alexander",
"lastName": "Calder",
"creatorType": "artist"
}
],
"date": "1972",
"artworkMedium": "gouache and ink on paper",
"artworkSize": "43 in x 29.5 in",
"libraryCatalog": "artnet",
"url": "http://www.artnet.com/artists/alexander-calder/zigzag-sun-and-crags-a-G6fqVgnImvcCbM8DkCx4tA2",
"attachments": [
{
"title": "Artwork Image",
"mimeType": "image/jpeg"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.artnet.com/artists/maurizio-cattelan/untitled-bar-a-npXYQSapSJyoVj3L3iBV9A2",
"items": [
{
"itemType": "artwork",
"title": "Untitled (BAR)",
"creators": [
{
"firstName": "Maurizio",
"lastName": "Cattelan",
"creatorType": "artist"
}
],
"date": "1997",
"artworkMedium": "Plexiglass, blue neon and stainless steel",
"artworkSize": "65 cm x 151 cm x 11 cm",
"libraryCatalog": "artnet",
"url": "http://www.artnet.com/artists/maurizio-cattelan/untitled-bar-a-npXYQSapSJyoVj3L3iBV9A2",
"attachments": [
{
"title": "Artwork Image",
"mimeType": "image/jpeg"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.artnet.com/artists/frantisek-muzika/burial-mound-i-YgbRktG2GC7Vo-U_6GOBPQ2",
"items": [
{
"itemType": "artwork",
"title": "Burial Mound I",
"creators": [
{
"firstName": "Frantisek",
"lastName": "Muzika",
"creatorType": "artist"
}
],
"artworkMedium": "Oil on cardboard",
"artworkSize": "46 CM x 33 CM",
"libraryCatalog": "artnet",
"url": "http://www.artnet.com/artists/frantisek-muzika/burial-mound-i-YgbRktG2GC7Vo-U_6GOBPQ2",
"attachments": [
{
"title": "Artwork Image",
"mimeType": "image/jpeg"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.artnet.com/search/artworks/?q=cattle",
"defer": true,
"items": "multiple"
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://library\.artstor\.org//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('#/asset/')) {
if (text(doc, '[data-qa-id="worktype"]').includes('Map')) {
return "map";
}
else if (doc.querySelector('.video-player')) {
return "videoRecording";
}
else {
return "artwork";
}
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
Z.monitorDOMChanges(doc.querySelector('app-root'));
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.card');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(text(row, '.asset-title'));
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) {
Object.keys(items).forEach((url) => {
ZU.doGet(buildMetadataURL(url),
function (respText) {
scrape(doc, url, JSON.parse(respText));
});
});
}
});
}
else {
ZU.doGet(buildMetadataURL(url), function (respText) {
scrape(doc, url, JSON.parse(respText));
});
}
}
function buildMetadataURL(pageURL) {
let idMatches = pageURL.match(/\/asset\/([^/;]+)(;|$)/);
if (idMatches) {
let id = idMatches[1];
return `https://library.artstor.org/api/v1/metadata?object_ids=${id}&legacy=false`;
}
// "encrypted" IDs (external collections)
idMatches = pageURL.match(/\/asset\/[^/]+\/[^/]+\/([^?/;]+)/);
if (!idMatches) {
throw new Error('Could not extract ID from ARTstor URL: ' + pageURL);
}
let id = idMatches[1];
return `https://library.artstor.org/api/v2/items/resolve?encrypted_id=${id}&ref=&legacy=false&openlib=true`;
}
function scrape(doc, url, json) {
if (!json.success || !json.metadata.length) {
throw new Error('ARTstor metadata retrieval failed');
}
let meta = json.metadata[0];
let item = new Zotero.Item(resolveTypeID(meta.object_type_id));
item.DOI = ZU.cleanDOI(meta.doi);
// URL will be overwritten if the accession number has a source link
if (url.includes(';')) {
url = url.substring(0, url.indexOf(';'));
}
item.url = url;
for (let { fieldName, fieldValue } of meta.metadata_json) {
switch (fieldName) {
case 'Work Type':
if (fieldValue.includes('Map')) {
item.itemType = 'map';
}
item.tags.push({ fieldValue });
break;
case 'Creator': {
let type = 'artist';
if (item.itemType == 'map') {
type = 'cartographer';
}
else if (item.itemType == 'videoRecording') {
type = 'contributor'; // sometimes cast member, sometimes director
}
fieldValue = fieldValue
.replace(/^[^:]+:/, '')
.replace(/\(.*\)/, '')
.replace(/\d+-(\d+)?/, '');
item.creators.push(ZU.cleanAuthor(fieldValue, type, true));
break;
}
case 'Title':
if (!item.title) {
// titles after the first are usually annotated or otherwise
// difficult to deal with
item.title = fieldValue;
}
else {
item.extra = append(item.extra, `Alternate Title: ${fieldValue}`);
}
break;
case 'Date':
item.date = ZU.strToISO(fieldValue);
break;
case 'Measurements':
item.artworkSize = fieldValue;
break;
case 'Description':
case 'Collector\'s Notes':
item.abstractNote = append(item.abstractNote, fieldValue);
break;
case 'Repository':
item.archive = ZU.cleanTags(fieldValue);
break;
case 'Accession Number':
case 'Physical Location of Original': {
item.archiveLocation = ZU.cleanTags(fieldValue);
let linkMatches = fieldValue.match(/<a href=["']?([^>]+)["']?>/i);
if (linkMatches) {
item.url = linkMatches[1];
}
break;
}
case 'Subject':
item.tags.push(...fieldValue.split(';').map(tag => ({ tag })));
break;
case '_Archival Location':
if (!item.archiveLocation) {
// these are not often as useful as accession numbers
item.archiveLocation = fieldValue;
}
break;
case 'Rights':
case 'License':
item.rights = append(item.rights, ZU.cleanTags(fieldValue));
break;
case 'Location':
item.extra = append(item.extra, `Depicted Location: ${fieldValue}`);
break;
case 'Source':
if (fieldValue.startsWith('Photographer:')) {
item.creators.push(
ZU.cleanAuthor(
fieldValue.substring('Photographer:'.length),
'artist'
)
);
}
break;
case 'Notes':
item.notes.push({ note: fieldValue });
break;
case 'Scale':
if (item.itemType == 'map') {
item.scale = fieldValue;
}
break;
case 'Type':
if (item.itemType == 'map') {
item.mapType = fieldValue;
}
break;
case 'Extent':
if (item.itemType == 'videoRecording') {
item.runningTime = fieldValue;
}
break;
default:
Z.debug(`Unknown field: ${fieldName} = ${fieldValue}`);
}
}
if (!item.title) {
item.title = 'Untitled';
}
// PDF attachments not handled yet
if (json.imageUrl) {
// ideal situation: the JSON has a direct image URL in it
item.attachments.push({
title: 'Artwork Image',
mimeType: 'image/jpeg',
url: (json.imageServer || 'https://stor.artstor.org/') + json.imageUrl
});
}
else if (meta.image_url) {
// almost ideal: we get a URL with some extraneous info that we need to
// clean, but after we do that, we can fetch the image directly
let basePart = 'https://stor.artstor.org/iiif/fpx/';
let idPart = meta.image_url.replace(/\.fpx.*/, '.fpx');
let imagePart = `/full/${meta.width},/0/default.jpg`;
item.attachments.push({
title: 'Artwork Image',
mimeType: 'image/jpeg',
url: basePart + idPart + imagePart
});
}
else if (meta.image_compound_urls && meta.image_compound_urls.length) {
// not really very ideal: we need to make a second GET request for the
// "compound image" metadata
let imageURLs = meta.image_compound_urls
.map(imgURL => 'https://stor.artstor.org/iiif/' + imgURL);
ZU.doGet(imageURLs, function (respText) {
let { '@id': imageURL, width } = JSON.parse(respText);
item.attachments.push({
title: 'Artwork Image',
mimeType: 'image/jpeg',
url: `${imageURL}/full/${width},/0/default.jpg`
});
}, function () {
// when all requests have completed
item.complete();
});
return;
}
else if (doc) {
// bad: this last resort will fail if the user hasn't clicked the
// download link already (which they probably haven't). but at least
// it'll alert them that the translator *tried* to download the image,
// so they can do it themselves if they need to.
item.attachments.push({
title: 'Artwork Image',
mimeType: 'image/jpeg',
url: attr(doc, '#downloadAssetLink', 'href')
});
}
item.complete();
}
function resolveTypeID(typeID) {
switch (typeID) {
case 24:
return 'videoRecording';
default:
Z.debug('Unknown type ID (probably artwork): ' + typeID);
return 'artwork';
}
}
function append(existingText, newText) {
if (!existingText) {
return newText;
}
if (!newText) {
return existingText;
}
return existingText + '\n' + newText;
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://library.artstor.org/#/asset/openlibrary/external/4jEkdDElLjUzRkY6fz5%252BRXlDOHkje1x9fg%253D%253D",
"items": [
{
"itemType": "artwork",
"title": "Trailer Home",
"creators": [
{
"firstName": "Barbara",
"lastName": "Lane",
"creatorType": "artist"
}
],
"date": "2001",
"extra": "Alternate Title: Exterior view\nDepicted Location: Bradford County, Pennsylvania",
"libraryCatalog": "ARTstor",
"rights": "Bryn Mawr College has made these images, which were taken by current and former faculty, students, and staff, and in some cases friends of the College, available for personal or research use. Users of these images are expected to abide by all copyright and other intellectual property laws. Where we know that Bryn Mawr College owns the copyright, we have attempted to include that information, because Bryn Mawr College grants any user the right to make any use of those images. In other cases the College has secured permission to make the image available, but the photographer still owns the copyright and all rights outside this limited license. Images currently protected by copyright that are not owned by Bryn Mawr College cannot be published or exhibited without obtaining the legally required permission from the copyright owner. It is the obligation of the researcher to determine and satisfy copyright and other restrictions. We recommend, where applicable, that patrons retain a record of their fair use determinations or attempts to secure permissions. Questions can be directed to sscommons@brynmawr.edu.\nThis image has been selected and made available by a user using Artstor's software tools. Artstor has not screened or selected this image or cleared any rights to it and is acting as an online service provider pursuant to 17 U.S.C. §512. Artstor disclaims any liability associated with the use of this image. Should you have any legal objection to the use of this image, please visit http://www.artstor.org/copyright for contact information and instructions on how to proceed.",
"url": "https://library.artstor.org/#/asset/openlibrary/external/4jEkdDElLjUzRkY6fz5%252BRXlDOHkje1x9fg%253D%253D",
"attachments": [
{
"title": "Artwork Image",
"mimeType": "image/jpeg"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://library.artstor.org/#/asset/28315008",
"items": [
{
"itemType": "artwork",
"title": "Tolu trade card (recto and verso)",
"creators": [
{
"lastName": "Lawrence and Martin",
"creatorType": "artist"
}
],
"abstractNote": "Unmounted medical trade card with text in English on the recto and verso.\nTrade cards promoting medical services and products were designed to directly connect patent medicine manufacturers to the consumer public. The peak popularity of trade cards is estimated to have been between 1870 and 1890.\nPhotographed by staff at the Center for Jewish History in 2020.",
"archive": "Medical Center Archives at NewYork Presbyterian/Weill Cornell Medicine",
"archiveLocation": "P-15356",
"artworkSize": "3.10\" x 4.45\"",
"libraryCatalog": "ARTstor",
"rights": "Presumed to be in the public domain, though please note that rights ownership varies and the researcher must determine these issues and assume full responsibility for fulfilling the usage terms connected with all archival material, as well as any third party or the licensing of any additional rights. In the event that the image becomes a source for publication, we request a credit line indicating the Medical Center Archives of NewYork-Presbyterian/Weill Cornell Medicine.\nThis image has been selected and made available by a user using Artstor's software tools. Artstor has not screened or selected this image or cleared any rights to it and is acting as an online service provider pursuant to 17 U.S.C. §512. Artstor disclaims any liability associated with the use of this image. Should you have any legal objection to the use of this image, please visit http://www.artstor.org/copyright for contact information and instructions on how to proceed.",
"url": "https://library.artstor.org/#/asset/28315008",
"attachments": [
{
"title": "Artwork Image",
"mimeType": "image/jpeg"
}
],
"tags": [
{
"tag": "Advertising cards"
},
{
"tag": "Cold (Disease)"
},
{
"tag": "Cough"
},
{
"tag": "Lungs -- Diseases"
},
{
"tag": "Throat -- Diseases"
},
{
"tag": "Tuberculosis"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://library.artstor.org/#/asset/28362645",
"items": [
{
"itemType": "artwork",
"title": "Ubekendt dame med blomsterkrans",
"creators": [
{
"firstName": "Cornelius",
"lastName": "Høyer",
"creatorType": "artist"
}
],
"date": "1756",
"archive": "Statens Museum for Kunst",
"archiveLocation": "KMS4919",
"artworkSize": "54 x 47 mm",
"libraryCatalog": "ARTstor",
"rights": "Creative Commons: Free Reuse (CC0)",
"url": "https://collection.smk.dk/#/en/detail/KMS4919",
"attachments": [
{
"title": "Artwork Image",
"mimeType": "image/jpeg"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://library.artstor.org/#/asset/SS7730456_7730456_11870403",
"defer": true,
"items": [
{
"itemType": "map",
"title": "The Map Maker",
"creators": [
{
"firstName": "Arthur",
"lastName": "Szyk",
"creatorType": "artist"
},
{
"lastName": "Other Creators",
"creatorType": "artist"
}
],
"date": "1942",
"abstractNote": "A satirical map attacking the Axis by the artist Arthur Szyk, published in Esquire Magazine in 1942. Goebbels welcomes General Tojo to the Axis, announcing that \"Now that you've joined us, the Fuhrer will make a special map for you,\" as Hitler paints the swastika over a bloody map of South and Latin America.\nSzyk was a Polish Jew whose work typically featured social and political issues. He emigrated to London in 1937 and to New York in 1940, and produced a number of attacks on the Nazis before and during World War II.",
"extra": "Alternate Title: Full TItle: The Map Maker [Hitler]",
"libraryCatalog": "ARTstor",
"mapType": "Map published in book or serial - source in collection",
"rights": "For important information about copyright and use, see http://persuasivemaps.library.cornell.edu/copyright.\nThis image has been selected and made available by a user using Artstor's software tools. Artstor has not screened or selected this image or cleared any rights to it and is acting as an online service provider pursuant to 17 U.S.C. §512. Artstor disclaims any liability associated with the use of this image. Should you have any legal objection to the use of this image, please visit http://www.artstor.org/copyright for contact information and instructions on how to proceed.",
"url": "https://library.artstor.org/#/asset/SS7730456_7730456_11870403",
"attachments": [
{
"title": "Artwork Image",
"mimeType": "image/jpeg"
}
],
"tags": [
{
"tag": "Pictorial"
},
{
"tag": "Satirical"
},
{
"tag": "World War II"
}
],
"notes": [
{
"note": "For further information on the Collector’s Notes and a Feedback/Contact Link, see https://persuasivemaps.library.cornell.edu/content/about-collection-personal-statement and https://persuasivemaps.library.cornell.edu/content/feedback-and-contact"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://library.artstor.org/#/asset/SS33851_33851_1648337",
"defer": true,
"items": [
{
"itemType": "map",
"title": "Dolph's map of Wilmington and northern New Castle County",
"creators": [
{
"lastName": "Dolph Map Company",
"creatorType": "artist"
}
],
"abstractNote": "Index to streets",
"archive": "Special Collections, University of Delaware Library / Newark, Delaware 19717-5267",
"archiveLocation": "Spec, Oversized map drawers, Oversized drawer 3 Folder 7",
"extra": "Alternate Title: Municipal maps\nDepicted Location: United States--Delaware--New Castle County--Wilmington",
"libraryCatalog": "ARTstor",
"rights": "Use of materials from this collection beyond the exceptions provided for in the Fair Use and Educational Use clauses of the U.S. Copyright Law may violate federal law. Permission to publish is required from the copyright holder. Please contact Special Collections, University of Delaware Library, http://www.lib.udel.edu/cgi-bin/askspec.cgi\nThis image has been selected and made available by a user using Artstor's software tools. Artstor has not screened or selected this image or cleared any rights to it and is acting as an online service provider pursuant to 17 U.S.C. §512. Artstor disclaims any liability associated with the use of this image. Should you have any legal objection to the use of this image, please visit http://www.artstor.org/copyright for contact information and instructions on how to proceed.",
"scale": "3000 feet to the inch",
"url": "https://library.artstor.org/#/asset/SS33851_33851_1648337",
"attachments": [
{
"title": "Artwork Image",
"mimeType": "image/jpeg"
}
],
"tags": [
{
"tag": " Delaware--Maps."
},
{
"tag": "Wilmington (Del.)--Maps."
}
],
"notes": [
{
"note": "One of five maps on a single sheet. Top corner torn (inset map of Newark). Additional information in collection folders."
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://library.artstor.org/#/asset/SS7730507_7730507_8920869",
"defer": true,
"items": [
{
"itemType": "videoRecording",
"title": "Congressional Conversation: Pell and Brooke (a)",
"creators": [
{
"lastName": "Senator Claiborne Pell",
"creatorType": "contributor"
}
],
"date": "1969",
"abstractNote": "Congressional Conversation(a): Senators Pell and Brooke discuss political issues including the Vietnam War, Justice Fortas' resignation, ethics rules, and the state of the fishing industry.",
"archive": "University of Rhode Island Libraries",
"libraryCatalog": "ARTstor",
"rights": "All rights reserved. For copyright and permissions, contact the University of Rhode Island Libraries at archives@etal.uri.edu.\nThis image has been selected and made available by a user using Artstor's software tools. Artstor has not screened or selected this image or cleared any rights to it and is acting as an online service provider pursuant to 17 U.S.C. §512. Artstor disclaims any liability associated with the use of this image. Should you have any legal objection to the use of this image, please visit http://www.artstor.org/copyright for contact information and instructions on how to proceed.",
"runningTime": "00:28:36",
"shortTitle": "Congressional Conversation",
"url": "https://library.artstor.org/#/asset/SS7730507_7730507_8920869",
"attachments": [
{
"title": "Artwork Image",
"mimeType": "image/jpeg"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://library.artstor.org/#/asset/SS35428_35428_20594675",
"items": [
{
"itemType": "artwork",
"title": "Big Trees of the West - Second Cut from a Redwood Log.; verso: G28 Pacific Novelty Company, Publishers, San Francisco, Cal. Made in Germany [divided back, no message]",
"creators": [
{
"firstName": "American",
"lastName": "Pacific Novelty Company (publisher",
"creatorType": "artist"
}
],
"date": "1907",
"archive": "Trinity College, Watkinson Library (Hartford, Connecticut, USA)",
"archiveLocation": "Box 19.174-3",
"artworkSize": "9 x 14 cm (3.54 x 5.51 inches) approximately",
"extra": "Alternate Title: overall\nAlternate Title: recto",
"libraryCatalog": "ARTstor",
"rights": "This digital collection and its contents are made available by Trinity College Library for limited non-commercial, educational and personal use only. For other uses, or for additional information regarding the collection, contact the staff of Watkinson Library (www.watkinsonlibrary.org).\nThis image has been selected and made available by a user using Artstor's software tools. Artstor has not screened or selected this image or cleared any rights to it and is acting as an online service provider pursuant to 17 U.S.C. §512. Artstor disclaims any liability associated with the use of this image. Should you have any legal objection to the use of this image, please visit http://www.artstor.org/copyright for contact information and instructions on how to proceed.",
"shortTitle": "Big Trees of the West - Second Cut from a Redwood Log.; verso",
"url": "https://library.artstor.org/#/asset/SS35428_35428_20594675",
"attachments": [
{
"title": "Artwork Image",
"mimeType": "image/jpeg"
}
],
"tags": [
{
"tag": " California (USA)"
},
{
"tag": " Logging"
},
{
"tag": " Lumber industry"
},
{
"tag": " Redwood (genus, Sequoia)"
},
{
"tag": " Sequoiadendron giganteum (Giant redwood, species)"
},
{
"tag": " Trees"
},
{
"tag": "Postcards"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100czar^https?://(www\.)?unz\.com/print/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2018 czar
http://en.wikipedia.org/wiki/User_talk:Czar
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (/\/print\/.*-\d{5}/.test(url)) {
return "magazineArticle";
} else if (getSearchResults(doc, true, url)) {
return "multiple";
}
}
function scrape(doc, url) {
var item = new Zotero.Item("magazineArticle");
item.libraryCatalog = "UNZ";
item.title = text('.block .head');
var authorMetadata = doc.querySelectorAll('#pub-heading .byline a');
for (let author of authorMetadata) {
item.creators.push(ZU.cleanAuthor(author.textContent, "author"));
}
var subhead = text('#pub-heading .subhead');
if (subhead) {
var reviewedAuthor = subhead.replace(/.*\sby\s(.*)/,'$1');
item.creators.push(Zotero.Utilities.cleanAuthor(reviewedAuthor, "reviewedAuthor"));
}
var sourceline = text('#pub-heading .sourceline');
if (sourceline) {
item.publicationTitle = doc.querySelector('.sourceline i').textContent;
item.date = ZU.strToISO(doc.querySelector('.sourceline a').textContent);
item.pages = sourceline.replace(/.*p+\.\s(\d+(-\d+)?).*/,'$1'); // http://regexr.com/3du86
}
item.language = "en";
item.url = url.replace(/[?#].*/, '');
var pdfURL = doc.querySelector('iframe#insert-pdf');
if (pdfURL) {
pdfURL = pdfURL.getAttribute('src');
item.attachments.push({ // no need for snapshots, but download PDF if available
url: pdfURL,
title: item.title,
mimeType:"application/pdf"
});
}
item.complete();
}
function getSearchResults(doc, checkOnly, url) {
var items = {};
var found = false;
var rows;
if (url.includes('/Contents/')) {
rows = doc.querySelectorAll('.show .pub-text a.head');
} else {
rows = doc.querySelectorAll('.pub-text a.head');
}
for (let i=0; i<rows.length; i++) {
let href = rows[i].href;
let title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
switch (detectWeb(doc, url)) {
case "multiple":
Zotero.selectItems(getSearchResults(doc, false, url), function (items) {
if (!items) {
return true;
}
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
break;
case "magazineArticle":
scrape(doc, url);
break;
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.unz.com/print/NYRevBooks-1969nov20-00027",
"items": [
{
"itemType": "magazineArticle",
"title": "Can Technology Be Humane?",
"creators": [
{
"firstName": "Paul",
"lastName": "Goodman",
"creatorType": "author"
}
],
"date": "1969-11-20",
"language": "en",
"libraryCatalog": "UNZ",
"pages": "27-33",
"publicationTitle": "The New York Review of Books",
"url": "https://www.unz.com/print/NYRevBooks-1969nov20-00027",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.unz.com/print/Freeman-1958oct-00058",
"items": [
{
"itemType": "magazineArticle",
"title": "Mental Prep vs. Pragmatic Tech",
"creators": [
{
"firstName": "John",
"lastName": "Chamberlain",
"creatorType": "author"
},
{
"firstName": "John",
"lastName": "Keats",
"creatorType": "reviewedAuthor"
}
],
"date": "1958-10",
"language": "en",
"libraryCatalog": "UNZ",
"pages": "58-61",
"publicationTitle": "The Freeman",
"url": "https://www.unz.com/print/Freeman-1958oct-00058",
"attachments": [
{
"title": "Mental Prep vs. Pragmatic Tech",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.unz.com/print/author/GoodmanPaul/",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.unz.com/print/Politics-1946nov",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.unz.com/print/Harpers/Contents/?Period=1982",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.unz.com/print/Search/?Author=goodman&ContentType=Print&PubType=All&Action=Search",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.unz.com/print/NewRepublic-1943dec20-00878",
"items": [
{
"itemType": "magazineArticle",
"title": "Architecture in Wartime",
"creators": [
{
"firstName": "Percival",
"lastName": "Goodman",
"creatorType": "author"
},
{
"firstName": "Paul",
"lastName": "Goodman",
"creatorType": "author"
}
],
"date": "1943-12-20",
"language": "en",
"libraryCatalog": "UNZ",
"pages": "878-882",
"publicationTitle": "The New Republic",
"url": "https://www.unz.com/print/NewRepublic-1943dec20-00878",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.unz.com/print/NYRevBooks-1970may21-00003/",
"items": [
{
"itemType": "magazineArticle",
"title": "Good Man",
"creators": [
{
"firstName": "Robert",
"lastName": "Mazzocco",
"creatorType": "author"
},
{
"firstName": "Paul",
"lastName": "Goodman",
"creatorType": "reviewedAuthor"
}
],
"date": "1970-05-21",
"language": "en",
"libraryCatalog": "UNZ",
"pages": "3-4",
"publicationTitle": "The New York Review of Books",
"url": "https://www.unz.com/print/NYRevBooks-1970may21-00003/",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Sebastian Karcher and Abe Jellinek^https://www\.lanacion\.com\.ar//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2020-2021 Sebastian Karcher and Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) { // eslint-disable-line no-unused-vars
if (doc.querySelector('#queryly_resultscontainer') && getSearchResults(doc, true)) {
return "multiple";
}
if (doc.querySelector('script#Schema_NewsArticle')) {
return "newspaperArticle";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelector('#queryly_resultscontainer')
? doc.querySelectorAll('#queryly_resultscontainer .resultlink')
: doc.querySelectorAll('article h2 a');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
let json = JSON.parse(text(doc, 'script#Schema_NewsArticle'));
var item = new Zotero.Item("newspaperArticle");
item.ISSN = "0325-0946";
let canonical = attr(doc, 'link[rel="canonical"]', 'href');
if (canonical) {
item.url = canonical;
}
else {
item.url = url;
}
item.publicationTitle = "La Nación";
item.language = "es-AR";
item.place = "Buenos Aires";
item.date = ZU.strToISO(json.dateModified || json.datePublished);
item.title = attr(doc, 'meta[property="og:title"]', 'content');
for (let author of json.author || json.creator) {
if (author.trim() == 'Redacción LA NACION') {
item.creators.push({
lastName: author,
creatorType: 'author',
fieldMode: 1
});
}
else {
item.creators.push(ZU.cleanAuthor(author, 'author', false));
}
}
item.section = json.articleSection;
item.attachments.push({ document: doc, title: "Snapshot" });
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.lanacion.com.ar/economia/polemica-mensajes-gobierno-bordo-vuelos-aerolineas-argentinas-nid2270357/",
"items": [
{
"itemType": "newspaperArticle",
"title": "Aerolíneas Argentinas: sancionarán a los pilotos que usan los vuelos para criticar al Gobierno",
"creators": [
{
"firstName": "Alan Soria",
"lastName": "Guadalupe",
"creatorType": "author"
},
{
"firstName": "María Julieta",
"lastName": "Rumi",
"creatorType": "author"
}
],
"date": "2019-07-23",
"ISSN": "0325-0946",
"language": "es-AR",
"libraryCatalog": "La Nación (Argentina)",
"place": "Buenos Aires",
"publicationTitle": "La Nación",
"section": "Economía",
"shortTitle": "Aerolíneas Argentinas",
"url": "https://www.lanacion.com.ar/economia/polemica-mensajes-gobierno-bordo-vuelos-aerolineas-argentinas-nid2270357/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.lanacion.com.ar/cultura/perla-suez-el-presente-nos-atraviesa-por-mas-que-escribamos-sobre-el-pasado-nid2513592/",
"items": [
{
"itemType": "newspaperArticle",
"title": "Perla Suez. “El presente nos atraviesa por más que escribamos sobre el pasado”",
"creators": [
{
"firstName": "Natalia",
"lastName": "Páez",
"creatorType": "author"
}
],
"date": "2020-11-22",
"ISSN": "0325-0946",
"language": "es-AR",
"libraryCatalog": "La Nación (Argentina)",
"place": "Buenos Aires",
"publicationTitle": "La Nación",
"section": "Cultura",
"url": "https://www.lanacion.com.ar/cultura/perla-suez-el-presente-nos-atraviesa-por-mas-que-escribamos-sobre-el-pasado-nid2513592/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.lanacion.com.ar/politica/alberto-fernandez-nid2517783/",
"items": [
{
"itemType": "newspaperArticle",
"title": "Alberto Fernández: \"Cristina es una gran dirigente, pero no fue Perón\"",
"creators": [
{
"lastName": "Redacción LA NACION",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "2020-11-23",
"ISSN": "0325-0946",
"language": "es-AR",
"libraryCatalog": "La Nación (Argentina)",
"place": "Buenos Aires",
"publicationTitle": "La Nación",
"section": "Política",
"shortTitle": "Alberto Fernández",
"url": "https://www.lanacion.com.ar/politica/alberto-fernandez-nid2517783/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.lanacion.com.ar/politica/",
"items": "multiple"
}
]
/** END TEST CASES **/
100Joyce Chiahttps?://(www\.)?abc\.net\.au/news//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2020-2021 Joyce Chia
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, _url) {
let contentType = attr(doc, 'meta[property="ABC.ContentType"]', 'content');
if (contentType == 'CMChannel' && getSearchResults(doc, true)) {
return 'multiple';
}
else if (contentType == 'Video') {
return 'videoRecording';
}
else if (contentType == 'Article') {
return 'newspaperArticle';
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('h3 a');
for (var i = 0; i < rows.length; i++) {
var href = rows[i].href;
var title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) return;
ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
item.language = "en-AU";
// og:url does not preserve https prefixes, so use canonical link until fixed
var canonical = doc.querySelector('link[rel="canonical"]');
if (canonical) {
item.url = canonical.href;
}
if (item.itemType == 'videoRecording') {
item.studio = "ABC News"; // i guess this is correct...
}
else {
item.publicationTitle = "ABC News";
}
item.language = "en-AU";
if (item.date) {
item.date = ZU.strToISO(item.date);
}
else {
item.date = ZU.strToISO(attr(doc, 'time', 'datetime'));
}
var authors = text(doc, '[data-component="Byline"] p');
if (authors && item.creators.length <= 1) {
authors = authors.replace(/^By /, '');
if (authors == authors.toUpperCase()) { // convert to title case if all caps
authors = ZU.capitalizeTitle(authors, true);
}
item.creators = [];
var authorsList = authors.split(/,|\band\b/);
for (let i = 0; i < authorsList.length; i++) {
item.creators.push(ZU.cleanAuthor(authorsList[i], "author"));
}
}
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.itemType = detectWeb(doc, url);
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.abc.net.au/news/2020-05-22/nt-government-coronavirus-recovery-commission-michael-gunner/12276832?section=politics",
"items": [
{
"itemType": "newspaperArticle",
"title": "NT 'uniquely positioned' to solve Australia's economic woes post-COVID-19, says Chief Minister",
"creators": [
{
"firstName": "Lauren",
"lastName": "Roberts",
"creatorType": "author"
}
],
"date": "2020-05-22",
"abstractNote": "The NT Labor Government establishes a new commission to help it financially recover from the coronavirus pandemic, with the former opposition leader and a former chief minister in key roles.",
"language": "en-AU",
"libraryCatalog": "www.abc.net.au",
"publicationTitle": "ABC News",
"url": "https://www.abc.net.au/news/2020-05-22/nt-government-coronavirus-recovery-commission-michael-gunner/12276832",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "chief minister michael gunner"
},
{
"tag": "coronavirus budget"
},
{
"tag": "nt budget"
},
{
"tag": "parliament house"
},
{
"tag": "territory economic reconstruction commission"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.abc.net.au/news/2021-07-23/tracey-holmes-on-the-ground-in-tokyo/13467310",
"items": [
{
"itemType": "videoRecording",
"title": "Tracey Holmes on the ground in Tokyo",
"creators": [
{
"firstName": "Tracey",
"lastName": "Holmes",
"creatorType": "author"
}
],
"date": "2021-07-22",
"abstractNote": "Brisbane is named the host of the 2032 Olympics, Tracey speaks with Federal Sports Minister Richard Colbeck to get his reaction. Plus we look at the COVID safety measures athletes, officials and the media are subjected to as they land in the Japanese capital.",
"language": "en-AU",
"libraryCatalog": "www.abc.net.au",
"studio": "ABC News",
"url": "https://www.abc.net.au/news/2021-07-23/tracey-holmes-on-the-ground-in-tokyo/13467310",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "olympics"
},
{
"tag": "tokyo olympics 2021"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Dan Stillman, Aurimas Vinckevicius, Tomasz Najdek^https?://[^/]*zotero\.org(:\d+)?/.+/(items|collections|library|publications|trash|search|item-list|item-details)(/|$)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2017-2019 Dan Stillman and Aurimas Vinckevicius
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function scrape(text) {
var item = JSON.parse(text);
var newItem = new Zotero.Item();
for (var prop in item.data) {
switch (prop) {
case 'key':
case 'version':
case 'collections':
case 'relations':
case 'dateAdded':
case 'dateModified':
continue;
}
newItem[prop] = item.data[prop];
}
// TODO: Don't pass for notes, once client no longer requires it
if (!newItem.title) newItem.title = "[Untitled]";
newItem.complete();
}
function getListTitles(doc) {
return ZU.xpath(doc, '//table[@id="field-table"]//td[@class="title"]'
+ '[./a[not(contains(text(), "Unpublished Note"))]'
+ '/span[not(contains(@class,"sprite-treeitem-attachment"))]]');
}
function isNewWebLibrary(doc) {
return !!doc.querySelector('#zotero-web-library');
}
function legacyGetLibraryURI(doc) {
var feed = ZU.xpath(doc, '//a[@type="application/atom+xml" and @rel="alternate"]')[0];
if (!feed) return false;
var url = feed.href.match(/^.+?\/(?:users|groups)\/\w+/);
if (!url) {
url = decodeURIComponent(feed.href)
.match(/https?:\/\/[^/]+\/(?:users|groups)\/\w+/);
if (!url) return false;
}
if (!url) return false;
return (url[0] + '/items/').replace("https://api.zotero.org", "https://www.zotero.org/api");
}
function getLibraryURI(doc, url) {
if (!isNewWebLibrary(doc)) {
return legacyGetLibraryURI(doc);
}
var groupMatch = url.match(/zotero.org\/groups\/(\d+)\/.*?/i);
if (groupMatch) {
const groupId = groupMatch[1];
return `https://www.zotero.org/api/groups/${groupId}/items`;
}
else {
const config = JSON.parse(doc.querySelector('#zotero-web-library-config').textContent);
const { userId } = config;
return `https://www.zotero.org/api/users/${userId}/items`;
}
}
function getSessionKey(doc) {
var matches = doc.cookie.match(/zotero_www_session_v2=([a-z0-9]+)/);
return matches ? matches[1] : null;
}
function legacyDetectWeb(doc, url) {
// single item
if (url.match(/\/itemKey\/\w+/)) {
return ZU.xpathText(doc, '//div[@id="item-details-div"]//td[preceding-sibling::th[text()="Item Type"]]/@class')
|| false;
}
// Library and collections
if ((url.match(/\/items\/?([?#].*)?$/)
|| url.includes('/collectionKey/')
|| url.match(/\/collection\/\w+/)
|| url.includes('/tag/'))
&& getListTitles(doc).length) {
return "multiple";
}
return false;
}
function detectWeb(doc, url) {
// disable for libraries where we can't get a library URI or an apiKey
if (!getLibraryURI(doc, url)) {
return false;
}
if (!isNewWebLibrary(doc)) {
return legacyDetectWeb(doc, url);
}
const singleItemDataEl = doc.querySelector('script#translator-current-item');
if (singleItemDataEl) {
const { itemType } = JSON.parse(singleItemDataEl.textContent);
return itemType;
}
const multipleItemsDataEl = doc.querySelector('script#translator-items-list');
if (multipleItemsDataEl
&& Object.keys(JSON.parse(multipleItemsDataEl.textContent)).length) {
return 'multiple';
}
return null;
}
function getCommon(doc, url) {
var headers = {
'Zotero-API-Version': 3
};
var libraryURI = getLibraryURI(doc, url);
// Pass session key in URL, as required for CSRF protection. This allows saving of items
// in private libraries.
var sessionKey = getSessionKey(doc);
var suffix = sessionKey ? '?session=' + sessionKey : "";
return { headers, libraryURI, sessionKey, suffix };
}
function legacyDoWeb(doc, url) {
const { headers, libraryURI, suffix } = getCommon(doc, url);
var itemRe = /\/itemKey\/(\w+)/;
if (detectWeb(doc, url) == "multiple") {
var elems = getListTitles(doc);
var items = ZU.getItemArray(doc, elems);
Zotero.selectItems(items, (selectedItems) => {
if (!selectedItems) {
return;
}
var apiURIs = [], itemID;
for (var url in selectedItems) {
itemID = url.match(itemRe)[1];
apiURIs.push(libraryURI + itemID + suffix);
}
Zotero.Utilities.HTTP.doGet(apiURIs, scrape, null, null, headers);
});
}
else {
var itemID = url.match(itemRe)[1];
var itemURI = libraryURI + itemID + suffix;
Zotero.Utilities.doGet(itemURI, scrape, null, null, headers);
}
}
function doWeb(doc, url) {
if (!isNewWebLibrary(doc)) {
legacyDoWeb(doc, url);
}
const { headers, libraryURI, suffix } = getCommon(doc, url);
const singleItemDataEl = doc.querySelector('script#translator-current-item');
if (singleItemDataEl) {
const item = JSON.parse(singleItemDataEl.textContent);
const itemURI = `${libraryURI}/${item.key}${suffix}`;
Zotero.Utilities.doGet(itemURI, scrape, null, null, headers);
}
else {
const multipleItemsDataEl = doc.querySelector('script#translator-items-list');
if (multipleItemsDataEl) {
const options = JSON.parse(multipleItemsDataEl.textContent);
Zotero.selectItems(options, (selectedItems) => {
if (!selectedItems) {
return;
}
const selectedItemsURIs = Object.keys(selectedItems).map(itemKey => `${libraryURI}/${itemKey}${suffix}`);
Zotero.Utilities.HTTP.doGet(selectedItemsURIs, scrape, null, null, headers);
});
}
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.zotero.org/groups/729/all_things_zotero/items/itemKey/HXTTNJGD?usenewlibrary=0",
"defer": true,
"items": [
{
"itemType": "journalArticle",
"title": "Expert Searching, Zotero: A New Breed of Search Tool",
"creators": [
{
"creatorType": "author",
"firstName": "Mark",
"lastName": "Desirto"
}
],
"date": "April 2007",
"extra": "00000 \nCited by 0000",
"publicationTitle": "Medical Library Association Newsletter",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.zotero.org/groups/729/all_things_zotero/items/HXTTNJGD?usenewlibrary=1",
"defer": true,
"items": [
{
"itemType": "journalArticle",
"title": "Expert Searching, Zotero: A New Breed of Search Tool",
"creators": [
{
"creatorType": "author",
"firstName": "Mark",
"lastName": "Desirto"
}
],
"date": "April 2007",
"extra": "00000 \nCited by 0000",
"publicationTitle": "Medical Library Association Newsletter",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.zotero.org/groups/all_things_zotero/items?usenewlibrary=0",
"defer": true,
"items": "multiple"
},
{
"type": "web",
"url": "https://www.zotero.org/groups/729/all_things_zotero/items/BBNKRTN9,BVRM2S5S,VMUNGCPG/item-list?usenewlibrary=1",
"defer": true,
"items": "multiple"
},
{
"type": "web",
"url": "https://www.zotero.org/groups/all_things_zotero/items/collectionKey/XX99JMW8?usenewlibrary=0",
"defer": true,
"items": "multiple"
},
{
"type": "web",
"url": "https://www.zotero.org/groups/729/all_things_zotero/collections/XX99JMW8/items/BVRM2S5S,HXTTNJGD,92N4P9MH/item-list?usenewlibrary=1",
"defer": true,
"items": "multiple"
},
{
"type": "web",
"url": "https://www.zotero.org/groups/devtesting/items/tag/tag2?usenewlibrary=0",
"defer": true,
"items": "multiple"
},
{
"type": "web",
"url": "https://www.zotero.org/groups/729/all_things_zotero/tags/blogs/item-list?usenewlibrary=1",
"defer": true,
"items": "multiple"
}
]
/** END TEST CASES **/
{"dataMode":"xml\/dom"}100Simon Kornblith, Michael Berkowitz, Avram Lyon, and Rintze Zellexml/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2017-2020 Simon Kornblith, Michael Berkowitz, Avram Lyon, Sebastian Karcher, and Rintze Zelle
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
/*******************************
* Import translator functions *
*******************************/
function detectImport() {
var text = Zotero.read(1000);
return text.includes("<PubmedArticleSet>");
}
function processAuthors(newItem, authorsLists) {
for (var j = 0, m = authorsLists.length; j < m; j++) {
// default to 'author' unless it's 'editor'
var type = "author";
if (authorsLists[j].hasAttribute('Type')
&& authorsLists[j].getAttribute('Type') === "editors") {
type = "editor";
}
var authors = ZU.xpath(authorsLists[j], 'Author');
for (var k = 0, l = authors.length; k < l; k++) {
var author = authors[k];
var lastName = ZU.xpathText(author, 'LastName');
var firstName = ZU.xpathText(author, 'FirstName');
if (!firstName) {
firstName = ZU.xpathText(author, 'ForeName');
}
var suffix = ZU.xpathText(author, 'Suffix');
if (suffix && firstName) {
firstName += ", " + suffix;
}
if (firstName || lastName) {
var creator = ZU.cleanAuthor(lastName + ', ' + firstName, type, true);
if (creator.lastName.toUpperCase() == creator.lastName) {
creator.lastName = ZU.capitalizeTitle(creator.lastName, true);
}
if (creator.firstName.toUpperCase() == creator.firstName) {
creator.firstName = ZU.capitalizeTitle(creator.firstName, true);
}
newItem.creators.push(creator);
}
else if ((lastName = ZU.xpathText(author, 'CollectiveName'))) {
// corporate author
newItem.creators.push({
creatorType: type,
lastName: lastName,
fieldMode: 1
});
}
}
}
}
function doImport() {
var doc = Zotero.getXML();
var pageRangeRE = /(\d+)-(\d+)/g;
// handle journal articles
var articles = ZU.xpath(doc, '/PubmedArticleSet/PubmedArticle');
for (let i = 0, n = articles.length; i < n; i++) {
var newItem = new Zotero.Item("journalArticle");
var citation = ZU.xpath(articles[i], 'MedlineCitation')[0];
var article = ZU.xpath(citation, 'Article')[0];
let title = ZU.xpathText(article, 'ArticleTitle');
if (!title) title = ZU.xpathText(article, 'VernacularTitle');
if (title) {
if (title.charAt(title.length - 1) == ".") {
title = title.substring(0, title.length - 1);
}
newItem.title = title;
}
var fullPageRange = ZU.xpathText(article, 'Pagination/MedlinePgn');
if (fullPageRange) {
// where page ranges are given in an abbreviated format, convert to full
pageRangeRE.lastIndex = 0;
var range;
while ((range = pageRangeRE.exec(fullPageRange))) {
var pageRangeStart = range[1];
var pageRangeEnd = range[2];
var diff = pageRangeStart.length - pageRangeEnd.length;
if (diff > 0) {
pageRangeEnd = pageRangeStart.substring(0, diff) + pageRangeEnd;
var newRange = pageRangeStart + "-" + pageRangeEnd;
fullPageRange = fullPageRange.substring(0, range.index) // everything before current range
+ newRange // insert the new range
+ fullPageRange.substring(range.index + range[0].length); // everything after the old range
// adjust RE index
pageRangeRE.lastIndex += newRange.length - range[0].length;
}
}
newItem.pages = fullPageRange;
}
// use elocation pii when there's no page range
if (!newItem.pages) {
newItem.pages = ZU.xpathText(article, 'ELocationID[@EIdType="pii"]');
}
var journal = ZU.xpath(article, 'Journal')[0];
if (journal) {
newItem.ISSN = ZU.xpathText(journal, 'ISSN');
var abbreviation;
if ((abbreviation = ZU.xpathText(journal, 'ISOAbbreviation'))) {
newItem.journalAbbreviation = abbreviation;
}
else if ((abbreviation = ZU.xpathText(article, '//MedlineTA'))) {
newItem.journalAbbreviation = abbreviation;
}
let title = ZU.xpathText(journal, 'Title');
if (title) {
title = ZU.trimInternal(title);
// Fix sentence-cased titles, but be careful...
if (!( // of accronyms that could get messed up if we fix case
/\b[A-Z]{2}/.test(title) // this could mean that there's an accronym in the title
&& (title.toUpperCase() != title // the whole title isn't in upper case, so bail
|| !(/\s/.test(title))) // it's all in upper case and there's only one word, so we can't be sure
)) {
title = ZU.capitalizeTitle(title, true);
}
newItem.publicationTitle = title;
}
else if (newItem.journalAbbreviation) {
newItem.publicationTitle = newItem.journalAbbreviation;
}
// (do we want this?)
if (newItem.publicationTitle) {
newItem.publicationTitle = ZU.capitalizeTitle(newItem.publicationTitle);
}
var journalIssue = ZU.xpath(journal, 'JournalIssue')[0];
if (journalIssue) {
newItem.volume = ZU.xpathText(journalIssue, 'Volume');
newItem.issue = ZU.xpathText(journalIssue, 'Issue');
var pubDate = ZU.xpath(journalIssue, 'PubDate')[0];
if (pubDate) { // try to get the date
var day = ZU.xpathText(pubDate, 'Day');
var month = ZU.xpathText(pubDate, 'Month');
var year = ZU.xpathText(pubDate, 'Year');
if (day) {
// month appears in two different formats:
// 1. numeric, e.g. "07", see 4th test
if (month && /\d+/.test(month)) {
newItem.date = ZU.strToISO(year + "-" + month + "-" + day);
}
// 2. English acronym, e.g. "Aug", see 3rd test
else {
newItem.date = ZU.strToISO(month + " " + day + ", " + year);
}
}
else if (month) {
newItem.date = ZU.strToISO(month + "/" + year);
}
else if (year) {
newItem.date = year;
}
else {
newItem.date = ZU.xpathText(pubDate, 'MedlineDate');
}
}
}
}
var authorLists = ZU.xpath(article, 'AuthorList');
processAuthors(newItem, authorLists);
newItem.language = ZU.xpathText(article, 'Language');
var keywords = ZU.xpath(citation, 'MeshHeadingList/MeshHeading');
for (let j = 0, m = keywords.length; j < m; j++) {
newItem.tags.push(ZU.xpathText(keywords[j], 'DescriptorName'));
}
// OT Terms
var otherKeywords = ZU.xpath(citation, 'KeywordList/Keyword');
for (let j = 0, m = otherKeywords.length; j < m; j++) {
newItem.tags.push(otherKeywords[j].textContent);
}
var abstractSections = ZU.xpath(article, 'Abstract/AbstractText');
var abstractNote = [];
for (let j = 0, m = abstractSections.length; j < m; j++) {
var abstractSection = abstractSections[j];
var paragraph = abstractSection.textContent.trim();
if (paragraph) paragraph += '\n';
var label = abstractSection.hasAttribute("Label") && abstractSection.getAttribute("Label");
if (label && label != "UNLABELLED") {
paragraph = label + ": " + paragraph;
}
abstractNote.push(paragraph);
}
newItem.abstractNote = abstractNote.join('');
newItem.DOI = ZU.xpathText(articles[i], 'PubmedData/ArticleIdList/ArticleId[@IdType="doi"]');
var PMID = ZU.xpathText(citation, 'PMID');
var PMCID = ZU.xpathText(articles[i], 'PubmedData/ArticleIdList/ArticleId[@IdType="pmc"]');
if (PMID) {
newItem.extra = "PMID: " + PMID;
// this is a catalog, so we should store links as attachments
newItem.attachments.push({
title: "PubMed entry",
url: "http://www.ncbi.nlm.nih.gov/pubmed/" + PMID,
mimeType: "text/html",
snapshot: false
});
}
if (PMCID) {
newItem.extra = (newItem.extra ? newItem.extra + "\n" : "")
+ "PMCID: " + PMCID;
}
newItem.complete();
}
// handle books and chapters
var books = ZU.xpath(doc, '/PubmedArticleSet/PubmedBookArticle');
for (let i = 0, n = books.length; i < n; i++) {
let citation = ZU.xpath(books[i], 'BookDocument')[0];
// check if this is a section
var sectionTitle = ZU.xpathText(citation, 'ArticleTitle');
var isBookSection = !!sectionTitle;
// eslint-disable-next-line
var newItem = new Zotero.Item(isBookSection ? 'bookSection' : 'book');
if (isBookSection) {
newItem.title = sectionTitle;
}
var book = ZU.xpath(citation, 'Book')[0];
// title
let title = ZU.xpathText(book, 'BookTitle');
if (title) {
if (title.charAt(title.length - 1) == ".") {
title = title.substring(0, title.length - 1);
}
if (isBookSection) {
newItem.publicationTitle = title;
}
else {
newItem.title = title;
}
}
// date
// should only need year for books
newItem.date = ZU.xpathText(book, 'PubDate/Year');
// edition
newItem.edition = ZU.xpathText(book, 'Edition');
// series
newItem.series = ZU.xpathText(book, 'CollectionTitle');
// volume
newItem.volume = ZU.xpathText(book, 'Volume');
// place
newItem.place = ZU.xpathText(book, 'Publisher/PublisherLocation');
// publisher
newItem.publisher = ZU.xpathText(book, 'Publisher/PublisherName');
// chapter authors
if (isBookSection) {
let authorsLists = ZU.xpath(citation, 'AuthorList');
processAuthors(newItem, authorsLists);
}
// book creators
let authorsLists = ZU.xpath(book, 'AuthorList');
processAuthors(newItem, authorsLists);
// language
newItem.language = ZU.xpathText(citation, 'Language');
// abstractNote
newItem.abstractNote = ZU.xpathText(citation, 'Abstract/AbstractText');
// rights
newItem.rights = ZU.xpathText(citation, 'Abstract/CopyrightInformation');
// seriesNumber, numPages, numberOfVolumes
// not available
// ISBN
newItem.ISBN = ZU.xpathText(book, 'Isbn');
let PMID = ZU.xpathText(citation, 'PMID');
if (PMID) {
newItem.extra = "PMID: " + PMID;
// this is a catalog, so we should store links as attachments
newItem.attachments.push({
title: "PubMed entry",
url: "http://www.ncbi.nlm.nih.gov/pubmed/" + PMID,
mimeType: "text/html",
snapshot: false
});
}
newItem.callNumber = ZU.xpathText(citation,
'ArticleIdList/ArticleId[@IdType="bookaccession"]');
// attach link to the bookshelf page
if (newItem.callNumber) {
var url = "http://www.ncbi.nlm.nih.gov/books/" + newItem.callNumber + "/";
if (PMID) { // books with PMIDs appear to be hosted at NCBI
newItem.url = url;
// book sections have printable views, which can stand in for full text PDFs
if (newItem.itemType == 'bookSection') {
newItem.attachments.push({
title: "Printable HTML",
url: 'http://www.ncbi.nlm.nih.gov/books/'
+ newItem.callNumber + '/?report=printable',
mimeType: 'text/html',
snapshot: true
});
}
}
else { // currently this should not trigger, since we only import books with PMIDs
newItem.attachments.push({
title: "NCBI Bookshelf entry",
url: "http://www.ncbi.nlm.nih.gov/books/" + newItem.callNumber + "/",
mimeType: "text/html",
snapshot: false
});
}
}
newItem.complete();
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "import",
"input": "<?xml version=\"1.0\"?>\n<!DOCTYPE PubmedArticleSet PUBLIC \"-//NLM//DTD PubMedArticle, 1st January 2015//EN\" \"http://www.ncbi.nlm.nih.gov/corehtml/query/DTD/pubmed_150101.dtd\">\n<PubmedArticleSet>\n<PubmedArticle>\n <MedlineCitation Owner=\"NLM\" Status=\"MEDLINE\">\n <PMID Version=\"1\">18157122</PMID>\n <DateCreated>\n <Year>2008</Year>\n <Month>01</Month>\n <Day>18</Day>\n </DateCreated>\n <DateCompleted>\n <Year>2008</Year>\n <Month>02</Month>\n <Day>08</Day>\n </DateCompleted>\n <DateRevised>\n <Year>2014</Year>\n <Month>07</Month>\n <Day>25</Day>\n </DateRevised>\n <Article PubModel=\"Print-Electronic\">\n <Journal>\n <ISSN IssnType=\"Electronic\">1552-4469</ISSN>\n <JournalIssue CitedMedium=\"Internet\">\n <Volume>4</Volume>\n <Issue>2</Issue>\n <PubDate>\n <Year>2008</Year>\n <Month>Feb</Month>\n </PubDate>\n </JournalIssue>\n <Title>Nature chemical biology</Title>\n <ISOAbbreviation>Nat. Chem. Biol.</ISOAbbreviation>\n </Journal>\n <ArticleTitle>High-content single-cell drug screening with phosphospecific flow cytometry.</ArticleTitle>\n <Pagination>\n <MedlinePgn>132-42</MedlinePgn>\n </Pagination>\n <Abstract>\n <AbstractText>Drug screening is often limited to cell-free assays involving purified enzymes, but it is arguably best applied against systems that represent disease states or complex physiological cellular networks. Here, we describe a high-content, cell-based drug discovery platform based on phosphospecific flow cytometry, or phosphoflow, that enabled screening for inhibitors against multiple endogenous kinase signaling pathways in heterogeneous primary cell populations at the single-cell level. From a library of small-molecule natural products, we identified pathway-selective inhibitors of Jak-Stat and MAP kinase signaling. Dose-response experiments in primary cells confirmed pathway selectivity, but importantly also revealed differential inhibition of cell types and new druggability trends across multiple compounds. Lead compound selectivity was confirmed in vivo in mice. Phosphoflow therefore provides a unique platform that can be applied throughout the drug discovery process, from early compound screening to in vivo testing and clinical monitoring of drug efficacy.</AbstractText>\n </Abstract>\n <AuthorList CompleteYN=\"Y\">\n <Author ValidYN=\"Y\">\n <LastName>Krutzik</LastName>\n <ForeName>Peter O</ForeName>\n <Initials>PO</Initials>\n <AffiliationInfo>\n <Affiliation>Department of Microbiology and Immunology, Baxter Laboratory in Genetic Pharmacology, Stanford University, 269 Campus Drive, Stanford, California 94305, USA.</Affiliation>\n </AffiliationInfo>\n </Author>\n <Author ValidYN=\"Y\">\n <LastName>Crane</LastName>\n <ForeName>Janelle M</ForeName>\n <Initials>JM</Initials>\n </Author>\n <Author ValidYN=\"Y\">\n <LastName>Clutter</LastName>\n <ForeName>Matthew R</ForeName>\n <Initials>MR</Initials>\n </Author>\n <Author ValidYN=\"Y\">\n <LastName>Nolan</LastName>\n <ForeName>Garry P</ForeName>\n <Initials>GP</Initials>\n </Author>\n </AuthorList>\n <Language>eng</Language>\n <DataBankList CompleteYN=\"Y\">\n <DataBank>\n <DataBankName>PubChem-Substance</DataBankName>\n <AccessionNumberList>\n <AccessionNumber>46391334</AccessionNumber>\n <AccessionNumber>46391335</AccessionNumber>\n <AccessionNumber>46391336</AccessionNumber>\n <AccessionNumber>46391337</AccessionNumber>\n <AccessionNumber>46391338</AccessionNumber>\n <AccessionNumber>46391339</AccessionNumber>\n <AccessionNumber>46391340</AccessionNumber>\n <AccessionNumber>46391341</AccessionNumber>\n <AccessionNumber>46391342</AccessionNumber>\n <AccessionNumber>46391343</AccessionNumber>\n <AccessionNumber>46391344</AccessionNumber>\n <AccessionNumber>46391345</AccessionNumber>\n <AccessionNumber>46391346</AccessionNumber>\n <AccessionNumber>46391347</AccessionNumber>\n <AccessionNumber>46391348</AccessionNumber>\n <AccessionNumber>46391349</AccessionNumber>\n <AccessionNumber>46391350</AccessionNumber>\n <AccessionNumber>46391351</AccessionNumber>\n <AccessionNumber>46391352</AccessionNumber>\n <AccessionNumber>46391353</AccessionNumber>\n <AccessionNumber>46391354</AccessionNumber>\n <AccessionNumber>46391355</AccessionNumber>\n <AccessionNumber>46391356</AccessionNumber>\n <AccessionNumber>46391357</AccessionNumber>\n </AccessionNumberList>\n </DataBank>\n </DataBankList>\n <GrantList CompleteYN=\"Y\">\n <Grant>\n <GrantID>AI35304</GrantID>\n <Acronym>AI</Acronym>\n <Agency>NIAID NIH HHS</Agency>\n <Country>United States</Country>\n </Grant>\n <Grant>\n <GrantID>N01-HV-28183</GrantID>\n <Acronym>HV</Acronym>\n <Agency>NHLBI NIH HHS</Agency>\n <Country>United States</Country>\n </Grant>\n <Grant>\n <GrantID>T32 AI007290</GrantID>\n <Acronym>AI</Acronym>\n <Agency>NIAID NIH HHS</Agency>\n <Country>United States</Country>\n </Grant>\n </GrantList>\n <PublicationTypeList>\n <PublicationType UI=\"D016428\">Journal Article</PublicationType>\n <PublicationType UI=\"D052061\">Research Support, N.I.H., Extramural</PublicationType>\n <PublicationType UI=\"D013485\">Research Support, Non-U.S. Gov't</PublicationType>\n </PublicationTypeList>\n <ArticleDate DateType=\"Electronic\">\n <Year>2007</Year>\n <Month>12</Month>\n <Day>23</Day>\n </ArticleDate>\n </Article>\n <MedlineJournalInfo>\n <Country>United States</Country>\n <MedlineTA>Nat Chem Biol</MedlineTA>\n <NlmUniqueID>101231976</NlmUniqueID>\n <ISSNLinking>1552-4450</ISSNLinking>\n </MedlineJournalInfo>\n <ChemicalList>\n <Chemical>\n <RegistryNumber>0</RegistryNumber>\n <NameOfSubstance UI=\"D050791\">STAT Transcription Factors</NameOfSubstance>\n </Chemical>\n <Chemical>\n <RegistryNumber>27YLU75U4W</RegistryNumber>\n <NameOfSubstance UI=\"D010758\">Phosphorus</NameOfSubstance>\n </Chemical>\n <Chemical>\n <RegistryNumber>EC 2.7.10.2</RegistryNumber>\n <NameOfSubstance UI=\"D053612\">Janus Kinases</NameOfSubstance>\n </Chemical>\n <Chemical>\n <RegistryNumber>EC 2.7.11.24</RegistryNumber>\n <NameOfSubstance UI=\"D020928\">Mitogen-Activated Protein Kinases</NameOfSubstance>\n </Chemical>\n </ChemicalList>\n <CitationSubset>IM</CitationSubset>\n <MeshHeadingList>\n <MeshHeading>\n <DescriptorName MajorTopicYN=\"N\" UI=\"D000818\">Animals</DescriptorName>\n </MeshHeading>\n <MeshHeading>\n <DescriptorName MajorTopicYN=\"N\" UI=\"D045744\">Cell Line, Tumor</DescriptorName>\n </MeshHeading>\n <MeshHeading>\n <DescriptorName MajorTopicYN=\"N\" UI=\"D004353\">Drug Evaluation, Preclinical</DescriptorName>\n </MeshHeading>\n <MeshHeading>\n <DescriptorName MajorTopicYN=\"N\" UI=\"D005434\">Flow Cytometry</DescriptorName>\n <QualifierName MajorTopicYN=\"Y\" UI=\"Q000379\">methods</QualifierName>\n </MeshHeading>\n <MeshHeading>\n <DescriptorName MajorTopicYN=\"N\" UI=\"D006801\">Humans</DescriptorName>\n </MeshHeading>\n <MeshHeading>\n <DescriptorName MajorTopicYN=\"N\" UI=\"D053612\">Janus Kinases</DescriptorName>\n <QualifierName MajorTopicYN=\"N\" UI=\"Q000378\">metabolism</QualifierName>\n </MeshHeading>\n <MeshHeading>\n <DescriptorName MajorTopicYN=\"N\" UI=\"D051379\">Mice</DescriptorName>\n </MeshHeading>\n <MeshHeading>\n <DescriptorName MajorTopicYN=\"N\" UI=\"D008807\">Mice, Inbred BALB C</DescriptorName>\n </MeshHeading>\n <MeshHeading>\n <DescriptorName MajorTopicYN=\"N\" UI=\"D020928\">Mitogen-Activated Protein Kinases</DescriptorName>\n <QualifierName MajorTopicYN=\"N\" UI=\"Q000378\">metabolism</QualifierName>\n </MeshHeading>\n <MeshHeading>\n <DescriptorName MajorTopicYN=\"N\" UI=\"D010758\">Phosphorus</DescriptorName>\n <QualifierName MajorTopicYN=\"Y\" UI=\"Q000032\">analysis</QualifierName>\n </MeshHeading>\n <MeshHeading>\n <DescriptorName MajorTopicYN=\"N\" UI=\"D050791\">STAT Transcription Factors</DescriptorName>\n <QualifierName MajorTopicYN=\"N\" UI=\"Q000378\">metabolism</QualifierName>\n </MeshHeading>\n <MeshHeading>\n <DescriptorName MajorTopicYN=\"N\" UI=\"D012680\">Sensitivity and Specificity</DescriptorName>\n </MeshHeading>\n <MeshHeading>\n <DescriptorName MajorTopicYN=\"N\" UI=\"D015398\">Signal Transduction</DescriptorName>\n </MeshHeading>\n </MeshHeadingList>\n </MedlineCitation>\n <PubmedData>\n <History>\n <PubMedPubDate PubStatus=\"received\">\n <Year>2007</Year>\n <Month>6</Month>\n <Day>15</Day>\n </PubMedPubDate>\n <PubMedPubDate PubStatus=\"accepted\">\n <Year>2007</Year>\n <Month>10</Month>\n <Day>30</Day>\n </PubMedPubDate>\n <PubMedPubDate PubStatus=\"aheadofprint\">\n <Year>2007</Year>\n <Month>12</Month>\n <Day>23</Day>\n </PubMedPubDate>\n <PubMedPubDate PubStatus=\"pubmed\">\n <Year>2007</Year>\n <Month>12</Month>\n <Day>25</Day>\n <Hour>9</Hour>\n <Minute>0</Minute>\n </PubMedPubDate>\n <PubMedPubDate PubStatus=\"medline\">\n <Year>2008</Year>\n <Month>2</Month>\n <Day>9</Day>\n <Hour>9</Hour>\n <Minute>0</Minute>\n </PubMedPubDate>\n <PubMedPubDate PubStatus=\"entrez\">\n <Year>2007</Year>\n <Month>12</Month>\n <Day>25</Day>\n <Hour>9</Hour>\n <Minute>0</Minute>\n </PubMedPubDate>\n </History>\n <PublicationStatus>ppublish</PublicationStatus>\n <ArticleIdList>\n <ArticleId IdType=\"pii\">nchembio.2007.59</ArticleId>\n <ArticleId IdType=\"doi\">10.1038/nchembio.2007.59</ArticleId>\n <ArticleId IdType=\"pubmed\">18157122</ArticleId>\n </ArticleIdList>\n </PubmedData>\n</PubmedArticle>\n<PubmedArticle>\n <MedlineCitation Owner=\"NLM\" Status=\"MEDLINE\">\n <PMID Version=\"1\">18157123</PMID>\n <DateCreated>\n <Year>2008</Year>\n <Month>01</Month>\n <Day>18</Day>\n </DateCreated>\n <DateCompleted>\n <Year>2008</Year>\n <Month>02</Month>\n <Day>08</Day>\n </DateCompleted>\n <DateRevised>\n <Year>2013</Year>\n <Month>11</Month>\n <Day>21</Day>\n </DateRevised>\n <Article PubModel=\"Print-Electronic\">\n <Journal>\n <ISSN IssnType=\"Electronic\">1552-4469</ISSN>\n <JournalIssue CitedMedium=\"Internet\">\n <Volume>4</Volume>\n <Issue>2</Issue>\n <PubDate>\n <Year>2008</Year>\n <Month>Feb</Month>\n </PubDate>\n </JournalIssue>\n <Title>Nature chemical biology</Title>\n <ISOAbbreviation>Nat. Chem. Biol.</ISOAbbreviation>\n </Journal>\n <ArticleTitle>Site selectivity of platinum anticancer therapeutics.</ArticleTitle>\n <Pagination>\n <MedlinePgn>110-2</MedlinePgn>\n </Pagination>\n <Abstract>\n <AbstractText>X-ray crystallographic and biochemical investigation of the reaction of cisplatin and oxaliplatin with nucleosome core particle and naked DNA reveals that histone octamer association can modulate DNA platination. Adduct formation also occurs at specific histone methionine residues, which could serve as a nuclear platinum reservoir influencing adduct transfer to DNA. Our findings suggest that the nucleosome center may provide a favorable target for the design of improved platinum anticancer drugs.</AbstractText>\n </Abstract>\n <AuthorList CompleteYN=\"Y\">\n <Author ValidYN=\"Y\">\n <LastName>Wu</LastName>\n <ForeName>Bin</ForeName>\n <Initials>B</Initials>\n <AffiliationInfo>\n <Affiliation>Division of Structural and Computational Biology, School of Biological Sciences, Nanyang Technological University, 60 Nanyang Drive, Singapore 637551, Singapore.</Affiliation>\n </AffiliationInfo>\n </Author>\n <Author ValidYN=\"Y\">\n <LastName>Dröge</LastName>\n <ForeName>Peter</ForeName>\n <Initials>P</Initials>\n </Author>\n <Author ValidYN=\"Y\">\n <LastName>Davey</LastName>\n <ForeName>Curt A</ForeName>\n <Initials>CA</Initials>\n </Author>\n </AuthorList>\n <Language>eng</Language>\n <DataBankList CompleteYN=\"Y\">\n <DataBank>\n <DataBankName>PubChem-Substance</DataBankName>\n <AccessionNumberList>\n <AccessionNumber>46095911</AccessionNumber>\n <AccessionNumber>46095912</AccessionNumber>\n </AccessionNumberList>\n </DataBank>\n </DataBankList>\n <PublicationTypeList>\n <PublicationType UI=\"D016428\">Journal Article</PublicationType>\n <PublicationType UI=\"D013485\">Research Support, Non-U.S. Gov't</PublicationType>\n </PublicationTypeList>\n <ArticleDate DateType=\"Electronic\">\n <Year>2007</Year>\n <Month>12</Month>\n <Day>23</Day>\n </ArticleDate>\n </Article>\n <MedlineJournalInfo>\n <Country>United States</Country>\n <MedlineTA>Nat Chem Biol</MedlineTA>\n <NlmUniqueID>101231976</NlmUniqueID>\n <ISSNLinking>1552-4450</ISSNLinking>\n </MedlineJournalInfo>\n <ChemicalList>\n <Chemical>\n <RegistryNumber>0</RegistryNumber>\n <NameOfSubstance UI=\"D000970\">Antineoplastic Agents</NameOfSubstance>\n </Chemical>\n <Chemical>\n <RegistryNumber>0</RegistryNumber>\n <NameOfSubstance UI=\"D018736\">DNA Adducts</NameOfSubstance>\n </Chemical>\n <Chemical>\n <RegistryNumber>0</RegistryNumber>\n <NameOfSubstance UI=\"D006657\">Histones</NameOfSubstance>\n </Chemical>\n <Chemical>\n <RegistryNumber>0</RegistryNumber>\n <NameOfSubstance UI=\"D009707\">Nucleosomes</NameOfSubstance>\n </Chemical>\n <Chemical>\n <RegistryNumber>49DFR088MY</RegistryNumber>\n <NameOfSubstance UI=\"D010984\">Platinum</NameOfSubstance>\n </Chemical>\n </ChemicalList>\n <CitationSubset>IM</CitationSubset>\n <MeshHeadingList>\n <MeshHeading>\n <DescriptorName MajorTopicYN=\"N\" UI=\"D000595\">Amino Acid Sequence</DescriptorName>\n </MeshHeading>\n <MeshHeading>\n <DescriptorName MajorTopicYN=\"N\" UI=\"D000970\">Antineoplastic Agents</DescriptorName>\n <QualifierName MajorTopicYN=\"Y\" UI=\"Q000737\">chemistry</QualifierName>\n </MeshHeading>\n <MeshHeading>\n <DescriptorName MajorTopicYN=\"N\" UI=\"D001483\">Base Sequence</DescriptorName>\n </MeshHeading>\n <MeshHeading>\n <DescriptorName MajorTopicYN=\"N\" UI=\"D018360\">Crystallography, X-Ray</DescriptorName>\n </MeshHeading>\n <MeshHeading>\n <DescriptorName MajorTopicYN=\"N\" UI=\"D018736\">DNA Adducts</DescriptorName>\n <QualifierName MajorTopicYN=\"N\" UI=\"Q000737\">chemistry</QualifierName>\n </MeshHeading>\n <MeshHeading>\n <DescriptorName MajorTopicYN=\"N\" UI=\"D006657\">Histones</DescriptorName>\n <QualifierName MajorTopicYN=\"N\" UI=\"Q000737\">chemistry</QualifierName>\n <QualifierName MajorTopicYN=\"N\" UI=\"Q000378\">metabolism</QualifierName>\n </MeshHeading>\n <MeshHeading>\n <DescriptorName MajorTopicYN=\"N\" UI=\"D008958\">Models, Molecular</DescriptorName>\n </MeshHeading>\n <MeshHeading>\n <DescriptorName MajorTopicYN=\"N\" UI=\"D008969\">Molecular Sequence Data</DescriptorName>\n </MeshHeading>\n <MeshHeading>\n <DescriptorName MajorTopicYN=\"N\" UI=\"D009707\">Nucleosomes</DescriptorName>\n <QualifierName MajorTopicYN=\"N\" UI=\"Q000737\">chemistry</QualifierName>\n <QualifierName MajorTopicYN=\"N\" UI=\"Q000378\">metabolism</QualifierName>\n </MeshHeading>\n <MeshHeading>\n <DescriptorName MajorTopicYN=\"N\" UI=\"D010984\">Platinum</DescriptorName>\n <QualifierName MajorTopicYN=\"Y\" UI=\"Q000737\">chemistry</QualifierName>\n </MeshHeading>\n <MeshHeading>\n <DescriptorName MajorTopicYN=\"N\" UI=\"D017434\">Protein Structure, Tertiary</DescriptorName>\n </MeshHeading>\n <MeshHeading>\n <DescriptorName MajorTopicYN=\"N\" UI=\"D012680\">Sensitivity and Specificity</DescriptorName>\n </MeshHeading>\n </MeshHeadingList>\n </MedlineCitation>\n <PubmedData>\n <History>\n <PubMedPubDate PubStatus=\"received\">\n <Year>2007</Year>\n <Month>6</Month>\n <Day>07</Day>\n </PubMedPubDate>\n <PubMedPubDate PubStatus=\"accepted\">\n <Year>2007</Year>\n <Month>10</Month>\n <Day>26</Day>\n </PubMedPubDate>\n <PubMedPubDate PubStatus=\"aheadofprint\">\n <Year>2007</Year>\n <Month>12</Month>\n <Day>23</Day>\n </PubMedPubDate>\n <PubMedPubDate PubStatus=\"pubmed\">\n <Year>2007</Year>\n <Month>12</Month>\n <Day>25</Day>\n <Hour>9</Hour>\n <Minute>0</Minute>\n </PubMedPubDate>\n <PubMedPubDate PubStatus=\"medline\">\n <Year>2008</Year>\n <Month>2</Month>\n <Day>9</Day>\n <Hour>9</Hour>\n <Minute>0</Minute>\n </PubMedPubDate>\n <PubMedPubDate PubStatus=\"entrez\">\n <Year>2007</Year>\n <Month>12</Month>\n <Day>25</Day>\n <Hour>9</Hour>\n <Minute>0</Minute>\n </PubMedPubDate>\n </History>\n <PublicationStatus>ppublish</PublicationStatus>\n <ArticleIdList>\n <ArticleId IdType=\"pii\">nchembio.2007.58</ArticleId>\n <ArticleId IdType=\"doi\">10.1038/nchembio.2007.58</ArticleId>\n <ArticleId IdType=\"pubmed\">18157123</ArticleId>\n </ArticleIdList>\n </PubmedData>\n</PubmedArticle>\n\n</PubmedArticleSet>\n",
"items": [
{
"itemType": "journalArticle",
"title": "High-content single-cell drug screening with phosphospecific flow cytometry",
"creators": [
{
"firstName": "Peter O.",
"lastName": "Krutzik",
"creatorType": "author"
},
{
"firstName": "Janelle M.",
"lastName": "Crane",
"creatorType": "author"
},
{
"firstName": "Matthew R.",
"lastName": "Clutter",
"creatorType": "author"
},
{
"firstName": "Garry P.",
"lastName": "Nolan",
"creatorType": "author"
}
],
"date": "2008-02",
"DOI": "10.1038/nchembio.2007.59",
"ISSN": "1552-4469",
"abstractNote": "Drug screening is often limited to cell-free assays involving purified enzymes, but it is arguably best applied against systems that represent disease states or complex physiological cellular networks. Here, we describe a high-content, cell-based drug discovery platform based on phosphospecific flow cytometry, or phosphoflow, that enabled screening for inhibitors against multiple endogenous kinase signaling pathways in heterogeneous primary cell populations at the single-cell level. From a library of small-molecule natural products, we identified pathway-selective inhibitors of Jak-Stat and MAP kinase signaling. Dose-response experiments in primary cells confirmed pathway selectivity, but importantly also revealed differential inhibition of cell types and new druggability trends across multiple compounds. Lead compound selectivity was confirmed in vivo in mice. Phosphoflow therefore provides a unique platform that can be applied throughout the drug discovery process, from early compound screening to in vivo testing and clinical monitoring of drug efficacy.",
"extra": "PMID: 18157122",
"issue": "2",
"journalAbbreviation": "Nat. Chem. Biol.",
"language": "eng",
"pages": "132-142",
"publicationTitle": "Nature Chemical Biology",
"volume": "4",
"attachments": [
{
"title": "PubMed entry",
"mimeType": "text/html",
"snapshot": false
}
],
"tags": [
{
"tag": "Animals"
},
{
"tag": "Cell Line, Tumor"
},
{
"tag": "Drug Evaluation, Preclinical"
},
{
"tag": "Flow Cytometry"
},
{
"tag": "Humans"
},
{
"tag": "Janus Kinases"
},
{
"tag": "Mice"
},
{
"tag": "Mice, Inbred BALB C"
},
{
"tag": "Mitogen-Activated Protein Kinases"
},
{
"tag": "Phosphorus"
},
{
"tag": "STAT Transcription Factors"
},
{
"tag": "Sensitivity and Specificity"
},
{
"tag": "Signal Transduction"
}
],
"notes": [],
"seeAlso": []
},
{
"itemType": "journalArticle",
"title": "Site selectivity of platinum anticancer therapeutics",
"creators": [
{
"firstName": "Bin",
"lastName": "Wu",
"creatorType": "author"
},
{
"firstName": "Peter",
"lastName": "Dröge",
"creatorType": "author"
},
{
"firstName": "Curt A.",
"lastName": "Davey",
"creatorType": "author"
}
],
"date": "2008-02",
"DOI": "10.1038/nchembio.2007.58",
"ISSN": "1552-4469",
"abstractNote": "X-ray crystallographic and biochemical investigation of the reaction of cisplatin and oxaliplatin with nucleosome core particle and naked DNA reveals that histone octamer association can modulate DNA platination. Adduct formation also occurs at specific histone methionine residues, which could serve as a nuclear platinum reservoir influencing adduct transfer to DNA. Our findings suggest that the nucleosome center may provide a favorable target for the design of improved platinum anticancer drugs.",
"extra": "PMID: 18157123",
"issue": "2",
"journalAbbreviation": "Nat. Chem. Biol.",
"language": "eng",
"pages": "110-112",
"publicationTitle": "Nature Chemical Biology",
"volume": "4",
"attachments": [
{
"title": "PubMed entry",
"mimeType": "text/html",
"snapshot": false
}
],
"tags": [
{
"tag": "Amino Acid Sequence"
},
{
"tag": "Antineoplastic Agents"
},
{
"tag": "Base Sequence"
},
{
"tag": "Crystallography, X-Ray"
},
{
"tag": "DNA Adducts"
},
{
"tag": "Histones"
},
{
"tag": "Models, Molecular"
},
{
"tag": "Molecular Sequence Data"
},
{
"tag": "Nucleosomes"
},
{
"tag": "Platinum"
},
{
"tag": "Protein Structure, Tertiary"
},
{
"tag": "Sensitivity and Specificity"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "<?xml version=\"1.0\"?>\n<!DOCTYPE PubmedArticleSet PUBLIC \"-//NLM//DTD PubMedArticle, 1st January 2015//EN\" \"http://www.ncbi.nlm.nih.gov/corehtml/query/DTD/pubmed_150101.dtd\">\n<PubmedArticleSet>\n<PubmedBookArticle>\n <BookDocument>\n <PMID>20821847</PMID>\n <ArticleIdList>\n <ArticleId IdType=\"bookaccession\">NBK22</ArticleId>\n </ArticleIdList>\n <Book>\n <Publisher>\n <PublisherName>BIOS Scientific Publishers</PublisherName>\n <PublisherLocation>Oxford</PublisherLocation>\n </Publisher>\n <BookTitle book=\"endocrin\">Endocrinology: An Integrated Approach</BookTitle>\n <PubDate>\n <Year>2001</Year>\n </PubDate>\n <AuthorList Type=\"authors\">\n <Author>\n <LastName>Nussey</LastName>\n <ForeName>Stephen</ForeName>\n <Initials>S</Initials>\n </Author>\n <Author>\n <LastName>Whitehead</LastName>\n <ForeName>Saffron</ForeName>\n <Initials>S</Initials>\n </Author>\n </AuthorList>\n <Isbn>1859962521</Isbn>\n </Book>\n <Language>eng</Language>\n <Abstract>\n <AbstractText>Endocrinology has been written to meet the requirements of today's trainee doctors and the demands of an increasing number of degree courses in health and biomedical sciences, and allied subjects. It is a truly integrated text using large numbers of real clinical cases to introduce the basic biochemistry, physiology and pathophysiology underlying endocrine disorders and also the principles of clinical diagnosis and treatment. The increasing importance of the molecular and genetic aspects of endocrinology in relation to clinical medicine is explained.</AbstractText>\n <CopyrightInformation>Copyright © 2001, BIOS Scientific Publishers Limited</CopyrightInformation>\n </Abstract>\n <Sections>\n <Section>\n <SectionTitle book=\"endocrin\" part=\"A2\">Preface</SectionTitle>\n </Section>\n <Section>\n <LocationLabel Type=\"chapter\">Chapter 1</LocationLabel>\n <SectionTitle book=\"endocrin\" part=\"A3\">Principles of endocrinology</SectionTitle>\n </Section>\n <Section>\n <LocationLabel Type=\"chapter\">Chapter 2</LocationLabel>\n <SectionTitle book=\"endocrin\" part=\"A43\">The endocrine pancreas</SectionTitle>\n </Section>\n <Section>\n <LocationLabel Type=\"chapter\">Chapter 3</LocationLabel>\n <SectionTitle book=\"endocrin\" part=\"A235\">The thyroid gland</SectionTitle>\n </Section>\n <Section>\n <LocationLabel Type=\"chapter\">Chapter 4</LocationLabel>\n <SectionTitle book=\"endocrin\" part=\"A442\">The adrenal gland</SectionTitle>\n </Section>\n <Section>\n <LocationLabel Type=\"chapter\">Chapter 5</LocationLabel>\n <SectionTitle book=\"endocrin\" part=\"A742\">The parathyroid glands and vitamin D</SectionTitle>\n </Section>\n <Section>\n <LocationLabel Type=\"chapter\">Chapter 6</LocationLabel>\n <SectionTitle book=\"endocrin\" part=\"A972\">The gonad</SectionTitle>\n </Section>\n <Section>\n <LocationLabel Type=\"chapter\">Chapter 7</LocationLabel>\n <SectionTitle book=\"endocrin\" part=\"A1257\">The pituitary gland</SectionTitle>\n </Section>\n <Section>\n <LocationLabel Type=\"chapter\">Chapter 8</LocationLabel>\n <SectionTitle book=\"endocrin\" part=\"A1527\">Cardiovascular and renal endocrinology</SectionTitle>\n </Section>\n </Sections>\n </BookDocument>\n <PubmedBookData>\n <History>\n <PubMedPubDate PubStatus=\"pubmed\">\n <Year>2010</Year>\n <Month>9</Month>\n <Day>8</Day>\n <Hour>6</Hour>\n <Minute>0</Minute>\n </PubMedPubDate>\n <PubMedPubDate PubStatus=\"medline\">\n <Year>2010</Year>\n <Month>9</Month>\n <Day>8</Day>\n <Hour>6</Hour>\n <Minute>0</Minute>\n </PubMedPubDate>\n <PubMedPubDate PubStatus=\"entrez\">\n <Year>2010</Year>\n <Month>9</Month>\n <Day>8</Day>\n <Hour>6</Hour>\n <Minute>0</Minute>\n </PubMedPubDate>\n </History>\n <PublicationStatus>ppublish</PublicationStatus>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">20821847</ArticleId>\n </ArticleIdList>\n </PubmedBookData>\n</PubmedBookArticle>\n\n</PubmedArticleSet>\n",
"items": [
{
"itemType": "book",
"title": "Endocrinology: An Integrated Approach",
"creators": [
{
"firstName": "Stephen",
"lastName": "Nussey",
"creatorType": "author"
},
{
"firstName": "Saffron",
"lastName": "Whitehead",
"creatorType": "author"
}
],
"date": "2001",
"ISBN": "1859962521",
"abstractNote": "Endocrinology has been written to meet the requirements of today's trainee doctors and the demands of an increasing number of degree courses in health and biomedical sciences, and allied subjects. It is a truly integrated text using large numbers of real clinical cases to introduce the basic biochemistry, physiology and pathophysiology underlying endocrine disorders and also the principles of clinical diagnosis and treatment. The increasing importance of the molecular and genetic aspects of endocrinology in relation to clinical medicine is explained.",
"callNumber": "NBK22",
"extra": "PMID: 20821847",
"language": "eng",
"place": "Oxford",
"publisher": "BIOS Scientific Publishers",
"rights": "Copyright © 2001, BIOS Scientific Publishers Limited",
"url": "http://www.ncbi.nlm.nih.gov/books/NBK22/",
"attachments": [
{
"title": "PubMed entry",
"mimeType": "text/html",
"snapshot": false
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "<?xml version=\"1.0\"?>\n<!DOCTYPE PubmedArticleSet PUBLIC \"-//NLM//DTD PubMedArticle, 1st January 2015//EN\" \"http://www.ncbi.nlm.nih.gov/corehtml/query/DTD/pubmed_150101.dtd\">\n<PubmedArticleSet>\n\n<PubmedArticle>\n <MedlineCitation Owner=\"NLM\" Status=\"In-Process\">\n <PMID Version=\"1\">26074225</PMID>\n <DateCreated>\n <Year>2015</Year>\n <Month>07</Month>\n <Day>20</Day>\n </DateCreated>\n <Article PubModel=\"Print-Electronic\">\n <Journal>\n <ISSN IssnType=\"Electronic\">1525-3198</ISSN>\n <JournalIssue CitedMedium=\"Internet\">\n <Volume>98</Volume>\n <Issue>8</Issue>\n <PubDate>\n <Year>2015</Year>\n <Month>Aug</Month>\n </PubDate>\n </JournalIssue>\n <Title>Journal of dairy science</Title>\n <ISOAbbreviation>J. Dairy Sci.</ISOAbbreviation>\n </Journal>\n <ArticleTitle>Evaluation of testing strategies to identify infected animals at a single round of testing within dairy herds known to be infected with Mycobacterium avium ssp. paratuberculosis.</ArticleTitle>\n <Pagination>\n <MedlinePgn>5194-210</MedlinePgn>\n </Pagination>\n <ELocationID EIdType=\"doi\" ValidYN=\"Y\">10.3168/jds.2014-8211</ELocationID>\n <ELocationID EIdType=\"pii\" ValidYN=\"Y\">S0022-0302(15)00395-1</ELocationID>\n <Abstract>\n <AbstractText>As part of a broader control strategy within herds known to be infected with Mycobacterium avium ssp. paratuberculosis (MAP), individual animal testing is generally conducted to identify infected animals for action, usually culling. Opportunities are now available to quantitatively compare different testing strategies (combinations of tests) in known infected herds. This study evaluates the effectiveness, cost, and cost-effectiveness of different testing strategies to identify infected animals at a single round of testing within dairy herds known to be MAP infected. A model was developed, taking account of both within-herd infection dynamics and test performance, to simulate the use of different tests at a single round of testing in a known infected herd. Model inputs included the number of animals at different stages of infection, the sensitivity and specificity of each test, and the costs of testing and culling. Testing strategies included either milk or serum ELISA alone or with fecal culture in series. Model outputs included effectiveness (detection fraction, the proportion of truly infected animals in the herd that are successfully detected by the testing strategy), cost, and cost-effectiveness (testing cost per true positive detected, total cost per true positive detected). Several assumptions were made: MAP was introduced with a single animal and no management interventions were implemented to limit within-herd transmission of MAP before this test. In medium herds, between 7 and 26% of infected animals are detected at a single round of testing, the former using the milk ELISA and fecal culture in series 5 yr after MAP introduction and the latter using fecal culture alone 15 yr after MAP introduction. The combined costs of testing and culling at a single round of testing increases with time since introduction of MAP infection, with culling costs being much greater than testing costs. The cost-effectiveness of testing varied by testing strategy. It was also greater at 5 yr, compared with 10 or 15 yr, since MAP introduction, highlighting the importance of early detection. Future work is needed to evaluate these testing strategies in subsequent rounds of testing as well as accounting for different herd dynamics and different levels of herd biocontainment.</AbstractText>\n <CopyrightInformation>Copyright © 2015 American Dairy Science Association. Published by Elsevier Inc. All rights reserved.</CopyrightInformation>\n </Abstract>\n <AuthorList CompleteYN=\"Y\">\n <Author ValidYN=\"Y\">\n <LastName>More</LastName>\n <ForeName>S J</ForeName>\n <Initials>SJ</Initials>\n <AffiliationInfo>\n <Affiliation>Centre for Veterinary Epidemiology and Risk Analysis, UCD School of Veterinary Medicine, University College Dublin, Belfield, Dublin 4, Ireland. Electronic address: simon.more@ucd.ie.</Affiliation>\n </AffiliationInfo>\n </Author>\n <Author ValidYN=\"Y\">\n <LastName>Cameron</LastName>\n <ForeName>A R</ForeName>\n <Initials>AR</Initials>\n <AffiliationInfo>\n <Affiliation>AusVet Animal Health Services Pty Ltd., 69001 Lyon, France.</Affiliation>\n </AffiliationInfo>\n </Author>\n <Author ValidYN=\"Y\">\n <LastName>Strain</LastName>\n <ForeName>S</ForeName>\n <Initials>S</Initials>\n <AffiliationInfo>\n <Affiliation>Animal Health & Welfare Northern Ireland, Dungannon BT71 7DX, Northern Ireland.</Affiliation>\n </AffiliationInfo>\n </Author>\n <Author ValidYN=\"Y\">\n <LastName>Cashman</LastName>\n <ForeName>W</ForeName>\n <Initials>W</Initials>\n <AffiliationInfo>\n <Affiliation>Riverstown Cross, Glanmire, Co. Cork, Ireland.</Affiliation>\n </AffiliationInfo>\n </Author>\n <Author ValidYN=\"Y\">\n <LastName>Ezanno</LastName>\n <ForeName>P</ForeName>\n <Initials>P</Initials>\n <AffiliationInfo>\n <Affiliation>INRA, Oniris, LUNAM Université, UMR1300 Biologie, Epidémiologie et Analyse de Risque en Santé Animale, CS 40706, F-44307 Nantes, France.</Affiliation>\n </AffiliationInfo>\n </Author>\n <Author ValidYN=\"Y\">\n <LastName>Kenny</LastName>\n <ForeName>K</ForeName>\n <Initials>K</Initials>\n <AffiliationInfo>\n <Affiliation>Central Veterinary Research Laboratory, Department of Agriculture, Food and the Marine, Backweston, Cellbridge, Co. Kildare, Ireland.</Affiliation>\n </AffiliationInfo>\n </Author>\n <Author ValidYN=\"Y\">\n <LastName>Fourichon</LastName>\n <ForeName>C</ForeName>\n <Initials>C</Initials>\n <AffiliationInfo>\n <Affiliation>INRA, Oniris, LUNAM Université, UMR1300 Biologie, Epidémiologie et Analyse de Risque en Santé Animale, CS 40706, F-44307 Nantes, France.</Affiliation>\n </AffiliationInfo>\n </Author>\n <Author ValidYN=\"Y\">\n <LastName>Graham</LastName>\n <ForeName>D</ForeName>\n <Initials>D</Initials>\n <AffiliationInfo>\n <Affiliation>Animal Health Ireland, Main Street, Carrick-on-Shannon, Co. Leitrim, Ireland.</Affiliation>\n </AffiliationInfo>\n </Author>\n </AuthorList>\n <Language>eng</Language>\n <PublicationTypeList>\n <PublicationType UI=\"D016428\">Journal Article</PublicationType>\n <PublicationType UI=\"D013485\">Research Support, Non-U.S. Gov't</PublicationType>\n </PublicationTypeList>\n <ArticleDate DateType=\"Electronic\">\n <Year>2015</Year>\n <Month>07</Month>\n <Day>07</Day>\n </ArticleDate>\n </Article>\n <MedlineJournalInfo>\n <Country>United States</Country>\n <MedlineTA>J Dairy Sci</MedlineTA>\n <NlmUniqueID>2985126R</NlmUniqueID>\n <ISSNLinking>0022-0302</ISSNLinking>\n </MedlineJournalInfo>\n <CitationSubset>IM</CitationSubset>\n <KeywordList Owner=\"NOTNLM\">\n <Keyword MajorTopicYN=\"N\">Johne’s disease</Keyword>\n <Keyword MajorTopicYN=\"N\">control</Keyword>\n <Keyword MajorTopicYN=\"N\">evaluation</Keyword>\n <Keyword MajorTopicYN=\"N\">infected herd</Keyword>\n <Keyword MajorTopicYN=\"N\">testing strategies</Keyword>\n </KeywordList>\n </MedlineCitation>\n <PubmedData>\n <History>\n <PubMedPubDate PubStatus=\"received\">\n <Year>2014</Year>\n <Month>4</Month>\n <Day>7</Day>\n </PubMedPubDate>\n <PubMedPubDate PubStatus=\"accepted\">\n <Year>2015</Year>\n <Month>4</Month>\n <Day>24</Day>\n </PubMedPubDate>\n <PubMedPubDate PubStatus=\"aheadofprint\">\n <Year>2015</Year>\n <Month>7</Month>\n <Day>7</Day>\n </PubMedPubDate>\n <PubMedPubDate PubStatus=\"entrez\">\n <Year>2015</Year>\n <Month>6</Month>\n <Day>16</Day>\n <Hour>6</Hour>\n <Minute>0</Minute>\n </PubMedPubDate>\n <PubMedPubDate PubStatus=\"pubmed\">\n <Year>2015</Year>\n <Month>6</Month>\n <Day>16</Day>\n <Hour>6</Hour>\n <Minute>0</Minute>\n </PubMedPubDate>\n <PubMedPubDate PubStatus=\"medline\">\n <Year>2015</Year>\n <Month>6</Month>\n <Day>16</Day>\n <Hour>6</Hour>\n <Minute>0</Minute>\n </PubMedPubDate>\n </History>\n <PublicationStatus>ppublish</PublicationStatus>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">26074225</ArticleId>\n <ArticleId IdType=\"pii\">S0022-0302(15)00395-1</ArticleId>\n <ArticleId IdType=\"doi\">10.3168/jds.2014-8211</ArticleId>\n </ArticleIdList>\n </PubmedData>\n</PubmedArticle>\n\n\n<PubmedArticle>\n <MedlineCitation Status=\"Publisher\" Owner=\"NLM\">\n <PMID Version=\"1\">26166904</PMID>\n <DateCreated>\n <Year>2015</Year>\n <Month>7</Month>\n <Day>13</Day>\n </DateCreated>\n <DateRevised>\n <Year>2015</Year>\n <Month>7</Month>\n <Day>19</Day>\n </DateRevised>\n <Article PubModel=\"Print\">\n <Journal>\n <ISSN IssnType=\"Print\">0035-9254</ISSN>\n <JournalIssue CitedMedium=\"Print\">\n <Volume>64</Volume>\n <Issue>4</Issue>\n <PubDate>\n <Year>2015</Year>\n <Month>Aug</Month>\n <Day>1</Day>\n </PubDate>\n </JournalIssue>\n <Title>Journal of the Royal Statistical Society. Series C, Applied statistics</Title>\n <ISOAbbreviation>J R Stat Soc Ser C Appl Stat</ISOAbbreviation>\n </Journal>\n <ArticleTitle>Optimal retesting configurations for hierarchical group testing.</ArticleTitle>\n <Pagination>\n <MedlinePgn>693-710</MedlinePgn>\n </Pagination>\n <Abstract>\n <AbstractText NlmCategory=\"UNASSIGNED\">Hierarchical group testing is widely used to test individuals for diseases. This testing procedure works by first amalgamating individual specimens into groups for testing. Groups testing negatively have their members declared negative. Groups testing positively are subsequently divided into smaller subgroups and are then retested to search for positive individuals. In our paper, we propose a new class of informative retesting procedures for hierarchical group testing that acknowledges heterogeneity among individuals. These procedures identify the optimal number of groups and their sizes at each testing stage in order to minimize the expected number of tests. We apply our proposals in two settings: 1) HIV testing programs that currently use three-stage hierarchical testing and 2) chlamydia and gonorrhea screening practices that currently use individual testing. For both applications, we show that substantial savings can be realized by our new procedures.</AbstractText>\n </Abstract>\n <AuthorList>\n <Author>\n <LastName>Black</LastName>\n <ForeName>Michael S</ForeName>\n <Initials>MS</Initials>\n <AffiliationInfo>\n <Affiliation>Department of Mathematics, University of Wisconsin-Platteville, Platteville, WI 53818, USA, blackmi@uwplatt.edu.</Affiliation>\n </AffiliationInfo>\n </Author>\n <Author>\n <LastName>Bilder</LastName>\n <ForeName>Christopher R</ForeName>\n <Initials>CR</Initials>\n <AffiliationInfo>\n <Affiliation>Department of Statistics, University of Nebraska-Lincoln, Lincoln, NE 68583, USA.</Affiliation>\n </AffiliationInfo>\n </Author>\n <Author>\n <LastName>Tebbs</LastName>\n <ForeName>Joshua M</ForeName>\n <Initials>JM</Initials>\n <AffiliationInfo>\n <Affiliation>Department of Statistics, University of South Carolina, Columbia, SC 29208, USA, tebbs@stat.sc.edu.</Affiliation>\n </AffiliationInfo>\n </Author>\n </AuthorList>\n <Language>ENG</Language>\n <GrantList>\n <Grant>\n <GrantID>R01 AI067373</GrantID>\n <Acronym>AI</Acronym>\n <Agency>NIAID NIH HHS</Agency>\n <Country>United States</Country>\n </Grant>\n </GrantList>\n <PublicationTypeList>\n <PublicationType UI=\"\">JOURNAL ARTICLE</PublicationType>\n </PublicationTypeList>\n </Article>\n <MedlineJournalInfo>\n <MedlineTA>J R Stat Soc Ser C Appl Stat</MedlineTA>\n <NlmUniqueID>101086541</NlmUniqueID>\n <ISSNLinking>0035-9254</ISSNLinking>\n </MedlineJournalInfo>\n <KeywordList Owner=\"NOTNLM\">\n <Keyword MajorTopicYN=\"N\">Classification</Keyword>\n <Keyword MajorTopicYN=\"N\">HIV</Keyword>\n <Keyword MajorTopicYN=\"N\">Infertility Prevention Project</Keyword>\n <Keyword MajorTopicYN=\"N\">Informative retesting</Keyword>\n <Keyword MajorTopicYN=\"N\">Pooled testing</Keyword>\n <Keyword MajorTopicYN=\"N\">Retesting</Keyword>\n </KeywordList>\n </MedlineCitation>\n <PubmedData>\n <History>\n <PubMedPubDate PubStatus=\"entrez\">\n <Year>2015</Year>\n <Month>7</Month>\n <Day>14</Day>\n <Hour>6</Hour>\n <Minute>0</Minute>\n </PubMedPubDate>\n <PubMedPubDate PubStatus=\"pubmed\">\n <Year>2015</Year>\n <Month>7</Month>\n <Day>15</Day>\n <Hour>6</Hour>\n <Minute>0</Minute>\n </PubMedPubDate>\n <PubMedPubDate PubStatus=\"medline\">\n <Year>2015</Year>\n <Month>7</Month>\n <Day>15</Day>\n <Hour>6</Hour>\n <Minute>0</Minute>\n </PubMedPubDate>\n <PubMedPubDate PubStatus=\"pmc-release\">\n <Year>2016</Year>\n <Month>8</Month>\n <Day>1</Day>\n <Hour>0</Hour>\n <Minute>0</Minute>\n </PubMedPubDate>\n </History>\n <PublicationStatus>ppublish</PublicationStatus>\n <ArticleIdList>\n <ArticleId IdType=\"doi\">10.1111/rssc.12097</ArticleId>\n <ArticleId IdType=\"pubmed\">26166904</ArticleId>\n <ArticleId IdType=\"pmc\">PMC4495770</ArticleId>\n <ArticleId IdType=\"mid\">NIHMS641826</ArticleId>\n </ArticleIdList>\n <?nihms?>\n </PubmedData>\n</PubmedArticle>\n\n</PubmedArticleSet>",
"items": [
{
"itemType": "journalArticle",
"title": "Evaluation of testing strategies to identify infected animals at a single round of testing within dairy herds known to be infected with Mycobacterium avium ssp. paratuberculosis",
"creators": [
{
"firstName": "S. J.",
"lastName": "More",
"creatorType": "author"
},
{
"firstName": "A. R.",
"lastName": "Cameron",
"creatorType": "author"
},
{
"firstName": "S.",
"lastName": "Strain",
"creatorType": "author"
},
{
"firstName": "W.",
"lastName": "Cashman",
"creatorType": "author"
},
{
"firstName": "P.",
"lastName": "Ezanno",
"creatorType": "author"
},
{
"firstName": "K.",
"lastName": "Kenny",
"creatorType": "author"
},
{
"firstName": "C.",
"lastName": "Fourichon",
"creatorType": "author"
},
{
"firstName": "D.",
"lastName": "Graham",
"creatorType": "author"
}
],
"date": "2015-08",
"DOI": "10.3168/jds.2014-8211",
"ISSN": "1525-3198",
"abstractNote": "As part of a broader control strategy within herds known to be infected with Mycobacterium avium ssp. paratuberculosis (MAP), individual animal testing is generally conducted to identify infected animals for action, usually culling. Opportunities are now available to quantitatively compare different testing strategies (combinations of tests) in known infected herds. This study evaluates the effectiveness, cost, and cost-effectiveness of different testing strategies to identify infected animals at a single round of testing within dairy herds known to be MAP infected. A model was developed, taking account of both within-herd infection dynamics and test performance, to simulate the use of different tests at a single round of testing in a known infected herd. Model inputs included the number of animals at different stages of infection, the sensitivity and specificity of each test, and the costs of testing and culling. Testing strategies included either milk or serum ELISA alone or with fecal culture in series. Model outputs included effectiveness (detection fraction, the proportion of truly infected animals in the herd that are successfully detected by the testing strategy), cost, and cost-effectiveness (testing cost per true positive detected, total cost per true positive detected). Several assumptions were made: MAP was introduced with a single animal and no management interventions were implemented to limit within-herd transmission of MAP before this test. In medium herds, between 7 and 26% of infected animals are detected at a single round of testing, the former using the milk ELISA and fecal culture in series 5 yr after MAP introduction and the latter using fecal culture alone 15 yr after MAP introduction. The combined costs of testing and culling at a single round of testing increases with time since introduction of MAP infection, with culling costs being much greater than testing costs. The cost-effectiveness of testing varied by testing strategy. It was also greater at 5 yr, compared with 10 or 15 yr, since MAP introduction, highlighting the importance of early detection. Future work is needed to evaluate these testing strategies in subsequent rounds of testing as well as accounting for different herd dynamics and different levels of herd biocontainment.",
"extra": "PMID: 26074225",
"issue": "8",
"journalAbbreviation": "J. Dairy Sci.",
"language": "eng",
"pages": "5194-5210",
"publicationTitle": "Journal of Dairy Science",
"volume": "98",
"attachments": [
{
"title": "PubMed entry",
"mimeType": "text/html",
"snapshot": false
}
],
"tags": [
{
"tag": "Johne’s disease"
},
{
"tag": "control"
},
{
"tag": "evaluation"
},
{
"tag": "infected herd"
},
{
"tag": "testing strategies"
}
],
"notes": [],
"seeAlso": []
},
{
"itemType": "journalArticle",
"title": "Optimal retesting configurations for hierarchical group testing",
"creators": [
{
"firstName": "Michael S.",
"lastName": "Black",
"creatorType": "author"
},
{
"firstName": "Christopher R.",
"lastName": "Bilder",
"creatorType": "author"
},
{
"firstName": "Joshua M.",
"lastName": "Tebbs",
"creatorType": "author"
}
],
"date": "2015-08-01",
"DOI": "10.1111/rssc.12097",
"ISSN": "0035-9254",
"abstractNote": "Hierarchical group testing is widely used to test individuals for diseases. This testing procedure works by first amalgamating individual specimens into groups for testing. Groups testing negatively have their members declared negative. Groups testing positively are subsequently divided into smaller subgroups and are then retested to search for positive individuals. In our paper, we propose a new class of informative retesting procedures for hierarchical group testing that acknowledges heterogeneity among individuals. These procedures identify the optimal number of groups and their sizes at each testing stage in order to minimize the expected number of tests. We apply our proposals in two settings: 1) HIV testing programs that currently use three-stage hierarchical testing and 2) chlamydia and gonorrhea screening practices that currently use individual testing. For both applications, we show that substantial savings can be realized by our new procedures.",
"extra": "PMID: 26166904\nPMCID: PMC4495770",
"issue": "4",
"journalAbbreviation": "J R Stat Soc Ser C Appl Stat",
"language": "ENG",
"pages": "693-710",
"publicationTitle": "Journal of the Royal Statistical Society. Series C, Applied Statistics",
"volume": "64",
"attachments": [
{
"title": "PubMed entry",
"mimeType": "text/html",
"snapshot": false
}
],
"tags": [
{
"tag": "Classification"
},
{
"tag": "HIV"
},
{
"tag": "Infertility Prevention Project"
},
{
"tag": "Informative retesting"
},
{
"tag": "Pooled testing"
},
{
"tag": "Retesting"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "<?xml version=\"1.0\" ?>\n <!DOCTYPE PubmedArticleSet PUBLIC \"-//NLM//DTD PubMedArticle, 1st January 2019//EN\" \"https://dtd.nlm.nih.gov/ncbi/pubmed/out/pubmed_190101.dtd\">\n <PubmedArticleSet>\n <PubmedArticle>\n <MedlineCitation Status=\"MEDLINE\" Owner=\"NLM\">\n <PMID Version=\"1\">20729678</PMID>\n <DateCompleted>\n <Year>2010</Year>\n <Month>12</Month>\n <Day>21</Day>\n </DateCompleted>\n <DateRevised>\n <Year>2019</Year>\n <Month>12</Month>\n <Day>10</Day>\n </DateRevised>\n <Article PubModel=\"Print\">\n <Journal>\n <ISSN IssnType=\"Electronic\">1538-9855</ISSN>\n <JournalIssue CitedMedium=\"Internet\">\n <Volume>35</Volume>\n <Issue>5</Issue>\n <PubDate>\n <MedlineDate>2010 Sep-Oct</MedlineDate>\n </PubDate>\n </JournalIssue>\n <Title>Nurse educator</Title>\n </Journal>\n <ArticleTitle>Zotero: harnessing the power of a personal bibliographic manager.</ArticleTitle>\n <Pagination>\n <MedlinePgn>205-7</MedlinePgn>\n </Pagination>\n <ELocationID EIdType=\"doi\" ValidYN=\"Y\">10.1097/NNE.0b013e3181ed81e4</ELocationID>\n <Abstract>\n <AbstractText>Zotero is a powerful free personal bibliographic manager (PBM) for writers. Use of a PBM allows the writer to focus on content, rather than the tedious details of formatting citations and references. Zotero 2.0 (http://www.zotero.org) has new features including the ability to synchronize citations with the off-site Zotero server and the ability to collaborate and share with others. An overview on how to use the software and discussion about the strengths and limitations are included.</AbstractText>\n </Abstract>\n <AuthorList CompleteYN=\"Y\">\n <Author ValidYN=\"Y\">\n <LastName>Coar</LastName>\n <ForeName>Jaekea T</ForeName>\n <Initials>JT</Initials>\n <AffiliationInfo>\n <Affiliation>School of Nursing, Georgia College & State University, Milledgeville, Georgia 61061, USA.</Affiliation>\n </AffiliationInfo>\n </Author>\n <Author ValidYN=\"Y\">\n <LastName>Sewell</LastName>\n <ForeName>Jeanne P</ForeName>\n <Initials>JP</Initials>\n </Author>\n </AuthorList>\n <Language>eng</Language>\n <PublicationTypeList>\n <PublicationType UI=\"D016428\">Journal Article</PublicationType>\n </PublicationTypeList>\n </Article>\n <MedlineJournalInfo>\n <Country>United States</Country>\n <MedlineTA>Nurse Educ</MedlineTA>\n <NlmUniqueID>7701902</NlmUniqueID>\n <ISSNLinking>0363-3624</ISSNLinking>\n </MedlineJournalInfo>\n <CitationSubset>N</CitationSubset>\n <MeshHeadingList>\n <MeshHeading>\n <DescriptorName UI=\"D001634\" MajorTopicYN=\"Y\">Bibliographies as Topic</DescriptorName>\n </MeshHeading>\n <MeshHeading>\n <DescriptorName UI=\"D003628\" MajorTopicYN=\"Y\">Database Management Systems</DescriptorName>\n </MeshHeading>\n <MeshHeading>\n <DescriptorName UI=\"D006801\" MajorTopicYN=\"N\">Humans</DescriptorName>\n </MeshHeading>\n </MeshHeadingList>\n </MedlineCitation>\n <PubmedData>\n <History>\n <PubMedPubDate PubStatus=\"entrez\">\n <Year>2010</Year>\n <Month>8</Month>\n <Day>24</Day>\n <Hour>6</Hour>\n <Minute>0</Minute>\n </PubMedPubDate>\n <PubMedPubDate PubStatus=\"pubmed\">\n <Year>2010</Year>\n <Month>8</Month>\n <Day>24</Day>\n <Hour>6</Hour>\n <Minute>0</Minute>\n </PubMedPubDate>\n <PubMedPubDate PubStatus=\"medline\">\n <Year>2010</Year>\n <Month>12</Month>\n <Day>22</Day>\n <Hour>6</Hour>\n <Minute>0</Minute>\n </PubMedPubDate>\n </History>\n <PublicationStatus>ppublish</PublicationStatus>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">20729678</ArticleId>\n <ArticleId IdType=\"doi\">10.1097/NNE.0b013e3181ed81e4</ArticleId>\n <ArticleId IdType=\"pii\">00006223-201009000-00011</ArticleId>\n </ArticleIdList>\n </PubmedData>\n </PubmedArticle>\n \n </PubmedArticleSet>",
"items": [
{
"itemType": "journalArticle",
"title": "Zotero: harnessing the power of a personal bibliographic manager",
"creators": [
{
"firstName": "Jaekea T.",
"lastName": "Coar",
"creatorType": "author"
},
{
"firstName": "Jeanne P.",
"lastName": "Sewell",
"creatorType": "author"
}
],
"date": "2010 Sep-Oct",
"DOI": "10.1097/NNE.0b013e3181ed81e4",
"ISSN": "1538-9855",
"abstractNote": "Zotero is a powerful free personal bibliographic manager (PBM) for writers. Use of a PBM allows the writer to focus on content, rather than the tedious details of formatting citations and references. Zotero 2.0 (http://www.zotero.org) has new features including the ability to synchronize citations with the off-site Zotero server and the ability to collaborate and share with others. An overview on how to use the software and discussion about the strengths and limitations are included.",
"extra": "PMID: 20729678",
"issue": "5",
"journalAbbreviation": "Nurse Educ",
"language": "eng",
"pages": "205-207",
"publicationTitle": "Nurse Educator",
"volume": "35",
"attachments": [
{
"title": "PubMed entry",
"mimeType": "text/html",
"snapshot": false
}
],
"tags": [
{
"tag": "Bibliographies as Topic"
},
{
"tag": "Database Management Systems"
},
{
"tag": "Humans"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "<?xml version=\"1.0\" ?>\n <!DOCTYPE PubmedArticleSet PUBLIC \"-//NLM//DTD PubMedArticle, 1st January 2019//EN\" \"https://dtd.nlm.nih.gov/ncbi/pubmed/out/pubmed_190101.dtd\">\n <PubmedArticleSet>\n <PubmedArticle>\n <MedlineCitation Status=\"MEDLINE\" Owner=\"NLM\">\n <PMID Version=\"1\">30133126</PMID>\n <DateCompleted>\n <Year>2019</Year>\n <Month>01</Month>\n <Day>29</Day>\n </DateCompleted>\n <DateRevised>\n <Year>2019</Year>\n <Month>01</Month>\n <Day>29</Day>\n </DateRevised>\n <Article PubModel=\"Print-Electronic\">\n <Journal>\n <ISSN IssnType=\"Electronic\">1601-183X</ISSN>\n <JournalIssue CitedMedium=\"Internet\">\n <Volume>17</Volume>\n <Issue>8</Issue>\n <PubDate>\n <Year>2018</Year>\n <Month>11</Month>\n </PubDate>\n </JournalIssue>\n <Title>Genes, brain, and behavior</Title>\n <ISOAbbreviation>Genes Brain Behav</ISOAbbreviation>\n </Journal>\n <ArticleTitle>Neph2/Kirrel3 regulates sensory input, motor coordination, and home-cage activity in rodents.</ArticleTitle>\n <Pagination>\n <MedlinePgn>e12516</MedlinePgn>\n </Pagination>\n <ELocationID EIdType=\"doi\" ValidYN=\"Y\">10.1111/gbb.12516</ELocationID>\n <Abstract>\n <AbstractText>Adhesion molecules of the immunoglobulin superfamily (IgSF) are essential for neuronal synapse development across evolution and control various aspects of synapse formation and maturation. Neph2, also known as Kirrel3, is an IgSF adhesion molecule implicated in synapse formation, synaptic transmission and ultrastructure. In humans, defects in the NEPH2 gene have been associated with neurodevelopmental disorders such as Jacobsen syndrome, intellectual disability, and autism-spectrum disorders. However, the precise role in development and function of the nervous system is still unclear. Here, we present the histomorphological and phenotypical analysis of a constitutive Neph2-knockout mouse line. Knockout mice display defects in auditory sensory processing, motor skills, and hyperactivity in the home-cage analysis. Olfactory, memory and metabolic testing did not differ from controls. Despite the wide-spread expression of Neph2 in various brain areas, no gross anatomic defects could be observed. Neph2 protein could be located at the cerebellar pinceaux. It interacted with the pinceau core component neurofascin and other synaptic proteins thus suggesting a possible role in cerebellar synapse formation and circuit assembly. Our results suggest that Neph2/Kirrel3 acts on the synaptic ultrastructural level and neuronal wiring rather than on ontogenetic events affecting macroscopic structure. Neph2-knockout mice may provide a valuable rodent model for research on autism spectrum diseases and neurodevelopmental disorders.</AbstractText>\n <CopyrightInformation>© 2018 John Wiley & Sons Ltd and International Behavioural and Neural Genetics Society.</CopyrightInformation>\n </Abstract>\n <AuthorList CompleteYN=\"Y\">\n <Author ValidYN=\"Y\">\n <LastName>Völker</LastName>\n <ForeName>Linus A</ForeName>\n <Initials>LA</Initials>\n <Identifier Source=\"ORCID\">0000-0002-4461-6128</Identifier>\n <AffiliationInfo>\n <Affiliation>Department II of Internal Medicine and Center for Molecular Medicine Cologne, University of Cologne, Cologne, Germany.</Affiliation>\n </AffiliationInfo>\n </Author>\n <Author ValidYN=\"Y\">\n <LastName>Maar</LastName>\n <ForeName>Barbara A</ForeName>\n <Initials>BA</Initials>\n <AffiliationInfo>\n <Affiliation>Department II of Internal Medicine and Center for Molecular Medicine Cologne, University of Cologne, Cologne, Germany.</Affiliation>\n </AffiliationInfo>\n </Author>\n <Author ValidYN=\"Y\">\n <LastName>Pulido Guevara</LastName>\n <ForeName>Barbara A</ForeName>\n <Initials>BA</Initials>\n <AffiliationInfo>\n <Affiliation>Department II of Internal Medicine and Center for Molecular Medicine Cologne, University of Cologne, Cologne, Germany.</Affiliation>\n </AffiliationInfo>\n </Author>\n <Author ValidYN=\"Y\">\n <LastName>Bilkei-Gorzo</LastName>\n <ForeName>Andras</ForeName>\n <Initials>A</Initials>\n <AffiliationInfo>\n <Affiliation>Institute of Molecular Psychiatry, Medical Faculty of the University of Bonn, Bonn, Germany.</Affiliation>\n </AffiliationInfo>\n </Author>\n <Author ValidYN=\"Y\">\n <LastName>Zimmer</LastName>\n <ForeName>Andreas</ForeName>\n <Initials>A</Initials>\n <AffiliationInfo>\n <Affiliation>Institute of Molecular Psychiatry, Medical Faculty of the University of Bonn, Bonn, Germany.</Affiliation>\n </AffiliationInfo>\n </Author>\n <Author ValidYN=\"Y\">\n <LastName>Brönneke</LastName>\n <ForeName>Hella</ForeName>\n <Initials>H</Initials>\n <AffiliationInfo>\n <Affiliation>Mouse Phenotyping Core Facility, Cologne Excellence Cluster on Cellular Stress Responses (CECAD), 50931 Cologne, Germany.</Affiliation>\n </AffiliationInfo>\n </Author>\n <Author ValidYN=\"Y\">\n <LastName>Dafinger</LastName>\n <ForeName>Claudia</ForeName>\n <Initials>C</Initials>\n <AffiliationInfo>\n <Affiliation>Department II of Internal Medicine and Center for Molecular Medicine Cologne, University of Cologne, Cologne, Germany.</Affiliation>\n </AffiliationInfo>\n </Author>\n <Author ValidYN=\"Y\">\n <LastName>Bertsch</LastName>\n <ForeName>Sabine</ForeName>\n <Initials>S</Initials>\n <AffiliationInfo>\n <Affiliation>Department II of Internal Medicine and Center for Molecular Medicine Cologne, University of Cologne, Cologne, Germany.</Affiliation>\n </AffiliationInfo>\n </Author>\n <Author ValidYN=\"Y\">\n <LastName>Wagener</LastName>\n <ForeName>Jan-Robin</ForeName>\n <Initials>JR</Initials>\n <AffiliationInfo>\n <Affiliation>Institute for Neuroanatomy, Universitätsmedizin Göttingen, Georg-August-University Göttingen, Göttingen, Germany.</Affiliation>\n </AffiliationInfo>\n </Author>\n <Author ValidYN=\"Y\">\n <LastName>Schweizer</LastName>\n <ForeName>Heiko</ForeName>\n <Initials>H</Initials>\n <AffiliationInfo>\n <Affiliation>Renal Division, University Hospital Freiburg, Freiburg, Germany.</Affiliation>\n </AffiliationInfo>\n </Author>\n <Author ValidYN=\"Y\">\n <LastName>Schermer</LastName>\n <ForeName>Bernhard</ForeName>\n <Initials>B</Initials>\n <AffiliationInfo>\n <Affiliation>Department II of Internal Medicine and Center for Molecular Medicine Cologne, University of Cologne, Cologne, Germany.</Affiliation>\n </AffiliationInfo>\n <AffiliationInfo>\n <Affiliation>Cologne Excellence Cluster on Cellular Stress Responses in Aging-Associated Diseases (CECAD), University of Cologne, Cologne, Germany.</Affiliation>\n </AffiliationInfo>\n <AffiliationInfo>\n <Affiliation>Systems Biology of Ageing Cologne (Sybacol), University of Cologne, Cologne, Germany.</Affiliation>\n </AffiliationInfo>\n </Author>\n <Author ValidYN=\"Y\">\n <LastName>Benzing</LastName>\n <ForeName>Thomas</ForeName>\n <Initials>T</Initials>\n <AffiliationInfo>\n <Affiliation>Department II of Internal Medicine and Center for Molecular Medicine Cologne, University of Cologne, Cologne, Germany.</Affiliation>\n </AffiliationInfo>\n <AffiliationInfo>\n <Affiliation>Cologne Excellence Cluster on Cellular Stress Responses in Aging-Associated Diseases (CECAD), University of Cologne, Cologne, Germany.</Affiliation>\n </AffiliationInfo>\n <AffiliationInfo>\n <Affiliation>Systems Biology of Ageing Cologne (Sybacol), University of Cologne, Cologne, Germany.</Affiliation>\n </AffiliationInfo>\n </Author>\n <Author ValidYN=\"Y\">\n <LastName>Hoehne</LastName>\n <ForeName>Martin</ForeName>\n <Initials>M</Initials>\n <AffiliationInfo>\n <Affiliation>Department II of Internal Medicine and Center for Molecular Medicine Cologne, University of Cologne, Cologne, Germany.</Affiliation>\n </AffiliationInfo>\n <AffiliationInfo>\n <Affiliation>Cologne Excellence Cluster on Cellular Stress Responses in Aging-Associated Diseases (CECAD), University of Cologne, Cologne, Germany.</Affiliation>\n </AffiliationInfo>\n <AffiliationInfo>\n <Affiliation>Systems Biology of Ageing Cologne (Sybacol), University of Cologne, Cologne, Germany.</Affiliation>\n </AffiliationInfo>\n </Author>\n </AuthorList>\n <Language>eng</Language>\n <PublicationTypeList>\n <PublicationType UI=\"D016428\">Journal Article</PublicationType>\n </PublicationTypeList>\n <ArticleDate DateType=\"Electronic\">\n <Year>2018</Year>\n <Month>09</Month>\n <Day>14</Day>\n </ArticleDate>\n </Article>\n <MedlineJournalInfo>\n <Country>England</Country>\n <MedlineTA>Genes Brain Behav</MedlineTA>\n <NlmUniqueID>101129617</NlmUniqueID>\n <ISSNLinking>1601-183X</ISSNLinking>\n </MedlineJournalInfo>\n <ChemicalList>\n <Chemical>\n <RegistryNumber>0</RegistryNumber>\n <NameOfSubstance UI=\"D002352\">Carrier Proteins</NameOfSubstance>\n </Chemical>\n <Chemical>\n <RegistryNumber>0</RegistryNumber>\n <NameOfSubstance UI=\"D007136\">Immunoglobulins</NameOfSubstance>\n </Chemical>\n <Chemical>\n <RegistryNumber>0</RegistryNumber>\n <NameOfSubstance UI=\"C474214\">Kirrel3 protein, mouse</NameOfSubstance>\n </Chemical>\n <Chemical>\n <RegistryNumber>0</RegistryNumber>\n <NameOfSubstance UI=\"D008565\">Membrane Proteins</NameOfSubstance>\n </Chemical>\n </ChemicalList>\n <CitationSubset>IM</CitationSubset>\n <MeshHeadingList>\n <MeshHeading>\n <DescriptorName UI=\"D000818\" MajorTopicYN=\"N\">Animals</DescriptorName>\n </MeshHeading>\n <MeshHeading>\n <DescriptorName UI=\"D002352\" MajorTopicYN=\"N\">Carrier Proteins</DescriptorName>\n <QualifierName UI=\"Q000235\" MajorTopicYN=\"N\">genetics</QualifierName>\n </MeshHeading>\n <MeshHeading>\n <DescriptorName UI=\"D002448\" MajorTopicYN=\"N\">Cell Adhesion</DescriptorName>\n <QualifierName UI=\"Q000502\" MajorTopicYN=\"N\">physiology</QualifierName>\n </MeshHeading>\n <MeshHeading>\n <DescriptorName UI=\"D007136\" MajorTopicYN=\"N\">Immunoglobulins</DescriptorName>\n <QualifierName UI=\"Q000502\" MajorTopicYN=\"N\">physiology</QualifierName>\n </MeshHeading>\n <MeshHeading>\n <DescriptorName UI=\"D008565\" MajorTopicYN=\"N\">Membrane Proteins</DescriptorName>\n <QualifierName UI=\"Q000235\" MajorTopicYN=\"Y\">genetics</QualifierName>\n <QualifierName UI=\"Q000502\" MajorTopicYN=\"Y\">physiology</QualifierName>\n </MeshHeading>\n <MeshHeading>\n <DescriptorName UI=\"D051379\" MajorTopicYN=\"N\">Mice</DescriptorName>\n </MeshHeading>\n <MeshHeading>\n <DescriptorName UI=\"D018345\" MajorTopicYN=\"N\">Mice, Knockout</DescriptorName>\n </MeshHeading>\n <MeshHeading>\n <DescriptorName UI=\"D055495\" MajorTopicYN=\"N\">Neurogenesis</DescriptorName>\n </MeshHeading>\n <MeshHeading>\n <DescriptorName UI=\"D009474\" MajorTopicYN=\"N\">Neurons</DescriptorName>\n <QualifierName UI=\"Q000378\" MajorTopicYN=\"N\">metabolism</QualifierName>\n </MeshHeading>\n <MeshHeading>\n <DescriptorName UI=\"D013569\" MajorTopicYN=\"N\">Synapses</DescriptorName>\n <QualifierName UI=\"Q000378\" MajorTopicYN=\"N\">metabolism</QualifierName>\n </MeshHeading>\n </MeshHeadingList>\n <KeywordList Owner=\"NOTNLM\">\n <Keyword MajorTopicYN=\"Y\">Jacobsen syndrome</Keyword>\n <Keyword MajorTopicYN=\"Y\">Kirrel3</Keyword>\n <Keyword MajorTopicYN=\"Y\">Neph2</Keyword>\n <Keyword MajorTopicYN=\"Y\">attention-deficit hyperactivity disorder</Keyword>\n <Keyword MajorTopicYN=\"Y\">autism-spectrum disorder</Keyword>\n <Keyword MajorTopicYN=\"Y\">behavior</Keyword>\n <Keyword MajorTopicYN=\"Y\">cerebellum</Keyword>\n <Keyword MajorTopicYN=\"Y\">intellectual disability</Keyword>\n <Keyword MajorTopicYN=\"Y\">knockout</Keyword>\n <Keyword MajorTopicYN=\"Y\">neurodevelopmental disorders</Keyword>\n <Keyword MajorTopicYN=\"Y\">neurofascin</Keyword>\n <Keyword MajorTopicYN=\"Y\">olfaction</Keyword>\n <Keyword MajorTopicYN=\"Y\">phenotyping</Keyword>\n </KeywordList>\n </MedlineCitation>\n <PubmedData>\n <History>\n <PubMedPubDate PubStatus=\"received\">\n <Year>2018</Year>\n <Month>04</Month>\n <Day>07</Day>\n </PubMedPubDate>\n <PubMedPubDate PubStatus=\"revised\">\n <Year>2018</Year>\n <Month>07</Month>\n <Day>22</Day>\n </PubMedPubDate>\n <PubMedPubDate PubStatus=\"accepted\">\n <Year>2018</Year>\n <Month>08</Month>\n <Day>17</Day>\n </PubMedPubDate>\n <PubMedPubDate PubStatus=\"pubmed\">\n <Year>2018</Year>\n <Month>8</Month>\n <Day>23</Day>\n <Hour>6</Hour>\n <Minute>0</Minute>\n </PubMedPubDate>\n <PubMedPubDate PubStatus=\"medline\">\n <Year>2019</Year>\n <Month>1</Month>\n <Day>30</Day>\n <Hour>6</Hour>\n <Minute>0</Minute>\n </PubMedPubDate>\n <PubMedPubDate PubStatus=\"entrez\">\n <Year>2018</Year>\n <Month>8</Month>\n <Day>23</Day>\n <Hour>6</Hour>\n <Minute>0</Minute>\n </PubMedPubDate>\n </History>\n <PublicationStatus>ppublish</PublicationStatus>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">30133126</ArticleId>\n <ArticleId IdType=\"doi\">10.1111/gbb.12516</ArticleId>\n </ArticleIdList>\n </PubmedData>\n </PubmedArticle>\n \n </PubmedArticleSet>",
"items": [
{
"itemType": "journalArticle",
"title": "Neph2/Kirrel3 regulates sensory input, motor coordination, and home-cage activity in rodents",
"creators": [
{
"firstName": "Linus A.",
"lastName": "Völker",
"creatorType": "author"
},
{
"firstName": "Barbara A.",
"lastName": "Maar",
"creatorType": "author"
},
{
"firstName": "Barbara A.",
"lastName": "Pulido Guevara",
"creatorType": "author"
},
{
"firstName": "Andras",
"lastName": "Bilkei-Gorzo",
"creatorType": "author"
},
{
"firstName": "Andreas",
"lastName": "Zimmer",
"creatorType": "author"
},
{
"firstName": "Hella",
"lastName": "Brönneke",
"creatorType": "author"
},
{
"firstName": "Claudia",
"lastName": "Dafinger",
"creatorType": "author"
},
{
"firstName": "Sabine",
"lastName": "Bertsch",
"creatorType": "author"
},
{
"firstName": "Jan-Robin",
"lastName": "Wagener",
"creatorType": "author"
},
{
"firstName": "Heiko",
"lastName": "Schweizer",
"creatorType": "author"
},
{
"firstName": "Bernhard",
"lastName": "Schermer",
"creatorType": "author"
},
{
"firstName": "Thomas",
"lastName": "Benzing",
"creatorType": "author"
},
{
"firstName": "Martin",
"lastName": "Hoehne",
"creatorType": "author"
}
],
"date": "2018-11",
"DOI": "10.1111/gbb.12516",
"ISSN": "1601-183X",
"abstractNote": "Adhesion molecules of the immunoglobulin superfamily (IgSF) are essential for neuronal synapse development across evolution and control various aspects of synapse formation and maturation. Neph2, also known as Kirrel3, is an IgSF adhesion molecule implicated in synapse formation, synaptic transmission and ultrastructure. In humans, defects in the NEPH2 gene have been associated with neurodevelopmental disorders such as Jacobsen syndrome, intellectual disability, and autism-spectrum disorders. However, the precise role in development and function of the nervous system is still unclear. Here, we present the histomorphological and phenotypical analysis of a constitutive Neph2-knockout mouse line. Knockout mice display defects in auditory sensory processing, motor skills, and hyperactivity in the home-cage analysis. Olfactory, memory and metabolic testing did not differ from controls. Despite the wide-spread expression of Neph2 in various brain areas, no gross anatomic defects could be observed. Neph2 protein could be located at the cerebellar pinceaux. It interacted with the pinceau core component neurofascin and other synaptic proteins thus suggesting a possible role in cerebellar synapse formation and circuit assembly. Our results suggest that Neph2/Kirrel3 acts on the synaptic ultrastructural level and neuronal wiring rather than on ontogenetic events affecting macroscopic structure. Neph2-knockout mice may provide a valuable rodent model for research on autism spectrum diseases and neurodevelopmental disorders.",
"extra": "PMID: 30133126",
"issue": "8",
"journalAbbreviation": "Genes Brain Behav",
"language": "eng",
"pages": "e12516",
"publicationTitle": "Genes, Brain, and Behavior",
"volume": "17",
"attachments": [
{
"title": "PubMed entry",
"mimeType": "text/html",
"snapshot": false
}
],
"tags": [
{
"tag": "Animals"
},
{
"tag": "Carrier Proteins"
},
{
"tag": "Cell Adhesion"
},
{
"tag": "Immunoglobulins"
},
{
"tag": "Jacobsen syndrome"
},
{
"tag": "Kirrel3"
},
{
"tag": "Membrane Proteins"
},
{
"tag": "Mice"
},
{
"tag": "Mice, Knockout"
},
{
"tag": "Neph2"
},
{
"tag": "Neurogenesis"
},
{
"tag": "Neurons"
},
{
"tag": "Synapses"
},
{
"tag": "attention-deficit hyperactivity disorder"
},
{
"tag": "autism-spectrum disorder"
},
{
"tag": "behavior"
},
{
"tag": "cerebellum"
},
{
"tag": "intellectual disability"
},
{
"tag": "knockout"
},
{
"tag": "neurodevelopmental disorders"
},
{
"tag": "neurofascin"
},
{
"tag": "olfaction"
},
{
"tag": "phenotyping"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "<?xml version=\"1.0\" ?>\n <!DOCTYPE PubmedArticleSet PUBLIC \"-//NLM//DTD PubMedArticle, 1st January 2019//EN\" \"https://dtd.nlm.nih.gov/ncbi/pubmed/out/pubmed_190101.dtd\">\n <PubmedArticleSet>\n <PubmedArticle>\n <MedlineCitation Status=\"MEDLINE\" Owner=\"NLM\">\n <PMID Version=\"1\">30714901</PMID>\n <DateCompleted>\n <Year>2020</Year>\n <Month>04</Month>\n <Day>10</Day>\n </DateCompleted>\n <DateRevised>\n <Year>2020</Year>\n <Month>04</Month>\n <Day>10</Day>\n </DateRevised>\n <Article PubModel=\"Electronic\">\n <Journal>\n <ISSN IssnType=\"Electronic\">2050-084X</ISSN>\n <JournalIssue CitedMedium=\"Internet\">\n <Volume>8</Volume>\n <PubDate>\n <Year>2019</Year>\n <Month>02</Month>\n <Day>04</Day>\n </PubDate>\n </JournalIssue>\n <Title>eLife</Title>\n <ISOAbbreviation>Elife</ISOAbbreviation>\n </Journal>\n <ArticleTitle>Stereotyped terminal axon branching of leg motor neurons mediated by IgSF proteins DIP-α and Dpr10.</ArticleTitle>\n <ELocationID EIdType=\"doi\" ValidYN=\"Y\">10.7554/eLife.42692</ELocationID>\n <ELocationID EIdType=\"pii\" ValidYN=\"Y\">e42692</ELocationID>\n <Abstract>\n <AbstractText>For animals to perform coordinated movements requires the precise organization of neural circuits controlling motor function. Motor neurons (MNs), key components of these circuits, project their axons from the central nervous system and form precise terminal branching patterns at specific muscles. Focusing on the <i>Drosophila</i> leg neuromuscular system, we show that the stereotyped terminal branching of a subset of MNs is mediated by interacting transmembrane Ig superfamily proteins DIP-α and Dpr10, present in MNs and target muscles, respectively. The DIP-α/Dpr10 interaction is needed only after MN axons reach the vicinity of their muscle targets. Live imaging suggests that precise terminal branching patterns are gradually established by DIP-α/Dpr10-dependent interactions between fine axon filopodia and developing muscles. Further, different leg MNs depend on the DIP-α and Dpr10 interaction to varying degrees that correlate with the morphological complexity of the MNs and their muscle targets.</AbstractText>\n <CopyrightInformation>© 2019, Venkatasubramanian et al.</CopyrightInformation>\n </Abstract>\n <AuthorList CompleteYN=\"Y\">\n <Author ValidYN=\"Y\">\n <LastName>Venkatasubramanian</LastName>\n <ForeName>Lalanti</ForeName>\n <Initials>L</Initials>\n <Identifier Source=\"ORCID\">0000-0002-9280-8335</Identifier>\n <AffiliationInfo>\n <Affiliation>Department of Biological Sciences, Columbia University, New York, United States.</Affiliation>\n </AffiliationInfo>\n <AffiliationInfo>\n <Affiliation>Department of Neuroscience, Mortimer B. Zuckerman Mind Brain Behavior Institute, New York, United States.</Affiliation>\n </AffiliationInfo>\n </Author>\n <Author ValidYN=\"Y\">\n <LastName>Guo</LastName>\n <ForeName>Zhenhao</ForeName>\n <Initials>Z</Initials>\n <AffiliationInfo>\n <Affiliation>Department of Biological Sciences, Columbia University, New York, United States.</Affiliation>\n </AffiliationInfo>\n </Author>\n <Author ValidYN=\"Y\">\n <LastName>Xu</LastName>\n <ForeName>Shuwa</ForeName>\n <Initials>S</Initials>\n <AffiliationInfo>\n <Affiliation>Department of Biological Chemistry, University of California, Los Angeles, Los Angeles, United States.</Affiliation>\n </AffiliationInfo>\n </Author>\n <Author ValidYN=\"Y\">\n <LastName>Tan</LastName>\n <ForeName>Liming</ForeName>\n <Initials>L</Initials>\n <AffiliationInfo>\n <Affiliation>Department of Biological Chemistry, University of California, Los Angeles, Los Angeles, United States.</Affiliation>\n </AffiliationInfo>\n </Author>\n <Author ValidYN=\"Y\">\n <LastName>Xiao</LastName>\n <ForeName>Qi</ForeName>\n <Initials>Q</Initials>\n <AffiliationInfo>\n <Affiliation>Department of Biological Chemistry, University of California, Los Angeles, Los Angeles, United States.</Affiliation>\n </AffiliationInfo>\n </Author>\n <Author ValidYN=\"Y\">\n <LastName>Nagarkar-Jaiswal</LastName>\n <ForeName>Sonal</ForeName>\n <Initials>S</Initials>\n <AffiliationInfo>\n <Affiliation>Department of Molecular and Human Genetics, Baylor College of Medicine, Houston, United States.</Affiliation>\n </AffiliationInfo>\n </Author>\n <Author ValidYN=\"Y\">\n <LastName>Mann</LastName>\n <ForeName>Richard S</ForeName>\n <Initials>RS</Initials>\n <Identifier Source=\"ORCID\">0000-0002-4749-2765</Identifier>\n <AffiliationInfo>\n <Affiliation>Department of Neuroscience, Mortimer B. Zuckerman Mind Brain Behavior Institute, New York, United States.</Affiliation>\n </AffiliationInfo>\n <AffiliationInfo>\n <Affiliation>Department of Biochemistry and Molecular Biophysics, Columbia University, New York, United States.</Affiliation>\n </AffiliationInfo>\n </Author>\n </AuthorList>\n <Language>eng</Language>\n <GrantList CompleteYN=\"Y\">\n <Grant>\n <GrantID>U19NS104655</GrantID>\n <Acronym>NH</Acronym>\n <Agency>NIH HHS</Agency>\n <Country>United States</Country>\n </Grant>\n <Grant>\n <GrantID>R01NS070644</GrantID>\n <Acronym>NH</Acronym>\n <Agency>NIH HHS</Agency>\n <Country>United States</Country>\n </Grant>\n <Grant>\n <GrantID>R01 GM067858</GrantID>\n <Acronym>GM</Acronym>\n <Agency>NIGMS NIH HHS</Agency>\n <Country>United States</Country>\n </Grant>\n <Grant>\n <GrantID>R01 NS070644</GrantID>\n <Acronym>NS</Acronym>\n <Agency>NINDS NIH HHS</Agency>\n <Country>United States</Country>\n </Grant>\n <Grant>\n <GrantID>U19 NS104655</GrantID>\n <Acronym>NS</Acronym>\n <Agency>NINDS NIH HHS</Agency>\n <Country>United States</Country>\n </Grant>\n </GrantList>\n <PublicationTypeList>\n <PublicationType UI=\"D016428\">Journal Article</PublicationType>\n <PublicationType UI=\"D052061\">Research Support, N.I.H., Extramural</PublicationType>\n </PublicationTypeList>\n <ArticleDate DateType=\"Electronic\">\n <Year>2019</Year>\n <Month>02</Month>\n <Day>04</Day>\n </ArticleDate>\n </Article>\n <MedlineJournalInfo>\n <Country>England</Country>\n <MedlineTA>Elife</MedlineTA>\n <NlmUniqueID>101579614</NlmUniqueID>\n <ISSNLinking>2050-084X</ISSNLinking>\n </MedlineJournalInfo>\n <ChemicalList>\n <Chemical>\n <RegistryNumber>0</RegistryNumber>\n <NameOfSubstance UI=\"C410062\">DISCO Interacting Protein 1, Drosophila</NameOfSubstance>\n </Chemical>\n <Chemical>\n <RegistryNumber>0</RegistryNumber>\n <NameOfSubstance UI=\"C083246\">DSIP-immunoreactive peptide</NameOfSubstance>\n </Chemical>\n <Chemical>\n <RegistryNumber>0</RegistryNumber>\n <NameOfSubstance UI=\"D029721\">Drosophila Proteins</NameOfSubstance>\n </Chemical>\n <Chemical>\n <RegistryNumber>0</RegistryNumber>\n <NameOfSubstance UI=\"D009479\">Neuropeptides</NameOfSubstance>\n </Chemical>\n <Chemical>\n <RegistryNumber>0</RegistryNumber>\n <NameOfSubstance UI=\"D014157\">Transcription Factors</NameOfSubstance>\n </Chemical>\n </ChemicalList>\n <CitationSubset>IM</CitationSubset>\n <MeshHeadingList>\n <MeshHeading>\n <DescriptorName UI=\"D000818\" MajorTopicYN=\"N\">Animals</DescriptorName>\n </MeshHeading>\n <MeshHeading>\n <DescriptorName UI=\"D001369\" MajorTopicYN=\"N\">Axons</DescriptorName>\n <QualifierName UI=\"Q000378\" MajorTopicYN=\"N\">metabolism</QualifierName>\n </MeshHeading>\n <MeshHeading>\n <DescriptorName UI=\"D029721\" MajorTopicYN=\"N\">Drosophila Proteins</DescriptorName>\n <QualifierName UI=\"Q000235\" MajorTopicYN=\"Y\">genetics</QualifierName>\n <QualifierName UI=\"Q000378\" MajorTopicYN=\"N\">metabolism</QualifierName>\n </MeshHeading>\n <MeshHeading>\n <DescriptorName UI=\"D004331\" MajorTopicYN=\"N\">Drosophila melanogaster</DescriptorName>\n <QualifierName UI=\"Q000235\" MajorTopicYN=\"N\">genetics</QualifierName>\n <QualifierName UI=\"Q000502\" MajorTopicYN=\"N\">physiology</QualifierName>\n </MeshHeading>\n <MeshHeading>\n <DescriptorName UI=\"D009046\" MajorTopicYN=\"N\">Motor Neurons</DescriptorName>\n <QualifierName UI=\"Q000378\" MajorTopicYN=\"N\">metabolism</QualifierName>\n <QualifierName UI=\"Q000502\" MajorTopicYN=\"Y\">physiology</QualifierName>\n </MeshHeading>\n <MeshHeading>\n <DescriptorName UI=\"D055495\" MajorTopicYN=\"N\">Neurogenesis</DescriptorName>\n <QualifierName UI=\"Q000235\" MajorTopicYN=\"Y\">genetics</QualifierName>\n </MeshHeading>\n <MeshHeading>\n <DescriptorName UI=\"D009476\" MajorTopicYN=\"N\">Neurons, Efferent</DescriptorName>\n <QualifierName UI=\"Q000378\" MajorTopicYN=\"N\">metabolism</QualifierName>\n </MeshHeading>\n <MeshHeading>\n <DescriptorName UI=\"D009479\" MajorTopicYN=\"N\">Neuropeptides</DescriptorName>\n <QualifierName UI=\"Q000235\" MajorTopicYN=\"N\">genetics</QualifierName>\n <QualifierName UI=\"Q000378\" MajorTopicYN=\"N\">metabolism</QualifierName>\n </MeshHeading>\n <MeshHeading>\n <DescriptorName UI=\"D014157\" MajorTopicYN=\"N\">Transcription Factors</DescriptorName>\n <QualifierName UI=\"Q000235\" MajorTopicYN=\"Y\">genetics</QualifierName>\n <QualifierName UI=\"Q000378\" MajorTopicYN=\"N\">metabolism</QualifierName>\n </MeshHeading>\n </MeshHeadingList>\n <KeywordList Owner=\"NOTNLM\">\n <Keyword MajorTopicYN=\"Y\">D. melanogaster</Keyword>\n <Keyword MajorTopicYN=\"Y\">DIP</Keyword>\n <Keyword MajorTopicYN=\"Y\">Dpr</Keyword>\n <Keyword MajorTopicYN=\"Y\">Ig domain proteins</Keyword>\n <Keyword MajorTopicYN=\"Y\">developmental biology</Keyword>\n <Keyword MajorTopicYN=\"Y\">leg development</Keyword>\n <Keyword MajorTopicYN=\"Y\">motor neuron</Keyword>\n <Keyword MajorTopicYN=\"Y\">neuroscience</Keyword>\n <Keyword MajorTopicYN=\"Y\">synapse formation</Keyword>\n </KeywordList>\n <CoiStatement>LV, ZG, SX, LT, QX, SN, RM No competing interests declared</CoiStatement>\n </MedlineCitation>\n <PubmedData>\n <History>\n <PubMedPubDate PubStatus=\"received\">\n <Year>2018</Year>\n <Month>10</Month>\n <Day>09</Day>\n </PubMedPubDate>\n <PubMedPubDate PubStatus=\"accepted\">\n <Year>2019</Year>\n <Month>01</Month>\n <Day>31</Day>\n </PubMedPubDate>\n <PubMedPubDate PubStatus=\"pubmed\">\n <Year>2019</Year>\n <Month>2</Month>\n <Day>5</Day>\n <Hour>6</Hour>\n <Minute>0</Minute>\n </PubMedPubDate>\n <PubMedPubDate PubStatus=\"medline\">\n <Year>2020</Year>\n <Month>4</Month>\n <Day>11</Day>\n <Hour>6</Hour>\n <Minute>0</Minute>\n </PubMedPubDate>\n <PubMedPubDate PubStatus=\"entrez\">\n <Year>2019</Year>\n <Month>2</Month>\n <Day>5</Day>\n <Hour>6</Hour>\n <Minute>0</Minute>\n </PubMedPubDate>\n </History>\n <PublicationStatus>epublish</PublicationStatus>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">30714901</ArticleId>\n <ArticleId IdType=\"doi\">10.7554/eLife.42692</ArticleId>\n <ArticleId IdType=\"pii\">42692</ArticleId>\n <ArticleId IdType=\"pmc\">PMC6391070</ArticleId>\n </ArticleIdList>\n <ReferenceList>\n <Reference>\n <Citation>Annu Rev Cell Dev Biol. 2015;31:669-98</Citation>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">26393773</ArticleId>\n </ArticleIdList>\n </Reference>\n <Reference>\n <Citation>Elife. 2019 Feb 04;8:</Citation>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">30714906</ArticleId>\n </ArticleIdList>\n </Reference>\n <Reference>\n <Citation>Cell. 2013 Jul 3;154(1):228-39</Citation>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">23827685</ArticleId>\n </ArticleIdList>\n </Reference>\n <Reference>\n <Citation>Development. 2004 Dec;131(24):6041-51</Citation>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">15537687</ArticleId>\n </ArticleIdList>\n </Reference>\n <Reference>\n <Citation>Genetics. 2000 Oct;156(2):723-31</Citation>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">11014819</ArticleId>\n </ArticleIdList>\n </Reference>\n <Reference>\n <Citation>Neuron. 2005 Dec 22;48(6):949-64</Citation>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">16364899</ArticleId>\n </ArticleIdList>\n </Reference>\n <Reference>\n <Citation>J Cachexia Sarcopenia Muscle. 2012 Mar;3(1):13-23</Citation>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">22450265</ArticleId>\n </ArticleIdList>\n </Reference>\n <Reference>\n <Citation>Neuron. 1994 Aug;13(2):405-14</Citation>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">8060618</ArticleId>\n </ArticleIdList>\n </Reference>\n <Reference>\n <Citation>Development. 2014 Dec;141(24):4667-80</Citation>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">25468936</ArticleId>\n </ArticleIdList>\n </Reference>\n <Reference>\n <Citation>Adv Exp Med Biol. 2014;800:133-48</Citation>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">24243104</ArticleId>\n </ArticleIdList>\n </Reference>\n <Reference>\n <Citation>PLoS One. 2006 Dec 27;1:e122</Citation>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">17205126</ArticleId>\n </ArticleIdList>\n </Reference>\n <Reference>\n <Citation>J Neurosci. 1998 May 1;18(9):3297-313</Citation>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">9547238</ArticleId>\n </ArticleIdList>\n </Reference>\n <Reference>\n <Citation>PLoS Genet. 2018 Aug 13;14(8):e1007560</Citation>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">30102700</ArticleId>\n </ArticleIdList>\n </Reference>\n <Reference>\n <Citation>J Vis Exp. 2018 Oct 30;(140):</Citation>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">30451217</ArticleId>\n </ArticleIdList>\n </Reference>\n <Reference>\n <Citation>Dev Biol. 2001 Jan 1;229(1):55-70</Citation>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">11133154</ArticleId>\n </ArticleIdList>\n </Reference>\n <Reference>\n <Citation>Neuron. 2018 Feb 7;97(3):538-554.e5</Citation>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">29395908</ArticleId>\n </ArticleIdList>\n </Reference>\n <Reference>\n <Citation>Curr Biol. 2016 Oct 24;26(20):R1022-R1038</Citation>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">27780045</ArticleId>\n </ArticleIdList>\n </Reference>\n <Reference>\n <Citation>Nat Biotechnol. 2010 Apr;28(4):348-53</Citation>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">20231818</ArticleId>\n </ArticleIdList>\n </Reference>\n <Reference>\n <Citation>Annu Rev Cell Dev Biol. 2009;25:161-95</Citation>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">19575668</ArticleId>\n </ArticleIdList>\n </Reference>\n <Reference>\n <Citation>Nat Methods. 2011 Sep;8(9):737-43</Citation>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">21985007</ArticleId>\n </ArticleIdList>\n </Reference>\n <Reference>\n <Citation>Cell. 2015 Dec 17;163(7):1756-69</Citation>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">26687360</ArticleId>\n </ArticleIdList>\n </Reference>\n <Reference>\n <Citation>Cell Mol Life Sci. 2017 Nov;74(22):4133-4157</Citation>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">28631008</ArticleId>\n </ArticleIdList>\n </Reference>\n <Reference>\n <Citation>Nat Commun. 2014 Jul 11;5:4342</Citation>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">25014658</ArticleId>\n </ArticleIdList>\n </Reference>\n <Reference>\n <Citation>Elife. 2016 Feb 29;5:e11572</Citation>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">26926907</ArticleId>\n </ArticleIdList>\n </Reference>\n <Reference>\n <Citation>J Neurosci. 2009 May 27;29(21):6904-16</Citation>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">19474317</ArticleId>\n </ArticleIdList>\n </Reference>\n <Reference>\n <Citation>Gene Expr Patterns. 2006 Mar;6(3):299-309</Citation>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">16378756</ArticleId>\n </ArticleIdList>\n </Reference>\n <Reference>\n <Citation>Neuron. 2008 Dec 26;60(6):1039-53</Citation>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">19109910</ArticleId>\n </ArticleIdList>\n </Reference>\n <Reference>\n <Citation>Neural Dev. 2018 Apr 19;13(1):6</Citation>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">29673388</ArticleId>\n </ArticleIdList>\n </Reference>\n <Reference>\n <Citation>Cell. 2015 Dec 17;163(7):1770-1782</Citation>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">26687361</ArticleId>\n </ArticleIdList>\n </Reference>\n <Reference>\n <Citation>Curr Opin Neurobiol. 2014 Aug;27:1-7</Citation>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">24598309</ArticleId>\n </ArticleIdList>\n </Reference>\n <Reference>\n <Citation>Curr Opin Neurobiol. 2007 Feb;17(1):35-42</Citation>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">17229568</ArticleId>\n </ArticleIdList>\n </Reference>\n <Reference>\n <Citation>Nat Methods. 2012 Jun 28;9(7):676-82</Citation>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">22743772</ArticleId>\n </ArticleIdList>\n </Reference>\n <Reference>\n <Citation>Genetics. 2014 Jan;196(1):17-29</Citation>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">24395823</ArticleId>\n </ArticleIdList>\n </Reference>\n <Reference>\n <Citation>Cell. 1993 Jun 18;73(6):1137-53</Citation>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">8513498</ArticleId>\n </ArticleIdList>\n </Reference>\n <Reference>\n <Citation>Dev Biol. 1988 Dec;130(2):645-70</Citation>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">3058545</ArticleId>\n </ArticleIdList>\n </Reference>\n <Reference>\n <Citation>Elife. 2018 Mar 05;7:</Citation>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">29504935</ArticleId>\n </ArticleIdList>\n </Reference>\n <Reference>\n <Citation>Science. 1995 Feb 3;267(5198):688-93</Citation>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">7839146</ArticleId>\n </ArticleIdList>\n </Reference>\n <Reference>\n <Citation>Annu Rev Cell Dev Biol. 2008;24:597-620</Citation>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">18837673</ArticleId>\n </ArticleIdList>\n </Reference>\n <Reference>\n <Citation>Cold Spring Harb Perspect Biol. 2010 Mar;2(3):a001735</Citation>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">20300210</ArticleId>\n </ArticleIdList>\n </Reference>\n <Reference>\n <Citation>Cell Rep. 2017 Oct 24;21(4):867-877</Citation>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">29069594</ArticleId>\n </ArticleIdList>\n </Reference>\n <Reference>\n <Citation>J Neurosci. 1989 Feb;9(2):710-25</Citation>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">2563766</ArticleId>\n </ArticleIdList>\n </Reference>\n <Reference>\n <Citation>Neuron. 2015 May 20;86(4):955-970</Citation>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">25959734</ArticleId>\n </ArticleIdList>\n </Reference>\n <Reference>\n <Citation>Elife. 2018 Mar 22;7:</Citation>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">29565247</ArticleId>\n </ArticleIdList>\n </Reference>\n <Reference>\n <Citation>Brain Res. 1977 Aug 26;132(2):197-208</Citation>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">890480</ArticleId>\n </ArticleIdList>\n </Reference>\n <Reference>\n <Citation>Neuron. 2017 Mar 22;93(6):1388-1404.e10</Citation>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">28285823</ArticleId>\n </ArticleIdList>\n </Reference>\n <Reference>\n <Citation>Neuron. 2013 Oct 2;80(1):12-34</Citation>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">24094100</ArticleId>\n </ArticleIdList>\n </Reference>\n <Reference>\n <Citation>Trends Neurosci. 2001 May;24(5):251-4</Citation>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">11311363</ArticleId>\n </ArticleIdList>\n </Reference>\n <Reference>\n <Citation>Curr Opin Neurobiol. 2013 Dec;23(6):1018-26</Citation>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">23932598</ArticleId>\n </ArticleIdList>\n </Reference>\n <Reference>\n <Citation>Genetics. 2016 Aug;203(4):1613-28</Citation>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">27334272</ArticleId>\n </ArticleIdList>\n </Reference>\n <Reference>\n <Citation>Curr Opin Neurobiol. 2006 Feb;16(1):74-82</Citation>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">16386415</ArticleId>\n </ArticleIdList>\n </Reference>\n <Reference>\n <Citation>Cell Rep. 2015 Mar 3;10(8):1410-21</Citation>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">25732830</ArticleId>\n </ArticleIdList>\n </Reference>\n <Reference>\n <Citation>Cell. 1998 May 15;93(4):581-91</Citation>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">9604933</ArticleId>\n </ArticleIdList>\n </Reference>\n <Reference>\n <Citation>J Comp Neurol. 2012 Jun 1;520(8):1629-49</Citation>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">22120935</ArticleId>\n </ArticleIdList>\n </Reference>\n <Reference>\n <Citation>Neuron. 2018 Dec 19;100(6):1385-1400.e6</Citation>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">30467080</ArticleId>\n </ArticleIdList>\n </Reference>\n <Reference>\n <Citation>PLoS Biol. 2003 Nov;1(2):E41</Citation>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">14624243</ArticleId>\n </ArticleIdList>\n </Reference>\n <Reference>\n <Citation>Int J Dev Neurosci. 2001 Apr;19(2):175-82</Citation>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">11255031</ArticleId>\n </ArticleIdList>\n </Reference>\n <Reference>\n <Citation>Nat Methods. 2012 Jul;9(7):671-5</Citation>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">22930834</ArticleId>\n </ArticleIdList>\n </Reference>\n <Reference>\n <Citation>J Neurophysiol. 2004 May;91(5):2353-65</Citation>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">14695352</ArticleId>\n </ArticleIdList>\n </Reference>\n <Reference>\n <Citation>Neuron. 2018 Dec 19;100(6):1369-1384.e6</Citation>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">30467079</ArticleId>\n </ArticleIdList>\n </Reference>\n <Reference>\n <Citation>Elife. 2015 Mar 31;4:</Citation>\n <ArticleIdList>\n <ArticleId IdType=\"pubmed\">25824290</ArticleId>\n </ArticleIdList>\n </Reference>\n </ReferenceList>\n </PubmedData>\n </PubmedArticle>\n \n </PubmedArticleSet>",
"items": [
{
"itemType": "journalArticle",
"title": "Stereotyped terminal axon branching of leg motor neurons mediated by IgSF proteins DIP-α and Dpr10",
"creators": [
{
"firstName": "Lalanti",
"lastName": "Venkatasubramanian",
"creatorType": "author"
},
{
"firstName": "Zhenhao",
"lastName": "Guo",
"creatorType": "author"
},
{
"firstName": "Shuwa",
"lastName": "Xu",
"creatorType": "author"
},
{
"firstName": "Liming",
"lastName": "Tan",
"creatorType": "author"
},
{
"firstName": "Qi",
"lastName": "Xiao",
"creatorType": "author"
},
{
"firstName": "Sonal",
"lastName": "Nagarkar-Jaiswal",
"creatorType": "author"
},
{
"firstName": "Richard S.",
"lastName": "Mann",
"creatorType": "author"
}
],
"date": "2019-02-04",
"DOI": "10.7554/eLife.42692",
"ISSN": "2050-084X",
"abstractNote": "For animals to perform coordinated movements requires the precise organization of neural circuits controlling motor function. Motor neurons (MNs), key components of these circuits, project their axons from the central nervous system and form precise terminal branching patterns at specific muscles. Focusing on the Drosophila leg neuromuscular system, we show that the stereotyped terminal branching of a subset of MNs is mediated by interacting transmembrane Ig superfamily proteins DIP-α and Dpr10, present in MNs and target muscles, respectively. The DIP-α/Dpr10 interaction is needed only after MN axons reach the vicinity of their muscle targets. Live imaging suggests that precise terminal branching patterns are gradually established by DIP-α/Dpr10-dependent interactions between fine axon filopodia and developing muscles. Further, different leg MNs depend on the DIP-α and Dpr10 interaction to varying degrees that correlate with the morphological complexity of the MNs and their muscle targets.",
"extra": "PMID: 30714901\nPMCID: PMC6391070",
"journalAbbreviation": "Elife",
"language": "eng",
"pages": "e42692",
"publicationTitle": "eLife",
"volume": "8",
"attachments": [
{
"title": "PubMed entry",
"mimeType": "text/html",
"snapshot": false
}
],
"tags": [
{
"tag": "Animals"
},
{
"tag": "Axons"
},
{
"tag": "D. melanogaster"
},
{
"tag": "DIP"
},
{
"tag": "Dpr"
},
{
"tag": "Drosophila Proteins"
},
{
"tag": "Drosophila melanogaster"
},
{
"tag": "Ig domain proteins"
},
{
"tag": "Motor Neurons"
},
{
"tag": "Neurogenesis"
},
{
"tag": "Neurons, Efferent"
},
{
"tag": "Neuropeptides"
},
{
"tag": "Transcription Factors"
},
{
"tag": "developmental biology"
},
{
"tag": "leg development"
},
{
"tag": "motor neuron"
},
{
"tag": "neuroscience"
},
{
"tag": "synapse formation"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "<?xml version=\"1.0\"?>\n<!DOCTYPE PubmedArticleSet PUBLIC \"-//NLM//DTD PubMedArticle, 1st January 2015//EN\" \"http://www.ncbi.nlm.nih.gov/corehtml/query/DTD/pubmed_150101.dtd\">\n<PubmedArticleSet>\n<PubmedArticle>\n <MedlineCitation Status=\"In-Process\" Owner=\"NLM\">\n <PMID Version=\"1\">29292925</PMID>\n <DateRevised>\n <Year>2018</Year>\n <Month>01</Month>\n <Day>02</Day>\n </DateRevised>\n <Article PubModel=\"Electronic\">\n <Journal>\n <ISSN IssnType=\"Electronic\">1652-7518</ISSN>\n <JournalIssue CitedMedium=\"Internet\">\n <Volume>114</Volume>\n <PubDate>\n <Year>2017</Year>\n <Month>Nov</Month>\n <Day>09</Day>\n </PubDate>\n </JournalIssue>\n <Title>Lakartidningen</Title>\n <ISOAbbreviation>Lakartidningen</ISOAbbreviation>\n </Journal>\n <ArticleTitle/>\n <ELocationID EIdType=\"pii\" ValidYN=\"Y\">EWLS</ELocationID>\n <Abstract>\n <AbstractText>Mental illness and terrorism There is little evidence supporting the concept of mental illness as a part of, or reason behind radicalization towards violent extremism and terrorism. There is weak evidence that lone gunmen, particularly those involved in school shootings, may suffer from mental illness to a larger degree than the general population, whereas organized terrorist groups such as jihadists and right-wing extremists seem to avoid mentally unstable individuals. Clinical use of the instruments developed for screening and risk assessment of individuals suspected of radicalization towards violent extremism will compromise the trust placed in the Swedish health care system by the citizens it is there to serve. The usage of empirically grounded risk assessment instruments should be restricted to forensic psychiatric clinics. Individuals at risk of radicalization towards violent extremism who present signs and symptoms of mental illness should be offered psychiatric treatment.</AbstractText>\n </Abstract>\n <AuthorList CompleteYN=\"Y\">\n <Author ValidYN=\"Y\">\n <LastName>Köhler</LastName>\n <ForeName>Per</ForeName>\n <Initials>P</Initials>\n <AffiliationInfo>\n <Affiliation>n/a - Vuxenpsykiatrin Malmö Malmö, Sweden n/a - Vuxenpsykiatrin Malmö Malmö, Sweden.</Affiliation>\n </AffiliationInfo>\n </Author>\n <Author ValidYN=\"Y\">\n <LastName>Krona</LastName>\n <ForeName>Hedvig</ForeName>\n <Initials>H</Initials>\n <AffiliationInfo>\n <Affiliation>Lunds Universitet - Medicinska fakulteten Lund, Sweden Lunds Universitet - Medicinska fakulteten Lund, Sweden.</Affiliation>\n </AffiliationInfo>\n </Author>\n <Author ValidYN=\"Y\">\n <LastName>Josefsson</LastName>\n <ForeName>Johanna</ForeName>\n <Initials>J</Initials>\n <AffiliationInfo>\n <Affiliation>Psykiatri Skåne - Vuxenpsykiatriska kliniken Malmö Malmö, Sweden Psykiatri Skåne - Vuxenpsykiatriska kliniken Malmö Malmö, Sweden.</Affiliation>\n </AffiliationInfo>\n </Author>\n </AuthorList>\n <Language>swe</Language>\n <PublicationTypeList>\n <PublicationType UI=\"D004740\">English Abstract</PublicationType>\n <PublicationType UI=\"D016428\">Journal Article</PublicationType>\n </PublicationTypeList>\n <VernacularTitle>Psykisk ohälsa, radikalisering och terrorism - Inget säkert samband har kunnat påvisas.</VernacularTitle>\n <ArticleDate DateType=\"Electronic\">\n <Year>2017</Year>\n <Month>11</Month>\n <Day>09</Day>\n </ArticleDate>\n </Article>\n <MedlineJournalInfo>\n <Country>Sweden</Country>\n <MedlineTA>Lakartidningen</MedlineTA>\n <NlmUniqueID>0027707</NlmUniqueID>\n <ISSNLinking>0023-7205</ISSNLinking>\n </MedlineJournalInfo>\n </MedlineCitation>\n</PubmedArticle>\n\n</PubmedArticleSet>\n",
"items": [
{
"itemType": "journalArticle",
"title": "Psykisk ohälsa, radikalisering och terrorism - Inget säkert samband har kunnat påvisas",
"creators": [
{
"firstName": "Per",
"lastName": "Köhler",
"creatorType": "author"
},
{
"firstName": "Hedvig",
"lastName": "Krona",
"creatorType": "author"
},
{
"firstName": "Johanna",
"lastName": "Josefsson",
"creatorType": "author"
}
],
"date": "2017-11-09",
"ISSN": "1652-7518",
"abstractNote": "Mental illness and terrorism There is little evidence supporting the concept of mental illness as a part of, or reason behind radicalization towards violent extremism and terrorism. There is weak evidence that lone gunmen, particularly those involved in school shootings, may suffer from mental illness to a larger degree than the general population, whereas organized terrorist groups such as jihadists and right-wing extremists seem to avoid mentally unstable individuals. Clinical use of the instruments developed for screening and risk assessment of individuals suspected of radicalization towards violent extremism will compromise the trust placed in the Swedish health care system by the citizens it is there to serve. The usage of empirically grounded risk assessment instruments should be restricted to forensic psychiatric clinics. Individuals at risk of radicalization towards violent extremism who present signs and symptoms of mental illness should be offered psychiatric treatment.",
"extra": "PMID: 29292925",
"journalAbbreviation": "Lakartidningen",
"language": "swe",
"pages": "EWLS",
"publicationTitle": "Lakartidningen",
"volume": "114",
"attachments": [
{
"title": "PubMed entry",
"mimeType": "text/html",
"snapshot": false
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://www\.icaboston\.org//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, _url) {
if (doc.querySelector('.field-item .page-title')) {
return "artwork";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.teaser-title a[href*="/art/"]');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, _url) {
let item = new Zotero.Item('artwork');
item.title = text(doc, '.field-item .page-title');
item.abstractNote = text(doc, '.field-name-body');
item.artworkMedium = text(doc, '.field-name-field-materials');
item.artworkSize = text(doc, '.field-name-field-dimensions');
item.date = ZU.strToISO(text(doc, '.field-name-field-year'));
for (let artist of doc.querySelectorAll('.field-name-field-artist .artist')) {
item.creators.push(ZU.cleanAuthor(artist.textContent, 'artist'));
}
item.attachments.push({
title: 'Snapshot',
document: doc
});
item.attachments.push({
title: 'Thumbnail',
mimeType: 'image/jpeg',
url: attr(doc, '.field-name-scald-thumbnail img', 'src')
});
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.icaboston.org/art/trevor-paglen/untitled-reaper-drone",
"items": [
{
"itemType": "artwork",
"title": "Untitled (Reaper Drone)",
"creators": [
{
"firstName": "Trevor",
"lastName": "Paglen",
"creatorType": "artist"
}
],
"date": "2012",
"abstractNote": "Trevor Paglen’s artwork draws on his long-time interest in investigative journalism and the social sciences, as well as his training as a geographer. His work seeks to show the hidden aesthetics of American surveillance and military systems, touching on espionage, the digital circulation of images, government development of weaponry, and secretly funded military projects. The artist has conducted extensive research on the subject and published a series of books and lectures about covert operations undertaken by the CIA and the Pentagon.\n\nSince the 1990s, Paglen has photographed isolated military air bases located in Nevada and Utah using a telescopic camera lens. Untitled (Reaper Drone) reveals a miniature drone midflight against a luminous morning skyscape. The drone is nearly imperceptible, suggested only as a small black speck at the bottom of the image. The artist’s photographs are taken at such a distance that they abstract the scene and distort our capacity to make sense of the image. His work both exposes hidden secrets and challenges assumptions about what can be seen and fully understood.\n\nPaglen’s Untitled (Reaper Drone) enriches the ICA/Boston’s collection of photography and is in productive conversation with works by such artists as Jenny Holzer and Hito Steyerl, which similarly deal with political and economic systems, secrecy, and surveillance.\n\n800.13.05",
"artworkMedium": "Chromogenic color print",
"artworkSize": "49 x 61 inches (124.5 x 154.9 cm)",
"libraryCatalog": "Institute of Contemporary Art",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
},
{
"title": "Thumbnail",
"mimeType": "image/jpeg"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.icaboston.org/art/stephen-hamilton/jahnae-wyatt-queen-poku",
"items": [
{
"itemType": "artwork",
"title": "Jahnae Wyatt as Queen Poku",
"creators": [
{
"firstName": "Stephen",
"lastName": "Hamilton",
"creatorType": "artist"
}
],
"date": "2018",
"abstractNote": "The labor-intensive, process-oriented works of artist and educator Stephen Hamilton aim to address the persistent lack of positive, multidimensional representations of Black life in American culture. Hamilton makes connections between historical and contemporary cultures by incorporating both Black American and West African traditions, combining figurative painting and drawing with techniques such as resist dyeing, weaving, and woodcarving.\n\nGrowing out of the artist’s research and interest in developing a program on West African cultural continuities in the African diaspora, The Founders Project is a series of nine multimedia paintings that reimagine Boston public high school students as the storied founders of West and West-Central African ethnic groups. Each life-size work combines painting with weaving and sculptural traditions specific to the ethnic group whose story is depicted. In Jahnae Wyatt as Queen Poku, Jahnae Wyatt, one of Hamilton’s former students is portrayed as Poku, legendary queen of the Baule people of modern day Ivory Coast. According to legend, when her people were fleeing the violent expansionist wars of the Ashanti people, they came upon a river too deep and wide to cross. Queen Poku offered her infant son to the river spirit in exchange for her people’s safe passage. After this sacrifice, hippopotamuses emerged from the river’s depths and her people were able to walk across the animals’ backs to safety. Wyatt is portrayed as Queen Poku at the decisive moment just before her sacrifice, flanked on either side by hippos emerging from the river. Painted on hand-dyed cloth and framed on either side by hand-carved wooden sculptures (all recalling elements of Baule culture), Queen Poku’s dress is a hand-woven passage of fabric. Hamilton weaves together past and present, creating a bridge between the ancient and modern worlds.",
"artworkMedium": "Acrylic, natural dyes, and pigments on hand-woven and hand-dyed cloth and wood",
"artworkSize": "72 × 60 inches (182.9 × 152.4 cm)",
"libraryCatalog": "Institute of Contemporary Art",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
},
{
"title": "Thumbnail",
"mimeType": "image/jpeg"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.icaboston.org/search?search_api_multi_fulltext=man&content_type%5B%5D=artwork",
"items": "multiple"
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://(www\.)?ajc\.com/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (doc.querySelector('.c-articleContent')
&& doc.querySelector('script[type="application/ld+json"]')) {
if (url.includes('blog/')) {
return "blogPost";
}
else {
return "newspaperArticle";
}
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('a.gs-title');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
let json = JSON.parse(text(doc, 'script[type="application/ld+json"]'));
let item = new Zotero.Item(
url.includes('blog/')
? 'blogPost'
: 'newspaperArticle'
);
item.title = json.headline;
item.abstractNote = json.description
|| attr(doc, 'meta[name="description"]', 'content');
item.place = extractPlace(item.abstractNote);
let sectionLabel = text(doc, '.section-label');
if (item.itemType == 'blogPost') {
item.blogTitle = `${sectionLabel} (The Atlanta Journal-Constitution)`;
}
else {
item.section = sectionLabel;
item.publicationTitle = 'The Atlanta Journal-Constitution';
item.ISSN = '1539-7459';
}
item.language = attr(doc, 'meta[name="language"]', 'content');
item.libraryCatalog = 'AJC.com';
for (let author of json.author.name.split(', ')) {
item.creators.push(ZU.cleanAuthor(author, 'author'));
}
item.attachments.push({
title: 'Snapshot',
document: doc
});
item.complete();
}
function extractPlace(leadText) {
let placeRe = /^\s*([A-Z\-']{3,})\b/;
if (placeRe.test(leadText)) {
return ZU.capitalizeTitle(leadText.match(placeRe)[1], true);
}
else {
return '';
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.ajc.com/politics/georgia-republicans-center-campaigns-on-false-claims-of-election-fraud/JNRJYNAG6BD5JC5BB2TQG3LYGA/",
"items": [
{
"itemType": "newspaperArticle",
"title": "Georgia Republicans center campaigns on false claims of election fraud",
"creators": [
{
"firstName": "Greg",
"lastName": "Bluestein",
"creatorType": "author"
}
],
"ISSN": "1539-7459",
"abstractNote": "ROME — The organizers at the door handed out soft-pink “Trump Won” signs to each attendee. An out-of-state radio host spouted far-right conspiracies.",
"language": "English",
"libraryCatalog": "AJC.com",
"place": "Rome",
"publicationTitle": "The Atlanta Journal-Constitution",
"section": "Politics",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.ajc.com/politics/politics-blog/the-jolt-details-emerge-about-ames-barnett-possible-brian-kemp-primary-foe/MI6WFP3L7VH4NADGFHSXOUS6KM/",
"items": [
{
"itemType": "blogPost",
"title": "The Jolt: Details emerge about Ames Barnett, possible Brian Kemp primary foe",
"creators": [
{
"firstName": "Patricia",
"lastName": "Murphy",
"creatorType": "author"
},
{
"firstName": "Greg",
"lastName": "Bluestein",
"creatorType": "author"
},
{
"firstName": "Tia",
"lastName": "Mitchell",
"creatorType": "author"
}
],
"abstractNote": "Ames Barnett, a wealthy businessman and former small-town mayor, is moving closer to a Republican primary challenge against Gov. Brian Kemp. But his r",
"blogTitle": "Political Insider (The Atlanta Journal-Constitution)",
"language": "English",
"shortTitle": "The Jolt",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.ajc.com/neighborhoods/cobb/marietta-officials-homeowner-property-tax-bills-will-go-down-for-third-year-in-a-row/3AIW5PLTXRHLDCWF4Q6HYQVQKQ/",
"items": [
{
"itemType": "newspaperArticle",
"title": "Marietta officials: Homeowner property tax bills will go down for third year in a row",
"creators": [
{
"firstName": "Matt",
"lastName": "Bruce",
"creatorType": "author"
}
],
"ISSN": "1539-7459",
"abstractNote": "Property values have surged during the pandemic, but Marietta officials say homeowners will pay less in taxes.",
"language": "English",
"libraryCatalog": "AJC.com",
"publicationTitle": "The Atlanta Journal-Constitution",
"section": "Cobb County",
"shortTitle": "Marietta officials",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.ajc.com/things-to-do/restaurant-refresh/patio-picks-treat-yourself-to-alfresco-elegance/ZF4FZUMJYBB6HJXTS32QCEYGSA/",
"items": [
{
"itemType": "newspaperArticle",
"title": "Atlanta patio picks: Treat yourself to alfresco elegance",
"creators": [
{
"firstName": "Ligaya",
"lastName": "Figueras",
"creatorType": "author"
},
{
"firstName": "Wendell",
"lastName": "Brock",
"creatorType": "author"
}
],
"ISSN": "1539-7459",
"abstractNote": "Check out four of the best patios in metro Atlanta to eat and drink, including the Chastain, Delbar, Banshee and Willow Bar.",
"language": "English",
"libraryCatalog": "AJC.com",
"publicationTitle": "The Atlanta Journal-Constitution",
"section": "Restaurant Refresh",
"shortTitle": "Atlanta patio picks",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.ajc.com/life/radiotvtalk-blog/whats-filming-in-georgia-in-july-2021/7UJ6NZIF7NA6LJFG7QPHE4HFDM/",
"items": [
{
"itemType": "blogPost",
"title": "What’s filming in Georgia in July 2021?",
"creators": [
{
"firstName": "Rodney",
"lastName": "Ho",
"creatorType": "author"
}
],
"abstractNote": "\"Black Panther: Wakanda Forever\" began production in late June 2021 at Trilith Studios in Fayetteville.",
"blogTitle": "Radio & TV Talk Blog (The Atlanta Journal-Constitution)",
"language": "English",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.ajc.com/search/?q=labor",
"items": "multiple"
}
]
/** END TEST CASES **/
{"async":true,"getCollections":true}{"exportNotes":true,"exportFileData":false}100Sebastian Karcherxmlfunction detectImport() {
var doc = Zotero.getXML().documentElement;
if (!doc) {
return false;
} else if (ZU.xpathText(doc, '//record/ref-type')) {
return true;
}
}
//list of Endnote XML fields used for export (same for title, date, periodical, and author fields below)
var fields = ["database", "source-app", "rec-number", "ref-type", "contributors",
"auth-address", "auth-affiliaton", "titles", "periodical", "pages", "volume",
"number", "issue", "secondary-volume", "secondary-issue", "num-vols", "edition",
"section", "reprint-edition", "reprint-status", "keywords", "dates", "pub-location",
"publisher", "orig-pub", "isbn", "accession-num", "call-num", "report-id", "coden",
"electronic-resource-num", "abstract", "label", "image", "caption", "notes",
"research-notes", "work-type", "reviewed-item", "availability", "remote-source",
"meeting-place", "work-location", "work-extent", "pack-method", "size", "repro-ratio",
"remote-database-name", "remote-database-provider", "language", "urls", "access-date",
"modified-date", "custom1", "custom2", "custom3", "custom4", "custom5", "custom6",
"custom7", "misc1", "misc2", "misc3"
];
var titleFields = ["title", "secondary-title", "tertiary-title", "alt-title", "short-title",
"translated-title"
];
var dateFields = ["year", "pub-dates"];
var periodicalFields = ["full-title", "abbr-1", "abbr-2", "abbr-3"];
var authorFields = ["authors", "secondary-authors", "tertiary-authors", "subsidiary-authors",
"translated-authors"
];
var attachmentFields = ["pdf-urls", "text-urls", "related-urls", "image-urls"];
var processItemType = {
Artwork: "artwork",
"Audiovisual Material": "videoRecording",
Bill: "bill",
"Book Section": "bookSection",
Book: "book",
"Case": "case",
Catalog: "book",
"Computer Program": "computerProgram",
"Conference Proceedings": "conferencePaper", //still not clear on paper vs. proceedings
"Web Page": "webpage",
"Generic": "document",
"Hearing": "hearing",
"Journal Article": "journalArticle",
"Magazine Article": "magazineArticle",
Map: "map",
"Film or Broadcast": "film",
"Newspaper Article": "newspaperArticle",
Pamphlet: "manuscript",
Patent: "patent",
"Personal Communication": "letter",
Report: "report",
"Edited Book": "book",
Statute: "statute",
Thesis: "thesis",
"Unpublished Work": "manuscript",
Manuscript: "manuscript",
Figure: "artwork", //mapping
"Chart or Table": "artwork", //mapping?
"Equation": "artwork", //mapping?
"Electronic Article": "journalArticle",
"Electronic Book": "book",
"Online Database": "webpage",
"Government Document": "bill",
"Conference Paper": "presentation",
"Online Multimedia": "webpage",
"Classical Work": "book", //mapping once we have something comparable in Zotero
"Legal Rule or Regulation": "report", //or bill? statute?
"Ancient Text": "book", //mapping
Dictionary: "dictionaryEntry",
Encyclopedia: "encyclopediaArticle",
Grant: "report",
"Aggregated Database": "webpage", //mapping?
"Blog": "blogPost",
"Serial": "book", //should map to periodical once we have that
Standard: "report", //map to standard once we have that
Dataset: "report", //map to dataset once we have that
"Electronic Book Section": "bookSection",
Music: "audioRecording"
};
var processNumberType = {
2: "artwork",
3: "videoRecording",
4: "bill",
5: "bookSection",
6: "book",
7: "case",
8: "book",
9: "computerProgram",
10: "conferencePaper",
12: "webpage",
13: "document",
14: "hearing",
17: "journalArticle",
19: "magazineArticle",
20: "map",
21: "film",
23: "newspaperArticle",
24: "manuscript",
25: "patent",
26: "letter",
27: "report",
28: "book",
31: "statute",
32: "thesis",
34: "manuscript",
36: "manuscript",
37: "artwork",
38: "artwork",
39: "artwork",
43: "journalArticle",
44: "book",
45: "wepage",
46: "bill",
47: "conferencePaper",
48: "webpage",
49: "book",
50: "report",
51: "book",
52: "dictionaryEntry",
53: "encyclopediaArticle",
54: "report",
55: "webpage",
56: "blogPost",
57: "book",
58: "report",
59: "report",
60: "bookSection",
61: "audioRecording"
};
var exportItemType = {
artwork: "Artwork",
audioRecording: "Music",
bill: "Bill",
blogPost: "Blog",
book: "Book",
bookSection: "Book Section",
"case" :"Case",
computerProgram: "Computer Program",
conferencePaper: "Conference Proceedings",
dictionaryEntry: "Dictionary",
document: "Generic",
mail: "Personal Communication",
encyclopediaArticle: "Encyclopedia",
film: "Film or Broadcast",
forumPost: "Web Page",
hearing: "Hearing",
instantMessage: "Personal Communication",
interview: "Personal Communication",
journalArticle: "Journal Article",
letter: "Personal Communication",
magazineArticle: "Magazine Article",
manuscript: "Manuscript",
map: "Map",
newspaperArticle: "Newspaper Article",
patent: "Patent",
podcast: "Film or Broadcast",
presentation: "Conference Paper",
radioBroadcast: "Film or Broadcast",
report: "Report",
statute: "Statute",
thesis: "Thesis",
tvBroadcast: "Film or Broadcast",
videoRecording: "Audiovisual Material",
webpage: "Web Page"
};
var exportRefNumber = {
artwork: "2",
videoRecording: "3",
bill: "4",
blogPost: "56",
book: "6",
bookSection: "5",
"case": "6",
computerProgram: "9",
presentation: "47",
conferencePaper: "10",
dictionaryEntry: "52",
encyclopediaArticle: "53",
film: "21",
podcast: "21",
radioBroadcast: "21",
tvBroadcast: "21",
document: "13",
hearing: "14",
journalArticle: "17",
magazineArticle: "19",
manuscript: "36",
map: "20",
audioRecording: "61",
newspaperArticle: "23",
patent: "25",
email: "26",
instantMessage: "26",
interview: "26",
letter: "26",
report: "27",
statute: "31",
thesis: "32",
forumPost: "12",
webpage: "12"
};
var fieldMap = {
//same for all itemTypes
abstract: "abstractNote",
"call-num": "callNumber",
"electronic-resource-num": "DOI",
"remote-database-name": "libraryCatalog",
"abbr-1": "journalAbbreviation",
"short-title": "shortTitle",
"full-title": "publicationTitle",
language: "language",
"access-date": "accessDate",
// label: "Citation Key", (handled below, since it has to go into Extra)
//These two are in the RIS - not sure what they'd be in Endnote XML
//DB:"archive",
//AN:"archiveLocation",
//type specific
//tag => field:itemTypes
//if itemType not explicitly given, __default field is used
// unless itemType is excluded in __exclude
"title": {
"__default": "title",
subject: ["email"],
caseName: ["case"],
nameOfAct: ["statute"]
},
"secondary-title": {
code: ["bill", "statute"],
bookTitle: ["bookSection"],
blogTitle: ["blogPost"],
conferenceName: ["conferencePaper"],
dictionaryTitle: ["dictionaryEntry"],
encyclopediaTitle: ["encyclopediaArticle"],
committee: ["hearing"],
forumTitle: ["forumPost"],
websiteTitle: ["webpage"],
programTitle: ["radioBroadcast", "tvBroadcast"],
meetingName: ["presentation"],
seriesTitle: ["computerProgram", "map", "report"],
series: ["book"],
reporter: ["case"],
publicationTitle: ["journalArticle", "magazineArticle", "newspaperArticle"]
},
"tertiary-title": {
legislativeBody: ["hearing", "bill"],
series: ["bookSection", "conferencePaper"],
seriesTitle: ["audioRecording"]
},
//NOT HANDLED: reviewedAuthor, scriptwriter, contributor, guest
"authors": {
"__default": "author",
"artist": ["artwork"],
"cartographer": ["map"],
"composer": ["audioRecording"],
"director": ["film", "radioBroadcast", "tvBroadcast", "videoRecording"],
"interviewee": ["interview"],
"inventor": ["patent"],
"podcaster": ["podcast"],
"programmer": ["computerProgram"]
},
"secondary-authors": {
"sponsor": ["bill"],
"performer": ["audioRecording"],
"presenter": ["presentation"],
"interviewer": ["interview"],
"editor": ["journalArticle", "bookSection", "conferencePaper", "dictionaryEntry", "document",
"encyclopediaArticle"
],
"seriesEditor": ["book", "report"],
"recipient": ["email", "instantMessage", "letter"],
issuingAuthority: ["patent"]
},
"tertiary-authors": {
"cosponsor": ["bill"],
"producer": ["film", "tvBroadcast", "videoRecording", "radioBroadcast"],
"editor": ["book"],
"seriesEditor": ["bookSection", "conferencePaper", "dictionaryEntry", "encyclopediaArticle", "map"]
},
"subsidiary-authors": {
"__default": "translator",
"counsel": ["case"],
"castMember": ["radioBroadcast", "tvBroadcast", "videoRecording"],
"contributor": ["conferencePaper", "film"] //translator does not fit these
},
"work-type": {
"manuscriptType": ["manuscript"],
"websiteType": ["webpage"],
"genre": ["film"],
"postType": ["forumPost"],
"letterType": ["letter"],
"mapType": ["map"],
"presentationType": ["presentation"],
"reportType": ["report"],
"thesisType": ["thesis"]
},
custom1: {
filingDate: ["patent"], //not in spec
scale: ["map"],
place: ["conferencePaper"]
},
custom2: {
issueDate: ["patent"]
//PMCID:["journalArticle"] //handled below since we don't actually have that variable (yet)
},
custom3: {
artworkSize: ["artwork"],
proceedingsTitle: ["conferencePaper"],
runningTime: ["videoRecording"],
country: ["patent"]
},
custom4: {
//RIS has this, but I can't find any reason for that: "creators/wordsBy":["audioRecording"],
"creators/attorneyAgent":["patent"], //we're not using this for export
genre: ["film"]
},
custom5: {
references: ["patent"],
audioRecordingFormat: ["audioRecording", "radioBroadcast"],
videoRecordingFormat: ["film", "tvBroadcast", "videoRecording"]
},
custom6: {
legalStatus: ["patent"],
},
"pub-location": {
"__default": "place",
"__exclude": ["conferencePaper"] //exported/imported as "custom1"
},
"pub-dates": { //also see year when editing
"__default": "date",
dateEnacted: ["statute"],
dateDecided: ["case"],
issueDate: ["patent"]
},
edition: {
"__default": "edition",
// "__ignore":["journalArticle"], //EPubDate.
session: ["bill", "hearing", "statute"],
version: ["computerProgram"]
},
issue: {
"__default": "issue",
numberOfVolumes: ["bookSection"]
},
misc1: {
seriesNumber: ["book"],
billNumber: ["bill"],
system: ["computerProgram"],
documentNumber: ["hearing"],
applicationNumber: ["patent"],
publicLawNumber: ["statute"],
episodeNumber: ["podcast", "radioBroadcast", "tvBroadcast"]
},
misc2: {
manuscriptType: ["manuscript"],
mapType: ["map"],
reportType: ["report"],
thesisType: ["thesis"],
websiteType: ["blogPost", "webpage"],
postType: ["forumPost"],
letterType: ["letter"],
interviewMedium: ["interview"],
presentationType: ["presentation"],
artworkMedium: ["artwork"],
audioFileType: ["podcast"]
},
"num-vols": {
"__default": "numberOfVolumes",
"__exclude": ["bookSection"] //uses "issue" instead
},
"orig-pub": {
history: ["hearing", "statute", "bill", "case"],
priorityNumbers: ["patent"]
},
publisher: {
"__default": "publisher",
label: ["audioRecording"],
court: ["case"],
distributor: ["film"],
assignee: ["patent"],
institution: ["report"],
university: ["thesis"],
company: ["computerProgram"],
studio: ["videoRecording"],
network: ["radioBroadcast", "tvBroadcast"]
},
year: { //duplicate of pud-dates, but this will only output year
"__default": "date",
dateEnacted: ["statute"],
dateDecided: ["case"],
issueDate: ["patent"]
},
section: {
"__default": "section", //though this can refer to pages, start page, etc. for some types. Zotero does not support any of those combinations, however.
"__exclude": ["case"]
},
isbn: {
"__default": "ISBN",
ISSN: ["journalArticle", "magazineArticle", "newspaperArticle"],
patentNumber: ["patent"],
reportNumber: ["report"],
},
pages: {
"__default": "pages",
codePages: ["bill"], //bill
numPages: ["book", "thesis", "manuscript"],
firstPage: ["case"],
runningTime: ["film"]
},
number: {
seriesNumber: ["bookSection", "book"],
issue: ["journalArticle", "magazineArticle"],
docketNumber: ["case"],
artworkSize: ["artwork"]
},
volume: {
"__default": "volume",
codeNumber: ["statute"],
codeVolume: ["bill"],
reporterVolume: ["case"],
"__exclude": ["patent", "webpage"]
}
};
var cache = {};
function getField(field, type) {
if (!cache[type]) cache[type] = {};
//retrieve from cache if available
//it can be false if previous search did not find a mapping
if (cache[type][field] !== undefined) {
return cache[type][field];
}
var zfield = false;
if (typeof (fieldMap[field]) == 'object') {
var def, exclude = false;
for (var f in fieldMap[field]) {
//__ignore is not handled here. It's returned as a Zotero field so it
//can be explicitly excluded from the note attachment
if (f == "__default") {
//store default mapping in case we can't find anything explicit
def = fieldMap[field][f];
continue;
}
if (f == "__exclude") {
if (fieldMap[field][f].indexOf(type) != -1) {
exclude = true; //don't break. Let explicit mapping override this
}
continue;
}
if (fieldMap[field][f].indexOf(type) != -1) {
zfield = f;
break;
}
}
//assign default value if not excluded
if (!zfield && def && !exclude) zfield = def;
} else if (typeof (fieldMap[field]) == 'string') {
zfield = fieldMap[field];
}
cache[type][field] = zfield;
return zfield;
}
function doImport() {
if (typeof Promise == 'undefined') {
startImport(
function () {},
function (e) {
throw e;
}
);
}
else {
return new Promise(function (resolve, reject) {
startImport(resolve, reject);
});
}
}
function startImport(resolve, reject) {
try {
var xml = Zotero.getXML();
var records = ZU.xpath(xml, "//record");
importNext(records, 0, resolve, reject);
}
catch (e) {
reject(e);
}
}
function importNext(records, index, resolve, reject) {
try {
//Z.debug(records.length)
for (var i = index, n = records.length; i < n; i++) {
Z.setProgress(i/n*100);
var record = records[i];
newItem = new Zotero.Item();
//we prefer the name of the ref-type as it e.g. works with Mendeley and probably other Endnote 7 exports
newItem.itemType = processItemType[ZU.xpathText(record, './/ref-type/@name')];
//fall back to ref-type number
if (!newItem.itemType) newItem.itemType = processNumberType[ZU.xpathText(record, './/ref-type')];
//fall back to journal Article if all else fails
if (!newItem.itemType) newItem.itemType = "journalArticle";
var notecache = [];
//Z.debug(newItem.itemType)
for (var j = 0; j < record.children.length; j++) {
var node = record.children[j];
var field = node.nodeName;
var zfield;
if (zfield = getField(field, newItem.itemType)) {
if (zfield.indexOf("creators") != -1) {
var authortype = zfield.replace(/creators\//, "");
newItem.creators.push(ZU.cleanAuthor(node.textContent, authortype))
} else if (ZU.fieldIsValidForType(zfield, newItem.itemType)) {
if (zfield == 'abstractNote') {
// Preserve newlines
newItem[zfield] = processField(node, true)
.replace(/\r\n?/g, '\n');
} else {
newItem[zfield] = processField(node);
}
}
else {
notecache.push(field + ": " + processField(node));
}
} else if (field == "titles" || field == "periodical" || field == "alt-periodical") {
for (var k = 0; k < node.children.length; k++) {
var subnode = node.children[k];
var subfield = subnode.nodeName;
if (zfield = getField(subfield, newItem.itemType)) {
//Z.debug(zfield)
if (ZU.fieldIsValidForType(zfield, newItem.itemType)) {
newItem[zfield] = processField(subnode);
}
else {
notecache.push(field + ": " + processField(subnode));
}
} else {
notecache.push(subfield + ": " + processField(subnode));
}
}
} else if (field == "contributors") {
for (var k = 0; k < node.children.length; k++) {
var subnode = node.children[k];
var subfield = subnode.nodeName;
var authortype;
if (authortype = getField(subfield, newItem.itemType)) {
var creators = subnode.getElementsByTagName("author");
for (var l = 0; l < creators.length; l++) {
if (authortype) {
newItem.creators.push(ZU.cleanAuthor(creators[l].textContent, authortype, true));
}
else {
notecache.push(subfield + ": " + processField(subnode));
}
}
} else {
notecache.push(subfield + ": " + processField(subnode));
}
}
} else if (field == "dates") {
var date = node.getElementsByTagName("pub-dates");
var year = node.getElementsByTagName("year");
if (date.length > 0 && year.length > 0) {
date = date[0].getElementsByTagName("date")[0].textContent.trim();
year = year[0].textContent.trim();
if (date.search(/\d{4}/) != -1) newItem.date = date;
else newItem.date = date + " " + year;
} else if (date.length > 0) {
newItem.date = date[0].firstChild.textContent;
} else if (year.length > 0) {
newItem.date = year[0].textContent;
} else if (node.textContent.trim().length > 0) {
//there is only copyright note left;
notecache.push("copyright-dates: " + node.textContent)
}
} else if (field == "notes" || field == "research-notes") {
newItem.notes.push(
'<p>' + processField(node, true, 'note')
.split(/(?:\r\n|\r(?!\n)|\n){2,}/) // Double newlines (or more) are paragraphs
.join('</p><p>')
.replace(/[\r\n]+/g, '<br/>') // Single newlines are just new lines
+ '</p>'
);
} else if (field == "keywords") {
for (var k = 0; k < node.children.length; k++) {
var subnode = node.children[k];
newItem.tags.push(subnode.textContent.trim())
}
} else if (field == "urls") {
for (var k = 0; k < node.children.length; k++) {
var subnode = node.children[k];
var attachmenttype = "";
switch (subnode.nodeName){
case "text-urls":
case "related-urls":
attachmenttype="text/html";
break;
case "web-urls":
attachmenttype="url";
break;
case "pdf-urls":
attachmenttype="application/pdf";
}
for (var l = 0; l < subnode.children.length; l++) {
if (subnode.children[l].nodeType == 3) continue;
var filepath = subnode.children[l].textContent;
if (!filepath) continue
//support for EndNote's relative paths
filepath = filepath.replace(/^internal-pdf:\/\//i, 'PDF/').trim();
var filename = filepath.replace(/.+\//, "").replace(/\.[^\.]+$/, "");
if (attachmenttype == "url") {
newItem.url = subnode.textContent;
} else {
newItem.attachments.push({
title: filename,
path: filepath,
mimeType: attachmenttype
})
}
}
}
} else if (field.search(/custom[237]/) != -1 &&
(newItem.itemType == "book" || newItem.itemType == "bookSection" || newItem.itemType == "journalArticle")) {
//it'd be nice if we could do PMIDs as well, but doesn't look like they're mapped and we can't test for them reliably
if (node.textContent.search(/PMC\d+/i) != -1) {
newItem.extra = (newItem.extra || '') +
"PMCID: " + node.textContent.match(/PMC\d+/i)[0] + "\n";
}
} else if (field == "label") {
newItem.extra = (newItem.extra || '')
+ `Citation Key: ${node.textContent}\n`;
} else if (field == "database" || field == "source-app" || field == "rec-number" || field == "ref-type"
|| field == "foreign-keys"){
//skipping these fields
} else {
notecache.push(node.nodeName + ": " + processField(node));
}
}
if (notecache.length > 0){
newItem.notes.push({note: "The following values have no corresponding Zotero field:<br/>" + notecache.join("<br/>"), tags: ['_EndnoteXML import']})
}
var maybePromise = newItem.complete();
if (maybePromise) {
maybePromise.then(function () {
importNext(records, i + 1, resolve, reject);
});
return;
}
}
}
catch (e) {
reject(e);
}
resolve();
}
function doExport() {
Zotero.setCharacterSet("utf-8");
var parser = new DOMParser();
var doc = parser.parseFromString('<xml/>', 'application/xml');
var records = doc.createElement("records");
var item;
while (item = Zotero.nextItem()) {
// Don't export notes or standalone attachments
if (item.itemType === "note" || item.itemType === "attachment") continue;
var record = doc.createElement("record");
for (var f=0; f<fields.length; f++) {
switch (fields[f]) {
case 'database':
mapProperty(record, "database", "MyLibrary", {
"name": "MyLibrary"
});
break;
case 'source-app':
mapProperty(record, "source-app", "Zotero", {
"name": "Zotero"
});
break;
case 'ref-type':
var type = exportItemType[item.itemType];
var typeNumber = exportRefNumber[item.itemType];
mapProperty(record, "ref-type", typeNumber, {
"name": type
})
break;
case 'titles':
var titles = doc.createElement("titles");
for (var i = 0; i < titleFields.length; i++) {
var titleField = titleFields[i];
var zfield = getField(titleField, item.itemType);
if (item[zfield]) mapProperty(titles, titleField, item[zfield]);
}
record.appendChild(titles);
break;
case 'contributors':
if (item.creators.length > 0) {
var contributors = doc.createElement("contributors");
for (var i = 0; i < authorFields.length; i++) {
var custom4 =[];
var creatornode = doc.createElement(authorFields[i]);
var type = getField(authorFields[i], item.itemType);
for (var j = 0; j < item.creators.length; j++) {
if (item.creators[j].creatorType == type) {
var name = item.creators[j].lastName;
if (item.creators[j].firstName) name += ", " + item.creators[j].firstName;
mapProperty(creatornode, "author", name);
}
//deal with creators that are mapped to regular fields, currently only one
else if (item.creators[j].creatorType=="attorneyAgent") {
var name = item.creators[j].lastName;
if (item.creators[j].firstName) name += ", " + item.creators[j].firstName;
custom4.push(name);
}
}
if (creatornode.hasChildNodes()) {
contributors.appendChild(creatornode);
}
}
if (custom4.length>0){
mapProperty(record, "custom4", custom4.join("; "));
}
record.appendChild(contributors);
}
break;
case 'dates':
var dates = doc.createElement("dates");
var zfield = getField("pub-dates", item.itemType);
if (item[zfield]) {
var dateobject = ZU.strToDate(item[zfield]);
if (dateobject.year) mapProperty(dates, "year", dateobject.year);
var pubdates = doc.createElement("pub-dates");
dates.appendChild(pubdates);
mapProperty(pubdates, "date", item[zfield]);
}
record.appendChild(dates);
break;
case 'periodical':
var periodical = doc.createElement("periodical");
var zfield = getField("full-title", item.itemType);
if (item[zfield]) {
mapProperty(periodical, "full-title", item[zfield]);
}
var zfield = getField("abbr-1", item.itemType);
if (item[zfield]) {
mapProperty(periodical, "abbr-1", item[zfield]);
}
if (periodical.children.length > 0) record.appendChild(periodical);
break;
case 'keywords':
if (item.tags.length > 0) {
var keywords = doc.createElement("keywords");
for (var i = 0; i < item.tags.length; i++) {
mapProperty(keywords, "keyword", item.tags[i].tag);
}
record.appendChild(keywords);
}
break;
case 'research-notes':
if (item.notes && item.notes.length && Zotero.getOption("exportNotes")) {
mapProperty(record, "research-notes",
item.notes.reduce(function(s, n) {
return s + '<p>' + n.note + '</p>'; // EndNote only supports a single note field, so concatenate all notes into one
}, '')
);
}
break;
case 'urls':
var urls = doc.createElement("urls");
if (item.url) {
var weburls = doc.createElement("web-urls");
urls.appendChild(weburls);
mapProperty(weburls, "url", item.url);
}
if (item.attachments.length) {
var pdfurls = doc.createElement("pdf-urls");
var texturls = doc.createElement("text-urls");
var exportFileData = Zotero.getOption("exportFileData");
for (var i=0; i< item.attachments.length; i++) {
var attachment = item.attachments[i];
var path;
if ( exportFileData && attachment.saveFile) {
path = attachment.defaultPath.replace(/^files\//, '');
attachment.saveFile('PDF/' + path, true);
path = 'internal-pdf://' + path;
} else {
path = attachment.localPath || attachment.url;
}
if (!path) continue;
if (attachment.mimeType == "application/pdf") {
mapProperty(pdfurls, "url", path);
} else {
mapProperty(texturls, "url", path);
}
}
if (pdfurls.children.length) urls.appendChild(pdfurls);
if (texturls.children.length) urls.appendChild(texturls);
}
if (urls.children.length) record.appendChild(urls);
break;
default:
var zfield = getField(fields[f], item.itemType);
//Z.debug(fields[f] + ": " + zfield);
if (item[zfield]) mapProperty(record, fields[f], item[zfield]);
}
}
records.appendChild(record);
}
doc.documentElement.appendChild(records);
Zotero.write('<?xml version="1.0" encoding="UTF-8"?>\n');
var serializer = new XMLSerializer();
Zotero.write(serializer.serializeToString(doc)
.replace(/\r\n?|\n/g, '
') // Follow EndNote convention for newlines (carriage return entity)
);
}
//******IMPORT Functions
/**
* Convert XML style elements to Zotero HTML mark-up
* Works with nested style nodes or with multiple styling descriptors in a single face attribute
*
* @param {node} a DOM element
*
* @return {String} String with HTML mark-up
*/
var en2zMap = {
italic: 'i',
bold: 'b',
superscript: 'sup',
subscript: 'sub'
};
var en2zNoteMap = Object.create(en2zMap);
en2zNoteMap.underline = 'u';
function htmlify(nodes, field) {
var htmlstr = "",
formatting = [],
map = field == 'note' ? en2zNoteMap : en2zMap;
if (nodes.childNodes.length == 1 && nodes.childNodes[0].nodeType == 3) {
//single text node
return nodes.textContent;
}
for (var i=0; i<nodes.children.length; i++) {
var node = nodes.children[i];
var face = node.getAttribute('face')
if (face) {
face = face.split(/\s+/)
//filter out tags we don't care about
.filter(function(f) { return !!map[f] });
} else {
face = [];
}
//see what we're closing
var closing = [];
for (var j=0; j<formatting.length; j++) {
if (face.indexOf(formatting[j]) == -1) {
closing.push(map[formatting[j]]);
formatting.splice(j,1);
j--;
}
}
if (closing.length) htmlstr += '</' + closing.reverse().join('></') + '>';
//see what we're opening
var opening = [];
for (var j=0; j<face.length; j++) {
if (!map[face[j]]) continue;
if (formatting.indexOf(face[j]) == -1) {
opening.push(map[face[j]]);
formatting.push(face[j]);
}
}
if (opening.length) htmlstr += '<' + opening.join('><') + '>';
htmlstr += node.textContent;
}
//close left-over tags
var closing = [];
for (var j=0; j<formatting.length; j++) {
closing.push(map[formatting[j]]);
}
if (closing.length) htmlstr += '</' + closing.reverse().join('></') + '>';
return htmlstr;
}
/**
* Convert Endnote XML style elements to text, if applicable including Zotero HTML mark-up
* @param {node} a DOM element
*
* @return {String} The text content
*/
function processField(node, keepNewlines, field) {
if (!node.textContent) {
return '';
} else {
var content = htmlify(node, field);
//don't remove line breaks from abstracts
if (keepNewlines) return content;
else return ZU.trimInternal(content);
}
}
//**********EXPORT Functions
/**
* If property is defined, this function adds an appropriate XML element as a child of
* parentElement. Also converts elements with html mark-up to EndnoteXML style mark-up.
* @param {Element} parentElement The parent of the new element to be created.
* @param {String} elementName The name of the new element to be created.
* @param {Any} property The property to inspect. If this property is defined and not
* null, false, or empty, a new element is created whose textContent is its value.
* @param {Object} [attributes] If defined, this object defines attributes to be added
* to the new element.
*/
function mapProperty(parentElement, elementName, property, attributes) {
if (!property && property !== 0) return null;
var doc = parentElement.ownerDocument,
newElement = doc.createElement(elementName);
if (attributes) {
for (var i in attributes) {
newElement.setAttribute(i, attributes[i]);
}
}
var nodes = convertZoteroMarkup(property);
if (nodes.length == 1 && nodes[0].getAttribute('face') == 'normal') {
//no special formatting, skip the outer style node
newElement.appendChild(nodes[0].firstChild);
} else {
for (var i=0; i<nodes.length; i++) {
newElement.appendChild(nodes[i]);
}
}
parentElement.appendChild(newElement);
return newElement;
}
/**
* Convert Zotero rich text markup to EndNote XML
*
* @param {String} str String to convert
*/
var convertZoteroMarkup = (function() {
//mapping Zotero mark-up to EndNote
var map = {
I: ['italic'],
EM: ['italic'], // TinyMCE
B: ['bold'],
STRONG: ['bold'], // TinyMCE
SUP: ['superscript'],
SUB: ['subscript'],
U: ['underline'], // Because we import it this way into notes
SC: [],
SPAN: ['span']
};
var doc = (new DOMParser()).parseFromString('<foo/>', 'application/xml');
function createFormattedNode(str, format) {
var node = doc.createElement('style');
str = str.replace(/\n{3,}/g, '\n\n'); // Possible if some tags were skipped
if (format.length) {
node.setAttribute('face', format.join(' '));
} else {
node.setAttribute('face', 'normal');
}
node.appendChild(doc.createTextNode(str));
return node;
}
var tagRe = /<(\/?)(\w+)(\s[^>]*)?>/gi;
return function(str) {
// Paragraphs and line breaks get converted to newlines
str = str.replace(/\s*<br\s*\/?>\s*/gi, '\n')
.replace(/(?:\s*<\/p>\s*)+/gi, '\n\n')
.replace(/\s*<p(?:\s.*?)?>\s*/gi, '\n\n')
.trim();
var tags = [],
formatting = [],
currentStr = '',
nextStrStart = 0,
nodes = [],
m;
while (m = tagRe.exec(str)) {
var tagName = m[2].toUpperCase(),
format = map[tagName] || [],
oldFormatting;
if (!m[1]) {
//opening tag
// If "span", need to inspect contents of style attribute
if (tagName == 'SPAN' && m[3] && /\bstyle\s*=/i.test(m[3])) {
// Currently we're only aware of "text-decoration: underline" that is used in tinyMCE
if (/text-decoration\s*:[^'";]*\bunderline\b/.test(m[3])) {
format = ['underline'];
} else {
format = []; // Just drop it
}
}
var formatDiff = ZU.arrayDiff(format, formatting); //only consider new formatting
//push tag so that we know what we're closing later
tags.push({
tagName: tagName,
format: formatDiff
});
oldFormatting = formatting;
formatting = formatting.concat(formatDiff);
} else {
//closing tag
//see if we opened this kind of tag
var j;
for (j=tags.length-1; j>=0; j--) {
if (tags[j].tagName == tagName) break;
}
if (j<0) continue; //never opened. Skip closing tag
//close up tags
var tag, formatDiff = [];
do {
tag = tags.pop();
formatDiff = formatDiff.concat(tag.format);
} while (tag.tagName != tagName);
oldFormatting = formatting;
formatting = ZU.arrayDiff(formatting, formatDiff);
}
//attach substring up to tag
if (nextStrStart < m.index) currentStr += str.substring(nextStrStart, m.index);
nextStrStart = tagRe.lastIndex; //just past the current tag
if (formatDiff.length && currentStr) {
//formatting is changing, create a node for current formatting
nodes.push(createFormattedNode(currentStr, oldFormatting));
currentStr = '';
}
}
if (nextStrStart < str.length) currentStr += str.substring(nextStrStart);
if (currentStr) nodes.push(createFormattedNode(currentStr, formatting));
return nodes;
};
})();
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "import",
"input": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<xml>\n <records>\n <record>\n <database name=\"endnote.enl\" path=\"endnote.enl\">endnote.enl</database>\n <ref-type name=\"Report\">10</ref-type>\n <contributors>\n <authors>\n <author>Ahlquist, John S</author>\n <author>Breunig, Christian</author>\n </authors>\n </contributors>\n <titles>\n <title>Country Clustering in Comparative Political Economy</title>\n </titles>\n <periodical/>\n <pages>32</pages>\n <keywords/>\n <dates>\n <year>2009</year>\n </dates>\n <pub-location>Cologne</pub-location>\n <urls>\n <pdf-urls>\n <url>internal-pdf://Ahlquist and Breunig _ 2009 _ Country Clustering in Comparative Political Econom.pdf</url>\n </pdf-urls>\n </urls>\n </record>\n <record>\n <database name=\"endnote.enl\" path=\"endnote.enl\">endnote.enl</database>\n <ref-type name=\"Book\">1</ref-type>\n <contributors>\n <authors>\n <author>Dunnett, Nigel</author>\n <author>Kingsbury, Noël</author>\n </authors>\n </contributors>\n <titles>\n <title>Planting green roofs and living walls</title>\n </titles>\n <periodical/>\n <edition>2</edition>\n <keywords/>\n <dates>\n <year>2008</year>\n </dates>\n <pub-location>Portland, OR</pub-location>\n <publisher>Timber Press</publisher>\n <isbn>0881929115</isbn>\n <urls/>\n <abstract>The latest techniques for planting roofs and walls to enhance our buildings and benefit the environment. The green roof industry is booming and the technology changing fast as professionals respond to the unique challenges of each new planting. In this comprehensively updated, fully revised edition of their authoritative reference, Nigel Dunnett and Nol Kingsbury reveal the very latest techniques, materials, and plants, and showcase some spectacular new case studies for the non-professional. Green roofs and walls reduce pollution and runoff, help insulate and reduce the maintenance needs of buildings, contribute to biodiversity, and provide habitats for wildlife. In addition to all this, they are attractive to look at and enhance the quality of life of residents. In Planting Green Roofs and Living Walls, Revised and Updated Edition, the authors describe and illustrate the practical techniques required to design, implement, and maintain a green roof or wall to the highest standards. This informative, up-to-the-minute reference will encourage gardeners everywhere to consider the enormous benefits to be gained from planting on their roofs and walls.</abstract>\n </record>\n <record>\n <database name=\"endnote.enl\" path=\"endnote.enl\">endnote.enl</database>\n <ref-type name=\"Journal Article\">0</ref-type>\n <contributors>\n <authors>\n <author>Foderaro, Lisa W</author>\n </authors>\n </contributors>\n <titles>\n <title>Rooftop greenhouse will boost city farming</title>\n <secondary-title>New York Times</secondary-title>\n </titles>\n <periodical>\n <full-title>New York Times</full-title>\n </periodical>\n <pages>A20</pages>\n <keywords/>\n <dates>\n <year>2012</year>\n </dates>\n <pub-location>New York</pub-location>\n <urls/>\n </record>\n <record>\n <database name=\"endnote.enl\" path=\"endnote.enl\">endnote.enl</database>\n <ref-type name=\"Book\">1</ref-type>\n <contributors>\n <secondary-authors>\n <author>Hancké, Bob</author>\n <author>Rhodes, Martin</author>\n <author>Thatcher, Mark</author>\n </secondary-authors>\n </contributors>\n <titles>\n <title>Beyond varieties of capitalism : Conflict, contradiction, and complementarities in the European economy</title>\n <short-title>Beyond varieties of capitalism</short-title>\n </titles>\n <periodical/>\n <keywords/>\n <dates>\n <year>2007</year>\n </dates>\n <pub-location>Oxford and New York</pub-location>\n <publisher>Oxford University Press</publisher>\n <isbn>9780199206483</isbn>\n <urls/>\n </record>\n <record>\n <database name=\"endnote.enl\" path=\"endnote.enl\">endnote.enl</database>\n <ref-type name=\"Book\">1</ref-type>\n <contributors>\n <authors>\n <author>Isaacson, Walter</author>\n </authors>\n </contributors>\n <titles>\n <title>Steve Jobs</title>\n </titles>\n <periodical/>\n <keywords/>\n <dates>\n <year>2011</year>\n </dates>\n <pub-location>New York, {NY}</pub-location>\n <publisher>Simon & Schuster</publisher>\n <isbn>9781451648539</isbn>\n <urls/>\n </record>\n <record>\n <database name=\"endnote.enl\" path=\"endnote.enl\">endnote.enl</database>\n <ref-type name=\"Book Section\">7</ref-type>\n <contributors>\n <authors>\n <author>Mares, Isabela</author>\n </authors>\n <secondary-authors>\n <author>Hall, Peter A</author>\n <author>Soskice, David</author>\n </secondary-authors>\n </contributors>\n <titles>\n <title>Firms and the welfare state: When, why, and how does social policy matter to employers?</title>\n <secondary-title>Varieties of capitalism. The institutional foundations of comparative advantage</secondary-title>\n </titles>\n <periodical>\n <full-title>Varieties of capitalism. The institutional foundations of comparative advantage</full-title>\n </periodical>\n <pages>184-213</pages>\n <keywords/>\n <dates>\n <year>2001</year>\n </dates>\n <pub-location>New York</pub-location>\n <publisher>Oxford University Press</publisher>\n <urls/>\n </record>\n <record>\n <database name=\"endnote.enl\" path=\"endnote.enl\">endnote.enl</database>\n <ref-type name=\"Book\">1</ref-type>\n <contributors>\n <authors>\n <author>McInnis, Maurie Dee</author>\n <author>Nelson, Louis P</author>\n </authors>\n </contributors>\n <titles>\n <title>Shaping the body politic: Art and political formation in early america</title>\n </titles>\n <periodical/>\n <keywords/>\n <dates>\n <year>2011</year>\n </dates>\n <pub-location>Charlottesville, VA</pub-location>\n <publisher>University of Virginia Press</publisher>\n <isbn>0813931029</isbn>\n <urls/>\n <abstract>Traditional narratives imply that art in early America was severely limited in scope. By contrast, these essays collectively argue that visual arts played a critical role in shaping an early American understanding of the body politic. American artists in the late colonial and early national periods enlisted the arts to explore and exploit their visions of the relationship of the American colonies to the mother country and, later, to give material shape to the ideals of modern republican nationhood. Taking a uniquely broad view of both politics and art, Shaping the Body Politic ranges in topic from national politics to the politics of national identity, and from presidential portraits to the architectures of the ordinary. The book covers subject matter from the 1760s to the 1820s, ranging from Patience Wright's embodiment of late colonial political tension to Thomas Jefferson's designs for the entry hall at Monticello as a museum. Paul Staiti, Maurie {McInnis}, and Roger Stein offer new readings of canonical presidential images and spaces: Jean-Antoine Houdon's George Washington, Gilbert Stuart's the Lansdowne portrait of Washington, and Thomas Jefferson's Monticello. In essays that engage print and painting, portraiture and landscape, Wendy Bellion, David Steinberg, and John Crowley explore the formation of national identity. The volume's concluding essays, by Susan Rather and Bernard Herman, examine the politics of the everyday. The accompanying eighty-five illustrations and color plates demonstrate the broad range of politically resonant visual material in early America. {ContributorsWendy} Bellion, University of Delaware * John E. Crowley, Dalhousie University * Bernard L. Herman, University of North Carolina, Chapel Hill * Maurie D. {McInnis}, University of Virginia * Louis P. Nelson, University of Virginia * Susan Rather, University of Texas, Austin * Paul Staiti, Mount Holyoke College * Roger B. Stein, emeritus, University of Virginia * David Steinberg, Independent Scholar Thomas Jefferson Foundation Distinguished Lecture Series</abstract>\n </record>\n <record>\n <database name=\"endnote.enl\" path=\"endnote.enl\">endnote.enl</database>\n <ref-type name=\"Patent\">25</ref-type>\n <contributors>\n <authors>\n <author>Van Dan Elzen, Hans</author>\n </authors>\n </contributors>\n <titles>\n <title>Yo-yo having a modifiable string gap</title>\n </titles>\n <periodical/>\n <isbn>WO2011US30214</isbn>\n <keywords/>\n <dates>\n <year>2011</year>\n </dates>\n <urls/>\n <abstract>The invention is a yo-yo that includes unique features that enable a user to adjust the yo-yo's string gap. In the preferred embodiment, at least one of the yo-yo's side assemblies includes a screw engaged to a nut that has two thru-bores located in a side-by-side relation. The screw is located to one side of the yo-yo's axis of rotation and can be rotated by a user to adjust the position of the associated side assembly on the yo-yo's axle structure. By appropriate positioning of the side assembly, a user can adjust the yo-yo's performance characteristics.</abstract>\n </record>\n <record>\n <database name=\"endnote.enl\" path=\"endnote.enl\">endnote.enl</database>\n <ref-type name=\"Web Page\">16</ref-type>\n <titles>\n <title>CSL search by example</title>\n <secondary-title>Citation Style Editor</secondary-title>\n </titles>\n <periodical>\n <full-title>Citation Style Editor</full-title>\n </periodical>\n <keywords/>\n <urls>\n <web-urls>\n <url>http://editor.citationstyles.org/searchByExample/</url>\n </web-urls>\n </urls>\n </record>\n </records>\n</xml>",
"items": [
{
"itemType": "report",
"title": "Country Clustering in Comparative Political Economy",
"creators": [
{
"firstName": "John S.",
"lastName": "Ahlquist",
"creatorType": "author"
},
{
"firstName": "Christian",
"lastName": "Breunig",
"creatorType": "author"
}
],
"date": "2009",
"pages": "32",
"place": "Cologne",
"attachments": [
{
"title": "Ahlquist and Breunig _ 2009 _ Country Clustering in Comparative Political Econom",
"path": "PDF/Ahlquist and Breunig _ 2009 _ Country Clustering in Comparative Political Econom.pdf",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
},
{
"itemType": "book",
"title": "Planting green roofs and living walls",
"creators": [
{
"firstName": "Nigel",
"lastName": "Dunnett",
"creatorType": "author"
},
{
"firstName": "Noël",
"lastName": "Kingsbury",
"creatorType": "author"
}
],
"date": "2008",
"ISBN": "0881929115",
"abstractNote": "The latest techniques for planting roofs and walls to enhance our buildings and benefit the environment. The green roof industry is booming and the technology changing fast as professionals respond to the unique challenges of each new planting. In this comprehensively updated, fully revised edition of their authoritative reference, Nigel Dunnett and Nol Kingsbury reveal the very latest techniques, materials, and plants, and showcase some spectacular new case studies for the non-professional. Green roofs and walls reduce pollution and runoff, help insulate and reduce the maintenance needs of buildings, contribute to biodiversity, and provide habitats for wildlife. In addition to all this, they are attractive to look at and enhance the quality of life of residents. In Planting Green Roofs and Living Walls, Revised and Updated Edition, the authors describe and illustrate the practical techniques required to design, implement, and maintain a green roof or wall to the highest standards. This informative, up-to-the-minute reference will encourage gardeners everywhere to consider the enormous benefits to be gained from planting on their roofs and walls.",
"edition": "2",
"place": "Portland, OR",
"publisher": "Timber Press",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
},
{
"itemType": "journalArticle",
"title": "Rooftop greenhouse will boost city farming",
"creators": [
{
"firstName": "Lisa W.",
"lastName": "Foderaro",
"creatorType": "author"
}
],
"date": "2012",
"pages": "A20",
"publicationTitle": "New York Times",
"attachments": [],
"tags": [],
"notes": [
{
"note": "The following values have no corresponding Zotero field:<br/>pub-location: New York",
"tags": [
"_EndnoteXML import"
]
}
],
"seeAlso": []
},
{
"itemType": "book",
"title": "Beyond varieties of capitalism : Conflict, contradiction, and complementarities in the European economy",
"creators": [
{
"firstName": "Bob",
"lastName": "Hancké",
"creatorType": "seriesEditor"
},
{
"firstName": "Martin",
"lastName": "Rhodes",
"creatorType": "seriesEditor"
},
{
"firstName": "Mark",
"lastName": "Thatcher",
"creatorType": "seriesEditor"
}
],
"date": "2007",
"ISBN": "9780199206483",
"place": "Oxford and New York",
"publisher": "Oxford University Press",
"shortTitle": "Beyond varieties of capitalism",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
},
{
"itemType": "book",
"title": "Steve Jobs",
"creators": [
{
"firstName": "Walter",
"lastName": "Isaacson",
"creatorType": "author"
}
],
"date": "2011",
"ISBN": "9781451648539",
"place": "New York, {NY}",
"publisher": "Simon & Schuster",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
},
{
"itemType": "bookSection",
"title": "Firms and the welfare state: When, why, and how does social policy matter to employers?",
"creators": [
{
"firstName": "Isabela",
"lastName": "Mares",
"creatorType": "author"
},
{
"firstName": "Peter A.",
"lastName": "Hall",
"creatorType": "editor"
},
{
"firstName": "David",
"lastName": "Soskice",
"creatorType": "editor"
}
],
"date": "2001",
"bookTitle": "Varieties of capitalism. The institutional foundations of comparative advantage",
"pages": "184-213",
"place": "New York",
"publisher": "Oxford University Press",
"attachments": [],
"tags": [],
"notes": [
{
"note": "The following values have no corresponding Zotero field:<br/>periodical: Varieties of capitalism. The institutional foundations of comparative advantage",
"tags": [
"_EndnoteXML import"
]
}
],
"seeAlso": []
},
{
"itemType": "book",
"title": "Shaping the body politic: Art and political formation in early america",
"creators": [
{
"firstName": "Maurie Dee",
"lastName": "McInnis",
"creatorType": "author"
},
{
"firstName": "Louis P.",
"lastName": "Nelson",
"creatorType": "author"
}
],
"date": "2011",
"ISBN": "0813931029",
"abstractNote": "Traditional narratives imply that art in early America was severely limited in scope. By contrast, these essays collectively argue that visual arts played a critical role in shaping an early American understanding of the body politic. American artists in the late colonial and early national periods enlisted the arts to explore and exploit their visions of the relationship of the American colonies to the mother country and, later, to give material shape to the ideals of modern republican nationhood. Taking a uniquely broad view of both politics and art, Shaping the Body Politic ranges in topic from national politics to the politics of national identity, and from presidential portraits to the architectures of the ordinary. The book covers subject matter from the 1760s to the 1820s, ranging from Patience Wright's embodiment of late colonial political tension to Thomas Jefferson's designs for the entry hall at Monticello as a museum. Paul Staiti, Maurie {McInnis}, and Roger Stein offer new readings of canonical presidential images and spaces: Jean-Antoine Houdon's George Washington, Gilbert Stuart's the Lansdowne portrait of Washington, and Thomas Jefferson's Monticello. In essays that engage print and painting, portraiture and landscape, Wendy Bellion, David Steinberg, and John Crowley explore the formation of national identity. The volume's concluding essays, by Susan Rather and Bernard Herman, examine the politics of the everyday. The accompanying eighty-five illustrations and color plates demonstrate the broad range of politically resonant visual material in early America. {ContributorsWendy} Bellion, University of Delaware * John E. Crowley, Dalhousie University * Bernard L. Herman, University of North Carolina, Chapel Hill * Maurie D. {McInnis}, University of Virginia * Louis P. Nelson, University of Virginia * Susan Rather, University of Texas, Austin * Paul Staiti, Mount Holyoke College * Roger B. Stein, emeritus, University of Virginia * David Steinberg, Independent Scholar Thomas Jefferson Foundation Distinguished Lecture Series",
"place": "Charlottesville, VA",
"publisher": "University of Virginia Press",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
},
{
"itemType": "patent",
"title": "Yo-yo having a modifiable string gap",
"creators": [
{
"firstName": "Hans",
"lastName": "Van Dan Elzen",
"creatorType": "inventor"
}
],
"issueDate": "2011",
"abstractNote": "The invention is a yo-yo that includes unique features that enable a user to adjust the yo-yo's string gap. In the preferred embodiment, at least one of the yo-yo's side assemblies includes a screw engaged to a nut that has two thru-bores located in a side-by-side relation. The screw is located to one side of the yo-yo's axis of rotation and can be rotated by a user to adjust the position of the associated side assembly on the yo-yo's axle structure. By appropriate positioning of the side assembly, a user can adjust the yo-yo's performance characteristics.",
"patentNumber": "WO2011US30214",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
},
{
"itemType": "webpage",
"title": "CSL search by example",
"creators": [],
"url": "http://editor.citationstyles.org/searchByExample/",
"websiteTitle": "Citation Style Editor",
"attachments": [],
"tags": [],
"notes": [
{
"note": "The following values have no corresponding Zotero field:<br/>periodical: Citation Style Editor",
"tags": [
"_EndnoteXML import"
]
}
],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?><xml><records><record><database name=\"My EndNote Library.enl\" path=\"C:\\BACK_THIS_UP\\Desktop\\My EndNote Library.enl\">My EndNote Library.enl</database><source-app name=\"EndNote\" version=\"16.0\">EndNote</source-app><rec-number>1</rec-number><foreign-keys><key app=\"EN\" db-id=\"dstt999adpex2qeprz9xtt0fe2rrpwtarfwv\">1</key></foreign-keys><ref-type name=\"Journal Article\">17</ref-type><contributors></contributors><titles><title><style face=\"normal\" font=\"default\" size=\"100%\">Plain </style><style face=\"bold\" font=\"default\" size=\"100%\">Bold</style><style face=\"italic\" font=\"default\" size=\"100%\"> Italics</style><style face=\"normal\" font=\"default\" size=\"100%\"> </style><style face=\"underline\" font=\"default\" size=\"100%\">Underline</style><style face=\"normal\" font=\"default\" size=\"100%\"> </style><style face=\"superscript\" font=\"default\" size=\"100%\">Superscript</style><style face=\"normal\" font=\"default\" size=\"100%\"> </style><style face=\"subscript\" font=\"default\" size=\"100%\">Subscript</style><style face=\"normal\" font=\"default\" size=\"100%\"> </style><style face=\"normal\" font=\"Symbol\" charset=\"2\" size=\"100%\">SymbolFont</style><style face=\"normal\" font=\"default\" size=\"100%\"> </style><style face=\"normal\" font=\"Courier New\" size=\"100%\">CourierNew</style><style face=\"normal\" font=\"default\" size=\"100%\"> </style><style face=\"normal\" font=\"default\" size=\"7\">SmallerSize</style><style face=\"normal\" font=\"default\" size=\"100%\"> </style><style face=\"normal\" font=\"default\" size=\"12\">Size12 </style><style face=\"bold italic underline superscript\" font=\"Times New Roman\" size=\"100%\">TimesNewRoman-Bold-Italics-Underline-Superscript</style></title></titles><dates></dates><urls></urls></record></records></xml>",
"items": [
{
"itemType": "journalArticle",
"title": "Plain <b>Bold</b><i> Italics</i> Underline <sup>Superscript</sup> <sub>Subscript</sub> SymbolFont CourierNew SmallerSize Size12 <b><i><sup>TimesNewRoman-Bold-Italics-Underline-Superscript</sup></i></b>",
"creators": [],
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?><xml><records><record><database name=\"My EndNote Library.enl\" path=\"My EndNote Library.enl\">My EndNote Library.enl</database><source-app name=\"EndNote\" version=\"20.1\">EndNote</source-app><rec-number>1</rec-number><foreign-keys><key app=\"EN\" db-id=\"rvtvez0v1e2ezne5ws050zwvfrezp0w20se2\">1</key></foreign-keys><ref-type name=\"Book\">6</ref-type><contributors><authors><author><style face=\"normal\" font=\"default\" size=\"100%\">Author, Test</style></author></authors></contributors><titles><title><style face=\"normal\" font=\"default\" size=\"100%\">A test item (with a citekey)</style></title></titles><dates><year><style face=\"normal\" font=\"default\" size=\"100%\">2021</style></year></dates><label><style face=\"normal\" font=\"default\" size=\"100%\">test_item_2021</style></label><urls></urls></record><record><database name=\"My EndNote Library.enl\" path=\"/Users/abe/Documents/My EndNote Library.enl\">My EndNote Library.enl</database><source-app name=\"EndNote\" version=\"20.1\">EndNote</source-app><rec-number>2</rec-number><foreign-keys><key app=\"EN\" db-id=\"rvtvez0v1e2ezne5ws050zwvfrezp0w20se2\">2</key></foreign-keys><ref-type name=\"Book\">6</ref-type><contributors><authors><author><style face=\"normal\" font=\"default\" size=\"100%\">Author, Test Jr.</style></author></authors></contributors><titles><title><style face=\"normal\" font=\"default\" size=\"100%\">A test item (without a citekey)</style></title></titles><dates><year><style face=\"normal\" font=\"default\" size=\"100%\">2021</style></year></dates><urls></urls></record></records></xml>",
"items": [
{
"itemType": "book",
"title": "A test item (with a citekey)",
"creators": [
{
"firstName": "Test",
"lastName": "Author",
"creatorType": "author"
}
],
"date": "2021",
"extra": "Citation Key: test_item_2021",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
},
{
"itemType": "book",
"title": "A test item (without a citekey)",
"creators": [
{
"firstName": "Test Jr",
"lastName": "Author",
"creatorType": "author"
}
],
"date": "2021",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
250Abe Jellinek/search(/quick)?\?|/nav/index/|/(content|periodical)//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
const idRe = /(\d+)(?:[?#].*)?$/;
function detectWeb(doc, url) {
if (doc.querySelector('#footerLinkVLS') && idRe.test(url)) {
let docType = text(doc, '.value.doctypeBase_vlsType');
let header = text(doc, '.headertext');
if (docType == 'Document' || docType == 'Dokument') {
return "document";
}
else if (docType == 'Journal Article'
|| docType == 'Aufsatz in einer Zeitschrift'
|| header == 'Journal Article'
|| header == 'Aufsatz in einer Zeitschrift') {
return "journalArticle";
}
else if (docType.includes('Thesis') || docType.endsWith('arbeit')) {
return "thesis";
}
else if (doc.querySelector('#mods_name-roleTerm_Recipient')) {
return "letter";
}
else {
return "book";
}
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('#searchResult .metadataTable a.title');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) {
ZU.processDocuments(Object.keys(items).map(toTitleInfo), scrape);
}
});
}
else {
let titleInfoURL = toTitleInfo(url);
if (titleInfoURL == url) {
scrape(doc, url);
}
else {
ZU.processDocuments(titleInfoURL, scrape);
}
}
}
function toTitleInfo(url) {
if (url.includes('/titleinfo/')) {
return url;
}
else {
return url.replace(/\/(content|periodical)\/[^/]+/, '/$1/titleinfo');
}
}
function scrape(doc, url) {
var m = url.match(idRe);
if (m) {
let id = m[1];
let modsURL = `/oai?verb=GetRecord&metadataPrefix=mods&identifier=${id}`;
ZU.processDocuments(modsURL, function (respDoc) {
let translator = Zotero.loadTranslator("import");
// MODS
translator.setTranslator("0e2235e7-babf-413c-9acf-f27cce5f059c");
translator.setString(respDoc.querySelector('mods').outerHTML);
translator.setHandler("itemDone", function (obj, item) {
// the MODS translator is eager to return the "document" item
// type, but items in these catalogs are almost always books. so
// we'll override the translator's guess if needed
if (item.itemType == 'document') {
item.itemType = detectWeb(doc, url);
}
if (doc.querySelector('.resourceLink')) {
item.attachments.push({
title: 'Full Text PDF',
mimeType: 'application/pdf',
url: `/download/pdf/${id}`
});
}
if (!item.url || item.url.includes('//doi.org/')) {
item.url = url.replace(/[?#].*/, '');
}
cleanItem(item);
item.complete();
});
translator.translate();
});
}
}
function cleanItem(item) {
if (item.place) {
item.place = item.place.replace(/(^\[)|(\]$)/g, '');
}
if (item.publisher) {
item.publisher = item.publisher.replace(/\.\s*$/, '');
}
if (item.edition) {
item.edition = item.edition.replace(/(^\[)|(\]$)/g, '');
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://menadoc.bibliothek.uni-halle.de/ssg/content/titleinfo/798519",
"items": [
{
"itemType": "book",
"title": "Chronici Syriaci Abvlpharagiani E Scriptoribvs Graecis Emendati, Illvstrati, Specimen",
"creators": [
{
"firstName": "Albert Jakob",
"lastName": "Arnoldi",
"creatorType": "author"
},
{
"firstName": "",
"lastName": "Barhebraeus",
"creatorType": "author"
}
],
"date": "1805",
"callNumber": "ssg4.3.3",
"edition": "Electronic ed.",
"language": "lat",
"libraryCatalog": "Library Catalog (Visual Library 2021)",
"place": "Marburgi",
"publisher": "Krieger",
"url": "https://menadoc.bibliothek.uni-halle.de/ssg/content/titleinfo/798519",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [
{
"note": "statement of responsibility: Alb. Jac. Arnoldi"
},
{
"note": "Marbvrgi"
},
{
"note": "Marburg, Univ., Einladungsschr., 1805"
},
{
"note": "Aus: Avctoritate Et Svb Avspiciis ... Domini Gvilielmi I. ... Hassiae Landgravii ... Rectoris Academiae Magnificentissimi Ad Novi Magistratvs Academici Inavgvrationem Ipsis Calendis Janvarii A. [MD]CCCV Celebranam Ea, Qva Par Est, Observantia Invitat Academiae ADHVC Prorector ..."
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://menadoc.bibliothek.uni-halle.de/ssg/content/titleinfo/1339313",
"items": [
{
"itemType": "book",
"title": "Geschichte und Beschreibung des Landes der Drusen in Syrien: nebst einem bisher in Teutschland unbekannten Religionsbuche dieses Volks",
"creators": [
{
"firstName": "Johann Gottlob",
"lastName": "Worbs",
"creatorType": "author"
}
],
"date": "1799",
"callNumber": "ssg2.4",
"edition": "Electronic ed.",
"language": "ger",
"libraryCatalog": "Library Catalog (Visual Library 2021)",
"place": "Görliz",
"publisher": "Anton",
"shortTitle": "Geschichte und Beschreibung des Landes der Drusen in Syrien",
"url": "https://menadoc.bibliothek.uni-halle.de/ssg/content/titleinfo/1339313",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Drusen"
}
],
"notes": [
{
"note": "statement of responsibility: von J. G. Worbs, Pastor in Priebus"
},
{
"note": "Vorlageform des Erscheinungsvermerks: Görlitz, bei C. G. Anton"
},
{
"note": "In Fraktur"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.e-rara.ch/zuz/content/titleinfo/18877392",
"items": [
{
"itemType": "book",
"title": "ʿAruḳ ha-shorashot =: Dictionarivm Hebraicvm",
"creators": [
{
"firstName": "Sebastian",
"lastName": "Münster",
"creatorType": "author"
},
{
"firstName": "Johann",
"lastName": "Froben",
"creatorType": "author"
}
],
"date": "1523",
"archiveLocation": "Z06",
"language": "heb; lat",
"libraryCatalog": "Library Catalog (Visual Library 2021)",
"place": "Basel",
"publisher": "Apvd Frob",
"rights": "pdm",
"shortTitle": "ʿAruḳ ha-shorashot =",
"url": "https://www.e-rara.ch/zuz/content/titleinfo/18877392",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [
{
"note": "statement of responsibility: nunc primum aeditum & typis excusum, Adiectis Chaldaicis uocabulis non parum multis autore F. Sebastiano Mvnstero ..."
},
{
"note": "Druckermarken"
},
{
"note": "Bogensignaturen: Aa-Cc⁸, a-z⁸, A-K⁸"
},
{
"note": "ownership: Aus dem Besitz Huldrych Zwinglis. Auf dem Titelblatt handschriftlicher Besitzvermerk: \"ειµι του Zijγγλιου\"."
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://menadoc.bibliothek.uni-halle.de/menalib/content/titleinfo/1508439",
"items": [
{
"itemType": "document",
"title": "Global Turkey in Europe: political, economic, and foreign policy dimensions of Turkey's evolving relationship with the EU",
"creators": [
{
"firstName": "Senem",
"lastName": "Aydın-Düzgit",
"creatorType": "contributor"
},
{
"lastName": "Istituto Affari Internazionali",
"fieldMode": 1,
"creatorType": "contributor"
}
],
"date": "2000",
"language": "eng",
"libraryCatalog": "Library Catalog (Visual Library 2021)",
"publisher": "Istituto Affari Internazionali",
"shortTitle": "Global Turkey in Europe",
"url": "https://menadoc.bibliothek.uni-halle.de/menalib/content/titleinfo/1508439",
"attachments": [],
"tags": [],
"notes": [
{
"note": "statement of responsibility: ed. by Senem Aydın-Düzgit ..."
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://menadoc.bibliothek.uni-halle.de/menalib/content/titleinfo/4498774",
"items": [
{
"itemType": "journalArticle",
"title": "Legislating for the Benefit of Children Born Out of Wedlock",
"creators": [
{
"firstName": "Björn",
"lastName": "Bentlage",
"creatorType": "author"
}
],
"date": "2015",
"callNumber": "ssg3.1.5",
"language": "eng",
"libraryCatalog": "Library Catalog (Visual Library 2021)",
"publicationTitle": "Die Welt des Islams",
"url": "https://menadoc.bibliothek.uni-halle.de/menalib/content/titleinfo/4498774",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Nichteheliches Kind"
},
{
"tag": "Rechtsstellung"
}
],
"notes": [
{
"note": "statement of responsibility: Björn Bentlage"
},
{
"note": "Postprint"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://visuallibrary.net/dms/content/titleinfo/511462",
"items": [
{
"itemType": "letter",
"title": "[Brief Josef Blaas' an Albrecht Penck]",
"creators": [
{
"firstName": "Josef",
"lastName": "Blaas",
"creatorType": "author"
},
{
"firstName": "Albrecht",
"lastName": "Penck",
"creatorType": "recipient"
},
{
"firstName": "J.",
"lastName": "Blaas",
"creatorType": "contributor"
},
{
"firstName": "Leo",
"lastName": "Blaas",
"creatorType": "contributor"
},
{
"firstName": "Erich",
"lastName": "Blaas",
"creatorType": "contributor"
}
],
"date": "2021",
"archiveLocation": "Semantics Kommunikationsmanagement GmbH; Semantics Kommunikationsmanagement GmbH",
"language": "ger",
"libraryCatalog": "Library Catalog (Visual Library 2021)",
"url": "https://visuallibrary.net/dms/content/titleinfo/511462",
"attachments": [],
"tags": [],
"notes": [
{
"note": "formerShelvingLocation: B E"
},
{
"note": "systemDetails: Handschrift"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://epub.jku.at/obvulihs/content/titleinfo/984885",
"items": [
{
"itemType": "thesis",
"title": "Predicting Stock Price Changes using EDGAR",
"creators": [
{
"firstName": "Lukas",
"lastName": "Gabriel",
"creatorType": "author"
},
{
"firstName": "Bettina",
"lastName": "Grün",
"creatorType": "author"
},
{
"firstName": "Paul",
"lastName": "Hofmarcher",
"creatorType": "author"
}
],
"date": "2016",
"callNumber": "UL:SW:AS",
"language": "eng",
"libraryCatalog": "Library Catalog (Visual Library 2021)",
"place": "Linz",
"url": "https://resolver.obvsg.at/urn:nbn:at:at-ubl:1-7043",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Aktienindex"
},
{
"tag": "Börsenindex"
},
{
"tag": "Elektronischer Datenaustausch"
},
{
"tag": "Lineares Modell"
},
{
"tag": "Prognose"
},
{
"tag": "Statistisches Modell"
},
{
"tag": "Text Mining"
},
{
"tag": "Änderung"
}
],
"notes": [
{
"note": "statement of responsibility: Lukas Gabriel, BStat"
},
{
"note": "Kurzfassungen in englischer Sprache"
},
{
"note": "thesis statement: Universität Linz, Masterarbeit, 2016"
},
{
"note": "citation/reference: (VLID)984885"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://netlibrary.aau.at/obvuklhs/content/titleinfo/6190000",
"items": [
{
"itemType": "thesis",
"title": "Buch- und Mediennutzung in der Generation der 1990er Jahre: Lesesozialisation in der ‚Generation Harry Potter‘",
"creators": [
{
"firstName": "Lisa Marie",
"lastName": "Trattner",
"creatorType": "author"
},
{
"firstName": "Doris",
"lastName": "Moser",
"creatorType": "author"
}
],
"date": "2020",
"callNumber": "KLU:55",
"language": "ger",
"libraryCatalog": "Library Catalog (Visual Library 2021)",
"place": "Klagenfurt",
"shortTitle": "Buch- und Mediennutzung in der Generation der 1990er Jahre",
"url": "https://resolver.obvsg.at/urn:nbn:at:at-ubk:1-38085",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [
{
"note": "statement of responsibility: Lisa Marie Trattner"
},
{
"note": "thesis statement: Alpen-Adria-Universität Klagenfurt, Masterarbeit, 2020"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://digitale-sammlungen.ulb.uni-bonn.de/content/titleinfo/76578",
"items": [
{
"itemType": "book",
"title": "Agathangelos ar̊ Gēorgaj Asori episkoposin _u ousoumnasirouthiun Agathangełaj groc",
"creators": [
{
"firstName": "Yakovbos",
"lastName": "Tašean",
"creatorType": "author"
}
],
"date": "1891",
"archiveLocation": "38/409; 6/250; 5; 294/37; 6/182; 5",
"edition": "Electronic ed.",
"language": "arm",
"libraryCatalog": "Library Catalog (Visual Library 2021)",
"place": "Vienna",
"publisher": "Mxit'arean Tparan",
"rights": "pdm",
"series": "Azgayin matenadaran, Nationalbibliothek, Azgain matenadaran, Azgajin matenadaran, Bibliothèque National",
"seriesNumber": "3",
"url": "https://digitale-sammlungen.ulb.uni-bonn.de/content/titleinfo/76578",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [
{
"note": "statement of responsibility: Yakowbos Tašean"
},
{
"note": "language: [In armen. Schr. ]"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://digital-library.arolsen-archives.org/content/titleinfo/7262318",
"items": [
{
"itemType": "book",
"title": "About Jews liberated from German concentration camps arrived in Sweden in 1945: List No. 1",
"creators": [],
"date": "1946",
"language": "eng",
"libraryCatalog": "Library Catalog (Visual Library 2021)",
"place": "Malmö",
"publisher": "Henry Luttrup & Co",
"shortTitle": "About Jews liberated from German concentration camps arrived in Sweden in 1945",
"url": "https://digital-library.arolsen-archives.org/content/titleinfo/7262318",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Displaced Person"
},
{
"tag": "Namensverzeichnis"
},
{
"tag": "Schweden"
},
{
"tag": "Verzeichnis"
},
{
"tag": "Überlebender"
}
],
"notes": [
{
"note": "statement of responsibility: World Jewish Congress"
},
{
"note": "Zeitgenössische Publikationen/Quellen"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://unipub.uni-graz.at/offcampus/periodical/titleinfo/5615650",
"items": [
{
"itemType": "journalArticle",
"title": "Repressed Culture and Otherness in “Yo Soy Joaquín” and “Puerto Rican Obituary”",
"creators": [
{
"firstName": "Monica Cristiana",
"lastName": "Irimia",
"creatorType": "author"
}
],
"date": "2020",
"issue": "6",
"libraryCatalog": "Library Catalog (Visual Library 2021)",
"pages": "141-148",
"publicationTitle": "Off Campus: Seggau School of Thought",
"rights": "cc-by_4",
"url": "https://unipub.uni-graz.at/offcampus/periodical/titleinfo/5615650",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://menadoc.bibliothek.uni-halle.de/ssg/content/search/293863?query=test",
"items": [
{
"itemType": "book",
"title": "Storia dei Musulmani di Sicilia",
"creators": [
{
"firstName": "Michele",
"lastName": "Amari",
"creatorType": "author"
}
],
"date": "1854",
"callNumber": "ssg2.11",
"edition": "Electronic ed.",
"language": "ita",
"libraryCatalog": "Library Catalog (Visual Library 2021)",
"place": "Firenze",
"publisher": "Le Monnier",
"url": "https://menadoc.bibliothek.uni-halle.de/ssg/content/titleinfo/293863",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Islam"
},
{
"tag": "Sizilien"
}
],
"notes": [
{
"note": "statement of responsibility: scritta da Michele Amari"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://menadoc.bibliothek.uni-halle.de/search/quick?query=test",
"items": "multiple"
},
{
"type": "web",
"url": "https://menadoc.bibliothek.uni-halle.de/search?operation=searchRetrieve&query=%28cql.anywhere%3Dtesting+and+dc.title%3Dtest%29+and+vl.domain%3D%28menadoc%29+sortBy+relevance%2Fasc&index1=cql.anywhere&term1=testing&bool2=and&index2=dc.title&term2=test&bool3=and&index3=bib.personalName&term3=&bool4=and&index4=vl.printer-publisher&term4=&bool5=and&index5=bib.originPlace&term5=&bool6=and&index6=dc.date&term6=&bool7=and&index7=dc.subject&term7=&bool8=and&index8=dc.identifier&term8=&vlFulltext=&searchDomain=menadoc&startRecord=1&vlsearch_sortBy=relevance&maximumRecords=10&vlsearch_sortOrder=asc&truncate=",
"items": "multiple"
}
]
/** END TEST CASES **/
100Sebastian Karcher^https?://adb\.anu\.edu\.au/biograph(y|ies)//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2012-2021 Sebastian Karcher and Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/biography/')) {
return "bookSection";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('a.name');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
let item = new Zotero.Item('bookSection');
let main = doc.querySelector('#pageColumnMain');
item.title = text(main, 'h2');
item.abstractNote = text(main, '.biographyContent p');
item.bookTitle = 'Australian Dictionary of Biography';
let noticeMatches = text(main, '.textNotice')
.match(/([^,]+), \(MUP\), ([^,]+)/);
if (noticeMatches) {
item.volume = noticeMatches[1].replace(/^\s*volume/i, '');
item.date = ZU.strToISO(noticeMatches[2]);
}
else {
item.date = ZU.strToISO(text(main, '.textNotice'));
}
item.numberOfVolumes = '18';
item.publisher = 'National Centre of Biography, Australian National University';
item.place = 'Canberra';
item.language = 'en';
item.url = url;
for (let author of main.querySelectorAll('.authorName a')) {
item.creators.push(ZU.cleanAuthor(author.textContent, 'author'));
}
item.attachments.push({
title: 'Snapshot',
document: doc
});
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://adb.anu.edu.au/biographies/search/?scope=all&query=Smith&x=0&y=0&rs=",
"items": "multiple"
},
{
"type": "web",
"url": "https://adb.anu.edu.au/biography/smith-robert-burdett-4613",
"items": [
{
"itemType": "bookSection",
"title": "Smith, Robert Burdett (1837–1895)",
"creators": [
{
"firstName": "Chris",
"lastName": "Cunneen",
"creatorType": "author"
}
],
"date": "1976",
"abstractNote": "Robert Burdett Smith (1837-1895), solicitor and politician, was born on 25 August 1837 in Sydney, baptized Robert Lloyd, twin son of John Lloyd Smith and his wife Mary Ann, née Salmon. John, a native of Northumberland, had been convicted of horse-stealing at Edinburgh on 8 January 1830 and sentenced to be transported for seven years, arriving in Sydney in the York on 7 February 1831. Mary Ann, whom he had married with the governor's permission on 2 February 1835, had come free to the colony in the Princess Victoria on 4 February 1834. With his brother-in-law Thomas Armitage Salmon and later on his own, John traded as a carcass butcher in 1838-43; but on 11 April, bankrupt, he was convicted in Port Phillip of forgery and sentenced to transportation for the term of his natural life.",
"bookTitle": "Australian Dictionary of Biography",
"language": "en",
"libraryCatalog": "Australian Dictionary of Biography",
"numberOfVolumes": "18",
"place": "Canberra",
"publisher": "National Centre of Biography, Australian National University",
"url": "https://adb.anu.edu.au/biography/smith-robert-burdett-4613",
"volume": "6",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://adb.anu.edu.au/biography/bjelkepetersen-hans-christian-5247/text8839",
"items": [
{
"itemType": "bookSection",
"title": "Bjelke-Petersen, Hans Christian (1872–1964)",
"creators": [
{
"firstName": "Chris",
"lastName": "Cunneen",
"creatorType": "author"
},
{
"firstName": "E. A.",
"lastName": "McLeod",
"creatorType": "author"
}
],
"date": "1979",
"abstractNote": "Hans Christian Bjelke-Petersen (1872-1964), physical culture teacher, was born on 14 April 1872 in Copenhagen, Denmark, son of Georg Peter Bjelke-Petersen, gardener, later master-builder, and his wife Caroline Vilhelmine, née Hansen. His sister was Marie Caroline Bjelke-Petersen. At first educated by his father at home, acquiring a thorough grounding in gymnastics, swimming and the Bible, he later attended schools at Dresden, Germany, and at Copenhagen, graduating from Copenhagen Teachers' College in 1890. The family then went to London and in October 1891 arrived in Tasmania in the Doric.",
"bookTitle": "Australian Dictionary of Biography",
"language": "en",
"libraryCatalog": "Australian Dictionary of Biography",
"numberOfVolumes": "18",
"place": "Canberra",
"publisher": "National Centre of Biography, Australian National University",
"url": "https://adb.anu.edu.au/biography/bjelkepetersen-hans-christian-5247/text8839",
"volume": "7",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Sonali Gupta and Abe Jellinek^https?://www\.theglobeandmail\.com//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2017-2021 Sonali Gupta and Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes("/search/") && getSearchResults(doc, true)) {
return "multiple";
}
else if (ZU.xpathText(doc, '//article')) {
return "newspaperArticle";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.c-search-results-news a');
for (let row of rows) {
var href = row.href;
var title = ZU.trimInternal(text(row, '.c-card__hed-text'));
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) {
return;
}
ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
item.place = ZU.capitalizeTitle(text(doc, '.placeline'), true);
if (!item.creators.length) {
for (let authorLink of doc.querySelectorAll('a.byline')) {
item.creators.push(ZU.cleanAuthor(authorLink.textContent, 'author'));
}
}
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.itemType = "newspaperArticle";
// TODO map additional meta tags here, or delete completely
trans.addCustomFields({
'twitter:description': 'abstractNote'
});
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.theglobeandmail.com/news/toronto/doug-ford-says-hes-not-yet-sure-about-his-political-future/article21428180/",
"items": [
{
"itemType": "newspaperArticle",
"title": "Doug Ford to decide provincial Tory leadership run in 'a couple weeks'",
"creators": [
{
"firstName": "Ann",
"lastName": "Hui",
"creatorType": "author"
}
],
"date": "2014-11-03T16:16:12-0500",
"abstractNote": "He says he will decide soon about whether to run for Ontario Tory leadership and does not rule out another attempt at the Toronto mayoralty",
"language": "en-CA",
"libraryCatalog": "www.theglobeandmail.com",
"publicationTitle": "The Globe and Mail",
"url": "https://www.theglobeandmail.com/news/toronto/doug-ford-says-hes-not-yet-sure-about-his-political-future/article21428180/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Christine Elliott"
},
{
"tag": "Doug Ford"
},
{
"tag": "Jim Flaherty"
},
{
"tag": "John Tory"
},
{
"tag": "Ontario Progressive Conservative"
},
{
"tag": "Rob Ford"
},
{
"tag": "leadership"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.theglobeandmail.com/search/?q=nuclear",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.theglobeandmail.com/politics/article-liberals-filibuster-opposition-call-for-inquiry-into-parliamentary/",
"items": [
{
"itemType": "newspaperArticle",
"title": "Liberals filibuster opposition call for inquiry into parliamentary funds paid to Trudeau’s close friend",
"creators": [
{
"firstName": "Robert",
"lastName": "Fife",
"creatorType": "author"
},
{
"firstName": "Steven",
"lastName": "Chase",
"creatorType": "author"
}
],
"date": "2021-07-12T19:52:05-0400",
"abstractNote": "Opposition wanted Tom Pitfield, the founder of Data Sciences, to appear before the ethics committee, but Liberal MPs prevented the motion from coming to a vote by talking out the clock",
"language": "en-CA",
"libraryCatalog": "www.theglobeandmail.com",
"place": "Ottawa",
"publicationTitle": "The Globe and Mail",
"url": "https://www.theglobeandmail.com/politics/article-liberals-filibuster-opposition-call-for-inquiry-into-parliamentary/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Liberal"
},
{
"tag": "Michael Barrett"
},
{
"tag": "NDP"
},
{
"tag": "committee"
},
{
"tag": "company"
},
{
"tag": "data"
},
{
"tag": "house"
},
{
"tag": "liberal"
},
{
"tag": "liberals"
},
{
"tag": "mps"
},
{
"tag": "party"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Abe Jellinek^https://fatcat\.wiki//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/release/') && !url.includes('/search') && doc.querySelector('meta[name="citation_title"]')) {
return guessType(doc);
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function guessType(doc) {
// Fatcat types are based on CSL types, with some extensions
// https://guide.fatcat.wiki/entity_release.html#release_type-vocabulary
let dcType = attr(doc, 'meta[name="DC.type"]', 'content');
switch (dcType) {
case 'article-magazine':
return 'magazineArticle';
case 'book':
return 'book';
case 'chapter':
return 'bookSection';
case 'entry':
return 'webpage';
case 'entry-encyclopedia':
return 'encyclopediaArticle';
case 'manuscript':
return 'manuscript';
case 'paper-conference':
return 'conferencePaper';
case 'patent':
return 'patent';
case 'report':
return 'report';
case 'dataset':
return 'document';
case 'letter':
return 'letter';
case 'post':
case 'post-weblog':
return 'blogPost';
case 'software':
return 'computerProgram';
case 'speech':
return 'presentation';
case 'thesis':
return 'thesis';
default:
return 'journalArticle';
}
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('h4 a[href*="/release/"], td > b > a[href*="/release/"]');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setHandler('itemDone', function (obj, item) {
item.itemType = guessType(doc); // needs to be told twice sometimes
// attachment URLs go to the archive.org frame page, not directly to
// the PDF
for (let attachment of item.attachments) {
if (attachment.url
&& attachment.url.startsWith('https://web.archive.org/web/')) {
// lots of specificity needed here because the original page URL
// could be anything
attachment.url = attachment.url
.replace(/^(https:\/\/web\.archive\.org\/web\/\d+)/, '$1if_');
}
}
item.url = attr(doc, 'a.huge.black.button', 'href');
for (let field in item) {
if (item.hasOwnProperty(field) && item[field] === 'None') {
delete item[field];
}
}
let id = text(doc, 'h1.header code');
item.extra = (item.extra ? item.extra + '\n' : '') + 'Fatcat ID: ' + id + '\n';
if (item.itemType == 'blogPost') {
delete item.websiteType; // "post"
item.blogTitle = item.publisher;
}
if (item.publicationTitle && item.seriesTitle
&& item.publicationTitle == item.seriesTitle
&& ZU.fieldIsValidForType('publicationTitle', item.itemType)) {
delete item.seriesTitle;
}
// we could handle special cases for every possible item type,
// but in practice it's about 90% papers, 5% blog posts, 5% everything else
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.itemType = guessType(doc);
trans.addCustomFields({
'citation_journal_title': 'seriesTitle',
'citation_first_page': 'pages',
'citation_volume': 'reportNumber'
});
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://fatcat.wiki/release/ogpp3g4uvfhyvhatlefj5wn2ce",
"items": [
{
"itemType": "conferencePaper",
"title": "Implementation of Interlisp on the VAX",
"creators": [
{
"firstName": "Raymond L.",
"lastName": "Bates",
"creatorType": "author"
},
{
"firstName": "David",
"lastName": "Dyer",
"creatorType": "author"
},
{
"firstName": "Johannes A. G. M.",
"lastName": "Koomen",
"creatorType": "author"
}
],
"date": "1982",
"DOI": "10.1145/800068.802138",
"extra": "Fatcat ID: release_ogpp3g4uvfhyvhatlefj5wn2ce",
"language": "en",
"libraryCatalog": "fatcat.wiki",
"publisher": "ACM Press",
"url": "https://web.archive.org/web/20170927043847/http://www.dtic.mil/get-tr-doc/pdf?AD=ADA141707",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://fatcat.wiki/release/dzi6bordrnafpnppds7lbv4po4",
"items": [
{
"itemType": "report",
"title": "Moving the Undeployed TCP Extensions RFC 1072, RFC 1106, RFC 1110, RFC 1145, RFC 1146, RFC 1379, RFC 1644, and RFC 1693 to Historic Status",
"creators": [
{
"firstName": "L.",
"lastName": "Eggert",
"creatorType": "author"
}
],
"date": "2011",
"extra": "Fatcat ID: release_dzi6bordrnafpnppds7lbv4po4",
"language": "en",
"libraryCatalog": "fatcat.wiki",
"pages": "1-4",
"reportNumber": "6247",
"reportType": "report",
"seriesTitle": "Request for Comments",
"url": "https://web.archive.org/web/201807201018/https://www.rfc-editor.org/rfc/pdfrfc/rfc6247.txt.pdf",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://fatcat.wiki/release/3mssw2qnlnblbk7oqyv2dafgey",
"items": [
{
"itemType": "document",
"title": "Jakobshavn Glacier Bed Elevation",
"creators": [
{
"firstName": "Lu",
"lastName": "An",
"creatorType": "author"
}
],
"date": "2018",
"abstractNote": "<p>Jakobshavn Isbræ, West Greenland, which holds a 0.6-m sea level volume equivalent, has been speeding up and retreating since the late 1990s. Interpretation of its retreat has been hindered by difficulties in measuring its ice thickness with airborne radar depth sounders. Here, we employ high-resolution, helicopter-borne gravity data from 2012 to reconstruct its bed elevation within 50 km of the ocean margin using a three-dimensional inversion constrained by fjord bathymetry data offshore and a mass conservation algorithm inland. We find the glacier trough to be asymmetric and several 100 m deeper than estimated previously in the lower part. From 1996-2016, the grounding line migrated at 0.6 km/yr from 700 m to 1,100 m depth. Upstream, the bed drops to 1,600 m over 10 km then slowly climbs to 1,200 m depth in 40 km. Jakobshavn Isbræ will continue to retreat along a retrograde slope for decades to come.\n\nAn L., E. Rignot, S.H.P. Elieff, M. Morlighem, R. Millan, J. Mouginot, D.M. Holland, D. Holland, and J. Paden (2017), Bed elevation of Jakobshavn Isbræ, West Greenland, from high-resolution airborne gravity and other data, Geophys. Res. Lett., 44, doi:10.1002/2017GL073245.\n\n</p>",
"extra": "Type: dataset\nDOI: 10.7280/d1j37z\nFatcat ID: release_3mssw2qnlnblbk7oqyv2dafgey",
"language": "en",
"libraryCatalog": "fatcat.wiki",
"publisher": "UC Irvine",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://fatcat.wiki/release/227sccesr5g7vfhq6hebiquxii",
"items": [
{
"itemType": "blogPost",
"title": "Of Roots and Scrolls",
"creators": [
{
"firstName": "Clare",
"lastName": "Griffin",
"creatorType": "author"
}
],
"date": "2017-12-11",
"blogTitle": "Open Book Publishers",
"extra": "DOI: 10.11647/obp.0173.0072\nFatcat ID: release_227sccesr5g7vfhq6hebiquxii",
"language": "en",
"url": "https://web.archive.org/web/20190822203945/http://blogs.openbookpublishers.com/of-roots-and-scrolls/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://fatcat.wiki/creator/iimvc523xbhqlav6j3sbthuehu",
"items": "multiple"
},
{
"type": "web",
"url": "https://fatcat.wiki/release/rtwpnokyrnc25gvs3rfjc4s2ua",
"items": [
{
"itemType": "bookSection",
"title": "Operational Characterisation of Neighbourhood Heat Energy After Large-Scale Building Retrofit",
"creators": [
{
"firstName": "Paul",
"lastName": "Beagon",
"creatorType": "author"
},
{
"firstName": "Fiona",
"lastName": "Boland",
"creatorType": "author"
},
{
"firstName": "James",
"lastName": "O'Donnell",
"creatorType": "author"
}
],
"date": "2018-12-12",
"bookTitle": "Springer Proceedings in Energy",
"extra": "Fatcat ID: release_rtwpnokyrnc25gvs3rfjc4s2ua",
"language": "en",
"libraryCatalog": "fatcat.wiki",
"pages": "217-229",
"url": "https://web.archive.org/web/20190427203216/https://researchrepository.ucd.ie/bitstream/10197/9300/1/Cold_Climate_HVAC_2018_087_final_v13.pdf",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://fatcat.wiki/release/search?q=Zotero&generic=1",
"items": "multiple"
},
{
"type": "web",
"url": "https://fatcat.wiki/release/q5bn52bkmvgfnfpyj3fa6wfnzy",
"items": [
{
"itemType": "journalArticle",
"title": "The Maxc Systems",
"creators": [
{
"firstName": "E. R.",
"lastName": "Fiala",
"creatorType": "author"
}
],
"date": "1978",
"DOI": "10.1109/c-m.1978.218184",
"ISSN": "0018-9162",
"extra": "Fatcat ID: release_q5bn52bkmvgfnfpyj3fa6wfnzy",
"language": "en",
"libraryCatalog": "fatcat.wiki",
"pages": "57-67",
"publicationTitle": "Computer",
"url": "https://web.archive.org/web/2017/https://www.computer.org/web/csdl/index/-/csdl/mags/co/1978/05/01646959.pdf",
"volume": "11",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://premium\.oxforddictionaries\.com/(translate|definition)//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, _url) {
if (getSearchResults(doc, true)) {
return "multiple";
}
else if (doc.querySelector('.pageTitle')) {
return "dictionaryEntry";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
// grab the first "senses" list, since it's repeated under each heading
var senses = doc.querySelector('.senses');
if (!senses) return false;
var rows = senses.querySelectorAll('li > a');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) scrape(items, doc);
});
}
else {
let items = {};
items[url] = text(doc, '.pageTitle');
scrape(items, doc);
}
}
function scrape(items, doc) {
for (let [url, title] of Object.entries(items)) {
let item = new Zotero.Item('dictionaryEntry');
item.title = title;
item.dictionaryTitle = 'Oxford Dictionaries';
let currentLang = text(doc, '.dictBlock.selected');
if (!currentLang) {
currentLang = text(doc, '.breadcrumb li:nth-child(2)');
}
if (currentLang) {
item.dictionaryTitle += ` (${currentLang})`;
}
item.publisher = 'Oxford University Press';
item.date = attr(doc, 'meta[itemprop="copyrightYear"]', 'content');
item.language = attr(doc, 'meta[itemprop="inLanguage"]', 'content');
item.url = url;
item.attachments.push({
title: 'Snapshot',
document: doc
});
item.complete();
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://premium.oxforddictionaries.com/translate/arabic-english/%D8%A7%D9%84%D9%81?q=%D8%A3%D9%84%D9%81",
"items": "multiple"
},
{
"type": "web",
"url": "https://premium.oxforddictionaries.com/translate/arabic-english/%D8%A7%D9%88%D9%84%D9%88%D9%8A%D8%A9?q=%D8%A3%D9%88%D9%84%D9%88%D9%8A%D8%A9",
"items": [
{
"itemType": "dictionaryEntry",
"title": "أَوْلَويّة",
"creators": [],
"date": "2021",
"dictionaryTitle": "Oxford Dictionaries (Arabic to English)",
"language": "en",
"libraryCatalog": "Oxford Dictionaries Premium",
"publisher": "Oxford University Press",
"url": "https://premium.oxforddictionaries.com/translate/arabic-english/%D8%A7%D9%88%D9%84%D9%88%D9%8A%D8%A9?q=%D8%A3%D9%88%D9%84%D9%88%D9%8A%D8%A9",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://premium.oxforddictionaries.com/definition/spanish/anden?q=and%C3%A9n",
"items": [
{
"itemType": "dictionaryEntry",
"title": "andén",
"creators": [],
"date": "2021",
"dictionaryTitle": "Oxford Dictionaries (Spanish)",
"language": "es",
"libraryCatalog": "Oxford Dictionaries Premium",
"publisher": "Oxford University Press",
"url": "https://premium.oxforddictionaries.com/definition/spanish/anden?q=and%C3%A9n",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://premium.oxforddictionaries.com/translate/russian-english/%D1%82%D0%B5%D0%BF%D0%B5%D1%80%D1%8C",
"items": [
{
"itemType": "dictionaryEntry",
"title": "теперь",
"creators": [],
"date": "2021",
"dictionaryTitle": "Oxford Dictionaries (Russian to English)",
"language": "en",
"libraryCatalog": "Oxford Dictionaries Premium",
"publisher": "Oxford University Press",
"url": "https://premium.oxforddictionaries.com/translate/russian-english/%D1%82%D0%B5%D0%BF%D0%B5%D1%80%D1%8C",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://www\.wikiwand\.com/[^/?]+/[^/?]+/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, _url) {
if (doc.querySelector('.wikipedia_list a')) {
return "encyclopediaArticle";
}
return false;
}
function doWeb(doc, _url) {
let wikipediaURL = attr(doc, '.wikipedia_list a', 'href');
ZU.processDocuments(wikipediaURL, scrape);
}
function scrape(doc, url) {
let translator = Zotero.loadTranslator('web');
// Wikipedia
translator.setTranslator('e5dc9733-f8fc-4c00-8c40-e53e0bb14664');
translator.setDocument(doc);
translator.getTranslatorObject(function (trans) {
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.wikiwand.com/en/Albert_Einstein",
"items": [
{
"itemType": "encyclopediaArticle",
"title": "Albert Einstein",
"creators": [],
"date": "2021-07-10T10:34:58Z",
"abstractNote": "Albert Einstein ( EYEN-styne; German: [ˈalbɛʁt ˈʔaɪnʃtaɪn] (listen); 14 March 1879 – 18 April 1955) was a German-born theoretical physicist, widely acknowledged to be one of the greatest physicists of all time. Einstein is known for developing the theory of relativity, but he also made important contributions to the development of the theory of quantum mechanics. Relativity and quantum mechanics are together the two pillars of modern physics. His mass–energy equivalence formula E = mc2, which arises from relativity theory, has been dubbed \"the world's most famous equation\". His work is also known for its influence on the philosophy of science. He received the 1921 Nobel Prize in Physics \"for his services to theoretical physics, and especially for his discovery of the law of the photoelectric effect\", a pivotal step in the development of quantum theory. His intellectual achievements and originality resulted in \"Einstein\" becoming synonymous with \"genius\".In 1905, a year sometimes described as his annus mirabilis ('miracle year'), Einstein published four groundbreaking papers. These outlined the theory of the photoelectric effect, explained Brownian motion, introduced special relativity, and demonstrated mass-energy equivalence. Einstein thought that the laws of classical mechanics could no longer be reconciled with those of the electromagnetic field, which led him to develop his special theory of relativity. He then extended the theory to gravitational fields; he published a paper on general relativity in 1916, introducing his theory of gravitation. In 1917, he applied the general theory of relativity to model the structure of the universe. He continued to deal with problems of statistical mechanics and quantum theory, which led to his explanations of particle theory and the motion of molecules. He also investigated the thermal properties of light and the quantum theory of radiation, which laid the foundation of the photon theory of light. However, for much of the later part of his career, he worked on two ultimately unsuccessful endeavors. First, despite his great contributions to quantum mechanics, he opposed what it evolved into, objecting that nature \"does not play dice\". Second, he attempted to devise a unified field theory by generalizing his geometric theory of gravitation to include electromagnetism. As a result, he became increasingly isolated from the mainstream of modern physics.\nEinstein was born in the German Empire, but moved to Switzerland in 1895, forsaking his German citizenship (as a subject of the Kingdom of Württemberg) the following year. In 1897, at the age of 17, he enrolled in the mathematics and physics teaching diploma program at the Swiss Federal polytechnic school in Zürich, graduating in 1900. In 1901 he acquired Swiss citizenship, which he kept for the rest of his life, and in 1903 he secured a permanent position at the Swiss Patent Office in Bern. In 1905, he was awarded a PhD by the University of Zurich. In 1914, Einstein moved to Berlin in order to join the Prussian Academy of Sciences and the Humboldt University of Berlin. In 1917, Einstein became director of the Kaiser Wilhelm Institute for Physics; he also became a German citizen again – Prussian this time. \nIn 1933, while Einstein was visiting the United States, Adolf Hitler came to power. Einstein did not return to Germany because he objected to the policies of the newly elected Nazi-led government. He settled in the United States and became an American citizen in 1940. On the eve of World War II, he endorsed a letter to President Franklin D. Roosevelt alerting him to the potential German nuclear weapons program and recommending that the US begin similar research. Einstein supported the Allies, but generally denounced the idea of nuclear weapons.",
"encyclopediaTitle": "Wikipedia",
"extra": "Page Version ID: 1032903854",
"language": "en",
"libraryCatalog": "Wikiwand",
"rights": "Creative Commons Attribution-ShareAlike License",
"url": "https://en.wikipedia.org/w/index.php?title=Albert_Einstein&oldid=1032903854",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html",
"snapshot": true
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.wikiwand.com/bat-smg/Metu_laik%C4%81",
"items": [
{
"itemType": "encyclopediaArticle",
"title": "Metu laikā",
"creators": [],
"date": "2018-06-16T17:50:46Z",
"abstractNote": "Metū laikā - planetas judiejims aplink Saulė, ka dėl ašėis pasvėrėma nevėinuoda saulės spinduliū gauna eš pradiuos daugiau vėins pusrutulis, vo paskiau - kėts. Labiau šėldomame pusrutulie īr vasara, mažiau šėldomamė - žėima. Pri pusiaujė Saulė apšvėita vėsā laika vėinuoda i čė metū laikū nier. Trumpiausi metā īr Merkurijou - 88 Žemės paras, vo Plutuona metā trunka 248 Žemės metus. \n\nTas taps vaizdielis skirtingās metu laikās:",
"encyclopediaTitle": "Wikipedia",
"extra": "Page Version ID: 344358",
"language": "sgs",
"libraryCatalog": "Wikiwand",
"rights": "Creative Commons Attribution-ShareAlike License",
"url": "https://bat-smg.wikipedia.org/w/index.php?title=Metu_laik%C4%81&oldid=344358",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html",
"snapshot": true
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
{"dataMode":"xml\/dom"}50Abe Jellinekxml/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectImport() {
var line;
var i = 0;
while ((line = Zotero.read()) !== false) {
if (line !== "") {
if (line.includes("<mets")) {
return true;
}
else if (i++ > 7) {
return false;
}
}
}
return false;
}
function doImport() {
let xml = Zotero.getXML();
for (let mets of xml.querySelectorAll('mets')) {
let attachments = createAttachments(mets);
for (let dmd of mets.querySelectorAll('dmdSec')) {
let mdWrap = dmd.querySelector('mdWrap');
if (!mdWrap) {
Z.debug('No metadata found in METS item. External metadata is not supported.');
}
let mdType = mdWrap.getAttribute('MDTYPE');
Z.debug(`Found metadata of type '${mdType}'`);
let data = extractData(mdWrap);
processData(mdType, data, attachments);
}
}
}
function createAttachments(mets) {
let attachments = [];
for (let file of mets.querySelectorAll('fileSec file')) {
if (attachments.length >= 5) {
Z.debug('Too many attachments. Something is probably wrong.');
attachments = [];
break;
}
let mimeType = file.getAttribute('MIMETYPE');
let locator = file.querySelector('FLocat[LOCTYPE="URL"]');
let url = locator && locator.getAttribute('xlink:href');
if (mimeType && url) {
let title = 'Attachment';
if (mimeType == 'application/pdf') {
title = 'PDF'; // full text? often it isn't text!
}
else if (mimeType.startsWith('audio/')) {
title = 'Audio';
}
else if (mimeType.startsWith('video/')) {
title = 'Video';
}
else if (mimeType.startsWith('image/')) {
title = 'Image';
}
attachments.push({
title,
mimeType,
url
});
}
}
return attachments;
}
function extractData(mdWrap) {
for (let child of mdWrap.children) {
if (child.tagName.endsWith('xmlData')) {
Z.debug('Metadata is XML');
return child.innerHTML;
}
else if (child.tagName.endsWith('binData')) {
Z.debug('Metadata is base64 encoded');
return atob(child.innerHTML);
}
}
Z.debug('Metadata is in XML (unwrapped)');
return mdWrap.innerHTML;
}
function processData(mdType, data, attachments) {
switch (mdType) {
case 'MARC':
// charmingly, we don't get to know what KIND of MARC we're
// getting. we could go off of whether it's encoded as
// binary, but that isn't really valid according to the
// spec. so we'll just try MARCXML, then binary MARC, then
// MAB2 for good measure (it's MARC-ish!).
callImport(
data,
[
'edd87d07-9194-42f8-b2ad-997c4c7deefd', // MARCXML
'a6ee60df-1ddc-4aae-bb25-45e0537be973', // MARC
'91acf493-0de7-4473-8b62-89fd141e6c74', // MAB2
],
attachments
);
break;
case 'MODS':
callImport(
data,
'0e2235e7-babf-413c-9acf-f27cce5f059c', // MODS
attachments,
item => item.callNumber = ''
);
break;
case 'OTHER':
// this usually indicates some kind of internal metadata that isn't
// essential to parse.
Z.debug('Skipping \'OTHER\' metadata');
break;
case 'EAD':
// todo: an EAD translator. does anyone use EAD?
// https://www.loc.gov/ead/
default:
throw new Error(`Unsupported metadata type: ${mdType}`);
}
}
function callImport(data, translator, attachments, callback) {
let trans = Zotero.loadTranslator('import');
trans.setTranslator(translator);
trans.setHandler('itemDone', function (_, item) {
let numFieldsSet = 0;
for (let field of Object.keys(item)) {
if (field == 'itemType') continue;
if (item[field] && typeof item[field] == 'string') {
numFieldsSet++;
}
}
if (numFieldsSet <= 1) {
Z.debug(`Skipping item with < 2 fields set: '${item.title}'`);
return;
}
if (attachments) {
item.attachments.push(...attachments);
}
if (item.language == 'zxx') {
delete item.language;
}
if (callback) callback(item);
item.complete();
});
trans.setString(data);
trans.translate();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "import",
"input": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><mets:mets xmlns:mets=\"http://www.loc.gov/METS/\" xmlns:mods=\"http://www.loc.gov/mods/v3\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" LABEL=\"Antietam, Maryland. Allan Pinkerton, President Lincoln, and Major General John A. McClernand: Another View\" OBJID=\"https://www.wdl.org/1\" xml:lang=\"en\" xml:id=\"1\" xsi:schemaLocation=\"http://www.loc.gov/METS/ http://www.loc.gov/standards/mets/mets.xsd http://www.loc.gov/mods/v3 http://www.loc.gov/standards/mods/v3/mods-3-6.xsd\" TYPE=\"Prints, Photographs\">\n <mets:metsHdr CREATEDATE=\"2010-05-17T13:04:33+00:00\" LASTMODDATE=\"2017-04-04T18:54:12+00:00\">\n <mets:agent ROLE=\"DISSEMINATOR\">\n <mets:name>World Digital Library</mets:name>\n </mets:agent>\n <mets:agent ROLE=\"CUSTODIAN\">\n <mets:name>Library of Congress</mets:name>\n </mets:agent>\n </mets:metsHdr>\n <mets:dmdSec ID=\"MODS1\">\n <mets:mdWrap MDTYPE=\"MODS\">\n <mets:xmlData>\n <mods:mods version=\"3.6\">\n <mods:typeOfResource>text</mods:typeOfResource>\n <mods:titleInfo>\n <mods:title>Antietam, Maryland. Allan Pinkerton, President Lincoln, and Major General John A. McClernand: Another View</mods:title>\n </mods:titleInfo>\n <mods:abstract>At the outset of the U.S. Civil War, Mathew Brady dispatched a team of photographers to document the conflict. Among them was a Scottish-born immigrant named Alexander Gardner, the photographer who took this photo of Lincoln at Antietam as well as other famous wartime shots. The man to Lincoln's right is Allan Pinkerton, founder of the Pinkerton National Detective Agency, whom Lincoln had as head of a personal security detail during the war. Gardner titled another shot of Pinkerton and his brother William at Antietam “The Secret Service.” Gardner photographed Lincoln on seven separate occasions, the last one on February 5, 1865, only a few weeks before Lincoln’s assassination. In 1866 he published Gardner’s Sketchbook of the War, combining plates and text, commemorating such battles as Fredericksburg, Gettysburg, and Petersburg, but the book was a commercial failure. Photographic historians also have suggested that Gardner staged many of his photos, moving dead bodies and using a regular prop gun to create romanticized pictorial narratives.</mods:abstract>\n <mods:physicalDescription>\n <mods:note>1 negative : glass, wet collodion</mods:note>\n </mods:physicalDescription>\n <mods:language>\n <mods:languageTerm type=\"code\" authority=\"iso639-2b\">zxx</mods:languageTerm>\n </mods:language>\n <mods:name type=\"personal\">\n <mods:namePart>Gardner, Alexander, 1821-1882</mods:namePart>\n <mods:role>\n <mods:roleTerm type=\"text\" authority=\"marcrelator\">Photographer</mods:roleTerm>\n </mods:role>\n </mods:name>\n <mods:originInfo>\n <mods:dateIssued>1862-10-03</mods:dateIssued>\n </mods:originInfo>\n <mods:subject>\n <mods:temporal encoding=\"iso8601\">1862-10-03</mods:temporal>\n </mods:subject>\n <mods:subject>\n <mods:hierarchicalGeographic>\n <mods:region>North America</mods:region>\n <mods:country>United States of America</mods:country>\n <mods:state>Maryland</mods:state>\n <mods:city>Antietam</mods:city>\n </mods:hierarchicalGeographic>\n </mods:subject>\n <mods:subject authority=\"lcsh\">\n <mods:topic>Antietam, Battle of, Maryland, 1862</mods:topic>\n </mods:subject>\n <mods:subject authority=\"lcsh\">\n <mods:topic>Generals</mods:topic>\n </mods:subject>\n <mods:subject authority=\"lcsh\">\n <mods:topic>Lincoln, Abraham, 1809-1865</mods:topic>\n </mods:subject>\n <mods:subject authority=\"lcsh\">\n <mods:topic>McClernand, John A. (John Alexander), 1812-1900</mods:topic>\n </mods:subject>\n <mods:subject authority=\"lcsh\">\n <mods:topic>Military camps</mods:topic>\n </mods:subject>\n <mods:subject authority=\"lcsh\">\n <mods:topic>Pinkerton, Allan, 1819-1884</mods:topic>\n </mods:subject>\n <mods:subject authority=\"lcsh\">\n <mods:topic>Presidents</mods:topic>\n </mods:subject>\n <mods:subject authority=\"lcsh\">\n <mods:topic>Tents</mods:topic>\n </mods:subject>\n <mods:subject authority=\"lcsh\">\n <mods:topic>United States--History--Civil War, 1861-1865</mods:topic>\n </mods:subject>\n <mods:subject authority=\"lcsh\">\n <mods:topic>United States. Army</mods:topic>\n </mods:subject>\n <mods:classification authority=\"ddc\">973</mods:classification>\n <mods:relatedItem type=\"otherVersion\">\n <mods:location>\n <mods:url>http://hdl.loc.gov/loc.pnp/cwpb.04326</mods:url>\n </mods:location>\n </mods:relatedItem>\n <mods:relatedItem type=\"otherVersion\">\n <mods:location>\n <mods:url>http://hdl.loc.gov/loc.wdl/wdl.1</mods:url>\n </mods:location>\n </mods:relatedItem>\n </mods:mods>\n </mets:xmlData>\n </mets:mdWrap>\n </mets:dmdSec>\n <mets:fileSec>\n <mets:fileGrp USE=\"MASTER\">\n <mets:file MIMETYPE=\"image/tiff\" GROUPID=\"G1\" ID=\"F-1-1\" SIZE=\"17196009\">\n <mets:FLocat LOCTYPE=\"URL\" xlink:href=\"master/04326u.tif\"/>\n </mets:file>\n </mets:fileGrp>\n <mets:fileGrp USE=\"SERVICE\">\n <mets:file MIMETYPE=\"application/pdf\" GROUPID=\"0\" ID=\"2468401\" SIZE=\"247363\">\n <mets:FLocat LOCTYPE=\"URL\" xlink:href=\"https://dl.wdl.org/1/service/1.pdf\"/>\n </mets:file>\n </mets:fileGrp>\n </mets:fileSec>\n <mets:structMap TYPE=\"logical\">\n <mets:div>\n <mets:fptr FILEID=\"F-1-1\"/>\n </mets:div>\n </mets:structMap>\n</mets:mets>\n",
"items": [
{
"itemType": "document",
"title": "Antietam, Maryland. Allan Pinkerton, President Lincoln, and Major General John A. McClernand: Another View",
"creators": [
{
"firstName": "Alexander",
"lastName": "Gardner",
"creatorType": "author"
}
],
"date": "1862-10-03",
"abstractNote": "At the outset of the U.S. Civil War, Mathew Brady dispatched a team of photographers to document the conflict. Among them was a Scottish-born immigrant named Alexander Gardner, the photographer who took this photo of Lincoln at Antietam as well as other famous wartime shots. The man to Lincoln's right is Allan Pinkerton, founder of the Pinkerton National Detective Agency, whom Lincoln had as head of a personal security detail during the war. Gardner titled another shot of Pinkerton and his brother William at Antietam “The Secret Service.” Gardner photographed Lincoln on seven separate occasions, the last one on February 5, 1865, only a few weeks before Lincoln’s assassination. In 1866 he published Gardner’s Sketchbook of the War, combining plates and text, commemorating such battles as Fredericksburg, Gettysburg, and Petersburg, but the book was a commercial failure. Photographic historians also have suggested that Gardner staged many of his photos, moving dead bodies and using a regular prop gun to create romanticized pictorial narratives.",
"attachments": [
{
"title": "Image",
"mimeType": "image/tiff"
},
{
"title": "PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Antietam, Battle of, Maryland, 1862"
},
{
"tag": "Generals"
},
{
"tag": "Lincoln, Abraham, 1809-1865"
},
{
"tag": "McClernand, John A. (John Alexander), 1812-1900"
},
{
"tag": "Military camps"
},
{
"tag": "Pinkerton, Allan, 1819-1884"
},
{
"tag": "Presidents"
},
{
"tag": "Tents"
},
{
"tag": "United States--History--Civil War, 1861-1865"
},
{
"tag": "United States. Army"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<mets ID=\"ID1\" OBJID=\"1262473\" LABEL=\"El cruzado : semanario tradicionalista - Portada\" PROFILE=\"http://www.loc.gov/standards/mets/profiles/00000044.xml\" xmlns=\"http://www.loc.gov/METS/\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:marc=\"http://www.loc.gov/MARC21/slim\" xmlns:mix=\"http://www.loc.gov/mix/v20\" xsi:schemaLocation=\"http://www.loc.gov/METS/ http://www.loc.gov/standards/mets/mets.xsd http://www.loc.gov/MARC21/slim http://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd http://www.loc.gov/mix/v20 http://www.loc.gov/standards/mix/mix20/mix20.xsd\">\n <metsHdr CREATEDATE=\"2021-07-10T02:07:44\"/>\n <dmdSec ID=\"DM1\">\n <mdWrap MDTYPE=\"MARC\">\n <xmlData> <collection xmlns=\"http://www.loc.gov/MARC21/slim\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.loc.gov/MARC21/slim http://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd\">\n <record>\n <leader>00000cas 82200000 4500</leader>\n <controlfield tag=\"001\">BDG20080002497</controlfield>\n <controlfield tag=\"003\">BDG</controlfield>\n <controlfield tag=\"005\">20210421075144.0</controlfield>\n <controlfield tag=\"008\">100609d19121917espwr|n |0|||b|spa d</controlfield>\n <datafield tag=\"040\" ind1=\" \" ind2=\" \">\n <subfield code=\"a\">BDG</subfield>\n <subfield code=\"b\">glg</subfield>\n <subfield code=\"c\">BDG</subfield>\n <subfield code=\"e\">rda</subfield>\n <subfield code=\"d\">BDG</subfield>\n </datafield>\n <datafield tag=\"245\" ind1=\"0\" ind2=\"3\">\n <subfield code=\"a\">El cruzado</subfield>\n <subfield code=\"b\">: semanario tradicionalista</subfield>\n </datafield>\n <datafield tag=\"264\" ind1=\" \" ind2=\"1\">\n <subfield code=\"a\">Mondoñedo</subfield>\n <subfield code=\"b\">[editor non identificado]</subfield>\n <subfield code=\"c\">1912-1917</subfield>\n </datafield>\n <datafield tag=\"264\" ind1=\" \" ind2=\"3\">\n <subfield code=\"a\">Mondoñedo</subfield>\n <subfield code=\"b\">Tip. Mancebo</subfield>\n <subfield code=\"c\">1912-1917</subfield>\n </datafield>\n <datafield tag=\"300\" ind1=\" \" ind2=\" \">\n <subfield code=\"a\">v.</subfield>\n <subfield code=\"c\">47 cm</subfield>\n </datafield>\n <datafield tag=\"310\" ind1=\" \" ind2=\" \">\n <subfield code=\"a\">Semanal </subfield>\n </datafield>\n <datafield tag=\"500\" ind1=\" \" ind2=\" \">\n <subfield code=\"a\">Director: José Polo Folgueira</subfield>\n </datafield>\n <datafield tag=\"500\" ind1=\" \" ind2=\" \">\n <subfield code=\"a\">Propietario: Enrique Costas Márquez</subfield>\n </datafield>\n <datafield tag=\"500\" ind1=\" \" ind2=\" \">\n <subfield code=\"a\">Redactor: Carolino Costas Márquez</subfield>\n </datafield>\n <datafield tag=\"500\" ind1=\" \" ind2=\" \">\n <subfield code=\"a\">Colaboradores: Antonio Noriega Varela e Manuel Amor Meilán.</subfield>\n </datafield>\n <datafield tag=\"590\" ind1=\"0\" ind2=\" \">\n <subfield code=\"a\">n. 13 (jul. 1912)</subfield>\n </datafield>\n <datafield tag=\"650\" ind1=\" \" ind2=\"4\">\n <subfield code=\"0\">BDGA20090004351</subfield>\n <subfield code=\"a\">Prensa</subfield>\n <subfield code=\"z\">Galicia</subfield>\n </datafield>\n <datafield tag=\"700\" ind1=\"1\" ind2=\" \">\n <subfield code=\"0\">BDGA20180473692</subfield>\n <subfield code=\"a\">Costas Márquez, Enrique</subfield>\n </datafield>\n <datafield tag=\"700\" ind1=\"2\" ind2=\"0\">\n <subfield code=\"0\">BDGA20181256447</subfield>\n <subfield code=\"a\">Costas Márquez, Carolino</subfield>\n </datafield>\n <datafield tag=\"700\" ind1=\"1\" ind2=\" \">\n <subfield code=\"0\">BDGA20120008724</subfield>\n <subfield code=\"a\">Noriega Varela, Antonio</subfield>\n <subfield code=\"d\">1869-1947</subfield>\n </datafield>\n <datafield tag=\"700\" ind1=\"1\" ind2=\"0\">\n <subfield code=\"0\">BDGA20130018034</subfield>\n <subfield code=\"a\">Amor Meilán, Manuel</subfield>\n <subfield code=\"d\">1867-1933</subfield>\n </datafield>\n <datafield tag=\"710\" ind1=\" \" ind2=\" \">\n <subfield code=\"0\">BDGA20180698774</subfield>\n <subfield code=\"a\">Tipografía Mancebo</subfield>\n </datafield>\n <datafield tag=\"752\" ind1=\" \" ind2=\" \">\n <subfield code=\"0\">BDGA20150000309</subfield>\n <subfield code=\"a\">España</subfield>\n <subfield code=\"b\">Galicia</subfield>\n <subfield code=\"c\">Lugo</subfield>\n <subfield code=\"d\">Mondoñedo</subfield>\n </datafield>\n <datafield tag=\"853\" ind1=\"2\" ind2=\"1\">\n <subfield code=\"i\">(Día)</subfield>\n <subfield code=\"j\">(Mes)</subfield>\n <subfield code=\"k\">(Año)</subfield>\n <subfield code=\"w\">w</subfield>\n </datafield>\n <datafield tag=\"856\" ind1=\" \" ind2=\" \">\n <subfield code=\"q\">image/jpeg</subfield>\n <subfield code=\"w\">1262473</subfield>\n <subfield code=\"y\">Portada</subfield>\n </datafield>\n <datafield tag=\"866\" ind1=\" \" ind2=\" \">\n <subfield code=\"a\">13:jul.1912 - 14:sept.1912, 25:oct.1912 - 25:oct.1912, 2:nov.1912 - 7:dic.1912</subfield>\n </datafield>\n </record>\n</collection></xmlData>\n </mdWrap>\n </dmdSec>\n <dmdSec ID=\"DGBGOM\">\n <mdWrap MDTYPE=\"OTHER\" OTHERMDTYPE=\"DGBGOM\">\n <xmlData><grupoObjetoMultimedia mimeType=\"image/jpeg\" presentacionDef=\"portada\" tieneOCR=\"false\" nombre=\"El cruzado : semanario tradicionalista\" descripcion=\"Portada\"><imagenFavorita>FID0</imagenFavorita></grupoObjetoMultimedia></xmlData>\n </mdWrap>\n </dmdSec>\n <fileSec>\n <fileGrp ID=\"FG1\">\n <file ID=\"FID0\" MIMETYPE=\"image/jpeg\" SEQ=\"1\" OWNERID=\"12559894\" DMDID=\"DM1\">\n <FLocat LOCTYPE=\"URL\" xlink:type=\"simple\" xlink:href=\"http://biblioteca.galiciana.gal/es/catalogo_imagenes/imagen_id.do?idImagen=12559894\"/>\n </file>\n </fileGrp>\n </fileSec>\n <structMap ID=\"SM1\" TYPE=\"PHYSICAL\">\n <div ORDER=\"1\" LABEL=\"El cruzado : semanario tradicionalista - Portada\" TYPE=\"book\">\n <div ORDER=\"1\" LABEL=\"imaxe representativa\" TYPE=\"page\">\n <fptr FILEID=\"FID0\"/>\n </div>\n </div>\n </structMap>\n</mets>\n",
"items": [
{
"itemType": "book",
"title": "El cruzado: semanario tradicionalista",
"creators": [
{
"firstName": "Enrique",
"lastName": "Costas Márquez",
"creatorType": "editor"
},
{
"firstName": "Carolino",
"lastName": "Costas Márquez",
"creatorType": "editor"
},
{
"firstName": "Antonio",
"lastName": "Noriega Varela",
"creatorType": "editor"
},
{
"firstName": "Manuel",
"lastName": "Amor Meilán",
"creatorType": "editor"
},
{
"lastName": "Tipografía Mancebo",
"creatorType": "editor",
"fieldMode": true
}
],
"date": "1912",
"place": "Mondoñedo",
"publisher": "editor non identificado",
"attachments": [
{
"title": "Image",
"mimeType": "image/jpeg"
}
],
"tags": [
{
"tag": "Galicia"
},
{
"tag": "Prensa"
}
],
"notes": [
{
"note": "Director: José Polo Folgueira Propietario: Enrique Costas Márquez Redactor: Carolino Costas Márquez Colaboradores: Antonio Noriega Varela e Manuel Amor Meilán"
}
],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- This METS file was created on Wed Oct 12 13:00:22 CEST 2011 using the UGH Metadata Library: ugh.fileformats.mets.MetsModsImportExport (version 1.9-20100505) -->\n<mets:mets xmlns:mets=\"http://www.loc.gov/METS/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.loc.gov/mods/v3 http://www.loc.gov/standards/mods/v3/mods-3-3.xsd http://www.loc.gov/METS/ http://www.loc.gov/standards/mets/version17/mets.v1-7.xsd\"><mets:dmdSec ID=\"DMDLOG_0000\"><mets:mdWrap MDTYPE=\"MODS\"><mets:xmlData><mods:mods xmlns:mods=\"http://www.loc.gov/mods/v3\"><mods:classification authority=\"GDZ\">Antiquitates_und_Archaeologia</mods:classification><mods:classification authority=\"GDZ\">Antiquitates_und_Archaeologia_ARCHAEO18</mods:classification><mods:recordInfo><mods:recordIdentifier source=\"gbv-ppn\">PPN143342827</mods:recordIdentifier></mods:recordInfo><mods:identifier type=\"PPNanalog\">PPN143342819</mods:identifier><mods:titleInfo><mods:title>Vite De' Pittori, Scultori Ed Architetti Napoletani</mods:title><mods:subTitle>Non mai date alla luce da Autore alcuno ...</mods:subTitle></mods:titleInfo><mods:language><mods:languageTerm authority=\"iso639-2b\" type=\"code\">it</mods:languageTerm></mods:language><mods:originInfo><mods:place><mods:placeTerm type=\"text\">Neapel</mods:placeTerm></mods:place><mods:dateIssued encoding=\"w3cdtf\" keyDate=\"yes\">1742</mods:dateIssued><mods:publisher>Ricciardi</mods:publisher></mods:originInfo><mods:subject authority=\"gdz\"><mods:topic>domivite</mods:topic></mods:subject><mods:name type=\"personal\"><mods:role><mods:roleTerm authority=\"marcrelator\" type=\"code\">aut</mods:roleTerm></mods:role><mods:namePart type=\"family\">Dominici</mods:namePart><mods:namePart type=\"given\">Bernardo</mods:namePart><mods:displayForm>Dominici, Bernardo</mods:displayForm></mods:name></mods:mods></mets:xmlData></mets:mdWrap></mets:dmdSec><mets:amdSec ID=\"AMD\"><mets:rightsMD ID=\"RIGHTS\"><mets:mdWrap MDTYPE=\"OTHER\" MIMETYPE=\"text/xml\" OTHERMDTYPE=\"DVRIGHTS\"><mets:xmlData><dv:rights xmlns:dv=\"http://dfg-viewer.de/\"><dv:owner>Digitalisierungszentrum der Niedersächsischen Staats- und Universitätsbibliothek Göttingen</dv:owner><dv:ownerLogo>http://gdz.sub.uni-goettingen.de/logo_gdz_dfgv.png</dv:ownerLogo><dv:ownerSiteURL>http://gdz.sub.uni-goettingen.de</dv:ownerSiteURL><dv:ownerContact/></dv:rights></mets:xmlData></mets:mdWrap></mets:rightsMD><mets:digiprovMD ID=\"DIGIPROV\"><mets:mdWrap MDTYPE=\"OTHER\" MIMETYPE=\"text/xml\" OTHERMDTYPE=\"DVLINKS\"><mets:xmlData><dv:links xmlns:dv=\"http://dfg-viewer.de/\"><dv:reference>http://opac.sub.uni-goettingen.de/DB=1/PPN?PPN=143342827</dv:reference><dv:presentation>http://resolver.sub.uni-goettingen.de/purl?PPN143342827</dv:presentation></dv:links></mets:xmlData></mets:mdWrap></mets:digiprovMD></mets:amdSec><mets:structMap TYPE=\"LOGICAL\"><mets:div ADMID=\"AMD\" DMDID=\"DMDLOG_0000\" ID=\"LOG_0000\" LABEL=\"Vite De' Pittori, Scultori Ed Architetti Napoletani\" TYPE=\"MultiVolumeWork\"><mets:div ID=\"LOG_0002\" TYPE=\"volume\" LABEL=\"Vite De' Pittori, Scultori Ed Architetti Napoletani : non mai date alla luce da autore alcuno ... 1\"><mets:mptr LOCTYPE=\"URL\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"http://gdz.sub.uni-goettingen.de/mets/PPN659413833.xml\"/></mets:div></mets:div></mets:structMap></mets:mets>\n",
"items": [
{
"itemType": "document",
"title": "Vite De' Pittori, Scultori Ed Architetti Napoletani: Non mai date alla luce da Autore alcuno ...",
"creators": [
{
"firstName": "Bernardo",
"lastName": "Dominici",
"creatorType": "author"
}
],
"date": "1742",
"language": "it",
"publisher": "Ricciardi",
"attachments": [],
"tags": [
{
"tag": "domivite"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "import",
"input": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- This METS file was created on Mon Mar 19 14:28:59 CET 2012 using the UGH Metadata Library: ugh.fileformats.mets.MetsModsImportExport (version 1.9-20100505) -->\n<mets:mets xmlns:mets=\"http://www.loc.gov/METS/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.loc.gov/mods/v3 http://www.loc.gov/standards/mods/v3/mods-3-3.xsd http://www.loc.gov/METS/ http://www.loc.gov/standards/mets/version17/mets.v1-7.xsd\"><mets:dmdSec ID=\"DMDLOG_0001\"><mets:mdWrap MDTYPE=\"MODS\"><mets:xmlData><mods:mods xmlns:mods=\"http://www.loc.gov/mods/v3\"><mods:classification authority=\"GDZ\">Antiquitates_und_Archaeologia</mods:classification><mods:classification authority=\"GDZ\">Antiquitates_und_Archaeologia_ARCHAEO18</mods:classification><mods:relatedItem type=\"host\"><mods:recordInfo><mods:recordIdentifier source=\"gbv-ppn\">PPN137363532</mods:recordIdentifier></mods:recordInfo></mods:relatedItem><mods:recordInfo><mods:recordIdentifier source=\"gbv-ppn\">PPN137363540</mods:recordIdentifier></mods:recordInfo><mods:identifier type=\"PPNanalog\">PPN137363540</mods:identifier><mods:titleInfo><mods:title>Accurata, E Succinta Descrizione Topografica Delle Antichitá Di Roma</mods:title></mods:titleInfo><mods:part order=\"10\" type=\"host\"><mods:detail><mods:number>1</mods:number></mods:detail></mods:part><mods:language><mods:languageTerm authority=\"iso639-2b\" type=\"code\">la</mods:languageTerm></mods:language><mods:originInfo><mods:place><mods:placeTerm type=\"text\">Roma</mods:placeTerm></mods:place><mods:dateIssued encoding=\"w3cdtf\" keyDate=\"yes\">1763</mods:dateIssued><mods:publisher>Bernabò, e Lazzarini</mods:publisher></mods:originInfo><mods:name type=\"personal\"><mods:role><mods:roleTerm authority=\"marcrelator\" type=\"code\">aut</mods:roleTerm></mods:role><mods:namePart type=\"family\">Venuti</mods:namePart><mods:namePart type=\"given\">Ridolfino</mods:namePart><mods:displayForm>Venuti, Ridolfino</mods:displayForm></mods:name><mods:physicalDescription><mods:extent>[1] Bl., XXXVI, 143, [1] S., 59 Bl., [1] gef. Bl.</mods:extent></mods:physicalDescription></mods:mods></mets:xmlData></mets:mdWrap></mets:dmdSec><mets:dmdSec ID=\"DMDLOG_0002\"><mets:mdWrap MDTYPE=\"MODS\"><mets:xmlData><mods:mods xmlns:mods=\"http://www.loc.gov/mods/v3\"><mods:titleInfo><mods:title>Clemens Papa XIII. Ad futuram rei memoriam.</mods:title></mods:titleInfo></mods:mods></mets:xmlData></mets:mdWrap></mets:dmdSec><mets:dmdSec ID=\"DMDLOG_0003\"><mets:mdWrap MDTYPE=\"MODS\"><mets:xmlData><mods:mods xmlns:mods=\"http://www.loc.gov/mods/v3\"><mods:titleInfo><mods:title>Avvertimento Al Lettore.</mods:title></mods:titleInfo></mods:mods></mets:xmlData></mets:mdWrap></mets:dmdSec><mets:dmdSec ID=\"DMDLOG_0004\"><mets:mdWrap MDTYPE=\"MODS\"><mets:xmlData><mods:mods xmlns:mods=\"http://www.loc.gov/mods/v3\"><mods:titleInfo><mods:title>Indice De' Capi Della Parte Prima.</mods:title></mods:titleInfo></mods:mods></mets:xmlData></mets:mdWrap></mets:dmdSec><mets:dmdSec ID=\"DMDLOG_0005\"><mets:mdWrap MDTYPE=\"MODS\"><mets:xmlData><mods:mods xmlns:mods=\"http://www.loc.gov/mods/v3\"><mods:titleInfo><mods:title>Approvazione.</mods:title></mods:titleInfo></mods:mods></mets:xmlData></mets:mdWrap></mets:dmdSec><mets:dmdSec ID=\"DMDLOG_0006\"><mets:mdWrap MDTYPE=\"MODS\"><mets:xmlData><mods:mods xmlns:mods=\"http://www.loc.gov/mods/v3\"><mods:titleInfo><mods:title>Introduzione Alla Topografia Di Roma.</mods:title></mods:titleInfo></mods:mods></mets:xmlData></mets:mdWrap></mets:dmdSec><mets:dmdSec ID=\"DMDLOG_0007\"><mets:mdWrap MDTYPE=\"MODS\"><mets:xmlData><mods:mods xmlns:mods=\"http://www.loc.gov/mods/v3\"><mods:titleInfo><mods:title>Carta Topografica Delle Antichità Di Roma [...]</mods:title></mods:titleInfo></mods:mods></mets:xmlData></mets:mdWrap></mets:dmdSec><mets:dmdSec ID=\"DMDLOG_0008\"><mets:mdWrap MDTYPE=\"MODS\"><mets:xmlData><mods:mods xmlns:mods=\"http://www.loc.gov/mods/v3\"><mods:titleInfo><mods:title>Capo Primo Del Monte Palatino.</mods:title></mods:titleInfo></mods:mods></mets:xmlData></mets:mdWrap></mets:dmdSec><mets:dmdSec ID=\"DMDLOG_0009\"><mets:mdWrap MDTYPE=\"MODS\"><mets:xmlData><mods:mods xmlns:mods=\"http://www.loc.gov/mods/v3\"><mods:titleInfo><mods:title>[Taf.] 1 [- Taf.] 14</mods:title></mods:titleInfo></mods:mods></mets:xmlData></mets:mdWrap></mets:dmdSec><mets:dmdSec ID=\"DMDLOG_0010\"><mets:mdWrap MDTYPE=\"MODS\"><mets:xmlData><mods:mods xmlns:mods=\"http://www.loc.gov/mods/v3\"><mods:titleInfo><mods:title>Capo Primo Del Monte Palatino.</mods:title></mods:titleInfo></mods:mods></mets:xmlData></mets:mdWrap></mets:dmdSec><mets:dmdSec ID=\"DMDLOG_0011\"><mets:mdWrap MDTYPE=\"MODS\"><mets:xmlData><mods:mods xmlns:mods=\"http://www.loc.gov/mods/v3\"><mods:titleInfo><mods:title>Capo Secondo Del Foro Romano.</mods:title></mods:titleInfo></mods:mods></mets:xmlData></mets:mdWrap></mets:dmdSec><mets:dmdSec ID=\"DMDLOG_0012\"><mets:mdWrap MDTYPE=\"MODS\"><mets:xmlData><mods:mods xmlns:mods=\"http://www.loc.gov/mods/v3\"><mods:titleInfo><mods:title>[Taf.] 15 [- Taf.] 16</mods:title></mods:titleInfo></mods:mods></mets:xmlData></mets:mdWrap></mets:dmdSec><mets:dmdSec ID=\"DMDLOG_0013\"><mets:mdWrap MDTYPE=\"MODS\"><mets:xmlData><mods:mods xmlns:mods=\"http://www.loc.gov/mods/v3\"><mods:titleInfo><mods:title>Capo Terzo Del Campidoglio.</mods:title></mods:titleInfo></mods:mods></mets:xmlData></mets:mdWrap></mets:dmdSec><mets:dmdSec ID=\"DMDLOG_0014\"><mets:mdWrap MDTYPE=\"MODS\"><mets:xmlData><mods:mods xmlns:mods=\"http://www.loc.gov/mods/v3\"><mods:titleInfo><mods:title>[Taf.] 17 [- Taf.] 22</mods:title></mods:titleInfo></mods:mods></mets:xmlData></mets:mdWrap></mets:dmdSec><mets:dmdSec ID=\"DMDLOG_0015\"><mets:mdWrap MDTYPE=\"MODS\"><mets:xmlData><mods:mods xmlns:mods=\"http://www.loc.gov/mods/v3\"><mods:titleInfo><mods:title>Capo Quarto Fori di Cesare, d'Augusto, di Nerva, e di Trajano.</mods:title></mods:titleInfo></mods:mods></mets:xmlData></mets:mdWrap></mets:dmdSec><mets:dmdSec ID=\"DMDLOG_0016\"><mets:mdWrap MDTYPE=\"MODS\"><mets:xmlData><mods:mods xmlns:mods=\"http://www.loc.gov/mods/v3\"><mods:titleInfo><mods:title>[Taf.] 23 [-Taf.] 25</mods:title></mods:titleInfo></mods:mods></mets:xmlData></mets:mdWrap></mets:dmdSec><mets:dmdSec ID=\"DMDLOG_0017\"><mets:mdWrap MDTYPE=\"MODS\"><mets:xmlData><mods:mods xmlns:mods=\"http://www.loc.gov/mods/v3\"><mods:titleInfo><mods:title>Capo Quinto Del Colle Quirinale.</mods:title></mods:titleInfo></mods:mods></mets:xmlData></mets:mdWrap></mets:dmdSec><mets:dmdSec ID=\"DMDLOG_0018\"><mets:mdWrap MDTYPE=\"MODS\"><mets:xmlData><mods:mods xmlns:mods=\"http://www.loc.gov/mods/v3\"><mods:titleInfo><mods:title>[Taf.] 26 [- Taf.] 33</mods:title></mods:titleInfo></mods:mods></mets:xmlData></mets:mdWrap></mets:dmdSec><mets:dmdSec ID=\"DMDLOG_0019\"><mets:mdWrap MDTYPE=\"MODS\"><mets:xmlData><mods:mods xmlns:mods=\"http://www.loc.gov/mods/v3\"><mods:titleInfo><mods:title>Capo Sesto Monte Viminale.</mods:title></mods:titleInfo></mods:mods></mets:xmlData></mets:mdWrap></mets:dmdSec><mets:dmdSec ID=\"DMDLOG_0020\"><mets:mdWrap MDTYPE=\"MODS\"><mets:xmlData><mods:mods xmlns:mods=\"http://www.loc.gov/mods/v3\"><mods:titleInfo><mods:title>Capo Settimo. Colle Esquilino.</mods:title></mods:titleInfo></mods:mods></mets:xmlData></mets:mdWrap></mets:dmdSec><mets:dmdSec ID=\"DMDLOG_0021\"><mets:mdWrap MDTYPE=\"MODS\"><mets:xmlData><mods:mods xmlns:mods=\"http://www.loc.gov/mods/v3\"><mods:titleInfo><mods:title>[Taf.] 34 [- Taf.] 55</mods:title></mods:titleInfo></mods:mods></mets:xmlData></mets:mdWrap></mets:dmdSec><mets:dmdSec ID=\"DMDLOG_0022\"><mets:mdWrap MDTYPE=\"MODS\"><mets:xmlData><mods:mods xmlns:mods=\"http://www.loc.gov/mods/v3\"><mods:titleInfo><mods:title>Capo Ottavo Del Monte Celio.</mods:title></mods:titleInfo></mods:mods></mets:xmlData></mets:mdWrap></mets:dmdSec><mets:dmdSec ID=\"DMDLOG_0023\"><mets:mdWrap MDTYPE=\"MODS\"><mets:xmlData><mods:mods xmlns:mods=\"http://www.loc.gov/mods/v3\"><mods:titleInfo><mods:title>[Taf.] 56 [- Taf.] 59</mods:title></mods:titleInfo></mods:mods></mets:xmlData></mets:mdWrap></mets:dmdSec><mets:dmdSec ID=\"DMDPHYS_0000\"><mets:mdWrap MDTYPE=\"MODS\"><mets:xmlData><mods:mods xmlns:mods=\"http://www.loc.gov/mods/v3\"><mods:location><mods:physicalLocation type=\"shelfmark\">4 ARCH I, 3892:1</mods:physicalLocation></mods:location></mods:mods></mets:xmlData></mets:mdWrap></mets:dmdSec><mets:amdSec ID=\"AMD\"><mets:rightsMD ID=\"RIGHTS\"><mets:mdWrap MDTYPE=\"OTHER\" MIMETYPE=\"text/xml\" OTHERMDTYPE=\"DVRIGHTS\"><mets:xmlData><dv:rights xmlns:dv=\"http://dfg-viewer.de/\"><dv:owner>Digitalisierungszentrum der Niedersächsischen Staats- und Universitätsbibliothek Göttingen</dv:owner><dv:ownerLogo>http://gdz.sub.uni-goettingen.de/logo_gdz_dfgv.png</dv:ownerLogo><dv:ownerSiteURL>http://gdz.sub.uni-goettingen.de</dv:ownerSiteURL><dv:ownerContact/></dv:rights></mets:xmlData></mets:mdWrap></mets:rightsMD><mets:digiprovMD ID=\"DIGIPROV\"><mets:mdWrap MDTYPE=\"OTHER\" MIMETYPE=\"text/xml\" OTHERMDTYPE=\"DVLINKS\"><mets:xmlData><dv:links xmlns:dv=\"http://dfg-viewer.de/\"><dv:reference>http://opac.sub.uni-goettingen.de/DB=1/PPN?PPN=137363532</dv:reference><dv:presentation>http://resolver.sub.uni-goettingen.de/purl?PPN137363540</dv:presentation></dv:links></mets:xmlData></mets:mdWrap></mets:digiprovMD></mets:amdSec><mets:fileSec><mets:fileGrp USE=\"MIN\"><mets:file ID=\"FILE_0000_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000001.jpg\"/></mets:file><mets:file ID=\"FILE_0001_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000002.jpg\"/></mets:file><mets:file ID=\"FILE_0002_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000003.jpg\"/></mets:file><mets:file ID=\"FILE_0003_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000004.jpg\"/></mets:file><mets:file ID=\"FILE_0004_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000005.jpg\"/></mets:file><mets:file ID=\"FILE_0005_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000006.jpg\"/></mets:file><mets:file ID=\"FILE_0006_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000007.jpg\"/></mets:file><mets:file ID=\"FILE_0007_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000008.jpg\"/></mets:file><mets:file ID=\"FILE_0008_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000009.jpg\"/></mets:file><mets:file ID=\"FILE_0009_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000010.jpg\"/></mets:file><mets:file ID=\"FILE_0010_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000011.jpg\"/></mets:file><mets:file ID=\"FILE_0011_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000012.jpg\"/></mets:file><mets:file ID=\"FILE_0012_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000013.jpg\"/></mets:file><mets:file ID=\"FILE_0013_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000014.jpg\"/></mets:file><mets:file ID=\"FILE_0014_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000015.jpg\"/></mets:file><mets:file ID=\"FILE_0015_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000016.jpg\"/></mets:file><mets:file ID=\"FILE_0016_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000017.jpg\"/></mets:file><mets:file ID=\"FILE_0017_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000018.jpg\"/></mets:file><mets:file ID=\"FILE_0018_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000019.jpg\"/></mets:file><mets:file ID=\"FILE_0019_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000020.jpg\"/></mets:file><mets:file ID=\"FILE_0020_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000021.jpg\"/></mets:file><mets:file ID=\"FILE_0021_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000022.jpg\"/></mets:file><mets:file ID=\"FILE_0022_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000023.jpg\"/></mets:file><mets:file ID=\"FILE_0023_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000024.jpg\"/></mets:file><mets:file ID=\"FILE_0024_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000025.jpg\"/></mets:file><mets:file ID=\"FILE_0025_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000026.jpg\"/></mets:file><mets:file ID=\"FILE_0026_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000027.jpg\"/></mets:file><mets:file ID=\"FILE_0027_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000028.jpg\"/></mets:file><mets:file ID=\"FILE_0028_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000029.jpg\"/></mets:file><mets:file ID=\"FILE_0029_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000030.jpg\"/></mets:file><mets:file ID=\"FILE_0030_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000031.jpg\"/></mets:file><mets:file ID=\"FILE_0031_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000032.jpg\"/></mets:file><mets:file ID=\"FILE_0032_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000033.jpg\"/></mets:file><mets:file ID=\"FILE_0033_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000034.jpg\"/></mets:file><mets:file ID=\"FILE_0034_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000035.jpg\"/></mets:file><mets:file ID=\"FILE_0035_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000036.jpg\"/></mets:file><mets:file ID=\"FILE_0036_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000037.jpg\"/></mets:file><mets:file ID=\"FILE_0037_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000038.jpg\"/></mets:file><mets:file ID=\"FILE_0038_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000039.jpg\"/></mets:file><mets:file ID=\"FILE_0039_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000040.jpg\"/></mets:file><mets:file ID=\"FILE_0040_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000041.jpg\"/></mets:file><mets:file ID=\"FILE_0041_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000042.jpg\"/></mets:file><mets:file ID=\"FILE_0042_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000043.jpg\"/></mets:file><mets:file ID=\"FILE_0043_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000044.jpg\"/></mets:file><mets:file ID=\"FILE_0044_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000045.jpg\"/></mets:file><mets:file ID=\"FILE_0045_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000046.jpg\"/></mets:file><mets:file ID=\"FILE_0046_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000047.jpg\"/></mets:file><mets:file ID=\"FILE_0047_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000048.jpg\"/></mets:file><mets:file ID=\"FILE_0048_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000049.jpg\"/></mets:file><mets:file ID=\"FILE_0049_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000050.jpg\"/></mets:file><mets:file ID=\"FILE_0050_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000051.jpg\"/></mets:file><mets:file ID=\"FILE_0051_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000052.jpg\"/></mets:file><mets:file ID=\"FILE_0052_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000053.jpg\"/></mets:file><mets:file ID=\"FILE_0053_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000054.jpg\"/></mets:file><mets:file ID=\"FILE_0054_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000055.jpg\"/></mets:file><mets:file ID=\"FILE_0055_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000056.jpg\"/></mets:file><mets:file ID=\"FILE_0056_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000057.jpg\"/></mets:file><mets:file ID=\"FILE_0057_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000058.jpg\"/></mets:file><mets:file ID=\"FILE_0058_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000059.jpg\"/></mets:file><mets:file ID=\"FILE_0059_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000060.jpg\"/></mets:file><mets:file ID=\"FILE_0060_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000061.jpg\"/></mets:file><mets:file ID=\"FILE_0061_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000062.jpg\"/></mets:file><mets:file ID=\"FILE_0062_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000063.jpg\"/></mets:file><mets:file ID=\"FILE_0063_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000064.jpg\"/></mets:file><mets:file ID=\"FILE_0064_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000065.jpg\"/></mets:file><mets:file ID=\"FILE_0065_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000066.jpg\"/></mets:file><mets:file ID=\"FILE_0066_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000067.jpg\"/></mets:file><mets:file ID=\"FILE_0067_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000068.jpg\"/></mets:file><mets:file ID=\"FILE_0068_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000069.jpg\"/></mets:file><mets:file ID=\"FILE_0069_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000070.jpg\"/></mets:file><mets:file ID=\"FILE_0070_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000071.jpg\"/></mets:file><mets:file ID=\"FILE_0071_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000072.jpg\"/></mets:file><mets:file ID=\"FILE_0072_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000073.jpg\"/></mets:file><mets:file ID=\"FILE_0073_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000074.jpg\"/></mets:file><mets:file ID=\"FILE_0074_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000075.jpg\"/></mets:file><mets:file ID=\"FILE_0075_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000076.jpg\"/></mets:file><mets:file ID=\"FILE_0076_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000077.jpg\"/></mets:file><mets:file ID=\"FILE_0077_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000078.jpg\"/></mets:file><mets:file ID=\"FILE_0078_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000079.jpg\"/></mets:file><mets:file ID=\"FILE_0079_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000080.jpg\"/></mets:file><mets:file ID=\"FILE_0080_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000081.jpg\"/></mets:file><mets:file ID=\"FILE_0081_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000082.jpg\"/></mets:file><mets:file ID=\"FILE_0082_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000083.jpg\"/></mets:file><mets:file ID=\"FILE_0083_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000084.jpg\"/></mets:file><mets:file ID=\"FILE_0084_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000085.jpg\"/></mets:file><mets:file ID=\"FILE_0085_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000086.jpg\"/></mets:file><mets:file ID=\"FILE_0086_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000087.jpg\"/></mets:file><mets:file ID=\"FILE_0087_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000088.jpg\"/></mets:file><mets:file ID=\"FILE_0088_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000089.jpg\"/></mets:file><mets:file ID=\"FILE_0089_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000090.jpg\"/></mets:file><mets:file ID=\"FILE_0090_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000091.jpg\"/></mets:file><mets:file ID=\"FILE_0091_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000092.jpg\"/></mets:file><mets:file ID=\"FILE_0092_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000093.jpg\"/></mets:file><mets:file ID=\"FILE_0093_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000094.jpg\"/></mets:file><mets:file ID=\"FILE_0094_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000095.jpg\"/></mets:file><mets:file ID=\"FILE_0095_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000096.jpg\"/></mets:file><mets:file ID=\"FILE_0096_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000097.jpg\"/></mets:file><mets:file ID=\"FILE_0097_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000098.jpg\"/></mets:file><mets:file ID=\"FILE_0098_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000099.jpg\"/></mets:file><mets:file ID=\"FILE_0099_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000100.jpg\"/></mets:file><mets:file ID=\"FILE_0100_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000101.jpg\"/></mets:file><mets:file ID=\"FILE_0101_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000102.jpg\"/></mets:file><mets:file ID=\"FILE_0102_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000103.jpg\"/></mets:file><mets:file ID=\"FILE_0103_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000104.jpg\"/></mets:file><mets:file ID=\"FILE_0104_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000105.jpg\"/></mets:file><mets:file ID=\"FILE_0105_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000106.jpg\"/></mets:file><mets:file ID=\"FILE_0106_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000107.jpg\"/></mets:file><mets:file ID=\"FILE_0107_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000108.jpg\"/></mets:file><mets:file ID=\"FILE_0108_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000109.jpg\"/></mets:file><mets:file ID=\"FILE_0109_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000110.jpg\"/></mets:file><mets:file ID=\"FILE_0110_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000111.jpg\"/></mets:file><mets:file ID=\"FILE_0111_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000112.jpg\"/></mets:file><mets:file ID=\"FILE_0112_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000113.jpg\"/></mets:file><mets:file ID=\"FILE_0113_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000114.jpg\"/></mets:file><mets:file ID=\"FILE_0114_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000115.jpg\"/></mets:file><mets:file ID=\"FILE_0115_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000116.jpg\"/></mets:file><mets:file ID=\"FILE_0116_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000117.jpg\"/></mets:file><mets:file ID=\"FILE_0117_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000118.jpg\"/></mets:file><mets:file ID=\"FILE_0118_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000119.jpg\"/></mets:file><mets:file ID=\"FILE_0119_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000120.jpg\"/></mets:file><mets:file ID=\"FILE_0120_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000121.jpg\"/></mets:file><mets:file ID=\"FILE_0121_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000122.jpg\"/></mets:file><mets:file ID=\"FILE_0122_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000123.jpg\"/></mets:file><mets:file ID=\"FILE_0123_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000124.jpg\"/></mets:file><mets:file ID=\"FILE_0124_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000125.jpg\"/></mets:file><mets:file ID=\"FILE_0125_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000126.jpg\"/></mets:file><mets:file ID=\"FILE_0126_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000127.jpg\"/></mets:file><mets:file ID=\"FILE_0127_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000128.jpg\"/></mets:file><mets:file ID=\"FILE_0128_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000129.jpg\"/></mets:file><mets:file ID=\"FILE_0129_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000130.jpg\"/></mets:file><mets:file ID=\"FILE_0130_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000131.jpg\"/></mets:file><mets:file ID=\"FILE_0131_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000132.jpg\"/></mets:file><mets:file ID=\"FILE_0132_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000133.jpg\"/></mets:file><mets:file ID=\"FILE_0133_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000134.jpg\"/></mets:file><mets:file ID=\"FILE_0134_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000135.jpg\"/></mets:file><mets:file ID=\"FILE_0135_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000136.jpg\"/></mets:file><mets:file ID=\"FILE_0136_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000137.jpg\"/></mets:file><mets:file ID=\"FILE_0137_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000138.jpg\"/></mets:file><mets:file ID=\"FILE_0138_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000139.jpg\"/></mets:file><mets:file ID=\"FILE_0139_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000140.jpg\"/></mets:file><mets:file ID=\"FILE_0140_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000141.jpg\"/></mets:file><mets:file ID=\"FILE_0141_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000142.jpg\"/></mets:file><mets:file ID=\"FILE_0142_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000143.jpg\"/></mets:file><mets:file ID=\"FILE_0143_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000144.jpg\"/></mets:file><mets:file ID=\"FILE_0144_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000145.jpg\"/></mets:file><mets:file ID=\"FILE_0145_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000146.jpg\"/></mets:file><mets:file ID=\"FILE_0146_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000147.jpg\"/></mets:file><mets:file ID=\"FILE_0147_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000148.jpg\"/></mets:file><mets:file ID=\"FILE_0148_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000149.jpg\"/></mets:file><mets:file ID=\"FILE_0149_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000150.jpg\"/></mets:file><mets:file ID=\"FILE_0150_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000151.jpg\"/></mets:file><mets:file ID=\"FILE_0151_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000152.jpg\"/></mets:file><mets:file ID=\"FILE_0152_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000153.jpg\"/></mets:file><mets:file ID=\"FILE_0153_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000154.jpg\"/></mets:file><mets:file ID=\"FILE_0154_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000155.jpg\"/></mets:file><mets:file ID=\"FILE_0155_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000156.jpg\"/></mets:file><mets:file ID=\"FILE_0156_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000157.jpg\"/></mets:file><mets:file ID=\"FILE_0157_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000158.jpg\"/></mets:file><mets:file ID=\"FILE_0158_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000159.jpg\"/></mets:file><mets:file ID=\"FILE_0159_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000160.jpg\"/></mets:file><mets:file ID=\"FILE_0160_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000161.jpg\"/></mets:file><mets:file ID=\"FILE_0161_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000162.jpg\"/></mets:file><mets:file ID=\"FILE_0162_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000163.jpg\"/></mets:file><mets:file ID=\"FILE_0163_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000164.jpg\"/></mets:file><mets:file ID=\"FILE_0164_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000165.jpg\"/></mets:file><mets:file ID=\"FILE_0165_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000166.jpg\"/></mets:file><mets:file ID=\"FILE_0166_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000167.jpg\"/></mets:file><mets:file ID=\"FILE_0167_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000168.jpg\"/></mets:file><mets:file ID=\"FILE_0168_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000169.jpg\"/></mets:file><mets:file ID=\"FILE_0169_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000170.jpg\"/></mets:file><mets:file ID=\"FILE_0170_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000171.jpg\"/></mets:file><mets:file ID=\"FILE_0171_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000172.jpg\"/></mets:file><mets:file ID=\"FILE_0172_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000173.jpg\"/></mets:file><mets:file ID=\"FILE_0173_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000174.jpg\"/></mets:file><mets:file ID=\"FILE_0174_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000175.jpg\"/></mets:file><mets:file ID=\"FILE_0175_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000176.jpg\"/></mets:file><mets:file ID=\"FILE_0176_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000177.jpg\"/></mets:file><mets:file ID=\"FILE_0177_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000178.jpg\"/></mets:file><mets:file ID=\"FILE_0178_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000179.jpg\"/></mets:file><mets:file ID=\"FILE_0179_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000180.jpg\"/></mets:file><mets:file ID=\"FILE_0180_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000181.jpg\"/></mets:file><mets:file ID=\"FILE_0181_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000182.jpg\"/></mets:file><mets:file ID=\"FILE_0182_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000183.jpg\"/></mets:file><mets:file ID=\"FILE_0183_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000184.jpg\"/></mets:file><mets:file ID=\"FILE_0184_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000185.jpg\"/></mets:file><mets:file ID=\"FILE_0185_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000186.jpg\"/></mets:file><mets:file ID=\"FILE_0186_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000187.jpg\"/></mets:file><mets:file ID=\"FILE_0187_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000188.jpg\"/></mets:file><mets:file ID=\"FILE_0188_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000189.jpg\"/></mets:file><mets:file ID=\"FILE_0189_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000190.jpg\"/></mets:file><mets:file ID=\"FILE_0190_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000191.jpg\"/></mets:file><mets:file ID=\"FILE_0191_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000192.jpg\"/></mets:file><mets:file ID=\"FILE_0192_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000193.jpg\"/></mets:file><mets:file ID=\"FILE_0193_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000194.jpg\"/></mets:file><mets:file ID=\"FILE_0194_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000195.jpg\"/></mets:file><mets:file ID=\"FILE_0195_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000196.jpg\"/></mets:file><mets:file ID=\"FILE_0196_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000197.jpg\"/></mets:file><mets:file ID=\"FILE_0197_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000198.jpg\"/></mets:file><mets:file ID=\"FILE_0198_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000199.jpg\"/></mets:file><mets:file ID=\"FILE_0199_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000200.jpg\"/></mets:file><mets:file ID=\"FILE_0200_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000201.jpg\"/></mets:file><mets:file ID=\"FILE_0201_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000202.jpg\"/></mets:file><mets:file ID=\"FILE_0202_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000203.jpg\"/></mets:file><mets:file ID=\"FILE_0203_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000204.jpg\"/></mets:file><mets:file ID=\"FILE_0204_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000205.jpg\"/></mets:file><mets:file ID=\"FILE_0205_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000206.jpg\"/></mets:file><mets:file ID=\"FILE_0206_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000207.jpg\"/></mets:file><mets:file ID=\"FILE_0207_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000208.jpg\"/></mets:file><mets:file ID=\"FILE_0208_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000209.jpg\"/></mets:file><mets:file ID=\"FILE_0209_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000210.jpg\"/></mets:file><mets:file ID=\"FILE_0210_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000211.jpg\"/></mets:file><mets:file ID=\"FILE_0211_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000212.jpg\"/></mets:file><mets:file ID=\"FILE_0212_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000213.jpg\"/></mets:file><mets:file ID=\"FILE_0213_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000214.jpg\"/></mets:file><mets:file ID=\"FILE_0214_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000215.jpg\"/></mets:file><mets:file ID=\"FILE_0215_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000216.jpg\"/></mets:file><mets:file ID=\"FILE_0216_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000217.jpg\"/></mets:file><mets:file ID=\"FILE_0217_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000218.jpg\"/></mets:file><mets:file ID=\"FILE_0218_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000219.jpg\"/></mets:file><mets:file ID=\"FILE_0219_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000220.jpg\"/></mets:file><mets:file ID=\"FILE_0220_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000221.jpg\"/></mets:file><mets:file ID=\"FILE_0221_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000222.jpg\"/></mets:file><mets:file ID=\"FILE_0222_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000223.jpg\"/></mets:file><mets:file ID=\"FILE_0223_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000224.jpg\"/></mets:file><mets:file ID=\"FILE_0224_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000225.jpg\"/></mets:file><mets:file ID=\"FILE_0225_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000226.jpg\"/></mets:file><mets:file ID=\"FILE_0226_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000227.jpg\"/></mets:file><mets:file ID=\"FILE_0227_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000228.jpg\"/></mets:file><mets:file ID=\"FILE_0228_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000229.jpg\"/></mets:file><mets:file ID=\"FILE_0229_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000230.jpg\"/></mets:file><mets:file ID=\"FILE_0230_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000231.jpg\"/></mets:file><mets:file ID=\"FILE_0231_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000232.jpg\"/></mets:file><mets:file ID=\"FILE_0232_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000233.jpg\"/></mets:file><mets:file ID=\"FILE_0233_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000234.jpg\"/></mets:file><mets:file ID=\"FILE_0234_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000235.jpg\"/></mets:file><mets:file ID=\"FILE_0235_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000236.jpg\"/></mets:file><mets:file ID=\"FILE_0236_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000237.jpg\"/></mets:file><mets:file ID=\"FILE_0237_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000238.jpg\"/></mets:file><mets:file ID=\"FILE_0238_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000239.jpg\"/></mets:file><mets:file ID=\"FILE_0239_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000240.jpg\"/></mets:file><mets:file ID=\"FILE_0240_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000241.jpg\"/></mets:file><mets:file ID=\"FILE_0241_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000242.jpg\"/></mets:file><mets:file ID=\"FILE_0242_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000243.jpg\"/></mets:file><mets:file ID=\"FILE_0243_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000244.jpg\"/></mets:file><mets:file ID=\"FILE_0244_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000245.jpg\"/></mets:file><mets:file ID=\"FILE_0245_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000246.jpg\"/></mets:file><mets:file ID=\"FILE_0246_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000247.jpg\"/></mets:file><mets:file ID=\"FILE_0247_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000248.jpg\"/></mets:file><mets:file ID=\"FILE_0248_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000249.jpg\"/></mets:file><mets:file ID=\"FILE_0249_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000250.jpg\"/></mets:file><mets:file ID=\"FILE_0250_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000251.jpg\"/></mets:file><mets:file ID=\"FILE_0251_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000252.jpg\"/></mets:file><mets:file ID=\"FILE_0252_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000253.jpg\"/></mets:file><mets:file ID=\"FILE_0253_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000254.jpg\"/></mets:file><mets:file ID=\"FILE_0254_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000255.jpg\"/></mets:file><mets:file ID=\"FILE_0255_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000256.jpg\"/></mets:file><mets:file ID=\"FILE_0256_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000257.jpg\"/></mets:file><mets:file ID=\"FILE_0257_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000258.jpg\"/></mets:file><mets:file ID=\"FILE_0258_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000259.jpg\"/></mets:file><mets:file ID=\"FILE_0259_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000260.jpg\"/></mets:file><mets:file ID=\"FILE_0260_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000261.jpg\"/></mets:file><mets:file ID=\"FILE_0261_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000262.jpg\"/></mets:file><mets:file ID=\"FILE_0262_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000263.jpg\"/></mets:file><mets:file ID=\"FILE_0263_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000264.jpg\"/></mets:file><mets:file ID=\"FILE_0264_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000265.jpg\"/></mets:file><mets:file ID=\"FILE_0265_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000266.jpg\"/></mets:file><mets:file ID=\"FILE_0266_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000267.jpg\"/></mets:file><mets:file ID=\"FILE_0267_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000268.jpg\"/></mets:file><mets:file ID=\"FILE_0268_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000269.jpg\"/></mets:file><mets:file ID=\"FILE_0269_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000270.jpg\"/></mets:file><mets:file ID=\"FILE_0270_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000271.jpg\"/></mets:file><mets:file ID=\"FILE_0271_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000272.jpg\"/></mets:file><mets:file ID=\"FILE_0272_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000273.jpg\"/></mets:file><mets:file ID=\"FILE_0273_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000274.jpg\"/></mets:file><mets:file ID=\"FILE_0274_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000275.jpg\"/></mets:file><mets:file ID=\"FILE_0275_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000276.jpg\"/></mets:file><mets:file ID=\"FILE_0276_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000277.jpg\"/></mets:file><mets:file ID=\"FILE_0277_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000278.jpg\"/></mets:file><mets:file ID=\"FILE_0278_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000279.jpg\"/></mets:file><mets:file ID=\"FILE_0279_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000280.jpg\"/></mets:file><mets:file ID=\"FILE_0280_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000281.jpg\"/></mets:file><mets:file ID=\"FILE_0281_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000282.jpg\"/></mets:file><mets:file ID=\"FILE_0282_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000283.jpg\"/></mets:file><mets:file ID=\"FILE_0283_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000284.jpg\"/></mets:file><mets:file ID=\"FILE_0284_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000285.jpg\"/></mets:file><mets:file ID=\"FILE_0285_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000286.jpg\"/></mets:file><mets:file ID=\"FILE_0286_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000287.jpg\"/></mets:file><mets:file ID=\"FILE_0287_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000288.jpg\"/></mets:file><mets:file ID=\"FILE_0288_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000289.jpg\"/></mets:file><mets:file ID=\"FILE_0289_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000290.jpg\"/></mets:file><mets:file ID=\"FILE_0290_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000291.jpg\"/></mets:file><mets:file ID=\"FILE_0291_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000292.jpg\"/></mets:file><mets:file ID=\"FILE_0292_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000293.jpg\"/></mets:file><mets:file ID=\"FILE_0293_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000294.jpg\"/></mets:file><mets:file ID=\"FILE_0294_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000295.jpg\"/></mets:file><mets:file ID=\"FILE_0295_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000296.jpg\"/></mets:file><mets:file ID=\"FILE_0296_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000297.jpg\"/></mets:file><mets:file ID=\"FILE_0297_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000298.jpg\"/></mets:file><mets:file ID=\"FILE_0298_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000299.jpg\"/></mets:file><mets:file ID=\"FILE_0299_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000300.jpg\"/></mets:file><mets:file ID=\"FILE_0300_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000301.jpg\"/></mets:file><mets:file ID=\"FILE_0301_MIN\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/800/0/00000302.jpg\"/></mets:file></mets:fileGrp><mets:fileGrp USE=\"DEFAULT\"><mets:file ID=\"FILE_0000_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000001.jpg\"/></mets:file><mets:file ID=\"FILE_0001_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000002.jpg\"/></mets:file><mets:file ID=\"FILE_0002_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000003.jpg\"/></mets:file><mets:file ID=\"FILE_0003_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000004.jpg\"/></mets:file><mets:file ID=\"FILE_0004_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000005.jpg\"/></mets:file><mets:file ID=\"FILE_0005_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000006.jpg\"/></mets:file><mets:file ID=\"FILE_0006_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000007.jpg\"/></mets:file><mets:file ID=\"FILE_0007_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000008.jpg\"/></mets:file><mets:file ID=\"FILE_0008_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000009.jpg\"/></mets:file><mets:file ID=\"FILE_0009_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000010.jpg\"/></mets:file><mets:file ID=\"FILE_0010_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000011.jpg\"/></mets:file><mets:file ID=\"FILE_0011_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000012.jpg\"/></mets:file><mets:file ID=\"FILE_0012_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000013.jpg\"/></mets:file><mets:file ID=\"FILE_0013_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000014.jpg\"/></mets:file><mets:file ID=\"FILE_0014_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000015.jpg\"/></mets:file><mets:file ID=\"FILE_0015_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000016.jpg\"/></mets:file><mets:file ID=\"FILE_0016_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000017.jpg\"/></mets:file><mets:file ID=\"FILE_0017_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000018.jpg\"/></mets:file><mets:file ID=\"FILE_0018_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000019.jpg\"/></mets:file><mets:file ID=\"FILE_0019_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000020.jpg\"/></mets:file><mets:file ID=\"FILE_0020_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000021.jpg\"/></mets:file><mets:file ID=\"FILE_0021_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000022.jpg\"/></mets:file><mets:file ID=\"FILE_0022_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000023.jpg\"/></mets:file><mets:file ID=\"FILE_0023_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000024.jpg\"/></mets:file><mets:file ID=\"FILE_0024_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000025.jpg\"/></mets:file><mets:file ID=\"FILE_0025_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000026.jpg\"/></mets:file><mets:file ID=\"FILE_0026_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000027.jpg\"/></mets:file><mets:file ID=\"FILE_0027_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000028.jpg\"/></mets:file><mets:file ID=\"FILE_0028_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000029.jpg\"/></mets:file><mets:file ID=\"FILE_0029_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000030.jpg\"/></mets:file><mets:file ID=\"FILE_0030_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000031.jpg\"/></mets:file><mets:file ID=\"FILE_0031_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000032.jpg\"/></mets:file><mets:file ID=\"FILE_0032_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000033.jpg\"/></mets:file><mets:file ID=\"FILE_0033_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000034.jpg\"/></mets:file><mets:file ID=\"FILE_0034_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000035.jpg\"/></mets:file><mets:file ID=\"FILE_0035_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000036.jpg\"/></mets:file><mets:file ID=\"FILE_0036_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000037.jpg\"/></mets:file><mets:file ID=\"FILE_0037_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000038.jpg\"/></mets:file><mets:file ID=\"FILE_0038_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000039.jpg\"/></mets:file><mets:file ID=\"FILE_0039_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000040.jpg\"/></mets:file><mets:file ID=\"FILE_0040_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000041.jpg\"/></mets:file><mets:file ID=\"FILE_0041_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000042.jpg\"/></mets:file><mets:file ID=\"FILE_0042_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000043.jpg\"/></mets:file><mets:file ID=\"FILE_0043_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000044.jpg\"/></mets:file><mets:file ID=\"FILE_0044_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000045.jpg\"/></mets:file><mets:file ID=\"FILE_0045_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000046.jpg\"/></mets:file><mets:file ID=\"FILE_0046_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000047.jpg\"/></mets:file><mets:file ID=\"FILE_0047_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000048.jpg\"/></mets:file><mets:file ID=\"FILE_0048_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000049.jpg\"/></mets:file><mets:file ID=\"FILE_0049_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000050.jpg\"/></mets:file><mets:file ID=\"FILE_0050_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000051.jpg\"/></mets:file><mets:file ID=\"FILE_0051_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000052.jpg\"/></mets:file><mets:file ID=\"FILE_0052_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000053.jpg\"/></mets:file><mets:file ID=\"FILE_0053_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000054.jpg\"/></mets:file><mets:file ID=\"FILE_0054_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000055.jpg\"/></mets:file><mets:file ID=\"FILE_0055_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000056.jpg\"/></mets:file><mets:file ID=\"FILE_0056_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000057.jpg\"/></mets:file><mets:file ID=\"FILE_0057_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000058.jpg\"/></mets:file><mets:file ID=\"FILE_0058_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000059.jpg\"/></mets:file><mets:file ID=\"FILE_0059_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000060.jpg\"/></mets:file><mets:file ID=\"FILE_0060_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000061.jpg\"/></mets:file><mets:file ID=\"FILE_0061_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000062.jpg\"/></mets:file><mets:file ID=\"FILE_0062_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000063.jpg\"/></mets:file><mets:file ID=\"FILE_0063_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000064.jpg\"/></mets:file><mets:file ID=\"FILE_0064_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000065.jpg\"/></mets:file><mets:file ID=\"FILE_0065_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000066.jpg\"/></mets:file><mets:file ID=\"FILE_0066_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000067.jpg\"/></mets:file><mets:file ID=\"FILE_0067_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000068.jpg\"/></mets:file><mets:file ID=\"FILE_0068_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000069.jpg\"/></mets:file><mets:file ID=\"FILE_0069_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000070.jpg\"/></mets:file><mets:file ID=\"FILE_0070_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000071.jpg\"/></mets:file><mets:file ID=\"FILE_0071_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000072.jpg\"/></mets:file><mets:file ID=\"FILE_0072_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000073.jpg\"/></mets:file><mets:file ID=\"FILE_0073_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000074.jpg\"/></mets:file><mets:file ID=\"FILE_0074_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000075.jpg\"/></mets:file><mets:file ID=\"FILE_0075_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000076.jpg\"/></mets:file><mets:file ID=\"FILE_0076_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000077.jpg\"/></mets:file><mets:file ID=\"FILE_0077_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000078.jpg\"/></mets:file><mets:file ID=\"FILE_0078_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000079.jpg\"/></mets:file><mets:file ID=\"FILE_0079_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000080.jpg\"/></mets:file><mets:file ID=\"FILE_0080_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000081.jpg\"/></mets:file><mets:file ID=\"FILE_0081_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000082.jpg\"/></mets:file><mets:file ID=\"FILE_0082_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000083.jpg\"/></mets:file><mets:file ID=\"FILE_0083_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000084.jpg\"/></mets:file><mets:file ID=\"FILE_0084_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000085.jpg\"/></mets:file><mets:file ID=\"FILE_0085_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000086.jpg\"/></mets:file><mets:file ID=\"FILE_0086_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000087.jpg\"/></mets:file><mets:file ID=\"FILE_0087_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000088.jpg\"/></mets:file><mets:file ID=\"FILE_0088_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000089.jpg\"/></mets:file><mets:file ID=\"FILE_0089_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000090.jpg\"/></mets:file><mets:file ID=\"FILE_0090_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000091.jpg\"/></mets:file><mets:file ID=\"FILE_0091_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000092.jpg\"/></mets:file><mets:file ID=\"FILE_0092_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000093.jpg\"/></mets:file><mets:file ID=\"FILE_0093_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000094.jpg\"/></mets:file><mets:file ID=\"FILE_0094_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000095.jpg\"/></mets:file><mets:file ID=\"FILE_0095_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000096.jpg\"/></mets:file><mets:file ID=\"FILE_0096_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000097.jpg\"/></mets:file><mets:file ID=\"FILE_0097_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000098.jpg\"/></mets:file><mets:file ID=\"FILE_0098_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000099.jpg\"/></mets:file><mets:file ID=\"FILE_0099_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000100.jpg\"/></mets:file><mets:file ID=\"FILE_0100_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000101.jpg\"/></mets:file><mets:file ID=\"FILE_0101_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000102.jpg\"/></mets:file><mets:file ID=\"FILE_0102_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000103.jpg\"/></mets:file><mets:file ID=\"FILE_0103_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000104.jpg\"/></mets:file><mets:file ID=\"FILE_0104_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000105.jpg\"/></mets:file><mets:file ID=\"FILE_0105_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000106.jpg\"/></mets:file><mets:file ID=\"FILE_0106_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000107.jpg\"/></mets:file><mets:file ID=\"FILE_0107_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000108.jpg\"/></mets:file><mets:file ID=\"FILE_0108_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000109.jpg\"/></mets:file><mets:file ID=\"FILE_0109_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000110.jpg\"/></mets:file><mets:file ID=\"FILE_0110_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000111.jpg\"/></mets:file><mets:file ID=\"FILE_0111_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000112.jpg\"/></mets:file><mets:file ID=\"FILE_0112_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000113.jpg\"/></mets:file><mets:file ID=\"FILE_0113_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000114.jpg\"/></mets:file><mets:file ID=\"FILE_0114_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000115.jpg\"/></mets:file><mets:file ID=\"FILE_0115_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000116.jpg\"/></mets:file><mets:file ID=\"FILE_0116_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000117.jpg\"/></mets:file><mets:file ID=\"FILE_0117_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000118.jpg\"/></mets:file><mets:file ID=\"FILE_0118_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000119.jpg\"/></mets:file><mets:file ID=\"FILE_0119_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000120.jpg\"/></mets:file><mets:file ID=\"FILE_0120_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000121.jpg\"/></mets:file><mets:file ID=\"FILE_0121_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000122.jpg\"/></mets:file><mets:file ID=\"FILE_0122_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000123.jpg\"/></mets:file><mets:file ID=\"FILE_0123_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000124.jpg\"/></mets:file><mets:file ID=\"FILE_0124_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000125.jpg\"/></mets:file><mets:file ID=\"FILE_0125_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000126.jpg\"/></mets:file><mets:file ID=\"FILE_0126_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000127.jpg\"/></mets:file><mets:file ID=\"FILE_0127_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000128.jpg\"/></mets:file><mets:file ID=\"FILE_0128_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000129.jpg\"/></mets:file><mets:file ID=\"FILE_0129_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000130.jpg\"/></mets:file><mets:file ID=\"FILE_0130_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000131.jpg\"/></mets:file><mets:file ID=\"FILE_0131_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000132.jpg\"/></mets:file><mets:file ID=\"FILE_0132_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000133.jpg\"/></mets:file><mets:file ID=\"FILE_0133_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000134.jpg\"/></mets:file><mets:file ID=\"FILE_0134_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000135.jpg\"/></mets:file><mets:file ID=\"FILE_0135_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000136.jpg\"/></mets:file><mets:file ID=\"FILE_0136_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000137.jpg\"/></mets:file><mets:file ID=\"FILE_0137_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000138.jpg\"/></mets:file><mets:file ID=\"FILE_0138_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000139.jpg\"/></mets:file><mets:file ID=\"FILE_0139_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000140.jpg\"/></mets:file><mets:file ID=\"FILE_0140_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000141.jpg\"/></mets:file><mets:file ID=\"FILE_0141_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000142.jpg\"/></mets:file><mets:file ID=\"FILE_0142_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000143.jpg\"/></mets:file><mets:file ID=\"FILE_0143_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000144.jpg\"/></mets:file><mets:file ID=\"FILE_0144_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000145.jpg\"/></mets:file><mets:file ID=\"FILE_0145_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000146.jpg\"/></mets:file><mets:file ID=\"FILE_0146_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000147.jpg\"/></mets:file><mets:file ID=\"FILE_0147_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000148.jpg\"/></mets:file><mets:file ID=\"FILE_0148_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000149.jpg\"/></mets:file><mets:file ID=\"FILE_0149_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000150.jpg\"/></mets:file><mets:file ID=\"FILE_0150_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000151.jpg\"/></mets:file><mets:file ID=\"FILE_0151_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000152.jpg\"/></mets:file><mets:file ID=\"FILE_0152_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000153.jpg\"/></mets:file><mets:file ID=\"FILE_0153_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000154.jpg\"/></mets:file><mets:file ID=\"FILE_0154_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000155.jpg\"/></mets:file><mets:file ID=\"FILE_0155_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000156.jpg\"/></mets:file><mets:file ID=\"FILE_0156_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000157.jpg\"/></mets:file><mets:file ID=\"FILE_0157_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000158.jpg\"/></mets:file><mets:file ID=\"FILE_0158_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000159.jpg\"/></mets:file><mets:file ID=\"FILE_0159_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000160.jpg\"/></mets:file><mets:file ID=\"FILE_0160_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000161.jpg\"/></mets:file><mets:file ID=\"FILE_0161_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000162.jpg\"/></mets:file><mets:file ID=\"FILE_0162_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000163.jpg\"/></mets:file><mets:file ID=\"FILE_0163_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000164.jpg\"/></mets:file><mets:file ID=\"FILE_0164_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000165.jpg\"/></mets:file><mets:file ID=\"FILE_0165_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000166.jpg\"/></mets:file><mets:file ID=\"FILE_0166_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000167.jpg\"/></mets:file><mets:file ID=\"FILE_0167_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000168.jpg\"/></mets:file><mets:file ID=\"FILE_0168_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000169.jpg\"/></mets:file><mets:file ID=\"FILE_0169_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000170.jpg\"/></mets:file><mets:file ID=\"FILE_0170_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000171.jpg\"/></mets:file><mets:file ID=\"FILE_0171_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000172.jpg\"/></mets:file><mets:file ID=\"FILE_0172_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000173.jpg\"/></mets:file><mets:file ID=\"FILE_0173_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000174.jpg\"/></mets:file><mets:file ID=\"FILE_0174_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000175.jpg\"/></mets:file><mets:file ID=\"FILE_0175_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000176.jpg\"/></mets:file><mets:file ID=\"FILE_0176_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000177.jpg\"/></mets:file><mets:file ID=\"FILE_0177_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000178.jpg\"/></mets:file><mets:file ID=\"FILE_0178_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000179.jpg\"/></mets:file><mets:file ID=\"FILE_0179_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000180.jpg\"/></mets:file><mets:file ID=\"FILE_0180_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000181.jpg\"/></mets:file><mets:file ID=\"FILE_0181_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000182.jpg\"/></mets:file><mets:file ID=\"FILE_0182_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000183.jpg\"/></mets:file><mets:file ID=\"FILE_0183_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000184.jpg\"/></mets:file><mets:file ID=\"FILE_0184_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000185.jpg\"/></mets:file><mets:file ID=\"FILE_0185_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000186.jpg\"/></mets:file><mets:file ID=\"FILE_0186_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000187.jpg\"/></mets:file><mets:file ID=\"FILE_0187_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000188.jpg\"/></mets:file><mets:file ID=\"FILE_0188_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000189.jpg\"/></mets:file><mets:file ID=\"FILE_0189_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000190.jpg\"/></mets:file><mets:file ID=\"FILE_0190_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000191.jpg\"/></mets:file><mets:file ID=\"FILE_0191_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000192.jpg\"/></mets:file><mets:file ID=\"FILE_0192_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000193.jpg\"/></mets:file><mets:file ID=\"FILE_0193_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000194.jpg\"/></mets:file><mets:file ID=\"FILE_0194_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000195.jpg\"/></mets:file><mets:file ID=\"FILE_0195_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000196.jpg\"/></mets:file><mets:file ID=\"FILE_0196_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000197.jpg\"/></mets:file><mets:file ID=\"FILE_0197_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000198.jpg\"/></mets:file><mets:file ID=\"FILE_0198_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000199.jpg\"/></mets:file><mets:file ID=\"FILE_0199_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000200.jpg\"/></mets:file><mets:file ID=\"FILE_0200_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000201.jpg\"/></mets:file><mets:file ID=\"FILE_0201_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000202.jpg\"/></mets:file><mets:file ID=\"FILE_0202_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000203.jpg\"/></mets:file><mets:file ID=\"FILE_0203_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000204.jpg\"/></mets:file><mets:file ID=\"FILE_0204_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000205.jpg\"/></mets:file><mets:file ID=\"FILE_0205_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000206.jpg\"/></mets:file><mets:file ID=\"FILE_0206_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000207.jpg\"/></mets:file><mets:file ID=\"FILE_0207_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000208.jpg\"/></mets:file><mets:file ID=\"FILE_0208_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000209.jpg\"/></mets:file><mets:file ID=\"FILE_0209_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000210.jpg\"/></mets:file><mets:file ID=\"FILE_0210_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000211.jpg\"/></mets:file><mets:file ID=\"FILE_0211_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000212.jpg\"/></mets:file><mets:file ID=\"FILE_0212_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000213.jpg\"/></mets:file><mets:file ID=\"FILE_0213_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000214.jpg\"/></mets:file><mets:file ID=\"FILE_0214_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000215.jpg\"/></mets:file><mets:file ID=\"FILE_0215_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000216.jpg\"/></mets:file><mets:file ID=\"FILE_0216_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000217.jpg\"/></mets:file><mets:file ID=\"FILE_0217_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000218.jpg\"/></mets:file><mets:file ID=\"FILE_0218_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000219.jpg\"/></mets:file><mets:file ID=\"FILE_0219_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000220.jpg\"/></mets:file><mets:file ID=\"FILE_0220_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000221.jpg\"/></mets:file><mets:file ID=\"FILE_0221_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000222.jpg\"/></mets:file><mets:file ID=\"FILE_0222_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000223.jpg\"/></mets:file><mets:file ID=\"FILE_0223_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000224.jpg\"/></mets:file><mets:file ID=\"FILE_0224_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000225.jpg\"/></mets:file><mets:file ID=\"FILE_0225_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000226.jpg\"/></mets:file><mets:file ID=\"FILE_0226_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000227.jpg\"/></mets:file><mets:file ID=\"FILE_0227_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000228.jpg\"/></mets:file><mets:file ID=\"FILE_0228_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000229.jpg\"/></mets:file><mets:file ID=\"FILE_0229_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000230.jpg\"/></mets:file><mets:file ID=\"FILE_0230_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000231.jpg\"/></mets:file><mets:file ID=\"FILE_0231_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000232.jpg\"/></mets:file><mets:file ID=\"FILE_0232_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000233.jpg\"/></mets:file><mets:file ID=\"FILE_0233_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000234.jpg\"/></mets:file><mets:file ID=\"FILE_0234_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000235.jpg\"/></mets:file><mets:file ID=\"FILE_0235_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000236.jpg\"/></mets:file><mets:file ID=\"FILE_0236_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000237.jpg\"/></mets:file><mets:file ID=\"FILE_0237_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000238.jpg\"/></mets:file><mets:file ID=\"FILE_0238_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000239.jpg\"/></mets:file><mets:file ID=\"FILE_0239_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000240.jpg\"/></mets:file><mets:file ID=\"FILE_0240_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000241.jpg\"/></mets:file><mets:file ID=\"FILE_0241_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000242.jpg\"/></mets:file><mets:file ID=\"FILE_0242_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000243.jpg\"/></mets:file><mets:file ID=\"FILE_0243_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000244.jpg\"/></mets:file><mets:file ID=\"FILE_0244_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000245.jpg\"/></mets:file><mets:file ID=\"FILE_0245_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000246.jpg\"/></mets:file><mets:file ID=\"FILE_0246_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000247.jpg\"/></mets:file><mets:file ID=\"FILE_0247_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000248.jpg\"/></mets:file><mets:file ID=\"FILE_0248_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000249.jpg\"/></mets:file><mets:file ID=\"FILE_0249_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000250.jpg\"/></mets:file><mets:file ID=\"FILE_0250_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000251.jpg\"/></mets:file><mets:file ID=\"FILE_0251_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000252.jpg\"/></mets:file><mets:file ID=\"FILE_0252_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000253.jpg\"/></mets:file><mets:file ID=\"FILE_0253_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000254.jpg\"/></mets:file><mets:file ID=\"FILE_0254_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000255.jpg\"/></mets:file><mets:file ID=\"FILE_0255_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000256.jpg\"/></mets:file><mets:file ID=\"FILE_0256_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000257.jpg\"/></mets:file><mets:file ID=\"FILE_0257_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000258.jpg\"/></mets:file><mets:file ID=\"FILE_0258_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000259.jpg\"/></mets:file><mets:file ID=\"FILE_0259_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000260.jpg\"/></mets:file><mets:file ID=\"FILE_0260_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000261.jpg\"/></mets:file><mets:file ID=\"FILE_0261_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000262.jpg\"/></mets:file><mets:file ID=\"FILE_0262_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000263.jpg\"/></mets:file><mets:file ID=\"FILE_0263_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000264.jpg\"/></mets:file><mets:file ID=\"FILE_0264_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000265.jpg\"/></mets:file><mets:file ID=\"FILE_0265_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000266.jpg\"/></mets:file><mets:file ID=\"FILE_0266_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000267.jpg\"/></mets:file><mets:file ID=\"FILE_0267_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000268.jpg\"/></mets:file><mets:file ID=\"FILE_0268_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000269.jpg\"/></mets:file><mets:file ID=\"FILE_0269_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000270.jpg\"/></mets:file><mets:file ID=\"FILE_0270_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000271.jpg\"/></mets:file><mets:file ID=\"FILE_0271_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000272.jpg\"/></mets:file><mets:file ID=\"FILE_0272_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000273.jpg\"/></mets:file><mets:file ID=\"FILE_0273_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000274.jpg\"/></mets:file><mets:file ID=\"FILE_0274_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000275.jpg\"/></mets:file><mets:file ID=\"FILE_0275_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000276.jpg\"/></mets:file><mets:file ID=\"FILE_0276_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000277.jpg\"/></mets:file><mets:file ID=\"FILE_0277_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000278.jpg\"/></mets:file><mets:file ID=\"FILE_0278_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000279.jpg\"/></mets:file><mets:file ID=\"FILE_0279_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000280.jpg\"/></mets:file><mets:file ID=\"FILE_0280_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000281.jpg\"/></mets:file><mets:file ID=\"FILE_0281_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000282.jpg\"/></mets:file><mets:file ID=\"FILE_0282_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000283.jpg\"/></mets:file><mets:file ID=\"FILE_0283_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000284.jpg\"/></mets:file><mets:file ID=\"FILE_0284_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000285.jpg\"/></mets:file><mets:file ID=\"FILE_0285_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000286.jpg\"/></mets:file><mets:file ID=\"FILE_0286_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000287.jpg\"/></mets:file><mets:file ID=\"FILE_0287_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000288.jpg\"/></mets:file><mets:file ID=\"FILE_0288_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000289.jpg\"/></mets:file><mets:file ID=\"FILE_0289_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000290.jpg\"/></mets:file><mets:file ID=\"FILE_0290_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000291.jpg\"/></mets:file><mets:file ID=\"FILE_0291_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000292.jpg\"/></mets:file><mets:file ID=\"FILE_0292_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000293.jpg\"/></mets:file><mets:file ID=\"FILE_0293_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000294.jpg\"/></mets:file><mets:file ID=\"FILE_0294_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000295.jpg\"/></mets:file><mets:file ID=\"FILE_0295_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000296.jpg\"/></mets:file><mets:file ID=\"FILE_0296_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000297.jpg\"/></mets:file><mets:file ID=\"FILE_0297_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000298.jpg\"/></mets:file><mets:file ID=\"FILE_0298_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000299.jpg\"/></mets:file><mets:file ID=\"FILE_0299_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000300.jpg\"/></mets:file><mets:file ID=\"FILE_0300_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000301.jpg\"/></mets:file><mets:file ID=\"FILE_0301_DEFAULT\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1000/0/00000302.jpg\"/></mets:file></mets:fileGrp><mets:fileGrp USE=\"PRESENTATION\"><mets:file ID=\"FILE_0000_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000001.tif\"/></mets:file><mets:file ID=\"FILE_0001_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000002.tif\"/></mets:file><mets:file ID=\"FILE_0002_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000003.tif\"/></mets:file><mets:file ID=\"FILE_0003_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000004.tif\"/></mets:file><mets:file ID=\"FILE_0004_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000005.tif\"/></mets:file><mets:file ID=\"FILE_0005_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000006.tif\"/></mets:file><mets:file ID=\"FILE_0006_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000007.tif\"/></mets:file><mets:file ID=\"FILE_0007_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000008.tif\"/></mets:file><mets:file ID=\"FILE_0008_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000009.tif\"/></mets:file><mets:file ID=\"FILE_0009_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000010.tif\"/></mets:file><mets:file ID=\"FILE_0010_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000011.tif\"/></mets:file><mets:file ID=\"FILE_0011_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000012.tif\"/></mets:file><mets:file ID=\"FILE_0012_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000013.tif\"/></mets:file><mets:file ID=\"FILE_0013_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000014.tif\"/></mets:file><mets:file ID=\"FILE_0014_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000015.tif\"/></mets:file><mets:file ID=\"FILE_0015_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000016.tif\"/></mets:file><mets:file ID=\"FILE_0016_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000017.tif\"/></mets:file><mets:file ID=\"FILE_0017_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000018.tif\"/></mets:file><mets:file ID=\"FILE_0018_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000019.tif\"/></mets:file><mets:file ID=\"FILE_0019_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000020.tif\"/></mets:file><mets:file ID=\"FILE_0020_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000021.tif\"/></mets:file><mets:file ID=\"FILE_0021_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000022.tif\"/></mets:file><mets:file ID=\"FILE_0022_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000023.tif\"/></mets:file><mets:file ID=\"FILE_0023_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000024.tif\"/></mets:file><mets:file ID=\"FILE_0024_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000025.tif\"/></mets:file><mets:file ID=\"FILE_0025_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000026.tif\"/></mets:file><mets:file ID=\"FILE_0026_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000027.tif\"/></mets:file><mets:file ID=\"FILE_0027_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000028.tif\"/></mets:file><mets:file ID=\"FILE_0028_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000029.tif\"/></mets:file><mets:file ID=\"FILE_0029_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000030.tif\"/></mets:file><mets:file ID=\"FILE_0030_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000031.tif\"/></mets:file><mets:file ID=\"FILE_0031_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000032.tif\"/></mets:file><mets:file ID=\"FILE_0032_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000033.tif\"/></mets:file><mets:file ID=\"FILE_0033_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000034.tif\"/></mets:file><mets:file ID=\"FILE_0034_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000035.tif\"/></mets:file><mets:file ID=\"FILE_0035_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000036.tif\"/></mets:file><mets:file ID=\"FILE_0036_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000037.tif\"/></mets:file><mets:file ID=\"FILE_0037_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000038.tif\"/></mets:file><mets:file ID=\"FILE_0038_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000039.tif\"/></mets:file><mets:file ID=\"FILE_0039_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000040.tif\"/></mets:file><mets:file ID=\"FILE_0040_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000041.tif\"/></mets:file><mets:file ID=\"FILE_0041_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000042.tif\"/></mets:file><mets:file ID=\"FILE_0042_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000043.tif\"/></mets:file><mets:file ID=\"FILE_0043_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000044.tif\"/></mets:file><mets:file ID=\"FILE_0044_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000045.tif\"/></mets:file><mets:file ID=\"FILE_0045_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000046.tif\"/></mets:file><mets:file ID=\"FILE_0046_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000047.tif\"/></mets:file><mets:file ID=\"FILE_0047_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000048.tif\"/></mets:file><mets:file ID=\"FILE_0048_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000049.tif\"/></mets:file><mets:file ID=\"FILE_0049_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000050.tif\"/></mets:file><mets:file ID=\"FILE_0050_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000051.tif\"/></mets:file><mets:file ID=\"FILE_0051_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000052.tif\"/></mets:file><mets:file ID=\"FILE_0052_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000053.tif\"/></mets:file><mets:file ID=\"FILE_0053_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000054.tif\"/></mets:file><mets:file ID=\"FILE_0054_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000055.tif\"/></mets:file><mets:file ID=\"FILE_0055_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000056.tif\"/></mets:file><mets:file ID=\"FILE_0056_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000057.tif\"/></mets:file><mets:file ID=\"FILE_0057_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000058.tif\"/></mets:file><mets:file ID=\"FILE_0058_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000059.tif\"/></mets:file><mets:file ID=\"FILE_0059_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000060.tif\"/></mets:file><mets:file ID=\"FILE_0060_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000061.tif\"/></mets:file><mets:file ID=\"FILE_0061_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000062.tif\"/></mets:file><mets:file ID=\"FILE_0062_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000063.tif\"/></mets:file><mets:file ID=\"FILE_0063_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000064.tif\"/></mets:file><mets:file ID=\"FILE_0064_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000065.tif\"/></mets:file><mets:file ID=\"FILE_0065_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000066.tif\"/></mets:file><mets:file ID=\"FILE_0066_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000067.tif\"/></mets:file><mets:file ID=\"FILE_0067_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000068.tif\"/></mets:file><mets:file ID=\"FILE_0068_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000069.tif\"/></mets:file><mets:file ID=\"FILE_0069_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000070.tif\"/></mets:file><mets:file ID=\"FILE_0070_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000071.tif\"/></mets:file><mets:file ID=\"FILE_0071_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000072.tif\"/></mets:file><mets:file ID=\"FILE_0072_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000073.tif\"/></mets:file><mets:file ID=\"FILE_0073_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000074.tif\"/></mets:file><mets:file ID=\"FILE_0074_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000075.tif\"/></mets:file><mets:file ID=\"FILE_0075_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000076.tif\"/></mets:file><mets:file ID=\"FILE_0076_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000077.tif\"/></mets:file><mets:file ID=\"FILE_0077_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000078.tif\"/></mets:file><mets:file ID=\"FILE_0078_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000079.tif\"/></mets:file><mets:file ID=\"FILE_0079_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000080.tif\"/></mets:file><mets:file ID=\"FILE_0080_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000081.tif\"/></mets:file><mets:file ID=\"FILE_0081_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000082.tif\"/></mets:file><mets:file ID=\"FILE_0082_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000083.tif\"/></mets:file><mets:file ID=\"FILE_0083_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000084.tif\"/></mets:file><mets:file ID=\"FILE_0084_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000085.tif\"/></mets:file><mets:file ID=\"FILE_0085_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000086.tif\"/></mets:file><mets:file ID=\"FILE_0086_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000087.tif\"/></mets:file><mets:file ID=\"FILE_0087_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000088.tif\"/></mets:file><mets:file ID=\"FILE_0088_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000089.tif\"/></mets:file><mets:file ID=\"FILE_0089_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000090.tif\"/></mets:file><mets:file ID=\"FILE_0090_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000091.tif\"/></mets:file><mets:file ID=\"FILE_0091_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000092.tif\"/></mets:file><mets:file ID=\"FILE_0092_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000093.tif\"/></mets:file><mets:file ID=\"FILE_0093_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000094.tif\"/></mets:file><mets:file ID=\"FILE_0094_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000095.tif\"/></mets:file><mets:file ID=\"FILE_0095_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000096.tif\"/></mets:file><mets:file ID=\"FILE_0096_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000097.tif\"/></mets:file><mets:file ID=\"FILE_0097_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000098.tif\"/></mets:file><mets:file ID=\"FILE_0098_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000099.tif\"/></mets:file><mets:file ID=\"FILE_0099_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000100.tif\"/></mets:file><mets:file ID=\"FILE_0100_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000101.tif\"/></mets:file><mets:file ID=\"FILE_0101_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000102.tif\"/></mets:file><mets:file ID=\"FILE_0102_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000103.tif\"/></mets:file><mets:file ID=\"FILE_0103_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000104.tif\"/></mets:file><mets:file ID=\"FILE_0104_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000105.tif\"/></mets:file><mets:file ID=\"FILE_0105_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000106.tif\"/></mets:file><mets:file ID=\"FILE_0106_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000107.tif\"/></mets:file><mets:file ID=\"FILE_0107_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000108.tif\"/></mets:file><mets:file ID=\"FILE_0108_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000109.tif\"/></mets:file><mets:file ID=\"FILE_0109_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000110.tif\"/></mets:file><mets:file ID=\"FILE_0110_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000111.tif\"/></mets:file><mets:file ID=\"FILE_0111_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000112.tif\"/></mets:file><mets:file ID=\"FILE_0112_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000113.tif\"/></mets:file><mets:file ID=\"FILE_0113_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000114.tif\"/></mets:file><mets:file ID=\"FILE_0114_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000115.tif\"/></mets:file><mets:file ID=\"FILE_0115_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000116.tif\"/></mets:file><mets:file ID=\"FILE_0116_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000117.tif\"/></mets:file><mets:file ID=\"FILE_0117_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000118.tif\"/></mets:file><mets:file ID=\"FILE_0118_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000119.tif\"/></mets:file><mets:file ID=\"FILE_0119_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000120.tif\"/></mets:file><mets:file ID=\"FILE_0120_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000121.tif\"/></mets:file><mets:file ID=\"FILE_0121_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000122.tif\"/></mets:file><mets:file ID=\"FILE_0122_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000123.tif\"/></mets:file><mets:file ID=\"FILE_0123_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000124.tif\"/></mets:file><mets:file ID=\"FILE_0124_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000125.tif\"/></mets:file><mets:file ID=\"FILE_0125_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000126.tif\"/></mets:file><mets:file ID=\"FILE_0126_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000127.tif\"/></mets:file><mets:file ID=\"FILE_0127_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000128.tif\"/></mets:file><mets:file ID=\"FILE_0128_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000129.tif\"/></mets:file><mets:file ID=\"FILE_0129_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000130.tif\"/></mets:file><mets:file ID=\"FILE_0130_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000131.tif\"/></mets:file><mets:file ID=\"FILE_0131_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000132.tif\"/></mets:file><mets:file ID=\"FILE_0132_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000133.tif\"/></mets:file><mets:file ID=\"FILE_0133_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000134.tif\"/></mets:file><mets:file ID=\"FILE_0134_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000135.tif\"/></mets:file><mets:file ID=\"FILE_0135_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000136.tif\"/></mets:file><mets:file ID=\"FILE_0136_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000137.tif\"/></mets:file><mets:file ID=\"FILE_0137_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000138.tif\"/></mets:file><mets:file ID=\"FILE_0138_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000139.tif\"/></mets:file><mets:file ID=\"FILE_0139_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000140.tif\"/></mets:file><mets:file ID=\"FILE_0140_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000141.tif\"/></mets:file><mets:file ID=\"FILE_0141_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000142.tif\"/></mets:file><mets:file ID=\"FILE_0142_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000143.tif\"/></mets:file><mets:file ID=\"FILE_0143_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000144.tif\"/></mets:file><mets:file ID=\"FILE_0144_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000145.tif\"/></mets:file><mets:file ID=\"FILE_0145_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000146.tif\"/></mets:file><mets:file ID=\"FILE_0146_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000147.tif\"/></mets:file><mets:file ID=\"FILE_0147_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000148.tif\"/></mets:file><mets:file ID=\"FILE_0148_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000149.tif\"/></mets:file><mets:file ID=\"FILE_0149_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000150.tif\"/></mets:file><mets:file ID=\"FILE_0150_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000151.tif\"/></mets:file><mets:file ID=\"FILE_0151_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000152.tif\"/></mets:file><mets:file ID=\"FILE_0152_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000153.tif\"/></mets:file><mets:file ID=\"FILE_0153_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000154.tif\"/></mets:file><mets:file ID=\"FILE_0154_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000155.tif\"/></mets:file><mets:file ID=\"FILE_0155_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000156.tif\"/></mets:file><mets:file ID=\"FILE_0156_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000157.tif\"/></mets:file><mets:file ID=\"FILE_0157_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000158.tif\"/></mets:file><mets:file ID=\"FILE_0158_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000159.tif\"/></mets:file><mets:file ID=\"FILE_0159_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000160.tif\"/></mets:file><mets:file ID=\"FILE_0160_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000161.tif\"/></mets:file><mets:file ID=\"FILE_0161_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000162.tif\"/></mets:file><mets:file ID=\"FILE_0162_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000163.tif\"/></mets:file><mets:file ID=\"FILE_0163_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000164.tif\"/></mets:file><mets:file ID=\"FILE_0164_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000165.tif\"/></mets:file><mets:file ID=\"FILE_0165_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000166.tif\"/></mets:file><mets:file ID=\"FILE_0166_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000167.tif\"/></mets:file><mets:file ID=\"FILE_0167_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000168.tif\"/></mets:file><mets:file ID=\"FILE_0168_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000169.tif\"/></mets:file><mets:file ID=\"FILE_0169_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000170.tif\"/></mets:file><mets:file ID=\"FILE_0170_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000171.tif\"/></mets:file><mets:file ID=\"FILE_0171_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000172.tif\"/></mets:file><mets:file ID=\"FILE_0172_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000173.tif\"/></mets:file><mets:file ID=\"FILE_0173_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000174.tif\"/></mets:file><mets:file ID=\"FILE_0174_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000175.tif\"/></mets:file><mets:file ID=\"FILE_0175_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000176.tif\"/></mets:file><mets:file ID=\"FILE_0176_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000177.tif\"/></mets:file><mets:file ID=\"FILE_0177_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000178.tif\"/></mets:file><mets:file ID=\"FILE_0178_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000179.tif\"/></mets:file><mets:file ID=\"FILE_0179_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000180.tif\"/></mets:file><mets:file ID=\"FILE_0180_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000181.tif\"/></mets:file><mets:file ID=\"FILE_0181_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000182.tif\"/></mets:file><mets:file ID=\"FILE_0182_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000183.tif\"/></mets:file><mets:file ID=\"FILE_0183_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000184.tif\"/></mets:file><mets:file ID=\"FILE_0184_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000185.tif\"/></mets:file><mets:file ID=\"FILE_0185_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000186.tif\"/></mets:file><mets:file ID=\"FILE_0186_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000187.tif\"/></mets:file><mets:file ID=\"FILE_0187_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000188.tif\"/></mets:file><mets:file ID=\"FILE_0188_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000189.tif\"/></mets:file><mets:file ID=\"FILE_0189_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000190.tif\"/></mets:file><mets:file ID=\"FILE_0190_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000191.tif\"/></mets:file><mets:file ID=\"FILE_0191_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000192.tif\"/></mets:file><mets:file ID=\"FILE_0192_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000193.tif\"/></mets:file><mets:file ID=\"FILE_0193_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000194.tif\"/></mets:file><mets:file ID=\"FILE_0194_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000195.tif\"/></mets:file><mets:file ID=\"FILE_0195_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000196.tif\"/></mets:file><mets:file ID=\"FILE_0196_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000197.tif\"/></mets:file><mets:file ID=\"FILE_0197_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000198.tif\"/></mets:file><mets:file ID=\"FILE_0198_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000199.tif\"/></mets:file><mets:file ID=\"FILE_0199_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000200.tif\"/></mets:file><mets:file ID=\"FILE_0200_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000201.tif\"/></mets:file><mets:file ID=\"FILE_0201_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000202.tif\"/></mets:file><mets:file ID=\"FILE_0202_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000203.tif\"/></mets:file><mets:file ID=\"FILE_0203_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000204.tif\"/></mets:file><mets:file ID=\"FILE_0204_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000205.tif\"/></mets:file><mets:file ID=\"FILE_0205_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000206.tif\"/></mets:file><mets:file ID=\"FILE_0206_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000207.tif\"/></mets:file><mets:file ID=\"FILE_0207_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000208.tif\"/></mets:file><mets:file ID=\"FILE_0208_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000209.tif\"/></mets:file><mets:file ID=\"FILE_0209_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000210.tif\"/></mets:file><mets:file ID=\"FILE_0210_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000211.tif\"/></mets:file><mets:file ID=\"FILE_0211_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000212.tif\"/></mets:file><mets:file ID=\"FILE_0212_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000213.tif\"/></mets:file><mets:file ID=\"FILE_0213_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000214.tif\"/></mets:file><mets:file ID=\"FILE_0214_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000215.tif\"/></mets:file><mets:file ID=\"FILE_0215_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000216.tif\"/></mets:file><mets:file ID=\"FILE_0216_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000217.tif\"/></mets:file><mets:file ID=\"FILE_0217_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000218.tif\"/></mets:file><mets:file ID=\"FILE_0218_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000219.tif\"/></mets:file><mets:file ID=\"FILE_0219_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000220.tif\"/></mets:file><mets:file ID=\"FILE_0220_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000221.tif\"/></mets:file><mets:file ID=\"FILE_0221_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000222.tif\"/></mets:file><mets:file ID=\"FILE_0222_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000223.tif\"/></mets:file><mets:file ID=\"FILE_0223_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000224.tif\"/></mets:file><mets:file ID=\"FILE_0224_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000225.tif\"/></mets:file><mets:file ID=\"FILE_0225_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000226.tif\"/></mets:file><mets:file ID=\"FILE_0226_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000227.tif\"/></mets:file><mets:file ID=\"FILE_0227_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000228.tif\"/></mets:file><mets:file ID=\"FILE_0228_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000229.tif\"/></mets:file><mets:file ID=\"FILE_0229_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000230.tif\"/></mets:file><mets:file ID=\"FILE_0230_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000231.tif\"/></mets:file><mets:file ID=\"FILE_0231_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000232.tif\"/></mets:file><mets:file ID=\"FILE_0232_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000233.tif\"/></mets:file><mets:file ID=\"FILE_0233_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000234.tif\"/></mets:file><mets:file ID=\"FILE_0234_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000235.tif\"/></mets:file><mets:file ID=\"FILE_0235_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000236.tif\"/></mets:file><mets:file ID=\"FILE_0236_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000237.tif\"/></mets:file><mets:file ID=\"FILE_0237_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000238.tif\"/></mets:file><mets:file ID=\"FILE_0238_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000239.tif\"/></mets:file><mets:file ID=\"FILE_0239_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000240.tif\"/></mets:file><mets:file ID=\"FILE_0240_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000241.tif\"/></mets:file><mets:file ID=\"FILE_0241_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000242.tif\"/></mets:file><mets:file ID=\"FILE_0242_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000243.tif\"/></mets:file><mets:file ID=\"FILE_0243_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000244.tif\"/></mets:file><mets:file ID=\"FILE_0244_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000245.tif\"/></mets:file><mets:file ID=\"FILE_0245_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000246.tif\"/></mets:file><mets:file ID=\"FILE_0246_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000247.tif\"/></mets:file><mets:file ID=\"FILE_0247_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000248.tif\"/></mets:file><mets:file ID=\"FILE_0248_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000249.tif\"/></mets:file><mets:file ID=\"FILE_0249_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000250.tif\"/></mets:file><mets:file ID=\"FILE_0250_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000251.tif\"/></mets:file><mets:file ID=\"FILE_0251_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000252.tif\"/></mets:file><mets:file ID=\"FILE_0252_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000253.tif\"/></mets:file><mets:file ID=\"FILE_0253_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000254.tif\"/></mets:file><mets:file ID=\"FILE_0254_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000255.tif\"/></mets:file><mets:file ID=\"FILE_0255_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000256.tif\"/></mets:file><mets:file ID=\"FILE_0256_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000257.tif\"/></mets:file><mets:file ID=\"FILE_0257_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000258.tif\"/></mets:file><mets:file ID=\"FILE_0258_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000259.tif\"/></mets:file><mets:file ID=\"FILE_0259_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000260.tif\"/></mets:file><mets:file ID=\"FILE_0260_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000261.tif\"/></mets:file><mets:file ID=\"FILE_0261_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000262.tif\"/></mets:file><mets:file ID=\"FILE_0262_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000263.tif\"/></mets:file><mets:file ID=\"FILE_0263_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000264.tif\"/></mets:file><mets:file ID=\"FILE_0264_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000265.tif\"/></mets:file><mets:file ID=\"FILE_0265_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000266.tif\"/></mets:file><mets:file ID=\"FILE_0266_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000267.tif\"/></mets:file><mets:file ID=\"FILE_0267_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000268.tif\"/></mets:file><mets:file ID=\"FILE_0268_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000269.tif\"/></mets:file><mets:file ID=\"FILE_0269_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000270.tif\"/></mets:file><mets:file ID=\"FILE_0270_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000271.tif\"/></mets:file><mets:file ID=\"FILE_0271_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000272.tif\"/></mets:file><mets:file ID=\"FILE_0272_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000273.tif\"/></mets:file><mets:file ID=\"FILE_0273_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000274.tif\"/></mets:file><mets:file ID=\"FILE_0274_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000275.tif\"/></mets:file><mets:file ID=\"FILE_0275_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000276.tif\"/></mets:file><mets:file ID=\"FILE_0276_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000277.tif\"/></mets:file><mets:file ID=\"FILE_0277_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000278.tif\"/></mets:file><mets:file ID=\"FILE_0278_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000279.tif\"/></mets:file><mets:file ID=\"FILE_0279_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000280.tif\"/></mets:file><mets:file ID=\"FILE_0280_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000281.tif\"/></mets:file><mets:file ID=\"FILE_0281_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000282.tif\"/></mets:file><mets:file ID=\"FILE_0282_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000283.tif\"/></mets:file><mets:file ID=\"FILE_0283_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000284.tif\"/></mets:file><mets:file ID=\"FILE_0284_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000285.tif\"/></mets:file><mets:file ID=\"FILE_0285_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000286.tif\"/></mets:file><mets:file ID=\"FILE_0286_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000287.tif\"/></mets:file><mets:file ID=\"FILE_0287_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000288.tif\"/></mets:file><mets:file ID=\"FILE_0288_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000289.tif\"/></mets:file><mets:file ID=\"FILE_0289_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000290.tif\"/></mets:file><mets:file ID=\"FILE_0290_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000291.tif\"/></mets:file><mets:file ID=\"FILE_0291_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000292.tif\"/></mets:file><mets:file ID=\"FILE_0292_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000293.tif\"/></mets:file><mets:file ID=\"FILE_0293_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000294.tif\"/></mets:file><mets:file ID=\"FILE_0294_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000295.tif\"/></mets:file><mets:file ID=\"FILE_0295_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000296.tif\"/></mets:file><mets:file ID=\"FILE_0296_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000297.tif\"/></mets:file><mets:file ID=\"FILE_0297_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000298.tif\"/></mets:file><mets:file ID=\"FILE_0298_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000299.tif\"/></mets:file><mets:file ID=\"FILE_0299_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000300.tif\"/></mets:file><mets:file ID=\"FILE_0300_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000301.tif\"/></mets:file><mets:file ID=\"FILE_0301_PRESENTATION\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/tiff/PPN137363540/00000302.tif\"/></mets:file></mets:fileGrp><mets:fileGrp USE=\"MAX\"><mets:file ID=\"FILE_0000_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000001.jpg\"/></mets:file><mets:file ID=\"FILE_0001_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000002.jpg\"/></mets:file><mets:file ID=\"FILE_0002_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000003.jpg\"/></mets:file><mets:file ID=\"FILE_0003_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000004.jpg\"/></mets:file><mets:file ID=\"FILE_0004_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000005.jpg\"/></mets:file><mets:file ID=\"FILE_0005_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000006.jpg\"/></mets:file><mets:file ID=\"FILE_0006_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000007.jpg\"/></mets:file><mets:file ID=\"FILE_0007_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000008.jpg\"/></mets:file><mets:file ID=\"FILE_0008_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000009.jpg\"/></mets:file><mets:file ID=\"FILE_0009_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000010.jpg\"/></mets:file><mets:file ID=\"FILE_0010_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000011.jpg\"/></mets:file><mets:file ID=\"FILE_0011_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000012.jpg\"/></mets:file><mets:file ID=\"FILE_0012_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000013.jpg\"/></mets:file><mets:file ID=\"FILE_0013_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000014.jpg\"/></mets:file><mets:file ID=\"FILE_0014_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000015.jpg\"/></mets:file><mets:file ID=\"FILE_0015_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000016.jpg\"/></mets:file><mets:file ID=\"FILE_0016_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000017.jpg\"/></mets:file><mets:file ID=\"FILE_0017_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000018.jpg\"/></mets:file><mets:file ID=\"FILE_0018_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000019.jpg\"/></mets:file><mets:file ID=\"FILE_0019_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000020.jpg\"/></mets:file><mets:file ID=\"FILE_0020_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000021.jpg\"/></mets:file><mets:file ID=\"FILE_0021_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000022.jpg\"/></mets:file><mets:file ID=\"FILE_0022_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000023.jpg\"/></mets:file><mets:file ID=\"FILE_0023_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000024.jpg\"/></mets:file><mets:file ID=\"FILE_0024_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000025.jpg\"/></mets:file><mets:file ID=\"FILE_0025_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000026.jpg\"/></mets:file><mets:file ID=\"FILE_0026_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000027.jpg\"/></mets:file><mets:file ID=\"FILE_0027_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000028.jpg\"/></mets:file><mets:file ID=\"FILE_0028_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000029.jpg\"/></mets:file><mets:file ID=\"FILE_0029_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000030.jpg\"/></mets:file><mets:file ID=\"FILE_0030_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000031.jpg\"/></mets:file><mets:file ID=\"FILE_0031_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000032.jpg\"/></mets:file><mets:file ID=\"FILE_0032_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000033.jpg\"/></mets:file><mets:file ID=\"FILE_0033_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000034.jpg\"/></mets:file><mets:file ID=\"FILE_0034_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000035.jpg\"/></mets:file><mets:file ID=\"FILE_0035_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000036.jpg\"/></mets:file><mets:file ID=\"FILE_0036_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000037.jpg\"/></mets:file><mets:file ID=\"FILE_0037_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000038.jpg\"/></mets:file><mets:file ID=\"FILE_0038_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000039.jpg\"/></mets:file><mets:file ID=\"FILE_0039_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000040.jpg\"/></mets:file><mets:file ID=\"FILE_0040_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000041.jpg\"/></mets:file><mets:file ID=\"FILE_0041_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000042.jpg\"/></mets:file><mets:file ID=\"FILE_0042_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000043.jpg\"/></mets:file><mets:file ID=\"FILE_0043_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000044.jpg\"/></mets:file><mets:file ID=\"FILE_0044_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000045.jpg\"/></mets:file><mets:file ID=\"FILE_0045_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000046.jpg\"/></mets:file><mets:file ID=\"FILE_0046_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000047.jpg\"/></mets:file><mets:file ID=\"FILE_0047_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000048.jpg\"/></mets:file><mets:file ID=\"FILE_0048_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000049.jpg\"/></mets:file><mets:file ID=\"FILE_0049_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000050.jpg\"/></mets:file><mets:file ID=\"FILE_0050_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000051.jpg\"/></mets:file><mets:file ID=\"FILE_0051_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000052.jpg\"/></mets:file><mets:file ID=\"FILE_0052_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000053.jpg\"/></mets:file><mets:file ID=\"FILE_0053_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000054.jpg\"/></mets:file><mets:file ID=\"FILE_0054_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000055.jpg\"/></mets:file><mets:file ID=\"FILE_0055_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000056.jpg\"/></mets:file><mets:file ID=\"FILE_0056_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000057.jpg\"/></mets:file><mets:file ID=\"FILE_0057_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000058.jpg\"/></mets:file><mets:file ID=\"FILE_0058_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000059.jpg\"/></mets:file><mets:file ID=\"FILE_0059_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000060.jpg\"/></mets:file><mets:file ID=\"FILE_0060_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000061.jpg\"/></mets:file><mets:file ID=\"FILE_0061_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000062.jpg\"/></mets:file><mets:file ID=\"FILE_0062_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000063.jpg\"/></mets:file><mets:file ID=\"FILE_0063_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000064.jpg\"/></mets:file><mets:file ID=\"FILE_0064_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000065.jpg\"/></mets:file><mets:file ID=\"FILE_0065_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000066.jpg\"/></mets:file><mets:file ID=\"FILE_0066_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000067.jpg\"/></mets:file><mets:file ID=\"FILE_0067_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000068.jpg\"/></mets:file><mets:file ID=\"FILE_0068_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000069.jpg\"/></mets:file><mets:file ID=\"FILE_0069_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000070.jpg\"/></mets:file><mets:file ID=\"FILE_0070_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000071.jpg\"/></mets:file><mets:file ID=\"FILE_0071_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000072.jpg\"/></mets:file><mets:file ID=\"FILE_0072_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000073.jpg\"/></mets:file><mets:file ID=\"FILE_0073_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000074.jpg\"/></mets:file><mets:file ID=\"FILE_0074_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000075.jpg\"/></mets:file><mets:file ID=\"FILE_0075_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000076.jpg\"/></mets:file><mets:file ID=\"FILE_0076_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000077.jpg\"/></mets:file><mets:file ID=\"FILE_0077_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000078.jpg\"/></mets:file><mets:file ID=\"FILE_0078_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000079.jpg\"/></mets:file><mets:file ID=\"FILE_0079_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000080.jpg\"/></mets:file><mets:file ID=\"FILE_0080_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000081.jpg\"/></mets:file><mets:file ID=\"FILE_0081_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000082.jpg\"/></mets:file><mets:file ID=\"FILE_0082_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000083.jpg\"/></mets:file><mets:file ID=\"FILE_0083_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000084.jpg\"/></mets:file><mets:file ID=\"FILE_0084_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000085.jpg\"/></mets:file><mets:file ID=\"FILE_0085_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000086.jpg\"/></mets:file><mets:file ID=\"FILE_0086_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000087.jpg\"/></mets:file><mets:file ID=\"FILE_0087_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000088.jpg\"/></mets:file><mets:file ID=\"FILE_0088_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000089.jpg\"/></mets:file><mets:file ID=\"FILE_0089_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000090.jpg\"/></mets:file><mets:file ID=\"FILE_0090_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000091.jpg\"/></mets:file><mets:file ID=\"FILE_0091_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000092.jpg\"/></mets:file><mets:file ID=\"FILE_0092_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000093.jpg\"/></mets:file><mets:file ID=\"FILE_0093_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000094.jpg\"/></mets:file><mets:file ID=\"FILE_0094_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000095.jpg\"/></mets:file><mets:file ID=\"FILE_0095_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000096.jpg\"/></mets:file><mets:file ID=\"FILE_0096_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000097.jpg\"/></mets:file><mets:file ID=\"FILE_0097_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000098.jpg\"/></mets:file><mets:file ID=\"FILE_0098_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000099.jpg\"/></mets:file><mets:file ID=\"FILE_0099_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000100.jpg\"/></mets:file><mets:file ID=\"FILE_0100_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000101.jpg\"/></mets:file><mets:file ID=\"FILE_0101_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000102.jpg\"/></mets:file><mets:file ID=\"FILE_0102_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000103.jpg\"/></mets:file><mets:file ID=\"FILE_0103_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000104.jpg\"/></mets:file><mets:file ID=\"FILE_0104_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000105.jpg\"/></mets:file><mets:file ID=\"FILE_0105_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000106.jpg\"/></mets:file><mets:file ID=\"FILE_0106_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000107.jpg\"/></mets:file><mets:file ID=\"FILE_0107_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000108.jpg\"/></mets:file><mets:file ID=\"FILE_0108_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000109.jpg\"/></mets:file><mets:file ID=\"FILE_0109_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000110.jpg\"/></mets:file><mets:file ID=\"FILE_0110_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000111.jpg\"/></mets:file><mets:file ID=\"FILE_0111_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000112.jpg\"/></mets:file><mets:file ID=\"FILE_0112_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000113.jpg\"/></mets:file><mets:file ID=\"FILE_0113_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000114.jpg\"/></mets:file><mets:file ID=\"FILE_0114_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000115.jpg\"/></mets:file><mets:file ID=\"FILE_0115_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000116.jpg\"/></mets:file><mets:file ID=\"FILE_0116_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000117.jpg\"/></mets:file><mets:file ID=\"FILE_0117_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000118.jpg\"/></mets:file><mets:file ID=\"FILE_0118_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000119.jpg\"/></mets:file><mets:file ID=\"FILE_0119_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000120.jpg\"/></mets:file><mets:file ID=\"FILE_0120_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000121.jpg\"/></mets:file><mets:file ID=\"FILE_0121_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000122.jpg\"/></mets:file><mets:file ID=\"FILE_0122_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000123.jpg\"/></mets:file><mets:file ID=\"FILE_0123_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000124.jpg\"/></mets:file><mets:file ID=\"FILE_0124_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000125.jpg\"/></mets:file><mets:file ID=\"FILE_0125_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000126.jpg\"/></mets:file><mets:file ID=\"FILE_0126_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000127.jpg\"/></mets:file><mets:file ID=\"FILE_0127_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000128.jpg\"/></mets:file><mets:file ID=\"FILE_0128_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000129.jpg\"/></mets:file><mets:file ID=\"FILE_0129_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000130.jpg\"/></mets:file><mets:file ID=\"FILE_0130_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000131.jpg\"/></mets:file><mets:file ID=\"FILE_0131_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000132.jpg\"/></mets:file><mets:file ID=\"FILE_0132_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000133.jpg\"/></mets:file><mets:file ID=\"FILE_0133_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000134.jpg\"/></mets:file><mets:file ID=\"FILE_0134_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000135.jpg\"/></mets:file><mets:file ID=\"FILE_0135_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000136.jpg\"/></mets:file><mets:file ID=\"FILE_0136_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000137.jpg\"/></mets:file><mets:file ID=\"FILE_0137_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000138.jpg\"/></mets:file><mets:file ID=\"FILE_0138_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000139.jpg\"/></mets:file><mets:file ID=\"FILE_0139_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000140.jpg\"/></mets:file><mets:file ID=\"FILE_0140_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000141.jpg\"/></mets:file><mets:file ID=\"FILE_0141_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000142.jpg\"/></mets:file><mets:file ID=\"FILE_0142_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000143.jpg\"/></mets:file><mets:file ID=\"FILE_0143_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000144.jpg\"/></mets:file><mets:file ID=\"FILE_0144_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000145.jpg\"/></mets:file><mets:file ID=\"FILE_0145_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000146.jpg\"/></mets:file><mets:file ID=\"FILE_0146_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000147.jpg\"/></mets:file><mets:file ID=\"FILE_0147_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000148.jpg\"/></mets:file><mets:file ID=\"FILE_0148_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000149.jpg\"/></mets:file><mets:file ID=\"FILE_0149_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000150.jpg\"/></mets:file><mets:file ID=\"FILE_0150_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000151.jpg\"/></mets:file><mets:file ID=\"FILE_0151_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000152.jpg\"/></mets:file><mets:file ID=\"FILE_0152_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000153.jpg\"/></mets:file><mets:file ID=\"FILE_0153_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000154.jpg\"/></mets:file><mets:file ID=\"FILE_0154_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000155.jpg\"/></mets:file><mets:file ID=\"FILE_0155_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000156.jpg\"/></mets:file><mets:file ID=\"FILE_0156_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000157.jpg\"/></mets:file><mets:file ID=\"FILE_0157_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000158.jpg\"/></mets:file><mets:file ID=\"FILE_0158_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000159.jpg\"/></mets:file><mets:file ID=\"FILE_0159_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000160.jpg\"/></mets:file><mets:file ID=\"FILE_0160_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000161.jpg\"/></mets:file><mets:file ID=\"FILE_0161_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000162.jpg\"/></mets:file><mets:file ID=\"FILE_0162_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000163.jpg\"/></mets:file><mets:file ID=\"FILE_0163_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000164.jpg\"/></mets:file><mets:file ID=\"FILE_0164_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000165.jpg\"/></mets:file><mets:file ID=\"FILE_0165_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000166.jpg\"/></mets:file><mets:file ID=\"FILE_0166_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000167.jpg\"/></mets:file><mets:file ID=\"FILE_0167_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000168.jpg\"/></mets:file><mets:file ID=\"FILE_0168_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000169.jpg\"/></mets:file><mets:file ID=\"FILE_0169_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000170.jpg\"/></mets:file><mets:file ID=\"FILE_0170_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000171.jpg\"/></mets:file><mets:file ID=\"FILE_0171_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000172.jpg\"/></mets:file><mets:file ID=\"FILE_0172_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000173.jpg\"/></mets:file><mets:file ID=\"FILE_0173_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000174.jpg\"/></mets:file><mets:file ID=\"FILE_0174_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000175.jpg\"/></mets:file><mets:file ID=\"FILE_0175_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000176.jpg\"/></mets:file><mets:file ID=\"FILE_0176_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000177.jpg\"/></mets:file><mets:file ID=\"FILE_0177_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000178.jpg\"/></mets:file><mets:file ID=\"FILE_0178_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000179.jpg\"/></mets:file><mets:file ID=\"FILE_0179_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000180.jpg\"/></mets:file><mets:file ID=\"FILE_0180_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000181.jpg\"/></mets:file><mets:file ID=\"FILE_0181_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000182.jpg\"/></mets:file><mets:file ID=\"FILE_0182_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000183.jpg\"/></mets:file><mets:file ID=\"FILE_0183_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000184.jpg\"/></mets:file><mets:file ID=\"FILE_0184_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000185.jpg\"/></mets:file><mets:file ID=\"FILE_0185_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000186.jpg\"/></mets:file><mets:file ID=\"FILE_0186_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000187.jpg\"/></mets:file><mets:file ID=\"FILE_0187_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000188.jpg\"/></mets:file><mets:file ID=\"FILE_0188_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000189.jpg\"/></mets:file><mets:file ID=\"FILE_0189_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000190.jpg\"/></mets:file><mets:file ID=\"FILE_0190_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000191.jpg\"/></mets:file><mets:file ID=\"FILE_0191_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000192.jpg\"/></mets:file><mets:file ID=\"FILE_0192_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000193.jpg\"/></mets:file><mets:file ID=\"FILE_0193_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000194.jpg\"/></mets:file><mets:file ID=\"FILE_0194_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000195.jpg\"/></mets:file><mets:file ID=\"FILE_0195_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000196.jpg\"/></mets:file><mets:file ID=\"FILE_0196_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000197.jpg\"/></mets:file><mets:file ID=\"FILE_0197_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000198.jpg\"/></mets:file><mets:file ID=\"FILE_0198_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000199.jpg\"/></mets:file><mets:file ID=\"FILE_0199_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000200.jpg\"/></mets:file><mets:file ID=\"FILE_0200_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000201.jpg\"/></mets:file><mets:file ID=\"FILE_0201_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000202.jpg\"/></mets:file><mets:file ID=\"FILE_0202_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000203.jpg\"/></mets:file><mets:file ID=\"FILE_0203_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000204.jpg\"/></mets:file><mets:file ID=\"FILE_0204_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000205.jpg\"/></mets:file><mets:file ID=\"FILE_0205_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000206.jpg\"/></mets:file><mets:file ID=\"FILE_0206_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000207.jpg\"/></mets:file><mets:file ID=\"FILE_0207_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000208.jpg\"/></mets:file><mets:file ID=\"FILE_0208_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000209.jpg\"/></mets:file><mets:file ID=\"FILE_0209_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000210.jpg\"/></mets:file><mets:file ID=\"FILE_0210_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000211.jpg\"/></mets:file><mets:file ID=\"FILE_0211_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000212.jpg\"/></mets:file><mets:file ID=\"FILE_0212_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000213.jpg\"/></mets:file><mets:file ID=\"FILE_0213_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000214.jpg\"/></mets:file><mets:file ID=\"FILE_0214_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000215.jpg\"/></mets:file><mets:file ID=\"FILE_0215_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000216.jpg\"/></mets:file><mets:file ID=\"FILE_0216_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000217.jpg\"/></mets:file><mets:file ID=\"FILE_0217_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000218.jpg\"/></mets:file><mets:file ID=\"FILE_0218_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000219.jpg\"/></mets:file><mets:file ID=\"FILE_0219_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000220.jpg\"/></mets:file><mets:file ID=\"FILE_0220_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000221.jpg\"/></mets:file><mets:file ID=\"FILE_0221_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000222.jpg\"/></mets:file><mets:file ID=\"FILE_0222_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000223.jpg\"/></mets:file><mets:file ID=\"FILE_0223_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000224.jpg\"/></mets:file><mets:file ID=\"FILE_0224_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000225.jpg\"/></mets:file><mets:file ID=\"FILE_0225_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000226.jpg\"/></mets:file><mets:file ID=\"FILE_0226_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000227.jpg\"/></mets:file><mets:file ID=\"FILE_0227_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000228.jpg\"/></mets:file><mets:file ID=\"FILE_0228_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000229.jpg\"/></mets:file><mets:file ID=\"FILE_0229_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000230.jpg\"/></mets:file><mets:file ID=\"FILE_0230_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000231.jpg\"/></mets:file><mets:file ID=\"FILE_0231_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000232.jpg\"/></mets:file><mets:file ID=\"FILE_0232_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000233.jpg\"/></mets:file><mets:file ID=\"FILE_0233_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000234.jpg\"/></mets:file><mets:file ID=\"FILE_0234_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000235.jpg\"/></mets:file><mets:file ID=\"FILE_0235_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000236.jpg\"/></mets:file><mets:file ID=\"FILE_0236_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000237.jpg\"/></mets:file><mets:file ID=\"FILE_0237_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000238.jpg\"/></mets:file><mets:file ID=\"FILE_0238_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000239.jpg\"/></mets:file><mets:file ID=\"FILE_0239_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000240.jpg\"/></mets:file><mets:file ID=\"FILE_0240_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000241.jpg\"/></mets:file><mets:file ID=\"FILE_0241_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000242.jpg\"/></mets:file><mets:file ID=\"FILE_0242_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000243.jpg\"/></mets:file><mets:file ID=\"FILE_0243_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000244.jpg\"/></mets:file><mets:file ID=\"FILE_0244_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000245.jpg\"/></mets:file><mets:file ID=\"FILE_0245_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000246.jpg\"/></mets:file><mets:file ID=\"FILE_0246_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000247.jpg\"/></mets:file><mets:file ID=\"FILE_0247_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000248.jpg\"/></mets:file><mets:file ID=\"FILE_0248_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000249.jpg\"/></mets:file><mets:file ID=\"FILE_0249_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000250.jpg\"/></mets:file><mets:file ID=\"FILE_0250_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000251.jpg\"/></mets:file><mets:file ID=\"FILE_0251_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000252.jpg\"/></mets:file><mets:file ID=\"FILE_0252_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000253.jpg\"/></mets:file><mets:file ID=\"FILE_0253_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000254.jpg\"/></mets:file><mets:file ID=\"FILE_0254_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000255.jpg\"/></mets:file><mets:file ID=\"FILE_0255_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000256.jpg\"/></mets:file><mets:file ID=\"FILE_0256_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000257.jpg\"/></mets:file><mets:file ID=\"FILE_0257_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000258.jpg\"/></mets:file><mets:file ID=\"FILE_0258_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000259.jpg\"/></mets:file><mets:file ID=\"FILE_0259_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000260.jpg\"/></mets:file><mets:file ID=\"FILE_0260_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000261.jpg\"/></mets:file><mets:file ID=\"FILE_0261_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000262.jpg\"/></mets:file><mets:file ID=\"FILE_0262_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000263.jpg\"/></mets:file><mets:file ID=\"FILE_0263_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000264.jpg\"/></mets:file><mets:file ID=\"FILE_0264_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000265.jpg\"/></mets:file><mets:file ID=\"FILE_0265_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000266.jpg\"/></mets:file><mets:file ID=\"FILE_0266_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000267.jpg\"/></mets:file><mets:file ID=\"FILE_0267_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000268.jpg\"/></mets:file><mets:file ID=\"FILE_0268_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000269.jpg\"/></mets:file><mets:file ID=\"FILE_0269_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000270.jpg\"/></mets:file><mets:file ID=\"FILE_0270_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000271.jpg\"/></mets:file><mets:file ID=\"FILE_0271_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000272.jpg\"/></mets:file><mets:file ID=\"FILE_0272_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000273.jpg\"/></mets:file><mets:file ID=\"FILE_0273_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000274.jpg\"/></mets:file><mets:file ID=\"FILE_0274_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000275.jpg\"/></mets:file><mets:file ID=\"FILE_0275_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000276.jpg\"/></mets:file><mets:file ID=\"FILE_0276_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000277.jpg\"/></mets:file><mets:file ID=\"FILE_0277_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000278.jpg\"/></mets:file><mets:file ID=\"FILE_0278_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000279.jpg\"/></mets:file><mets:file ID=\"FILE_0279_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000280.jpg\"/></mets:file><mets:file ID=\"FILE_0280_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000281.jpg\"/></mets:file><mets:file ID=\"FILE_0281_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000282.jpg\"/></mets:file><mets:file ID=\"FILE_0282_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000283.jpg\"/></mets:file><mets:file ID=\"FILE_0283_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000284.jpg\"/></mets:file><mets:file ID=\"FILE_0284_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000285.jpg\"/></mets:file><mets:file ID=\"FILE_0285_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000286.jpg\"/></mets:file><mets:file ID=\"FILE_0286_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000287.jpg\"/></mets:file><mets:file ID=\"FILE_0287_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000288.jpg\"/></mets:file><mets:file ID=\"FILE_0288_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000289.jpg\"/></mets:file><mets:file ID=\"FILE_0289_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000290.jpg\"/></mets:file><mets:file ID=\"FILE_0290_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000291.jpg\"/></mets:file><mets:file ID=\"FILE_0291_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000292.jpg\"/></mets:file><mets:file ID=\"FILE_0292_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000293.jpg\"/></mets:file><mets:file ID=\"FILE_0293_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000294.jpg\"/></mets:file><mets:file ID=\"FILE_0294_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000295.jpg\"/></mets:file><mets:file ID=\"FILE_0295_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000296.jpg\"/></mets:file><mets:file ID=\"FILE_0296_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000297.jpg\"/></mets:file><mets:file ID=\"FILE_0297_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000298.jpg\"/></mets:file><mets:file ID=\"FILE_0298_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000299.jpg\"/></mets:file><mets:file ID=\"FILE_0299_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000300.jpg\"/></mets:file><mets:file ID=\"FILE_0300_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000301.jpg\"/></mets:file><mets:file ID=\"FILE_0301_MAX\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/1200/0/00000302.jpg\"/></mets:file></mets:fileGrp><mets:fileGrp USE=\"THUMBS\"><mets:file ID=\"FILE_0000_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000001.jpg\"/></mets:file><mets:file ID=\"FILE_0001_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000002.jpg\"/></mets:file><mets:file ID=\"FILE_0002_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000003.jpg\"/></mets:file><mets:file ID=\"FILE_0003_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000004.jpg\"/></mets:file><mets:file ID=\"FILE_0004_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000005.jpg\"/></mets:file><mets:file ID=\"FILE_0005_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000006.jpg\"/></mets:file><mets:file ID=\"FILE_0006_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000007.jpg\"/></mets:file><mets:file ID=\"FILE_0007_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000008.jpg\"/></mets:file><mets:file ID=\"FILE_0008_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000009.jpg\"/></mets:file><mets:file ID=\"FILE_0009_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000010.jpg\"/></mets:file><mets:file ID=\"FILE_0010_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000011.jpg\"/></mets:file><mets:file ID=\"FILE_0011_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000012.jpg\"/></mets:file><mets:file ID=\"FILE_0012_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000013.jpg\"/></mets:file><mets:file ID=\"FILE_0013_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000014.jpg\"/></mets:file><mets:file ID=\"FILE_0014_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000015.jpg\"/></mets:file><mets:file ID=\"FILE_0015_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000016.jpg\"/></mets:file><mets:file ID=\"FILE_0016_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000017.jpg\"/></mets:file><mets:file ID=\"FILE_0017_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000018.jpg\"/></mets:file><mets:file ID=\"FILE_0018_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000019.jpg\"/></mets:file><mets:file ID=\"FILE_0019_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000020.jpg\"/></mets:file><mets:file ID=\"FILE_0020_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000021.jpg\"/></mets:file><mets:file ID=\"FILE_0021_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000022.jpg\"/></mets:file><mets:file ID=\"FILE_0022_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000023.jpg\"/></mets:file><mets:file ID=\"FILE_0023_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000024.jpg\"/></mets:file><mets:file ID=\"FILE_0024_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000025.jpg\"/></mets:file><mets:file ID=\"FILE_0025_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000026.jpg\"/></mets:file><mets:file ID=\"FILE_0026_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000027.jpg\"/></mets:file><mets:file ID=\"FILE_0027_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000028.jpg\"/></mets:file><mets:file ID=\"FILE_0028_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000029.jpg\"/></mets:file><mets:file ID=\"FILE_0029_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000030.jpg\"/></mets:file><mets:file ID=\"FILE_0030_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000031.jpg\"/></mets:file><mets:file ID=\"FILE_0031_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000032.jpg\"/></mets:file><mets:file ID=\"FILE_0032_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000033.jpg\"/></mets:file><mets:file ID=\"FILE_0033_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000034.jpg\"/></mets:file><mets:file ID=\"FILE_0034_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000035.jpg\"/></mets:file><mets:file ID=\"FILE_0035_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000036.jpg\"/></mets:file><mets:file ID=\"FILE_0036_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000037.jpg\"/></mets:file><mets:file ID=\"FILE_0037_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000038.jpg\"/></mets:file><mets:file ID=\"FILE_0038_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000039.jpg\"/></mets:file><mets:file ID=\"FILE_0039_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000040.jpg\"/></mets:file><mets:file ID=\"FILE_0040_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000041.jpg\"/></mets:file><mets:file ID=\"FILE_0041_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000042.jpg\"/></mets:file><mets:file ID=\"FILE_0042_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000043.jpg\"/></mets:file><mets:file ID=\"FILE_0043_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000044.jpg\"/></mets:file><mets:file ID=\"FILE_0044_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000045.jpg\"/></mets:file><mets:file ID=\"FILE_0045_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000046.jpg\"/></mets:file><mets:file ID=\"FILE_0046_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000047.jpg\"/></mets:file><mets:file ID=\"FILE_0047_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000048.jpg\"/></mets:file><mets:file ID=\"FILE_0048_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000049.jpg\"/></mets:file><mets:file ID=\"FILE_0049_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000050.jpg\"/></mets:file><mets:file ID=\"FILE_0050_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000051.jpg\"/></mets:file><mets:file ID=\"FILE_0051_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000052.jpg\"/></mets:file><mets:file ID=\"FILE_0052_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000053.jpg\"/></mets:file><mets:file ID=\"FILE_0053_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000054.jpg\"/></mets:file><mets:file ID=\"FILE_0054_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000055.jpg\"/></mets:file><mets:file ID=\"FILE_0055_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000056.jpg\"/></mets:file><mets:file ID=\"FILE_0056_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000057.jpg\"/></mets:file><mets:file ID=\"FILE_0057_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000058.jpg\"/></mets:file><mets:file ID=\"FILE_0058_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000059.jpg\"/></mets:file><mets:file ID=\"FILE_0059_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000060.jpg\"/></mets:file><mets:file ID=\"FILE_0060_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000061.jpg\"/></mets:file><mets:file ID=\"FILE_0061_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000062.jpg\"/></mets:file><mets:file ID=\"FILE_0062_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000063.jpg\"/></mets:file><mets:file ID=\"FILE_0063_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000064.jpg\"/></mets:file><mets:file ID=\"FILE_0064_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000065.jpg\"/></mets:file><mets:file ID=\"FILE_0065_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000066.jpg\"/></mets:file><mets:file ID=\"FILE_0066_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000067.jpg\"/></mets:file><mets:file ID=\"FILE_0067_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000068.jpg\"/></mets:file><mets:file ID=\"FILE_0068_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000069.jpg\"/></mets:file><mets:file ID=\"FILE_0069_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000070.jpg\"/></mets:file><mets:file ID=\"FILE_0070_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000071.jpg\"/></mets:file><mets:file ID=\"FILE_0071_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000072.jpg\"/></mets:file><mets:file ID=\"FILE_0072_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000073.jpg\"/></mets:file><mets:file ID=\"FILE_0073_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000074.jpg\"/></mets:file><mets:file ID=\"FILE_0074_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000075.jpg\"/></mets:file><mets:file ID=\"FILE_0075_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000076.jpg\"/></mets:file><mets:file ID=\"FILE_0076_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000077.jpg\"/></mets:file><mets:file ID=\"FILE_0077_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000078.jpg\"/></mets:file><mets:file ID=\"FILE_0078_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000079.jpg\"/></mets:file><mets:file ID=\"FILE_0079_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000080.jpg\"/></mets:file><mets:file ID=\"FILE_0080_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000081.jpg\"/></mets:file><mets:file ID=\"FILE_0081_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000082.jpg\"/></mets:file><mets:file ID=\"FILE_0082_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000083.jpg\"/></mets:file><mets:file ID=\"FILE_0083_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000084.jpg\"/></mets:file><mets:file ID=\"FILE_0084_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000085.jpg\"/></mets:file><mets:file ID=\"FILE_0085_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000086.jpg\"/></mets:file><mets:file ID=\"FILE_0086_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000087.jpg\"/></mets:file><mets:file ID=\"FILE_0087_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000088.jpg\"/></mets:file><mets:file ID=\"FILE_0088_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000089.jpg\"/></mets:file><mets:file ID=\"FILE_0089_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000090.jpg\"/></mets:file><mets:file ID=\"FILE_0090_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000091.jpg\"/></mets:file><mets:file ID=\"FILE_0091_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000092.jpg\"/></mets:file><mets:file ID=\"FILE_0092_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000093.jpg\"/></mets:file><mets:file ID=\"FILE_0093_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000094.jpg\"/></mets:file><mets:file ID=\"FILE_0094_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000095.jpg\"/></mets:file><mets:file ID=\"FILE_0095_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000096.jpg\"/></mets:file><mets:file ID=\"FILE_0096_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000097.jpg\"/></mets:file><mets:file ID=\"FILE_0097_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000098.jpg\"/></mets:file><mets:file ID=\"FILE_0098_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000099.jpg\"/></mets:file><mets:file ID=\"FILE_0099_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000100.jpg\"/></mets:file><mets:file ID=\"FILE_0100_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000101.jpg\"/></mets:file><mets:file ID=\"FILE_0101_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000102.jpg\"/></mets:file><mets:file ID=\"FILE_0102_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000103.jpg\"/></mets:file><mets:file ID=\"FILE_0103_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000104.jpg\"/></mets:file><mets:file ID=\"FILE_0104_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000105.jpg\"/></mets:file><mets:file ID=\"FILE_0105_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000106.jpg\"/></mets:file><mets:file ID=\"FILE_0106_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000107.jpg\"/></mets:file><mets:file ID=\"FILE_0107_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000108.jpg\"/></mets:file><mets:file ID=\"FILE_0108_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000109.jpg\"/></mets:file><mets:file ID=\"FILE_0109_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000110.jpg\"/></mets:file><mets:file ID=\"FILE_0110_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000111.jpg\"/></mets:file><mets:file ID=\"FILE_0111_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000112.jpg\"/></mets:file><mets:file ID=\"FILE_0112_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000113.jpg\"/></mets:file><mets:file ID=\"FILE_0113_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000114.jpg\"/></mets:file><mets:file ID=\"FILE_0114_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000115.jpg\"/></mets:file><mets:file ID=\"FILE_0115_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000116.jpg\"/></mets:file><mets:file ID=\"FILE_0116_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000117.jpg\"/></mets:file><mets:file ID=\"FILE_0117_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000118.jpg\"/></mets:file><mets:file ID=\"FILE_0118_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000119.jpg\"/></mets:file><mets:file ID=\"FILE_0119_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000120.jpg\"/></mets:file><mets:file ID=\"FILE_0120_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000121.jpg\"/></mets:file><mets:file ID=\"FILE_0121_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000122.jpg\"/></mets:file><mets:file ID=\"FILE_0122_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000123.jpg\"/></mets:file><mets:file ID=\"FILE_0123_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000124.jpg\"/></mets:file><mets:file ID=\"FILE_0124_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000125.jpg\"/></mets:file><mets:file ID=\"FILE_0125_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000126.jpg\"/></mets:file><mets:file ID=\"FILE_0126_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000127.jpg\"/></mets:file><mets:file ID=\"FILE_0127_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000128.jpg\"/></mets:file><mets:file ID=\"FILE_0128_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000129.jpg\"/></mets:file><mets:file ID=\"FILE_0129_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000130.jpg\"/></mets:file><mets:file ID=\"FILE_0130_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000131.jpg\"/></mets:file><mets:file ID=\"FILE_0131_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000132.jpg\"/></mets:file><mets:file ID=\"FILE_0132_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000133.jpg\"/></mets:file><mets:file ID=\"FILE_0133_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000134.jpg\"/></mets:file><mets:file ID=\"FILE_0134_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000135.jpg\"/></mets:file><mets:file ID=\"FILE_0135_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000136.jpg\"/></mets:file><mets:file ID=\"FILE_0136_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000137.jpg\"/></mets:file><mets:file ID=\"FILE_0137_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000138.jpg\"/></mets:file><mets:file ID=\"FILE_0138_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000139.jpg\"/></mets:file><mets:file ID=\"FILE_0139_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000140.jpg\"/></mets:file><mets:file ID=\"FILE_0140_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000141.jpg\"/></mets:file><mets:file ID=\"FILE_0141_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000142.jpg\"/></mets:file><mets:file ID=\"FILE_0142_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000143.jpg\"/></mets:file><mets:file ID=\"FILE_0143_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000144.jpg\"/></mets:file><mets:file ID=\"FILE_0144_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000145.jpg\"/></mets:file><mets:file ID=\"FILE_0145_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000146.jpg\"/></mets:file><mets:file ID=\"FILE_0146_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000147.jpg\"/></mets:file><mets:file ID=\"FILE_0147_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000148.jpg\"/></mets:file><mets:file ID=\"FILE_0148_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000149.jpg\"/></mets:file><mets:file ID=\"FILE_0149_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000150.jpg\"/></mets:file><mets:file ID=\"FILE_0150_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000151.jpg\"/></mets:file><mets:file ID=\"FILE_0151_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000152.jpg\"/></mets:file><mets:file ID=\"FILE_0152_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000153.jpg\"/></mets:file><mets:file ID=\"FILE_0153_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000154.jpg\"/></mets:file><mets:file ID=\"FILE_0154_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000155.jpg\"/></mets:file><mets:file ID=\"FILE_0155_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000156.jpg\"/></mets:file><mets:file ID=\"FILE_0156_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000157.jpg\"/></mets:file><mets:file ID=\"FILE_0157_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000158.jpg\"/></mets:file><mets:file ID=\"FILE_0158_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000159.jpg\"/></mets:file><mets:file ID=\"FILE_0159_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000160.jpg\"/></mets:file><mets:file ID=\"FILE_0160_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000161.jpg\"/></mets:file><mets:file ID=\"FILE_0161_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000162.jpg\"/></mets:file><mets:file ID=\"FILE_0162_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000163.jpg\"/></mets:file><mets:file ID=\"FILE_0163_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000164.jpg\"/></mets:file><mets:file ID=\"FILE_0164_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000165.jpg\"/></mets:file><mets:file ID=\"FILE_0165_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000166.jpg\"/></mets:file><mets:file ID=\"FILE_0166_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000167.jpg\"/></mets:file><mets:file ID=\"FILE_0167_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000168.jpg\"/></mets:file><mets:file ID=\"FILE_0168_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000169.jpg\"/></mets:file><mets:file ID=\"FILE_0169_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000170.jpg\"/></mets:file><mets:file ID=\"FILE_0170_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000171.jpg\"/></mets:file><mets:file ID=\"FILE_0171_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000172.jpg\"/></mets:file><mets:file ID=\"FILE_0172_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000173.jpg\"/></mets:file><mets:file ID=\"FILE_0173_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000174.jpg\"/></mets:file><mets:file ID=\"FILE_0174_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000175.jpg\"/></mets:file><mets:file ID=\"FILE_0175_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000176.jpg\"/></mets:file><mets:file ID=\"FILE_0176_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000177.jpg\"/></mets:file><mets:file ID=\"FILE_0177_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000178.jpg\"/></mets:file><mets:file ID=\"FILE_0178_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000179.jpg\"/></mets:file><mets:file ID=\"FILE_0179_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000180.jpg\"/></mets:file><mets:file ID=\"FILE_0180_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000181.jpg\"/></mets:file><mets:file ID=\"FILE_0181_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000182.jpg\"/></mets:file><mets:file ID=\"FILE_0182_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000183.jpg\"/></mets:file><mets:file ID=\"FILE_0183_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000184.jpg\"/></mets:file><mets:file ID=\"FILE_0184_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000185.jpg\"/></mets:file><mets:file ID=\"FILE_0185_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000186.jpg\"/></mets:file><mets:file ID=\"FILE_0186_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000187.jpg\"/></mets:file><mets:file ID=\"FILE_0187_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000188.jpg\"/></mets:file><mets:file ID=\"FILE_0188_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000189.jpg\"/></mets:file><mets:file ID=\"FILE_0189_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000190.jpg\"/></mets:file><mets:file ID=\"FILE_0190_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000191.jpg\"/></mets:file><mets:file ID=\"FILE_0191_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000192.jpg\"/></mets:file><mets:file ID=\"FILE_0192_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000193.jpg\"/></mets:file><mets:file ID=\"FILE_0193_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000194.jpg\"/></mets:file><mets:file ID=\"FILE_0194_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000195.jpg\"/></mets:file><mets:file ID=\"FILE_0195_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000196.jpg\"/></mets:file><mets:file ID=\"FILE_0196_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000197.jpg\"/></mets:file><mets:file ID=\"FILE_0197_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000198.jpg\"/></mets:file><mets:file ID=\"FILE_0198_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000199.jpg\"/></mets:file><mets:file ID=\"FILE_0199_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000200.jpg\"/></mets:file><mets:file ID=\"FILE_0200_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000201.jpg\"/></mets:file><mets:file ID=\"FILE_0201_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000202.jpg\"/></mets:file><mets:file ID=\"FILE_0202_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000203.jpg\"/></mets:file><mets:file ID=\"FILE_0203_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000204.jpg\"/></mets:file><mets:file ID=\"FILE_0204_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000205.jpg\"/></mets:file><mets:file ID=\"FILE_0205_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000206.jpg\"/></mets:file><mets:file ID=\"FILE_0206_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000207.jpg\"/></mets:file><mets:file ID=\"FILE_0207_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000208.jpg\"/></mets:file><mets:file ID=\"FILE_0208_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000209.jpg\"/></mets:file><mets:file ID=\"FILE_0209_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000210.jpg\"/></mets:file><mets:file ID=\"FILE_0210_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000211.jpg\"/></mets:file><mets:file ID=\"FILE_0211_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000212.jpg\"/></mets:file><mets:file ID=\"FILE_0212_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000213.jpg\"/></mets:file><mets:file ID=\"FILE_0213_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000214.jpg\"/></mets:file><mets:file ID=\"FILE_0214_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000215.jpg\"/></mets:file><mets:file ID=\"FILE_0215_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000216.jpg\"/></mets:file><mets:file ID=\"FILE_0216_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000217.jpg\"/></mets:file><mets:file ID=\"FILE_0217_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000218.jpg\"/></mets:file><mets:file ID=\"FILE_0218_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000219.jpg\"/></mets:file><mets:file ID=\"FILE_0219_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000220.jpg\"/></mets:file><mets:file ID=\"FILE_0220_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000221.jpg\"/></mets:file><mets:file ID=\"FILE_0221_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000222.jpg\"/></mets:file><mets:file ID=\"FILE_0222_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000223.jpg\"/></mets:file><mets:file ID=\"FILE_0223_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000224.jpg\"/></mets:file><mets:file ID=\"FILE_0224_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000225.jpg\"/></mets:file><mets:file ID=\"FILE_0225_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000226.jpg\"/></mets:file><mets:file ID=\"FILE_0226_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000227.jpg\"/></mets:file><mets:file ID=\"FILE_0227_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000228.jpg\"/></mets:file><mets:file ID=\"FILE_0228_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000229.jpg\"/></mets:file><mets:file ID=\"FILE_0229_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000230.jpg\"/></mets:file><mets:file ID=\"FILE_0230_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000231.jpg\"/></mets:file><mets:file ID=\"FILE_0231_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000232.jpg\"/></mets:file><mets:file ID=\"FILE_0232_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000233.jpg\"/></mets:file><mets:file ID=\"FILE_0233_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000234.jpg\"/></mets:file><mets:file ID=\"FILE_0234_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000235.jpg\"/></mets:file><mets:file ID=\"FILE_0235_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000236.jpg\"/></mets:file><mets:file ID=\"FILE_0236_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000237.jpg\"/></mets:file><mets:file ID=\"FILE_0237_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000238.jpg\"/></mets:file><mets:file ID=\"FILE_0238_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000239.jpg\"/></mets:file><mets:file ID=\"FILE_0239_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000240.jpg\"/></mets:file><mets:file ID=\"FILE_0240_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000241.jpg\"/></mets:file><mets:file ID=\"FILE_0241_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000242.jpg\"/></mets:file><mets:file ID=\"FILE_0242_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000243.jpg\"/></mets:file><mets:file ID=\"FILE_0243_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000244.jpg\"/></mets:file><mets:file ID=\"FILE_0244_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000245.jpg\"/></mets:file><mets:file ID=\"FILE_0245_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000246.jpg\"/></mets:file><mets:file ID=\"FILE_0246_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000247.jpg\"/></mets:file><mets:file ID=\"FILE_0247_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000248.jpg\"/></mets:file><mets:file ID=\"FILE_0248_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000249.jpg\"/></mets:file><mets:file ID=\"FILE_0249_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000250.jpg\"/></mets:file><mets:file ID=\"FILE_0250_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000251.jpg\"/></mets:file><mets:file ID=\"FILE_0251_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000252.jpg\"/></mets:file><mets:file ID=\"FILE_0252_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000253.jpg\"/></mets:file><mets:file ID=\"FILE_0253_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000254.jpg\"/></mets:file><mets:file ID=\"FILE_0254_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000255.jpg\"/></mets:file><mets:file ID=\"FILE_0255_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000256.jpg\"/></mets:file><mets:file ID=\"FILE_0256_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000257.jpg\"/></mets:file><mets:file ID=\"FILE_0257_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000258.jpg\"/></mets:file><mets:file ID=\"FILE_0258_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000259.jpg\"/></mets:file><mets:file ID=\"FILE_0259_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000260.jpg\"/></mets:file><mets:file ID=\"FILE_0260_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000261.jpg\"/></mets:file><mets:file ID=\"FILE_0261_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000262.jpg\"/></mets:file><mets:file ID=\"FILE_0262_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000263.jpg\"/></mets:file><mets:file ID=\"FILE_0263_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000264.jpg\"/></mets:file><mets:file ID=\"FILE_0264_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000265.jpg\"/></mets:file><mets:file ID=\"FILE_0265_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000266.jpg\"/></mets:file><mets:file ID=\"FILE_0266_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000267.jpg\"/></mets:file><mets:file ID=\"FILE_0267_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000268.jpg\"/></mets:file><mets:file ID=\"FILE_0268_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000269.jpg\"/></mets:file><mets:file ID=\"FILE_0269_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000270.jpg\"/></mets:file><mets:file ID=\"FILE_0270_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000271.jpg\"/></mets:file><mets:file ID=\"FILE_0271_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000272.jpg\"/></mets:file><mets:file ID=\"FILE_0272_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000273.jpg\"/></mets:file><mets:file ID=\"FILE_0273_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000274.jpg\"/></mets:file><mets:file ID=\"FILE_0274_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000275.jpg\"/></mets:file><mets:file ID=\"FILE_0275_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000276.jpg\"/></mets:file><mets:file ID=\"FILE_0276_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000277.jpg\"/></mets:file><mets:file ID=\"FILE_0277_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000278.jpg\"/></mets:file><mets:file ID=\"FILE_0278_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000279.jpg\"/></mets:file><mets:file ID=\"FILE_0279_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000280.jpg\"/></mets:file><mets:file ID=\"FILE_0280_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000281.jpg\"/></mets:file><mets:file ID=\"FILE_0281_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000282.jpg\"/></mets:file><mets:file ID=\"FILE_0282_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000283.jpg\"/></mets:file><mets:file ID=\"FILE_0283_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000284.jpg\"/></mets:file><mets:file ID=\"FILE_0284_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000285.jpg\"/></mets:file><mets:file ID=\"FILE_0285_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000286.jpg\"/></mets:file><mets:file ID=\"FILE_0286_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000287.jpg\"/></mets:file><mets:file ID=\"FILE_0287_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000288.jpg\"/></mets:file><mets:file ID=\"FILE_0288_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000289.jpg\"/></mets:file><mets:file ID=\"FILE_0289_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000290.jpg\"/></mets:file><mets:file ID=\"FILE_0290_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000291.jpg\"/></mets:file><mets:file ID=\"FILE_0291_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000292.jpg\"/></mets:file><mets:file ID=\"FILE_0292_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000293.jpg\"/></mets:file><mets:file ID=\"FILE_0293_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000294.jpg\"/></mets:file><mets:file ID=\"FILE_0294_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000295.jpg\"/></mets:file><mets:file ID=\"FILE_0295_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000296.jpg\"/></mets:file><mets:file ID=\"FILE_0296_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000297.jpg\"/></mets:file><mets:file ID=\"FILE_0297_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000298.jpg\"/></mets:file><mets:file ID=\"FILE_0298_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000299.jpg\"/></mets:file><mets:file ID=\"FILE_0299_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000300.jpg\"/></mets:file><mets:file ID=\"FILE_0300_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000301.jpg\"/></mets:file><mets:file ID=\"FILE_0301_THUMBS\" MIMETYPE=\"image/jpeg\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz-srv1.sub.uni-goettingen.de/content/PPN137363540/150/0/00000302.jpg\"/></mets:file></mets:fileGrp><mets:fileGrp USE=\"LOCAL\"><mets:file ID=\"FILE_0000\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000001.tif\"/></mets:file><mets:file ID=\"FILE_0001\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000002.tif\"/></mets:file><mets:file ID=\"FILE_0002\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000003.tif\"/></mets:file><mets:file ID=\"FILE_0003\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000004.tif\"/></mets:file><mets:file ID=\"FILE_0004\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000005.tif\"/></mets:file><mets:file ID=\"FILE_0005\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000006.tif\"/></mets:file><mets:file ID=\"FILE_0006\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000007.tif\"/></mets:file><mets:file ID=\"FILE_0007\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000008.tif\"/></mets:file><mets:file ID=\"FILE_0008\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000009.tif\"/></mets:file><mets:file ID=\"FILE_0009\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000010.tif\"/></mets:file><mets:file ID=\"FILE_0010\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000011.tif\"/></mets:file><mets:file ID=\"FILE_0011\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000012.tif\"/></mets:file><mets:file ID=\"FILE_0012\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000013.tif\"/></mets:file><mets:file ID=\"FILE_0013\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000014.tif\"/></mets:file><mets:file ID=\"FILE_0014\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000015.tif\"/></mets:file><mets:file ID=\"FILE_0015\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000016.tif\"/></mets:file><mets:file ID=\"FILE_0016\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000017.tif\"/></mets:file><mets:file ID=\"FILE_0017\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000018.tif\"/></mets:file><mets:file ID=\"FILE_0018\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000019.tif\"/></mets:file><mets:file ID=\"FILE_0019\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000020.tif\"/></mets:file><mets:file ID=\"FILE_0020\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000021.tif\"/></mets:file><mets:file ID=\"FILE_0021\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000022.tif\"/></mets:file><mets:file ID=\"FILE_0022\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000023.tif\"/></mets:file><mets:file ID=\"FILE_0023\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000024.tif\"/></mets:file><mets:file ID=\"FILE_0024\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000025.tif\"/></mets:file><mets:file ID=\"FILE_0025\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000026.tif\"/></mets:file><mets:file ID=\"FILE_0026\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000027.tif\"/></mets:file><mets:file ID=\"FILE_0027\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000028.tif\"/></mets:file><mets:file ID=\"FILE_0028\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000029.tif\"/></mets:file><mets:file ID=\"FILE_0029\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000030.tif\"/></mets:file><mets:file ID=\"FILE_0030\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000031.tif\"/></mets:file><mets:file ID=\"FILE_0031\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000032.tif\"/></mets:file><mets:file ID=\"FILE_0032\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000033.tif\"/></mets:file><mets:file ID=\"FILE_0033\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000034.tif\"/></mets:file><mets:file ID=\"FILE_0034\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000035.tif\"/></mets:file><mets:file ID=\"FILE_0035\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000036.tif\"/></mets:file><mets:file ID=\"FILE_0036\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000037.tif\"/></mets:file><mets:file ID=\"FILE_0037\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000038.tif\"/></mets:file><mets:file ID=\"FILE_0038\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000039.tif\"/></mets:file><mets:file ID=\"FILE_0039\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000040.tif\"/></mets:file><mets:file ID=\"FILE_0040\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000041.tif\"/></mets:file><mets:file ID=\"FILE_0041\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000042.tif\"/></mets:file><mets:file ID=\"FILE_0042\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000043.tif\"/></mets:file><mets:file ID=\"FILE_0043\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000044.tif\"/></mets:file><mets:file ID=\"FILE_0044\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000045.tif\"/></mets:file><mets:file ID=\"FILE_0045\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000046.tif\"/></mets:file><mets:file ID=\"FILE_0046\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000047.tif\"/></mets:file><mets:file ID=\"FILE_0047\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000048.tif\"/></mets:file><mets:file ID=\"FILE_0048\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000049.tif\"/></mets:file><mets:file ID=\"FILE_0049\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000050.tif\"/></mets:file><mets:file ID=\"FILE_0050\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000051.tif\"/></mets:file><mets:file ID=\"FILE_0051\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000052.tif\"/></mets:file><mets:file ID=\"FILE_0052\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000053.tif\"/></mets:file><mets:file ID=\"FILE_0053\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000054.tif\"/></mets:file><mets:file ID=\"FILE_0054\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000055.tif\"/></mets:file><mets:file ID=\"FILE_0055\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000056.tif\"/></mets:file><mets:file ID=\"FILE_0056\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000057.tif\"/></mets:file><mets:file ID=\"FILE_0057\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000058.tif\"/></mets:file><mets:file ID=\"FILE_0058\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000059.tif\"/></mets:file><mets:file ID=\"FILE_0059\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000060.tif\"/></mets:file><mets:file ID=\"FILE_0060\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000061.tif\"/></mets:file><mets:file ID=\"FILE_0061\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000062.tif\"/></mets:file><mets:file ID=\"FILE_0062\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000063.tif\"/></mets:file><mets:file ID=\"FILE_0063\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000064.tif\"/></mets:file><mets:file ID=\"FILE_0064\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000065.tif\"/></mets:file><mets:file ID=\"FILE_0065\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000066.tif\"/></mets:file><mets:file ID=\"FILE_0066\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000067.tif\"/></mets:file><mets:file ID=\"FILE_0067\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000068.tif\"/></mets:file><mets:file ID=\"FILE_0068\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000069.tif\"/></mets:file><mets:file ID=\"FILE_0069\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000070.tif\"/></mets:file><mets:file ID=\"FILE_0070\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000071.tif\"/></mets:file><mets:file ID=\"FILE_0071\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000072.tif\"/></mets:file><mets:file ID=\"FILE_0072\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000073.tif\"/></mets:file><mets:file ID=\"FILE_0073\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000074.tif\"/></mets:file><mets:file ID=\"FILE_0074\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000075.tif\"/></mets:file><mets:file ID=\"FILE_0075\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000076.tif\"/></mets:file><mets:file ID=\"FILE_0076\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000077.tif\"/></mets:file><mets:file ID=\"FILE_0077\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000078.tif\"/></mets:file><mets:file ID=\"FILE_0078\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000079.tif\"/></mets:file><mets:file ID=\"FILE_0079\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000080.tif\"/></mets:file><mets:file ID=\"FILE_0080\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000081.tif\"/></mets:file><mets:file ID=\"FILE_0081\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000082.tif\"/></mets:file><mets:file ID=\"FILE_0082\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000083.tif\"/></mets:file><mets:file ID=\"FILE_0083\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000084.tif\"/></mets:file><mets:file ID=\"FILE_0084\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000085.tif\"/></mets:file><mets:file ID=\"FILE_0085\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000086.tif\"/></mets:file><mets:file ID=\"FILE_0086\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000087.tif\"/></mets:file><mets:file ID=\"FILE_0087\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000088.tif\"/></mets:file><mets:file ID=\"FILE_0088\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000089.tif\"/></mets:file><mets:file ID=\"FILE_0089\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000090.tif\"/></mets:file><mets:file ID=\"FILE_0090\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000091.tif\"/></mets:file><mets:file ID=\"FILE_0091\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000092.tif\"/></mets:file><mets:file ID=\"FILE_0092\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000093.tif\"/></mets:file><mets:file ID=\"FILE_0093\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000094.tif\"/></mets:file><mets:file ID=\"FILE_0094\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000095.tif\"/></mets:file><mets:file ID=\"FILE_0095\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000096.tif\"/></mets:file><mets:file ID=\"FILE_0096\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000097.tif\"/></mets:file><mets:file ID=\"FILE_0097\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000098.tif\"/></mets:file><mets:file ID=\"FILE_0098\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000099.tif\"/></mets:file><mets:file ID=\"FILE_0099\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000100.tif\"/></mets:file><mets:file ID=\"FILE_0100\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000101.tif\"/></mets:file><mets:file ID=\"FILE_0101\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000102.tif\"/></mets:file><mets:file ID=\"FILE_0102\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000103.tif\"/></mets:file><mets:file ID=\"FILE_0103\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000104.tif\"/></mets:file><mets:file ID=\"FILE_0104\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000105.tif\"/></mets:file><mets:file ID=\"FILE_0105\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000106.tif\"/></mets:file><mets:file ID=\"FILE_0106\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000107.tif\"/></mets:file><mets:file ID=\"FILE_0107\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000108.tif\"/></mets:file><mets:file ID=\"FILE_0108\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000109.tif\"/></mets:file><mets:file ID=\"FILE_0109\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000110.tif\"/></mets:file><mets:file ID=\"FILE_0110\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000111.tif\"/></mets:file><mets:file ID=\"FILE_0111\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000112.tif\"/></mets:file><mets:file ID=\"FILE_0112\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000113.tif\"/></mets:file><mets:file ID=\"FILE_0113\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000114.tif\"/></mets:file><mets:file ID=\"FILE_0114\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000115.tif\"/></mets:file><mets:file ID=\"FILE_0115\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000116.tif\"/></mets:file><mets:file ID=\"FILE_0116\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000117.tif\"/></mets:file><mets:file ID=\"FILE_0117\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000118.tif\"/></mets:file><mets:file ID=\"FILE_0118\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000119.tif\"/></mets:file><mets:file ID=\"FILE_0119\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000120.tif\"/></mets:file><mets:file ID=\"FILE_0120\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000121.tif\"/></mets:file><mets:file ID=\"FILE_0121\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000122.tif\"/></mets:file><mets:file ID=\"FILE_0122\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000123.tif\"/></mets:file><mets:file ID=\"FILE_0123\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000124.tif\"/></mets:file><mets:file ID=\"FILE_0124\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000125.tif\"/></mets:file><mets:file ID=\"FILE_0125\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000126.tif\"/></mets:file><mets:file ID=\"FILE_0126\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000127.tif\"/></mets:file><mets:file ID=\"FILE_0127\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000128.tif\"/></mets:file><mets:file ID=\"FILE_0128\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000129.tif\"/></mets:file><mets:file ID=\"FILE_0129\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000130.tif\"/></mets:file><mets:file ID=\"FILE_0130\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000131.tif\"/></mets:file><mets:file ID=\"FILE_0131\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000132.tif\"/></mets:file><mets:file ID=\"FILE_0132\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000133.tif\"/></mets:file><mets:file ID=\"FILE_0133\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000134.tif\"/></mets:file><mets:file ID=\"FILE_0134\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000135.tif\"/></mets:file><mets:file ID=\"FILE_0135\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000136.tif\"/></mets:file><mets:file ID=\"FILE_0136\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000137.tif\"/></mets:file><mets:file ID=\"FILE_0137\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000138.tif\"/></mets:file><mets:file ID=\"FILE_0138\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000139.tif\"/></mets:file><mets:file ID=\"FILE_0139\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000140.tif\"/></mets:file><mets:file ID=\"FILE_0140\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000141.tif\"/></mets:file><mets:file ID=\"FILE_0141\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000142.tif\"/></mets:file><mets:file ID=\"FILE_0142\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000143.tif\"/></mets:file><mets:file ID=\"FILE_0143\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000144.tif\"/></mets:file><mets:file ID=\"FILE_0144\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000145.tif\"/></mets:file><mets:file ID=\"FILE_0145\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000146.tif\"/></mets:file><mets:file ID=\"FILE_0146\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000147.tif\"/></mets:file><mets:file ID=\"FILE_0147\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000148.tif\"/></mets:file><mets:file ID=\"FILE_0148\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000149.tif\"/></mets:file><mets:file ID=\"FILE_0149\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000150.tif\"/></mets:file><mets:file ID=\"FILE_0150\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000151.tif\"/></mets:file><mets:file ID=\"FILE_0151\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000152.tif\"/></mets:file><mets:file ID=\"FILE_0152\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000153.tif\"/></mets:file><mets:file ID=\"FILE_0153\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000154.tif\"/></mets:file><mets:file ID=\"FILE_0154\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000155.tif\"/></mets:file><mets:file ID=\"FILE_0155\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000156.tif\"/></mets:file><mets:file ID=\"FILE_0156\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000157.tif\"/></mets:file><mets:file ID=\"FILE_0157\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000158.tif\"/></mets:file><mets:file ID=\"FILE_0158\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000159.tif\"/></mets:file><mets:file ID=\"FILE_0159\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000160.tif\"/></mets:file><mets:file ID=\"FILE_0160\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000161.tif\"/></mets:file><mets:file ID=\"FILE_0161\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000162.tif\"/></mets:file><mets:file ID=\"FILE_0162\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000163.tif\"/></mets:file><mets:file ID=\"FILE_0163\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000164.tif\"/></mets:file><mets:file ID=\"FILE_0164\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000165.tif\"/></mets:file><mets:file ID=\"FILE_0165\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000166.tif\"/></mets:file><mets:file ID=\"FILE_0166\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000167.tif\"/></mets:file><mets:file ID=\"FILE_0167\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000168.tif\"/></mets:file><mets:file ID=\"FILE_0168\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000169.tif\"/></mets:file><mets:file ID=\"FILE_0169\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000170.tif\"/></mets:file><mets:file ID=\"FILE_0170\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000171.tif\"/></mets:file><mets:file ID=\"FILE_0171\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000172.tif\"/></mets:file><mets:file ID=\"FILE_0172\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000173.tif\"/></mets:file><mets:file ID=\"FILE_0173\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000174.tif\"/></mets:file><mets:file ID=\"FILE_0174\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000175.tif\"/></mets:file><mets:file ID=\"FILE_0175\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000176.tif\"/></mets:file><mets:file ID=\"FILE_0176\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000177.tif\"/></mets:file><mets:file ID=\"FILE_0177\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000178.tif\"/></mets:file><mets:file ID=\"FILE_0178\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000179.tif\"/></mets:file><mets:file ID=\"FILE_0179\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000180.tif\"/></mets:file><mets:file ID=\"FILE_0180\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000181.tif\"/></mets:file><mets:file ID=\"FILE_0181\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000182.tif\"/></mets:file><mets:file ID=\"FILE_0182\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000183.tif\"/></mets:file><mets:file ID=\"FILE_0183\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000184.tif\"/></mets:file><mets:file ID=\"FILE_0184\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000185.tif\"/></mets:file><mets:file ID=\"FILE_0185\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000186.tif\"/></mets:file><mets:file ID=\"FILE_0186\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000187.tif\"/></mets:file><mets:file ID=\"FILE_0187\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000188.tif\"/></mets:file><mets:file ID=\"FILE_0188\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000189.tif\"/></mets:file><mets:file ID=\"FILE_0189\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000190.tif\"/></mets:file><mets:file ID=\"FILE_0190\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000191.tif\"/></mets:file><mets:file ID=\"FILE_0191\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000192.tif\"/></mets:file><mets:file ID=\"FILE_0192\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000193.tif\"/></mets:file><mets:file ID=\"FILE_0193\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000194.tif\"/></mets:file><mets:file ID=\"FILE_0194\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000195.tif\"/></mets:file><mets:file ID=\"FILE_0195\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000196.tif\"/></mets:file><mets:file ID=\"FILE_0196\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000197.tif\"/></mets:file><mets:file ID=\"FILE_0197\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000198.tif\"/></mets:file><mets:file ID=\"FILE_0198\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000199.tif\"/></mets:file><mets:file ID=\"FILE_0199\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000200.tif\"/></mets:file><mets:file ID=\"FILE_0200\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000201.tif\"/></mets:file><mets:file ID=\"FILE_0201\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000202.tif\"/></mets:file><mets:file ID=\"FILE_0202\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000203.tif\"/></mets:file><mets:file ID=\"FILE_0203\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000204.tif\"/></mets:file><mets:file ID=\"FILE_0204\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000205.tif\"/></mets:file><mets:file ID=\"FILE_0205\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000206.tif\"/></mets:file><mets:file ID=\"FILE_0206\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000207.tif\"/></mets:file><mets:file ID=\"FILE_0207\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000208.tif\"/></mets:file><mets:file ID=\"FILE_0208\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000209.tif\"/></mets:file><mets:file ID=\"FILE_0209\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000210.tif\"/></mets:file><mets:file ID=\"FILE_0210\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000211.tif\"/></mets:file><mets:file ID=\"FILE_0211\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000212.tif\"/></mets:file><mets:file ID=\"FILE_0212\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000213.tif\"/></mets:file><mets:file ID=\"FILE_0213\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000214.tif\"/></mets:file><mets:file ID=\"FILE_0214\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000215.tif\"/></mets:file><mets:file ID=\"FILE_0215\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000216.tif\"/></mets:file><mets:file ID=\"FILE_0216\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000217.tif\"/></mets:file><mets:file ID=\"FILE_0217\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000218.tif\"/></mets:file><mets:file ID=\"FILE_0218\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000219.tif\"/></mets:file><mets:file ID=\"FILE_0219\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000220.tif\"/></mets:file><mets:file ID=\"FILE_0220\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000221.tif\"/></mets:file><mets:file ID=\"FILE_0221\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000222.tif\"/></mets:file><mets:file ID=\"FILE_0222\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000223.tif\"/></mets:file><mets:file ID=\"FILE_0223\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000224.tif\"/></mets:file><mets:file ID=\"FILE_0224\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000225.tif\"/></mets:file><mets:file ID=\"FILE_0225\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000226.tif\"/></mets:file><mets:file ID=\"FILE_0226\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000227.tif\"/></mets:file><mets:file ID=\"FILE_0227\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000228.tif\"/></mets:file><mets:file ID=\"FILE_0228\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000229.tif\"/></mets:file><mets:file ID=\"FILE_0229\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000230.tif\"/></mets:file><mets:file ID=\"FILE_0230\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000231.tif\"/></mets:file><mets:file ID=\"FILE_0231\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000232.tif\"/></mets:file><mets:file ID=\"FILE_0232\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000233.tif\"/></mets:file><mets:file ID=\"FILE_0233\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000234.tif\"/></mets:file><mets:file ID=\"FILE_0234\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000235.tif\"/></mets:file><mets:file ID=\"FILE_0235\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000236.tif\"/></mets:file><mets:file ID=\"FILE_0236\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000237.tif\"/></mets:file><mets:file ID=\"FILE_0237\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000238.tif\"/></mets:file><mets:file ID=\"FILE_0238\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000239.tif\"/></mets:file><mets:file ID=\"FILE_0239\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000240.tif\"/></mets:file><mets:file ID=\"FILE_0240\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000241.tif\"/></mets:file><mets:file ID=\"FILE_0241\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000242.tif\"/></mets:file><mets:file ID=\"FILE_0242\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000243.tif\"/></mets:file><mets:file ID=\"FILE_0243\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000244.tif\"/></mets:file><mets:file ID=\"FILE_0244\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000245.tif\"/></mets:file><mets:file ID=\"FILE_0245\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000246.tif\"/></mets:file><mets:file ID=\"FILE_0246\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000247.tif\"/></mets:file><mets:file ID=\"FILE_0247\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000248.tif\"/></mets:file><mets:file ID=\"FILE_0248\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000249.tif\"/></mets:file><mets:file ID=\"FILE_0249\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000250.tif\"/></mets:file><mets:file ID=\"FILE_0250\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000251.tif\"/></mets:file><mets:file ID=\"FILE_0251\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000252.tif\"/></mets:file><mets:file ID=\"FILE_0252\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000253.tif\"/></mets:file><mets:file ID=\"FILE_0253\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000254.tif\"/></mets:file><mets:file ID=\"FILE_0254\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000255.tif\"/></mets:file><mets:file ID=\"FILE_0255\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000256.tif\"/></mets:file><mets:file ID=\"FILE_0256\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000257.tif\"/></mets:file><mets:file ID=\"FILE_0257\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000258.tif\"/></mets:file><mets:file ID=\"FILE_0258\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000259.tif\"/></mets:file><mets:file ID=\"FILE_0259\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000260.tif\"/></mets:file><mets:file ID=\"FILE_0260\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000261.tif\"/></mets:file><mets:file ID=\"FILE_0261\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000262.tif\"/></mets:file><mets:file ID=\"FILE_0262\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000263.tif\"/></mets:file><mets:file ID=\"FILE_0263\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000264.tif\"/></mets:file><mets:file ID=\"FILE_0264\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000265.tif\"/></mets:file><mets:file ID=\"FILE_0265\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000266.tif\"/></mets:file><mets:file ID=\"FILE_0266\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000267.tif\"/></mets:file><mets:file ID=\"FILE_0267\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000268.tif\"/></mets:file><mets:file ID=\"FILE_0268\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000269.tif\"/></mets:file><mets:file ID=\"FILE_0269\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000270.tif\"/></mets:file><mets:file ID=\"FILE_0270\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000271.tif\"/></mets:file><mets:file ID=\"FILE_0271\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000272.tif\"/></mets:file><mets:file ID=\"FILE_0272\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000273.tif\"/></mets:file><mets:file ID=\"FILE_0273\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000274.tif\"/></mets:file><mets:file ID=\"FILE_0274\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000275.tif\"/></mets:file><mets:file ID=\"FILE_0275\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000276.tif\"/></mets:file><mets:file ID=\"FILE_0276\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000277.tif\"/></mets:file><mets:file ID=\"FILE_0277\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000278.tif\"/></mets:file><mets:file ID=\"FILE_0278\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000279.tif\"/></mets:file><mets:file ID=\"FILE_0279\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000280.tif\"/></mets:file><mets:file ID=\"FILE_0280\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000281.tif\"/></mets:file><mets:file ID=\"FILE_0281\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000282.tif\"/></mets:file><mets:file ID=\"FILE_0282\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000283.tif\"/></mets:file><mets:file ID=\"FILE_0283\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000284.tif\"/></mets:file><mets:file ID=\"FILE_0284\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000285.tif\"/></mets:file><mets:file ID=\"FILE_0285\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000286.tif\"/></mets:file><mets:file ID=\"FILE_0286\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000287.tif\"/></mets:file><mets:file ID=\"FILE_0287\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000288.tif\"/></mets:file><mets:file ID=\"FILE_0288\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000289.tif\"/></mets:file><mets:file ID=\"FILE_0289\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000290.tif\"/></mets:file><mets:file ID=\"FILE_0290\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000291.tif\"/></mets:file><mets:file ID=\"FILE_0291\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000292.tif\"/></mets:file><mets:file ID=\"FILE_0292\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000293.tif\"/></mets:file><mets:file ID=\"FILE_0293\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000294.tif\"/></mets:file><mets:file ID=\"FILE_0294\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000295.tif\"/></mets:file><mets:file ID=\"FILE_0295\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000296.tif\"/></mets:file><mets:file ID=\"FILE_0296\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000297.tif\"/></mets:file><mets:file ID=\"FILE_0297\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000298.tif\"/></mets:file><mets:file ID=\"FILE_0298\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000299.tif\"/></mets:file><mets:file ID=\"FILE_0299\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000300.tif\"/></mets:file><mets:file ID=\"FILE_0300\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000301.tif\"/></mets:file><mets:file ID=\"FILE_0301\" MIMETYPE=\"image/tiff\"><mets:FLocat xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"file:///san/goobi/rusdml/Metadaten/31327/images/venuaccu_PPN665547242_0001_tif/00000302.tif\"/></mets:file></mets:fileGrp></mets:fileSec><mets:structMap TYPE=\"LOGICAL\"><mets:div ID=\"LOG_0002\" LABEL=\"Accurata, E Succinta Descrizione Topografica Delle Antichitá Di Roma\" TYPE=\"MultiVolumeWork\"><mets:mptr xmlns:xlink=\"http://www.w3.org/1999/xlink\" LOCTYPE=\"URL\" xlink:href=\"http://gdz.sub.uni-goettingen.de/mets/PPN137363532 .xml\"/><mets:div ADMID=\"AMD\" DMDID=\"DMDLOG_0001\" ID=\"LOG_0003\" LABEL=\"Accurata, E Succinta Descrizione Topografica Delle Antichitá Di Roma\" TYPE=\"Volume\"><mets:div ID=\"LOG_0004\" TYPE=\"TitlePage\"/><mets:div ID=\"LOG_0005\" TYPE=\"TitlePage\"/><mets:div DMDID=\"DMDLOG_0002\" ID=\"LOG_0006\" LABEL=\"Clemens Papa XIII. Ad futuram rei memoriam.\" TYPE=\"Dedication\"/><mets:div DMDID=\"DMDLOG_0003\" ID=\"LOG_0007\" LABEL=\"Avvertimento Al Lettore.\" TYPE=\"Preface\"/><mets:div DMDID=\"DMDLOG_0004\" ID=\"LOG_0008\" LABEL=\"Indice De' Capi Della Parte Prima.\" TYPE=\"TableOfContents\"/><mets:div DMDID=\"DMDLOG_0005\" ID=\"LOG_0009\" LABEL=\"Approvazione.\" TYPE=\"OtherDocStrct\"/><mets:div DMDID=\"DMDLOG_0006\" ID=\"LOG_0010\" LABEL=\"Introduzione Alla Topografia Di Roma.\" TYPE=\"Introduction\"/><mets:div DMDID=\"DMDLOG_0007\" ID=\"LOG_0011\" LABEL=\"Carta Topografica Delle Antichità Di Roma [...]\" TYPE=\"Figure\"/><mets:div DMDID=\"DMDLOG_0008\" ID=\"LOG_0012\" LABEL=\"Capo Primo Del Monte Palatino.\" TYPE=\"Chapter\"><mets:div DMDID=\"DMDLOG_0009\" ID=\"LOG_0013\" LABEL=\"[Taf.] 1 [- Taf.] 14\" TYPE=\"Figure\"/><mets:div DMDID=\"DMDLOG_0010\" ID=\"LOG_0014\" LABEL=\"Capo Primo Del Monte Palatino.\" TYPE=\"Chapter\"/></mets:div><mets:div DMDID=\"DMDLOG_0011\" ID=\"LOG_0015\" LABEL=\"Capo Secondo Del Foro Romano.\" TYPE=\"Chapter\"><mets:div DMDID=\"DMDLOG_0012\" ID=\"LOG_0016\" LABEL=\"[Taf.] 15 [- Taf.] 16\" TYPE=\"Figure\"/></mets:div><mets:div DMDID=\"DMDLOG_0013\" ID=\"LOG_0017\" LABEL=\"Capo Terzo Del Campidoglio.\" TYPE=\"Chapter\"><mets:div DMDID=\"DMDLOG_0014\" ID=\"LOG_0018\" LABEL=\"[Taf.] 17 [- Taf.] 22\" TYPE=\"Figure\"/></mets:div><mets:div DMDID=\"DMDLOG_0015\" ID=\"LOG_0019\" LABEL=\"Capo Quarto Fori di Cesare, d'Augusto, di Nerva, e di Trajano.\" TYPE=\"Chapter\"><mets:div DMDID=\"DMDLOG_0016\" ID=\"LOG_0020\" LABEL=\"[Taf.] 23 [-Taf.] 25\" TYPE=\"Figure\"/></mets:div><mets:div DMDID=\"DMDLOG_0017\" ID=\"LOG_0021\" LABEL=\"Capo Quinto Del Colle Quirinale.\" TYPE=\"Chapter\"><mets:div DMDID=\"DMDLOG_0018\" ID=\"LOG_0022\" LABEL=\"[Taf.] 26 [- Taf.] 33\" TYPE=\"Figure\"/></mets:div><mets:div DMDID=\"DMDLOG_0019\" ID=\"LOG_0023\" LABEL=\"Capo Sesto Monte Viminale.\" TYPE=\"Chapter\"/><mets:div DMDID=\"DMDLOG_0020\" ID=\"LOG_0024\" LABEL=\"Capo Settimo. Colle Esquilino.\" TYPE=\"Chapter\"><mets:div DMDID=\"DMDLOG_0021\" ID=\"LOG_0025\" LABEL=\"[Taf.] 34 [- Taf.] 55\" TYPE=\"Figure\"/></mets:div><mets:div DMDID=\"DMDLOG_0022\" ID=\"LOG_0026\" LABEL=\"Capo Ottavo Del Monte Celio.\" TYPE=\"Chapter\"><mets:div DMDID=\"DMDLOG_0023\" ID=\"LOG_0027\" LABEL=\"[Taf.] 56 [- Taf.] 59\" TYPE=\"Figure\"/></mets:div></mets:div></mets:div></mets:structMap><mets:structMap TYPE=\"PHYSICAL\"><mets:div DMDID=\"DMDPHYS_0000\" ID=\"PHYS_0000\" TYPE=\"physSequence\"><mets:div ID=\"PHYS_0001\" ORDER=\"1\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0000_MIN\"/><mets:fptr FILEID=\"FILE_0000_DEFAULT\"/><mets:fptr FILEID=\"FILE_0000_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0000_MAX\"/><mets:fptr FILEID=\"FILE_0000_THUMBS\"/><mets:fptr FILEID=\"FILE_0000\"/></mets:div><mets:div ID=\"PHYS_0002\" ORDER=\"2\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0001_MIN\"/><mets:fptr FILEID=\"FILE_0001_DEFAULT\"/><mets:fptr FILEID=\"FILE_0001_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0001_MAX\"/><mets:fptr FILEID=\"FILE_0001_THUMBS\"/><mets:fptr FILEID=\"FILE_0001\"/></mets:div><mets:div ID=\"PHYS_0003\" ORDER=\"3\" ORDERLABEL=\"[I]\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0002_MIN\"/><mets:fptr FILEID=\"FILE_0002_DEFAULT\"/><mets:fptr FILEID=\"FILE_0002_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0002_MAX\"/><mets:fptr FILEID=\"FILE_0002_THUMBS\"/><mets:fptr FILEID=\"FILE_0002\"/></mets:div><mets:div ID=\"PHYS_0004\" ORDER=\"4\" ORDERLABEL=\"[II]\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0003_MIN\"/><mets:fptr FILEID=\"FILE_0003_DEFAULT\"/><mets:fptr FILEID=\"FILE_0003_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0003_MAX\"/><mets:fptr FILEID=\"FILE_0003_THUMBS\"/><mets:fptr FILEID=\"FILE_0003\"/></mets:div><mets:div ID=\"PHYS_0005\" ORDER=\"5\" ORDERLABEL=\"[III]\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0004_MIN\"/><mets:fptr FILEID=\"FILE_0004_DEFAULT\"/><mets:fptr FILEID=\"FILE_0004_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0004_MAX\"/><mets:fptr FILEID=\"FILE_0004_THUMBS\"/><mets:fptr FILEID=\"FILE_0004\"/></mets:div><mets:div ID=\"PHYS_0006\" ORDER=\"6\" ORDERLABEL=\"[IV]\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0005_MIN\"/><mets:fptr FILEID=\"FILE_0005_DEFAULT\"/><mets:fptr FILEID=\"FILE_0005_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0005_MAX\"/><mets:fptr FILEID=\"FILE_0005_THUMBS\"/><mets:fptr FILEID=\"FILE_0005\"/></mets:div><mets:div ID=\"PHYS_0007\" ORDER=\"7\" ORDERLABEL=\"V\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0006_MIN\"/><mets:fptr FILEID=\"FILE_0006_DEFAULT\"/><mets:fptr FILEID=\"FILE_0006_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0006_MAX\"/><mets:fptr FILEID=\"FILE_0006_THUMBS\"/><mets:fptr FILEID=\"FILE_0006\"/></mets:div><mets:div ID=\"PHYS_0008\" ORDER=\"8\" ORDERLABEL=\"VI\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0007_MIN\"/><mets:fptr FILEID=\"FILE_0007_DEFAULT\"/><mets:fptr FILEID=\"FILE_0007_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0007_MAX\"/><mets:fptr FILEID=\"FILE_0007_THUMBS\"/><mets:fptr FILEID=\"FILE_0007\"/></mets:div><mets:div ID=\"PHYS_0009\" ORDER=\"9\" ORDERLABEL=\"VII\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0008_MIN\"/><mets:fptr FILEID=\"FILE_0008_DEFAULT\"/><mets:fptr FILEID=\"FILE_0008_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0008_MAX\"/><mets:fptr FILEID=\"FILE_0008_THUMBS\"/><mets:fptr FILEID=\"FILE_0008\"/></mets:div><mets:div ID=\"PHYS_0010\" ORDER=\"10\" ORDERLABEL=\"VIII\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0009_MIN\"/><mets:fptr FILEID=\"FILE_0009_DEFAULT\"/><mets:fptr FILEID=\"FILE_0009_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0009_MAX\"/><mets:fptr FILEID=\"FILE_0009_THUMBS\"/><mets:fptr FILEID=\"FILE_0009\"/></mets:div><mets:div ID=\"PHYS_0011\" ORDER=\"11\" ORDERLABEL=\"IX\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0010_MIN\"/><mets:fptr FILEID=\"FILE_0010_DEFAULT\"/><mets:fptr FILEID=\"FILE_0010_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0010_MAX\"/><mets:fptr FILEID=\"FILE_0010_THUMBS\"/><mets:fptr FILEID=\"FILE_0010\"/></mets:div><mets:div ID=\"PHYS_0012\" ORDER=\"12\" ORDERLABEL=\"X\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0011_MIN\"/><mets:fptr FILEID=\"FILE_0011_DEFAULT\"/><mets:fptr FILEID=\"FILE_0011_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0011_MAX\"/><mets:fptr FILEID=\"FILE_0011_THUMBS\"/><mets:fptr FILEID=\"FILE_0011\"/></mets:div><mets:div ID=\"PHYS_0013\" ORDER=\"13\" ORDERLABEL=\"XI\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0012_MIN\"/><mets:fptr FILEID=\"FILE_0012_DEFAULT\"/><mets:fptr FILEID=\"FILE_0012_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0012_MAX\"/><mets:fptr FILEID=\"FILE_0012_THUMBS\"/><mets:fptr FILEID=\"FILE_0012\"/></mets:div><mets:div ID=\"PHYS_0014\" ORDER=\"14\" ORDERLABEL=\"XII\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0013_MIN\"/><mets:fptr FILEID=\"FILE_0013_DEFAULT\"/><mets:fptr FILEID=\"FILE_0013_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0013_MAX\"/><mets:fptr FILEID=\"FILE_0013_THUMBS\"/><mets:fptr FILEID=\"FILE_0013\"/></mets:div><mets:div ID=\"PHYS_0015\" ORDER=\"15\" ORDERLABEL=\"XIII\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0014_MIN\"/><mets:fptr FILEID=\"FILE_0014_DEFAULT\"/><mets:fptr FILEID=\"FILE_0014_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0014_MAX\"/><mets:fptr FILEID=\"FILE_0014_THUMBS\"/><mets:fptr FILEID=\"FILE_0014\"/></mets:div><mets:div ID=\"PHYS_0016\" ORDER=\"16\" ORDERLABEL=\"XIV\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0015_MIN\"/><mets:fptr FILEID=\"FILE_0015_DEFAULT\"/><mets:fptr FILEID=\"FILE_0015_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0015_MAX\"/><mets:fptr FILEID=\"FILE_0015_THUMBS\"/><mets:fptr FILEID=\"FILE_0015\"/></mets:div><mets:div ID=\"PHYS_0017\" ORDER=\"17\" ORDERLABEL=\"XV\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0016_MIN\"/><mets:fptr FILEID=\"FILE_0016_DEFAULT\"/><mets:fptr FILEID=\"FILE_0016_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0016_MAX\"/><mets:fptr FILEID=\"FILE_0016_THUMBS\"/><mets:fptr FILEID=\"FILE_0016\"/></mets:div><mets:div ID=\"PHYS_0018\" ORDER=\"18\" ORDERLABEL=\"XVI\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0017_MIN\"/><mets:fptr FILEID=\"FILE_0017_DEFAULT\"/><mets:fptr FILEID=\"FILE_0017_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0017_MAX\"/><mets:fptr FILEID=\"FILE_0017_THUMBS\"/><mets:fptr FILEID=\"FILE_0017\"/></mets:div><mets:div ID=\"PHYS_0019\" ORDER=\"19\" ORDERLABEL=\"XVII\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0018_MIN\"/><mets:fptr FILEID=\"FILE_0018_DEFAULT\"/><mets:fptr FILEID=\"FILE_0018_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0018_MAX\"/><mets:fptr FILEID=\"FILE_0018_THUMBS\"/><mets:fptr FILEID=\"FILE_0018\"/></mets:div><mets:div ID=\"PHYS_0020\" ORDER=\"20\" ORDERLABEL=\"XVIII\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0019_MIN\"/><mets:fptr FILEID=\"FILE_0019_DEFAULT\"/><mets:fptr FILEID=\"FILE_0019_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0019_MAX\"/><mets:fptr FILEID=\"FILE_0019_THUMBS\"/><mets:fptr FILEID=\"FILE_0019\"/></mets:div><mets:div ID=\"PHYS_0021\" ORDER=\"21\" ORDERLABEL=\"XIX\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0020_MIN\"/><mets:fptr FILEID=\"FILE_0020_DEFAULT\"/><mets:fptr FILEID=\"FILE_0020_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0020_MAX\"/><mets:fptr FILEID=\"FILE_0020_THUMBS\"/><mets:fptr FILEID=\"FILE_0020\"/></mets:div><mets:div ID=\"PHYS_0022\" ORDER=\"22\" ORDERLABEL=\"XX\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0021_MIN\"/><mets:fptr FILEID=\"FILE_0021_DEFAULT\"/><mets:fptr FILEID=\"FILE_0021_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0021_MAX\"/><mets:fptr FILEID=\"FILE_0021_THUMBS\"/><mets:fptr FILEID=\"FILE_0021\"/></mets:div><mets:div ID=\"PHYS_0023\" ORDER=\"23\" ORDERLABEL=\"XXI\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0022_MIN\"/><mets:fptr FILEID=\"FILE_0022_DEFAULT\"/><mets:fptr FILEID=\"FILE_0022_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0022_MAX\"/><mets:fptr FILEID=\"FILE_0022_THUMBS\"/><mets:fptr FILEID=\"FILE_0022\"/></mets:div><mets:div ID=\"PHYS_0024\" ORDER=\"24\" ORDERLABEL=\"XXII\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0023_MIN\"/><mets:fptr FILEID=\"FILE_0023_DEFAULT\"/><mets:fptr FILEID=\"FILE_0023_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0023_MAX\"/><mets:fptr FILEID=\"FILE_0023_THUMBS\"/><mets:fptr FILEID=\"FILE_0023\"/></mets:div><mets:div ID=\"PHYS_0025\" ORDER=\"25\" ORDERLABEL=\"XXIII\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0024_MIN\"/><mets:fptr FILEID=\"FILE_0024_DEFAULT\"/><mets:fptr FILEID=\"FILE_0024_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0024_MAX\"/><mets:fptr FILEID=\"FILE_0024_THUMBS\"/><mets:fptr FILEID=\"FILE_0024\"/></mets:div><mets:div ID=\"PHYS_0026\" ORDER=\"26\" ORDERLABEL=\"XXIV\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0025_MIN\"/><mets:fptr FILEID=\"FILE_0025_DEFAULT\"/><mets:fptr FILEID=\"FILE_0025_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0025_MAX\"/><mets:fptr FILEID=\"FILE_0025_THUMBS\"/><mets:fptr FILEID=\"FILE_0025\"/></mets:div><mets:div ID=\"PHYS_0027\" ORDER=\"27\" ORDERLABEL=\"XXV\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0026_MIN\"/><mets:fptr FILEID=\"FILE_0026_DEFAULT\"/><mets:fptr FILEID=\"FILE_0026_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0026_MAX\"/><mets:fptr FILEID=\"FILE_0026_THUMBS\"/><mets:fptr FILEID=\"FILE_0026\"/></mets:div><mets:div ID=\"PHYS_0028\" ORDER=\"28\" ORDERLABEL=\"XXVI\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0027_MIN\"/><mets:fptr FILEID=\"FILE_0027_DEFAULT\"/><mets:fptr FILEID=\"FILE_0027_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0027_MAX\"/><mets:fptr FILEID=\"FILE_0027_THUMBS\"/><mets:fptr FILEID=\"FILE_0027\"/></mets:div><mets:div ID=\"PHYS_0029\" ORDER=\"29\" ORDERLABEL=\"XXVII\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0028_MIN\"/><mets:fptr FILEID=\"FILE_0028_DEFAULT\"/><mets:fptr FILEID=\"FILE_0028_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0028_MAX\"/><mets:fptr FILEID=\"FILE_0028_THUMBS\"/><mets:fptr FILEID=\"FILE_0028\"/></mets:div><mets:div ID=\"PHYS_0030\" ORDER=\"30\" ORDERLABEL=\"XXVIII\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0029_MIN\"/><mets:fptr FILEID=\"FILE_0029_DEFAULT\"/><mets:fptr FILEID=\"FILE_0029_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0029_MAX\"/><mets:fptr FILEID=\"FILE_0029_THUMBS\"/><mets:fptr FILEID=\"FILE_0029\"/></mets:div><mets:div ID=\"PHYS_0031\" ORDER=\"31\" ORDERLABEL=\"XXIX\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0030_MIN\"/><mets:fptr FILEID=\"FILE_0030_DEFAULT\"/><mets:fptr FILEID=\"FILE_0030_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0030_MAX\"/><mets:fptr FILEID=\"FILE_0030_THUMBS\"/><mets:fptr FILEID=\"FILE_0030\"/></mets:div><mets:div ID=\"PHYS_0032\" ORDER=\"32\" ORDERLABEL=\"XXX\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0031_MIN\"/><mets:fptr FILEID=\"FILE_0031_DEFAULT\"/><mets:fptr FILEID=\"FILE_0031_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0031_MAX\"/><mets:fptr FILEID=\"FILE_0031_THUMBS\"/><mets:fptr FILEID=\"FILE_0031\"/></mets:div><mets:div ID=\"PHYS_0033\" ORDER=\"33\" ORDERLABEL=\"XXXI\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0032_MIN\"/><mets:fptr FILEID=\"FILE_0032_DEFAULT\"/><mets:fptr FILEID=\"FILE_0032_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0032_MAX\"/><mets:fptr FILEID=\"FILE_0032_THUMBS\"/><mets:fptr FILEID=\"FILE_0032\"/></mets:div><mets:div ID=\"PHYS_0034\" ORDER=\"34\" ORDERLABEL=\"XXXII\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0033_MIN\"/><mets:fptr FILEID=\"FILE_0033_DEFAULT\"/><mets:fptr FILEID=\"FILE_0033_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0033_MAX\"/><mets:fptr FILEID=\"FILE_0033_THUMBS\"/><mets:fptr FILEID=\"FILE_0033\"/></mets:div><mets:div ID=\"PHYS_0035\" ORDER=\"35\" ORDERLABEL=\"XXXIII\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0034_MIN\"/><mets:fptr FILEID=\"FILE_0034_DEFAULT\"/><mets:fptr FILEID=\"FILE_0034_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0034_MAX\"/><mets:fptr FILEID=\"FILE_0034_THUMBS\"/><mets:fptr FILEID=\"FILE_0034\"/></mets:div><mets:div ID=\"PHYS_0036\" ORDER=\"36\" ORDERLABEL=\"XXXIV\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0035_MIN\"/><mets:fptr FILEID=\"FILE_0035_DEFAULT\"/><mets:fptr FILEID=\"FILE_0035_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0035_MAX\"/><mets:fptr FILEID=\"FILE_0035_THUMBS\"/><mets:fptr FILEID=\"FILE_0035\"/></mets:div><mets:div ID=\"PHYS_0037\" ORDER=\"37\" ORDERLABEL=\"XXXV\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0036_MIN\"/><mets:fptr FILEID=\"FILE_0036_DEFAULT\"/><mets:fptr FILEID=\"FILE_0036_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0036_MAX\"/><mets:fptr FILEID=\"FILE_0036_THUMBS\"/><mets:fptr FILEID=\"FILE_0036\"/></mets:div><mets:div ID=\"PHYS_0038\" ORDER=\"38\" ORDERLABEL=\"XXXVI\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0037_MIN\"/><mets:fptr FILEID=\"FILE_0037_DEFAULT\"/><mets:fptr FILEID=\"FILE_0037_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0037_MAX\"/><mets:fptr FILEID=\"FILE_0037_THUMBS\"/><mets:fptr FILEID=\"FILE_0037\"/></mets:div><mets:div ID=\"PHYS_0039\" ORDER=\"39\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0038_MIN\"/><mets:fptr FILEID=\"FILE_0038_DEFAULT\"/><mets:fptr FILEID=\"FILE_0038_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0038_MAX\"/><mets:fptr FILEID=\"FILE_0038_THUMBS\"/><mets:fptr FILEID=\"FILE_0038\"/></mets:div><mets:div ID=\"PHYS_0040\" ORDER=\"40\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0039_MIN\"/><mets:fptr FILEID=\"FILE_0039_DEFAULT\"/><mets:fptr FILEID=\"FILE_0039_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0039_MAX\"/><mets:fptr FILEID=\"FILE_0039_THUMBS\"/><mets:fptr FILEID=\"FILE_0039\"/></mets:div><mets:div ID=\"PHYS_0041\" ORDER=\"41\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0040_MIN\"/><mets:fptr FILEID=\"FILE_0040_DEFAULT\"/><mets:fptr FILEID=\"FILE_0040_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0040_MAX\"/><mets:fptr FILEID=\"FILE_0040_THUMBS\"/><mets:fptr FILEID=\"FILE_0040\"/></mets:div><mets:div ID=\"PHYS_0042\" ORDER=\"42\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0041_MIN\"/><mets:fptr FILEID=\"FILE_0041_DEFAULT\"/><mets:fptr FILEID=\"FILE_0041_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0041_MAX\"/><mets:fptr FILEID=\"FILE_0041_THUMBS\"/><mets:fptr FILEID=\"FILE_0041\"/></mets:div><mets:div ID=\"PHYS_0043\" ORDER=\"43\" ORDERLABEL=\"[1]\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0042_MIN\"/><mets:fptr FILEID=\"FILE_0042_DEFAULT\"/><mets:fptr FILEID=\"FILE_0042_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0042_MAX\"/><mets:fptr FILEID=\"FILE_0042_THUMBS\"/><mets:fptr FILEID=\"FILE_0042\"/></mets:div><mets:div ID=\"PHYS_0044\" ORDER=\"44\" ORDERLABEL=\"2\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0043_MIN\"/><mets:fptr FILEID=\"FILE_0043_DEFAULT\"/><mets:fptr FILEID=\"FILE_0043_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0043_MAX\"/><mets:fptr FILEID=\"FILE_0043_THUMBS\"/><mets:fptr FILEID=\"FILE_0043\"/></mets:div><mets:div ID=\"PHYS_0045\" ORDER=\"45\" ORDERLABEL=\"3\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0044_MIN\"/><mets:fptr FILEID=\"FILE_0044_DEFAULT\"/><mets:fptr FILEID=\"FILE_0044_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0044_MAX\"/><mets:fptr FILEID=\"FILE_0044_THUMBS\"/><mets:fptr FILEID=\"FILE_0044\"/></mets:div><mets:div ID=\"PHYS_0046\" ORDER=\"46\" ORDERLABEL=\"4\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0045_MIN\"/><mets:fptr FILEID=\"FILE_0045_DEFAULT\"/><mets:fptr FILEID=\"FILE_0045_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0045_MAX\"/><mets:fptr FILEID=\"FILE_0045_THUMBS\"/><mets:fptr FILEID=\"FILE_0045\"/></mets:div><mets:div ID=\"PHYS_0047\" ORDER=\"47\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0046_MIN\"/><mets:fptr FILEID=\"FILE_0046_DEFAULT\"/><mets:fptr FILEID=\"FILE_0046_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0046_MAX\"/><mets:fptr FILEID=\"FILE_0046_THUMBS\"/><mets:fptr FILEID=\"FILE_0046\"/></mets:div><mets:div ID=\"PHYS_0048\" ORDER=\"48\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0047_MIN\"/><mets:fptr FILEID=\"FILE_0047_DEFAULT\"/><mets:fptr FILEID=\"FILE_0047_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0047_MAX\"/><mets:fptr FILEID=\"FILE_0047_THUMBS\"/><mets:fptr FILEID=\"FILE_0047\"/></mets:div><mets:div ID=\"PHYS_0049\" ORDER=\"49\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0048_MIN\"/><mets:fptr FILEID=\"FILE_0048_DEFAULT\"/><mets:fptr FILEID=\"FILE_0048_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0048_MAX\"/><mets:fptr FILEID=\"FILE_0048_THUMBS\"/><mets:fptr FILEID=\"FILE_0048\"/></mets:div><mets:div ID=\"PHYS_0050\" ORDER=\"50\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0049_MIN\"/><mets:fptr FILEID=\"FILE_0049_DEFAULT\"/><mets:fptr FILEID=\"FILE_0049_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0049_MAX\"/><mets:fptr FILEID=\"FILE_0049_THUMBS\"/><mets:fptr FILEID=\"FILE_0049\"/></mets:div><mets:div ID=\"PHYS_0051\" ORDER=\"51\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0050_MIN\"/><mets:fptr FILEID=\"FILE_0050_DEFAULT\"/><mets:fptr FILEID=\"FILE_0050_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0050_MAX\"/><mets:fptr FILEID=\"FILE_0050_THUMBS\"/><mets:fptr FILEID=\"FILE_0050\"/></mets:div><mets:div ID=\"PHYS_0052\" ORDER=\"52\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0051_MIN\"/><mets:fptr FILEID=\"FILE_0051_DEFAULT\"/><mets:fptr FILEID=\"FILE_0051_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0051_MAX\"/><mets:fptr FILEID=\"FILE_0051_THUMBS\"/><mets:fptr FILEID=\"FILE_0051\"/></mets:div><mets:div ID=\"PHYS_0053\" ORDER=\"53\" ORDERLABEL=\"5\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0052_MIN\"/><mets:fptr FILEID=\"FILE_0052_DEFAULT\"/><mets:fptr FILEID=\"FILE_0052_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0052_MAX\"/><mets:fptr FILEID=\"FILE_0052_THUMBS\"/><mets:fptr FILEID=\"FILE_0052\"/></mets:div><mets:div ID=\"PHYS_0054\" ORDER=\"54\" ORDERLABEL=\"6\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0053_MIN\"/><mets:fptr FILEID=\"FILE_0053_DEFAULT\"/><mets:fptr FILEID=\"FILE_0053_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0053_MAX\"/><mets:fptr FILEID=\"FILE_0053_THUMBS\"/><mets:fptr FILEID=\"FILE_0053\"/></mets:div><mets:div ID=\"PHYS_0055\" ORDER=\"55\" ORDERLABEL=\"7\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0054_MIN\"/><mets:fptr FILEID=\"FILE_0054_DEFAULT\"/><mets:fptr FILEID=\"FILE_0054_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0054_MAX\"/><mets:fptr FILEID=\"FILE_0054_THUMBS\"/><mets:fptr FILEID=\"FILE_0054\"/></mets:div><mets:div ID=\"PHYS_0056\" ORDER=\"56\" ORDERLABEL=\"8\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0055_MIN\"/><mets:fptr FILEID=\"FILE_0055_DEFAULT\"/><mets:fptr FILEID=\"FILE_0055_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0055_MAX\"/><mets:fptr FILEID=\"FILE_0055_THUMBS\"/><mets:fptr FILEID=\"FILE_0055\"/></mets:div><mets:div ID=\"PHYS_0057\" ORDER=\"57\" ORDERLABEL=\"9\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0056_MIN\"/><mets:fptr FILEID=\"FILE_0056_DEFAULT\"/><mets:fptr FILEID=\"FILE_0056_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0056_MAX\"/><mets:fptr FILEID=\"FILE_0056_THUMBS\"/><mets:fptr FILEID=\"FILE_0056\"/></mets:div><mets:div ID=\"PHYS_0058\" ORDER=\"58\" ORDERLABEL=\"10\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0057_MIN\"/><mets:fptr FILEID=\"FILE_0057_DEFAULT\"/><mets:fptr FILEID=\"FILE_0057_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0057_MAX\"/><mets:fptr FILEID=\"FILE_0057_THUMBS\"/><mets:fptr FILEID=\"FILE_0057\"/></mets:div><mets:div ID=\"PHYS_0059\" ORDER=\"59\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0058_MIN\"/><mets:fptr FILEID=\"FILE_0058_DEFAULT\"/><mets:fptr FILEID=\"FILE_0058_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0058_MAX\"/><mets:fptr FILEID=\"FILE_0058_THUMBS\"/><mets:fptr FILEID=\"FILE_0058\"/></mets:div><mets:div ID=\"PHYS_0060\" ORDER=\"60\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0059_MIN\"/><mets:fptr FILEID=\"FILE_0059_DEFAULT\"/><mets:fptr FILEID=\"FILE_0059_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0059_MAX\"/><mets:fptr FILEID=\"FILE_0059_THUMBS\"/><mets:fptr FILEID=\"FILE_0059\"/></mets:div><mets:div ID=\"PHYS_0061\" ORDER=\"61\" ORDERLABEL=\"11\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0060_MIN\"/><mets:fptr FILEID=\"FILE_0060_DEFAULT\"/><mets:fptr FILEID=\"FILE_0060_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0060_MAX\"/><mets:fptr FILEID=\"FILE_0060_THUMBS\"/><mets:fptr FILEID=\"FILE_0060\"/></mets:div><mets:div ID=\"PHYS_0062\" ORDER=\"62\" ORDERLABEL=\"12\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0061_MIN\"/><mets:fptr FILEID=\"FILE_0061_DEFAULT\"/><mets:fptr FILEID=\"FILE_0061_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0061_MAX\"/><mets:fptr FILEID=\"FILE_0061_THUMBS\"/><mets:fptr FILEID=\"FILE_0061\"/></mets:div><mets:div ID=\"PHYS_0063\" ORDER=\"63\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0062_MIN\"/><mets:fptr FILEID=\"FILE_0062_DEFAULT\"/><mets:fptr FILEID=\"FILE_0062_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0062_MAX\"/><mets:fptr FILEID=\"FILE_0062_THUMBS\"/><mets:fptr FILEID=\"FILE_0062\"/></mets:div><mets:div ID=\"PHYS_0064\" ORDER=\"64\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0063_MIN\"/><mets:fptr FILEID=\"FILE_0063_DEFAULT\"/><mets:fptr FILEID=\"FILE_0063_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0063_MAX\"/><mets:fptr FILEID=\"FILE_0063_THUMBS\"/><mets:fptr FILEID=\"FILE_0063\"/></mets:div><mets:div ID=\"PHYS_0065\" ORDER=\"65\" ORDERLABEL=\"13\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0064_MIN\"/><mets:fptr FILEID=\"FILE_0064_DEFAULT\"/><mets:fptr FILEID=\"FILE_0064_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0064_MAX\"/><mets:fptr FILEID=\"FILE_0064_THUMBS\"/><mets:fptr FILEID=\"FILE_0064\"/></mets:div><mets:div ID=\"PHYS_0066\" ORDER=\"66\" ORDERLABEL=\"14\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0065_MIN\"/><mets:fptr FILEID=\"FILE_0065_DEFAULT\"/><mets:fptr FILEID=\"FILE_0065_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0065_MAX\"/><mets:fptr FILEID=\"FILE_0065_THUMBS\"/><mets:fptr FILEID=\"FILE_0065\"/></mets:div><mets:div ID=\"PHYS_0067\" ORDER=\"67\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0066_MIN\"/><mets:fptr FILEID=\"FILE_0066_DEFAULT\"/><mets:fptr FILEID=\"FILE_0066_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0066_MAX\"/><mets:fptr FILEID=\"FILE_0066_THUMBS\"/><mets:fptr FILEID=\"FILE_0066\"/></mets:div><mets:div ID=\"PHYS_0068\" ORDER=\"68\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0067_MIN\"/><mets:fptr FILEID=\"FILE_0067_DEFAULT\"/><mets:fptr FILEID=\"FILE_0067_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0067_MAX\"/><mets:fptr FILEID=\"FILE_0067_THUMBS\"/><mets:fptr FILEID=\"FILE_0067\"/></mets:div><mets:div ID=\"PHYS_0069\" ORDER=\"69\" ORDERLABEL=\"15\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0068_MIN\"/><mets:fptr FILEID=\"FILE_0068_DEFAULT\"/><mets:fptr FILEID=\"FILE_0068_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0068_MAX\"/><mets:fptr FILEID=\"FILE_0068_THUMBS\"/><mets:fptr FILEID=\"FILE_0068\"/></mets:div><mets:div ID=\"PHYS_0070\" ORDER=\"70\" ORDERLABEL=\"16\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0069_MIN\"/><mets:fptr FILEID=\"FILE_0069_DEFAULT\"/><mets:fptr FILEID=\"FILE_0069_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0069_MAX\"/><mets:fptr FILEID=\"FILE_0069_THUMBS\"/><mets:fptr FILEID=\"FILE_0069\"/></mets:div><mets:div ID=\"PHYS_0071\" ORDER=\"71\" ORDERLABEL=\"17\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0070_MIN\"/><mets:fptr FILEID=\"FILE_0070_DEFAULT\"/><mets:fptr FILEID=\"FILE_0070_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0070_MAX\"/><mets:fptr FILEID=\"FILE_0070_THUMBS\"/><mets:fptr FILEID=\"FILE_0070\"/></mets:div><mets:div ID=\"PHYS_0072\" ORDER=\"72\" ORDERLABEL=\"18\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0071_MIN\"/><mets:fptr FILEID=\"FILE_0071_DEFAULT\"/><mets:fptr FILEID=\"FILE_0071_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0071_MAX\"/><mets:fptr FILEID=\"FILE_0071_THUMBS\"/><mets:fptr FILEID=\"FILE_0071\"/></mets:div><mets:div ID=\"PHYS_0073\" ORDER=\"73\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0072_MIN\"/><mets:fptr FILEID=\"FILE_0072_DEFAULT\"/><mets:fptr FILEID=\"FILE_0072_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0072_MAX\"/><mets:fptr FILEID=\"FILE_0072_THUMBS\"/><mets:fptr FILEID=\"FILE_0072\"/></mets:div><mets:div ID=\"PHYS_0074\" ORDER=\"74\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0073_MIN\"/><mets:fptr FILEID=\"FILE_0073_DEFAULT\"/><mets:fptr FILEID=\"FILE_0073_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0073_MAX\"/><mets:fptr FILEID=\"FILE_0073_THUMBS\"/><mets:fptr FILEID=\"FILE_0073\"/></mets:div><mets:div ID=\"PHYS_0075\" ORDER=\"75\" ORDERLABEL=\"19\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0074_MIN\"/><mets:fptr FILEID=\"FILE_0074_DEFAULT\"/><mets:fptr FILEID=\"FILE_0074_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0074_MAX\"/><mets:fptr FILEID=\"FILE_0074_THUMBS\"/><mets:fptr FILEID=\"FILE_0074\"/></mets:div><mets:div ID=\"PHYS_0076\" ORDER=\"76\" ORDERLABEL=\"20\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0075_MIN\"/><mets:fptr FILEID=\"FILE_0075_DEFAULT\"/><mets:fptr FILEID=\"FILE_0075_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0075_MAX\"/><mets:fptr FILEID=\"FILE_0075_THUMBS\"/><mets:fptr FILEID=\"FILE_0075\"/></mets:div><mets:div ID=\"PHYS_0077\" ORDER=\"77\" ORDERLABEL=\"21\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0076_MIN\"/><mets:fptr FILEID=\"FILE_0076_DEFAULT\"/><mets:fptr FILEID=\"FILE_0076_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0076_MAX\"/><mets:fptr FILEID=\"FILE_0076_THUMBS\"/><mets:fptr FILEID=\"FILE_0076\"/></mets:div><mets:div ID=\"PHYS_0078\" ORDER=\"78\" ORDERLABEL=\"22\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0077_MIN\"/><mets:fptr FILEID=\"FILE_0077_DEFAULT\"/><mets:fptr FILEID=\"FILE_0077_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0077_MAX\"/><mets:fptr FILEID=\"FILE_0077_THUMBS\"/><mets:fptr FILEID=\"FILE_0077\"/></mets:div><mets:div ID=\"PHYS_0079\" ORDER=\"79\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0078_MIN\"/><mets:fptr FILEID=\"FILE_0078_DEFAULT\"/><mets:fptr FILEID=\"FILE_0078_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0078_MAX\"/><mets:fptr FILEID=\"FILE_0078_THUMBS\"/><mets:fptr FILEID=\"FILE_0078\"/></mets:div><mets:div ID=\"PHYS_0080\" ORDER=\"80\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0079_MIN\"/><mets:fptr FILEID=\"FILE_0079_DEFAULT\"/><mets:fptr FILEID=\"FILE_0079_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0079_MAX\"/><mets:fptr FILEID=\"FILE_0079_THUMBS\"/><mets:fptr FILEID=\"FILE_0079\"/></mets:div><mets:div ID=\"PHYS_0081\" ORDER=\"81\" ORDERLABEL=\"23\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0080_MIN\"/><mets:fptr FILEID=\"FILE_0080_DEFAULT\"/><mets:fptr FILEID=\"FILE_0080_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0080_MAX\"/><mets:fptr FILEID=\"FILE_0080_THUMBS\"/><mets:fptr FILEID=\"FILE_0080\"/></mets:div><mets:div ID=\"PHYS_0082\" ORDER=\"82\" ORDERLABEL=\"24\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0081_MIN\"/><mets:fptr FILEID=\"FILE_0081_DEFAULT\"/><mets:fptr FILEID=\"FILE_0081_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0081_MAX\"/><mets:fptr FILEID=\"FILE_0081_THUMBS\"/><mets:fptr FILEID=\"FILE_0081\"/></mets:div><mets:div ID=\"PHYS_0083\" ORDER=\"83\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0082_MIN\"/><mets:fptr FILEID=\"FILE_0082_DEFAULT\"/><mets:fptr FILEID=\"FILE_0082_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0082_MAX\"/><mets:fptr FILEID=\"FILE_0082_THUMBS\"/><mets:fptr FILEID=\"FILE_0082\"/></mets:div><mets:div ID=\"PHYS_0084\" ORDER=\"84\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0083_MIN\"/><mets:fptr FILEID=\"FILE_0083_DEFAULT\"/><mets:fptr FILEID=\"FILE_0083_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0083_MAX\"/><mets:fptr FILEID=\"FILE_0083_THUMBS\"/><mets:fptr FILEID=\"FILE_0083\"/></mets:div><mets:div ID=\"PHYS_0085\" ORDER=\"85\" ORDERLABEL=\"25\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0084_MIN\"/><mets:fptr FILEID=\"FILE_0084_DEFAULT\"/><mets:fptr FILEID=\"FILE_0084_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0084_MAX\"/><mets:fptr FILEID=\"FILE_0084_THUMBS\"/><mets:fptr FILEID=\"FILE_0084\"/></mets:div><mets:div ID=\"PHYS_0086\" ORDER=\"86\" ORDERLABEL=\"26\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0085_MIN\"/><mets:fptr FILEID=\"FILE_0085_DEFAULT\"/><mets:fptr FILEID=\"FILE_0085_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0085_MAX\"/><mets:fptr FILEID=\"FILE_0085_THUMBS\"/><mets:fptr FILEID=\"FILE_0085\"/></mets:div><mets:div ID=\"PHYS_0087\" ORDER=\"87\" ORDERLABEL=\"27\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0086_MIN\"/><mets:fptr FILEID=\"FILE_0086_DEFAULT\"/><mets:fptr FILEID=\"FILE_0086_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0086_MAX\"/><mets:fptr FILEID=\"FILE_0086_THUMBS\"/><mets:fptr FILEID=\"FILE_0086\"/></mets:div><mets:div ID=\"PHYS_0088\" ORDER=\"88\" ORDERLABEL=\"28\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0087_MIN\"/><mets:fptr FILEID=\"FILE_0087_DEFAULT\"/><mets:fptr FILEID=\"FILE_0087_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0087_MAX\"/><mets:fptr FILEID=\"FILE_0087_THUMBS\"/><mets:fptr FILEID=\"FILE_0087\"/></mets:div><mets:div ID=\"PHYS_0089\" ORDER=\"89\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0088_MIN\"/><mets:fptr FILEID=\"FILE_0088_DEFAULT\"/><mets:fptr FILEID=\"FILE_0088_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0088_MAX\"/><mets:fptr FILEID=\"FILE_0088_THUMBS\"/><mets:fptr FILEID=\"FILE_0088\"/></mets:div><mets:div ID=\"PHYS_0090\" ORDER=\"90\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0089_MIN\"/><mets:fptr FILEID=\"FILE_0089_DEFAULT\"/><mets:fptr FILEID=\"FILE_0089_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0089_MAX\"/><mets:fptr FILEID=\"FILE_0089_THUMBS\"/><mets:fptr FILEID=\"FILE_0089\"/></mets:div><mets:div ID=\"PHYS_0091\" ORDER=\"91\" ORDERLABEL=\"29\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0090_MIN\"/><mets:fptr FILEID=\"FILE_0090_DEFAULT\"/><mets:fptr FILEID=\"FILE_0090_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0090_MAX\"/><mets:fptr FILEID=\"FILE_0090_THUMBS\"/><mets:fptr FILEID=\"FILE_0090\"/></mets:div><mets:div ID=\"PHYS_0092\" ORDER=\"92\" ORDERLABEL=\"30\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0091_MIN\"/><mets:fptr FILEID=\"FILE_0091_DEFAULT\"/><mets:fptr FILEID=\"FILE_0091_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0091_MAX\"/><mets:fptr FILEID=\"FILE_0091_THUMBS\"/><mets:fptr FILEID=\"FILE_0091\"/></mets:div><mets:div ID=\"PHYS_0093\" ORDER=\"93\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0092_MIN\"/><mets:fptr FILEID=\"FILE_0092_DEFAULT\"/><mets:fptr FILEID=\"FILE_0092_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0092_MAX\"/><mets:fptr FILEID=\"FILE_0092_THUMBS\"/><mets:fptr FILEID=\"FILE_0092\"/></mets:div><mets:div ID=\"PHYS_0094\" ORDER=\"94\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0093_MIN\"/><mets:fptr FILEID=\"FILE_0093_DEFAULT\"/><mets:fptr FILEID=\"FILE_0093_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0093_MAX\"/><mets:fptr FILEID=\"FILE_0093_THUMBS\"/><mets:fptr FILEID=\"FILE_0093\"/></mets:div><mets:div ID=\"PHYS_0095\" ORDER=\"95\" ORDERLABEL=\"31\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0094_MIN\"/><mets:fptr FILEID=\"FILE_0094_DEFAULT\"/><mets:fptr FILEID=\"FILE_0094_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0094_MAX\"/><mets:fptr FILEID=\"FILE_0094_THUMBS\"/><mets:fptr FILEID=\"FILE_0094\"/></mets:div><mets:div ID=\"PHYS_0096\" ORDER=\"96\" ORDERLABEL=\"32\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0095_MIN\"/><mets:fptr FILEID=\"FILE_0095_DEFAULT\"/><mets:fptr FILEID=\"FILE_0095_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0095_MAX\"/><mets:fptr FILEID=\"FILE_0095_THUMBS\"/><mets:fptr FILEID=\"FILE_0095\"/></mets:div><mets:div ID=\"PHYS_0097\" ORDER=\"97\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0096_MIN\"/><mets:fptr FILEID=\"FILE_0096_DEFAULT\"/><mets:fptr FILEID=\"FILE_0096_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0096_MAX\"/><mets:fptr FILEID=\"FILE_0096_THUMBS\"/><mets:fptr FILEID=\"FILE_0096\"/></mets:div><mets:div ID=\"PHYS_0098\" ORDER=\"98\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0097_MIN\"/><mets:fptr FILEID=\"FILE_0097_DEFAULT\"/><mets:fptr FILEID=\"FILE_0097_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0097_MAX\"/><mets:fptr FILEID=\"FILE_0097_THUMBS\"/><mets:fptr FILEID=\"FILE_0097\"/></mets:div><mets:div ID=\"PHYS_0099\" ORDER=\"99\" ORDERLABEL=\"33\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0098_MIN\"/><mets:fptr FILEID=\"FILE_0098_DEFAULT\"/><mets:fptr FILEID=\"FILE_0098_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0098_MAX\"/><mets:fptr FILEID=\"FILE_0098_THUMBS\"/><mets:fptr FILEID=\"FILE_0098\"/></mets:div><mets:div ID=\"PHYS_0100\" ORDER=\"100\" ORDERLABEL=\"34\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0099_MIN\"/><mets:fptr FILEID=\"FILE_0099_DEFAULT\"/><mets:fptr FILEID=\"FILE_0099_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0099_MAX\"/><mets:fptr FILEID=\"FILE_0099_THUMBS\"/><mets:fptr FILEID=\"FILE_0099\"/></mets:div><mets:div ID=\"PHYS_0101\" ORDER=\"101\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0100_MIN\"/><mets:fptr FILEID=\"FILE_0100_DEFAULT\"/><mets:fptr FILEID=\"FILE_0100_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0100_MAX\"/><mets:fptr FILEID=\"FILE_0100_THUMBS\"/><mets:fptr FILEID=\"FILE_0100\"/></mets:div><mets:div ID=\"PHYS_0102\" ORDER=\"102\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0101_MIN\"/><mets:fptr FILEID=\"FILE_0101_DEFAULT\"/><mets:fptr FILEID=\"FILE_0101_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0101_MAX\"/><mets:fptr FILEID=\"FILE_0101_THUMBS\"/><mets:fptr FILEID=\"FILE_0101\"/></mets:div><mets:div ID=\"PHYS_0103\" ORDER=\"103\" ORDERLABEL=\"35\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0102_MIN\"/><mets:fptr FILEID=\"FILE_0102_DEFAULT\"/><mets:fptr FILEID=\"FILE_0102_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0102_MAX\"/><mets:fptr FILEID=\"FILE_0102_THUMBS\"/><mets:fptr FILEID=\"FILE_0102\"/></mets:div><mets:div ID=\"PHYS_0104\" ORDER=\"104\" ORDERLABEL=\"36\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0103_MIN\"/><mets:fptr FILEID=\"FILE_0103_DEFAULT\"/><mets:fptr FILEID=\"FILE_0103_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0103_MAX\"/><mets:fptr FILEID=\"FILE_0103_THUMBS\"/><mets:fptr FILEID=\"FILE_0103\"/></mets:div><mets:div ID=\"PHYS_0105\" ORDER=\"105\" ORDERLABEL=\"37\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0104_MIN\"/><mets:fptr FILEID=\"FILE_0104_DEFAULT\"/><mets:fptr FILEID=\"FILE_0104_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0104_MAX\"/><mets:fptr FILEID=\"FILE_0104_THUMBS\"/><mets:fptr FILEID=\"FILE_0104\"/></mets:div><mets:div ID=\"PHYS_0106\" ORDER=\"106\" ORDERLABEL=\"38\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0105_MIN\"/><mets:fptr FILEID=\"FILE_0105_DEFAULT\"/><mets:fptr FILEID=\"FILE_0105_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0105_MAX\"/><mets:fptr FILEID=\"FILE_0105_THUMBS\"/><mets:fptr FILEID=\"FILE_0105\"/></mets:div><mets:div ID=\"PHYS_0107\" ORDER=\"107\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0106_MIN\"/><mets:fptr FILEID=\"FILE_0106_DEFAULT\"/><mets:fptr FILEID=\"FILE_0106_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0106_MAX\"/><mets:fptr FILEID=\"FILE_0106_THUMBS\"/><mets:fptr FILEID=\"FILE_0106\"/></mets:div><mets:div ID=\"PHYS_0108\" ORDER=\"108\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0107_MIN\"/><mets:fptr FILEID=\"FILE_0107_DEFAULT\"/><mets:fptr FILEID=\"FILE_0107_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0107_MAX\"/><mets:fptr FILEID=\"FILE_0107_THUMBS\"/><mets:fptr FILEID=\"FILE_0107\"/></mets:div><mets:div ID=\"PHYS_0109\" ORDER=\"109\" ORDERLABEL=\"39\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0108_MIN\"/><mets:fptr FILEID=\"FILE_0108_DEFAULT\"/><mets:fptr FILEID=\"FILE_0108_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0108_MAX\"/><mets:fptr FILEID=\"FILE_0108_THUMBS\"/><mets:fptr FILEID=\"FILE_0108\"/></mets:div><mets:div ID=\"PHYS_0110\" ORDER=\"110\" ORDERLABEL=\"40\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0109_MIN\"/><mets:fptr FILEID=\"FILE_0109_DEFAULT\"/><mets:fptr FILEID=\"FILE_0109_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0109_MAX\"/><mets:fptr FILEID=\"FILE_0109_THUMBS\"/><mets:fptr FILEID=\"FILE_0109\"/></mets:div><mets:div ID=\"PHYS_0111\" ORDER=\"111\" ORDERLABEL=\"41\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0110_MIN\"/><mets:fptr FILEID=\"FILE_0110_DEFAULT\"/><mets:fptr FILEID=\"FILE_0110_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0110_MAX\"/><mets:fptr FILEID=\"FILE_0110_THUMBS\"/><mets:fptr FILEID=\"FILE_0110\"/></mets:div><mets:div ID=\"PHYS_0112\" ORDER=\"112\" ORDERLABEL=\"42\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0111_MIN\"/><mets:fptr FILEID=\"FILE_0111_DEFAULT\"/><mets:fptr FILEID=\"FILE_0111_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0111_MAX\"/><mets:fptr FILEID=\"FILE_0111_THUMBS\"/><mets:fptr FILEID=\"FILE_0111\"/></mets:div><mets:div ID=\"PHYS_0113\" ORDER=\"113\" ORDERLABEL=\"43\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0112_MIN\"/><mets:fptr FILEID=\"FILE_0112_DEFAULT\"/><mets:fptr FILEID=\"FILE_0112_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0112_MAX\"/><mets:fptr FILEID=\"FILE_0112_THUMBS\"/><mets:fptr FILEID=\"FILE_0112\"/></mets:div><mets:div ID=\"PHYS_0114\" ORDER=\"114\" ORDERLABEL=\"44\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0113_MIN\"/><mets:fptr FILEID=\"FILE_0113_DEFAULT\"/><mets:fptr FILEID=\"FILE_0113_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0113_MAX\"/><mets:fptr FILEID=\"FILE_0113_THUMBS\"/><mets:fptr FILEID=\"FILE_0113\"/></mets:div><mets:div ID=\"PHYS_0115\" ORDER=\"115\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0114_MIN\"/><mets:fptr FILEID=\"FILE_0114_DEFAULT\"/><mets:fptr FILEID=\"FILE_0114_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0114_MAX\"/><mets:fptr FILEID=\"FILE_0114_THUMBS\"/><mets:fptr FILEID=\"FILE_0114\"/></mets:div><mets:div ID=\"PHYS_0116\" ORDER=\"116\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0115_MIN\"/><mets:fptr FILEID=\"FILE_0115_DEFAULT\"/><mets:fptr FILEID=\"FILE_0115_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0115_MAX\"/><mets:fptr FILEID=\"FILE_0115_THUMBS\"/><mets:fptr FILEID=\"FILE_0115\"/></mets:div><mets:div ID=\"PHYS_0117\" ORDER=\"117\" ORDERLABEL=\"45\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0116_MIN\"/><mets:fptr FILEID=\"FILE_0116_DEFAULT\"/><mets:fptr FILEID=\"FILE_0116_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0116_MAX\"/><mets:fptr FILEID=\"FILE_0116_THUMBS\"/><mets:fptr FILEID=\"FILE_0116\"/></mets:div><mets:div ID=\"PHYS_0118\" ORDER=\"118\" ORDERLABEL=\"46\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0117_MIN\"/><mets:fptr FILEID=\"FILE_0117_DEFAULT\"/><mets:fptr FILEID=\"FILE_0117_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0117_MAX\"/><mets:fptr FILEID=\"FILE_0117_THUMBS\"/><mets:fptr FILEID=\"FILE_0117\"/></mets:div><mets:div ID=\"PHYS_0119\" ORDER=\"119\" ORDERLABEL=\"47\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0118_MIN\"/><mets:fptr FILEID=\"FILE_0118_DEFAULT\"/><mets:fptr FILEID=\"FILE_0118_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0118_MAX\"/><mets:fptr FILEID=\"FILE_0118_THUMBS\"/><mets:fptr FILEID=\"FILE_0118\"/></mets:div><mets:div ID=\"PHYS_0120\" ORDER=\"120\" ORDERLABEL=\"48\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0119_MIN\"/><mets:fptr FILEID=\"FILE_0119_DEFAULT\"/><mets:fptr FILEID=\"FILE_0119_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0119_MAX\"/><mets:fptr FILEID=\"FILE_0119_THUMBS\"/><mets:fptr FILEID=\"FILE_0119\"/></mets:div><mets:div ID=\"PHYS_0121\" ORDER=\"121\" ORDERLABEL=\"49\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0120_MIN\"/><mets:fptr FILEID=\"FILE_0120_DEFAULT\"/><mets:fptr FILEID=\"FILE_0120_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0120_MAX\"/><mets:fptr FILEID=\"FILE_0120_THUMBS\"/><mets:fptr FILEID=\"FILE_0120\"/></mets:div><mets:div ID=\"PHYS_0122\" ORDER=\"122\" ORDERLABEL=\"50\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0121_MIN\"/><mets:fptr FILEID=\"FILE_0121_DEFAULT\"/><mets:fptr FILEID=\"FILE_0121_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0121_MAX\"/><mets:fptr FILEID=\"FILE_0121_THUMBS\"/><mets:fptr FILEID=\"FILE_0121\"/></mets:div><mets:div ID=\"PHYS_0123\" ORDER=\"123\" ORDERLABEL=\"51\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0122_MIN\"/><mets:fptr FILEID=\"FILE_0122_DEFAULT\"/><mets:fptr FILEID=\"FILE_0122_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0122_MAX\"/><mets:fptr FILEID=\"FILE_0122_THUMBS\"/><mets:fptr FILEID=\"FILE_0122\"/></mets:div><mets:div ID=\"PHYS_0124\" ORDER=\"124\" ORDERLABEL=\"52\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0123_MIN\"/><mets:fptr FILEID=\"FILE_0123_DEFAULT\"/><mets:fptr FILEID=\"FILE_0123_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0123_MAX\"/><mets:fptr FILEID=\"FILE_0123_THUMBS\"/><mets:fptr FILEID=\"FILE_0123\"/></mets:div><mets:div ID=\"PHYS_0125\" ORDER=\"125\" ORDERLABEL=\"53\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0124_MIN\"/><mets:fptr FILEID=\"FILE_0124_DEFAULT\"/><mets:fptr FILEID=\"FILE_0124_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0124_MAX\"/><mets:fptr FILEID=\"FILE_0124_THUMBS\"/><mets:fptr FILEID=\"FILE_0124\"/></mets:div><mets:div ID=\"PHYS_0126\" ORDER=\"126\" ORDERLABEL=\"54\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0125_MIN\"/><mets:fptr FILEID=\"FILE_0125_DEFAULT\"/><mets:fptr FILEID=\"FILE_0125_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0125_MAX\"/><mets:fptr FILEID=\"FILE_0125_THUMBS\"/><mets:fptr FILEID=\"FILE_0125\"/></mets:div><mets:div ID=\"PHYS_0127\" ORDER=\"127\" ORDERLABEL=\"55\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0126_MIN\"/><mets:fptr FILEID=\"FILE_0126_DEFAULT\"/><mets:fptr FILEID=\"FILE_0126_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0126_MAX\"/><mets:fptr FILEID=\"FILE_0126_THUMBS\"/><mets:fptr FILEID=\"FILE_0126\"/></mets:div><mets:div ID=\"PHYS_0128\" ORDER=\"128\" ORDERLABEL=\"56\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0127_MIN\"/><mets:fptr FILEID=\"FILE_0127_DEFAULT\"/><mets:fptr FILEID=\"FILE_0127_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0127_MAX\"/><mets:fptr FILEID=\"FILE_0127_THUMBS\"/><mets:fptr FILEID=\"FILE_0127\"/></mets:div><mets:div ID=\"PHYS_0129\" ORDER=\"129\" ORDERLABEL=\"57\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0128_MIN\"/><mets:fptr FILEID=\"FILE_0128_DEFAULT\"/><mets:fptr FILEID=\"FILE_0128_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0128_MAX\"/><mets:fptr FILEID=\"FILE_0128_THUMBS\"/><mets:fptr FILEID=\"FILE_0128\"/></mets:div><mets:div ID=\"PHYS_0130\" ORDER=\"130\" ORDERLABEL=\"58\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0129_MIN\"/><mets:fptr FILEID=\"FILE_0129_DEFAULT\"/><mets:fptr FILEID=\"FILE_0129_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0129_MAX\"/><mets:fptr FILEID=\"FILE_0129_THUMBS\"/><mets:fptr FILEID=\"FILE_0129\"/></mets:div><mets:div ID=\"PHYS_0131\" ORDER=\"131\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0130_MIN\"/><mets:fptr FILEID=\"FILE_0130_DEFAULT\"/><mets:fptr FILEID=\"FILE_0130_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0130_MAX\"/><mets:fptr FILEID=\"FILE_0130_THUMBS\"/><mets:fptr FILEID=\"FILE_0130\"/></mets:div><mets:div ID=\"PHYS_0132\" ORDER=\"132\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0131_MIN\"/><mets:fptr FILEID=\"FILE_0131_DEFAULT\"/><mets:fptr FILEID=\"FILE_0131_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0131_MAX\"/><mets:fptr FILEID=\"FILE_0131_THUMBS\"/><mets:fptr FILEID=\"FILE_0131\"/></mets:div><mets:div ID=\"PHYS_0133\" ORDER=\"133\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0132_MIN\"/><mets:fptr FILEID=\"FILE_0132_DEFAULT\"/><mets:fptr FILEID=\"FILE_0132_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0132_MAX\"/><mets:fptr FILEID=\"FILE_0132_THUMBS\"/><mets:fptr FILEID=\"FILE_0132\"/></mets:div><mets:div ID=\"PHYS_0134\" ORDER=\"134\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0133_MIN\"/><mets:fptr FILEID=\"FILE_0133_DEFAULT\"/><mets:fptr FILEID=\"FILE_0133_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0133_MAX\"/><mets:fptr FILEID=\"FILE_0133_THUMBS\"/><mets:fptr FILEID=\"FILE_0133\"/></mets:div><mets:div ID=\"PHYS_0135\" ORDER=\"135\" ORDERLABEL=\"59\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0134_MIN\"/><mets:fptr FILEID=\"FILE_0134_DEFAULT\"/><mets:fptr FILEID=\"FILE_0134_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0134_MAX\"/><mets:fptr FILEID=\"FILE_0134_THUMBS\"/><mets:fptr FILEID=\"FILE_0134\"/></mets:div><mets:div ID=\"PHYS_0136\" ORDER=\"136\" ORDERLABEL=\"60\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0135_MIN\"/><mets:fptr FILEID=\"FILE_0135_DEFAULT\"/><mets:fptr FILEID=\"FILE_0135_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0135_MAX\"/><mets:fptr FILEID=\"FILE_0135_THUMBS\"/><mets:fptr FILEID=\"FILE_0135\"/></mets:div><mets:div ID=\"PHYS_0137\" ORDER=\"137\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0136_MIN\"/><mets:fptr FILEID=\"FILE_0136_DEFAULT\"/><mets:fptr FILEID=\"FILE_0136_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0136_MAX\"/><mets:fptr FILEID=\"FILE_0136_THUMBS\"/><mets:fptr FILEID=\"FILE_0136\"/></mets:div><mets:div ID=\"PHYS_0138\" ORDER=\"138\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0137_MIN\"/><mets:fptr FILEID=\"FILE_0137_DEFAULT\"/><mets:fptr FILEID=\"FILE_0137_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0137_MAX\"/><mets:fptr FILEID=\"FILE_0137_THUMBS\"/><mets:fptr FILEID=\"FILE_0137\"/></mets:div><mets:div ID=\"PHYS_0139\" ORDER=\"139\" ORDERLABEL=\"61\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0138_MIN\"/><mets:fptr FILEID=\"FILE_0138_DEFAULT\"/><mets:fptr FILEID=\"FILE_0138_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0138_MAX\"/><mets:fptr FILEID=\"FILE_0138_THUMBS\"/><mets:fptr FILEID=\"FILE_0138\"/></mets:div><mets:div ID=\"PHYS_0140\" ORDER=\"140\" ORDERLABEL=\"62\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0139_MIN\"/><mets:fptr FILEID=\"FILE_0139_DEFAULT\"/><mets:fptr FILEID=\"FILE_0139_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0139_MAX\"/><mets:fptr FILEID=\"FILE_0139_THUMBS\"/><mets:fptr FILEID=\"FILE_0139\"/></mets:div><mets:div ID=\"PHYS_0141\" ORDER=\"141\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0140_MIN\"/><mets:fptr FILEID=\"FILE_0140_DEFAULT\"/><mets:fptr FILEID=\"FILE_0140_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0140_MAX\"/><mets:fptr FILEID=\"FILE_0140_THUMBS\"/><mets:fptr FILEID=\"FILE_0140\"/></mets:div><mets:div ID=\"PHYS_0142\" ORDER=\"142\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0141_MIN\"/><mets:fptr FILEID=\"FILE_0141_DEFAULT\"/><mets:fptr FILEID=\"FILE_0141_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0141_MAX\"/><mets:fptr FILEID=\"FILE_0141_THUMBS\"/><mets:fptr FILEID=\"FILE_0141\"/></mets:div><mets:div ID=\"PHYS_0143\" ORDER=\"143\" ORDERLABEL=\"63\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0142_MIN\"/><mets:fptr FILEID=\"FILE_0142_DEFAULT\"/><mets:fptr FILEID=\"FILE_0142_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0142_MAX\"/><mets:fptr FILEID=\"FILE_0142_THUMBS\"/><mets:fptr FILEID=\"FILE_0142\"/></mets:div><mets:div ID=\"PHYS_0144\" ORDER=\"144\" ORDERLABEL=\"64\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0143_MIN\"/><mets:fptr FILEID=\"FILE_0143_DEFAULT\"/><mets:fptr FILEID=\"FILE_0143_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0143_MAX\"/><mets:fptr FILEID=\"FILE_0143_THUMBS\"/><mets:fptr FILEID=\"FILE_0143\"/></mets:div><mets:div ID=\"PHYS_0145\" ORDER=\"145\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0144_MIN\"/><mets:fptr FILEID=\"FILE_0144_DEFAULT\"/><mets:fptr FILEID=\"FILE_0144_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0144_MAX\"/><mets:fptr FILEID=\"FILE_0144_THUMBS\"/><mets:fptr FILEID=\"FILE_0144\"/></mets:div><mets:div ID=\"PHYS_0146\" ORDER=\"146\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0145_MIN\"/><mets:fptr FILEID=\"FILE_0145_DEFAULT\"/><mets:fptr FILEID=\"FILE_0145_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0145_MAX\"/><mets:fptr FILEID=\"FILE_0145_THUMBS\"/><mets:fptr FILEID=\"FILE_0145\"/></mets:div><mets:div ID=\"PHYS_0147\" ORDER=\"147\" ORDERLABEL=\"65\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0146_MIN\"/><mets:fptr FILEID=\"FILE_0146_DEFAULT\"/><mets:fptr FILEID=\"FILE_0146_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0146_MAX\"/><mets:fptr FILEID=\"FILE_0146_THUMBS\"/><mets:fptr FILEID=\"FILE_0146\"/></mets:div><mets:div ID=\"PHYS_0148\" ORDER=\"148\" ORDERLABEL=\"66\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0147_MIN\"/><mets:fptr FILEID=\"FILE_0147_DEFAULT\"/><mets:fptr FILEID=\"FILE_0147_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0147_MAX\"/><mets:fptr FILEID=\"FILE_0147_THUMBS\"/><mets:fptr FILEID=\"FILE_0147\"/></mets:div><mets:div ID=\"PHYS_0149\" ORDER=\"149\" ORDERLABEL=\"67\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0148_MIN\"/><mets:fptr FILEID=\"FILE_0148_DEFAULT\"/><mets:fptr FILEID=\"FILE_0148_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0148_MAX\"/><mets:fptr FILEID=\"FILE_0148_THUMBS\"/><mets:fptr FILEID=\"FILE_0148\"/></mets:div><mets:div ID=\"PHYS_0150\" ORDER=\"150\" ORDERLABEL=\"68\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0149_MIN\"/><mets:fptr FILEID=\"FILE_0149_DEFAULT\"/><mets:fptr FILEID=\"FILE_0149_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0149_MAX\"/><mets:fptr FILEID=\"FILE_0149_THUMBS\"/><mets:fptr FILEID=\"FILE_0149\"/></mets:div><mets:div ID=\"PHYS_0151\" ORDER=\"151\" ORDERLABEL=\"69\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0150_MIN\"/><mets:fptr FILEID=\"FILE_0150_DEFAULT\"/><mets:fptr FILEID=\"FILE_0150_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0150_MAX\"/><mets:fptr FILEID=\"FILE_0150_THUMBS\"/><mets:fptr FILEID=\"FILE_0150\"/></mets:div><mets:div ID=\"PHYS_0152\" ORDER=\"152\" ORDERLABEL=\"70\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0151_MIN\"/><mets:fptr FILEID=\"FILE_0151_DEFAULT\"/><mets:fptr FILEID=\"FILE_0151_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0151_MAX\"/><mets:fptr FILEID=\"FILE_0151_THUMBS\"/><mets:fptr FILEID=\"FILE_0151\"/></mets:div><mets:div ID=\"PHYS_0153\" ORDER=\"153\" ORDERLABEL=\"71\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0152_MIN\"/><mets:fptr FILEID=\"FILE_0152_DEFAULT\"/><mets:fptr FILEID=\"FILE_0152_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0152_MAX\"/><mets:fptr FILEID=\"FILE_0152_THUMBS\"/><mets:fptr FILEID=\"FILE_0152\"/></mets:div><mets:div ID=\"PHYS_0154\" ORDER=\"154\" ORDERLABEL=\"72\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0153_MIN\"/><mets:fptr FILEID=\"FILE_0153_DEFAULT\"/><mets:fptr FILEID=\"FILE_0153_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0153_MAX\"/><mets:fptr FILEID=\"FILE_0153_THUMBS\"/><mets:fptr FILEID=\"FILE_0153\"/></mets:div><mets:div ID=\"PHYS_0155\" ORDER=\"155\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0154_MIN\"/><mets:fptr FILEID=\"FILE_0154_DEFAULT\"/><mets:fptr FILEID=\"FILE_0154_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0154_MAX\"/><mets:fptr FILEID=\"FILE_0154_THUMBS\"/><mets:fptr FILEID=\"FILE_0154\"/></mets:div><mets:div ID=\"PHYS_0156\" ORDER=\"156\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0155_MIN\"/><mets:fptr FILEID=\"FILE_0155_DEFAULT\"/><mets:fptr FILEID=\"FILE_0155_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0155_MAX\"/><mets:fptr FILEID=\"FILE_0155_THUMBS\"/><mets:fptr FILEID=\"FILE_0155\"/></mets:div><mets:div ID=\"PHYS_0157\" ORDER=\"157\" ORDERLABEL=\"73\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0156_MIN\"/><mets:fptr FILEID=\"FILE_0156_DEFAULT\"/><mets:fptr FILEID=\"FILE_0156_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0156_MAX\"/><mets:fptr FILEID=\"FILE_0156_THUMBS\"/><mets:fptr FILEID=\"FILE_0156\"/></mets:div><mets:div ID=\"PHYS_0158\" ORDER=\"158\" ORDERLABEL=\"74\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0157_MIN\"/><mets:fptr FILEID=\"FILE_0157_DEFAULT\"/><mets:fptr FILEID=\"FILE_0157_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0157_MAX\"/><mets:fptr FILEID=\"FILE_0157_THUMBS\"/><mets:fptr FILEID=\"FILE_0157\"/></mets:div><mets:div ID=\"PHYS_0159\" ORDER=\"159\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0158_MIN\"/><mets:fptr FILEID=\"FILE_0158_DEFAULT\"/><mets:fptr FILEID=\"FILE_0158_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0158_MAX\"/><mets:fptr FILEID=\"FILE_0158_THUMBS\"/><mets:fptr FILEID=\"FILE_0158\"/></mets:div><mets:div ID=\"PHYS_0160\" ORDER=\"160\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0159_MIN\"/><mets:fptr FILEID=\"FILE_0159_DEFAULT\"/><mets:fptr FILEID=\"FILE_0159_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0159_MAX\"/><mets:fptr FILEID=\"FILE_0159_THUMBS\"/><mets:fptr FILEID=\"FILE_0159\"/></mets:div><mets:div ID=\"PHYS_0161\" ORDER=\"161\" ORDERLABEL=\"75\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0160_MIN\"/><mets:fptr FILEID=\"FILE_0160_DEFAULT\"/><mets:fptr FILEID=\"FILE_0160_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0160_MAX\"/><mets:fptr FILEID=\"FILE_0160_THUMBS\"/><mets:fptr FILEID=\"FILE_0160\"/></mets:div><mets:div ID=\"PHYS_0162\" ORDER=\"162\" ORDERLABEL=\"76\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0161_MIN\"/><mets:fptr FILEID=\"FILE_0161_DEFAULT\"/><mets:fptr FILEID=\"FILE_0161_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0161_MAX\"/><mets:fptr FILEID=\"FILE_0161_THUMBS\"/><mets:fptr FILEID=\"FILE_0161\"/></mets:div><mets:div ID=\"PHYS_0163\" ORDER=\"163\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0162_MIN\"/><mets:fptr FILEID=\"FILE_0162_DEFAULT\"/><mets:fptr FILEID=\"FILE_0162_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0162_MAX\"/><mets:fptr FILEID=\"FILE_0162_THUMBS\"/><mets:fptr FILEID=\"FILE_0162\"/></mets:div><mets:div ID=\"PHYS_0164\" ORDER=\"164\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0163_MIN\"/><mets:fptr FILEID=\"FILE_0163_DEFAULT\"/><mets:fptr FILEID=\"FILE_0163_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0163_MAX\"/><mets:fptr FILEID=\"FILE_0163_THUMBS\"/><mets:fptr FILEID=\"FILE_0163\"/></mets:div><mets:div ID=\"PHYS_0165\" ORDER=\"165\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0164_MIN\"/><mets:fptr FILEID=\"FILE_0164_DEFAULT\"/><mets:fptr FILEID=\"FILE_0164_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0164_MAX\"/><mets:fptr FILEID=\"FILE_0164_THUMBS\"/><mets:fptr FILEID=\"FILE_0164\"/></mets:div><mets:div ID=\"PHYS_0166\" ORDER=\"166\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0165_MIN\"/><mets:fptr FILEID=\"FILE_0165_DEFAULT\"/><mets:fptr FILEID=\"FILE_0165_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0165_MAX\"/><mets:fptr FILEID=\"FILE_0165_THUMBS\"/><mets:fptr FILEID=\"FILE_0165\"/></mets:div><mets:div ID=\"PHYS_0167\" ORDER=\"167\" ORDERLABEL=\"77\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0166_MIN\"/><mets:fptr FILEID=\"FILE_0166_DEFAULT\"/><mets:fptr FILEID=\"FILE_0166_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0166_MAX\"/><mets:fptr FILEID=\"FILE_0166_THUMBS\"/><mets:fptr FILEID=\"FILE_0166\"/></mets:div><mets:div ID=\"PHYS_0168\" ORDER=\"168\" ORDERLABEL=\"78\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0167_MIN\"/><mets:fptr FILEID=\"FILE_0167_DEFAULT\"/><mets:fptr FILEID=\"FILE_0167_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0167_MAX\"/><mets:fptr FILEID=\"FILE_0167_THUMBS\"/><mets:fptr FILEID=\"FILE_0167\"/></mets:div><mets:div ID=\"PHYS_0169\" ORDER=\"169\" ORDERLABEL=\"79\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0168_MIN\"/><mets:fptr FILEID=\"FILE_0168_DEFAULT\"/><mets:fptr FILEID=\"FILE_0168_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0168_MAX\"/><mets:fptr FILEID=\"FILE_0168_THUMBS\"/><mets:fptr FILEID=\"FILE_0168\"/></mets:div><mets:div ID=\"PHYS_0170\" ORDER=\"170\" ORDERLABEL=\"80\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0169_MIN\"/><mets:fptr FILEID=\"FILE_0169_DEFAULT\"/><mets:fptr FILEID=\"FILE_0169_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0169_MAX\"/><mets:fptr FILEID=\"FILE_0169_THUMBS\"/><mets:fptr FILEID=\"FILE_0169\"/></mets:div><mets:div ID=\"PHYS_0171\" ORDER=\"171\" ORDERLABEL=\"81\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0170_MIN\"/><mets:fptr FILEID=\"FILE_0170_DEFAULT\"/><mets:fptr FILEID=\"FILE_0170_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0170_MAX\"/><mets:fptr FILEID=\"FILE_0170_THUMBS\"/><mets:fptr FILEID=\"FILE_0170\"/></mets:div><mets:div ID=\"PHYS_0172\" ORDER=\"172\" ORDERLABEL=\"82\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0171_MIN\"/><mets:fptr FILEID=\"FILE_0171_DEFAULT\"/><mets:fptr FILEID=\"FILE_0171_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0171_MAX\"/><mets:fptr FILEID=\"FILE_0171_THUMBS\"/><mets:fptr FILEID=\"FILE_0171\"/></mets:div><mets:div ID=\"PHYS_0173\" ORDER=\"173\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0172_MIN\"/><mets:fptr FILEID=\"FILE_0172_DEFAULT\"/><mets:fptr FILEID=\"FILE_0172_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0172_MAX\"/><mets:fptr FILEID=\"FILE_0172_THUMBS\"/><mets:fptr FILEID=\"FILE_0172\"/></mets:div><mets:div ID=\"PHYS_0174\" ORDER=\"174\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0173_MIN\"/><mets:fptr FILEID=\"FILE_0173_DEFAULT\"/><mets:fptr FILEID=\"FILE_0173_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0173_MAX\"/><mets:fptr FILEID=\"FILE_0173_THUMBS\"/><mets:fptr FILEID=\"FILE_0173\"/></mets:div><mets:div ID=\"PHYS_0175\" ORDER=\"175\" ORDERLABEL=\"83\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0174_MIN\"/><mets:fptr FILEID=\"FILE_0174_DEFAULT\"/><mets:fptr FILEID=\"FILE_0174_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0174_MAX\"/><mets:fptr FILEID=\"FILE_0174_THUMBS\"/><mets:fptr FILEID=\"FILE_0174\"/></mets:div><mets:div ID=\"PHYS_0176\" ORDER=\"176\" ORDERLABEL=\"84\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0175_MIN\"/><mets:fptr FILEID=\"FILE_0175_DEFAULT\"/><mets:fptr FILEID=\"FILE_0175_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0175_MAX\"/><mets:fptr FILEID=\"FILE_0175_THUMBS\"/><mets:fptr FILEID=\"FILE_0175\"/></mets:div><mets:div ID=\"PHYS_0177\" ORDER=\"177\" ORDERLABEL=\"85\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0176_MIN\"/><mets:fptr FILEID=\"FILE_0176_DEFAULT\"/><mets:fptr FILEID=\"FILE_0176_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0176_MAX\"/><mets:fptr FILEID=\"FILE_0176_THUMBS\"/><mets:fptr FILEID=\"FILE_0176\"/></mets:div><mets:div ID=\"PHYS_0178\" ORDER=\"178\" ORDERLABEL=\"86\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0177_MIN\"/><mets:fptr FILEID=\"FILE_0177_DEFAULT\"/><mets:fptr FILEID=\"FILE_0177_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0177_MAX\"/><mets:fptr FILEID=\"FILE_0177_THUMBS\"/><mets:fptr FILEID=\"FILE_0177\"/></mets:div><mets:div ID=\"PHYS_0179\" ORDER=\"179\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0178_MIN\"/><mets:fptr FILEID=\"FILE_0178_DEFAULT\"/><mets:fptr FILEID=\"FILE_0178_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0178_MAX\"/><mets:fptr FILEID=\"FILE_0178_THUMBS\"/><mets:fptr FILEID=\"FILE_0178\"/></mets:div><mets:div ID=\"PHYS_0180\" ORDER=\"180\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0179_MIN\"/><mets:fptr FILEID=\"FILE_0179_DEFAULT\"/><mets:fptr FILEID=\"FILE_0179_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0179_MAX\"/><mets:fptr FILEID=\"FILE_0179_THUMBS\"/><mets:fptr FILEID=\"FILE_0179\"/></mets:div><mets:div ID=\"PHYS_0181\" ORDER=\"181\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0180_MIN\"/><mets:fptr FILEID=\"FILE_0180_DEFAULT\"/><mets:fptr FILEID=\"FILE_0180_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0180_MAX\"/><mets:fptr FILEID=\"FILE_0180_THUMBS\"/><mets:fptr FILEID=\"FILE_0180\"/></mets:div><mets:div ID=\"PHYS_0182\" ORDER=\"182\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0181_MIN\"/><mets:fptr FILEID=\"FILE_0181_DEFAULT\"/><mets:fptr FILEID=\"FILE_0181_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0181_MAX\"/><mets:fptr FILEID=\"FILE_0181_THUMBS\"/><mets:fptr FILEID=\"FILE_0181\"/></mets:div><mets:div ID=\"PHYS_0183\" ORDER=\"183\" ORDERLABEL=\"87\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0182_MIN\"/><mets:fptr FILEID=\"FILE_0182_DEFAULT\"/><mets:fptr FILEID=\"FILE_0182_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0182_MAX\"/><mets:fptr FILEID=\"FILE_0182_THUMBS\"/><mets:fptr FILEID=\"FILE_0182\"/></mets:div><mets:div ID=\"PHYS_0184\" ORDER=\"184\" ORDERLABEL=\"88\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0183_MIN\"/><mets:fptr FILEID=\"FILE_0183_DEFAULT\"/><mets:fptr FILEID=\"FILE_0183_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0183_MAX\"/><mets:fptr FILEID=\"FILE_0183_THUMBS\"/><mets:fptr FILEID=\"FILE_0183\"/></mets:div><mets:div ID=\"PHYS_0185\" ORDER=\"185\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0184_MIN\"/><mets:fptr FILEID=\"FILE_0184_DEFAULT\"/><mets:fptr FILEID=\"FILE_0184_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0184_MAX\"/><mets:fptr FILEID=\"FILE_0184_THUMBS\"/><mets:fptr FILEID=\"FILE_0184\"/></mets:div><mets:div ID=\"PHYS_0186\" ORDER=\"186\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0185_MIN\"/><mets:fptr FILEID=\"FILE_0185_DEFAULT\"/><mets:fptr FILEID=\"FILE_0185_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0185_MAX\"/><mets:fptr FILEID=\"FILE_0185_THUMBS\"/><mets:fptr FILEID=\"FILE_0185\"/></mets:div><mets:div ID=\"PHYS_0187\" ORDER=\"187\" ORDERLABEL=\"89\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0186_MIN\"/><mets:fptr FILEID=\"FILE_0186_DEFAULT\"/><mets:fptr FILEID=\"FILE_0186_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0186_MAX\"/><mets:fptr FILEID=\"FILE_0186_THUMBS\"/><mets:fptr FILEID=\"FILE_0186\"/></mets:div><mets:div ID=\"PHYS_0188\" ORDER=\"188\" ORDERLABEL=\"90\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0187_MIN\"/><mets:fptr FILEID=\"FILE_0187_DEFAULT\"/><mets:fptr FILEID=\"FILE_0187_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0187_MAX\"/><mets:fptr FILEID=\"FILE_0187_THUMBS\"/><mets:fptr FILEID=\"FILE_0187\"/></mets:div><mets:div ID=\"PHYS_0189\" ORDER=\"189\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0188_MIN\"/><mets:fptr FILEID=\"FILE_0188_DEFAULT\"/><mets:fptr FILEID=\"FILE_0188_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0188_MAX\"/><mets:fptr FILEID=\"FILE_0188_THUMBS\"/><mets:fptr FILEID=\"FILE_0188\"/></mets:div><mets:div ID=\"PHYS_0190\" ORDER=\"190\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0189_MIN\"/><mets:fptr FILEID=\"FILE_0189_DEFAULT\"/><mets:fptr FILEID=\"FILE_0189_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0189_MAX\"/><mets:fptr FILEID=\"FILE_0189_THUMBS\"/><mets:fptr FILEID=\"FILE_0189\"/></mets:div><mets:div ID=\"PHYS_0191\" ORDER=\"191\" ORDERLABEL=\"91\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0190_MIN\"/><mets:fptr FILEID=\"FILE_0190_DEFAULT\"/><mets:fptr FILEID=\"FILE_0190_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0190_MAX\"/><mets:fptr FILEID=\"FILE_0190_THUMBS\"/><mets:fptr FILEID=\"FILE_0190\"/></mets:div><mets:div ID=\"PHYS_0192\" ORDER=\"192\" ORDERLABEL=\"92\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0191_MIN\"/><mets:fptr FILEID=\"FILE_0191_DEFAULT\"/><mets:fptr FILEID=\"FILE_0191_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0191_MAX\"/><mets:fptr FILEID=\"FILE_0191_THUMBS\"/><mets:fptr FILEID=\"FILE_0191\"/></mets:div><mets:div ID=\"PHYS_0193\" ORDER=\"193\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0192_MIN\"/><mets:fptr FILEID=\"FILE_0192_DEFAULT\"/><mets:fptr FILEID=\"FILE_0192_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0192_MAX\"/><mets:fptr FILEID=\"FILE_0192_THUMBS\"/><mets:fptr FILEID=\"FILE_0192\"/></mets:div><mets:div ID=\"PHYS_0194\" ORDER=\"194\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0193_MIN\"/><mets:fptr FILEID=\"FILE_0193_DEFAULT\"/><mets:fptr FILEID=\"FILE_0193_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0193_MAX\"/><mets:fptr FILEID=\"FILE_0193_THUMBS\"/><mets:fptr FILEID=\"FILE_0193\"/></mets:div><mets:div ID=\"PHYS_0195\" ORDER=\"195\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0194_MIN\"/><mets:fptr FILEID=\"FILE_0194_DEFAULT\"/><mets:fptr FILEID=\"FILE_0194_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0194_MAX\"/><mets:fptr FILEID=\"FILE_0194_THUMBS\"/><mets:fptr FILEID=\"FILE_0194\"/></mets:div><mets:div ID=\"PHYS_0196\" ORDER=\"196\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0195_MIN\"/><mets:fptr FILEID=\"FILE_0195_DEFAULT\"/><mets:fptr FILEID=\"FILE_0195_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0195_MAX\"/><mets:fptr FILEID=\"FILE_0195_THUMBS\"/><mets:fptr FILEID=\"FILE_0195\"/></mets:div><mets:div ID=\"PHYS_0197\" ORDER=\"197\" ORDERLABEL=\"93\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0196_MIN\"/><mets:fptr FILEID=\"FILE_0196_DEFAULT\"/><mets:fptr FILEID=\"FILE_0196_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0196_MAX\"/><mets:fptr FILEID=\"FILE_0196_THUMBS\"/><mets:fptr FILEID=\"FILE_0196\"/></mets:div><mets:div ID=\"PHYS_0198\" ORDER=\"198\" ORDERLABEL=\"94\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0197_MIN\"/><mets:fptr FILEID=\"FILE_0197_DEFAULT\"/><mets:fptr FILEID=\"FILE_0197_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0197_MAX\"/><mets:fptr FILEID=\"FILE_0197_THUMBS\"/><mets:fptr FILEID=\"FILE_0197\"/></mets:div><mets:div ID=\"PHYS_0199\" ORDER=\"199\" ORDERLABEL=\"95\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0198_MIN\"/><mets:fptr FILEID=\"FILE_0198_DEFAULT\"/><mets:fptr FILEID=\"FILE_0198_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0198_MAX\"/><mets:fptr FILEID=\"FILE_0198_THUMBS\"/><mets:fptr FILEID=\"FILE_0198\"/></mets:div><mets:div ID=\"PHYS_0200\" ORDER=\"200\" ORDERLABEL=\"96\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0199_MIN\"/><mets:fptr FILEID=\"FILE_0199_DEFAULT\"/><mets:fptr FILEID=\"FILE_0199_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0199_MAX\"/><mets:fptr FILEID=\"FILE_0199_THUMBS\"/><mets:fptr FILEID=\"FILE_0199\"/></mets:div><mets:div ID=\"PHYS_0201\" ORDER=\"201\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0200_MIN\"/><mets:fptr FILEID=\"FILE_0200_DEFAULT\"/><mets:fptr FILEID=\"FILE_0200_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0200_MAX\"/><mets:fptr FILEID=\"FILE_0200_THUMBS\"/><mets:fptr FILEID=\"FILE_0200\"/></mets:div><mets:div ID=\"PHYS_0202\" ORDER=\"202\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0201_MIN\"/><mets:fptr FILEID=\"FILE_0201_DEFAULT\"/><mets:fptr FILEID=\"FILE_0201_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0201_MAX\"/><mets:fptr FILEID=\"FILE_0201_THUMBS\"/><mets:fptr FILEID=\"FILE_0201\"/></mets:div><mets:div ID=\"PHYS_0203\" ORDER=\"203\" ORDERLABEL=\"97\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0202_MIN\"/><mets:fptr FILEID=\"FILE_0202_DEFAULT\"/><mets:fptr FILEID=\"FILE_0202_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0202_MAX\"/><mets:fptr FILEID=\"FILE_0202_THUMBS\"/><mets:fptr FILEID=\"FILE_0202\"/></mets:div><mets:div ID=\"PHYS_0204\" ORDER=\"204\" ORDERLABEL=\"98\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0203_MIN\"/><mets:fptr FILEID=\"FILE_0203_DEFAULT\"/><mets:fptr FILEID=\"FILE_0203_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0203_MAX\"/><mets:fptr FILEID=\"FILE_0203_THUMBS\"/><mets:fptr FILEID=\"FILE_0203\"/></mets:div><mets:div ID=\"PHYS_0205\" ORDER=\"205\" ORDERLABEL=\"99\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0204_MIN\"/><mets:fptr FILEID=\"FILE_0204_DEFAULT\"/><mets:fptr FILEID=\"FILE_0204_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0204_MAX\"/><mets:fptr FILEID=\"FILE_0204_THUMBS\"/><mets:fptr FILEID=\"FILE_0204\"/></mets:div><mets:div ID=\"PHYS_0206\" ORDER=\"206\" ORDERLABEL=\"100\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0205_MIN\"/><mets:fptr FILEID=\"FILE_0205_DEFAULT\"/><mets:fptr FILEID=\"FILE_0205_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0205_MAX\"/><mets:fptr FILEID=\"FILE_0205_THUMBS\"/><mets:fptr FILEID=\"FILE_0205\"/></mets:div><mets:div ID=\"PHYS_0207\" ORDER=\"207\" ORDERLABEL=\"101\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0206_MIN\"/><mets:fptr FILEID=\"FILE_0206_DEFAULT\"/><mets:fptr FILEID=\"FILE_0206_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0206_MAX\"/><mets:fptr FILEID=\"FILE_0206_THUMBS\"/><mets:fptr FILEID=\"FILE_0206\"/></mets:div><mets:div ID=\"PHYS_0208\" ORDER=\"208\" ORDERLABEL=\"102\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0207_MIN\"/><mets:fptr FILEID=\"FILE_0207_DEFAULT\"/><mets:fptr FILEID=\"FILE_0207_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0207_MAX\"/><mets:fptr FILEID=\"FILE_0207_THUMBS\"/><mets:fptr FILEID=\"FILE_0207\"/></mets:div><mets:div ID=\"PHYS_0209\" ORDER=\"209\" ORDERLABEL=\"103\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0208_MIN\"/><mets:fptr FILEID=\"FILE_0208_DEFAULT\"/><mets:fptr FILEID=\"FILE_0208_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0208_MAX\"/><mets:fptr FILEID=\"FILE_0208_THUMBS\"/><mets:fptr FILEID=\"FILE_0208\"/></mets:div><mets:div ID=\"PHYS_0210\" ORDER=\"210\" ORDERLABEL=\"104\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0209_MIN\"/><mets:fptr FILEID=\"FILE_0209_DEFAULT\"/><mets:fptr FILEID=\"FILE_0209_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0209_MAX\"/><mets:fptr FILEID=\"FILE_0209_THUMBS\"/><mets:fptr FILEID=\"FILE_0209\"/></mets:div><mets:div ID=\"PHYS_0211\" ORDER=\"211\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0210_MIN\"/><mets:fptr FILEID=\"FILE_0210_DEFAULT\"/><mets:fptr FILEID=\"FILE_0210_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0210_MAX\"/><mets:fptr FILEID=\"FILE_0210_THUMBS\"/><mets:fptr FILEID=\"FILE_0210\"/></mets:div><mets:div ID=\"PHYS_0212\" ORDER=\"212\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0211_MIN\"/><mets:fptr FILEID=\"FILE_0211_DEFAULT\"/><mets:fptr FILEID=\"FILE_0211_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0211_MAX\"/><mets:fptr FILEID=\"FILE_0211_THUMBS\"/><mets:fptr FILEID=\"FILE_0211\"/></mets:div><mets:div ID=\"PHYS_0213\" ORDER=\"213\" ORDERLABEL=\"105\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0212_MIN\"/><mets:fptr FILEID=\"FILE_0212_DEFAULT\"/><mets:fptr FILEID=\"FILE_0212_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0212_MAX\"/><mets:fptr FILEID=\"FILE_0212_THUMBS\"/><mets:fptr FILEID=\"FILE_0212\"/></mets:div><mets:div ID=\"PHYS_0214\" ORDER=\"214\" ORDERLABEL=\"106\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0213_MIN\"/><mets:fptr FILEID=\"FILE_0213_DEFAULT\"/><mets:fptr FILEID=\"FILE_0213_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0213_MAX\"/><mets:fptr FILEID=\"FILE_0213_THUMBS\"/><mets:fptr FILEID=\"FILE_0213\"/></mets:div><mets:div ID=\"PHYS_0215\" ORDER=\"215\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0214_MIN\"/><mets:fptr FILEID=\"FILE_0214_DEFAULT\"/><mets:fptr FILEID=\"FILE_0214_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0214_MAX\"/><mets:fptr FILEID=\"FILE_0214_THUMBS\"/><mets:fptr FILEID=\"FILE_0214\"/></mets:div><mets:div ID=\"PHYS_0216\" ORDER=\"216\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0215_MIN\"/><mets:fptr FILEID=\"FILE_0215_DEFAULT\"/><mets:fptr FILEID=\"FILE_0215_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0215_MAX\"/><mets:fptr FILEID=\"FILE_0215_THUMBS\"/><mets:fptr FILEID=\"FILE_0215\"/></mets:div><mets:div ID=\"PHYS_0217\" ORDER=\"217\" ORDERLABEL=\"107\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0216_MIN\"/><mets:fptr FILEID=\"FILE_0216_DEFAULT\"/><mets:fptr FILEID=\"FILE_0216_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0216_MAX\"/><mets:fptr FILEID=\"FILE_0216_THUMBS\"/><mets:fptr FILEID=\"FILE_0216\"/></mets:div><mets:div ID=\"PHYS_0218\" ORDER=\"218\" ORDERLABEL=\"108\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0217_MIN\"/><mets:fptr FILEID=\"FILE_0217_DEFAULT\"/><mets:fptr FILEID=\"FILE_0217_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0217_MAX\"/><mets:fptr FILEID=\"FILE_0217_THUMBS\"/><mets:fptr FILEID=\"FILE_0217\"/></mets:div><mets:div ID=\"PHYS_0219\" ORDER=\"219\" ORDERLABEL=\"109\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0218_MIN\"/><mets:fptr FILEID=\"FILE_0218_DEFAULT\"/><mets:fptr FILEID=\"FILE_0218_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0218_MAX\"/><mets:fptr FILEID=\"FILE_0218_THUMBS\"/><mets:fptr FILEID=\"FILE_0218\"/></mets:div><mets:div ID=\"PHYS_0220\" ORDER=\"220\" ORDERLABEL=\"110\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0219_MIN\"/><mets:fptr FILEID=\"FILE_0219_DEFAULT\"/><mets:fptr FILEID=\"FILE_0219_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0219_MAX\"/><mets:fptr FILEID=\"FILE_0219_THUMBS\"/><mets:fptr FILEID=\"FILE_0219\"/></mets:div><mets:div ID=\"PHYS_0221\" ORDER=\"221\" ORDERLABEL=\"111\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0220_MIN\"/><mets:fptr FILEID=\"FILE_0220_DEFAULT\"/><mets:fptr FILEID=\"FILE_0220_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0220_MAX\"/><mets:fptr FILEID=\"FILE_0220_THUMBS\"/><mets:fptr FILEID=\"FILE_0220\"/></mets:div><mets:div ID=\"PHYS_0222\" ORDER=\"222\" ORDERLABEL=\"112\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0221_MIN\"/><mets:fptr FILEID=\"FILE_0221_DEFAULT\"/><mets:fptr FILEID=\"FILE_0221_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0221_MAX\"/><mets:fptr FILEID=\"FILE_0221_THUMBS\"/><mets:fptr FILEID=\"FILE_0221\"/></mets:div><mets:div ID=\"PHYS_0223\" ORDER=\"223\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0222_MIN\"/><mets:fptr FILEID=\"FILE_0222_DEFAULT\"/><mets:fptr FILEID=\"FILE_0222_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0222_MAX\"/><mets:fptr FILEID=\"FILE_0222_THUMBS\"/><mets:fptr FILEID=\"FILE_0222\"/></mets:div><mets:div ID=\"PHYS_0224\" ORDER=\"224\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0223_MIN\"/><mets:fptr FILEID=\"FILE_0223_DEFAULT\"/><mets:fptr FILEID=\"FILE_0223_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0223_MAX\"/><mets:fptr FILEID=\"FILE_0223_THUMBS\"/><mets:fptr FILEID=\"FILE_0223\"/></mets:div><mets:div ID=\"PHYS_0225\" ORDER=\"225\" ORDERLABEL=\"113\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0224_MIN\"/><mets:fptr FILEID=\"FILE_0224_DEFAULT\"/><mets:fptr FILEID=\"FILE_0224_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0224_MAX\"/><mets:fptr FILEID=\"FILE_0224_THUMBS\"/><mets:fptr FILEID=\"FILE_0224\"/></mets:div><mets:div ID=\"PHYS_0226\" ORDER=\"226\" ORDERLABEL=\"114\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0225_MIN\"/><mets:fptr FILEID=\"FILE_0225_DEFAULT\"/><mets:fptr FILEID=\"FILE_0225_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0225_MAX\"/><mets:fptr FILEID=\"FILE_0225_THUMBS\"/><mets:fptr FILEID=\"FILE_0225\"/></mets:div><mets:div ID=\"PHYS_0227\" ORDER=\"227\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0226_MIN\"/><mets:fptr FILEID=\"FILE_0226_DEFAULT\"/><mets:fptr FILEID=\"FILE_0226_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0226_MAX\"/><mets:fptr FILEID=\"FILE_0226_THUMBS\"/><mets:fptr FILEID=\"FILE_0226\"/></mets:div><mets:div ID=\"PHYS_0228\" ORDER=\"228\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0227_MIN\"/><mets:fptr FILEID=\"FILE_0227_DEFAULT\"/><mets:fptr FILEID=\"FILE_0227_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0227_MAX\"/><mets:fptr FILEID=\"FILE_0227_THUMBS\"/><mets:fptr FILEID=\"FILE_0227\"/></mets:div><mets:div ID=\"PHYS_0229\" ORDER=\"229\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0228_MIN\"/><mets:fptr FILEID=\"FILE_0228_DEFAULT\"/><mets:fptr FILEID=\"FILE_0228_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0228_MAX\"/><mets:fptr FILEID=\"FILE_0228_THUMBS\"/><mets:fptr FILEID=\"FILE_0228\"/></mets:div><mets:div ID=\"PHYS_0230\" ORDER=\"230\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0229_MIN\"/><mets:fptr FILEID=\"FILE_0229_DEFAULT\"/><mets:fptr FILEID=\"FILE_0229_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0229_MAX\"/><mets:fptr FILEID=\"FILE_0229_THUMBS\"/><mets:fptr FILEID=\"FILE_0229\"/></mets:div><mets:div ID=\"PHYS_0231\" ORDER=\"231\" ORDERLABEL=\"115\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0230_MIN\"/><mets:fptr FILEID=\"FILE_0230_DEFAULT\"/><mets:fptr FILEID=\"FILE_0230_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0230_MAX\"/><mets:fptr FILEID=\"FILE_0230_THUMBS\"/><mets:fptr FILEID=\"FILE_0230\"/></mets:div><mets:div ID=\"PHYS_0232\" ORDER=\"232\" ORDERLABEL=\"116\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0231_MIN\"/><mets:fptr FILEID=\"FILE_0231_DEFAULT\"/><mets:fptr FILEID=\"FILE_0231_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0231_MAX\"/><mets:fptr FILEID=\"FILE_0231_THUMBS\"/><mets:fptr FILEID=\"FILE_0231\"/></mets:div><mets:div ID=\"PHYS_0233\" ORDER=\"233\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0232_MIN\"/><mets:fptr FILEID=\"FILE_0232_DEFAULT\"/><mets:fptr FILEID=\"FILE_0232_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0232_MAX\"/><mets:fptr FILEID=\"FILE_0232_THUMBS\"/><mets:fptr FILEID=\"FILE_0232\"/></mets:div><mets:div ID=\"PHYS_0234\" ORDER=\"234\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0233_MIN\"/><mets:fptr FILEID=\"FILE_0233_DEFAULT\"/><mets:fptr FILEID=\"FILE_0233_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0233_MAX\"/><mets:fptr FILEID=\"FILE_0233_THUMBS\"/><mets:fptr FILEID=\"FILE_0233\"/></mets:div><mets:div ID=\"PHYS_0235\" ORDER=\"235\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0234_MIN\"/><mets:fptr FILEID=\"FILE_0234_DEFAULT\"/><mets:fptr FILEID=\"FILE_0234_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0234_MAX\"/><mets:fptr FILEID=\"FILE_0234_THUMBS\"/><mets:fptr FILEID=\"FILE_0234\"/></mets:div><mets:div ID=\"PHYS_0236\" ORDER=\"236\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0235_MIN\"/><mets:fptr FILEID=\"FILE_0235_DEFAULT\"/><mets:fptr FILEID=\"FILE_0235_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0235_MAX\"/><mets:fptr FILEID=\"FILE_0235_THUMBS\"/><mets:fptr FILEID=\"FILE_0235\"/></mets:div><mets:div ID=\"PHYS_0237\" ORDER=\"237\" ORDERLABEL=\"117\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0236_MIN\"/><mets:fptr FILEID=\"FILE_0236_DEFAULT\"/><mets:fptr FILEID=\"FILE_0236_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0236_MAX\"/><mets:fptr FILEID=\"FILE_0236_THUMBS\"/><mets:fptr FILEID=\"FILE_0236\"/></mets:div><mets:div ID=\"PHYS_0238\" ORDER=\"238\" ORDERLABEL=\"118\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0237_MIN\"/><mets:fptr FILEID=\"FILE_0237_DEFAULT\"/><mets:fptr FILEID=\"FILE_0237_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0237_MAX\"/><mets:fptr FILEID=\"FILE_0237_THUMBS\"/><mets:fptr FILEID=\"FILE_0237\"/></mets:div><mets:div ID=\"PHYS_0239\" ORDER=\"239\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0238_MIN\"/><mets:fptr FILEID=\"FILE_0238_DEFAULT\"/><mets:fptr FILEID=\"FILE_0238_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0238_MAX\"/><mets:fptr FILEID=\"FILE_0238_THUMBS\"/><mets:fptr FILEID=\"FILE_0238\"/></mets:div><mets:div ID=\"PHYS_0240\" ORDER=\"240\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0239_MIN\"/><mets:fptr FILEID=\"FILE_0239_DEFAULT\"/><mets:fptr FILEID=\"FILE_0239_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0239_MAX\"/><mets:fptr FILEID=\"FILE_0239_THUMBS\"/><mets:fptr FILEID=\"FILE_0239\"/></mets:div><mets:div ID=\"PHYS_0241\" ORDER=\"241\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0240_MIN\"/><mets:fptr FILEID=\"FILE_0240_DEFAULT\"/><mets:fptr FILEID=\"FILE_0240_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0240_MAX\"/><mets:fptr FILEID=\"FILE_0240_THUMBS\"/><mets:fptr FILEID=\"FILE_0240\"/></mets:div><mets:div ID=\"PHYS_0242\" ORDER=\"242\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0241_MIN\"/><mets:fptr FILEID=\"FILE_0241_DEFAULT\"/><mets:fptr FILEID=\"FILE_0241_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0241_MAX\"/><mets:fptr FILEID=\"FILE_0241_THUMBS\"/><mets:fptr FILEID=\"FILE_0241\"/></mets:div><mets:div ID=\"PHYS_0243\" ORDER=\"243\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0242_MIN\"/><mets:fptr FILEID=\"FILE_0242_DEFAULT\"/><mets:fptr FILEID=\"FILE_0242_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0242_MAX\"/><mets:fptr FILEID=\"FILE_0242_THUMBS\"/><mets:fptr FILEID=\"FILE_0242\"/></mets:div><mets:div ID=\"PHYS_0244\" ORDER=\"244\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0243_MIN\"/><mets:fptr FILEID=\"FILE_0243_DEFAULT\"/><mets:fptr FILEID=\"FILE_0243_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0243_MAX\"/><mets:fptr FILEID=\"FILE_0243_THUMBS\"/><mets:fptr FILEID=\"FILE_0243\"/></mets:div><mets:div ID=\"PHYS_0245\" ORDER=\"245\" ORDERLABEL=\"119\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0244_MIN\"/><mets:fptr FILEID=\"FILE_0244_DEFAULT\"/><mets:fptr FILEID=\"FILE_0244_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0244_MAX\"/><mets:fptr FILEID=\"FILE_0244_THUMBS\"/><mets:fptr FILEID=\"FILE_0244\"/></mets:div><mets:div ID=\"PHYS_0246\" ORDER=\"246\" ORDERLABEL=\"120\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0245_MIN\"/><mets:fptr FILEID=\"FILE_0245_DEFAULT\"/><mets:fptr FILEID=\"FILE_0245_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0245_MAX\"/><mets:fptr FILEID=\"FILE_0245_THUMBS\"/><mets:fptr FILEID=\"FILE_0245\"/></mets:div><mets:div ID=\"PHYS_0247\" ORDER=\"247\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0246_MIN\"/><mets:fptr FILEID=\"FILE_0246_DEFAULT\"/><mets:fptr FILEID=\"FILE_0246_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0246_MAX\"/><mets:fptr FILEID=\"FILE_0246_THUMBS\"/><mets:fptr FILEID=\"FILE_0246\"/></mets:div><mets:div ID=\"PHYS_0248\" ORDER=\"248\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0247_MIN\"/><mets:fptr FILEID=\"FILE_0247_DEFAULT\"/><mets:fptr FILEID=\"FILE_0247_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0247_MAX\"/><mets:fptr FILEID=\"FILE_0247_THUMBS\"/><mets:fptr FILEID=\"FILE_0247\"/></mets:div><mets:div ID=\"PHYS_0249\" ORDER=\"249\" ORDERLABEL=\"121\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0248_MIN\"/><mets:fptr FILEID=\"FILE_0248_DEFAULT\"/><mets:fptr FILEID=\"FILE_0248_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0248_MAX\"/><mets:fptr FILEID=\"FILE_0248_THUMBS\"/><mets:fptr FILEID=\"FILE_0248\"/></mets:div><mets:div ID=\"PHYS_0250\" ORDER=\"250\" ORDERLABEL=\"122\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0249_MIN\"/><mets:fptr FILEID=\"FILE_0249_DEFAULT\"/><mets:fptr FILEID=\"FILE_0249_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0249_MAX\"/><mets:fptr FILEID=\"FILE_0249_THUMBS\"/><mets:fptr FILEID=\"FILE_0249\"/></mets:div><mets:div ID=\"PHYS_0251\" ORDER=\"251\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0250_MIN\"/><mets:fptr FILEID=\"FILE_0250_DEFAULT\"/><mets:fptr FILEID=\"FILE_0250_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0250_MAX\"/><mets:fptr FILEID=\"FILE_0250_THUMBS\"/><mets:fptr FILEID=\"FILE_0250\"/></mets:div><mets:div ID=\"PHYS_0252\" ORDER=\"252\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0251_MIN\"/><mets:fptr FILEID=\"FILE_0251_DEFAULT\"/><mets:fptr FILEID=\"FILE_0251_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0251_MAX\"/><mets:fptr FILEID=\"FILE_0251_THUMBS\"/><mets:fptr FILEID=\"FILE_0251\"/></mets:div><mets:div ID=\"PHYS_0253\" ORDER=\"253\" ORDERLABEL=\"123\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0252_MIN\"/><mets:fptr FILEID=\"FILE_0252_DEFAULT\"/><mets:fptr FILEID=\"FILE_0252_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0252_MAX\"/><mets:fptr FILEID=\"FILE_0252_THUMBS\"/><mets:fptr FILEID=\"FILE_0252\"/></mets:div><mets:div ID=\"PHYS_0254\" ORDER=\"254\" ORDERLABEL=\"124\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0253_MIN\"/><mets:fptr FILEID=\"FILE_0253_DEFAULT\"/><mets:fptr FILEID=\"FILE_0253_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0253_MAX\"/><mets:fptr FILEID=\"FILE_0253_THUMBS\"/><mets:fptr FILEID=\"FILE_0253\"/></mets:div><mets:div ID=\"PHYS_0255\" ORDER=\"255\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0254_MIN\"/><mets:fptr FILEID=\"FILE_0254_DEFAULT\"/><mets:fptr FILEID=\"FILE_0254_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0254_MAX\"/><mets:fptr FILEID=\"FILE_0254_THUMBS\"/><mets:fptr FILEID=\"FILE_0254\"/></mets:div><mets:div ID=\"PHYS_0256\" ORDER=\"256\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0255_MIN\"/><mets:fptr FILEID=\"FILE_0255_DEFAULT\"/><mets:fptr FILEID=\"FILE_0255_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0255_MAX\"/><mets:fptr FILEID=\"FILE_0255_THUMBS\"/><mets:fptr FILEID=\"FILE_0255\"/></mets:div><mets:div ID=\"PHYS_0257\" ORDER=\"257\" ORDERLABEL=\"125\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0256_MIN\"/><mets:fptr FILEID=\"FILE_0256_DEFAULT\"/><mets:fptr FILEID=\"FILE_0256_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0256_MAX\"/><mets:fptr FILEID=\"FILE_0256_THUMBS\"/><mets:fptr FILEID=\"FILE_0256\"/></mets:div><mets:div ID=\"PHYS_0258\" ORDER=\"258\" ORDERLABEL=\"126\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0257_MIN\"/><mets:fptr FILEID=\"FILE_0257_DEFAULT\"/><mets:fptr FILEID=\"FILE_0257_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0257_MAX\"/><mets:fptr FILEID=\"FILE_0257_THUMBS\"/><mets:fptr FILEID=\"FILE_0257\"/></mets:div><mets:div ID=\"PHYS_0259\" ORDER=\"259\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0258_MIN\"/><mets:fptr FILEID=\"FILE_0258_DEFAULT\"/><mets:fptr FILEID=\"FILE_0258_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0258_MAX\"/><mets:fptr FILEID=\"FILE_0258_THUMBS\"/><mets:fptr FILEID=\"FILE_0258\"/></mets:div><mets:div ID=\"PHYS_0260\" ORDER=\"260\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0259_MIN\"/><mets:fptr FILEID=\"FILE_0259_DEFAULT\"/><mets:fptr FILEID=\"FILE_0259_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0259_MAX\"/><mets:fptr FILEID=\"FILE_0259_THUMBS\"/><mets:fptr FILEID=\"FILE_0259\"/></mets:div><mets:div ID=\"PHYS_0261\" ORDER=\"261\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0260_MIN\"/><mets:fptr FILEID=\"FILE_0260_DEFAULT\"/><mets:fptr FILEID=\"FILE_0260_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0260_MAX\"/><mets:fptr FILEID=\"FILE_0260_THUMBS\"/><mets:fptr FILEID=\"FILE_0260\"/></mets:div><mets:div ID=\"PHYS_0262\" ORDER=\"262\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0261_MIN\"/><mets:fptr FILEID=\"FILE_0261_DEFAULT\"/><mets:fptr FILEID=\"FILE_0261_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0261_MAX\"/><mets:fptr FILEID=\"FILE_0261_THUMBS\"/><mets:fptr FILEID=\"FILE_0261\"/></mets:div><mets:div ID=\"PHYS_0263\" ORDER=\"263\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0262_MIN\"/><mets:fptr FILEID=\"FILE_0262_DEFAULT\"/><mets:fptr FILEID=\"FILE_0262_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0262_MAX\"/><mets:fptr FILEID=\"FILE_0262_THUMBS\"/><mets:fptr FILEID=\"FILE_0262\"/></mets:div><mets:div ID=\"PHYS_0264\" ORDER=\"264\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0263_MIN\"/><mets:fptr FILEID=\"FILE_0263_DEFAULT\"/><mets:fptr FILEID=\"FILE_0263_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0263_MAX\"/><mets:fptr FILEID=\"FILE_0263_THUMBS\"/><mets:fptr FILEID=\"FILE_0263\"/></mets:div><mets:div ID=\"PHYS_0265\" ORDER=\"265\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0264_MIN\"/><mets:fptr FILEID=\"FILE_0264_DEFAULT\"/><mets:fptr FILEID=\"FILE_0264_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0264_MAX\"/><mets:fptr FILEID=\"FILE_0264_THUMBS\"/><mets:fptr FILEID=\"FILE_0264\"/></mets:div><mets:div ID=\"PHYS_0266\" ORDER=\"266\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0265_MIN\"/><mets:fptr FILEID=\"FILE_0265_DEFAULT\"/><mets:fptr FILEID=\"FILE_0265_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0265_MAX\"/><mets:fptr FILEID=\"FILE_0265_THUMBS\"/><mets:fptr FILEID=\"FILE_0265\"/></mets:div><mets:div ID=\"PHYS_0267\" ORDER=\"267\" ORDERLABEL=\"127\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0266_MIN\"/><mets:fptr FILEID=\"FILE_0266_DEFAULT\"/><mets:fptr FILEID=\"FILE_0266_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0266_MAX\"/><mets:fptr FILEID=\"FILE_0266_THUMBS\"/><mets:fptr FILEID=\"FILE_0266\"/></mets:div><mets:div ID=\"PHYS_0268\" ORDER=\"268\" ORDERLABEL=\"128\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0267_MIN\"/><mets:fptr FILEID=\"FILE_0267_DEFAULT\"/><mets:fptr FILEID=\"FILE_0267_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0267_MAX\"/><mets:fptr FILEID=\"FILE_0267_THUMBS\"/><mets:fptr FILEID=\"FILE_0267\"/></mets:div><mets:div ID=\"PHYS_0269\" ORDER=\"269\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0268_MIN\"/><mets:fptr FILEID=\"FILE_0268_DEFAULT\"/><mets:fptr FILEID=\"FILE_0268_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0268_MAX\"/><mets:fptr FILEID=\"FILE_0268_THUMBS\"/><mets:fptr FILEID=\"FILE_0268\"/></mets:div><mets:div ID=\"PHYS_0270\" ORDER=\"270\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0269_MIN\"/><mets:fptr FILEID=\"FILE_0269_DEFAULT\"/><mets:fptr FILEID=\"FILE_0269_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0269_MAX\"/><mets:fptr FILEID=\"FILE_0269_THUMBS\"/><mets:fptr FILEID=\"FILE_0269\"/></mets:div><mets:div ID=\"PHYS_0271\" ORDER=\"271\" ORDERLABEL=\"129\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0270_MIN\"/><mets:fptr FILEID=\"FILE_0270_DEFAULT\"/><mets:fptr FILEID=\"FILE_0270_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0270_MAX\"/><mets:fptr FILEID=\"FILE_0270_THUMBS\"/><mets:fptr FILEID=\"FILE_0270\"/></mets:div><mets:div ID=\"PHYS_0272\" ORDER=\"272\" ORDERLABEL=\"130\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0271_MIN\"/><mets:fptr FILEID=\"FILE_0271_DEFAULT\"/><mets:fptr FILEID=\"FILE_0271_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0271_MAX\"/><mets:fptr FILEID=\"FILE_0271_THUMBS\"/><mets:fptr FILEID=\"FILE_0271\"/></mets:div><mets:div ID=\"PHYS_0273\" ORDER=\"273\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0272_MIN\"/><mets:fptr FILEID=\"FILE_0272_DEFAULT\"/><mets:fptr FILEID=\"FILE_0272_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0272_MAX\"/><mets:fptr FILEID=\"FILE_0272_THUMBS\"/><mets:fptr FILEID=\"FILE_0272\"/></mets:div><mets:div ID=\"PHYS_0274\" ORDER=\"274\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0273_MIN\"/><mets:fptr FILEID=\"FILE_0273_DEFAULT\"/><mets:fptr FILEID=\"FILE_0273_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0273_MAX\"/><mets:fptr FILEID=\"FILE_0273_THUMBS\"/><mets:fptr FILEID=\"FILE_0273\"/></mets:div><mets:div ID=\"PHYS_0275\" ORDER=\"275\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0274_MIN\"/><mets:fptr FILEID=\"FILE_0274_DEFAULT\"/><mets:fptr FILEID=\"FILE_0274_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0274_MAX\"/><mets:fptr FILEID=\"FILE_0274_THUMBS\"/><mets:fptr FILEID=\"FILE_0274\"/></mets:div><mets:div ID=\"PHYS_0276\" ORDER=\"276\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0275_MIN\"/><mets:fptr FILEID=\"FILE_0275_DEFAULT\"/><mets:fptr FILEID=\"FILE_0275_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0275_MAX\"/><mets:fptr FILEID=\"FILE_0275_THUMBS\"/><mets:fptr FILEID=\"FILE_0275\"/></mets:div><mets:div ID=\"PHYS_0277\" ORDER=\"277\" ORDERLABEL=\"131\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0276_MIN\"/><mets:fptr FILEID=\"FILE_0276_DEFAULT\"/><mets:fptr FILEID=\"FILE_0276_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0276_MAX\"/><mets:fptr FILEID=\"FILE_0276_THUMBS\"/><mets:fptr FILEID=\"FILE_0276\"/></mets:div><mets:div ID=\"PHYS_0278\" ORDER=\"278\" ORDERLABEL=\"132\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0277_MIN\"/><mets:fptr FILEID=\"FILE_0277_DEFAULT\"/><mets:fptr FILEID=\"FILE_0277_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0277_MAX\"/><mets:fptr FILEID=\"FILE_0277_THUMBS\"/><mets:fptr FILEID=\"FILE_0277\"/></mets:div><mets:div ID=\"PHYS_0279\" ORDER=\"279\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0278_MIN\"/><mets:fptr FILEID=\"FILE_0278_DEFAULT\"/><mets:fptr FILEID=\"FILE_0278_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0278_MAX\"/><mets:fptr FILEID=\"FILE_0278_THUMBS\"/><mets:fptr FILEID=\"FILE_0278\"/></mets:div><mets:div ID=\"PHYS_0280\" ORDER=\"280\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0279_MIN\"/><mets:fptr FILEID=\"FILE_0279_DEFAULT\"/><mets:fptr FILEID=\"FILE_0279_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0279_MAX\"/><mets:fptr FILEID=\"FILE_0279_THUMBS\"/><mets:fptr FILEID=\"FILE_0279\"/></mets:div><mets:div ID=\"PHYS_0281\" ORDER=\"281\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0280_MIN\"/><mets:fptr FILEID=\"FILE_0280_DEFAULT\"/><mets:fptr FILEID=\"FILE_0280_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0280_MAX\"/><mets:fptr FILEID=\"FILE_0280_THUMBS\"/><mets:fptr FILEID=\"FILE_0280\"/></mets:div><mets:div ID=\"PHYS_0282\" ORDER=\"282\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0281_MIN\"/><mets:fptr FILEID=\"FILE_0281_DEFAULT\"/><mets:fptr FILEID=\"FILE_0281_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0281_MAX\"/><mets:fptr FILEID=\"FILE_0281_THUMBS\"/><mets:fptr FILEID=\"FILE_0281\"/></mets:div><mets:div ID=\"PHYS_0283\" ORDER=\"283\" ORDERLABEL=\"133\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0282_MIN\"/><mets:fptr FILEID=\"FILE_0282_DEFAULT\"/><mets:fptr FILEID=\"FILE_0282_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0282_MAX\"/><mets:fptr FILEID=\"FILE_0282_THUMBS\"/><mets:fptr FILEID=\"FILE_0282\"/></mets:div><mets:div ID=\"PHYS_0284\" ORDER=\"284\" ORDERLABEL=\"134\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0283_MIN\"/><mets:fptr FILEID=\"FILE_0283_DEFAULT\"/><mets:fptr FILEID=\"FILE_0283_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0283_MAX\"/><mets:fptr FILEID=\"FILE_0283_THUMBS\"/><mets:fptr FILEID=\"FILE_0283\"/></mets:div><mets:div ID=\"PHYS_0285\" ORDER=\"285\" ORDERLABEL=\"135\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0284_MIN\"/><mets:fptr FILEID=\"FILE_0284_DEFAULT\"/><mets:fptr FILEID=\"FILE_0284_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0284_MAX\"/><mets:fptr FILEID=\"FILE_0284_THUMBS\"/><mets:fptr FILEID=\"FILE_0284\"/></mets:div><mets:div ID=\"PHYS_0286\" ORDER=\"286\" ORDERLABEL=\"136\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0285_MIN\"/><mets:fptr FILEID=\"FILE_0285_DEFAULT\"/><mets:fptr FILEID=\"FILE_0285_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0285_MAX\"/><mets:fptr FILEID=\"FILE_0285_THUMBS\"/><mets:fptr FILEID=\"FILE_0285\"/></mets:div><mets:div ID=\"PHYS_0287\" ORDER=\"287\" ORDERLABEL=\"137\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0286_MIN\"/><mets:fptr FILEID=\"FILE_0286_DEFAULT\"/><mets:fptr FILEID=\"FILE_0286_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0286_MAX\"/><mets:fptr FILEID=\"FILE_0286_THUMBS\"/><mets:fptr FILEID=\"FILE_0286\"/></mets:div><mets:div ID=\"PHYS_0288\" ORDER=\"288\" ORDERLABEL=\"138\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0287_MIN\"/><mets:fptr FILEID=\"FILE_0287_DEFAULT\"/><mets:fptr FILEID=\"FILE_0287_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0287_MAX\"/><mets:fptr FILEID=\"FILE_0287_THUMBS\"/><mets:fptr FILEID=\"FILE_0287\"/></mets:div><mets:div ID=\"PHYS_0289\" ORDER=\"289\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0288_MIN\"/><mets:fptr FILEID=\"FILE_0288_DEFAULT\"/><mets:fptr FILEID=\"FILE_0288_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0288_MAX\"/><mets:fptr FILEID=\"FILE_0288_THUMBS\"/><mets:fptr FILEID=\"FILE_0288\"/></mets:div><mets:div ID=\"PHYS_0290\" ORDER=\"290\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0289_MIN\"/><mets:fptr FILEID=\"FILE_0289_DEFAULT\"/><mets:fptr FILEID=\"FILE_0289_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0289_MAX\"/><mets:fptr FILEID=\"FILE_0289_THUMBS\"/><mets:fptr FILEID=\"FILE_0289\"/></mets:div><mets:div ID=\"PHYS_0291\" ORDER=\"291\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0290_MIN\"/><mets:fptr FILEID=\"FILE_0290_DEFAULT\"/><mets:fptr FILEID=\"FILE_0290_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0290_MAX\"/><mets:fptr FILEID=\"FILE_0290_THUMBS\"/><mets:fptr FILEID=\"FILE_0290\"/></mets:div><mets:div ID=\"PHYS_0292\" ORDER=\"292\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0291_MIN\"/><mets:fptr FILEID=\"FILE_0291_DEFAULT\"/><mets:fptr FILEID=\"FILE_0291_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0291_MAX\"/><mets:fptr FILEID=\"FILE_0291_THUMBS\"/><mets:fptr FILEID=\"FILE_0291\"/></mets:div><mets:div ID=\"PHYS_0293\" ORDER=\"293\" ORDERLABEL=\"139\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0292_MIN\"/><mets:fptr FILEID=\"FILE_0292_DEFAULT\"/><mets:fptr FILEID=\"FILE_0292_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0292_MAX\"/><mets:fptr FILEID=\"FILE_0292_THUMBS\"/><mets:fptr FILEID=\"FILE_0292\"/></mets:div><mets:div ID=\"PHYS_0294\" ORDER=\"294\" ORDERLABEL=\"140\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0293_MIN\"/><mets:fptr FILEID=\"FILE_0293_DEFAULT\"/><mets:fptr FILEID=\"FILE_0293_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0293_MAX\"/><mets:fptr FILEID=\"FILE_0293_THUMBS\"/><mets:fptr FILEID=\"FILE_0293\"/></mets:div><mets:div ID=\"PHYS_0295\" ORDER=\"295\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0294_MIN\"/><mets:fptr FILEID=\"FILE_0294_DEFAULT\"/><mets:fptr FILEID=\"FILE_0294_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0294_MAX\"/><mets:fptr FILEID=\"FILE_0294_THUMBS\"/><mets:fptr FILEID=\"FILE_0294\"/></mets:div><mets:div ID=\"PHYS_0296\" ORDER=\"296\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0295_MIN\"/><mets:fptr FILEID=\"FILE_0295_DEFAULT\"/><mets:fptr FILEID=\"FILE_0295_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0295_MAX\"/><mets:fptr FILEID=\"FILE_0295_THUMBS\"/><mets:fptr FILEID=\"FILE_0295\"/></mets:div><mets:div ID=\"PHYS_0297\" ORDER=\"297\" ORDERLABEL=\"141\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0296_MIN\"/><mets:fptr FILEID=\"FILE_0296_DEFAULT\"/><mets:fptr FILEID=\"FILE_0296_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0296_MAX\"/><mets:fptr FILEID=\"FILE_0296_THUMBS\"/><mets:fptr FILEID=\"FILE_0296\"/></mets:div><mets:div ID=\"PHYS_0298\" ORDER=\"298\" ORDERLABEL=\"142\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0297_MIN\"/><mets:fptr FILEID=\"FILE_0297_DEFAULT\"/><mets:fptr FILEID=\"FILE_0297_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0297_MAX\"/><mets:fptr FILEID=\"FILE_0297_THUMBS\"/><mets:fptr FILEID=\"FILE_0297\"/></mets:div><mets:div ID=\"PHYS_0299\" ORDER=\"299\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0298_MIN\"/><mets:fptr FILEID=\"FILE_0298_DEFAULT\"/><mets:fptr FILEID=\"FILE_0298_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0298_MAX\"/><mets:fptr FILEID=\"FILE_0298_THUMBS\"/><mets:fptr FILEID=\"FILE_0298\"/></mets:div><mets:div ID=\"PHYS_0300\" ORDER=\"300\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0299_MIN\"/><mets:fptr FILEID=\"FILE_0299_DEFAULT\"/><mets:fptr FILEID=\"FILE_0299_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0299_MAX\"/><mets:fptr FILEID=\"FILE_0299_THUMBS\"/><mets:fptr FILEID=\"FILE_0299\"/></mets:div><mets:div ID=\"PHYS_0301\" ORDER=\"301\" ORDERLABEL=\"143\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0300_MIN\"/><mets:fptr FILEID=\"FILE_0300_DEFAULT\"/><mets:fptr FILEID=\"FILE_0300_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0300_MAX\"/><mets:fptr FILEID=\"FILE_0300_THUMBS\"/><mets:fptr FILEID=\"FILE_0300\"/></mets:div><mets:div ID=\"PHYS_0302\" ORDER=\"302\" TYPE=\"page\"><mets:fptr FILEID=\"FILE_0301_MIN\"/><mets:fptr FILEID=\"FILE_0301_DEFAULT\"/><mets:fptr FILEID=\"FILE_0301_PRESENTATION\"/><mets:fptr FILEID=\"FILE_0301_MAX\"/><mets:fptr FILEID=\"FILE_0301_THUMBS\"/><mets:fptr FILEID=\"FILE_0301\"/></mets:div></mets:div></mets:structMap><mets:structLink><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0001\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0002\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0003\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0004\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0005\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0006\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0007\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0008\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0009\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0010\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0011\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0012\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0013\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0014\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0015\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0016\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0017\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0018\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0019\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0020\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0021\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0022\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0023\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0024\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0025\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0026\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0027\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0028\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0029\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0030\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0031\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0032\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0033\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0034\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0035\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0036\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0037\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0038\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0039\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0040\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0041\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0042\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0043\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0044\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0045\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0046\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0047\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0048\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0049\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0050\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0051\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0052\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0053\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0054\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0055\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0056\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0057\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0058\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0059\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0060\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0061\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0062\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0063\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0064\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0065\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0066\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0067\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0068\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0069\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0070\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0071\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0072\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0073\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0074\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0075\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0076\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0077\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0078\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0079\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0080\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0081\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0082\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0083\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0084\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0085\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0086\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0087\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0088\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0089\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0090\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0091\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0092\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0093\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0094\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0095\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0096\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0097\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0098\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0099\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0100\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0101\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0102\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0103\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0103\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0104\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0105\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0106\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0107\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0108\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0109\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0110\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0111\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0112\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0113\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0114\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0115\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0116\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0117\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0118\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0119\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0120\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0121\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0122\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0123\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0124\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0125\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0126\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0127\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0128\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0128\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0129\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0130\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0131\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0132\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0133\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0134\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0135\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0136\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0137\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0138\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0139\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0140\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0141\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0142\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0143\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0144\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0145\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0146\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0147\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0148\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0149\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0150\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0151\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0152\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0153\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0154\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0155\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0156\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0157\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0158\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0159\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0160\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0161\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0162\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0163\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0164\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0165\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0166\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0167\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0168\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0169\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0170\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0171\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0171\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0172\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0173\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0174\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0175\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0176\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0177\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0178\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0179\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0180\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0181\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0182\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0183\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0184\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0185\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0186\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0187\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0188\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0189\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0190\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0191\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0192\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0193\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0194\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0195\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0196\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0197\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0198\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0199\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0200\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0201\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0202\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0203\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0204\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0205\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0205\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0206\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0207\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0208\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0209\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0210\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0211\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0212\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0213\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0214\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0215\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0216\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0217\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0218\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0219\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0220\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0221\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0222\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0223\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0224\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0225\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0226\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0227\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0228\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0229\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0230\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0231\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0232\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0233\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0234\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0235\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0236\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0237\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0238\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0239\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0240\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0241\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0242\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0243\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0244\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0245\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0246\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0247\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0248\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0249\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0250\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0251\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0252\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0253\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0254\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0255\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0256\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0257\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0258\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0259\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0260\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0261\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0262\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0263\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0264\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0265\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0266\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0267\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0268\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0269\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0270\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0271\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0272\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0273\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0274\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0275\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0276\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0277\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0278\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0279\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0280\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0281\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0282\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0283\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0284\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0284\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0285\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0286\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0287\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0288\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0289\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0290\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0291\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0292\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0293\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0294\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0295\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0296\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0297\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0298\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0299\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0300\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0301\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0302\" xlink:from=\"LOG_0003\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0001\" xlink:from=\"LOG_0004\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0002\" xlink:from=\"LOG_0004\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0003\" xlink:from=\"LOG_0005\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0004\" xlink:from=\"LOG_0005\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0005\" xlink:from=\"LOG_0006\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0006\" xlink:from=\"LOG_0006\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0007\" xlink:from=\"LOG_0007\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0008\" xlink:from=\"LOG_0007\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0009\" xlink:from=\"LOG_0008\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0010\" xlink:from=\"LOG_0008\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0011\" xlink:from=\"LOG_0008\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0012\" xlink:from=\"LOG_0008\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0013\" xlink:from=\"LOG_0008\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0014\" xlink:from=\"LOG_0009\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0015\" xlink:from=\"LOG_0010\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0016\" xlink:from=\"LOG_0010\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0017\" xlink:from=\"LOG_0010\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0018\" xlink:from=\"LOG_0010\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0019\" xlink:from=\"LOG_0010\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0020\" xlink:from=\"LOG_0010\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0021\" xlink:from=\"LOG_0010\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0022\" xlink:from=\"LOG_0010\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0023\" xlink:from=\"LOG_0010\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0024\" xlink:from=\"LOG_0010\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0025\" xlink:from=\"LOG_0010\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0026\" xlink:from=\"LOG_0010\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0027\" xlink:from=\"LOG_0010\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0028\" xlink:from=\"LOG_0010\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0029\" xlink:from=\"LOG_0010\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0030\" xlink:from=\"LOG_0010\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0031\" xlink:from=\"LOG_0010\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0032\" xlink:from=\"LOG_0010\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0033\" xlink:from=\"LOG_0010\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0034\" xlink:from=\"LOG_0010\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0035\" xlink:from=\"LOG_0010\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0036\" xlink:from=\"LOG_0010\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0037\" xlink:from=\"LOG_0010\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0038\" xlink:from=\"LOG_0010\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0039\" xlink:from=\"LOG_0011\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0040\" xlink:from=\"LOG_0011\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0041\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0042\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0043\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0044\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0045\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0046\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0047\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0048\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0049\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0050\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0051\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0052\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0053\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0054\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0055\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0056\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0057\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0058\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0059\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0060\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0061\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0062\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0063\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0064\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0065\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0066\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0067\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0068\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0069\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0070\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0071\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0072\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0073\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0074\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0075\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0076\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0077\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0078\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0079\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0080\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0081\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0082\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0083\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0084\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0085\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0086\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0087\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0088\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0089\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0090\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0091\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0092\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0093\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0094\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0095\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0096\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0097\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0098\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0099\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0100\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0101\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0102\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0103\" xlink:from=\"LOG_0012\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0041\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0042\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0043\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0044\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0045\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0046\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0047\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0048\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0049\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0050\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0051\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0052\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0053\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0054\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0055\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0056\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0057\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0058\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0059\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0060\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0061\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0062\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0063\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0064\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0065\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0066\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0067\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0068\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0069\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0070\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0071\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0072\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0073\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0074\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0075\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0076\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0077\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0078\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0079\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0080\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0081\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0082\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0083\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0084\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0085\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0086\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0087\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0088\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0089\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0090\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0091\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0092\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0093\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0094\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0095\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0096\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0097\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0098\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0099\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0100\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0101\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0102\" xlink:from=\"LOG_0013\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0043\" xlink:from=\"LOG_0014\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0044\" xlink:from=\"LOG_0014\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0045\" xlink:from=\"LOG_0014\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0046\" xlink:from=\"LOG_0014\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0047\" xlink:from=\"LOG_0014\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0048\" xlink:from=\"LOG_0014\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0049\" xlink:from=\"LOG_0014\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0050\" xlink:from=\"LOG_0014\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0051\" xlink:from=\"LOG_0014\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0052\" xlink:from=\"LOG_0014\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0053\" xlink:from=\"LOG_0014\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0054\" xlink:from=\"LOG_0014\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0055\" xlink:from=\"LOG_0014\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0056\" xlink:from=\"LOG_0014\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0057\" xlink:from=\"LOG_0014\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0058\" xlink:from=\"LOG_0014\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0059\" xlink:from=\"LOG_0014\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0060\" xlink:from=\"LOG_0014\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0061\" xlink:from=\"LOG_0014\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0062\" xlink:from=\"LOG_0014\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0063\" xlink:from=\"LOG_0014\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0064\" xlink:from=\"LOG_0014\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0065\" xlink:from=\"LOG_0014\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0066\" xlink:from=\"LOG_0014\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0067\" xlink:from=\"LOG_0014\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0068\" xlink:from=\"LOG_0014\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0069\" xlink:from=\"LOG_0014\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0070\" xlink:from=\"LOG_0014\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0071\" xlink:from=\"LOG_0014\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0072\" xlink:from=\"LOG_0014\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0073\" xlink:from=\"LOG_0014\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0074\" xlink:from=\"LOG_0014\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0075\" xlink:from=\"LOG_0014\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0076\" xlink:from=\"LOG_0014\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0077\" xlink:from=\"LOG_0014\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0078\" xlink:from=\"LOG_0014\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0079\" xlink:from=\"LOG_0014\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0080\" xlink:from=\"LOG_0014\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0081\" xlink:from=\"LOG_0014\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0082\" xlink:from=\"LOG_0014\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0083\" xlink:from=\"LOG_0014\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0084\" xlink:from=\"LOG_0014\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0085\" xlink:from=\"LOG_0014\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0086\" xlink:from=\"LOG_0014\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0087\" xlink:from=\"LOG_0014\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0088\" xlink:from=\"LOG_0014\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0089\" xlink:from=\"LOG_0014\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0090\" xlink:from=\"LOG_0014\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0091\" xlink:from=\"LOG_0014\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0092\" xlink:from=\"LOG_0014\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0093\" xlink:from=\"LOG_0014\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0094\" xlink:from=\"LOG_0014\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0095\" xlink:from=\"LOG_0014\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0096\" xlink:from=\"LOG_0014\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0097\" xlink:from=\"LOG_0014\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0098\" xlink:from=\"LOG_0014\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0099\" xlink:from=\"LOG_0014\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0100\" xlink:from=\"LOG_0014\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0101\" xlink:from=\"LOG_0014\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0102\" xlink:from=\"LOG_0014\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0103\" xlink:from=\"LOG_0014\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0103\" xlink:from=\"LOG_0015\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0104\" xlink:from=\"LOG_0015\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0105\" xlink:from=\"LOG_0015\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0106\" xlink:from=\"LOG_0015\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0107\" xlink:from=\"LOG_0015\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0108\" xlink:from=\"LOG_0015\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0109\" xlink:from=\"LOG_0015\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0110\" xlink:from=\"LOG_0015\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0111\" xlink:from=\"LOG_0015\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0112\" xlink:from=\"LOG_0015\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0113\" xlink:from=\"LOG_0015\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0114\" xlink:from=\"LOG_0015\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0115\" xlink:from=\"LOG_0015\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0116\" xlink:from=\"LOG_0015\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0117\" xlink:from=\"LOG_0015\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0118\" xlink:from=\"LOG_0015\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0119\" xlink:from=\"LOG_0015\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0120\" xlink:from=\"LOG_0015\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0121\" xlink:from=\"LOG_0015\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0122\" xlink:from=\"LOG_0015\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0123\" xlink:from=\"LOG_0015\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0124\" xlink:from=\"LOG_0015\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0125\" xlink:from=\"LOG_0015\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0126\" xlink:from=\"LOG_0015\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0127\" xlink:from=\"LOG_0015\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0128\" xlink:from=\"LOG_0015\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0107\" xlink:from=\"LOG_0016\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0108\" xlink:from=\"LOG_0016\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0109\" xlink:from=\"LOG_0016\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0110\" xlink:from=\"LOG_0016\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0111\" xlink:from=\"LOG_0016\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0112\" xlink:from=\"LOG_0016\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0113\" xlink:from=\"LOG_0016\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0114\" xlink:from=\"LOG_0016\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0115\" xlink:from=\"LOG_0016\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0116\" xlink:from=\"LOG_0016\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0128\" xlink:from=\"LOG_0017\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0129\" xlink:from=\"LOG_0017\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0130\" xlink:from=\"LOG_0017\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0131\" xlink:from=\"LOG_0017\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0132\" xlink:from=\"LOG_0017\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0133\" xlink:from=\"LOG_0017\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0134\" xlink:from=\"LOG_0017\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0135\" xlink:from=\"LOG_0017\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0136\" xlink:from=\"LOG_0017\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0137\" xlink:from=\"LOG_0017\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0138\" xlink:from=\"LOG_0017\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0139\" xlink:from=\"LOG_0017\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0140\" xlink:from=\"LOG_0017\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0141\" xlink:from=\"LOG_0017\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0142\" xlink:from=\"LOG_0017\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0143\" xlink:from=\"LOG_0017\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0144\" xlink:from=\"LOG_0017\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0145\" xlink:from=\"LOG_0017\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0146\" xlink:from=\"LOG_0017\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0147\" xlink:from=\"LOG_0017\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0148\" xlink:from=\"LOG_0017\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0149\" xlink:from=\"LOG_0017\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0150\" xlink:from=\"LOG_0017\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0151\" xlink:from=\"LOG_0017\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0152\" xlink:from=\"LOG_0017\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0153\" xlink:from=\"LOG_0017\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0154\" xlink:from=\"LOG_0017\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0155\" xlink:from=\"LOG_0017\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0156\" xlink:from=\"LOG_0017\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0131\" xlink:from=\"LOG_0018\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0132\" xlink:from=\"LOG_0018\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0133\" xlink:from=\"LOG_0018\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0134\" xlink:from=\"LOG_0018\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0135\" xlink:from=\"LOG_0018\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0136\" xlink:from=\"LOG_0018\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0137\" xlink:from=\"LOG_0018\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0138\" xlink:from=\"LOG_0018\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0139\" xlink:from=\"LOG_0018\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0140\" xlink:from=\"LOG_0018\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0141\" xlink:from=\"LOG_0018\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0142\" xlink:from=\"LOG_0018\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0143\" xlink:from=\"LOG_0018\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0144\" xlink:from=\"LOG_0018\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0145\" xlink:from=\"LOG_0018\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0146\" xlink:from=\"LOG_0018\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0147\" xlink:from=\"LOG_0018\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0148\" xlink:from=\"LOG_0018\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0149\" xlink:from=\"LOG_0018\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0150\" xlink:from=\"LOG_0018\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0151\" xlink:from=\"LOG_0018\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0152\" xlink:from=\"LOG_0018\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0153\" xlink:from=\"LOG_0018\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0154\" xlink:from=\"LOG_0018\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0155\" xlink:from=\"LOG_0018\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0156\" xlink:from=\"LOG_0018\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0157\" xlink:from=\"LOG_0019\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0158\" xlink:from=\"LOG_0019\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0159\" xlink:from=\"LOG_0019\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0160\" xlink:from=\"LOG_0019\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0161\" xlink:from=\"LOG_0019\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0162\" xlink:from=\"LOG_0019\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0163\" xlink:from=\"LOG_0019\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0164\" xlink:from=\"LOG_0019\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0165\" xlink:from=\"LOG_0019\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0166\" xlink:from=\"LOG_0019\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0167\" xlink:from=\"LOG_0019\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0168\" xlink:from=\"LOG_0019\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0169\" xlink:from=\"LOG_0019\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0170\" xlink:from=\"LOG_0019\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0171\" xlink:from=\"LOG_0019\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0159\" xlink:from=\"LOG_0020\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0160\" xlink:from=\"LOG_0020\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0161\" xlink:from=\"LOG_0020\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0162\" xlink:from=\"LOG_0020\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0163\" xlink:from=\"LOG_0020\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0164\" xlink:from=\"LOG_0020\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0165\" xlink:from=\"LOG_0020\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0166\" xlink:from=\"LOG_0020\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0171\" xlink:from=\"LOG_0021\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0172\" xlink:from=\"LOG_0021\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0173\" xlink:from=\"LOG_0021\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0174\" xlink:from=\"LOG_0021\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0175\" xlink:from=\"LOG_0021\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0176\" xlink:from=\"LOG_0021\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0177\" xlink:from=\"LOG_0021\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0178\" xlink:from=\"LOG_0021\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0179\" xlink:from=\"LOG_0021\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0180\" xlink:from=\"LOG_0021\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0181\" xlink:from=\"LOG_0021\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0182\" xlink:from=\"LOG_0021\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0183\" xlink:from=\"LOG_0021\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0184\" xlink:from=\"LOG_0021\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0185\" xlink:from=\"LOG_0021\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0186\" xlink:from=\"LOG_0021\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0187\" xlink:from=\"LOG_0021\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0188\" xlink:from=\"LOG_0021\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0189\" xlink:from=\"LOG_0021\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0190\" xlink:from=\"LOG_0021\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0191\" xlink:from=\"LOG_0021\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0192\" xlink:from=\"LOG_0021\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0193\" xlink:from=\"LOG_0021\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0194\" xlink:from=\"LOG_0021\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0195\" xlink:from=\"LOG_0021\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0196\" xlink:from=\"LOG_0021\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0197\" xlink:from=\"LOG_0021\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0198\" xlink:from=\"LOG_0021\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0199\" xlink:from=\"LOG_0021\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0200\" xlink:from=\"LOG_0021\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0201\" xlink:from=\"LOG_0021\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0202\" xlink:from=\"LOG_0021\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0203\" xlink:from=\"LOG_0021\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0204\" xlink:from=\"LOG_0021\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0205\" xlink:from=\"LOG_0021\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0173\" xlink:from=\"LOG_0022\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0174\" xlink:from=\"LOG_0022\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0175\" xlink:from=\"LOG_0022\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0176\" xlink:from=\"LOG_0022\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0177\" xlink:from=\"LOG_0022\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0178\" xlink:from=\"LOG_0022\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0179\" xlink:from=\"LOG_0022\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0180\" xlink:from=\"LOG_0022\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0181\" xlink:from=\"LOG_0022\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0182\" xlink:from=\"LOG_0022\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0183\" xlink:from=\"LOG_0022\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0184\" xlink:from=\"LOG_0022\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0185\" xlink:from=\"LOG_0022\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0186\" xlink:from=\"LOG_0022\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0187\" xlink:from=\"LOG_0022\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0188\" xlink:from=\"LOG_0022\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0189\" xlink:from=\"LOG_0022\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0190\" xlink:from=\"LOG_0022\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0191\" xlink:from=\"LOG_0022\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0192\" xlink:from=\"LOG_0022\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0193\" xlink:from=\"LOG_0022\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0194\" xlink:from=\"LOG_0022\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0195\" xlink:from=\"LOG_0022\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0196\" xlink:from=\"LOG_0022\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0197\" xlink:from=\"LOG_0022\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0198\" xlink:from=\"LOG_0022\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0199\" xlink:from=\"LOG_0022\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0200\" xlink:from=\"LOG_0022\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0201\" xlink:from=\"LOG_0022\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0202\" xlink:from=\"LOG_0022\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0205\" xlink:from=\"LOG_0023\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0206\" xlink:from=\"LOG_0023\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0207\" xlink:from=\"LOG_0023\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0208\" xlink:from=\"LOG_0023\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0209\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0210\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0211\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0212\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0213\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0214\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0215\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0216\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0217\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0218\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0219\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0220\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0221\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0222\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0223\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0224\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0225\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0226\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0227\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0228\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0229\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0230\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0231\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0232\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0233\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0234\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0235\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0236\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0237\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0238\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0239\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0240\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0241\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0242\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0243\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0244\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0245\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0246\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0247\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0248\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0249\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0250\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0251\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0252\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0253\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0254\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0255\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0256\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0257\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0258\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0259\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0260\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0261\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0262\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0263\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0264\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0265\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0266\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0267\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0268\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0269\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0270\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0271\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0272\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0273\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0274\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0275\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0276\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0277\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0278\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0279\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0280\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0281\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0282\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0283\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0284\" xlink:from=\"LOG_0024\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0211\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0212\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0213\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0214\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0215\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0216\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0217\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0218\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0219\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0220\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0221\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0222\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0223\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0224\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0225\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0226\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0227\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0228\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0229\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0230\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0231\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0232\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0233\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0234\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0235\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0236\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0237\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0238\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0239\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0240\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0241\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0242\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0243\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0244\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0245\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0246\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0247\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0248\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0249\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0250\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0251\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0252\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0253\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0254\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0255\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0256\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0257\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0258\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0259\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0260\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0261\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0262\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0263\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0264\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0265\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0266\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0267\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0268\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0269\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0270\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0271\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0272\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0273\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0274\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0275\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0276\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0277\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0278\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0279\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0280\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0281\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0282\" xlink:from=\"LOG_0025\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0284\" xlink:from=\"LOG_0026\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0285\" xlink:from=\"LOG_0026\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0286\" xlink:from=\"LOG_0026\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0287\" xlink:from=\"LOG_0026\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0288\" xlink:from=\"LOG_0026\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0289\" xlink:from=\"LOG_0026\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0290\" xlink:from=\"LOG_0026\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0291\" xlink:from=\"LOG_0026\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0292\" xlink:from=\"LOG_0026\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0293\" xlink:from=\"LOG_0026\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0294\" xlink:from=\"LOG_0026\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0295\" xlink:from=\"LOG_0026\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0296\" xlink:from=\"LOG_0026\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0297\" xlink:from=\"LOG_0026\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0298\" xlink:from=\"LOG_0026\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0299\" xlink:from=\"LOG_0026\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0300\" xlink:from=\"LOG_0026\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0301\" xlink:from=\"LOG_0026\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0302\" xlink:from=\"LOG_0026\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0289\" xlink:from=\"LOG_0027\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0290\" xlink:from=\"LOG_0027\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0291\" xlink:from=\"LOG_0027\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0292\" xlink:from=\"LOG_0027\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0293\" xlink:from=\"LOG_0027\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0294\" xlink:from=\"LOG_0027\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0295\" xlink:from=\"LOG_0027\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0296\" xlink:from=\"LOG_0027\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0297\" xlink:from=\"LOG_0027\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0298\" xlink:from=\"LOG_0027\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0299\" xlink:from=\"LOG_0027\"/><mets:smLink xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:to=\"PHYS_0300\" xlink:from=\"LOG_0027\"/></mets:structLink></mets:mets>\n",
"items": [
{
"itemType": "bookSection",
"title": "Accurata, E Succinta Descrizione Topografica Delle Antichitá Di Roma",
"creators": [
{
"firstName": "Ridolfino",
"lastName": "Venuti",
"creatorType": "author"
}
],
"date": "1763",
"language": "la",
"place": "Roma",
"publisher": "Bernabò, e Lazzarini",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Philipp Zumstein and Abe Jellinek^https?://(www\.)?paperspast\.natlib\.govt\.nz//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2017-2021 Philipp Zumstein and Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (/[?&]query=/.test(url) && getSearchResults(doc, true)) {
return "multiple";
}
else if (ZU.xpathText(doc, '//h3[@itemprop="headline"]')) {
if (url.includes('/newspapers/')) {
return "newspaperArticle";
}
if (url.includes('/periodicals/')) {
return "journalArticle";
}
if (url.includes('/manuscripts/')) {
return "letter";
}
if (url.includes('/parliamentary/')) {
return "report";
}
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.search-results .article-preview__title a');
for (var i = 0; i < rows.length; i++) {
var href = rows[i].href;
var title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) {
return;
}
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var type = detectWeb(doc, url);
var item = new Zotero.Item(type);
var title = ZU.xpathText(doc, '//h3[@itemprop="headline"]/text()[1]');
item.title = ZU.capitalizeTitle(title.toLowerCase(), true);
if (type == "journalArticle" || type == "newspaperArticle") {
var nav = doc.querySelectorAll('#breadcrumbs .breadcrumbs__crumb');
if (nav.length > 1) {
item.publicationTitle = nav[1].textContent;
}
if (nav.length > 2) {
item.date = ZU.strToISO(nav[2].textContent);
}
if (nav.length > 3) {
item.pages = nav[3].textContent.match(/\d+/)[0];
}
}
var container = ZU.xpathText(doc, '//h3[@itemprop="headline"]/small');
if (container) {
var volume = container.match(/Volume (\w+)\b/);
if (volume) {
item.volume = volume[1];
}
var issue = container.match(/Issue (\w+)\b/);
if (issue) {
item.issue = issue[1];
}
}
if (type == "letter") {
var author = ZU.xpathText(doc, '//div[@id="researcher-tools-tab"]//tr[td[.="Author"]]/td[2]');
// e.g. 42319/Mackay, James, 1831-1912
if (author && !author.includes("Unknown")) {
author = author.replace(/^[0-9/]*/, '').replace(/[0-9-]*$/, '').replace('(Sir)', '');
item.creators.push(ZU.cleanAuthor(author, "author"));
}
var recipient = ZU.xpathText(doc, '//div[@id="researcher-tools-tab"]//tr[td[.="Recipient"]]/td[2]');
if (recipient && !recipient.includes("Unknown")) {
recipient = recipient.replace(/^[0-9/]*/, '').replace(/[0-9-]*$/, '').replace('(Sir)', '');
item.creators.push(ZU.cleanAuthor(recipient, "recipient"));
}
item.date = ZU.xpathText(doc, '//div[@id="researcher-tools-tab"]//tr[td[.="Date"]]/td[2]');
item.language = ZU.xpathText(doc, '//div[@id="researcher-tools-tab"]//tr[td[.="Language"]]/td[2]');
}
item.abstractNote = text(doc, '#tab-english');
item.url = ZU.xpathText(doc, '//div[@id="researcher-tools-tab"]/input/@value');
if (!item.url) item.url = text('#researcher-tools-tab p');
if (!item.url || !item.url.startsWith('http')) item.url = url;
item.attachments.push({
title: "Snapshot",
document: doc
});
let imagePageURL = attr(doc, '.imagecontainer a', 'href');
if (imagePageURL) {
ZU.processDocuments(imagePageURL, function (imageDoc) {
item.attachments.push({
title: 'Image',
mimeType: 'image/jpeg',
url: attr(imageDoc, '.imagecontainer img', 'src')
});
item.complete();
});
}
else {
item.complete();
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://paperspast.natlib.govt.nz/newspapers?items_per_page=10&snippet=true&query=argentina",
"items": "multiple"
},
{
"type": "web",
"url": "https://paperspast.natlib.govt.nz/newspapers/EP19440218.2.61",
"items": [
{
"itemType": "newspaperArticle",
"title": "Coup in Argentina",
"creators": [],
"date": "1944-02-18",
"libraryCatalog": "Papers Past",
"pages": "5",
"publicationTitle": "Evening Post",
"url": "https://paperspast.natlib.govt.nz/newspapers/EP19440218.2.61",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://paperspast.natlib.govt.nz/newspapers/NZH19360721.2.73.1?query=argentina",
"items": [
{
"itemType": "newspaperArticle",
"title": "La Argentina",
"creators": [],
"date": "1936-07-21",
"libraryCatalog": "Papers Past",
"pages": "9",
"publicationTitle": "New Zealand Herald",
"url": "https://paperspast.natlib.govt.nz/newspapers/NZH19360721.2.73.1",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://paperspast.natlib.govt.nz/periodicals/FRERE18831101.2.2",
"items": [
{
"itemType": "journalArticle",
"title": "\"The Law Within the Law.\"",
"creators": [],
"date": "1883-11-01",
"issue": "2",
"libraryCatalog": "Papers Past",
"pages": "3",
"publicationTitle": "Freethought Review",
"url": "https://paperspast.natlib.govt.nz/periodicals/FRERE18831101.2.2",
"volume": "I",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://paperspast.natlib.govt.nz/manuscripts/MCLEAN-1024774.2.1",
"items": [
{
"itemType": "letter",
"title": "1 Page Written 19 Jun 1873 by James Mackay in Hamilton City to Sir Donald Mclean in Wellington",
"creators": [
{
"firstName": "Mackay",
"lastName": "James",
"creatorType": "author"
},
{
"firstName": "McLean",
"lastName": "Donald",
"creatorType": "recipient"
}
],
"date": "1873-06-19",
"abstractNote": "(For His Excellency's information)\n(Signed) Donald McLean\n19th. June 1873\n\n\nNEW ZEALAND TELEGRAPH.\nHamilton\nTo:- Hon. D. McLean \nWellington\n18th. June 1873\nNo news to-day from anywhere I am waiting arrival of Dr. Pollen here this evening. General feeling in Waikato is calming down. The establishments of the Outposts has given confidence against attack and the settlers are quietly attending to their usual business. I do not think many anticipate an agressive movement by the King Party. It, however, the almost unanimous opinion that the murderers of Sullivan should be taken at any cost, no one believes the murderers will be given up for reward.\n(Signed) \nJames Mackay Jnr.",
"language": "English",
"libraryCatalog": "Papers Past",
"url": "https://paperspast.natlib.govt.nz/manuscripts/MCLEAN-1024774.2.1",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
},
{
"title": "Image",
"mimeType": "image/jpeg"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://(www\.)?doaj\.org/(article|search)//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, _url) {
if (doc.querySelector('meta[name="citation_title"]')) {
return "journalArticle";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('h3 > a[href*="/article/"]');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
item.attachments = [];
for (let button of doc.querySelectorAll('.button')) {
if (button.textContent.toLowerCase().includes('read online')) {
item.url = button.href;
break;
}
}
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://doaj.org/article/0006d8f8ca3e4af1b3ec14a07e88bb12",
"items": [
{
"itemType": "journalArticle",
"title": "MiRNA Profiles in Lymphoblastoid Cell Lines of Finnish Prostate Cancer Families.",
"creators": [
{
"firstName": "Daniel",
"lastName": "Fischer",
"creatorType": "author"
},
{
"firstName": "Tiina",
"lastName": "Wahlfors",
"creatorType": "author"
},
{
"firstName": "Henna",
"lastName": "Mattila",
"creatorType": "author"
},
{
"firstName": "Hannu",
"lastName": "Oja",
"creatorType": "author"
},
{
"firstName": "Teuvo L. J.",
"lastName": "Tammela",
"creatorType": "author"
},
{
"firstName": "Johanna",
"lastName": "Schleutker",
"creatorType": "author"
}
],
"date": "2015/01/01",
"DOI": "10.1371/journal.pone.0127427",
"ISSN": "1932-6203",
"abstractNote": "DOAJ is a community-curated online directory that indexes and provides access to high quality, open access, peer-reviewed journals.",
"issue": "5",
"language": "en",
"libraryCatalog": "doaj.org",
"pages": "e0127427",
"publicationTitle": "PLoS ONE",
"url": "https://doi.org/10.1371/journal.pone.0127427",
"volume": "10",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://doaj.org/article/f36918ccae3243548729f113f8920ba2",
"items": [
{
"itemType": "journalArticle",
"title": "Making every drop count: reducing wastage of a novel blood component for transfusion of trauma patients",
"creators": [
{
"firstName": "Nathan",
"lastName": "Proudlove",
"creatorType": "author"
},
{
"firstName": "Laura",
"lastName": "Green",
"creatorType": "author"
},
{
"firstName": "Harriet",
"lastName": "Tucker",
"creatorType": "author"
},
{
"firstName": "Anne",
"lastName": "Weaver",
"creatorType": "author"
},
{
"firstName": "Ross",
"lastName": "Davenport",
"creatorType": "author"
},
{
"firstName": "Jane",
"lastName": "Davies",
"creatorType": "author"
},
{
"firstName": "Josephine",
"lastName": "McCullagh",
"creatorType": "author"
},
{
"firstName": "Dave",
"lastName": "Edmondson",
"creatorType": "author"
},
{
"firstName": "Julia",
"lastName": "Lancut",
"creatorType": "author"
},
{
"firstName": "Angela",
"lastName": "Maddison",
"creatorType": "author"
}
],
"date": "2021/07/01",
"DOI": "10.1136/bmjoq-2021-001396",
"ISSN": "2399-6641",
"abstractNote": "DOAJ is a community-curated online directory that indexes and provides access to high quality, open access, peer-reviewed journals.",
"issue": "3",
"language": "en",
"libraryCatalog": "doaj.org",
"publicationTitle": "BMJ Open Quality",
"shortTitle": "Making every drop count",
"url": "https://bmjopenquality.bmj.com/content/10/3/e001396.full",
"volume": "10",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://doaj.org/search/articles?source=%7B%22query%22%3A%7B%22query_string%22%3A%7B%22query%22%3A%22test%22%2C%22default_operator%22%3A%22AND%22%7D%7D%2C%22size%22%3A50%2C%22sort%22%3A%5B%7B%22created_date%22%3A%7B%22order%22%3A%22desc%22%7D%7D%5D%7D",
"defer": true,
"items": "multiple"
}
]
/** END TEST CASES **/
100Vincent Carret^https?://(www\.)?discover\.libraryhub\.jisc\.ac\.uk//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2019-2021 Vincent Carret
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
var typeMapping = {
book: "book",
visual: "artwork",
map: "map",
audio: "audioRecording",
periodical: "document",
"mixed-material": "document",
"music-score": "document"
};
function detectWeb(doc, _url) {
if (getSearchResults(doc, true)) {
return "multiple";
}
else {
var itemType = text(doc, 'div.record-details__type');
return typeMapping[itemType];
}
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll("div[prefix='schema: http://schema.org/ dct:http://purl.org/dc/terms/']");
if (checkOnly && rows.length > 1) return true;
else if (checkOnly && rows.length <= 1) return false;
for (let row of rows) {
let href = "/search?id=" + row.getAttribute('resource').split('/')[4] + "&format=mods";
let title = ZU.trimInternal(text(row, 'div.record-details__title a'));
if (title.endsWith(" /")) title = title.slice(0, -2);
if (!href || !title) continue;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) {
for (let href of Object.keys(items)) scrape(href);
}
});
}
else {
var row = doc.querySelector("div[prefix='schema: http://schema.org/ dct:http://purl.org/dc/terms/']");
let href = "/search?id=" + row.getAttribute('resource').split('/')[4] + "&format=mods";
scrape(href);
}
}
function scrape(url) {
ZU.doGet(url, function (text) {
var translator = Zotero.loadTranslator('import');
// MODS
translator.setTranslator('0e2235e7-babf-413c-9acf-f27cce5f059c');
translator.setString(text);
translator.setHandler('itemDone', function (_, item) {
if (item.itemType == 'document' && (item.ISBN || item.edition)) {
item.itemType = 'book';
}
delete item.archiveLocation; // list of libraries it's available in
if (item.title) {
item.title = item.title.replace(/\.$/, '');
}
if (item.edition) {
item.edition = item.edition.replace(/\.$/, '');
}
if (item.publisher) {
item.publisher = item.publisher.replace(/\.$/, '');
}
item.complete();
});
translator.translate();
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://discover.libraryhub.jisc.ac.uk/search?q=test",
"items": "multiple"
},
{
"type": "web",
"url": "https://discover.libraryhub.jisc.ac.uk/search?q=test%20sound&rn=1",
"items": [
{
"itemType": "document",
"title": "Application study of ultrasonic nondestructive inspection for tire compliance testing. Final report",
"creators": [
{
"firstName": "Richard N.",
"lastName": "Pierce",
"creatorType": "author"
}
],
"date": "1971",
"libraryCatalog": "Library Hub Discover",
"url": "http://hdl.handle.net/2027/mdp.39015071778685",
"attachments": [],
"tags": [
{
"tag": "Compliance."
},
{
"tag": "Defect/ Defective."
},
{
"tag": "Defects."
},
{
"tag": "Testing equipment."
},
{
"tag": "Tire Test Equipment."
},
{
"tag": "Tires."
},
{
"tag": "Ultrasonic Sound/ Supersonic Sound."
},
{
"tag": "Ultrasonic waves."
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://discover.libraryhub.jisc.ac.uk/id/73805859",
"items": [
{
"itemType": "map",
"title": "The Americas [and] Bird migration in the Americas: produced by the Cartographic Division, National Geographic Society",
"creators": [
{
"lastName": "National Geographic Society (U.S.)",
"fieldMode": 1,
"creatorType": "cartographer"
}
],
"date": "1979",
"callNumber": "912.7, 912.8",
"language": "eng",
"libraryCatalog": "Library Hub Discover",
"place": "Washington, D.C.",
"publisher": "National Geographic Society",
"scale": "1:20,000",
"shortTitle": "The Americas [and] Bird migration in the Americas",
"attachments": [],
"tags": [
{
"tag": "Birds migration"
},
{
"tag": "Birds migration"
},
{
"tag": "Birds migration"
}
],
"notes": [
{
"note": "general: Relief shown by shading. Elevations, depth curves and soundings in meters."
},
{
"note": "general: Political map of the Western Hemisphere backed with pictorial map entitled \"Bird migration in the Americas\"."
},
{
"note": "general: Includes inset map: Physical map of the Americas."
},
{
"note": "general: Issued as Supplement to the National Geographic, August 1979, page 154A, vol. 156, no. 2 – Bird migration."
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://discover.libraryhub.jisc.ac.uk/id/64412752",
"items": [
{
"itemType": "document",
"title": "Which hi-fi",
"creators": [],
"date": "1983",
"callNumber": "TK7881.7, 621.389/3, 621.389/3, RW 51",
"language": "eng",
"libraryCatalog": "Library Hub Discover",
"publisher": "Haymarket Pub",
"attachments": [],
"tags": [
{
"tag": "High-fidelity sound recording & reproduction equipment"
},
{
"tag": "High-fidelity sound systems"
},
{
"tag": "Periodicals."
},
{
"tag": "Serials"
}
],
"notes": [
{
"note": "date/sequential designation: 84."
},
{
"note": "numbering: Only one issue published."
},
{
"note": "linking entry complexity: Continues: Hi-fi annual and test."
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://discover.libraryhub.jisc.ac.uk/id/9603828",
"items": [
{
"itemType": "book",
"title": "A clockwork orange",
"creators": [
{
"firstName": "Anthony",
"lastName": "Burgess",
"creatorType": "author"
},
{
"firstName": "Andrew",
"lastName": "Biswell",
"creatorType": "editor"
}
],
"date": "2013",
"ISBN": "9789780141196 9780141970684 9780141197531",
"abstractNote": "In this nightmare vision of youth in revolt, 15 year-old Alex and his friends set out on a diabolical orgy of robbery, rape, torture and murder. Alex is jailed for his teenage delinquency and the State tries to reform him - but at what cost? ; Fully restored edition of Anthony Burgess' original text of A Clockwork Orange, with a glossary of the teen slang 'Nadsat', explanatory notes, pages from the original typescript, interviews, articles and reviews Edited by Andrew Biswell With a Foreword by Martin Amis 'It is a horrorshow story ...' Fifteen-year-old Alex likes lashings of ultraviolence. He and his gang of friends rob, kill and rape their way through a nightmarish future, until the State puts a stop to his riotous excesses. But what will his re-education mean? A dystopian horror, a black comedy, an exploration of choice, A Clockwork Orange is also a work of exuberant invention which created a new language for its characters. This critical edition restores the text of the novel as Anthony Burgess originally wrote it, and includes a glossary of the teen slang 'Nadsat', explanatory notes, pages from the original typescript, interviews, articles and reviews, shedding light on the enduring fascination of the novel's 'sweet and juicy criminality'. Anthony Burgess was born in Manchester in 1917 and educated at Xaverian College and Manchester University. He spent six years in the British Army before becoming a schoolmaster and colonial education officer in Malaya and Brunei. After the success of his Malayan Trilogy, he became a full-time writer in 1959. His books have been published all over the world, and they include The Complete Enderby, Nothing Like the Sun, Napoleon Symphony, Tremor of Intent, Earthly Powers and A Dead Man in Deptford. Anthony Burgess died in London in 1993. Andrew Biswell is the Professor of Modern Literature at Manchester Metropolitan University and the Director of the International Anthony Burgess Foundation. His publications include a biography, The Real Life of Anthony Burgess, which won the Portico Prize in 2006. He is currently editing the letters and short stories of Anthony Burgess.",
"callNumber": "PR6052.U638, 823.914",
"edition": "Restored edition",
"language": "eng",
"libraryCatalog": "Library Hub Discover",
"place": "London",
"publisher": "Penguin Books",
"url": "http://whel-primo.hosted.exlibrisgroup.com/openurl/44WHELF_NLW/44WHELF_NLW_services_page?u.ignore_date_coverage=true&rft.mms_id=99929011902419",
"attachments": [],
"tags": [
{
"tag": "1900-1999"
},
{
"tag": "Criminals"
},
{
"tag": "Fiction"
},
{
"tag": "Juvenile delinquency"
},
{
"tag": "Juvenile delinquency"
},
{
"tag": "Juvenile delinquency."
},
{
"tag": "Literature, Experimental"
},
{
"tag": "Satire, English"
},
{
"tag": "Satire, English."
},
{
"tag": "Teenage boys"
}
],
"notes": [
{
"note": "statement of responsibility: Anthony Burgess."
},
{
"note": "bibliography: Includes bibliographical references."
},
{
"note": "additional physical form: Also available in printed form ISBN 9780141197531"
},
{
"note": "reproduction: Electronic reproduction. Askews and Holts. Mode of access: World Wide Web."
},
{
"note": "Table of Contents: About the author -- Foreword by Martin Amis -- Introduction by Andrew Biswell -- A clockwork orange -- Notes -- Nadsat glossary -- Prologue to A clockwork orange: a play with music Anthony Burgess, 1986 -- Epilogue: 'a malenky govoreet about the molodoy' Anthony Burgess, 1987 -- Essays, articles and reviews -- Annotated pages from Anthony Burgess's 1961 typescript of A clockwork orange."
}
],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Dan Michael O. Heggø^https?://(www\.)?nb\.no//*
***** BEGIN LICENSE BLOCK *****
National Library of Norway Translator
Copyright © 2016 Dan Michael O. Heggø
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
// The page can change from a search page to a single item page
// without loading the whole content as a new website, so we
// need to monitor for DOM changes.
Z.monitorDOMChanges(ZU.xpath(doc, '//div[contains(@class, "layout-content")]')[0], {childList: true});
// New UI - search page
if (url.includes('nb.no/search?')){
return 'multiple';
}
// Old UI – item (these URLs are not yet redirected to the new UI)
if (url.includes('nb.no/nbsok/nb/')){
var nodes = ZU.xpath(doc, '//meta[@name="dc:type"]');
if (nodes.length) {
var dcType = nodes[0].getAttribute('content');
return mapMediaType(dcType);
}
}
// New UI - item
if (url.includes('nb.no/items/')){
// There is a dc:type meta tag, but it contains values like
// "nonfiction" or "Text", so not helpful like before when it contained
// material type.
return 'book';
}
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == 'multiple') {
var linkItems = ZU.xpath(doc, '//a[contains(@href, "items")]');
var items = {};
linkItems.forEach(function(linkItem) {
var link = linkItem.getAttribute('href');
// The search result list has two different layouts: 'grid' and 'list'.
// The first xpath is for the grid view, the second for the list view.
var title = ZU.xpathText(linkItem, './/label[@class="title" or @class="subtitle"]')
|| ZU.xpathText(linkItem, './/dd[position() < 4]');
if (title) {
items[link] = title;
}
});
Zotero.selectItems(items, function(items) {
if (!items) {
return true;
}
var urls = Object.keys(items);
ZU.processDocuments(urls, processUrl);
});
} else {
processUrl(doc, url);
}
}
function getIdentifierFromUrl(url) {
// New-style URL
var matches = url.match(/nb\.no\/items\/([^#?;]+)/);
if (matches) {
return matches[1];
}
// Old-style URL
matches = url.match(/nb\.no\/nbsok\/nb\/([^#?;]+)/);
if (matches) {
return matches[1];
}
}
function mapMediaType(mediaType) {
var mediaTypes = {
'Bøker': 'book',
'Tidsskrift': 'book', // complete issues or volumes, not articles
'Aviser': 'newspaperArticle',
'Film': 'videoRecording',
'Fjernsyn': 'videoRecording',
'Radio': 'radioBroadcast',
'Kart': 'map',
};
return mediaTypes[mediaType] || 'book'; // default to 'book'
}
function trimBrackets(obj) {
// Trim brackets from all values
Object.keys(obj).forEach(function(key) {
if (typeof(obj[key]) == 'string') {
obj[key] = obj[key].replace(/^\[/, '').replace(/\]$/, '');
}
});
return obj;
}
function extractNumPages(str) {
// Borrowed from Library Catalog (PICA). See #756
//make sure things like 2 partition don't match, but 2 p at the end of the field do
// f., p., and S. are "pages" in various languages
// For multi-volume works, we expect formats like:
// x-109 p., 510 p. and X, 106 S.; 123 S.
var numPagesRE = /\[?\b((?:[ivxlcdm\d]+[ ,\-]*)+)\]?\s+[fps]\b/ig,
numPages = [], m;
while (m = numPagesRE.exec(str)) {
numPages.push(m[1].trim()
.replace(/[ ,\-]+/g,'+')
.toLowerCase() // for Roman numerals
);
}
return numPages.join('; ');
}
function getMODS(url, cb) {
ZU.doGet(url, function(text){
var translator = Zotero.loadTranslator('import');
translator.setTranslator('0e2235e7-babf-413c-9acf-f27cce5f059c');
translator.setString(text);
translator.setHandler('itemDone', function(obj, item) {
cb(item);
});
translator.translate();
});
}
function apiRequest(url, cb) {
ZU.doGet(url, function(text){
var obj;
try {
obj = JSON.parse(text);
} catch (e) {
throw('Failed parsing JSON from ' + url + '.json');
}
cb(obj);
});
}
function processUrl(doc, url) {
var identifier = getIdentifierFromUrl(url);
// Note to self: the identifier can be a URN, but also sesamid or other kind of identifier
var modsUrl = 'https://api.nb.no/catalog/v1/metadata/' + identifier + '/mods';
var apiUrl = 'https://api.nb.no/catalog/v1/items/' + identifier ;
// Utilize the RIS importer to prepare a mostly complete record
getMODS(modsUrl, function(item) {
item = trimBrackets(item);
// Concat and normalize notes
var note = item.notes.map(function(note) { return note.note; })
.join('.\n')
.replace(/<\/?p>/g, '') // paragraph tags
.replace(/ /g, ' ') // hard spaces
.replace(/ +/g, ' ') // multiple spaces
if (note) {
item.notes = [{ note: note }];
}
item.date = ZU.strToISO(item.date);
if (item.archiveLocation) {
delete item.archiveLocation;
}
if (item.callNumber) {
delete item.callNumber;
}
item.tags = [];
// Use the (undocumented) JSON api to add some data missing in the RIS export
apiRequest(apiUrl, function(apiResponse) {
var m = apiResponse.metadata;
item = trimBrackets(item);
item.numPages = extractNumPages(m.physicalDescription.extent);
if (item.accessDate) {
// Better leave this to Zotero
delete item.accessDate;
}
if (m.identifiers.urn) {
item.url = 'https://urn.nb.no/' + apiResponse.metadata.identifiers.urn;
}
if (m.series && m.series.length) {
item.series = m.series[0];
}
if (m.mediaTypes && m.mediaTypes.length) {
item.type = mapMediaType(m.mediaTypes[0]);
}
item.complete();
});
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.nb.no/items/URN:NBN:no-nb_digibok_2013022624011",
"items": [
{
"itemType": "book",
"title": "Memoirs of Lewis Holberg",
"creators": [
{
"firstName": "Ludvig",
"lastName": "Holberg",
"creatorType": "author"
}
],
"date": "1827",
"language": "eng; lat",
"libraryCatalog": "National Library of Norway",
"numPages": "vii+289",
"place": "London",
"publisher": "Hunt and Clarke",
"series": "Autobiography : a collection of the most instructive and amusing lives ever published vol. 12",
"url": "https://urn.nb.no/URN:NBN:no-nb_digibok_2013022624011",
"attachments": [],
"tags": [],
"notes": [
{
"note": "statement of responsibility: written by himself in Latin : and now first translated into English.\nFormatangivelse etter Ehrenchron-Müller, b. 10, s. 125.\nreproduction: Elektronisk reproduksjon [Norge] Nasjonalbiblioteket Digital 2013-03-01"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.nb.no/items/URN:NBN:no-nb_digibok_2008030304011",
"items": [
{
"itemType": "book",
"title": "Mat frå gard og grend: om mat og matkultur i Lesja og Gudbrandsdalen gjennom 100år",
"creators": [
{
"firstName": "Bjørg",
"lastName": "Nordset",
"creatorType": "author"
},
{
"lastName": "Lesja bondekvinnelag",
"fieldMode": 1,
"creatorType": "author"
}
],
"date": "1995",
"ISBN": "9788291375052",
"language": "nob",
"libraryCatalog": "National Library of Norway",
"numPages": "176",
"place": "Lesja",
"publisher": "Snøhetta forl.",
"shortTitle": "Mat frå gard og grend",
"url": "https://urn.nb.no/URN:NBN:no-nb_digibok_2008030304011",
"attachments": [],
"tags": [],
"notes": [
{
"note": "statement of responsibility: Lesja bondekvinnelag ; red.: Bjørg Nordset ; [foto: [hovedsakelig] Bjarne Fossøy].\nOpplagshistorikk: 2. oppl. 1995; 3. oppl. 2001.\nreproduction: Elektronisk reproduksjon [Norge] Nasjonalbiblioteket Digital 2009-04-09"
}
],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Adam Crymble, Michael Berkowitz, Sebastian Karcher, and Abe Jellinek^https?://www\.biblio\.com//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/book/')) {
return "book";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('h2.title > a[href*="/book/"]');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, _url) {
let item = new Zotero.Item('book');
for (let keyElem of doc.querySelectorAll('#d-book-details dt')) {
let key = ZU.trimInternal(keyElem.textContent);
let value = keyElem.nextElementSibling.textContent;
switch (key) {
case 'Title':
item.title = value.replace(/\.\s*$/, '');
break;
case 'Author':
for (let name of value.split(';')) {
item.creators.push(ZU.cleanAuthor(name, 'author', true));
}
break;
case 'Edition':
item.edition = value;
break;
case 'Publisher':
item.publisher = value;
break;
case 'Place of Publication':
item.place = value;
break;
case 'Date published':
case 'First published':
case 'This edition first published':
item.date = ZU.strToISO(value);
break;
case 'ISBN 10':
case 'ISBN 13':
item.ISBN = ZU.cleanISBN(value);
break;
default:
if (!item.date && /\bpublished\b/i.test(key)) {
// handle odd date labels, just in case
item.date = ZU.strToISO(value);
}
break;
}
}
item.url = attr(doc, 'link[rel="canonical"]', 'href');
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://www.biblio.com/search.php?keyisbn=dickens&stage=1",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.biblio.com/book/through-year-dickens-compiled-his-eldest/d/29965287",
"items": [
{
"itemType": "book",
"title": "Through The Year With Dickens. Compiled by his Eldest Daughter",
"creators": [
{
"firstName": "Charles",
"lastName": "Dickens",
"creatorType": "author"
}
],
"date": "1909",
"edition": "First American",
"libraryCatalog": "Biblio.com",
"place": "Boston, USA",
"publisher": "DeWolfe, Fiske & Co",
"url": "https://www.biblio.com/book/through-year-dickens-compiled-his-eldest/d/29965287",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.biblio.com/book/charming-children-dickens-stories-dickens-charles/d/1397028696",
"items": [
{
"itemType": "book",
"title": "Charming Children of Dickens' Stories",
"creators": [
{
"firstName": "Charles",
"lastName": "Dickens",
"creatorType": "author"
},
{
"firstName": "Angela",
"lastName": "Dickens",
"creatorType": "author"
}
],
"date": "1906",
"libraryCatalog": "Biblio.com",
"place": "Chicago",
"publisher": "John A. Hertel Company",
"url": "https://www.biblio.com/book/charming-children-dickens-stories-dickens-charles/d/1397028696",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.biblio.com/book/birds-without-wings-bernieres-louis/d/920369973",
"items": [
{
"itemType": "book",
"title": "Birds Without Wings",
"creators": [
{
"firstName": "LOUIS",
"lastName": "DE BERNIERES",
"creatorType": "author"
}
],
"date": "2005-06-28",
"ISBN": "9781400079322",
"libraryCatalog": "Biblio.com",
"place": "New York",
"publisher": "Vintage",
"url": "https://www.biblio.com/book/birds-without-wings-bernieres-louis/d/920369973",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Philipp Zumstein^https?://(www\.)?(statistik\.baden-wuerttemberg|statistik-bw)\.de/LABI/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2018-2021 Philipp Zumstein
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/LABI.asp?')) {
if (getSearchResults(doc, true)) {
return "multiple";
}
else {
var labels = doc.querySelectorAll('td>b');
for (let label of labels) {
if (label.textContent == 'ISBN:') {
return "book";
}
if (label.textContent.includes('Enthalten')) {
return "journalArticle";
}
}
return "report";
}
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('td.right + td>a');
for (let i = 0; i < rows.length; i++) {
let href = rows[i].href;
let title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) {
return;
}
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var type = detectWeb(doc, url);
var risURL = attr(doc, 'a.export', 'href');
ZU.doGet(risURL, function (text) {
// institutional authors are ending up in A3 now
text = text.replace(/^A3/m, 'AU');
// for coorperate bodies the place is in brackets sometimes
// e.g. AU - Universität <Mannheim>
text = text.replace(/AU\s+-\s+(.*)\s+<(.*)>/g, "AU - $1 $2");
// Z.debug(text)
var translator = Zotero.loadTranslator("import");
translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7");
translator.setString(text);
translator.setHandler("itemDone", function (obj, item) {
item.itemType = type;
// fixes the added author information in the title,
// which might be fixed by them in the future
item.title = item.title.replace(/\/[^/]*$/, '').replace(/ : /g, ': ');
// number of pages land in pages for a book
if (type == "book" && item.pages) {
let m = item.pages.match(/(\d+) Seiten/);
if (m) {
item.numPages = m[1];
delete item.pages;
}
}
// for series time spans are tried to save as a date
// e.g. 1972/73 - 1999/2000(2001); 2001/02(2003) -
if (item.date && (item.date.includes(';') || item.date.includes('-'))) {
item.notes.push({
note: "Erscheinungsverlauf: " + item.date
});
let m = item.date.match(/(\d+)/);
if (m) {
item.date = m[1];
}
else {
delete item.date;
}
}
item.attachments.push({
title: "Titel in der Landesbibliographie Baden-Württemberg",
url: url,
snapshot: false
});
item.complete();
});
translator.translate();
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://www.statistik-bw.de/LABI/LABI.asp?K1=10&T1=%C3%9Cberfordert%3A+Mozart%3A+Don+Giovanni%3A+Mannheim%2C+Nationaltheater&O1=&K2=2&T2=&O2=&K3=11&T3=&JV=&JB=&EV=&EB=&EF=",
"items": [
{
"itemType": "journalArticle",
"title": "Überfordert: Mozart: Don Giovanni: Mannheim, Nationaltheater",
"creators": [
{
"lastName": "Schweikert",
"firstName": "Uwe",
"creatorType": "author"
}
],
"date": "2018",
"issue": "9/10",
"libraryCatalog": "Landesbibliographie Baden-Württemberg",
"pages": "56-57",
"publicationTitle": "Opernwelt",
"shortTitle": "Überfordert",
"volume": "59",
"attachments": [
{
"title": "Titel in der Landesbibliographie Baden-Württemberg",
"snapshot": false
}
],
"tags": [
{
"tag": "Mannheim"
},
{
"tag": "Musik"
},
{
"tag": "Nationaltheater Mannheim"
},
{
"tag": "Oper"
},
{
"tag": "Schauspiel, Oper, Operette und Ballett"
}
],
"notes": [
{
"note": "<p>\"Premiere am 14. Juli 2018\" (Textende)</p>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.statistik-bw.de/LABI/LABI.asp?K1=10&T1=Hafen+Mannheim+2018%3A+150+Jahre+Mannheimer+Akte&O1=&K2=2&T2=&O2=&K3=11&T3=&JV=&JB=&EV=&EB=&EF=",
"items": [
{
"itemType": "book",
"title": "Hafen Mannheim 2018: 150 Jahre Mannheimer Akte",
"creators": [
{
"lastName": "Mardo",
"firstName": "Thommy",
"creatorType": "author"
}
],
"date": "2018",
"ISBN": "9783864760938",
"libraryCatalog": "Landesbibliographie Baden-Württemberg",
"numPages": "208",
"place": "Mannheim",
"publisher": "Verlag Waldkirch",
"shortTitle": "Hafen Mannheim 2018",
"attachments": [
{
"title": "Titel in der Landesbibliographie Baden-Württemberg",
"snapshot": false
}
],
"tags": [
{
"tag": "Bildband"
},
{
"tag": "Hafen"
},
{
"tag": "Mannheim"
},
{
"tag": "Mannheimer Rheinschiffahrtsakte"
},
{
"tag": "Oberrheingebiet"
},
{
"tag": "Rhein-Neckar-Hafen Mannheim"
},
{
"tag": "Rheinschifffahrt"
},
{
"tag": "Schifffahrt"
},
{
"tag": "Wasserstraßen"
}
],
"notes": [
{
"note": "<p>Text in deutsch, englisch und französisch</p>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.statistik-bw.de/LABI/LABI.asp?HC=53uayhgF7jf&K1=10&T1=Rechenschaftsbericht+...+des+Rektors&TA=13",
"items": [
{
"itemType": "report",
"title": "Rechenschaftsbericht ... des Rektors",
"creators": [
{
"lastName": "Universität Mannheim",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "2000",
"libraryCatalog": "Landesbibliographie Baden-Württemberg",
"place": "Mannheim",
"attachments": [
{
"title": "Titel in der Landesbibliographie Baden-Württemberg",
"snapshot": false
}
],
"tags": [
{
"tag": "Mannheim"
},
{
"tag": "Universität"
},
{
"tag": "Universität Mannheim"
},
{
"tag": "Universitäten"
},
{
"tag": "Zeitschrift"
}
],
"notes": [
{
"note": "Internetausg.: Universität <Mannheim>: Rechenschaftsbericht ... des Rektors"
},
{
"note": "2000/01 u.d.T.: Universität <Mannheim>: Rechenschaftsbericht ... des geschäftsführenden Prorektors"
},
{
"note": "Erscheinungsverlauf: 2000///(2001); 2001/02(2003) -"
}
],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Vincent Carret^https?://(www\.)?moses\.creighton\.edu/JRS/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2019 Vincent Carret
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
// Three possible cases : the list of articles of an issue, the list of content of a supplement, or the list of the supplements
if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
// We have a different querySelector according to the page (respectively, all supplements page, journal issue page, and supplement issue page)
var rows = doc.querySelectorAll('div[class^=pubs] p.SuppVolume em, div[class^=pubs] p.title, div[class^=pubs] p.chap');
for (let row of rows) {
let title = row.textContent;
if (!title) continue;
if (checkOnly) return true;
found = true;
items[title] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) {
for (var id of Object.keys(items)) {
scrape(id, doc, url);
}
}
});
}
}
function scrape(id, doc, url) {
var item = null;
var infoBlock = null;
var author = null;
var pdfurl = "";
if (!url.includes('/toc/SS') && !url.includes('/toc/Supplement')) {
item = new Zotero.Item("journalArticle");
item.title = id;
item.publicationTitle = "Journal of Religion & Society";
item.date = ZU.strToISO(text(doc, ".heading").split('(')[1].match(/\d+/)[0]);
item.volume = text(doc, ".heading").split('(')[0].match(/\d+/)[0];
item.url = url;
infoBlock = ZU.xpath(doc, "//p[contains(., '" + id + "')]/following-sibling::p")[0];
author = infoBlock.textContent.split("\n");
for (let auth of author.slice(0, author.length - 1)) {
item.creators.push(ZU.cleanAuthor(auth.split(", ")[0], "author", false));
}
if (text(infoBlock, "a:last-child", 0).includes("PDF")) {
pdfurl = attr(infoBlock, "a:last-child", "href", 0);
item.attachments.push({
title: item.title,
mimeType: "application/pdf",
url: pdfurl
});
}
if (text(infoBlock, "a", 0).includes("Abstract")) {
let abstract = attr(infoBlock, "a", "href", 0).split("'")[1];
item.abstractNote = text(doc, abstract);
}
}
else if (url.includes('/toc/Supplement')) {
item = new Zotero.Item("book");
item.title = id;
item.series = "Supplement of the Journal of Religion & Society";
item.publisher = "Journal of Religion & Society Supplement";
infoBlock = ZU.xpath(doc, "//p[contains(., '" + id + "')]")[0];
item.date = ZU.strToISO(infoBlock.querySelector("em").nextSibling.textContent.match(/\d+/)[0]);
item.seriesNumber = text(infoBlock, "a").match(/\d+/)[0];
item.url = "http://moses.creighton.edu/JRS/toc/" + attr(infoBlock, "a", "href");
author = infoBlock.nextElementSibling.textContent.split(",")[0].replace("Edited by ", "").split(" and ");
for (let auth of author) item.creators.push(ZU.cleanAuthor(auth, "editor", false));
}
else if (url.includes('/toc/SS')) {
item = new Zotero.Item("bookSection");
item.title = id.split(" (")[0];
item.series = "Supplement of the Journal of Religion & Society";
item.seriesNumber = text(doc, ".heading").split('(')[0].match(/\d+/)[0];
item.publisher = "Journal of Religion & Society Supplement";
item.date = ZU.strToISO(text(doc, ".heading").split('(')[1].match(/\d+/)[0]);
item.bookTitle = text(doc, ".suppTitle");
author = text(doc, "p.SuppAuthor, p.editor").split(",")[0].replace("Edited by ", "").split(" and ");
for (let auth of author) item.creators.push(ZU.cleanAuthor(auth, "editor", false));
item.url = url;
infoBlock = ZU.xpath(doc, "//p[contains(., '" + id + "')]")[0];
item.pages = infoBlock.textContent.split("(pp. ")[1].replace(")", "");
author = infoBlock.nextElementSibling.textContent.split(",")[0].split(" and ");
for (let auth of author) item.creators.push(ZU.cleanAuthor(auth, "author", false));
pdfurl = attr(infoBlock.nextElementSibling, "a:last-child", "href", 0);
item.attachments.push({
title: item.title,
mimeType: "application/pdf",
url: pdfurl
});
if (text(infoBlock.nextElementSibling, "a", 0).includes("Abstract")) {
let abstract = attr(infoBlock.nextElementSibling, "a", "href", 0).split("'")[1];
item.abstractNote = text(doc, abstract);
}
}
item.libraryCatalog = "Journal of Religion and Society";
item.ISSN = "1522-5658";
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://moses.creighton.edu/JRS/toc/2016.html",
"items": "multiple"
},
{
"type": "web",
"url": "http://moses.creighton.edu/JRS/toc/Supplement.html",
"items": "multiple"
},
{
"type": "web",
"url": "http://moses.creighton.edu/JRS/toc/SS17.html",
"items": "multiple"
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://calmatters\.org//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (doc.querySelector('meta[property="article:publisher"]')) {
return "newspaperArticle";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('h2.entry-title > a');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
item.section = text(doc, '.cat-links a');
if (!item.creators.length) {
// grab just the first .byline
let byline = doc.querySelector('.byline');
for (let author of byline.querySelectorAll('.author a')) {
item.creators.push(ZU.cleanAuthor(author.textContent, 'author'));
}
}
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.itemType = "newspaperArticle";
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://calmatters.org/california-divide/2021/07/california-mothers-return-work/",
"items": [
{
"itemType": "newspaperArticle",
"title": "Mothers struggle to return to work as California reopens",
"creators": [
{
"firstName": "Jesse",
"lastName": "Bedayn",
"creatorType": "author"
}
],
"date": "2021-07-07T12:30:00+00:00",
"abstractNote": "As California opens back up, people are rejoining the workforce. But for mothers, economic recovery may not kick in until school returns.",
"language": "en-US",
"libraryCatalog": "calmatters.org",
"publicationTitle": "CalMatters",
"section": "California Divide",
"url": "https://calmatters.org/california-divide/2021/07/california-mothers-return-work/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://calmatters.org/california-divide/2021/07/look-up-california-stimulus-golden-state/",
"items": [
{
"itemType": "newspaperArticle",
"title": "Look up your Golden State Stimulus amount",
"creators": [
{
"firstName": "Erica",
"lastName": "Yee",
"creatorType": "author"
},
{
"firstName": "Frida",
"lastName": "Qi",
"creatorType": "author"
},
{
"firstName": "Jackie",
"lastName": "Botts",
"creatorType": "author"
}
],
"date": "2021-07-01T12:30:00+00:00",
"abstractNote": "Check this calculator to see if you're eligible for the Golden State Stimulus — and how much you'll get from California.",
"language": "en-US",
"libraryCatalog": "calmatters.org",
"publicationTitle": "CalMatters",
"section": "California Divide",
"url": "https://calmatters.org/california-divide/2021/07/look-up-california-stimulus-golden-state/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://calmatters.org/housing/2021/07/california-eviction-moratorium-tenants/",
"items": [
{
"itemType": "newspaperArticle",
"title": "Where are tenants falling through the cracks of California eviction ban?",
"creators": [
{
"firstName": "Manuela",
"lastName": "Tobias",
"creatorType": "author"
},
{
"firstName": "Nigel",
"lastName": "Duara",
"creatorType": "author"
},
{
"firstName": "John Osborn",
"lastName": "D'Agostino",
"creatorType": "author"
}
],
"date": "2021-07-01T12:30:00+00:00",
"abstractNote": "Landlords and sheriffs are evicting renters at higher rates in the Central Valley, while Bay Area counties have added protections for tenants.",
"language": "en-US",
"libraryCatalog": "calmatters.org",
"publicationTitle": "CalMatters",
"section": "Housing",
"url": "https://calmatters.org/housing/2021/07/california-eviction-moratorium-tenants/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://calmatters.org/?s=gavin",
"items": "multiple"
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://www\.bib\.irb\.hr//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, _url) {
if (doc.querySelector('meta[name="citation_title"]')) {
return "journalArticle";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.search-results .citation-title');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
item.attachments = [];
if (doc.querySelector('a.link-pdf')) {
item.attachments.push({
title: 'Full Text PDF',
mimeType: 'application/pdf',
url: attr(doc, 'a.link-pdf', 'href')
});
}
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.itemType = "journalArticle";
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.bib.irb.hr/1130838",
"items": [
{
"itemType": "journalArticle",
"title": "Resorpcija korijena nakon luksacijske ozljede zuba - prikaz slučaja",
"creators": [
{
"firstName": "Sarah",
"lastName": "Turjanski",
"creatorType": "author"
},
{
"firstName": "Larisa",
"lastName": "Musić",
"creatorType": "author"
},
{
"firstName": "Ivan",
"lastName": "Zajc",
"creatorType": "author"
},
{
"firstName": "Mihovil",
"lastName": "Turčinović",
"creatorType": "author"
},
{
"firstName": "Hrvoje",
"lastName": "Jurić",
"creatorType": "author"
}
],
"date": "2021",
"abstractNote": "Ciljevi:Resorpcija korijena jest proces kojeg karakterizira gubitak tvrdog zubnog tkiva zbog klastične aktivnosti unutar ili izvan korijena zuba. Resorpcija trajnih zubi uvijek na staje kao posljedica određenih stanja ili događaja (npr. novotvorina, trauma, impaktirani zub). Cilj ovog prikaza slučaja jest predstaviti kasnu komplikaciju traume zuba nakon 8 godina od ozljede. Materijali i metode:Pacijentica, djevojčica u dobi od 8 godina u velja-či 2013. godine, dolazi na naš Zavod zbog traume zubi 11 i 12, 3 mjeseca nakon ozljede. Kroz anamnezu, klinički pregled i radiografsku analizu dijagnosticirana je intruzijska luk-sacija zuba 11 te ekstruzijska luksacija zuba 12 s nezavršenim rastom i razvojem. Učinio se test vitaliteta ozlijeđenih zubi te se kroz sljedećih nekoliko kontrola pratio njihov vitalitet. Nakon 7 mjeseci započet je postupak apeksifikacije na zubu 11. U rujnu 2014. napravilo se konačno punjenje zuba 11 gutaperka štapićima i pastom te se zub konačno restaurirao kompozitnom krunicom. Rezultati: Zbog izostanka simptoma pacijentica dolazi na kon-trolu tek u rujnu 2020., u dobi od 15 godina, kada joj je napravljena dekoronizacija zuba zbog napredovanja nadomjesne resorpcije apikalno, prisutne cervikalne upalne resorpcije te ankiloze zuba koja je dovela do infraokluzije i pomicanja marginalnog ruba gingive zu-ba 11 za 1.5mm u apikalnom smjeru. Kruna zuba je imobilizirana kompozitnim splintom ojačanim staklenim vlaknima. Zaključak:Kod traume zuba od izrazite je važnosti vrijeme koje prođe od nezgode do kliničkog pregleda i hitnog liječenja. Neke od nepoželjnih po-sljedica traume zuba za pacijenta su neizbježne, no njihova klinička slika i opseg se sigurno mogu ublažiti, pa čak i potpuno eliminirati uz pravovremeno liječenje. Cilj i glavna zada-ća specijalista dječje i preventivne dentalne medicine vrlo često jest ‘’kupovanje vreme-na’’ do završetka koštanog rasta i razvoja cjelokupnog stomatognatog sustava, što će u ko-načnici osigurati najbolje preduvjete za liječenje pacijenta, uzimajući u obzir sve biološke uvjete za dugoročna terapijska rješenja nakon komplikacija uzrokovanih traumom zuba.",
"language": "hr",
"libraryCatalog": "www.bib.irb.hr",
"pages": "112",
"publicationTitle": "Međunarodni kongres „Hrvatski dani dječje stomatologije 2020“ Online kongres Zagreb, 04. - 05. prosinca 2020.",
"url": "https://www.bib.irb.hr/1130838",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.bib.irb.hr/1113993",
"items": [
{
"itemType": "journalArticle",
"title": "Assessment of Health-Promoting Lifestyle among Dental Students in Zagreb, Croatia",
"creators": [
{
"firstName": "Larisa",
"lastName": "Musić",
"creatorType": "author"
},
{
"firstName": "Tonći",
"lastName": "Mašina",
"creatorType": "author"
},
{
"firstName": "Ivan",
"lastName": "Puhar",
"creatorType": "author"
},
{
"firstName": "Laura",
"lastName": "Plančak",
"creatorType": "author"
},
{
"firstName": "Valentina",
"lastName": "Kostrić",
"creatorType": "author"
},
{
"firstName": "Mihaela",
"lastName": "Kobale",
"creatorType": "author"
},
{
"firstName": "Ana",
"lastName": "Badovinac",
"creatorType": "author"
}
],
"date": "2021",
"DOI": "10.3390/dj9030028",
"abstractNote": "As future healthcare professionals, dental medicine students are expected to exhibit healthy lifestyle behaviors. This study aims to assess the health-promoting behaviors among undergraduate dental medicine students of all six academic study years at the University of Zagreb, and determine their predictors. Students were invited to complete a two-part survey, consisting of a self-reported sociodemographic questionnaire and the Health-Promoting Lifestyle Profile II (HPLP II). Three hundred and forty-nine students completed the survey ; the response rate was 60.3%. The total mean HPLP II score was 2.64 ± 0.34. Students in the second academic study year scored the lowest (2.50 ± 0.33), and students in the sixth academic study year scored the highest (2.77 ± 0.32). Health responsibility was the overall lowest scored subcategory, while interpersonal relations was scored the highest. Female students reported lower spiritual growth and stress management than male students. Higher body mass index (BMI) was related to lower health responsibility. Smoking, place of residence and the age of participants did not seem to have an impact on health-promoting behaviors. Dental students at our faculty exhibit moderate health-promoting behaviors, even in the absence of a formal health-promoting course in the existing curriculum.",
"issue": "3",
"language": "en",
"libraryCatalog": "www.bib.irb.hr",
"pages": "1-10",
"publicationTitle": "Dentistry journal",
"url": "https://www.bib.irb.hr/1113993",
"volume": "9",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.bib.irb.hr/pretraga?operators=and|molekula|text|meta",
"items": "multiple"
}
]
/** END TEST CASES **/
250Sebastian Karcher^https?://[^/]+(/articles/10\.\d{4,9}/[-._;()/:a-z0-9A-Z]+|/articles/?$|/\d+/volume/\d+/issue/\d+)/*
Copyright (C) 2015-2021 Sebastian Karcher and Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
*/
function detectWeb(doc, _url) {
var ubiquityTest = doc.querySelector('link[href*="/static/css/journal.css"]');
if (ubiquityTest) {
if (ZU.xpathText(doc, '//meta[@name="citation_journal_title"]/@content')) {
return "journalArticle";
}
}
if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function doWeb(doc, url) {
var itemType = detectWeb(doc, url);
if (itemType === 'multiple') {
Zotero.selectItems(getSearchResults(doc), function (items) {
if (!items) return;
var urls = [];
for (var i in items) {
urls.push(i);
}
ZU.processDocuments(urls, scrape);
});
}
else {
scrape(doc, url);
}
}
function getSearchResults(doc, checkOnly) {
var results = ZU.xpath(doc,
'//div[@class="article-caption"]/div[@class="caption-text"]/a[contains(@href, "/articles/10.")]'
),
items = {},
found = false;
for (var i = 0; i < results.length; i++) {
var title = results[i].textContent;
if (!title) continue;
if (checkOnly) return true;
found = true;
title = title.trim();
items[results[i].href] = title;
}
return found ? items : false;
}
function scrape(doc, url) {
var abstract = ZU.xpathText(doc, '//meta[@name="DC.Description"]/@content');
var translator = Zotero.loadTranslator('web');
// use the Embedded Metadata translator
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
if (abstract) {
item.abstractNote = ZU.cleanTags(abstract.trim());
}
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.doWeb(doc, url);
});
}/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://www.ancient-asia-journal.com/articles/",
"items": "multiple"
},
{
"type": "web",
"url": "https://journal.eahn.org/articles/10.5334/ah.bd/",
"items": [
{
"itemType": "journalArticle",
"title": "Handymen, Hippies and Healing: Social Transformation through the DIY Movement (1940s to 1970s) in North America",
"creators": [
{
"firstName": "Cathy",
"lastName": "Smith",
"creatorType": "author"
}
],
"date": "2014-03-19",
"DOI": "10.5334/ah.bd",
"ISSN": "2050-5833",
"abstractNote": "This paper explores the relation between the ‘DIY’ (‘do-it-yourself’) movement and ‘DIY architecture’, and the notion of social transformation, in examples of DIY manuals and discourse of North America drawn from the 1940s to the 1970s. The DIY movement emerged as a significant phenomenon in North America of the 1950s, where it was associated with a mainstream audience and a residential market. By the 1960s, the DIY approach was embraced by the North American counterculture as a self-sustaining sensibility that could overcome a reliance on the mainstream, consumerist society that spurned it. On the surface, the association of DIY with the counterculture and countercultural architects appears to denote a significant ideological shift from its original association with the beliefs and culture of mainstream North America and the nuclear family. However, one of the key characterisations of the DIY movement identified in the present paper is the way it is bound to the notion of social identity and transformation, regardless of ideology. Particular attention is paid to DIY manuals and discourse of the 1950s.",
"issue": "1",
"language": "en",
"libraryCatalog": "journal.eahn.org",
"pages": "Art. 2",
"publicationTitle": "Architectural Histories",
"rights": "Authors who publish with this journal agree to the following terms: Authors retain copyright and grant the journal right of first publication with the work simultaneously licensed under a Creative Commons Attribution License that allows others to share the work with an acknowledgement of the work's authorship and initial publication in this journal. Authors are able to enter into separate, additional contractual arrangements for the non-exclusive distribution of the journal's published version of the work (e.g., post it to an institutional repository or publish it in a book), with an acknowledgement of its initial publication in this journal. Authors are permitted and encouraged to post their work online (e.g., in institutional repositories or on their website) prior to and during the submission process, as it can lead to productive exchanges, as well as earlier and greater citation of published work (See The Effect of Open Access ). All third-party images reproduced on this journal are shared under Educational Fair Use. For more information on Educational Fair Use , please see this useful checklist prepared by Columbia University Libraries . All copyright of third-party content posted here for research purposes belongs to its original owners. Unless otherwise stated all references to characters and comic art presented on this journal are ©, ® or ™ of their respective owners. No challenge to any owner’s rights is intended or should be inferred.",
"shortTitle": "Handymen, Hippies and Healing",
"url": "http://journal.eahn.org/articles/10.5334/ah.bd/",
"volume": "2",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Ant Farm"
},
{
"tag": "DIY"
},
{
"tag": "DIY architecture"
},
{
"tag": "Paolo Soleri"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.pediatricneurologybriefs.com/51/volume/29/issue/7/",
"items": "multiple"
},
{
"type": "web",
"url": "https://journal.digitalmedievalist.org/articles/10.16995/dm.81/",
"items": [
{
"itemType": "journalArticle",
"title": "Querying Variants: Boccaccio’s ‘Commedia’ and Data-Models",
"creators": [
{
"firstName": "Sonia",
"lastName": "Tempestini",
"creatorType": "author"
},
{
"firstName": "Elena",
"lastName": "Spadini",
"creatorType": "author"
}
],
"date": "2019-09-20",
"DOI": "10.16995/dm.81",
"ISSN": "1715-0736",
"abstractNote": "This paper presents the methodology and the results of an analytical study of the three witnesses of Dante’s Commedia copied by Giovanni Boccaccio, focusing on the importance of their digital accessibility. These extraordinary materials allow us to further our knowledge of Boccaccio’s cultural trajectory as a scribe and as an author, and could be useful for the study of the textual tradition of Dante’s Commedia. In the first section of the paper, the manuscripts and their role in previous scholarship are introduced. A thorough analysis of a choice of variants is then offered, applying specific categories for organizing the varia lectio. This taxonomy shows how fundamental it is to combine the methodological tools for studying copies (as usual in medieval philology) and those for studying author’s manuscripts (as usual in modern philology) in dealing with the three manuscripts of Boccaccio’s Commedia: in fact, the comparative analysis of the three manuscripts has much to reveal not only of their genetic relationship but also of Boccaccio’s editorial practices. Furthermore, the analytic categories inform the computational model behind the web application ‘La Commedia di Boccaccio’, <http://boccacciocommedia.unil.ch/> created for accessing and querying the variants. The model, implemented in a relational database, allows for the systematic management of different features of textual variations, distinguishing readings and their relationships, without setting a base text. The paper closes on a view to repurposing the model for handling other textual transmissions, working at the intersection between textual criticism and information technology.",
"issue": "1",
"language": "en",
"libraryCatalog": "journal.digitalmedievalist.org",
"pages": "1",
"publicationTitle": "Digital Medievalist",
"rights": "Authors who publish with this journal agree to the following terms: Authors retain copyright and grant the journal right of first publication with the work simultaneously licensed under a Creative Commons Attribution License that allows others to share the work with an acknowledgement of the work's authorship and initial publication in this journal. Authors are able to enter into separate, additional contractual arrangements for the non-exclusive distribution of the journal's published version of the work (e.g., post it to an institutional repository or publish it in a book), with an acknowledgement of its initial publication in this journal. Authors are permitted and encouraged to post their work online (e.g., in institutional repositories or on their website) prior to and during the submission process, as it can lead to productive exchanges, as well as earlier and greater citation of published work (See The Effect of Open Access ). All third-party images reproduced on this journal are shared under Educational Fair Use. For more information on Educational Fair Use , please see this useful checklist prepared by Columbia University Libraries . All copyright of third-party content posted here for research purposes belongs to its original owners. Unless otherwise stated all references to characters and comic art presented on this journal are ©, ® or ™ of their respective owners. No challenge to any owner’s rights is intended or should be inferred.",
"shortTitle": "Querying Variants",
"url": "http://journal.digitalmedievalist.org//articles/10.16995/dm.81/",
"volume": "12",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Italian literature"
},
{
"tag": "data model"
},
{
"tag": "database"
},
{
"tag": "digital philology"
},
{
"tag": "textual variation"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Guillaume Adreani and Abe Jellinek^https?://(www\.)?juricaf\.org/(arret|recherche)//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Guillaume Adreani and Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, _url) {
if (attr(doc, 'meta[name="dc.type"]', 'content') == 'case') {
return "case";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.resultatcols > a');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
item.creators = [];
item.attachments = [];
item.attachments.push({
title: 'Full Text RTF',
mimeType: 'text/rtf',
url: attr(doc, 'a[href*="/telecharger_rtf.do"]', 'href')
});
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.itemType = "case";
trans.addCustomFields({
'reporter': 'reporter',
'dc.accessrights': 'rights',
'dc.creator': 'court',
'docketnumber': 'docketNumber',
'shorttitle': 'shortTitle'
});
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://www.juricaf.org/recherche/+/facet_pays%3AFrance",
"items": "multiple"
},
{
"type": "web",
"url": "https://juricaf.org/arret/FRANCE-CONSEILDETAT-20121121-326375",
"items": [
{
"itemType": "case",
"caseName": "France, Conseil d'État, 9ème sous-section jugeant seule, 21 novembre 2012, 326375",
"creators": [],
"dateDecided": "2012-11-21",
"abstractNote": "Administrative",
"court": "Conseil d'État",
"docketNumber": "326375",
"language": "FR",
"reporter": "Inédit au recueil Lebon",
"rights": "public",
"shortTitle": "CE, 21 novembre 2012, n° 326375",
"url": "https://juricaf.org/arret/juricaf.org/arret/FRANCE-CONSEILDETAT-20121121-326375",
"attachments": [
{
"title": "Full Text RTF",
"mimeType": "text/rtf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://www\.wdl\.org//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/item/')) {
let itemType = text(doc, '#item-type a').trim();
switch (itemType) {
case 'Books':
return 'book';
case 'Journals':
return 'book'; // entire journal issue
case 'Manuscripts':
return 'manuscript';
case 'Maps':
return 'map';
case 'Motion Pictures':
return 'film';
case 'Newspapers':
return 'book'; // entire newspaper
case 'Prints, Photographs':
return 'artwork';
case 'Sound Recordings':
if (/\binterview\b/i.test(doc.title)) {
return 'interview';
}
return 'audioRecording';
default:
Z.debug(`Unmapped type: ${itemType}`);
return 'book';
}
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.body > a.title');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
let item = new Zotero.Item(detectWeb(doc, url));
let main = doc.querySelector('main');
item.title = text(main, '[itemprop="name"]');
let originalTitle = text(main, '#original-title');
if (originalTitle) item.title = `${item.title} (${originalTitle})`;
item.abstractNote = text(main, '[itemprop="description"]');
item.date = ZU.strToISO(attr(main, '[itemprop="dateCreated"]', 'datetime'));
item.publisher = text(main, '[itemprop="publisher"]');
item.place = text(main, '.place-of-publication');
item.tags = [...doc.querySelectorAll('[itemprop="keywords"]')]
.map(kw => ({ tag: kw.innerText }));
item.creators = [...doc.querySelectorAll('[itemprop="creator"]')]
.map(creator => ZU.cleanAuthor(
creator.innerText,
{
map: 'cartographer',
artwork: 'artist',
film: 'contributor',
audioRecording: 'contributor',
interview: 'contributor' // too complicated to figure out from the page
}[item.itemType] || 'author',
true
));
item.url = attr(doc, 'link[rel="canonical"]', 'href');
let attachmentLink = doc.querySelector('a[href$=".pdf"]');
let mimeType = 'application/pdf';
let label = 'Full Text PDF';
if (!attachmentLink) {
attachmentLink = doc.querySelector('a[href$=".mp3"]');
mimeType = 'audio/mpeg';
label = 'Audio';
}
if (!attachmentLink) {
attachmentLink = doc.querySelector('a[href$=".mp4"]');
mimeType = 'video/mp4';
label = 'Video';
}
if (attachmentLink) {
let maybeSize = (text(attachmentLink, '.badge').match(/([0-9.])/) || [])[1];
if (maybeSize && parseFloat(maybeSize) >= 100) {
item.attachments.push({
title: `${label} (too large)`,
mimeType: mimeType,
url: ''
});
}
else {
item.attachments.push({
title: label,
mimeType: mimeType,
url: attachmentLink.href
});
}
}
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.wdl.org/en/item/18/",
"items": [
{
"itemType": "book",
"title": "First Nerchinsk Regiment of Zabaikal Cossack Troops (1-й Нерчинский полк Забайкальского казачьего войска)",
"creators": [
{
"firstName": "A. E.",
"lastName": "Makovin",
"creatorType": "author"
}
],
"date": "1907",
"abstractNote": "The First Nerchinsk Cossack Regiment was created in 1898 on the basis of the First Chita Regiment. In May 1899, the regiment was relocated from Chita to the Ussuriisk Region. In 1900, it was sent to Manchuria in connection with Russia’s participation in the European effort to quell the Boxer Rebellion, an uprising against foreign influence in China. The regiment later participated in the Russo-Japanese War of 1904-05 before returning to Chita after a six-year absence. This book is a historical outline of the regiment’s activities in 1898-1906, and includes maps and diagrams of battles, photographs, and black-and-white and colored illustrations by the artist N. Samokish.",
"libraryCatalog": "World Digital Library",
"place": "Saint Petersburg",
"publisher": "Association of R. Golik and A. Vil'borg",
"url": "https://www.wdl.org/en/item/18/",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Armies"
},
{
"tag": "Battles"
},
{
"tag": "Meeting of Frontiers"
},
{
"tag": "Military science"
},
{
"tag": "Public administration & military science"
},
{
"tag": "Russo-Japanese War, 1904-1905"
},
{
"tag": "Social sciences"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.wdl.org/en/item/4044/",
"items": [
{
"itemType": "artwork",
"title": "Cuban Refugee Breaks Down Upon his Arrival at Key West, Florida from Mariel, Cuba During the Mariel Boatlift",
"creators": [
{
"firstName": "Dale M.",
"lastName": "McDonald",
"creatorType": "artist"
}
],
"date": "1980",
"abstractNote": "The Mariel Boatlift was a mass exodus of Cubans from Mariel Port on the island of Cuba to Florida between April and November 1980. Departure by boat was permitted by the Castro government after several years of improving relations between Cuba and the United States under President Jimmy Carter, a period that coincided with a severe downturn in the Cuban economy. Perhaps as many as 125,000 Cubans made the journey to Florida on overcrowded craft of varying size and seaworthiness. Political opinion in the United States began to turn against Carter after media reports revealed that recently released convicted criminals and mental patients were among those seeking asylum. This image, by photographer and firefighter Dale M. McDonald, shows the overwhelming emotions of a refugee at arriving safely in Key West from Cuba.",
"libraryCatalog": "World Digital Library",
"url": "https://www.wdl.org/en/item/4044/",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Boat people"
},
{
"tag": "Civil & political rights"
},
{
"tag": "Cubans"
},
{
"tag": "Emigration and immigration"
},
{
"tag": "International migration & colonization"
},
{
"tag": "Mariel Boatlift, 1980"
},
{
"tag": "Political science"
},
{
"tag": "Political science"
},
{
"tag": "Refugees"
},
{
"tag": "Social sciences"
},
{
"tag": "Social sciences"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.wdl.org/en/item/110/",
"items": [
{
"itemType": "interview",
"title": "Interview with Fountain Hughes, Baltimore, Maryland, June 11, 1949",
"creators": [
{
"firstName": "Fountain",
"lastName": "Hughes",
"creatorType": "contributor"
},
{
"firstName": "Hermond",
"lastName": "Norwood",
"creatorType": "contributor"
}
],
"date": "1949-06-11",
"abstractNote": "Approximately 4 million slaves were freed at the conclusion of the American Civil War. The stories of a few thousand have been passed on to future generations through word of mouth, diaries, letters, records, or written transcripts of interviews. Only 26 audio-recorded interviews of ex-slaves have been found, 23 of which are in the collections of the American Folklife Center at the Library of Congress. In this interview, 101-year-old Fountain Hughes recalls his boyhood as a slave, the Civil War, and life in the United States as an African American from the 1860s to the 1940s. About slavery, he tells the interviewer: \"You wasn't no more than a dog to some of them in them days. You wasn't treated as good as they treat dogs now. But still I didn't like to talk about it. Because it makes, makes people feel bad you know. Uh, I, I could say a whole lot I don't like to say. And I won't say a whole lot more.\"",
"libraryCatalog": "World Digital Library",
"url": "https://www.wdl.org/en/item/110/",
"attachments": [
{
"title": "Audio",
"mimeType": "audio/mpeg"
}
],
"tags": [
{
"tag": "African American men"
},
{
"tag": "Credit--Management"
},
{
"tag": "Culture & institutions"
},
{
"tag": "History & geography"
},
{
"tag": "History of North America"
},
{
"tag": "Jefferson, Thomas, 1743-1826"
},
{
"tag": "Slavery"
},
{
"tag": "Social sciences"
},
{
"tag": "United States"
},
{
"tag": "United States--History--Civil War, 1861-1865"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.wdl.org/en/item/4052/",
"items": [
{
"itemType": "film",
"title": "Care and Feeding of a Mermaid",
"creators": [],
"date": "1961-12",
"abstractNote": "This film shows a young woman training to perform as a mermaid at Weeki Wachee, a Florida water park founded by Newton Perry (1908–87) after World War II. After serving in the U.S. Navy during the war, where among other duties he trained military divers, champion swimmer Perry scouted out locations for a water park. He found a major spring in a largely unpopulated area 100 miles (160 kilometers) north of Tampa, with remarkably clear water that flowed to the Gulf of Mexico 16 miles (26 kilometers) away. To lure tourists to his attraction, in 1947 Perry constructed an underwater theater where people could view the wildlife in the springs. To further differentiate Weeki Wachee from other roadside attractions, Perry trained young women to stay underwater for long periods of time using his own innovative underwater tubing system for breathing. The swimmers performed underwater maneuvers and ballet. Perry advertised the mermaids of Weeki Wachee, which by the 1950s was one of the most popular attractions in the United States. In 1959, the American Broadcast Company bought the park, built a larger, 500-seat theatre that was embedded below ground in the side of the spring, and began promoting the spring across the nation. In this 1961 film, underwater cameras allow viewers see lessons in breath control, graceful movements, synchronized swimming, and underwater dining etiquette.",
"libraryCatalog": "World Digital Library",
"url": "https://www.wdl.org/en/item/4052/",
"attachments": [
{
"title": "Video",
"mimeType": "video/mp4"
}
],
"tags": [
{
"tag": "Attractions -- Employees"
},
{
"tag": "Recreational & performing arts"
},
{
"tag": "Skin diving"
},
{
"tag": "Synchronized swimming"
},
{
"tag": "The arts; fine & decorative arts"
},
{
"tag": "Women swimmers"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.wdl.org/en/search/?q=theme+park&qla=en",
"items": "multiple"
}
]
/** END TEST CASES **/
100Abe Jellinek^https://calisphere\.org/(item/|search/)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, _url) {
if (doc.querySelector('.meta-block__list')) {
for (let type of doc.querySelectorAll('.meta-block__list > .meta-block__type')) {
if (type.textContent.trim() == 'Type') {
switch (type.nextElementSibling.innerText.trim().toLowerCase()) {
case 'text':
return 'document';
case 'image':
return 'artwork';
case 'moving image':
return 'videoRecording';
case 'sound':
return 'audioRecording';
case 'dataset':
return 'document';
case 'physical object':
return 'artwork';
}
break;
}
}
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.thumbnail__link');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
let item = new Zotero.Item(detectWeb(doc, url));
item.title = text(doc, '[itemprop="name"]');
item.abstractNote = text(doc, '[itemprop="description"]');
item.date = ZU.strToISO(text(doc, '[itemprop="dateCreated"]'));
// sometimes the last language line will be the ISO code!
let languages = text(doc, '[itemprop="inLanguage"]').split(/\s/);
item.language = languages[languages.length - 1];
item.url = attr(doc, 'link[rel="canonical"]', 'href') || url;
item.archive = text(doc, '[itemprop="isPartOf"]');
item.libraryCatalog = 'Calisphere';
let authors = innerText(doc, '[itemprop="creator"]');
if (authors) {
for (let author of authors.split('\n')) {
let type = 'author';
if (item.itemType == 'artwork') {
type = 'artist';
}
else if (item.itemType == 'videoRecording'
|| item.itemType == 'audioRecording') {
type = 'contributor'; // hard to tell from the page
}
item.creators.push(ZU.cleanAuthor(
author,
type,
true
));
}
}
item.tags = innerText(doc, '[itemprop="about"]')
.split('\n')
.map(tag => ({ tag }));
if (doc.querySelector('a.obj__link')) {
item.attachments.push({
title: 'Source',
mimeType: 'text/html',
url: attr(doc, 'a.obj__link', 'href')
});
}
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://calisphere.org/item/829e5da7-6ff0-4a60-82d3-b3246d00d9ca/",
"items": [
{
"itemType": "document",
"title": "Field crops newsletter: allelopathic effect of alfalfa on sugarbeets; safflower for 1989?; U.C. regional wheat tests; U.C. regional barley tests; U.C. regional alfalfa variety yield trials; early beet planting; sustainable agriculture--program announcement; ecological farm conference; corn test plot results",
"creators": [
{
"firstName": "Franz R.",
"lastName": "Kegel",
"creatorType": "author"
}
],
"date": "1988-11",
"abstractNote": "Funding: Digitization funded in part by a National Historical Publications and Records Commission (NHPRC) Major Initiatives Grant (RM-100281) awarded to the University of California, Merced Library.",
"archive": "Fresno County, UC Cooperative Extension Records",
"language": "eng",
"libraryCatalog": "Calisphere",
"shortTitle": "Field crops newsletter",
"url": "https://calisphere.org/item/829e5da7-6ff0-4a60-82d3-b3246d00d9ca/",
"attachments": [
{
"title": "Source",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "alfalfa"
},
{
"tag": "allelopathy"
},
{
"tag": "sugar beet"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://calisphere.org/item/a63418fba6033a5c00ae1c0230e4375b/",
"items": [
{
"itemType": "artwork",
"title": "Son! Do you know that your seed corn will grow? Get your seed corn now. The seed corn situation is the worst in the history of the state. If wheat or oats fail, we can plant corn and grow a paying crop ... Corn is Illinois' greatest crop",
"creators": [
{
"firstName": "John T.",
"lastName": "McCutcheon",
"creatorType": "artist"
}
],
"date": "1917",
"archive": "Hoover Institution Digital Collections",
"libraryCatalog": "Calisphere",
"shortTitle": "Son! Do you know that your seed corn will grow?",
"url": "https://calisphere.org/item/a63418fba6033a5c00ae1c0230e4375b/",
"attachments": [
{
"title": "Source",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://calisphere.org/item/fd3fad62ed17fab44be94069beadbdde/",
"items": [
{
"itemType": "videoRecording",
"title": "Atlas I Serparation Test, Atlas IIAS SRB Test, Atlas IIA Test, Fairing Test HACL Video 00008",
"creators": [],
"abstractNote": "Film from the Atlas Centaur Heritage Film Collection which was donated to the San Diego Air and Space Museum by Lockheed Martin and United Launch Alliance. The Collection contains 3,000 reels of 16-millimeter film. From the archives of the San Diego Air and Space Museum http://www.sandiegoairandspace.org/research/ Please do not use for commercial purposes without permission.",
"archive": "Moving Image Collection",
"libraryCatalog": "Calisphere",
"url": "https://calisphere.org/item/fd3fad62ed17fab44be94069beadbdde/",
"attachments": [
{
"title": "Source",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Atlas"
},
{
"tag": "Atlas Centaur"
},
{
"tag": "Atlas IIA"
},
{
"tag": "Atlas Missile"
},
{
"tag": "Atlas Rocket"
},
{
"tag": "Lockheed Martin Missile Atlas Centaur Heritage Film Collection Convair General Dynamics"
},
{
"tag": "UAL"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://calisphere.org/item/977c7c5e19b2e32fea03596d91975c2d/",
"items": [
{
"itemType": "videoRecording",
"title": "Interview with Cornelis de Kluyver",
"creators": [
{
"firstName": "Cornelis A.",
"lastName": "De Kluyver",
"creatorType": "contributor"
}
],
"date": "2001-12-03",
"abstractNote": "Cornelis de Kluyver was dean of the Drucker School from 1999 to 2006. Here he talks about some of his humorous encounters with Peter Drucker and what it was like to be his \"boss\" as dean, referring to Drucker as a \"benevolent mentor\". He also discusses Drucker's European education and background as well as his experience as a journalist.",
"archive": "Drucker Archives",
"language": "English",
"libraryCatalog": "Calisphere",
"url": "https://calisphere.org/item/977c7c5e19b2e32fea03596d91975c2d/",
"attachments": [
{
"title": "Source",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "De Kluyver, Cornelis A"
},
{
"tag": "Drucker, Peter F. (Peter Ferdinand), 1909-2005"
},
{
"tag": "Interviews"
},
{
"tag": "Universities and colleges - Faculty"
},
{
"tag": "Universities and colleges - United States - Administration"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://calisphere.org/item/dcfef906d97891a33d602e75fc6c9524/",
"items": [
{
"itemType": "audioRecording",
"title": "H.E. Barney Jewett oral history interview",
"creators": [
{
"lastName": "Ontario City Library",
"creatorType": "contributor"
},
{
"firstName": "Robert H.",
"lastName": "Collins",
"creatorType": "contributor"
}
],
"date": "1977",
"abstractNote": "H.E. Jewett: Came from Iowa in 1935; house-1889 moved to present site in 1912;off Hwy 66 orange trees everywhere;came out to Ontario in 1950;main crop in Chino was potatoes and corn;Main crop is green feed, corn, alfalfa; Pacific electric, electric buses,quiet, smog free-Big red car to San Bernardino,system sold to Mexico City;Mass transportation;Earthquakes-1889,1920's, 1950's, and 1971. California Preservation Service",
"archive": "California Revealed from Ontario City Library, Robert E. Ellingwood Model Colony History Room",
"language": "English",
"libraryCatalog": "Calisphere",
"url": "https://calisphere.org/item/dcfef906d97891a33d602e75fc6c9524/",
"attachments": [
{
"title": "Source",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://calisphere.org/search/?q=corn",
"items": "multiple"
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://www\.goodreads\.com/(book/show/|search\?)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/book/show/') && doc.querySelector('meta[property="books:isbn"]')) {
return "book";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('tr a.bookTitle');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, _url) {
let ISBN = ZU.cleanISBN(attr(doc, 'meta[property="books:isbn"]', 'content'));
// adapted from Amazon translator
let search = Zotero.loadTranslator('search');
search.setHandler('translators', function (_, translators) {
search.setTranslator(translators);
search.setHandler("itemDone", function (_, item) {
Z.debug(`Found metadata in ${item.libraryCatalog}`);
item.url = '';
item.complete();
});
search.translate();
});
Z.debug(`Searching by ISBN: ${ISBN}`);
search.setSearch({ ISBN });
search.getTranslators();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.goodreads.com/book/show/18467746-the-norm-chronicles",
"items": [
{
"itemType": "book",
"title": "The Norm chronicles: stories and numbers about danger and death",
"creators": [
{
"firstName": "Michael",
"lastName": "Blastland",
"creatorType": "author"
},
{
"firstName": "D. J.",
"lastName": "Spiegelhalter",
"creatorType": "author"
}
],
"date": "2014",
"ISBN": "9780465085705",
"callNumber": "HM1101 .B53 2014",
"libraryCatalog": "Library of Congress ISBN",
"numPages": "358",
"place": "New York",
"publisher": "Basic Books, A Member of the Perseus Books Group",
"shortTitle": "The Norm chronicles",
"attachments": [],
"tags": [
{
"tag": "Accidents"
},
{
"tag": "BUSINESS & ECONOMICS / Statistics"
},
{
"tag": "Disasters"
},
{
"tag": "MATHEMATICS / Probability & Statistics / General"
},
{
"tag": "Risk"
},
{
"tag": "SCIENCE / Applied Sciences"
},
{
"tag": "Sociological aspects"
},
{
"tag": "Statistics"
},
{
"tag": "Statistics"
},
{
"tag": "Statistics"
},
{
"tag": "Violent deaths"
}
],
"notes": [
{
"note": "\"Is it safer to fly or take the train? How dangerous is skydiving? And is eating that extra sausage going to kill you? We've all heard the statistics for risky activities, but what do they mean in the real world? In The Norm Chronicles, journalist Michael Blastland and risk expert David Spiegelhalter explore these questions through the stories of average Norm and an ingenious measurement called the MicroMort-a one in a million chance of dying. They reveal why general anesthesia is as dangerous as a parachute jump, giving birth in the US is nearly twice as risky as in the UK, and that the radiation from eating a banana shaves 3 seconds off your life. An entertaining guide to the statistics of personal risk, The Norm Chronicles will enlighten anyone who has ever worried about the dangers we encounter in our daily lives\"-- \"Is it safer to fly or take the train? How dangerous is skydiving? And is eating that extra link of breakfast sausage going to kill you? We've all heard the statistics for risky activities, but what do those numbers actually mean in the real world? In The Norm Chronicles, journalist Michael Blastland and risk expert David Spiegelhalter answer these questions--and far more--in a commonsense (and wildly entertaining) guide to personal risk. Through the adventures of the perfectly average Norm, his friends careful Prudence and the reckless Kelvin brothers, and an ingenious measurement called the MicroMort--essentially, a one in a million chance of dying--Blastland and Spiegelhalter show us how to think about risk in the choices we make every day\"--"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.goodreads.com/book/show/13335037-divergent",
"items": [
{
"itemType": "book",
"title": "Divergent",
"creators": [
{
"firstName": "Veronica",
"lastName": "Roth",
"creatorType": "author"
}
],
"date": "2012",
"ISBN": "9780062024039 9780062289858 9780606238403",
"abstractNote": "In a future Chicago, sixteen-year-old Beatrice Prior must choose among five predetermined factions to define her identity for the rest of her life, a decision made more difficult when she discovers that she is an anomaly who does not fit into any one group, and that the society she lives in is not perfect after all",
"edition": "1st paperback ed",
"language": "eng",
"libraryCatalog": "K10plus ISBN",
"numPages": "487",
"place": "New York, New York",
"publisher": "Katherine Tegen Books",
"series": "Divergent",
"seriesNumber": "bk. 1",
"attachments": [],
"tags": [],
"notes": [
{
"note": "Reprint of the hardcover edition published in 2011 by Katherine Tegen Books. - \"Bonus materials include: Author Q & A ; Discussion guide ; Divergent playlist ; Faction manifestos ; Quiz questions ; Writing tips and a sneak peek of Insurgent!\"--Page 4 of cover 700, Lexile"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.goodreads.com/search?q=test&qid=",
"items": "multiple"
}
]
/** END TEST CASES **/
270Sebastian Karcher and Abe Jellinek^https?://([^/]+\.)?(((my)?reading|resource|lib|cyprus|)lists|aspire\.surrey|rl\.talis)\..+/(lists|items)//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2013-2021 Sebastian Karcher and Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/lists/') && getSearchResults(doc, true)) return "multiple";
if (url.includes('/items/')) {
var type = ZU.xpathText(doc, '//dd/span[@class="label"]');
if (!type) type = text(doc, 'rl-bibliographic-resource-type');
if (type == "Book") return "book";
if (type == "Webpage" || type == "Website") return "webpage";
return "journalArticle";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {}, found = false;
var bibData = doc.querySelectorAll('article[id]');
for (let article of bibData) {
let title = text(article, 'cite');
let slug = 'items/' + article.id.split('_')[1];
if (!title || !slug) continue;
if (checkOnly) return true;
found = true;
items[slug] = ZU.trimInternal(title);
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc), function (items) {
if (!items) return;
scrape(url, Object.keys(items));
});
}
else {
scrape(url, [extractSlug(url)]);
}
}
function scrape(url, slugs) {
let siteID = url.match(/\/\d+\/([^/]+)/);
if (!siteID) siteID = url.match(/([^.]+)\.rl\.talis\.com/);
siteID = siteID[1];
let urls = slugs.map(slug => `https://${siteID}.rl.talis.com/${slug}.ris`);
ZU.doGet(urls, function (text) {
var translator = Zotero.loadTranslator("import");
// RIS
translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7");
translator.setString(text);
translator.translate();
});
}
function extractSlug(url) {
return (url.match(/([^/]+\/[^/]+)\.html/) || [])[1];
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://rl.talis.com/3/lincoln/items/FEB50B30-652C-55B2-08F8-F2D399BF308A.html",
"defer": true,
"items": [
{
"itemType": "book",
"title": "American cultural studies: an introduction to American culture",
"creators": [
{
"lastName": "Campbell",
"firstName": "Neil",
"creatorType": "author"
},
{
"lastName": "Kean",
"firstName": "Alasdair",
"creatorType": "author"
}
],
"date": "2006",
"ISBN": "9780415346665",
"edition": "2nd ed",
"libraryCatalog": "Talis Aspire",
"place": "London",
"publisher": "Routledge",
"shortTitle": "American cultural studies",
"attachments": [],
"tags": [],
"notes": [
{
"note": "<p>Ebook version of first edition also available</p>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://lists.library.lincoln.ac.uk/lists/625177C4-A268-8971-E3C9-ACEA91A83585.html",
"defer": true,
"items": "multiple"
},
{
"type": "web",
"url": "https://rl.talis.com/3/qmul/items/66C2A847-80C3-8259-46AB-0DB8C0779068.html",
"defer": true,
"items": [
{
"itemType": "journalArticle",
"title": "The Struggle against Sweatshops: Moving toward Responsible Global Business",
"creators": [
{
"lastName": "Tara J. Radin and Martin Calkins",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "Jul., 2006",
"ISSN": "01674544",
"issue": "No. 2",
"libraryCatalog": "Talis Aspire",
"pages": "261-272",
"publicationTitle": "Journal of Business Ethics",
"shortTitle": "The Struggle against Sweatshops",
"url": "http://www.jstor.org/stable/25123831",
"volume": "Vol. 66",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://rl.talis.com/3/bournemouth/items/AF2E5676-6A86-DCDC-FC7B-8CC554EFD9BF.html",
"defer": true,
"items": [
{
"itemType": "book",
"title": "The Unified Modeling Language reference manual",
"creators": [
{
"lastName": "Rumbaugh",
"firstName": "James",
"creatorType": "author"
},
{
"lastName": "Jacobson",
"firstName": "Ivar",
"creatorType": "author"
},
{
"lastName": "Booch",
"firstName": "Grady",
"creatorType": "author"
}
],
"date": "0000 c",
"ISBN": "9780201309980",
"libraryCatalog": "Talis Aspire",
"place": "Harlow",
"publisher": "Addison Wesley",
"volume": "The Addison-Wesley object technology series",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://rl.talis.com/3/coventry/items/1CC2D394-7EDE-8DE5-4FF0-868C1C6E6BE5.html",
"defer": true,
"items": [
{
"itemType": "book",
"title": "Decision making in midwifery practice",
"creators": [
{
"lastName": "Marshall",
"firstName": "Jayne E",
"creatorType": "author"
},
{
"lastName": "Raynor",
"firstName": "Maureen D",
"creatorType": "author"
},
{
"lastName": "Sullivan",
"firstName": "Amanda",
"creatorType": "author"
}
],
"date": "2005",
"ISBN": "9780443073847",
"libraryCatalog": "Talis Aspire",
"place": "Edinburgh",
"publisher": "Elsevier/Churchill Livingstone",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://rl.talis.com/3/cyprus_uclan/items/57E6E313-82BF-0AF6-C0E5-940A3760507C.html",
"defer": true,
"items": [
{
"itemType": "book",
"title": "Neocleous's introduction to Cyprus law",
"creators": [
{
"lastName": "Neocleous",
"firstName": "Andreas",
"creatorType": "author"
},
{
"lastName": "Andreas Neocleous & Co",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "2010",
"ISBN": "9789963935918",
"edition": "3rd ed",
"libraryCatalog": "Talis Aspire",
"place": "Limassol, Cyprus",
"publisher": "A. Neocleous & Co. LLC",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://rl.talis.com/3/derby/items/F9F66F67-142C-B05D-7401-22037C676876.html",
"defer": true,
"items": [
{
"itemType": "book",
"title": "Preparing to teach in the lifelong learning sector: the new award",
"creators": [
{
"lastName": "Gravells",
"firstName": "Ann",
"creatorType": "author"
}
],
"date": "2012",
"ISBN": "9780857257734",
"edition": "5th ed",
"libraryCatalog": "Talis Aspire",
"place": "London",
"publisher": "Learning Matters",
"shortTitle": "Preparing to teach in the lifelong learning sector",
"attachments": [],
"tags": [],
"notes": [
{
"note": "<p>Earlier editions are available in the Library.</p>"
}
],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Sebastian Karcher, Aurimas Vinckevicius, Philipp Zumstein, and Abe Jellinek^https?://(worldwide|[a-z][a-z])\.espacenet\.com//*
***** BEGIN LICENSE BLOCK *****
ESpacenet translator - Copyright © 2011-2021 Sebastian Karcher
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
// multiples are not working (easily) because the website
// has to fully load before Zotero can extract its
// metadata
if (doc.getElementById("pagebody")) {
Z.monitorDOMChanges(doc.getElementById("pagebody"), { childList: true });
}
if (doc.getElementById("application-content")) {
Z.monitorDOMChanges(doc.getElementById("application-content"));
}
if ((url.includes("/biblio?") || url.includes("/publication/"))
&& getTitle(doc)) {
return "patent";
}
else if (url.includes('/searchResults') && getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('a.publicationLinkClass[href*="/publicationDetails/"]');
for (let row of rows) {
let href = row.href;
// replace the AJAX-populated page with the static page that it
// populates from
href = href.replace('/publicationDetails/', '/data/publicationDetails/');
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function getTitle(doc) {
var title = text(doc, '#pagebody>h3, #biblio-title-content');
if (title) {
if (title.toUpperCase() == title) {
title = ZU.capitalizeTitle(title, true);
}
return title.trim();
}
return false;
}
// clean up names list and call callback with a clean name
function cleanNames(names, callback) {
if (names) {
// Z.debug(names)
names = names.replace(/\[[a-zA-Z]*\]/g, "").trim(); // to eliminate country code in square brackets after inventors' and applicants' names
names = ZU.capitalizeTitle(names.toLowerCase(), true);
names = names.split(/\s*;\s*/);
for (var j = 0, m = names.length; j < m; j++) {
callback(names[j].replace(/\s*,$/, ''));
}
}
}
function scrape(doc, url) {
var newItem = new Zotero.Item("patent");
newItem.title = getTitle(doc);
cleanNames(text(doc, '#inventors, #biblio-inventors-content'),
function (name) {
newItem.creators.push(
ZU.cleanAuthor(name.replace(/,?\s/, ', '), // format displayed is LAST FIRST MIDDLE, so we add a comma after LAST
"inventor", true));
});
var assignees = [];
cleanNames(text(doc, '#applicants, #biblio-applicants-content'),
function (name) {
assignees.push(name);
});
newItem.assignee = assignees.join('; ');
var classifications = {
ipc: [],
cpc: []
};
var ipcClasses = doc.querySelectorAll('a.ipc, #biblio-international-content a');
for (let ipc of ipcClasses) {
classifications.ipc.push(ipc.textContent.replace(';', ''));
}
var cpcClasses = doc.querySelectorAll('a.classTT:not(.ipc), #biblio-cooperative-content a');
for (let cpc of cpcClasses) {
classifications.cpc.push(cpc.textContent.replace(';', ''));
}
var note = "<h1>Classifications</h1>\n<h2>IPC</h2>\n" + classifications.ipc.join('; ') + "<h2>CPC</h2>\n" + classifications.cpc.join('; ');
newItem.notes.push({ note: note });
var rows = ZU.xpath(doc, '//tr[@class="noPrint" or ./th[@class="printTableText"]]');
var pn = text(doc, '#biblio-publication-number-content');
if (pn) { // new design
var datePnumber = pn.split('·');
if (datePnumber.length == 2) {
newItem.patentNumber = datePnumber[0];
}
newItem.issueDate = ZU.strToISO(datePnumber);
var application = text(doc, '#biblio-application-number-content').split('·');
if (application.length == 2) {
newItem.applicationNumber = application[0];
newItem.filingDate = application[1];
}
newItem.priorityNumbers = text(doc, '#biblio-priority-numbers-label ~ div');
}
else { // old design
for (var i = 0, n = rows.length; i < n; i++) {
var label = rows[i].firstElementChild.textContent.trim();
var value = rows[i].firstElementChild.nextElementSibling;
if (!value) continue;
switch (label) {
case "Page bookmark":
case "Signet":
case "Bookmark zur Seite":
newItem.url = value.firstElementChild.href;
break;
case "Application number:":
case "Numéro de demande":
case "Anmeldenummer:":
newItem.applicationNumber = ZU.xpathText(value, './text()[1]');
break;
case "Priority number(s):":
case "Numéro(s) de priorité:":
case "Prioritätsnummer(n):":
newItem.priorityNumbers = ZU.trimInternal(value.textContent);
break;
}
}
var date = text(doc, '#pagebody>h1');
if (date) {
newItem.issueDate = ZU.strToISO(date);
}
newItem.patentNumber = text(doc, 'span.sel');
}
newItem.abstractNote = ZU.trimInternal(
text(doc, 'p.printAbstract, #biblio-abstract-content') || '');
newItem.attachments.push({
title: "Espacenet patent record",
url: url,
snapshot: false
});
newItem.complete();
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://worldwide.espacenet.com/data/publicationDetails/biblio?DB=worldwide.espacenet.com&II=2&ND=3&adjacent=true&locale=en_EP&FT=D&date=20120426&CC=WO&NR=2012054443A1&KC=A1",
"items": [
{
"itemType": "patent",
"title": "Electronic Control Glove",
"creators": [
{
"firstName": "Willie Lee Jr",
"lastName": "Blount",
"creatorType": "inventor"
}
],
"issueDate": "2012-04-26",
"abstractNote": "Many people active and inactive can't readily control their audio experience without reaching into a pocket or some other location to change a setting or answer the phone. The problem is the lack of convenience and the inaccessibility when the user is riding his motorcycle, skiing, bicycling, jogging, or even walking with winter gloves on, etc. The electronic control glove described here enables enhanced control over electronic devices wirelessly at all times from the user's fingertips. The glove is manufactured with electrical conducive materials along the fingers and the thumb, where contact with the thumb and finger conductive materials creates a closed circuit which is transmitted to a control device on the glove that can then wirelessly transmit messages to remote electronic devices such as cell phones, audio players, garage door openers, military hardware and software, in work environments, and so forth.",
"applicationNumber": "WO2011US56657 20111018",
"assignee": "Blue Infusion Technologies Llc; Blount Willie Lee Jr",
"patentNumber": "WO2012054443 (A1)",
"priorityNumbers": "US20100394879P 20101020 ; US20100394013P 20101018",
"url": "https://worldwide.espacenet.com/publicationDetails/biblio?FT=D&date=20120426&DB=worldwide.espacenet.com&locale=en_EP&CC=WO&NR=2012054443A1&KC=A1&ND=4",
"attachments": [
{
"title": "Espacenet patent record",
"snapshot": false
}
],
"tags": [],
"notes": [
{
"note": "<h1>Classifications</h1>\n<h2>IPC</h2>\nG06F3/033; G09G5/08<h2>CPC</h2>\nG06F3/014 (EP, KR); G08C17/02 (KR, US); H01H2009/0221 (EP, KR); H01H2203/0085 (EP, KR)"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://worldwide.espacenet.com/data/publicationDetails/biblio?DB=worldwide.espacenet.com&II=4&ND=3&adjacent=true&locale=en_EP&FT=D&date=20120426&CC=US&NR=2012101951A1&KC=A1",
"items": [
{
"itemType": "patent",
"title": "Method and System for Secure Financial Transactions Using Mobile Communications Devices",
"creators": [
{
"firstName": "Michael",
"lastName": "Li",
"creatorType": "inventor"
},
{
"firstName": "Yuri",
"lastName": "Shakula",
"creatorType": "inventor"
},
{
"firstName": "Martin",
"lastName": "Rodriguez",
"creatorType": "inventor"
}
],
"issueDate": "2012-04-26",
"abstractNote": "The present invention employs public key infrastructure to electronically sign and encrypt important personal information on a mobile communications device (MCD), without disclosing private, personal information to the transaction counterparts and middleman, thus preserving highly elevated and enhanced security and fraud protection. In one embodiment, the present invention can use a mobile device identifier, such as a cell phone number or email address, for example, as an index/reference during the entire transaction, so that only the account holder and the account issuer know the underlying account number and other private information.",
"applicationNumber": "US201113172170 20110629",
"assignee": "Li Michael; Shakula Yuri; Rodriguez Martin",
"patentNumber": "US2012101951 (A1)",
"priorityNumbers": "US201113172170 20110629 ; US20100406097P 20101022",
"url": "https://worldwide.espacenet.com/publicationDetails/biblio?FT=D&date=20120426&DB=worldwide.espacenet.com&locale=en_EP&CC=US&NR=2012101951A1&KC=A1&ND=4",
"attachments": [
{
"title": "Espacenet patent record",
"snapshot": false
}
],
"tags": [],
"notes": [
{
"note": "<h1>Classifications</h1>\n<h2>IPC</h2>\nG06Q20/00<h2>CPC</h2>\nG06Q20/3223 (EP); G06Q20/3829 (EP)"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://worldwide.espacenet.com/data/publicationDetails/biblio?locale=de_EP&II=9&FT=D&CC=AU&DB=EPODOC&NR=2814389A&date=19890601&ND=3&KC=A&adjacent=true",
"items": [
{
"itemType": "patent",
"title": "Eswl Employing Non-Focused Spherical-Sector Shock Waves",
"creators": [
{
"firstName": "William S.",
"lastName": "Filler",
"creatorType": "inventor"
}
],
"issueDate": "1989-06-01",
"abstractNote": "A conical sector shock tube (202) generates a sector of a classical diverging spherical shock wave which emanates radially from an effective point source in a non-focusing but highly directional manner. A compression front (208) having a radius of curvature equal to its separation from the apex of the sector shock tube defines the leading edge of a ''cap shock'' (306) of accurately controllable and predictable intensity. A trailing rarefaction front (314) of the cap shock (306) is defined by the diffraction caused by the rim (312) of the sector shock tube (202). The rarefaction front (314) progressively erodes the cap shock (306) as it is projected toward the target calculus (128), defining the width and duration of the propagating cap shock (306). The cap shock (306) uniformly pulverizes the target calculus (128) in a comparatively small quantity of shock wave applications, as compared with the larger (two orders of magnitude greater) number of shots employed in known ellipsoidal focused shock wave methods.",
"applicationNumber": "AU19890028143 19891108",
"assignee": "William S Filler",
"patentNumber": "AU2814389 (A)",
"priorityNumbers": "US19870118325 19871109",
"url": "https://worldwide.espacenet.com/publicationDetails/biblio?FT=D&date=19890601&DB=EPODOC&locale=de_EP&CC=AU&NR=2814389A&KC=A&ND=4",
"attachments": [
{
"title": "Espacenet patent record",
"snapshot": false
}
],
"tags": [],
"notes": [
{
"note": "<h1>Classifications</h1>\n<h2>IPC</h2>\nA61B17/22; A61B17/225; G10K11/32; G10K15/04; A61B17/22<h2>CPC</h2>\nA61B17/225 (EP); G10K11/32 (EP); G10K15/043 (EP); A61B2017/22027 (EP)"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://worldwide.espacenet.com/data/publicationDetails/biblio?locale=fr_EP&II=9&FT=D&CC=AU&DB=EPODOC&NR=2814389A&date=19890601&ND=3&KC=A&adjacent=true",
"items": [
{
"itemType": "patent",
"title": "Eswl Employing Non-Focused Spherical-Sector Shock Waves",
"creators": [
{
"firstName": "William S.",
"lastName": "Filler",
"creatorType": "inventor"
}
],
"issueDate": "1989-06-01",
"abstractNote": "A conical sector shock tube (202) generates a sector of a classical diverging spherical shock wave which emanates radially from an effective point source in a non-focusing but highly directional manner. A compression front (208) having a radius of curvature equal to its separation from the apex of the sector shock tube defines the leading edge of a ''cap shock'' (306) of accurately controllable and predictable intensity. A trailing rarefaction front (314) of the cap shock (306) is defined by the diffraction caused by the rim (312) of the sector shock tube (202). The rarefaction front (314) progressively erodes the cap shock (306) as it is projected toward the target calculus (128), defining the width and duration of the propagating cap shock (306). The cap shock (306) uniformly pulverizes the target calculus (128) in a comparatively small quantity of shock wave applications, as compared with the larger (two orders of magnitude greater) number of shots employed in known ellipsoidal focused shock wave methods.",
"applicationNumber": "AU19890028143 19891108",
"assignee": "William S Filler",
"patentNumber": "AU2814389 (A)",
"priorityNumbers": "US19870118325 19871109",
"url": "https://worldwide.espacenet.com/publicationDetails/biblio?FT=D&date=19890601&DB=EPODOC&locale=fr_EP&CC=AU&NR=2814389A&KC=A&ND=4",
"attachments": [
{
"title": "Espacenet patent record",
"snapshot": false
}
],
"tags": [],
"notes": [
{
"note": "<h1>Classifications</h1>\n<h2>IPC</h2>\nA61B17/22; A61B17/225; G10K11/32; G10K15/04; A61B17/22<h2>CPC</h2>\nA61B17/225 (EP); G10K11/32 (EP); G10K15/043 (EP); A61B2017/22027 (EP)"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://es.espacenet.com/publicationDetails/biblio?II=0&ND=3&adjacent=true&locale=es_ES&FT=D&date=20190830&CC=ES&NR=2723723T3&KC=T3#",
"items": [
{
"itemType": "patent",
"title": "Vehículo dirigido a dianas de células nerviosas",
"creators": [
{
"firstName": "Andreas",
"lastName": "Rummel",
"creatorType": "inventor"
},
{
"firstName": "Tanja",
"lastName": "Weil",
"creatorType": "inventor"
},
{
"firstName": "Aleksandrs",
"lastName": "Gutcaits",
"creatorType": "inventor"
}
],
"issueDate": "2019-08-30",
"abstractNote": "Una proteína transportadora, que comprende una cadena pesada modificada de la neurotoxina que tiene el número de base de datos AAA23211 que está formada por el serotipo B de Clostridium botulinum, en donde el aminoácido en la posición glutamato 1191 se reemplaza por leucina.",
"assignee": "Ipsen Bioinnovation Ltd",
"patentNumber": "ES2723723 (T3)",
"attachments": [
{
"title": "Espacenet patent record",
"snapshot": false
}
],
"tags": [],
"notes": [
{
"note": "<h1>Classifications</h1>\n<h2>IPC</h2>\nA61K38/00; C07K14/195; C07K14/33<h2>CPC</h2>\nC07K14/33 (EP, US); C12N9/52 (EP, US); A61K38/00 (EP, US); C12Y304/24069 (EP, US); Y02A50/469 (EP, US); Y02A50/473 (EP, US)"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://worldwide.espacenet.com/patent/search/family/068096681/publication/US2019311023A1?q=pn%3DUS2019311023A1",
"items": [
{
"itemType": "patent",
"title": "Automated Reference List Builder",
"creators": [
{
"firstName": "George",
"lastName": "Burba",
"creatorType": "inventor"
},
{
"firstName": "Gerardo",
"lastName": "Fratini",
"creatorType": "inventor"
},
{
"firstName": "Frank",
"lastName": "Griessbaum",
"creatorType": "inventor"
}
],
"issueDate": "2019-10-10",
"abstractNote": "A device for managing a reference list. The device includes one or more processors, which alone or in combination are configured to facilitate performing: (a) running one or more applications; (b) selecting the reference list; (c) monitoring activities in the one or more applications to identify citable processes; (d) receiving citable information from the one or more applications based on the citable processes; (e) determining a type of citable information received; and (f) modifying the reference list based on the type of citable information received.",
"applicationNumber": "US201916372808A",
"assignee": "Li Cor Inc",
"filingDate": "2019-04-02",
"patentNumber": "US2019311023A1",
"priorityNumbers": "US201862654087P·2018-04-06; US201916372808A·2019-04-02",
"attachments": [
{
"title": "Espacenet patent record",
"snapshot": false
}
],
"tags": [],
"notes": [
{
"note": "<h1>Classifications</h1>\n<h2>IPC</h2>\nG06F16/38; G06F17/21; G06F17/22; G06F17/24<h2>CPC</h2>\nG06F16/382 (US); G06F17/218 (US); G06F17/2205 (US); G06F17/2235 (EP); G06F17/24 (US); G06F17/241 (EP)"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://worldwide.espacenet.com/searchResults?compact=false&page=0&ST=advanced&AB=&PR=&IN=&rnd=1589809439894&locale=cn_EP&AP=&PA=&PD=&TI=pesticide&CPC=&IC=&DB=EPODOC&PN=",
"items": "multiple"
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://www\.herder\.de//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, _url) {
if (doc.body.matches('.page-article')) {
return "journalArticle";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('ul.article-list h4 a');
if (!rows.length) rows = doc.querySelectorAll('ul.link-list h4 a');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
let item = new Zotero.Item('journalArticle');
item.title = text(doc, '.headline');
if (text(doc, '.subline')) item.title += ': ' + text(doc, '.subline');
item.abstractNote = text(doc, '.article-summary')
.replace(/^\s*Zusammenfassung \/ Summary\s*/, '')
.replace(/\s*\n\s*/, '\n\n');
item.publicationTitle = attr(doc, 'img.header__logo-image', 'alt')
|| text(doc, 'a[id$="linkBreadcrumb_0"]');
let infoline = text(doc, '.article-infoline')
.match(/[^\s]+ ([^\s]+) \(([0-9]+)\) ([^\s]+)?/);
if (infoline) {
item.volume = infoline[1];
item.date = infoline[2];
item.pages = infoline[3];
}
item.language = 'de-DE';
item.url = attr(doc, 'link[rel="canonical"]', 'href') || url;
for (let author of doc.querySelectorAll('.byline a')) {
item.creators.push(ZU.cleanAuthor(author.innerText, 'author'));
}
item.attachments.push({
title: 'Full Text PDF',
url: attr(doc, 'a[id$="_linkPDF"]', 'href'),
mimeType: 'application/pdf'
});
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.herder.de/thph/hefte/archiv/92-2017/4-2017/aristoteles-metaphysik-des-guten/",
"items": [
{
"itemType": "journalArticle",
"title": "Aristoteles’ Metaphysik des Guten: Gottes Existenz und Eigenschaften aus der Perspektive einer Relationalen Ontologie",
"creators": [
{
"firstName": "Stephan",
"lastName": "Herzberg",
"creatorType": "author"
}
],
"date": "2017",
"abstractNote": "Metaethische Fragen, die die Ontologie der Moral berühren, stehen nicht gerade im Zentrum von Aristoteles’ Ethik. Wo sie aufgeworfen werden, verschiebt Aristoteles eine genauere Erörterung und verweist auf eine andere Disziplin der Philosophie, die hierfür geeigneter scheint. Ein berühmtes Beispiel ist seine These, dass die Güter nicht zu denjenigen Dingen gehören, die bloß aufgrund eines Zufalls denselben Namen tragen. Aber wie sollen wir eine solche nicht-zufällige Homonymie im Fall des Guten verstehen? Aristoteles lässt die Frage offen, ob die Güter denselben Namen tragen aufgrund einer Hinordnung zu einer ersten Instanz (pros hen) oder aufgrund einer Analogie. Das ist kein zweitrangiges Interpretationsproblem, sondern betrifft die metaphysischen Grundlagen menschlicher Praxis: Wie lassen sich die Vielfalt der Güter und ihre Abhängigkeit von einer ersten Instanz (eudaimonia) konsistent zusammendenken? Welcher Art ist die Beziehung zwischen diesem höchsten menschlichen Gut und dem absolut höchsten Gut im ganzen Universum? Wie ist der Bereich menschlicher Praxis in das Ganze des Seienden eingebettet? Ausgehend von einer Neubewertung der Kritik des Aristoteles an Platons Theorie des Guten entwickelt dieser Aufsatz eine Rekonstruktion von Aristoteles’ Metaphysik des Guten.\n\nQuestions regarding moral metaphysics are not at the core of Aristotle’s ethics. Where they are raised, Aristotle postpones a detailed inquiry and points to another branch of philosophy that would be more appropriate. A famous example is his view that good things do not belong to the things that just happen to have the same name. But how should we conceive this non-coincidental homonymy? Aristotle leaves it open whether the things that are good have the same name by reason of being related to a first instance (pros hen) or by analogy (in the strict sense). This is not a merely marginal problem of interpretation. It strikes the metaphysical underpinning of human action: How can we reconcile the variety of “goods” with their dependence from a first instance (eudaimonia)? What is the relation between this highest human good and the supreme good of the universe, which is God? How is the realm of human praxis embedded in the whole realm of being? Based on a reassessment of Aristotle’s criticism of Plato’s theory of the good, this article develops a reconstruction of Aristotle’s metaphysics of goodness.",
"language": "de-DE",
"libraryCatalog": "Herder",
"pages": "535-559",
"publicationTitle": "Theologie und Philosophie",
"shortTitle": "Aristoteles’ Metaphysik des Guten",
"url": "https://www.herder.de/thph/hefte/archiv/92-2017/4-2017/aristoteles-metaphysik-des-guten/",
"volume": "92",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.herder.de/stz/hefte/archiv/146-2021/7-2021/praevention-von-sexuellem-missbrauch-eine-daueraufgabe-die-beharrlichkeit-und-nachhaltige-prozesse-braucht/",
"items": [
{
"itemType": "journalArticle",
"title": "Prävention von sexuellem Missbrauch: Eine Daueraufgabe, die Beharrlichkeit und nachhaltige Prozesse braucht",
"creators": [
{
"firstName": "Hans",
"lastName": "Zollner",
"creatorType": "author"
},
{
"firstName": "Jörg",
"lastName": "Fegert",
"creatorType": "author"
}
],
"date": "2021",
"language": "de-DE",
"libraryCatalog": "Herder",
"pages": "483-497",
"publicationTitle": "Stimmen der Zeit",
"shortTitle": "Prävention von sexuellem Missbrauch",
"url": "https://www.herder.de/stz/hefte/archiv/146-2021/7-2021/praevention-von-sexuellem-missbrauch-eine-daueraufgabe-die-beharrlichkeit-und-nachhaltige-prozesse-braucht/",
"volume": "146",
"attachments": [
{
"title": "Full Text PDF",
"url": "",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.herder.de/el/hefte/archiv/2021/7-2021/meine-zeit-mein-leben-begegnungen/",
"items": [
{
"itemType": "journalArticle",
"title": "Meine Zeit, mein Leben: Die Sonne",
"creators": [
{
"firstName": "Rudolf",
"lastName": "Walter",
"creatorType": "author"
},
{
"firstName": "Karlheinz A.",
"lastName": "Geißler",
"creatorType": "author"
}
],
"language": "de-DE",
"libraryCatalog": "Herder",
"publicationTitle": "einfach leben",
"shortTitle": "Meine Zeit, mein Leben",
"url": "https://www.herder.de/el/hefte/archiv/2021/7-2021/meine-zeit-mein-leben-begegnungen/",
"attachments": [
{
"title": "Full Text PDF",
"url": "",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.herder.de/ek/hefte/archiv/2021/3-2021/",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.herder.de/ek/suche/?s=Klassenzimmer",
"items": "multiple"
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://[^/]+\.universitypressscholarship\.com//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (doc.querySelector('.cite a')) {
return "book";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('h2.itemTitle > a');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) scrape(Object.keys(items).map(getDocumentURI));
});
}
else {
scrape([getDocumentURI(url)]);
}
}
function scrape(documentURIs) {
ZU.doPost(
'/rest/citation/export',
JSON.stringify({
citationExports: documentURIs.map(uri => ({
citationId: null,
documentUri: uri
})),
format: 'ris'
}),
function (text) {
var translator = Zotero.loadTranslator("import");
// RIS
translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7");
translator.setString(text);
translator.setHandler("itemDone", function (obj, item) {
item.tags = item.tags.filter(tag => tag != 'ER');
item.complete();
});
translator.translate();
},
{
'Content-Type': 'application/json'
}
);
}
function getDocumentURI(url) {
if (!url.includes('/view')) {
return false;
}
return url.replace(/[#?].*/, '').substring(url.indexOf('/view') + 5);
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://oxford.universitypressscholarship.com/view/10.1093/acprof:oso/9780199299591.001.0001/acprof-9780199299591",
"items": [
{
"itemType": "book",
"title": "The Absent-Minded Imperialists: Empire, Society, and Culture in Britain",
"creators": [
{
"lastName": "Porter",
"firstName": "Bernard",
"creatorType": "author"
}
],
"date": "2006",
"ISBN": "9780199299591",
"abstractNote": "The British empire was a huge enterprise. To foreigners, it more or less defined Britain in the 19th and early 20th centuries. Its repercussions in the wider world are still with us today. It also had a great impact on Britain herself: for example, on her economy, security, population, and eating habits. One might expect this to have been reflected in her society and culture. Indeed, this has now become the conventional wisdom: that Britain was steeped in imperialism domestically, which affected (or infected) almost everything Britons thought, felt, and did. This book examines this assumption critically against the broader background of contemporary British society. It argues that the empire had a far lower profile in Britain than it did abroad. Although Britain was an imperial nation in this period, she was never a genuine imperial society. As well as showing how this was possible, the book also discusses the implications of this attitude for Britain and her empire, and for the relationship between culture and imperialism more generally, bringing his study up to date by including the case of the present-day United States.",
"extra": "DOI: 10.1093/acprof:oso/9780199299591.001.0001",
"language": "eng",
"libraryCatalog": "University Press Scholarship",
"numPages": "512",
"place": "Oxford",
"publisher": "Oxford University Press",
"shortTitle": "The Absent-Minded Imperialists",
"url": "https://oxford.universitypressscholarship.com/10.1093/acprof:oso/9780199299591.001.0001/acprof-9780199299591",
"attachments": [],
"tags": [
{
"tag": "Britain"
},
{
"tag": "culture"
},
{
"tag": "diet"
},
{
"tag": "economy"
},
{
"tag": "imperialism"
},
{
"tag": "perceptions"
},
{
"tag": "population"
},
{
"tag": "society"
},
{
"tag": "spending"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://oxford.universitypressscholarship.com/search?siteToSearch=oso&q=test&searchBtn=Search&isQuickSearch=true",
"items": "multiple"
},
{
"type": "web",
"url": "https://fordham.universitypressscholarship.com/view/10.5422/fordham/9780823288359.001.0001/upso-9780823288359",
"items": [
{
"itemType": "book",
"title": "Working Alternatives: American and Catholic Experiments in Work and Economy",
"creators": [
{
"lastName": "Seitz",
"firstName": "John C.",
"creatorType": "editor"
},
{
"lastName": "Firer Hinze",
"firstName": "Christine",
"creatorType": "editor"
}
],
"date": "2020",
"ISBN": "9780823288359",
"abstractNote": "Popular interest in the kinds of conditions that make work productive, growing media attention to the grinding cycle of poverty, and the widening sense that consumption must become sustainable and just, all contribute to an atmosphere thirsty for humanistic economic analysis. This volume offers such analysis from a novel and generative diversity of vantage points, including religious and secular histories, theological ethics, and business management. In particular, Working Alternatives brings modern Roman Catholic forms of engaging with economic questions—embodied in the evolving set of documents that make up the area of “Catholic social thought”—into conversation with one another and with non-Catholic experiments in economic thought and practice. Clustered not by discipline but by their emphasis on either 1) new ways of seeing economic practice 2) new ways of valuing human activity, or 3) implementation of new ways of working, the volume’s essays facilitate the necessarily interdisciplinary thinking demanded by the complexities of economic sustainability and justice. Collectively, the works gathered here assert and test a challenging and far-reaching hypothesis: economic theories, systems, and practices—ways of conceiving, organizing and enacting work, management, supply, production, exchange, remuneration, wealth, and consumption—rely on basic, often unexamined, presumptions about human personhood, relations, and flourishing.",
"extra": "DOI: 10.5422/fordham/9780823288359.001.0001",
"language": "eng",
"libraryCatalog": "University Press Scholarship",
"numPages": "304",
"publisher": "Fordham University Press",
"shortTitle": "Working Alternatives",
"url": "https://fordham.universitypressscholarship.com/10.5422/fordham/9780823288359.001.0001/upso-9780823288359",
"attachments": [],
"tags": [
{
"tag": "Catholic social teaching"
},
{
"tag": "business"
},
{
"tag": "ethics"
},
{
"tag": "feminism"
},
{
"tag": "history"
},
{
"tag": "labor"
},
{
"tag": "management"
},
{
"tag": "religion"
},
{
"tag": "sustainability"
},
{
"tag": "theology"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://liverpool.universitypressscholarship.com/view/10.3828/liverpool/9781786941831.001.0001/upso-9781786941831",
"items": [
{
"itemType": "book",
"title": "Intimate Frontiers: A Literary Geography of the Amazon",
"creators": [
{
"lastName": "Martínez-Pinzón",
"firstName": "Felipe",
"creatorType": "editor"
},
{
"lastName": "Uriarte",
"firstName": "Javier",
"creatorType": "editor"
}
],
"date": "2019",
"ISBN": "9781786941831",
"abstractNote": "The diverse approaches to the Amazon collected in this book focus on stories of intimate, quotidian, interpersonal experiences (as opposed to those that take place between companies and nations) that, in turn, have resisted or else have been ignored by larger historical designs. This is why we propose a literary geography of the Amazon. In this space made out of historias, we will show the always already crafted, and hence political, ways in which this region has been represented in more “scientific”, often nationalizing histories. This includes, of course, understanding the “gigantic” discourses on Amazonia as rooted––if rarely discussed––in different quotidian, everyday experiences of a more intimate nature. The intimate interactions between one human being and another, or between men and animals, plants, or the natural space more generally as we see it, are not, as one might expect, comforting. Instead they are often disquieting, uncanny, or downright violent. This book argues that the Amazon’s “gigantism” lays not in its natural resources or opportunities for economic exploit, but in the richness that inhabits its archive of historias in the form of songs, oral histories, images, material culture, and texts.",
"extra": "DOI: 10.3828/liverpool/9781786941831.001.0001",
"language": "eng",
"libraryCatalog": "University Press Scholarship",
"numPages": "288",
"publisher": "Liverpool University Press",
"series": "American Tropics Towards a Literary Geography LUP",
"shortTitle": "Intimate Frontiers",
"url": "https://liverpool.universitypressscholarship.com/10.3828/liverpool/9781786941831.001.0001/upso-9781786941831",
"attachments": [],
"tags": [
{
"tag": "Amazonia"
},
{
"tag": "Archive of “historias”"
},
{
"tag": "Interactions between men and nature"
},
{
"tag": "Intimate or private encounters"
},
{
"tag": "Literary Geography"
},
{
"tag": "“Gigantic” discourses on Amazonia"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://(www\.)?qdl\.qa//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/archive/') && doc.querySelector('.page-title h1')) {
let type = text(doc, 'a[href*="source_content_type"]').toLowerCase();
switch (type) {
case 'archival file':
case 'ملف أرشيفي':
case 'archival item':
case 'مادة أرشيفية':
case 'letter book':
case 'مجلد مراسلات':
case 'book':
case 'كتب':
case 'volume':
case 'مجلد':
case 'diary':
case 'مذكرات':
case 'journal':
case 'دورية':
return 'book';
case 'letter':
case 'رسالة':
return 'letter';
case 'map':
case 'خرائط':
case 'plan':
case 'خريطة':
return 'map';
case 'photograph':
case 'صورة فوتوغرافية':
case 'drawing':
case 'رسم تخطيطي':
case 'illustration':
case 'رسم':
case 'painting':
case 'لوحة':
case 'print':
case 'مطبوعة':
case 'diagram':
case 'رسم توضيحي':
case 'رسم بياني':
return 'artwork';
case 'manuscript item':
case 'مادة من مخطوطة':
case 'manuscript':
case 'مخطوطة':
case 'مخطوطات':
case 'note':
case 'مذكرة':
return 'manuscript';
case 'report':
case 'تقرير':
return 'report';
case 'list':
case 'قائمة':
case 'statistical table':
case 'جدول إحصاء':
case 'certificate':
case 'شهادة':
case 'appendix':
case 'ملحق':
return 'document';
case 'newspaper clipping':
case 'قصاصة صحفية':
case 'newspaper article':
case 'مقال صحفي':
return 'newspaperArticle';
case 'journal article':
case 'مقال':
return 'journalArticle';
default:
Z.debug('Unmapped type: ' + type);
return 'document';
}
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('h3 > a[href*="/archive/"]');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
let item = new Zotero.Item(detectWeb(doc, url));
item.extra = '';
let iiifURL = attr(doc, 'a.iiif_link', 'href');
ZU.doGet(iiifURL, function (respText) {
let json = JSON.parse(respText);
item.title = json.label['@value'].replace(/(^')|('$)/g, '');
item.abstractNote = ZU.trimInternal(json.description['@value']);
for (let meta of json.metadata) {
addMetadata(item, meta.label['@value'], meta.value['@value']);
}
for (let labelElem of doc.querySelectorAll('dt')) {
let label = labelElem.innerText.trim();
let value = labelElem.nextSibling.innerText;
let rawValue = labelElem.nextSibling.innerHTML;
addMetadataFromPage(item, label, value, rawValue);
}
let pdfLink = doc.querySelector('.pdf-download a');
if (pdfLink) {
let pdfLinkText = pdfLink.innerText
.replace(/[٠-٩]/g, d => '٠١٢٣٤٥٦٧٨٩'.indexOf(d));
if ((pdfLinkText.match(/(\d+) (MB|ميجإبايت)/) || [])[1] < 100) {
item.attachments.push({
title: 'Full Text PDF',
mimeType: 'application/pdf',
url: pdfLink.href
});
}
else {
// if the PDF is huge, just send an empty URL to get the red X
// and explain in the attachment title field
item.attachments.push({
title: 'Full Text PDF (too large)',
mimeType: 'application/pdf',
url: ''
});
}
}
item.complete();
});
}
function addMetadata(item, label, value) {
switch (label) {
case 'Qatar Digital Library link':
case 'رابط مكتبة قطر الرقمية':
item.url = (value.match(/https?:\/\/[^"]+/) || [])[0];
break;
case 'Original held at':
case 'الأصل محفوظ في':
item.archive = value;
break;
case 'Archive reference':
case 'رقم الاستدعاء':
item.archiveLocation = value;
break;
case 'Original language':
case 'اللغة الأصلية':
item.language = value;
break;
case 'Date':
case 'التاريخ':
item.date = ZU.strToISO(value);
break;
case 'Arrangement':
case 'Physical characteristics':
case 'الترتيب':
case 'الخصائص المادية':
item.notes.push({ note: cleanNote(value) });
break;
case 'Type':
// Type metadata from page is better
break;
default:
Z.debug(`Unknown metadata: ${label} = ${value}`);
}
}
function addMetadataFromPage(item, label, value, rawValue) {
switch (label) {
case 'Content':
case 'المحتوى':
item.notes.push({ note: cleanNote(rawValue) });
break;
case 'Author':
case 'المؤلف':
if (value.includes('Please see item description')
|| value.startsWith('Unknown')) {
break;
}
item.creators.push({
lastName: value,
creatorType: 'author',
fieldMode: 1
});
break;
case 'Usage terms':
case 'شروط الاستخدام':
item.rights = value;
break;
case 'Degree coordinates':
case 'الإحداثيات':
item.notes.push({ note: `<h1>Map coordinates</h1>\n${rawValue}` });
break;
case 'Type':
case 'النوع':
item.extra += `Genre: ${value}\n`;
break;
}
}
function cleanNote(note) {
return note.trim()
.replace(/\n\s+/g, '\n')
.replace(/class="RightToLeft"/g, 'dir="rtl"')
.replace(/class="LeftToRight"/g, 'dir="ltr"');
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.qdl.qa/en/archive/81055/vdc_100085203762.0x000001",
"items": [
{
"itemType": "book",
"title": "The Transactions of the Bombay Geographical Society. From May 1857 to May 1858. (New Issue.) Edited by the Secretary. Volume XIV.",
"creators": [
{
"lastName": "Bombay Geographical Society",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "1857",
"abstractNote": "The Transactions of the Bombay Geographical Society. From May 1857 to May 1858. (New Issue.) Edited by the Secretary. Volume XIV. Publication details: Bombay: Smith, Taylor & Co., 1859. With maps and drawings.",
"archive": "British Library: India Office Records and Private Papers",
"archiveLocation": "ST 393, vol 14",
"extra": "Genre: Archival file",
"language": "English in Latin script",
"libraryCatalog": "Qatar Digital Library",
"rights": "Public Domain",
"url": "https://www.qdl.qa/en/archive/81055/vdc_100085203762.0x000001",
"attachments": [
{
"title": "Full Text PDF (too large)",
"mimeType": "application/pdf",
"url": ""
}
],
"tags": [],
"notes": [
{
"note": "This volume contains a table of contents giving headings and page references. There is an index to Volumes I-XVII (1836-1864) in a separate volume (ST 393, index)."
},
{
"note": "Dimensions: 220 x 140mm"
},
{
"note": "<p> <em>The Transactions of the Bombay Geographical Society. From May 1857 to May 1858. (New Issue.) Edited by the Secretary. Volume XIV.</em> </p><p>Publication details: Bombay: Smith, Taylor & Co., 1859.</p><p>With maps and drawings.</p>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.qdl.qa/en/archive/81055/vdc_100038378586.0x0000bf",
"items": [
{
"itemType": "letter",
"title": "Copy of a Letter from HM Envoy Extraordinary and Minister Plenipotentiary to Persia, Sir Harford Jones, to Brigadier-General Sir John Malcolm",
"creators": [
{
"lastName": "East India Company, the Board of Control, the India Office, or other British Government Department",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "1810-06-15",
"abstractNote": "Copy of a letter from HM Envoy Extraordinary and Minister Plenipotentiary to Persia [Iran], Sir Harford Jones, to the British Government of India's Envoy to Persia, Brigadier-General Sir John Malcolm, dated 15 June 1810, in reply to Malcolm's letter of 10 June 1810. The letter concerns Malcolm's admission to the camp of the court of the Shah of Persia. The letter also accounts for an incident in which Malcolm opened one of Jones's packets to the Resident at Bushire. The letter was enclosed in Jones's letter to the Secret Committee of the East India Company of 13 July 1810, which was received on 21 November 1810.",
"archive": "British Library: India Office Records and Private Papers",
"archiveLocation": "IOR/L/PS/9/68/48",
"extra": "Genre: Letter",
"language": "English in Latin script",
"libraryCatalog": "Qatar Digital Library",
"rights": "Open Government Licence",
"url": "https://www.qdl.qa/en/archive/81055/vdc_100038378586.0x0000bf",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [
{
"note": "<p>Copy of a letter from HM Envoy Extraordinary and Minister Plenipotentiary to Persia [Iran], Sir Harford Jones, to the British Government of India's Envoy to Persia, Brigadier-General Sir John Malcolm, dated 15 June 1810, in reply to Malcolm's letter of 10 June 1810. The letter concerns Malcolm's admission to the camp of the court of the Shah of Persia. The letter also accounts for an incident in which Malcolm opened one of Jones's packets to the Resident at Bushire. The letter was enclosed in Jones's letter to the Secret Committee of the East India Company of 13 July 1810, which was received on 21 November 1810.</p>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.qdl.qa/en/archive/81055/vdc_100000001878.0x000290",
"items": [
{
"itemType": "book",
"title": "‘Imaum of Muscat’s wish to return the “Prince Regent Yacht”’",
"creators": [
{
"lastName": "Āl Bū Sa‘īd, Sayyid Sa‘īd bin Sulṭān",
"creatorType": "author",
"fieldMode": 1
},
{
"lastName": "East India Company, the Board of Control, the India Office, or other British Government Department",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "1838-03-11",
"abstractNote": "The item consists of copies and extracts of correspondence and minutes enclosed with a political letter from the Government of Bombay [Mumbai] to the Court of Directors of the East India Company. The item relates to the Imaum [Imam] of Muscat’s (also written as Muskat) request that the yacht, the , recently gifted to him by King William IV, should be taken from him as he fears it will become spoiled if it remains in his possession. Prince Regent The item consists of copies and extracts of correspondence and minutes enclosed with a political letter from the Government of Bombay [Mumbai] to the Court of Directors of the East India Company. The item relates to the Imaum [Imam] of Muscat’s (also written as Muskat) request that the yacht, the , recently gifted to him by King William IV, should be taken from him as he fears it will become spoiled if it remains in his possession. The title page of the item contains the following references: ‘Bombay Political Department’, ‘P.C. [Previous Communication] 2540, Draft 81, 1840’, ‘Collection No. 17’, and ‘Examiner’s Office’.",
"archive": "British Library: India Office Records and Private Papers",
"archiveLocation": "IOR/F/4/1797/73821",
"extra": "Genre: Archival item",
"language": "English in Latin script",
"libraryCatalog": "Qatar Digital Library",
"rights": "Open Government Licence",
"url": "https://www.qdl.qa/en/archive/81055/vdc_100000001878.0x000290",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [
{
"note": "The papers are arranged in approximate chronological order from the front to the rear of the item. The item also contains a table of contents (f 307), noting ‘Page’, ‘Date’, ‘From’ and ‘To’."
},
{
"note": "Foliation: the foliation sequence for this description (used for referencing) commences at f 302, and terminates at f 307, as it is part of a larger physical volume; these numbers are written in pencil, are circled, and are located in the bottom right corner of the recto side of each folio. Pagination: the item also contains an original pagination sequence."
},
{
"note": "<p>The item consists of copies and extracts of correspondence and minutes enclosed with a political letter from the Government of Bombay [Mumbai] to the Court of Directors of the East India Company. The item relates to the Imaum [Imam] of Muscat’s (also written as Muskat) request that the yacht, the <em>Prince Regent</em> , recently gifted to him by King William IV, should be taken from him as he fears it will become spoiled if it remains in his possession.</p><p>The title page of the item contains the following references: ‘Bombay Political Department’, ‘P.C. [Previous Communication] 2540, Draft 81, 1840’, ‘Collection No. 17’, and ‘Examiner’s Office’.</p>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.qdl.qa/en/archive/81055/vdc_100032582181.0x000001",
"items": [
{
"itemType": "manuscript",
"title": "Sharḥ al-Mulakhkhaṣ fī al-hay’ah شرح الملخص في الهيئة Jurjānī, ‘Alī ibn Muḥammad جرجاني، علي بن محمد and al-Mulakhkhaṣ fī ‘ilm al-hay’ah al-basīṭah الملخص في علم الهيئة البسيطة Maḥmūd ibn Muḥammad al-Jaghmīnī محمود بن محمد الجغميني",
"creators": [],
"abstractNote": "Contents: (1) al-Jurjānī, ʿAlī ibn Muḥammad (الجرجاني، علي بن محمد), (شرح الملخص في الهيئة; ff 2r-65v); Sharḥ al-Mulakhkhaṣ fī al-hayʾah (1) al-Jurjānī, ʿAlī ibn Muḥammad (الجرجاني، علي بن محمد), (شرح الملخص في الهيئة; ff 2r-65v); (2) al-Jaghmīnī, Maḥmūd ibn Muḥammad (الجغميني، محمود بن محمد), (الملخص في علم الهيئة البسيطة; ff 66v-86r). al-Mulakhkhaṣ fī ‘ilm al-hay’ah al-basīṭah (2) al-Jaghmīnī, Maḥmūd ibn Muḥammad (الجغميني، محمود بن محمد), (الملخص في علم الهيئة البسيطة; ff 66v-86r).",
"archive": "British Library: Oriental Manuscripts",
"archiveLocation": "Add MS 23398",
"extra": "Genre: Manuscript",
"language": "Arabic in Arabic script",
"libraryCatalog": "Qatar Digital Library",
"rights": "Public Domain",
"url": "https://www.qdl.qa/en/archive/81055/vdc_100032582181.0x000001",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [
{
"note": "Material: Eastern laid paper Dimensions: 171 x 128 mm leaf [135 x 105 mm written] Foliation: British Museum foliation in pencil / India Office Library foliation stamped in black ink Ruling: No ruling visible; 21 lines per page; vertical spacing 16 lines per 10 cm Script:\nNaskh Script:\nInk: Black ink, with rubricated headings, diagrams in red and some overlinings in red Binding: Morocco leather Islamic binding without flap; blind tooled medallion, pendants and borders on both boards Condition: Folio(s) missing from beginning of volume; some water (oil?) damage especially towards end of volume Marginalia: Many by multiple hands (see e.g. ff 2-5) Seals: f. 86r"
},
{
"note": "<p>Contents:</p><ul><li>(1) al-Jurjānī, ʿAlī ibn Muḥammad (الجرجاني، علي بن محمد), <em>Sharḥ al-Mulakhkhaṣ fī al-hayʾah</em> (شرح الملخص في الهيئة; ff 2r-65v);</li><li>(2) al-Jaghmīnī, Maḥmūd ibn Muḥammad (الجغميني، محمود بن محمد), <em>al-Mulakhkhaṣ fī ‘ilm al-hay’ah al-basīṭah</em> (الملخص في علم الهيئة البسيطة; ff 66v-86r).</li></ul>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.qdl.qa/en/archive/81055/vdc_100098585763.0x000001",
"items": [
{
"itemType": "map",
"title": "The Transactions of the Bombay Geographical Society. From January 1863 to December 1864. (Edited by the Secretary.) Volume XVII.",
"creators": [
{
"lastName": "Bombay Geographical Society",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "1863",
"abstractNote": "The Transactions of the Bombay Geographical Society. From January 1863 to December 1864. (Edited by the Secretary.) Volume XVII. Publication details: Bombay: Printed at the Education Society's Press, Byculla, 1865. With maps, etc.",
"archive": "British Library: India Office Records and Private Papers",
"archiveLocation": "ST 393, vol 17",
"extra": "Genre: Map",
"language": "English in Latin script",
"libraryCatalog": "Qatar Digital Library",
"rights": "Public Domain",
"url": "https://www.qdl.qa/en/archive/81055/vdc_100085203917.0x000001",
"attachments": [
{
"title": "Full Text PDF (too large)",
"mimeType": "application/pdf",
"url": ""
}
],
"tags": [],
"notes": [
{
"note": "This volume contains a table of contents giving headings and page references, and two indexes. There is an index to Volumes I-XVII (1836-1864) in a separate volume (ST 393, index)."
},
{
"note": "Dimensions: 220 x 140mm"
},
{
"note": "<p>The map accompanies <em>The Transactions of the Bombay Geographical Society. From January 1863 to December 1864. (Edited by the Secretary.) Volume XVII</em> : Article XX (pages 302-320), entitled 'Report on Dhur Yaroo in the Shikarpoor Collectorate. By Assistant Surgeon J Lalor, BA.'</p><p>Map of the Dhar Yaro Plateau (referred to the accompanying article as 'Dhur Yaroo') in the Hala Range, Larkhana District, Sind [Sindh]. The map indicates hydrology and structures. Relief is indicated by hachures.</p><p>Scale: five miles = 62mm.</p>"
},
{
"note": "<h1>Map coordinates</h1>\nTop-left: 28° 29' 44.16\" N, 66° 25' 55.92\" E<br>Top-right: 28° 29' 44.16\" N, 71° 7' 32.88\" E<br>Bottom-left: 23° 32' 21.84\" N, 66° 25' 55.92\" E<br>Bottom-right: 23° 32' 21.84\" N, 71° 7' 32.88\" E<br>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.qdl.qa/en/archive/81055/vdc_100023299128.0x000001",
"items": [
{
"itemType": "artwork",
"title": "Minaret in Ormuz",
"creators": [],
"date": "1870",
"abstractNote": "Genre/Subject Matter: This photograph shows a dilapidated tower or minaret on the island of Hormuz off the coast of Bandar Abbas. To the left in the background several reed or palm-frond structures are visible while to the right there is a white-washed, one-storey building. Two European men wearing pith helmets are seated at the foot of the tower. A third man stands in the large central opening near the top of the tower while a fourth man's head is visible behind him. Inscriptions: Upper right, in pencil alongside image: '48', 'a' Below image, in pen: 'Minaret in Ormuz' Below pen inscription, in pencil: '(Hormuz)'",
"archive": "British Library: Visual Arts",
"archiveLocation": "Photo 355/1(48)",
"extra": "Genre: Photograph",
"language": "English in Latin script",
"libraryCatalog": "Qatar Digital Library",
"rights": "Public Domain",
"url": "https://www.qdl.qa/en/archive/81055/vdc_100023299128.0x000001",
"attachments": [
{
"title": "Full Text PDF (too large)",
"mimeType": "application/pdf",
"url": ""
}
],
"tags": [],
"notes": [
{
"note": "Dimensions: \n209 x 133 mm \nFormat: \nAlbumen print on paper \nCondition: \nThe print is in good condition with staining in the sky area, particularly in the upper left and lower left corner, and minor surface dirt throughout. \nFoliation: \n‘a’ (crossed out); ‘48’ \nProcess: \nAlbumen print"
},
{
"note": "<p> <em>Genre/Subject Matter:</em> </p><p>This photograph shows a dilapidated tower or minaret on the island of Hormuz off the coast of Bandar Abbas.</p><p>To the left in the background several reed or palm-frond structures are visible while to the right there is a white-washed, one-storey building.</p><p>Two European men wearing pith helmets are seated at the foot of the tower. A third man stands in the large central opening near the top of the tower while a fourth man's head is visible behind him.</p><p> <em>Inscriptions:</em> </p><p>Upper right, in pencil alongside image: '48', 'a'</p><p>Below image, in pen: 'Minaret in Ormuz'</p><p>Below pen inscription, in pencil: '(Hormuz)'</p>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.qdl.qa/en/archive/81055/vdc_100000000653.0x00017d",
"items": [
{
"itemType": "manuscript",
"title": "Miscellany of texts on gemstones, Ottoman sultans, and herbs",
"creators": [],
"date": "1595",
"abstractNote": "An anonymous notebook containing texts on gemstones, Ottoman sultans, and herbs, interspersed with notes and a prayer. Divisions of the text: (1) Lughat al-jawhar wa-asmāʾ al-jawāhir wa-manāfiʿihā (كتاب لغة الجوهر واسماء الجواهر ومنافعها, ff.1v-20v); A text enumerating different types of gemstones including rubies, emeralds, topaz, diamonds, turquoise, agate, magnetite, emery, and lapis lazuli, as well as pearls and coral. Their qualities, variants, colours, values, and medical uses are listed. The text is interrupted by a page of notes (f. 5r) comprising an account of Noah's ark, a calligraphic exercise, notes on the ascendant planets governing days of the week, and a list of herbal ingredients including opium, saffron and henbane. (2) Tawārīkh salṭanat IbnʿUthmān (تواريخ سلطنة ابن عثمان, f.21r-21v); A list of the Ottoman Sultans from ʿUthmān I, with notes of feats including the conquests of Istanbul, Aleppo and Cyprus. Accession dates and lengths of rule are given up to the end of Sultan Murād III's (مراد) reign in 1595. The accession of Muḥammad III (محمد, r. 1595-1603) is also recorded. A note of ingredients for manufacturing soap (f. 21v), followed by a continuation of (1) Lughat al-jawhar wa-asmāʾ al-jawāhir wa-manāfiʿihā (f. 22r), about magnetite; (3) Maʿrifat al-ʿushb (معرفة العشب, ff. 22v-25r); A text on the properties, origins, and values of different plants and herbs with instructions for their alchemical use. (4) f. 26v-26r: A prayer. The volume is decorated with a roughly-executed frontispiece in gold, green, red and blue, with lettering in red (f. 1v); and a diagram of a talismanic engraving in gold, green and blue, depicting a triangle enclosed in a circle with lettering indicated in red (f. 7v). Begins (f. 1r, lines 1-4): بسم الله الرحمن الرحيم وبه نستعين نكتب لغة الجوهر وأسماء الجواهر ومنافعها أول اسم عام لجميع الأحجر المعدنية النفيسة... Ends (f. 26r, lines 3-4): ارحمني وعلمني صلاحاً وادباً ومعرفة فاني امنت بوصاياك",
"archive": "British Library: Western Manuscripts",
"archiveLocation": "Sloane MS 2696",
"extra": "Genre: Manuscript",
"language": "Arabic in Arabic script",
"libraryCatalog": "Qatar Digital Library",
"rights": "Public Domain",
"url": "https://www.qdl.qa/en/archive/81055/vdc_100000000653.0x00017d",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [
{
"note": "Material: A mixture of Eastern and Western laid paper, some repurposed from larger sheets. Dimensions: 77 x 61 mm leaf [69 x 56 mm written] Foliation: British Museum foliation in pencil Ruling: No ruling for main text; perpendicular\nrulings at larger dimensions visible on some blank folios. 12-14 lines per page, variable. misṭarah Ruling: No ruling for main text; perpendicular\nrulings at larger dimensions visible on some blank folios. 12-14 lines per page, variable. Script: Naskh Ink: Black ink; calligraphic exercise on f. 5r in light brown ink Decoration: Frontispiece (f. 1r) and diagram (f. 7r); see Content. Binding: Vertical format British Museum brown leather binding gold-stamped with M. B. (Museum Brittanicum) Condition: Good, some dirt. Marginalia: Latin notes: 'Libellus de Gemmis; no. 41; Parandis medicamentis juxta dispositionem astrorum. (f. 27v) Seals: British Museum seals (ff. 1v, 26r, 27v)."
},
{
"note": "<p>An anonymous notebook containing texts on gemstones, Ottoman sultans, and herbs, interspersed with notes and a prayer.</p><p>Divisions of the text:</p><ul><li>(1) Lughat al-jawhar wa-asmāʾ al-jawāhir wa-manāfiʿihā (كتاب لغة الجوهر واسماء الجواهر ومنافعها, ff.1v-20v);</li></ul><p>A text enumerating different types of gemstones including rubies, emeralds, topaz, diamonds, turquoise, agate, magnetite, emery, and lapis lazuli, as well as pearls and coral. Their qualities, variants, colours, values, and medical uses are listed. The text is interrupted by a page of notes (f. 5r) comprising an account of Noah's ark, a calligraphic exercise, notes on the ascendant planets governing days of the week, and a list of herbal ingredients including opium, saffron and henbane.</p><ul><li>(2) Tawārīkh salṭanat IbnʿUthmān (تواريخ سلطنة ابن عثمان, f.21r-21v);</li></ul><p dir=\"rtl\">A list of the Ottoman Sultans from ʿUthmān I, with notes of feats including the conquests of Istanbul, Aleppo and Cyprus. Accession dates and lengths of rule are given up to the end of Sultan Murād III's (مراد) reign in 1595. The accession of Muḥammad III (محمد, r. 1595-1603) is also recorded. A note of ingredients for manufacturing soap (f. 21v), followed by a continuation of (1) Lughat al-jawhar wa-asmāʾ al-jawāhir wa-manāfiʿihā (f. 22r), about magnetite;</p><ul><li>(3) Maʿrifat al-ʿushb (معرفة العشب, ff. 22v-25r);</li></ul><p>A text on the properties, origins, and values of different plants and herbs with instructions for their alchemical use.</p><ul><li>(4) f. 26v-26r: A prayer.</li></ul><p>The volume is decorated with a roughly-executed frontispiece in gold, green, red and blue, with lettering in red (f. 1v); and a diagram of a talismanic engraving in gold, green and blue, depicting a triangle enclosed in a circle with lettering indicated in red (f. 7v).</p><p></p><p>Begins (f. 1r, lines 1-4):</p><p dir=\"rtl\">بسم الله الرحمن الرحيم وبه نستعين</p><p dir=\"rtl\">نكتب لغة الجوهر وأسماء الجواهر ومنافعها</p><p dir=\"rtl\">أول اسم عام لجميع الأحجر المعدنية</p><p dir=\"rtl\">النفيسة...</p><p></p><p>Ends (f. 26r, lines 3-4):</p><p dir=\"rtl\">ارحمني وعلمني صلاحاً وادباً ومعرفة</p><p dir=\"rtl\">فاني امنت بوصاياك</p><p></p>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.qdl.qa/en/archive/81055/vdc_100040139751.0x000023",
"items": [
{
"itemType": "newspaperArticle",
"title": "Coll 5/39 ‘Flights of RAF aeroplanes to Gilgit; flights of foreign aircraft over Gilgit and Chitral’",
"creators": [
{
"lastName": "Royal Air Force",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "1932-12-28",
"abstractNote": "The file is concerned with aviation in Gilgit, Hunza, Mir, and the surrounding area. It primarily covers three topics. The first topic is the matter of annual Royal Air Force (RAF) flights to Gilgit over the Himalayas in 1932, 1934, 1935, and 1936. It includes a report on the 1934 flight (see folios 132-141), a report on the 1935 flight (see folios 114-129), and a memorandum on proposals for the 1936 flight (see folios 106-107). A couple of sketch maps have been included to accompany these reports: see folios 104 and 117. Forty-five aerial photographic prints from the flight in November 1934 have also been included: see folios 159-203. Press excerpts of coverage of the first flight over the Himalayas in November 1932 can be found towards the back of the file: cuttings from 28 December 1932 (folios 151-154); 1932 (folio 146); 19 January 1932 (folio 145); and the 18 January 1933 (folio 144). It also includes a report of the visit by Air Marshall Sir Edgar Ludlow-Hewitt to Gilgit between 21 and 24 October 1936: see folios 98-99. The Times, The first topic is the matter of annual Royal Air Force (RAF) flights to Gilgit over the Himalayas in 1932, 1934, 1935, and 1936. It includes a report on the 1934 flight (see folios 132-141), a report on the 1935 flight (see folios 114-129), and a memorandum on proposals for the 1936 flight (see folios 106-107). A couple of sketch maps have been included to accompany these reports: see folios 104 and 117. Forty-five aerial photographic prints from the flight in November 1934 have also been included: see folios 159-203. Press excerpts of coverage of the first flight over the Himalayas in November 1932 can be found towards the back of the file: cuttings from 28 December 1932 (folios 151-154); 1932 (folio 146); 19 January 1932 (folio 145); and the 18 January 1933 (folio 144). It also includes a report of the visit by Air Marshall Sir Edgar Ludlow-Hewitt to Gilgit between 21 and 24 October 1936: see folios 98-99. The Times of India Mail Edition, The first topic is the matter of annual Royal Air Force (RAF) flights to Gilgit over the Himalayas in 1932, 1934, 1935, and 1936. It includes a report on the 1934 flight (see folios 132-141), a report on the 1935 flight (see folios 114-129), and a memorandum on proposals for the 1936 flight (see folios 106-107). A couple of sketch maps have been included to accompany these reports: see folios 104 and 117. Forty-five aerial photographic prints from the flight in November 1934 have also been included: see folios 159-203. Press excerpts of coverage of the first flight over the Himalayas in November 1932 can be found towards the back of the file: cuttings from 28 December 1932 (folios 151-154); 1932 (folio 146); 19 January 1932 (folio 145); and the 18 January 1933 (folio 144). It also includes a report of the visit by Air Marshall Sir Edgar Ludlow-Hewitt to Gilgit between 21 and 24 October 1936: see folios 98-99. The Near East and India, The first topic is the matter of annual Royal Air Force (RAF) flights to Gilgit over the Himalayas in 1932, 1934, 1935, and 1936. It includes a report on the 1934 flight (see folios 132-141), a report on the 1935 flight (see folios 114-129), and a memorandum on proposals for the 1936 flight (see folios 106-107). A couple of sketch maps have been included to accompany these reports: see folios 104 and 117. Forty-five aerial photographic prints from the flight in November 1934 have also been included: see folios 159-203. Press excerpts of coverage of the first flight over the Himalayas in November 1932 can be found towards the back of the file: cuttings from 28 December 1932 (folios 151-154); 1932 (folio 146); 19 January 1932 (folio 145); and the 18 January 1933 (folio 144). It also includes a report of the visit by Air Marshall Sir Edgar Ludlow-Hewitt to Gilgit between 21 and 24 October 1936: see folios 98-99. Birmingham Post, The first topic is the matter of annual Royal Air Force (RAF) flights to Gilgit over the Himalayas in 1932, 1934, 1935, and 1936. It includes a report on the 1934 flight (see folios 132-141), a report on the 1935 flight (see folios 114-129), and a memorandum on proposals for the 1936 flight (see folios 106-107). A couple of sketch maps have been included to accompany these reports: see folios 104 and 117. Forty-five aerial photographic prints from the flight in November 1934 have also been included: see folios 159-203. Press excerpts of coverage of the first flight over the Himalayas in November 1932 can be found towards the back of the file: cuttings from 28 December 1932 (folios 151-154); 1932 (folio 146); 19 January 1932 (folio 145); and the 18 January 1933 (folio 144). It also includes a report of the visit by Air Marshall Sir Edgar Ludlow-Hewitt to Gilgit between 21 and 24 October 1936: see folios 98-99. The second topic is reports of violations of the northern frontier of British India by foreign – mainly German and Russian – aircraft. Correspondence in the file documents investigations into these reports and subsequent action taken. The third topic is a reconnaissance of the Hunza Valley in 1937 to identify a site for a landing ground, the selection of Pasu, and the postponement of the project by the Government of India. The main correspondents are as follows: officials of the Foreign and Political Department of the Government of India (External Affairs Department from 1937), the Political Resident at Kashmir, the Political Agent at Gilgit, HM Consul General at Kashgar, and HM Minister at Kabul. Only occasional reference is made to the India Office in London. The file includes a divider which gives a list of correspondence references contained in the file by year. This is placed at the back of the correspondence.",
"archive": "British Library: India Office Records and Private Papers",
"archiveLocation": "IOR/L/PS/12/1993",
"extra": "Genre: Newspaper clipping",
"language": "English in Latin script",
"libraryCatalog": "Qatar Digital Library",
"rights": "Public Domain",
"url": "https://www.qdl.qa/en/archive/81055/vdc_100000000555.0x000213",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [
{
"note": "The papers are arranged in approximate chronological order from the rear to the front of the file. An envelope containing photographic prints has been filed at the rear of the file."
},
{
"note": "Foliation: the foliation sequence for this description commences at the inside front cover with 1, and terminates at the last folio with 205; these numbers are written in pencil, are circled, and are located in the top right corner of the recto side of each folio. A previous foliation sequence, which is also circled, has been superseded and therefore crossed out. Folio 158 was a conservation box, which was removed when the photographic prints (ff 159-203) were rehoused in polyester sheets. Folio number 158 is therefore no longer used."
},
{
"note": "<p>Newspaper cuttings from <em>The Times</em> newspaper article, 28 December 1932, covering a Royal Air Force demonstration flight over the Himalayas in November 1932. This folio includes the headline and a print of an aerial photograph – taken during the course of the flight – showing an RAF Hawker Hart flying against the mountains.</p><p>The flight did not fly over Mount Rakaposhi as claimed by the article.</p>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.qdl.qa/en/archive/81055/vdc_100023442788.0x000001",
"items": [
{
"itemType": "journalArticle",
"title": "Russia in Asia - Growing influence of Europe on Asia",
"creators": [
{
"lastName": "Revue des Deux Mondes",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "1858",
"abstractNote": "The file contains journal articles, correspondence, papers and memorandum relating to russian involvement in Asia 1850s-1860s and Pelly's mission to Herat and Afghanistan in 1760. The material relating to Russian involvement and influences in Asia primarily consists of journal articles, in french, from the journal looking at Russian expansion into both the Caucasus and the Far East, along with a newspaper article and handwritten observations made by Lewis Pelly. There is also an article in french from the same journal regarding French interests in Asia. Revue des deux mondes The material relating to Russian involvement and influences in Asia primarily consists of journal articles, in french, from the journal looking at Russian expansion into both the Caucasus and the Far East, along with a newspaper article and handwritten observations made by Lewis Pelly. There is also an article in french from the same journal regarding French interests in Asia. The material in the file relating to Lewis Pelly's mission to Herat and Afghanistan in 1860 includes correspondence with Sultan Ahmed Khan, Governor of Herat; and correspondence and records of conversations with Earl Canning, Viceroy and Governor General of India regarding his mission; matters relating to pay and reimbursement of expenses and observations on matters in Herat, the recent Persian War, and possible threats to India's north-western frontier. Also included in the file is a record of a conversation with Earl Canning regarding Pelly's career and the offer of the position of acting consul at Zanzibar, May 1861. File contains a title card, in Lewis Pelly's handwriting.",
"archive": "British Library: India Office Records and Private Papers",
"archiveLocation": "Mss Eur F126/21",
"extra": "Genre: Journal article",
"language": "English and French in Latin script",
"libraryCatalog": "Qatar Digital Library",
"rights": "Public Domain",
"url": "https://www.qdl.qa/en/archive/81055/vdc_100000001524.0x0003a0",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [
{
"note": "The contents of the file have been arranged chronologically, with the exception of the article at folios 14-27 which had originally been dated as 1860 but was actually printed in 1866. Enclosures to items have been placed directly after the item they are enclosed with."
},
{
"note": "Foliation: The file has been foliated using a pencil number enclosed in a circle located in the top right hand corner of the recto of each folio. There has been some renumbering of the file and former foliation numbers have been crossed through. The file contains three printed journal articles and each of these has their own original printed pagination sequences. Foliation anomaly: 27a"
},
{
"note": "<p>Printed article, in french, titled 'Politique de la France en Asie' (The politics of France in Asia).</p><p>The article recounts France's historic involvement in Asia alongside other European countries including Great Britain and the Netherlands; details the reception of French ambassadors and missionaries in various Asian countries, in particular China; and assesses the colonialisation projects undertaken by the French government, and their thoughts and attitudes more generally in regards to colonies.</p><p>The article was published in <em>Revue des Deux Mondes</em> in 1858.</p>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.qdl.qa/en/archive/81055/vdc_100075534085.0x0000cd",
"items": [
{
"itemType": "document",
"title": "Vol 10 Letters Outward",
"creators": [
{
"lastName": "East India Company, the Board of Control, the India Office, or other British Government Department",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "1806-11-03",
"abstractNote": "A volume of letters sent outwards. Most of the correspondence is from Nicholas Hankey Smith, Resident at Bushire, mainly to various company officials in India or elsewhere in the Gulf and surrounding regions. Correspondence is also frequently sent to Jaffer Ali Khan [Ja‘afar ‘Alī Khān], the Resident's native agent at Shiraz, along with various other Persian officials. From July 1808, correspondence is sent out by William Bruce, who becomes Acting Resident following the departure of Nicholas Hankey Smith. The volume also contains some letters inwards, mainly as enclosures to letters outward. The subject matter of the correspondence is the administration of the Bushire Residency, company trade and political matters in the Gulf. French diplomatic activity, and plans to advance on British India is also a frequent topic in the correspondence. The following abbreviations have been used: HCC - Honourable Company's Cruizer HMS - His Majesty's Ship",
"archive": "British Library: India Office Records and Private Papers",
"archiveLocation": "IOR/R/15/1/10",
"extra": "Genre: Certificate",
"language": "English, French and Arabic in Latin and Arabic script",
"libraryCatalog": "Qatar Digital Library",
"rights": "Open Government Licence",
"url": "https://www.qdl.qa/en/archive/81055/vdc_100000000159.0x0003de",
"attachments": [
{
"title": "Full Text PDF (too large)",
"mimeType": "application/pdf",
"url": ""
}
],
"tags": [],
"notes": [
{
"note": "This was once a single volume that has since been split into two parts. Part 1: ff.1-96 Part 2: ff.97-194"
},
{
"note": "2 volumes in one slipcase Foliation: The foliation sequence runs through two volumes as a continuous sequence. It commences at the title page of volume one and terminates at the last folio of volume two; these numbers are written in pencil, and are located in the top right corner of the recto side of each folio. The file contains the following foliation corrections: 1 is followed by 1A; 11 is followed by 11A; 117 is followed by 117A; 193 is followed by 193A. Pagination: An original pagination sequence also runs through both volumes between ff 1-194; these numbers are written in ink, and are located in the top outermost corner of each page. The pagination is intermittent in places as numbers have been lost as a result of damage to the folios. Condition: The volumes have suffered from extensive pest damage resulting in the loss of a significant amount of text, and as a result the content can be difficult to read in places."
},
{
"note": "<p>A certificate of the sale of <em>Gelaria Expirance</em> and her stores as a result of the vessel floundering. It was purchased by the late Shaik Nasser and is now in the possession of his son the Shiek Abdol Russool [Shaikh ‘Abd al-Rasūl Khān].</p>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.qdl.qa/%D8%A7%D9%84%D8%B9%D8%B1%D8%A8%D9%8A%D8%A9/archive/81055/vdc_100000001878.0x000290",
"items": [
{
"itemType": "book",
"title": "\"رغبة إمام مسقط في إعادة «يخت برينس ريجنت»\"",
"creators": [
{
"lastName": "Āl Bū Sa‘īd, Sayyid Sa‘īd bin Sulṭān",
"creatorType": "author",
"fieldMode": 1
},
{
"lastName": "شركة الهند الشرقية ولجنة البرلمان البريطاني لشئون الهند ومكتب الهند وإدارات الحكومة البريطانية الأخرى",
"creatorType": "author",
"fieldMode": 1
}
],
"abstractNote": "تتكون المادة من نسخ ومقتطفات من مراسلات ومحاضر مرفقة برسالة سياسية من حكومة بومباي [مومباي] إلى مجلس إدارة شركة الهند الشرقية. تتعلق المادة بطلب إمام مسقط بأن يؤخذ منه اليخت \"برينس ريجنت\" الذي أهداه إليه مؤخرًا الملك ويليام الرابع، لأنه يخاف من تضرره إذا ما بقى في حوزته. تتكون المادة من نسخ ومقتطفات من مراسلات ومحاضر مرفقة برسالة سياسية من حكومة بومباي [مومباي] إلى مجلس إدارة شركة الهند الشرقية. تتعلق المادة بطلب إمام مسقط بأن يؤخذ منه اليخت \"برينس ريجنت\" الذي أهداه إليه مؤخرًا الملك ويليام الرابع، لأنه يخاف من تضرره إذا ما بقى في حوزته. تحتوي صفحة عنوان المادة على المراجع التالية: \"الإدارة السياسية في بومباي\"، [مراسلات سابقة] ٢٥٤٠، المسوّدة ٨١، ١٨٤٠\"، \"المجموعة رقم ١٧\"، \"مكتب المفتش\".",
"archive": "المكتبة البريطانية: أوراق خاصة وسجلات من مكتب الهند",
"archiveLocation": "IOR/F/4/1797/73821",
"extra": "Genre: مادة أرشيفية",
"language": "الإنجليزية اللاتينية بالأحرف",
"libraryCatalog": "Qatar Digital Library",
"rights": "ترخيص حكومي عام",
"url": "https://www.qdl.qa/العربية/archive/81055/vdc_100000001878.0x000290",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [
{
"note": "الأوراق مرتبة ترتيبًا زمنيًا تقريبيًا من بداية المادة إلى نهايتها. تتضمن المادة أيضًا جدول محتويات (ص. ٣٠٧) يشير إلى \"الصفحة\"، \"التاريخ\"، \"من\"، \"إلى\"."
},
{
"note": "ترقيم الأوراق: يبدأ تسلسل ترقيم الأوراق لهذا الوصف (المُستخدم للأغراض المرجعية) على ص. ٣٠٢ وينتهي في ص. ٣٠٧، حيث أنه جزء من مجلد أكبر؛ هذه الأرقام مكتوبة بالقلم الرصاص ومحاطة بدائرة في أسفل يمين صفحة الوجه من كل ورقة. ترقيم الصفحات: تحتوي المادة أيضًا على تسلسل ترقيم صفحات أصلي."
},
{
"note": "<p>تتكون المادة من نسخ ومقتطفات من مراسلات ومحاضر مرفقة برسالة سياسية من حكومة بومباي [مومباي] إلى مجلس إدارة <a href=\"/العربية/قاموس-مصطلحات#شركة_الهند_الشرقية\" class=\"lexicon-term\">\nشركة الهند الشرقية <span class=\"lexicon-term-hover\" style=\"opacity: 1; left: 10%; right: auto;\">\nمؤسسة بريطانية كانت تدير المصالح التجارية والعسكرية في الهند وجنوب غرب آسيا </span>\n</a>. تتعلق المادة بطلب إمام مسقط بأن يؤخذ منه اليخت \"برينس ريجنت\" الذي أهداه إليه مؤخرًا الملك ويليام الرابع، لأنه يخاف من تضرره إذا ما بقى في حوزته.</p><p>تحتوي صفحة عنوان المادة على المراجع التالية: \"الإدارة السياسية في بومباي\"، [مراسلات سابقة] ٢٥٤٠، المسوّدة ٨١، ١٨٤٠\"، \"المجموعة رقم ١٧\"، \"مكتب المفتش\".</p>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.qdl.qa/%D8%A7%D9%84%D8%B9%D8%B1%D8%A8%D9%8A%D8%A9/archive/81055/vdc_100085203762.0x000001",
"items": [
{
"itemType": "book",
"title": "\"معاملات الجمعية الجغرافية في بومباي. من مايو ١٨٥٧ حتى مايو ١٨٥٨. (إصدار جديد.) تحرير السكرتير. المجلد XIV.\"",
"creators": [
{
"lastName": "Bombay Geographical Society",
"creatorType": "author",
"fieldMode": 1
}
],
"abstractNote": "\"معاملات الجمعية الجغرافية في بومباي. من مايو ١٨٥٧ حتى مايو ١٨٥٨. (إصدار جديد.) تحرير السكرتير. المجلد XIV.\" \"معاملات الجمعية الجغرافية في بومباي. من مايو ١٨٥٧ حتى مايو ١٨٥٨. (إصدار جديد.) تحرير السكرتير. المجلد XIV.\" بيانات النشر: بومباي: سميث، تايلور وشركاهما، ١٨٥٩. مع خرائط ورسومات.",
"archive": "المكتبة البريطانية: أوراق خاصة وسجلات من مكتب الهند",
"archiveLocation": "ST 393, vol 14",
"extra": "Genre: ملف أرشيفي",
"language": "الإنجليزية اللاتينية بالأحرف",
"libraryCatalog": "Qatar Digital Library",
"rights": "نطاق عام",
"url": "https://www.qdl.qa/العربية/archive/81055/vdc_100085203762.0x000001",
"attachments": [
{
"title": "Full Text PDF (too large)",
"mimeType": "application/pdf",
"url": ""
}
],
"tags": [],
"notes": [
{
"note": "يحتوي هذا المجلد على جدول محتويات يشمل عناوين ومراجع الصفحات. يوجد فهرس بالمجلدات I-XVII (١٨٣٦-١٨٦٤) في مجلد منفصل (ST 393, index)."
},
{
"note": "الأبعاد: ٢٢٠ × ١٤٠ مم"
},
{
"note": "<p>\"معاملات الجمعية الجغرافية في بومباي. من مايو ١٨٥٧ حتى مايو ١٨٥٨. (إصدار جديد.) تحرير السكرتير. المجلد XIV.\"</p><p>بيانات النشر: بومباي: سميث، تايلور وشركاهما، ١٨٥٩.</p><p>مع خرائط ورسومات.</p>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.qdl.qa/en/search/site/kuwait%2520iraq?retain-filters=1",
"items": "multiple"
}
]
/** END TEST CASES **/
100Martin Meyerhoff and Abe Jellinek^https?://www\.spiegel\.de//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (doc.querySelector('script[type="application/ld+json"]') &&
JSON.parse(text(doc, 'script[type="application/ld+json"]'))[0]['@type'] == 'NewsArticle') {
return "newspaperArticle";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('[data-search-results] article h2 > a, [data-area="article-teaser-list"] article h2 > a');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
let json = JSON.parse(text(doc, 'script[type="application/ld+json"]'))[0];
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
if (!Array.isArray(json.author)) {
json.author = [json.author];
}
item.creators = [];
item.creators.push(...cleanAuthorObjects(json.author));
item.url = json.url;
item.section = json.articleSection;
item.date = ZU.strToISO(json.dateModified || json.dateCreated);
item.ISSN = '2195-1349';
item.publicationTitle = 'Der Spiegel';
item.tags = [];
item.tags.push(...attr(doc, 'meta[name="news_keywords"]', 'content')
.split(', ').map(tag => ({ tag })));
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.itemType = "newspaperArticle";
trans.doWeb(doc, url);
});
}
function cleanAuthorObjects(authors) {
let creators = [];
for (let author of authors) {
if (author['@type'] == 'Organization') continue;
creators.push(ZU.cleanAuthor(author.name, 'author'));
}
return creators;
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.spiegel.de/politik/deutschland/cdu-parteitag-partei-im-koma-a-797954.html",
"items": [
{
"itemType": "newspaperArticle",
"title": "CDU-Parteitag: Partei im Koma",
"creators": [
{
"firstName": "Peter",
"lastName": "Müller",
"creatorType": "author"
}
],
"date": "2011-11-15",
"ISSN": "2195-1349",
"abstractNote": "Die CDU feiert sich in Leipzig selbst, doch in Wahrheit befindet sie sich in einem traurigen Zustand: Die Partei ist in ein kollektives Koma gefallen, politische Debatten finden kaum noch statt. Hauptverantwortlich dafür ist Angela Merkel.",
"language": "de",
"libraryCatalog": "www.spiegel.de",
"publicationTitle": "Der Spiegel",
"section": "Politik",
"shortTitle": "CDU-Parteitag",
"url": "https://www.spiegel.de/politik/deutschland/cdu-parteitag-partei-im-koma-a-797954.html",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Angela Merkel"
},
{
"tag": "Betreuungsgeld"
},
{
"tag": "CDU"
},
{
"tag": "Deutschland"
},
{
"tag": "Eurokrise"
},
{
"tag": "Merkels schwarz-gelbe Regierung 2009-2013"
},
{
"tag": "Mindestlohn"
},
{
"tag": "Politik"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.spiegel.de/politik/veb-energiewende-a-335a79ef-0002-0001-0000-000084789653?context=issue",
"items": [
{
"itemType": "newspaperArticle",
"title": "VEB Energiewende",
"creators": [
{
"firstName": "Alexander",
"lastName": "Neubacher",
"creatorType": "author"
},
{
"firstName": "Conny",
"lastName": "Neumann",
"creatorType": "author"
},
{
"firstName": "Steffen",
"lastName": "Winter",
"creatorType": "author"
}
],
"date": "2012-04-06",
"ISSN": "2195-1349",
"abstractNote": "Der Atomausstieg wird zur Subventionsmaschine für Industriebosse, Elektrokonzerne und findige Geschäftemacher. Die Kosten und Risiken sollen andere tragen - die Bürger.",
"language": "de",
"libraryCatalog": "www.spiegel.de",
"publicationTitle": "Der Spiegel",
"section": "Politik",
"url": "https://www.spiegel.de/politik/veb-energiewende-a-335a79ef-0002-0001-0000-000084789653",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Bosch"
},
{
"tag": "Politik"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.spiegel.de/thema/atomkraftwerke/",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.spiegel.de/international/europe/madame-non-and-monsieur-duracell-german-french-relations-on-the-rocks-a-700530.html",
"items": [
{
"itemType": "newspaperArticle",
"title": "Madame Non and Monsieur Duracell: German-French Relations On the Rocks",
"creators": [],
"date": "2010-06-14",
"ISSN": "2195-1349",
"abstractNote": "For decades, the German-French relationship has been the most important one in the European Union. These days, however, Chancellor Angela Merkel and President Nicolas Sarkozy can hardly stand each other. Why can't they just get along?",
"language": "en",
"libraryCatalog": "www.spiegel.de",
"publicationTitle": "Der Spiegel",
"section": "International",
"shortTitle": "Madame Non and Monsieur Duracell",
"url": "https://www.spiegel.de/international/europe/madame-non-and-monsieur-duracell-german-french-relations-on-the-rocks-a-700530.html",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Europe"
},
{
"tag": "German-French Relations"
},
{
"tag": "International"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.spiegel.de/geschichte/kinder-vom-kamper-see-grab-unter-wasser-a-1021273.html",
"items": [
{
"itemType": "newspaperArticle",
"title": "Kinder vom Kamper See: Grab unter Wasser",
"creators": [
{
"firstName": "Matthias",
"lastName": "Kneip",
"creatorType": "author"
}
],
"date": "2015-03-03",
"ISSN": "2195-1349",
"abstractNote": "Am 5. März 1945 stürzte ein Flugzeug in den Kamper See. An Bord: fast 80 deutsche Kinder auf der Flucht vor der Roten Armee. Eine Initiative will nun ihre Leichen vom Grund des Sees bergen.",
"language": "de",
"libraryCatalog": "www.spiegel.de",
"publicationTitle": "Der Spiegel",
"section": "Geschichte",
"shortTitle": "Kinder vom Kamper See",
"url": "https://www.spiegel.de/geschichte/kinder-vom-kamper-see-grab-unter-wasser-a-1021273.html",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Flucht und Vertreibung"
},
{
"tag": "Flugzeugunglücke"
},
{
"tag": "Geschichte"
},
{
"tag": "Weltkriege"
},
{
"tag": "Zweiter Weltkrieg"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.spiegel.de/kultur/musik/rolling-stones-mit-living-in-a-ghost-town-nummer-1-der-deutschen-charts-a-e0c06156-106c-4fc2-a0a7-8b5b794b7fe2",
"items": [
{
"itemType": "newspaperArticle",
"title": "Rolling Stones Nummer eins der deutschen Singlecharts - erstmals seit 1968",
"creators": [],
"date": "2020-07-03",
"ISSN": "2195-1349",
"abstractNote": "Sie sind die ältesten Künstler, die es jemals an die Spitze der deutschen Singlecharts geschafft haben: Mit \"Living In A Ghost Town\" sind die Rolling Stones nach 52 Jahren wieder die Nummer eins.",
"language": "de",
"libraryCatalog": "www.spiegel.de",
"publicationTitle": "Der Spiegel",
"section": "Kultur",
"url": "https://www.spiegel.de/kultur/musik/rolling-stones-mit-living-in-a-ghost-town-nummer-1-der-deutschen-charts-a-e0c06156-106c-4fc2-a0a7-8b5b794b7fe2",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Kultur"
},
{
"tag": "Musik"
},
{
"tag": "The Rolling Stones"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.spiegel.de/politik/deutschland/hans-georg-maassen-armin-laschets-riskante-abstandsregel-a-45f6b77f-f2d7-4c68-8210-2ec1571068be",
"items": [
{
"itemType": "newspaperArticle",
"title": "Hans-Georg Maaßen: Laschets riskante Abstandsregel",
"creators": [
{
"firstName": "Veit",
"lastName": "Medick",
"creatorType": "author"
}
],
"date": "2021-07-05",
"ISSN": "2195-1349",
"abstractNote": "Die Causa Maaßen liegt wie ein Fluch auf dem Wahlkampf des Unionskanzlerkandidaten. Wie viel Kritik ist nötig, wie viel womöglich schädlich? Armin Laschet wird dabei auch an seine Vorgängerin denken – und an die SPD.",
"language": "de",
"libraryCatalog": "www.spiegel.de",
"publicationTitle": "Der Spiegel",
"section": "Politik",
"shortTitle": "Hans-Georg Maaßen",
"url": "https://www.spiegel.de/politik/deutschland/hans-georg-maassen-armin-laschets-riskante-abstandsregel-a-45f6b77f-f2d7-4c68-8210-2ec1571068be",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Armin Laschet"
},
{
"tag": "Bundestagswahl 2021"
},
{
"tag": "CDU"
},
{
"tag": "Deutschland"
},
{
"tag": "Hans-Georg Maaßen"
},
{
"tag": "Politik"
},
{
"tag": "SPD"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.spiegel.de/karriere/meeting-beim-chef-zu-hause-wie-verhalte-ich-mich-richtig-tipps-von-den-karrierecoaches-a-a73e665e-a74e-46b7-8e6e-ae053d8b6f83",
"items": [
{
"itemType": "newspaperArticle",
"title": "Meeting beim Chef zu Hause: Wie verhalte ich mich richtig? - Tipps von den Karrierecoaches",
"creators": [
{
"firstName": "Dorothea",
"lastName": "Assig",
"creatorType": "author"
},
{
"firstName": "Dorothee",
"lastName": "Echter",
"creatorType": "author"
}
],
"date": "2021-07-05",
"ISSN": "2195-1349",
"abstractNote": "Die Chefin hat das Meeting mit dem Führungsteam auf ihre eigene Terrasse verlegt. Rebecca ist zum ersten Mal dabei und fragt sich: Welche Stolpersteine lauern hier? Und sollte ich ein Gastgeschenk mitbringen?",
"language": "de",
"libraryCatalog": "www.spiegel.de",
"publicationTitle": "Der Spiegel",
"section": "Job & Karriere",
"shortTitle": "Meeting beim Chef zu Hause",
"url": "https://www.spiegel.de/karriere/meeting-beim-chef-zu-hause-wie-verhalte-ich-mich-richtig-tipps-von-den-karrierecoaches-a-a73e665e-a74e-46b7-8e6e-ae053d8b6f83",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Büroalltag"
},
{
"tag": "Frauen und Karriere"
},
{
"tag": "Job & Karriere"
},
{
"tag": "Manager"
},
{
"tag": "Tipps vom Karrierecoach"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Philipp Zumstein^https?://(www\.)?patents\.google\.com//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2018 Philipp Zumstein
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, _url) {
// The subtree changes from multiple search results to a single result
// when clicking on one entry or back to the search results, and thus
// we have to monitor this.
Z.monitorDOMChanges(ZU.xpath(doc, '//search-app')[0]);
// Plural with "s" vs. singular without
if (ZU.xpathText(doc, '//search-app/search-results')) {
return "multiple";
}
if (ZU.xpathText(doc, '//search-app/search-result')
|| doc.querySelector('meta[name^="citation_patent_"]')) {
return "patent";
}
return false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
var urlParts = url.split('/?');
var jsonUrl = urlParts[0] + '/xhr/query?url=' + encodeURIComponent(urlParts[1]);
// Z.debug(jsonUrl);
ZU.doGet(jsonUrl, function (text) {
var json = JSON.parse(text);
var results = json.results.cluster[0].result;
var selectResults = {};
for (let i = 0; i < results.length; i++) {
selectResults[i] = ZU.cleanTags(results[i].patent.title);
}
Zotero.selectItems(selectResults, function (items) {
if (!items) return;
for (var i in items) {
let resultUrl = urlParts[0] + '/patent/' + results[i].patent.publication_number;
scrapeJson(results[i].patent, resultUrl);
}
});
});
}
else {
// Some old urls miss the language part, which we have to add before
// calling other urls.
var includeLanguageCode = url.match(/\/patent\/[^/?#]+\/[a-z][a-z]\b/);
if (!includeLanguageCode) {
url = url.replace(/(\/patent\/[^/?#]+)\b/, "$1/en");
}
var xhrUrl = url.replace('/patent/', '/xhr/result?id=patent/');
ZU.doGet(xhrUrl, function (text) {
// Z.debug(text);
var parser = new DOMParser();
var doc = parser.parseFromString(text, "text/html");
scrape(doc, url);
});
}
}
function scrape(doc, url) {
var metadata = doc.querySelectorAll('*[itemprop]');
var json = {};
for (let i = 0; i < metadata.length; i++) {
let label = metadata[i].getAttribute('itemprop');
// We stop before going into the publications, related entries etc.
if (label == 'description' || label == 'pubs') break;
let value = microdataValue(metadata[i], true);
if (label && value) {
if (metadata[i].getAttribute('repeat') === '') {
if (!json[label]) json[label] = [];
json[label].push(value);
}
else if (!json[label]) {
// don't overwrite values
json[label] = value;
// else Z.debug(label)
}
}
}
scrapeJson(json, url, doc);
}
function microdataValue(propertyNode, firstCall) {
if (propertyNode.hasAttribute("itemscope") && firstCall) {
var metadata = propertyNode.querySelectorAll('*[itemprop]');
var innerJson = {};
for (let i = 0; i < metadata.length; i++) {
let label = metadata[i].getAttribute('itemprop');
let value = microdataValue(metadata[i], false);
innerJson[label] = value;
}
return innerJson;
}
switch (propertyNode.tagName.toLowerCase()) {
case "meta":
return propertyNode.getAttribute("content");
case "audio":
case "embed":
case "iframe":
case "img":
case "source":
case "track":
case "video":
return propertyNode.getAttribute("src");
case "a":
case "area":
case "link":
return propertyNode.getAttribute("href");
case "object":
return propertyNode.getAttribute("data");
case "data":
case "meter":
return propertyNode.getAttribute("value");
case "time":
return propertyNode.getAttribute("datetime");
case "span":// non-standard, but can occur
if (propertyNode.childNodes.length > 1 && propertyNode.getAttribute("content")) {
return propertyNode.getAttribute("content");
}
return propertyNode.textContent;
default:
return propertyNode.textContent;
}
}
function scrapeJson(json, url, doc) {
// Z.debug(json);
var item = new Zotero.Item('patent');
item.title = ZU.cleanTags(json.title).replace(/\.\s*$/, '');
if (json.inventor) {
if (typeof json.inventor === 'string') json.inventor = [json.inventor];
for (let i = 0; i < json.inventor.length; i++) {
item.creators.push(ZU.cleanAuthor(json.inventor[i], 'inventor'));
}
}
item.issueDate = json.publicationDate || json.publication_date;
item.filingDate = json.filingDate || json.filing_date;
item.patentNumber = json.publicationNumber || json.publication_number;
if (json.assigneeOriginal && !(typeof json.assigneeOriginal === 'string')) {
item.assignee = json.assigneeOriginal.join(', '); // or assigneeCurrent
}
else {
item.assignee = json.assigneeOriginal || json.assignee;
}
item.applicationNumber = (json.applicationNumber || '').replace(/[/,]/g, '');
// This status is sometimes not what would be expected
// if (json.legalStatusIfi) item.legalStatus = json.legalStatusIfi.status;
item.country = json.countryCode;
if (item.country) item.issuingAuthority = getPatentOffice(item.country);
item.language = json.primaryLanguage;
// Keywords
if (json.priorArtKeywords) {
for (let i = 0; i < json.priorArtKeywords.length; i++) {
item.tags.push(json.priorArtKeywords[i]);
}
}
// Abstract
if (json.abstract) {
item.abstractNote = json.abstract.content;
}
else if (doc) {
item.abstractNote = attr(doc, 'meta[name="description"]', 'content');
}
// Classifications
if (json.cpcs) {
var classifications = [];
for (let i = 0; i < json.cpcs.length; i++) {
if (json.cpcs[i].Leaf && !json.cpcs[i].cpcs) {
classifications.push(json.cpcs[i].Code + ': ' + json.cpcs[i].Description);
}
}
if (classifications.length > 0) {
item.notes.push({ note: "<h2>Classifications</h2>\n" + classifications.join("<br/>\n") });
}
}
item.url = url;
let pdfurl = json.pdfLink || json.pdf;
if (pdfurl) {
// Relative links don't resolve correctly in all cases. Let's make sure we're getting this all from
// the right place on the google API
if (!pdfurl.includes("https://")) {
pdfurl = "https://patentimages.storage.googleapis.com/" + pdfurl;
}
// Z.debug(pdfurl);
item.attachments.push({
url: pdfurl,
title: "Full Text PDF",
mimeType: "application/pdf"
});
}
item.complete();
}
function getPatentOffice(number) {
// get the PatentOffice from the first two letters of the patentNumber
var country;
if (number.indexOf('EP') === 0) {
country = 'European Union';
}
else if (number.indexOf('US') === 0) {
country = 'United States';
}
else if (number.indexOf('WO') === 0) {
country = 'World Intellectual Property Organization';
}
else if (number.indexOf('CN') === 0) {
country = 'China';
}
else if (number.indexOf('CA') === 0) {
country = 'Canada';
}
else if (number.indexOf('DE') === 0) {
country = 'Germany';
}
return country;
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://patents.google.com/?q=book&oq=book",
"defer": true,
"items": "multiple"
},
{
"type": "web",
"url": "https://patents.google.com/patent/US1065211",
"items": [
{
"itemType": "patent",
"title": "Bottle-stopper",
"creators": [
{
"firstName": "William T.",
"lastName": "Brook",
"creatorType": "inventor"
}
],
"issueDate": "1913-06-17",
"applicationNumber": "US71306412A",
"assignee": "William T Brook",
"country": "US",
"filingDate": "1912-08-03",
"issuingAuthority": "United States",
"patentNumber": "US1065211A",
"url": "https://patents.google.com/patent/US1065211/en",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "bottle"
},
{
"tag": "neck"
},
{
"tag": "stopper"
},
{
"tag": "wire"
},
{
"tag": "yoke"
}
],
"notes": [
{
"note": "<h2>Classifications</h2>\nB01L3/5021: Test tubes specially adapted for centrifugation purposes<br/>\nB65D39/04: Cup-shaped plugs or like hollow flanged members"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://patents.google.com/patent/US1120656",
"items": [
{
"itemType": "patent",
"title": "Push-pin",
"creators": [
{
"firstName": "Jonathan A.",
"lastName": "Hunt",
"creatorType": "inventor"
}
],
"issueDate": "1914-12-08",
"applicationNumber": "US81214214A",
"assignee": "HUNT SPECIALTY Manufacturing Co",
"country": "US",
"filingDate": "1914-01-14",
"issuingAuthority": "United States",
"patentNumber": "US1120656A",
"url": "https://patents.google.com/patent/US1120656/en",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "extending"
},
{
"tag": "head"
},
{
"tag": "hollow"
},
{
"tag": "pin"
},
{
"tag": "push"
}
],
"notes": [
{
"note": "<h2>Classifications</h2>\nF16B15/00: Nails; Staples<br/>\nY10T24/4696: Pin or separate essential cooperating device therefor having distinct head structure"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://patents.google.com/patent/US7123498",
"items": [
{
"itemType": "patent",
"title": "Non-volatile memory device",
"creators": [
{
"firstName": "Hisatada",
"lastName": "Miyatake",
"creatorType": "inventor"
},
{
"firstName": "Kohki",
"lastName": "Noda",
"creatorType": "inventor"
},
{
"firstName": "Toshio",
"lastName": "Sunaga",
"creatorType": "inventor"
},
{
"firstName": "Hiroshi",
"lastName": "Umezaki",
"creatorType": "inventor"
},
{
"firstName": "Hideo",
"lastName": "Asano",
"creatorType": "inventor"
},
{
"firstName": "Koji",
"lastName": "Kitamura",
"creatorType": "inventor"
}
],
"issueDate": "2006-10-17",
"applicationNumber": "US10964352",
"assignee": "International Business Machines Corp",
"country": "US",
"filingDate": "2004-10-12",
"issuingAuthority": "United States",
"language": "en",
"patentNumber": "US7123498B2",
"url": "https://patents.google.com/patent/US7123498/en",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "magneto resistive"
},
{
"tag": "memory"
},
{
"tag": "memory cells"
},
{
"tag": "mtj"
},
{
"tag": "parallel"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://patents.google.com/patent/US4390992#v=onepage&q&f=false",
"items": [
{
"itemType": "patent",
"title": "Plasma channel optical pumping device and method",
"creators": [
{
"firstName": "O'Dean P.",
"lastName": "Judd",
"creatorType": "inventor"
}
],
"issueDate": "1983-06-28",
"applicationNumber": "US06284151",
"assignee": "US Department of Energy",
"country": "US",
"filingDate": "1981-07-17",
"issuingAuthority": "United States",
"patentNumber": "US4390992A",
"url": "https://patents.google.com/patent/US4390992/en#v=onepage&q&f=false",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "electrodes"
},
{
"tag": "gaseous"
},
{
"tag": "laser"
},
{
"tag": "lasing medium"
},
{
"tag": "sub"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://patents.google.com/?q=ordinateur&oq=ordinateur",
"defer": true,
"items": "multiple"
},
{
"type": "web",
"url": "https://patents.google.com/patent/EP1808414A1/fr?oq=water",
"items": [
{
"itemType": "patent",
"title": "Installation pour le recyclage d'eaux sanitaires",
"creators": [
{
"firstName": "Michel",
"lastName": "Billon",
"creatorType": "inventor"
}
],
"issueDate": "2007-07-18",
"applicationNumber": "EP06447010A",
"assignee": "Michel Billon",
"country": "EP",
"filingDate": "2006-01-16",
"issuingAuthority": "European Union",
"language": "fr",
"patentNumber": "EP1808414A1",
"url": "https://patents.google.com/patent/EP1808414A1/fr?oq=water",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "filter"
},
{
"tag": "installation"
},
{
"tag": "tank"
},
{
"tag": "valve"
},
{
"tag": "water"
}
],
"notes": [
{
"note": "<h2>Classifications</h2>\nE03D5/003: Grey water flushing systems<br/>\nE03B1/04: Methods or layout of installations for water supply for domestic or like local supply<br/>\nE03B1/042: Details thereof, e.g. valves or pumps<br/>\nE03D5/006: Constructional details of cisterns for using greywater<br/>\nC02F2103/002: Grey water, e.g. from clothes washers, showers or dishwashers<br/>\nC02F2209/005: Processes using a programmable logic controller [PLC]<br/>\nC02F2209/42: Liquid level<br/>\nE03B2001/045: Greywater supply systems using household water<br/>\nE03B2001/047: Greywater supply systems using rainwater<br/>\nY02A20/108: Rainwater harvesting<br/>\nY02A20/148: Water conservation; Efficient water supply; Efficient water use using grey water using household water from wash basins or showers<br/>\nY02A20/30: Relating to industrial water supply, e.g. used for cooling"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://patents.google.com/patent/EP0011951A1/en?oq=water",
"items": [
{
"itemType": "patent",
"title": "Cold-water soluble tamarind gum, process for its preparation and its application in sizing textile warp",
"creators": [
{
"firstName": "Joseph S.",
"lastName": "Racciato",
"creatorType": "inventor"
}
],
"issueDate": "1980-06-11",
"applicationNumber": "EP79302482A",
"assignee": "Merck and Co Inc",
"country": "EP",
"filingDate": "1979-11-06",
"issuingAuthority": "European Union",
"language": "en",
"patentNumber": "EP0011951A1",
"url": "https://patents.google.com/patent/EP0011951A1/en?oq=water",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "cold"
},
{
"tag": "soluble"
},
{
"tag": "tamarind gum"
},
{
"tag": "tkp"
},
{
"tag": "water"
}
],
"notes": [
{
"note": "<h2>Classifications</h2>\nD06M15/01: Treating fibres, threads, yarns, fabrics, or fibrous goods made from such materials, with macromolecular compounds; Such treatment combined with mechanical treatment with natural macromolecular compounds or derivatives thereof<br/>\nC08B37/0087: Glucomannans or galactomannans; Tara or tara gum, i.e. D-mannose and D-galactose units, e.g. from Cesalpinia spinosa; Tamarind gum, i.e. D-galactose, D-glucose and D-xylose units, e.g. from Tamarindus indica; Gum Arabic, i.e. L-arabinose, L-rhamnose, D-galactose and D-glucuronic acid units, e.g. from Acacia Senegal or Acacia Seyal; Derivatives thereof"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://patents.google.com/patent/US4748058",
"items": [
{
"itemType": "patent",
"title": "Artificial tree",
"creators": [
{
"firstName": "Chester L. Craig",
"lastName": "Jr",
"creatorType": "inventor"
}
],
"issueDate": "1988-05-31",
"abstractNote": "An artificial tree assembly, and a tree constructed therefrom, are provided. The assembly comprises a collapsible three-piece pole; a base member formed by the bottom of a box for storing the tree assembly and including a pole support member secured thereto for supporting the pole; and a plurality of limb sections and interconnecting garlands. The limb-sections each comprise a central ring portion and a plurality of limb members extending radially outwardly from the central ring portions. The ring portions of the limb sections are stacked, when not in use, on the pole support member and are disposed, in use, along the length of pole in spaced relationship therealong. The garlands interconnect the limb portions so that as the ring portions are lifted, from the top, from the stacked positions thereof on the pole support member and slid along the pole, the garlands between adjacent limb section are tensioned, in turn, and thus serve to lift the next adjacent limb section until the tree is fully erected.",
"applicationNumber": "US07013056",
"assignee": "Craig Jr Chester L",
"country": "US",
"filingDate": "1987-02-10",
"issuingAuthority": "United States",
"patentNumber": "US4748058A",
"url": "https://patents.google.com/patent/US4748058/en",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "artificial"
},
{
"tag": "garlands"
},
{
"tag": "limb"
},
{
"tag": "members"
},
{
"tag": "pole"
}
],
"notes": [
{
"note": "<h2>Classifications</h2>\nA47G33/06: Artificial Christmas trees"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://patents.google.com/patent/US5979603?oq=tree",
"items": [
{
"itemType": "patent",
"title": "Portable tree stand having fiber composite platform",
"creators": [
{
"firstName": "Ronald R.",
"lastName": "Woller",
"creatorType": "inventor"
}
],
"issueDate": "1999-11-09",
"applicationNumber": "US08369434",
"assignee": "Summit Specialties Inc",
"country": "US",
"filingDate": "1995-01-06",
"issuingAuthority": "United States",
"patentNumber": "US5979603A",
"url": "https://patents.google.com/patent/US5979603/en?oq=tree",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "fibers"
},
{
"tag": "lightweight"
},
{
"tag": "pair"
},
{
"tag": "reinforcing fibers"
},
{
"tag": "tree"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://patents.google.com/patent/US2970959",
"items": [
{
"itemType": "patent",
"title": "Composition and method for inhibiting scale",
"creators": [
{
"firstName": "Loyd W.",
"lastName": "Jones",
"creatorType": "inventor"
}
],
"issueDate": "1961-02-07",
"applicationNumber": "US742486A",
"assignee": "Pan American Petroleum Corp",
"country": "US",
"filingDate": "1958-06-17",
"issuingAuthority": "United States",
"patentNumber": "US2970959A",
"url": "https://patents.google.com/patent/US2970959/en",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "cmc"
},
{
"tag": "pellet"
},
{
"tag": "scale"
},
{
"tag": "sodium"
},
{
"tag": "water"
}
],
"notes": [
{
"note": "<h2>Classifications</h2>\nC02F5/105: Treatment of water with complexing chemicals or other solubilising agents for softening, scale prevention or scale removal, e.g. adding sequestering agents using organic substances combined with inorganic substances<br/>\nY10S507/927: Well cleaning fluid"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://patents.google.com/patent/US6239091",
"items": [
{
"itemType": "patent",
"title": "Machine dishwashing compositions with a polymer having cationic monomer units",
"creators": [
{
"firstName": "Alla",
"lastName": "Tartakovsky",
"creatorType": "inventor"
},
{
"firstName": "Joseph Oreste",
"lastName": "Carnali",
"creatorType": "inventor"
},
{
"firstName": "John Robert",
"lastName": "Winters",
"creatorType": "inventor"
}
],
"issueDate": "2001-05-29",
"applicationNumber": "US09075548",
"assignee": "Lever Brothers Co",
"country": "US",
"filingDate": "1998-05-11",
"issuingAuthority": "United States",
"patentNumber": "US6239091B1",
"url": "https://patents.google.com/patent/US6239091/en",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "acid"
},
{
"tag": "alkyl"
},
{
"tag": "cationic"
},
{
"tag": "polymer"
},
{
"tag": "radical"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://patents.google.com/patent/US20110172136",
"items": [
{
"itemType": "patent",
"title": "Detergent composition with hydrophilizing soil-release agent and methods for using same",
"creators": [
{
"firstName": "Tobias Johannes",
"lastName": "Fütterer",
"creatorType": "inventor"
},
{
"firstName": "Lawrence Alan",
"lastName": "HOUGH",
"creatorType": "inventor"
},
{
"firstName": "Robert Lee",
"lastName": "Reierson",
"creatorType": "inventor"
}
],
"issueDate": "2011-07-14",
"abstractNote": "Laundry detergent compositions that provide soil release benefits to all fabric comprising an organophosphorus soil release agents and optional non-cotton secondary soil release agents. The present invention further relates to a method for providing soil release benefits to cotton fabric by contacting cotton articles with a water soluble and/or dispersible organophosphorus material. The contacting can be during washing or by pretreating by applying the composition directly to stains or by presoaking the clothing in the composition prior to washing. The present invention further relates to providing soil release benefits to all fabric in the laundry wash load in the presence of a bleaching agent.",
"applicationNumber": "US13071376",
"assignee": "Rhodia Operations SAS",
"country": "US",
"filingDate": "2011-03-24",
"issuingAuthority": "United States",
"language": "en",
"patentNumber": "US20110172136A1",
"url": "https://patents.google.com/patent/US20110172136/en",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "alkyl"
},
{
"tag": "alkyleneoxy"
},
{
"tag": "composition"
},
{
"tag": "organophosphorus"
},
{
"tag": "poly"
}
],
"notes": [
{
"note": "<h2>Classifications</h2>\nC11D3/0036: Soil deposition preventing compositions; Antiredeposition agents<br/>\nC11D1/342: Phosphonates; Phosphinates; Phosphonites<br/>\nC11D1/345: Phosphates; Phosphites<br/>\nC11D11/0017: \"Soft\" surfaces, e.g. textiles<br/>\nC11D3/361: Phosphonates, phosphinates, phosphonites<br/>\nC11D3/362: Phosphates, phosphites<br/>\nC11D3/3784: (Co)polymerised monomers containing phosphorus"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://patents.google.com/patent/US3625104A/en",
"items": [
{
"itemType": "patent",
"title": "Water key for brass wind musical instruments",
"creators": [
{
"firstName": "Raymond A.",
"lastName": "Amado",
"creatorType": "inventor"
}
],
"issueDate": "1971-12-07",
"abstractNote": "A FLUID RELEASE VALVE FOR BRASS WIND INSTRUMENTS (CORNETS, TRUMPETS, TROMBONES AND THE LIKE) COMMONLY KNOWN AS A WATER KEY BUT DISTINCT AND DIFFERENT FROM TTHE CONVENTIONAL PIVOTED LEVER-TYPE WATER KEY. IT COMPRISES A VALVE BODY EMBODYING A CYLINDER AND AN ENCLOSED SPRING-LOADED PISTON WHICH RECIPROCATES IN THE CYLINDER AND WHICH SIMULTANEOUSLY OPENS AND CLOSES DIAMETRICALLY OPPOSITE FLUID INLET AND DISCHARGE PORTS AND HAS A PUSH-BUTTON-TYPE FINGER-PIECE AT A READILY ACCESSIBLE END OF THE VALVE BODY.",
"assignee": "Raymond A Amado",
"country": "US",
"filingDate": "1970-05-12",
"issuingAuthority": "United States",
"patentNumber": "US3625104A",
"url": "https://patents.google.com/patent/US3625104A/en",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "piston"
},
{
"tag": "port"
},
{
"tag": "sleeve"
},
{
"tag": "valve"
},
{
"tag": "water key"
}
],
"notes": [
{
"note": "<h2>Classifications</h2>\nG10D7/10: Lip-reed wind instruments, i.e. using the vibration of the musician's lips, e.g. cornets, trumpets, trombones or French horns"
}
],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Avram Lyon, Michael Berkowitz, Sebastian Karcher^https?://\w+\.reuters\.com//*
***** BEGIN LICENSE BLOCK *****
Reuters Translator
Copyright © 2011-2021 Avram Lyon, Sebastian Karcher, and Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (attr(doc, 'meta[property="og:type"]', 'content') == 'article') {
return "newspaperArticle";
}
else if (url.includes('/search/') && getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('h3.search-result-title>a');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) {
return;
}
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
item.creators = [];
let authors = doc.querySelectorAll('[rel="author"]');
for (let author of authors) {
item.creators.push(authorFix(author.textContent));
}
item.publicationTitle = "Reuters";
item.tags = attr(doc, 'meta[property$="article:tag"]', 'content')
.split(/\s*[/,]\s*/).map(tag => ({ tag }));
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.itemType = detectWeb(doc);
trans.doWeb(doc, url);
});
}
function authorFix(author) {
// Sometimes we have "By Author"
author = author.replace(/^\s*by/i, '');
var cleaned = Zotero.Utilities.cleanAuthor(author, "author");
// If we have only one name, set the author to one-name mode
if (!cleaned.firstName) {
cleaned.fieldMode = 1;
}
else {
// We can check for all lower-case and capitalize if necessary
// All-uppercase is handled by cleanAuthor
cleaned.firstName = (cleaned.firstName == cleaned.firstName.toLowerCase()) ? Zotero.Utilities.capitalizeTitle(cleaned.firstName, true) : cleaned.firstName;
cleaned.lastName = (cleaned.lastName == cleaned.lastName.toLowerCase()) ? Zotero.Utilities.capitalizeTitle(cleaned.lastName, true) : cleaned.lastName;
}
return cleaned;
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.reuters.com/article/us-eurozone/europe-could-be-in-worst-hour-since-ww2-merkel-idUSTRE7AC15K20111114",
"items": [
{
"itemType": "newspaperArticle",
"title": "Europe could be in worst hour since WW2: Merkel",
"creators": [],
"date": "2011-11-14T00:16:09Z",
"abstractNote": "Prime Minister-designate Mario Monti meets the leaders of Italy's biggest two parties on Tuesday to discuss the \"many sacrifices\" needed to reverse a collapse in market confidence that is driving an ever deepening euro zone debt crisis.",
"language": "en",
"libraryCatalog": "www.reuters.com",
"publicationTitle": "Reuters",
"section": "Business News",
"shortTitle": "Europe could be in worst hour since WW2",
"url": "https://www.reuters.com/article/us-eurozone-idUSTRE7AC15K20111114",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Debt"
},
{
"tag": "Diplomacy"
},
{
"tag": "EUROZONE"
},
{
"tag": "Economic News"
},
{
"tag": "Euro Zone as a Whole"
},
{
"tag": "Europe"
},
{
"tag": "European Union"
},
{
"tag": "Fixed Income Markets"
},
{
"tag": "Foreign Policy"
},
{
"tag": "Government"
},
{
"tag": "Government Finances"
},
{
"tag": "Greece"
},
{
"tag": "Italy"
},
{
"tag": "National Government Debt"
},
{
"tag": "Politics"
},
{
"tag": "US"
},
{
"tag": "Western Europe"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.reuters.com/search/news?blob=europe",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.reuters.com/world/americas/perus-indigenous-hope-voice-last-under-new-president-2021-07-05/",
"items": [
{
"itemType": "newspaperArticle",
"title": "Peru's indigenous hope for a voice, at last, under new president",
"creators": [
{
"firstName": "Stefanie",
"lastName": "Eschenbacher",
"creatorType": "author"
},
{
"firstName": "Angela",
"lastName": "Ponce",
"creatorType": "author"
}
],
"date": "2021-07-05T10:00:00Z",
"abstractNote": "Maxima Ccalla, 60, an indigenous Quechua woman, has spent her life tilling the harsh soil in Peru's Andean highlands, resigned to a fate far removed from the vast riches buried deep beneath her feet in seams of copper, zinc and gold.",
"libraryCatalog": "www.reuters.com",
"publicationTitle": "Reuters",
"section": "Americas",
"url": "https://www.reuters.com/world/americas/perus-indigenous-hope-voice-last-under-new-president-2021-07-05/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Sean Takats, Sebastian Karcher, and Abe Jellinek^https?://artflsrv\d+\.uchicago\.edu/philologic4/encyclopedie\d+/(navigate/|query)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/navigate/')) {
return "encyclopediaArticle";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.philologic_cite .citation:first-child a');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
let path = url.match(/(\/philologic4\/[^/]+\/)navigate((?:\/\d+)+)/);
if (!path) {
throw new Error('Unknown entry path format');
}
let [, base, id] = path;
id = id.replace(/\//g, ' ').trim();
ZU.doGet(
`${base}reports/navigation.py?report=navigation&philo_id=${id}&byte=`,
function (respText) {
let json = JSON.parse(respText);
scrapeFromJSON(doc, url, json);
}
);
}
function scrapeFromJSON(doc, url, json) {
let item = new Zotero.Item('encyclopediaArticle');
let meta = json.metadata_fields;
item.title = meta.head;
item.encyclopediaTitle = meta.title.replace(/\.?\s*Tome \d+\.?/, '');
item.volume = meta.vol;
item.numberOfVolumes = '17';
item.place = meta.pub_place;
item.publisher = meta.publisher;
item.date = meta.pub_date;
let firstPage;
let lastPage;
let pageRe = /\[page \d+:([\da-zA-Z]+)\]/g;
let matchArray;
while ((matchArray = pageRe.exec(json.text)) !== null) {
// iterate through page heading matches. if we haven't set the first
// page yet, set it to the page in the heading we just found. always
// set the last page to the heading we just found. when we're done,
// the first page will correspond to the first heading and the last page
// to the last.
if (!firstPage) {
firstPage = matchArray[1];
}
lastPage = matchArray[1];
}
if (firstPage && lastPage) {
if (firstPage == lastPage) {
item.pages = firstPage;
}
else {
item.pages = `${firstPage}-${lastPage}`;
}
}
item.url = url;
item.language = 'fr';
item.archive = 'ARTFL Encyclopédie Project (Spring 2021 Edition)';
item.libraryCatalog = '';
item.creators.push({
firstName: "Denis",
lastName: "Diderot",
creatorType: "editor"
});
item.creators.push({
firstName: "Jean le Rond",
lastName: "d'Alembert",
creatorType: "editor"
});
item.creators.push(
ZU.cleanAuthor(
meta.kafauth.replace(/\s*\(.*\)/, ''), 'author', true
)
);
if (doc) {
item.attachments.push({
title: 'Snapshot',
document: doc
});
}
if (json.imgs.current_obj_img && json.imgs.current_obj_img.length) {
let url = json.imgs.current_obj_img[0];
item.attachments.push({
title: 'Page Scan',
mimeType: `image/${url.split('.').pop()}`,
url
});
}
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://artflsrv03.uchicago.edu/philologic4/encyclopedie0521/navigate/1/929/",
"items": [
{
"itemType": "encyclopediaArticle",
"title": "ADULTERE",
"creators": [
{
"firstName": "Denis",
"lastName": "Diderot",
"creatorType": "editor"
},
{
"firstName": "Jean le Rond",
"lastName": "d'Alembert",
"creatorType": "editor"
},
{
"firstName": "François-Vincent",
"lastName": "Toussaint",
"creatorType": "author"
}
],
"date": "1751",
"archive": "ARTFL Encyclopédie Project (Spring 2021 Edition)",
"encyclopediaTitle": "Encyclopédie, Dictionnaire raisonné des sciences, des arts et des métiers, par une Société de Gens de lettres",
"language": "fr",
"numberOfVolumes": "17",
"pages": "150",
"place": "Paris",
"publisher": "Le Breton",
"url": "https://artflsrv03.uchicago.edu/philologic4/encyclopedie0521/navigate/1/929/",
"volume": "1",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
},
{
"title": "Page Scan",
"mimeType": "image/jpeg"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://artflsrv03.uchicago.edu/philologic4/encyclopedie0521/navigate/1/925/",
"items": [
{
"itemType": "encyclopediaArticle",
"title": "ADULTE",
"creators": [
{
"firstName": "Denis",
"lastName": "Diderot",
"creatorType": "editor"
},
{
"firstName": "Jean le Rond",
"lastName": "d'Alembert",
"creatorType": "editor"
},
{
"firstName": "Pierre",
"lastName": "Tarin",
"creatorType": "author"
}
],
"date": "1751",
"archive": "ARTFL Encyclopédie Project (Spring 2021 Edition)",
"encyclopediaTitle": "Encyclopédie, Dictionnaire raisonné des sciences, des arts et des métiers, par une Société de Gens de lettres",
"language": "fr",
"numberOfVolumes": "17",
"pages": "150",
"place": "Paris",
"publisher": "Le Breton",
"url": "https://artflsrv03.uchicago.edu/philologic4/encyclopedie0521/navigate/1/925/",
"volume": "1",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
},
{
"title": "Page Scan",
"mimeType": "image/jpeg"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://artflsrv03.uchicago.edu/philologic4/encyclopedie0521/query?report=concordance&method=proxy&attribution=&objecttype=&q=amour&start=0&end=0",
"items": "multiple"
}
]
/** END TEST CASES **/
100Sylvain Machefert^https?://www\.sudouest\.fr//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2020 Sylvain Machefert
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, _url) {
if (ZU.xpathText(doc, '//meta[@property="og:type"]/@content') == "article") {
return 'newspaperArticle';
}
if (getSearchResults(doc, true)) {
return 'multiple';
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('article.article .article-wrapper');
for (var i = 0; i < rows.length; i++) {
var row = rows[i];
var a = row.querySelector('a');
var href = a.href;
var title = ZU.trimInternal(a.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var item = new Zotero.Item("newspaperArticle");
item.language = "fr-FR";
item.title = ZU.xpathText(doc, '//meta[@property="og:title"]/@content');
item.publication = "Sud Ouest";
item.ISSN = "1760-6454";
item.url = url;
item.abstract = ZU.xpathText(doc, '//meta[@property="og:description"]/@content');
var publicationDate = ZU.xpathText(doc, "(//div[@class='publishing']/time)[1]");
if (publicationDate) {
item.date = ZU.strToISO(publicationDate);
}
var author = ZU.xpathText(doc, "//div[@class='publishing']/text()");
author = author.replace("Par ", "");
if (author != "SudOuest.fr avec AFP") {
item.creators.push(ZU.cleanAuthor(author, "author", false));
}
item.attachments.push({
title: "Snapshot",
document: doc
});
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.sudouest.fr/charente-maritime/echillais/agglomeration-rochefort-ocean-les-prets-de-livres-reprennent-1678268.php",
"items": [
{
"itemType": "newspaperArticle",
"title": "Agglomération Rochefort Océan : les prêts de livres reprennent",
"creators": [
{
"firstName": "Jennyfer",
"lastName": "Delrieux",
"creatorType": "author"
}
],
"date": "2020-11-03",
"ISSN": "1760-6454",
"language": "fr-FR",
"libraryCatalog": "Sud Ouest",
"shortTitle": "Agglomération Rochefort Océan",
"url": "https://www.sudouest.fr/charente-maritime/echillais/agglomeration-rochefort-ocean-les-prets-de-livres-reprennent-1678268.php",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.sudouest.fr/charente-maritime/breuil-magne/estuaire-de-la-charente-et-arsenal-de-rochefort-le-label-grand-site-devient-officiel-1707458.php",
"items": [
{
"itemType": "newspaperArticle",
"title": "Estuaire de la Charente et Arsenal de Rochefort : le label Grand Site devient officiel",
"creators": [
{
"firstName": "Nathalie",
"lastName": "Daury-Pain",
"creatorType": "author"
}
],
"date": "2020-10-14",
"ISSN": "1760-6454",
"language": "fr-FR",
"libraryCatalog": "Sud Ouest",
"shortTitle": "Estuaire de la Charente et Arsenal de Rochefort",
"url": "https://www.sudouest.fr/charente-maritime/breuil-magne/estuaire-de-la-charente-et-arsenal-de-rochefort-le-label-grand-site-devient-officiel-1707458.php",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.sudouest.fr/charente-maritime/royan/",
"items": "multiple"
}
]
/** END TEST CASES **/
100Sebastian Karcher and Abe Jellinek^https?://(catalog|babel)\.hathitrust\.org//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2011-2021 Sebastian Karcher, Abe Jellinek,
and the Center for History and New Media
George Mason University, Fairfax, Virginia, USA
http://zotero.org
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.match(/\/Record\/\d+/)) {
return "book";
}
if (url.includes('/cgi/pt')) {
// viewer page; more handling might be needed here
return "book";
}
if ((url.includes("/Search/") || url.includes("a=listis;"))
&& getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.record-container');
for (let row of rows) {
let href = attr(row, 'a[href*="/Record/"]', 'href');
let id = (href.match(/\/([0-9]+)/) || [])[1];
let title = ZU.trimInternal(row.textContent);
if (!id || !title) continue;
if (checkOnly) return true;
found = true;
items[id] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) scrape(Object.keys(items));
});
}
else {
let id = extractID(url);
if (!id) id = extractID(attr(doc, '.bibLinks a[href*="/Record/"]', 'href'));
if (!id) throw new Error('Couldn\'t extract ID from URL: ' + url);
scrape([id]);
}
}
function extractID(url) {
return (url.match(/\/Record\/([0-9]+)/) || [])[1];
}
function scrape(ids) {
var risURL = "http://catalog.hathitrust.org/Search/SearchExport?handpicked="
+ ids.join(',') + "&method=ris";
ZU.doGet(risURL, function (text) {
// M1 has only garbage like repeated page number info
text = text.replace(/^M1 {2}- .+/m, "");
var translator = Zotero.loadTranslator("import");
translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7");
translator.setString(text);
translator.setHandler("itemDone", function (obj, item) {
item.extra = "";
if (item.place) {
item.place = item.place.replace(/[[\]]/g, "");
}
if (item.publisher) {
item.publisher = item.publisher.replace(/[[\]]/g, "");
}
if (item.numPages) {
// "3 p.l., 192 p." -> 192
let cleanedPages = item.numPages.match(/(\d+)\s*p\.($|[^a-z])/i);
if (cleanedPages) {
item.numPages = cleanedPages[1];
}
}
if (item.tags.length) {
item.tags = item.tags.join("/").split("/")
.map(s => ZU.trimInternal(s).replace(/\.$/, ''));
}
for (let creator of item.creators) {
if (creator.firstName) {
creator.firstName = creator.firstName.replace(/(\w{2,})\./, '$1');
}
if (creator.lastName) {
creator.lastName = creator.lastName.replace(/\.$/, '');
}
}
if (item.url.startsWith("//")) {
item.url = "https:" + item.url;
}
// there's no reason to have a snapshot of the record page, but
// HathiTrust metadata is pretty bare and it's likely that users
// will want to come back
item.attachments.push({
title: 'Record Page',
url: item.url,
mimeType: 'text/html',
snapshot: false
});
item.complete();
});
translator.translate();
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://catalog.hathitrust.org/Search/Home?checkspelling=true&lookfor=Cervantes&type=all&sethtftonly=true&submit=Find",
"items": "multiple"
},
{
"type": "web",
"url": "https://catalog.hathitrust.org/Record/001050654",
"items": [
{
"itemType": "book",
"title": "Cervantes",
"creators": [
{
"lastName": "Entwistle",
"firstName": "William J.",
"creatorType": "author"
}
],
"date": "1940",
"libraryCatalog": "HathiTrust",
"numPages": "192",
"place": "Oxford",
"publisher": "The Clarendon press",
"url": "https://catalog.hathitrust.org/Record/001050654",
"attachments": [
{
"title": "Record Page",
"mimeType": "text/html",
"snapshot": false
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://babel.hathitrust.org/cgi/mb?a=listis;c=421846824",
"items": "multiple"
},
{
"type": "web",
"url": "https://babel.hathitrust.org/cgi/pt?id=uiuo.ark:/13960/t70w4tz8j&view=1up&seq=1",
"items": [
{
"itemType": "book",
"title": "Articles of association and by-laws of the Jewish Farmers' Cooperative Credit Unions.",
"creators": [
{
"lastName": "Jewish Farmers' Cooperative Credit Unions",
"creatorType": "author",
"fieldMode": 1
},
{
"lastName": "Jewish Agricultural and Industrial Aid Society",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "1911",
"libraryCatalog": "HathiTrust",
"numPages": "19",
"place": "New York City",
"publisher": "Jewish Agricultural and Industrial Aid Society",
"url": "https://catalog.hathitrust.org/Record/102407867",
"attachments": [
{
"title": "Record Page",
"mimeType": "text/html",
"snapshot": false
}
],
"tags": [
{
"tag": "Credit unions"
},
{
"tag": "Jewish farmers"
},
{
"tag": "United States"
},
{
"tag": "United States"
}
],
"notes": [
{
"note": "<p>English and Yiddish text.</p>"
}
],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Abe Jellinek^https://www\.sup\.org/(books|search)//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/books/title/')) {
return "book";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.search-result > a');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(text(row, '.search-book-title-tight'));
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
let id = url.match(/id=([0-9]+)/);
if (!id) throw new Error('No ID in URL: ' + url);
id = id[1];
let risURL = `https://www.sup.org/books/cite/?id=${id}&ris=true`;
ZU.doGet(risURL, function (respText) {
var translator = Zotero.loadTranslator("import");
// RIS
translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7");
translator.setString(respText);
translator.setHandler("itemDone", function (obj, item) {
for (let subjectLink of doc.querySelectorAll('.subject-link a')) {
let tag = subjectLink.innerText.replace(/\//g, '--');
item.tags.push({ tag });
}
if (!item.creators.length) {
Z.debug('No RIS authors; scraping from page');
let type = 'author';
let names = text(doc, '.book-author').split(/,| and /);
for (let name of names) {
name = ZU.trimInternal(name);
if (name.startsWith('Edited by ')) {
type = 'editor';
name = name.substring('Edited by '.length);
}
else if (name.startsWith('Translated by ')) {
type = 'translator';
name = name.substring('Translated by '.length);
}
item.creators.push(ZU.cleanAuthor(name, type));
}
}
item.ISBN = ZU.cleanISBN(text(doc, '.bibliographic-info'));
item.abstractNote = text(doc, '#description .readable');
item.url = '';
item.complete();
});
translator.translate();
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.sup.org/books/title/?id=23440",
"items": [
{
"itemType": "book",
"title": "A Place to Call Home: Immigrant Exclusion and Urban Belonging in New York, Paris, and Barcelona",
"creators": [
{
"lastName": "Castañeda",
"firstName": "Ernesto",
"creatorType": "author"
}
],
"date": "2018",
"ISBN": "9781503604780",
"abstractNote": "As immigrants settle in new places, they are faced with endless uncertainties that prevent them from feeling that they belong. From language barriers, to differing social norms, to legal boundaries separating them from established residents, they are constantly navigating shifting and contradictory expectations both to assimilate to their new culture and to honor their native one. In A Place to Call Home, Ernesto Castañeda offers a uniquely comparative portrait of immigrant expectations and experiences. Drawing on fourteen years of ethnographic observation and hundreds of interviews with documented and undocumented immigrants and their children, Castañeda sets out to determine how different locations can aid or disrupt the process of immigrant integration. Focusing on New York City, Paris, and Barcelona—immigration hubs in their respective countries—he compares the experiences of both Latino and North African migrants, and finds that subjective understandings, local contexts, national and regional history, and religious institutions are all factors that profoundly impact the personal journey to belonging.",
"libraryCatalog": "Stanford University Press",
"numPages": "208",
"place": "Stanford",
"publisher": "Stanford University Press",
"shortTitle": "A Place to Call Home",
"attachments": [],
"tags": [
{
"tag": "Anthropology -- Immigration and Migration Studies"
},
{
"tag": "Sociology -- Global Issues, Economy, and Work"
},
{
"tag": "Sociology -- Immigration"
},
{
"tag": "Sociology -- Race, Class, and Gender"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.sup.org/books/title/?id=28033",
"items": [
{
"itemType": "book",
"title": "Unknown Past: Layla Murad, the Jewish-Muslim Star of Egypt",
"creators": [
{
"firstName": "Hanan",
"lastName": "Hammad",
"creatorType": "author"
}
],
"date": "2022",
"ISBN": "9781503629424",
"abstractNote": "A biography of the \"Cinderella\" of Egyptian cinema—the veneration and rumors that surrounded an unparalleled career, and the gendered questions that unsettled Egyptian society.Layla Murad (1918-1995) was once the highest-paid star in Egypt, and her movies were among the top-grossing in the box office. She starred in 28 films, nearly all now classics in Arab musical cinema. In 1955 she was forced to stop acting—and struggled for decades for a comeback. Today, even decades after her death, public interest in her life continues, and new generations of Egyptians still love her work. Unknown Past recounts Murad's extraordinary life—and the rapid political and sociocultural changes she witnessed.Hanan Hammad writes a story centered on Layla Murad's persona and legacy, and broadly framed around a gendered history of 20th century Egypt. Murad was a Jew who converted to Islam in the shadow of the first Arab-Israeli war. Her career blossomed under the Egyptian monarchy and later gave a singing voice to the Free Officers and the 1952 Revolution. The definitive end of her cinematic career came under Nasser on the eve of the 1956 Suez War. Egyptians have long told their national story through interpretations of Murad's life, intertwining the individual and Egyptian state and society to better understand Egyptian identity. As Unknown Past recounts, there's no life better than Murad's to reflect the tumultuous changes experienced over the dramatic decades of the mid-twentieth century.",
"libraryCatalog": "Stanford University Press",
"numPages": "328",
"place": "Stanford",
"publisher": "Stanford University Press",
"shortTitle": "Unknown Past",
"attachments": [],
"tags": [
{
"tag": "Cinema and Media Studies"
},
{
"tag": "History -- Gender and Sexuality"
},
{
"tag": "History -- Middle East"
},
{
"tag": "Middle East Studies"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.sup.org/books/title/?id=32777",
"items": [
{
"itemType": "book",
"title": "Understanding Global Migration",
"creators": [
{
"firstName": "James F.",
"lastName": "Hollifield",
"creatorType": "editor"
},
{
"firstName": "Neil",
"lastName": "Foley",
"creatorType": "editor"
}
],
"date": "2022",
"ISBN": "9781503614772",
"abstractNote": "Understanding Global Migration offers scholars a groundbreaking account of emerging migration states around the globe, especially in the Global South.Leading scholars of migration have collaborated to provide a birds-eye view of migration interdependence. Understanding Global Migration proposes a new typology of migration states, identifying multiple ideal types beyond the classical liberal type. Much of the world's migration has been to countries in Asia, Africa, the Middle East, and South America. The authors assembled here account for diverse histories of colonialism, development, and identity in shaping migration policy.This book provides a truly global look at the dilemmas of migration governance: Will migration be destabilizing, or will it lead to greater openness and human development? The answer depends on the capacity of states to manage migration, especially their willingness to respect the rights of the ever-growing portion of the world's population that is on the move.",
"libraryCatalog": "Stanford University Press",
"numPages": "624",
"place": "Stanford",
"publisher": "Stanford University Press",
"attachments": [],
"tags": [
{
"tag": "Politics -- Comparative and International Politics"
},
{
"tag": "Politics -- International Relations"
},
{
"tag": "Sociology -- Immigration"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.sup.org/books/title/?id=7811",
"items": [
{
"itemType": "book",
"title": "The Case of Wagner / Twilight of the Idols / The Antichrist / Ecce Homo / Dionysus Dithyrambs / Nietzsche Contra Wagner: Volume 9",
"creators": [
{
"firstName": "Friedrich",
"lastName": "Nietzsche",
"creatorType": "author"
},
{
"firstName": "Alan D.",
"lastName": "Schrift",
"creatorType": "editor"
},
{
"firstName": "Adrian Del",
"lastName": "Caro",
"creatorType": "translator"
},
{
"firstName": "Carol",
"lastName": "Diethe",
"creatorType": "translator"
},
{
"firstName": "Duncan",
"lastName": "Large",
"creatorType": "translator"
},
{
"firstName": "George H.",
"lastName": "Leiner",
"creatorType": "translator"
},
{
"firstName": "Paul S.",
"lastName": "Loeb",
"creatorType": "translator"
},
{
"firstName": "Alan D.",
"lastName": "Schrift",
"creatorType": "translator"
},
{
"firstName": "David F.",
"lastName": "Tinsley",
"creatorType": "translator"
},
{
"firstName": "Mirko",
"lastName": "Wittwar",
"creatorType": "translator"
}
],
"date": "2021",
"ISBN": "9780804728829",
"abstractNote": "The year 1888 marked the last year of Friedrich Nietzsche's intellectual career and the culmination of his philosophical development. In that final productive year, he worked on six books, all of which are now, for the first time, presented in English in a single volume. Together these new translations provide a fundamental and complete introduction to Nietzsche's mature thought and to the virtuosity and versatility of his most fully developed style.The writings included here have a bold, sometimes radical tone that can be connected to Nietzsche's rising profile and growing confidence. In The Antichrist, we are offered an extended critique of Christianity and Christian morality alongside blunt diagnoses of contemporary Europe's cultural decadence. In Dionysus Dithyrambs we are presented with his only work composed exclusively of poetry, and in Twilight of the Idols we find a succinct summary of his mature philosophical views. At times the works are also openly personal, as in The Case of Wagner, which presents Nietzsche's attempt to settle accounts with his former close friend, German composer Richard Wagner, and in his provocative autobiography, Ecce Homo, which sees Nietzsche taking stock of his past and future while also reflecting on many of his earlier texts.Scrupulously edited, this critical volume also includes commentary by esteemed Nietzsche scholar Andreas Urs Sommer. Through this new collection, students and scholars are given an essential introduction to Nietzsche's late thought.",
"libraryCatalog": "Stanford University Press",
"numPages": "816",
"place": "Stanford",
"publisher": "Stanford University Press",
"shortTitle": "The Case of Wagner / Twilight of the Idols / The Antichrist / Ecce Homo / Dionysus Dithyrambs / Nietzsche Contra Wagner",
"attachments": [],
"tags": [
{
"tag": "Philosophy -- Aesthetics"
},
{
"tag": "Philosophy -- Ethics and Moral Philosophy"
},
{
"tag": "Religion -- Philosophy of Religion"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.sup.org/search/?terms=derrida",
"items": "multiple"
}
]
/** END TEST CASES **/
100Abe Jellinek^https://bookshop\.org/books/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (/\/books\/[^/]+\/[0-9]+/.test(url)
&& attr('meta[property="og:type"]', 'content') == 'book') {
return "book";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('h2 a[href*="/books/"]');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
item.numPages = text(doc, '[itemprop="numberOfPages"]');
item.publisher = text(doc, '[itemprop="publisher"]');
item.tags = [];
item.attachments = [];
item.url = '';
for (let author of doc.querySelectorAll('span[itemprop="author"]')) {
let name = text(author, 'span[itemprop="name"]');
let type = author.parentNode.nextSibling.textContent;
if (type.includes('Author')) {
type = 'author';
}
else if (type.includes('Editor')) {
type = 'editor';
}
else if (type.includes('Translator')) {
type = 'translator';
}
else {
type = 'contributor';
}
item.creators.push(ZU.cleanAuthor(name, type));
}
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.itemType = "book";
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://bookshop.org/books/crying-in-h-mart-a-memoir/9780525657743",
"items": [
{
"itemType": "book",
"title": "Crying in H Mart: A Memoir",
"creators": [
{
"firstName": "Michelle",
"lastName": "Zauner",
"creatorType": "author"
}
],
"date": "2021-04-20T12:00:00-04:00",
"ISBN": "9780525657743",
"abstractNote": "NEW YORK TIMES BEST SELLER - A Best Book of 2021: AV Club - Bustle - Entertainment Weekly - Good Morning America - Chicago Review of Books - Fortune - TIME - CNN Underscored - Apartment Therapy - Popsugar - Hello Giggles - Business Insider - The Millions - Wall Street Journal Magazine - Glamour From the indie rockstar of Japanese Breakfast fame, and author of the viral 2018 New Yorker essay that shares the title of this book, an unflinching, powerful memoir about growing up Korean American, losing her mother, and forging her own identity. In this exquisite story of family, food, grief, and endurance, Michelle Zauner proves herself far more than a dazzling singer, songwriter, and guitarist. With humor and heart, she tells of growing up one of the few Asian American kids at her school in Eugene, Oregon; of struggling with her mother's particular, high expectations of her; of a painful adolescence; of treasured months spent in her grandmother's tiny apartment in Seoul, where she and her mother would bond, late at night, over heaping plates of food. As she grew up, moving to the East Coast for college, finding work in the restaurant industry, and performing gigs with her fledgling band--and meeting the man who would become her husband--her Koreanness began to feel ever more distant, even as she found the life she wanted to live. It was her mother's diagnosis of terminal cancer, when Michelle was twenty-five, that forced a reckoning with her identity and brought her to reclaim the gifts of taste, language, and history her mother had given her. Vivacious and plainspoken, lyrical and honest, Zauner's voice is as radiantly alive on the page as it is onstage. Rich with intimate anecdotes that will resonate widely, and complete with family photos, Crying in H Mart is a book to cherish, share, and reread.",
"language": "en",
"libraryCatalog": "bookshop.org",
"numPages": "256",
"publisher": "Knopf Publishing Group",
"shortTitle": "Crying in H Mart",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://bookshop.org/books/organic-chemistry-for-babies/9781492671169",
"items": [
{
"itemType": "book",
"title": "Organic Chemistry for Babies",
"creators": [
{
"firstName": "Chris",
"lastName": "Ferrie",
"creatorType": "author"
},
{
"firstName": "Cara",
"lastName": "Florance",
"creatorType": "author"
}
],
"date": "2018-05-01T12:00:00-04:00",
"ISBN": "9781492671169",
"abstractNote": "Fans of Chris Ferrie's Rocket Science for Babies, Quantum Physics for Babies, and 8 Little Planets will love this introduction to organic chemistry for babies and toddlers!It only takes a small spark to ignite a child's mind.Written by an expert, Organic Chemistry for Babies is a colorfully simple introduction to the structure of organic, carbon-containing compounds and materials. Gift your special little one the opportunity to learn with this perfect science baby gift and help them be one step ahead of pre-med students! With a tongue-in-cheek approach that adults will love, this installment of the Baby University baby board book series is the perfect way to introduce STEM concepts for babies and toddlers. After all, it's never too early to become an organic chemist!If you're looking for the perfect STEAM book for teachers, science toys for babies, or chemistry toys for kids, look no further! Organic Chemistry for Babies offers fun early learning for your little scientist!",
"language": "en",
"libraryCatalog": "bookshop.org",
"numPages": "24",
"publisher": "Sourcebooks Explore",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://bookshop.org/books?keywords=pippi",
"items": "multiple"
},
{
"type": "web",
"url": "https://bookshop.org/books/meditations-a-new-translation-7be5ded9-87a9-4056-af72-d6c917125a29/9780812968255",
"items": [
{
"itemType": "book",
"title": "Meditations: A New Translation",
"creators": [
{
"firstName": "Marcus",
"lastName": "Aurelius",
"creatorType": "author"
},
{
"firstName": "Gregory",
"lastName": "Hays",
"creatorType": "translator"
}
],
"date": "2003-05-06T12:00:00-04:00",
"ISBN": "9780812968255",
"abstractNote": "Nearly two thousand years after it was written, Meditations remains profoundly relevant for anyone seeking to lead a meaningful life. Few ancient works have been as influential as the Meditations of Marcus Aurelius, philosopher and emperor of Rome (A.D. 161-180). A series of spiritual exercises filled with wisdom, practical guidance, and profound understanding of human behavior, it remains one of the greatest works of spiritual and ethical reflection ever written. Marcus's insights and advice--on everything from living in the world to coping with adversity and interacting with others--have made the Meditations required reading for statesmen and philosophers alike, while generations of ordinary readers have responded to the straightforward intimacy of his style. For anyone who struggles to reconcile the demands of leadership with a concern for personal integrity and spiritual well-being, the Meditations remains as relevant now as it was two thousand years ago. In Gregory Hays's new translation--the first in thirty-five years--Marcus's thoughts speak with a new immediacy. In fresh and unencumbered English, Hays vividly conveys the spareness and compression of the original Greek text. Never before have Marcus's insights been so directly and powerfully presented. With an Introduction that outlines Marcus's life and career, the essentials of Stoic doctrine, the style and construction of the Meditations, and the work's ongoing influence, this edition makes it possible to fully rediscover the thoughts of one of the most enlightened and intelligent leaders of any era.",
"language": "en",
"libraryCatalog": "bookshop.org",
"numPages": "256",
"publisher": "Modern Library",
"shortTitle": "Meditations",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://(www\.)?isidore\.science//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (doc.querySelector('meta[name="citation_title"]')
&& doc.querySelector('meta[property="dc:type"]')) {
return attr(doc, 'meta[property="dc:type"]', 'content', 0);
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.list-result a.font-bold');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
if (item.abstractNote.startsWith('ISIDORE is')) {
delete item.abstractNote;
}
item.url = attr(
doc,
'a[title*="Access the document"], a[data-original-title*="Access the document"]',
'href'
);
item.attachments = [];
item.tags = [];
delete item.websiteType;
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.addCustomFields({
'DC.relation.ispartof': 'publicationTitle'
});
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://isidore.science/document/10670/1.v00h5m",
"items": [
{
"itemType": "journalArticle",
"title": "Sur la géométrie anallagmatique (addition à l'article précédent)",
"creators": [
{
"firstName": "J.",
"lastName": "Hadamard",
"creatorType": "author"
}
],
"date": "1927",
"language": "fr",
"libraryCatalog": "isidore.science",
"publicationTitle": "Nouvelles annales de mathématiques : journal des candidats aux écoles polytechnique et normale",
"url": "http://www.numdam.org/item/NAM_1927_6_2__314_0/",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://isidore.science/document/10670/1.ys05aw",
"items": [
{
"itemType": "blogPost",
"title": "Séminaire - Quand la santé questionne le couple. Correspondances Sud et Nord",
"creators": [
{
"firstName": "",
"lastName": "corpsetmedecine",
"creatorType": "author"
}
],
"date": "2010-07-06",
"abstractNote": "L'équipe \"Genre et santé\" du CEPED organise un séminaire le jeudi 21 octobre 2010, à l'Université Paris Descartes : \"Quand la santé questionne le couple. Correspondances Sud et Nord\" Voir la présentation et le bulletin d'inscription en pièces jointes (pdf).",
"blogTitle": "Corps et Médecine",
"language": "fr",
"url": "http://corpsetmedecine.hypotheses.org/995",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://isidore.science/document/10670/1.5tkdos",
"items": [
{
"itemType": "conferencePaper",
"title": "LES CHERCHEURS ALGERIENS ET LA PUBLICATION ELECTRONIQUE DANS LES ARCHIVES OUVERTES : CAS D'ARCHIVALG",
"creators": [
{
"firstName": "Karima Ben",
"lastName": "Allal",
"creatorType": "author"
},
{
"firstName": "Madjid",
"lastName": "Dahmane",
"creatorType": "author"
},
{
"firstName": "Rahima",
"lastName": "Slimani",
"creatorType": "author"
}
],
"date": "2008-05-29",
"abstractNote": "Au cours de la dernière décennie, le monde de la communication scientifique a subi des mutations majeures engendrées principalement par la généralisation de l'utilisation des Technologies de l'Information et de la Communication. Ces mutations se distinguent par le développement de nouvelles tendances dont le mouvement des Archives ouvertes. En effet, l'initiative en faveur des archives ouvertes a émergé dans les milieux de la recherche dans le but de prôner un Accès Libre et gratuit à la littérature scientifique mondiale. Afin d'accompagner ce mouvement et de maîtriser ses principes et ses techniques, un prototype d'archive ouverte institutionnelle (CERIST d'Alger) et multidisciplinaire a été mis en place pour les communautés scientifiques algériennes. Ce prototype d'archive nommé ‘ArchivAlg' permet aux chercheurs de diffuser librement sur Internet leurs travaux de recherche. L'expérimentation de ce dispositif a montré que les chercheurs algériens sont peu familiarisés au dépôt dans les bases d'archives. Aujourd'hui, la question des archives ouvertes est stratégique pour le contexte algérien, elle est même indispensable pour valoriser et offrir une meilleure visibilité aux publications scientifiques et enrichir le patrimoine scientifique national d'où la nécessité de sensibiliser les chercheurs algériens et leurs institutions aux intérêts et retombées positifs de l'adoption de ces systèmes ouverts d'accès à l'Information Scientifique et Technique.",
"language": "fr",
"libraryCatalog": "isidore.science",
"proceedingsTitle": "Hyper Article en Ligne - Sciences de l'Homme et de la Société",
"publisher": "Hyper Article en Ligne - Sciences de l'Homme et de la Société",
"shortTitle": "LES CHERCHEURS ALGERIENS ET LA PUBLICATION ELECTRONIQUE DANS LES ARCHIVES OUVERTES",
"url": "https://archivesic.ccsd.cnrs.fr/sic_00284311",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://isidore.science/document/10670/1.gmcezm",
"items": [
{
"itemType": "thesis",
"title": "Théories pré-keynésiennes de l’instabilité financière : Marx, Veblen, Hawtrey",
"creators": [
{
"firstName": "Julien",
"lastName": "Mendez",
"creatorType": "author"
}
],
"date": "2012-05-02",
"abstractNote": "Cette thèse montre que l’on peut trouver chez Marx, Veblen et Hawtrey trois théories pré-keynésiennes de l’instabilité financière. Elle dégage, pour chacun d’eux, le cadre théorique qu’il met en place et qui lui permet de poser la question du rôle de la finance dans la dynamique économique. Elle analyse ensuite leurs écrits pour montrer que l’on peut en déduire des théories (incomplètes) de l’instabilité financière, c’est-à-dire que les perturbations économiques sont dues à la manière dont les entreprises se financent. Le chapitre I reconstruit la théorie marxienne des marchés financiers, ce qui permet, dans le chapitre II, de montrer le rôle central joué par la finance dans l’explication du cycle économique chez Marx. Le chapitre III dégage les éléments qui font de la théorie de Veblen une théorie du capitalisme financier, puis, dans le chapitre IV, discute cette dernière pour montrer qu’il s’agit d’une théorie de l’instabilité financière. Le chapitre V propose une représentation du modèle macroéconomique de Hawtrey, à partir de laquelle le chapitre VI dégage les conditions dans lesquelles le crédit est instable dans sa théorie. Le chapitre VII fait le lien entre les théories de ces auteurs et les faits économiques dont la connaissance a nourri leur réflexion : les théories de l’instabilité financière sont à la fois une explication, une représentation et un projet de régulation du capitalisme financier",
"language": "fr",
"libraryCatalog": "isidore.science",
"shortTitle": "Théories pré-keynésiennes de l’instabilité financière",
"thesisType": "thesis",
"university": "Theses.fr",
"url": "http://www.theses.fr/2012PA100060/document",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://isidore.science/subject/http://ark.frantiq.fr/ark:/26678/pcrtP2Dd8lnOmB",
"items": "multiple"
}
]
/** END TEST CASES **/
100Abe Jellinek^https://www\.ucpress\.edu/(book/|search\.php\?)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/book/')) {
return "book";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('a.gs-title[href*="/book/"]');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
item.creators = [];
for (let contrib of doc.querySelectorAll('span.contrib')) {
let name = text(contrib, 'a');
let type = mapContribType(
text(contrib, '.contribtype')
.replace(/[()]/g, '')
.toLowerCase());
item.creators.push(ZU.cleanAuthor(name, type));
}
let fields = {
Rights: 'rights',
Pages: 'numPages',
ISBN: 'ISBN'
};
for (let metadata of doc.querySelector('.details p').innerHTML.split('<br>')) {
metadata = ZU.trimInternal(metadata);
let matches = metadata.match(/([^:]+): (.*)/);
if (!matches) continue;
let [, key, value] = matches;
if (fields[key]) item[fields[key]] = value;
}
if (item.ISBN) {
item.ISBN = ZU.cleanISBN(item.ISBN);
}
item.abstractNote = text(doc, '#link-about-book article');
item.date = ZU.strToISO(text(doc, '.date'));
item.edition = cleanEdition(text(doc, '.edition'));
if (doc.querySelector('h1 span')) {
let subtitle = ZU.trimInternal(text(doc, 'h1 span'));
if (!item.title.includes(subtitle)) {
item.title += `: ${subtitle}`;
}
}
item.attachments = [];
item.url = '';
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.itemType = "book";
trans.doWeb(doc, url);
});
}
function cleanEdition(text) {
if (!text) return text;
// from Taylor & Francis eBooks translator, slightly adapted
const ordinals = {
first: "1",
second: "2",
third: "3",
fourth: "4",
fifth: "5",
sixth: "6",
seventh: "7",
eighth: "8",
ninth: "9",
tenth: "10"
};
text = ZU.trimInternal(text).replace(/[[\]]/g, '');
// this somewhat complicated regex tries to isolate the number (spelled out
// or not) and make sure that it isn't followed by any extra info
let matches = text
.match(/^(?:(?:([0-9]+)(?:st|nd|rd|th)?)|(first|second|third|fourth|fifth|sixth|seventh|eighth|ninth|tenth))(?:\s?ed?\.?|\sedition)?$/i);
if (matches) {
let edition = matches[1] || matches[2];
edition = ordinals[edition.toLowerCase()] || edition;
return edition == "1" ? null : edition;
}
else {
return text;
}
}
function mapContribType(type) {
switch (type) {
case 'author':
return 'author';
case 'editor':
return 'editor';
case 'series editor':
return 'seriesEditor';
case 'translator':
return 'translator';
default:
return 'contributor';
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.ucpress.edu/book/9780520344907/the-gentrification-of-the-internet",
"items": [
{
"itemType": "book",
"title": "The Gentrification of the Internet: How to Reclaim Our Digital Freedom",
"creators": [
{
"firstName": "Jessa",
"lastName": "Lingel",
"creatorType": "author"
}
],
"date": "2021-05",
"ISBN": "9780520344907",
"abstractNote": "How we lost control of the internet—and how to win it back. The internet has become a battleground. Although it was unlikely to live up to the hype and hopes of the 1990s, only the most skeptical cynics could have predicted the World Wide Web as we know it today: commercial, isolating, and full of, even fueled by, bias. This was not inevitable. The Gentrification of the Internet argues that much like our cities, the internet has become gentrified, dominated by the interests of business and capital rather than the interests of the people who use it. Jessa Lingel uses the politics and debates of gentrification to diagnose the massive, systemic problems blighting our contemporary internet: erosions of privacy and individual ownership, small businesses wiped out by wealthy corporations, the ubiquitous paywall. But there are still steps we can take to reclaim the heady possibilities of the early internet. Lingel outlines actions that internet activists and everyday users can take to defend and secure more protections for the individual and to carve out more spaces of freedom for the people—not businesses—online.",
"language": "en",
"libraryCatalog": "www.ucpress.edu",
"numPages": "168",
"rights": "Available worldwide",
"shortTitle": "The Gentrification of the Internet",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.ucpress.edu/book/9780520253124/the-jepson-manual",
"items": [
{
"itemType": "book",
"title": "The Jepson Manual: Vascular Plants of California, Thoroughly Revised and Expanded",
"creators": [
{
"firstName": "Bruce G.",
"lastName": "Baldwin",
"creatorType": "editor"
},
{
"firstName": "Douglas",
"lastName": "Goldman",
"creatorType": "editor"
},
{
"firstName": "David J.",
"lastName": "Keil",
"creatorType": "editor"
},
{
"firstName": "Robert",
"lastName": "Patterson",
"creatorType": "editor"
},
{
"firstName": "Thomas J.",
"lastName": "Rosatti",
"creatorType": "editor"
},
{
"firstName": "Dieter",
"lastName": "Wilken",
"creatorType": "editor"
}
],
"date": "2012-01",
"ISBN": "9780520253124",
"abstractNote": "The second edition of The Jepson Manual thoroughly updates this acclaimed work, the single most comprehensive resource on California's amazingly diverse flora. Integrating the latest science with the results of intensive fieldwork, institutional collaboration, and the efforts of hundreds of contributing authors, this new edition is an essential reference on California's native and naturalized vascular plants. This edition includes treatments of many newly described or discovered taxa and recently introduced plants, and it reflects major improvements in plant taxonomy. Nearly two-thirds of the 7,600 species, subspecies, and varieties that the volume describes are now illustrated with diagnostic drawings. Geographic distributions, elevation ranges, flowering times, nomenclature, and the status of non-natives and native taxa of special concern have all been updated throughout. The second edition also allows for identification of 240 alien taxa that are not fully naturalized and features a new chapter on geologic, climatic, and vegetation history of California.",
"edition": "2",
"language": "en",
"libraryCatalog": "www.ucpress.edu",
"numPages": "1600",
"rights": "Available worldwide",
"shortTitle": "The Jepson Manual",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.ucpress.edu/book/9780520240964/sierra-nevada-natural-history",
"items": [
{
"itemType": "book",
"title": "Sierra Nevada Natural History: Revised Edition",
"creators": [
{
"firstName": "Tracy I.",
"lastName": "Storer",
"creatorType": "author"
},
{
"firstName": "Robert L.",
"lastName": "Usinger",
"creatorType": "author"
},
{
"firstName": "David",
"lastName": "Lukas",
"creatorType": "author"
},
{
"firstName": "John",
"lastName": "Game",
"creatorType": "contributor"
},
{
"firstName": "Peter",
"lastName": "Gaede",
"creatorType": "contributor"
},
{
"firstName": "Christopher",
"lastName": "Rogers",
"creatorType": "contributor"
},
{
"firstName": "Tom",
"lastName": "Taylor",
"creatorType": "contributor"
},
{
"firstName": "Bill",
"lastName": "Nelson",
"creatorType": "contributor"
},
{
"firstName": "Phyllis M.",
"lastName": "Faber",
"creatorType": "seriesEditor"
},
{
"firstName": "Bruce M.",
"lastName": "Pavlik",
"creatorType": "seriesEditor"
}
],
"date": "2004-09",
"ISBN": "9780520240964",
"abstractNote": "The magnificent and much-loved Sierra Nevada, called the \"Range of Light\" by John Muir, is the dominant feature on the California landscape. First published forty years ago, this handbook has become an enduring natural history classic, used by thousands to learn more about virtually every aspect of this spectacular mountain range—from its superb flora and fauna to its rugged topography. Comprehensive yet concise and portable, the book describes hundreds of species: trees and shrubs, flowering plants and ferns, fungi and lichens, insects and fish, amphibians and reptiles, and birds and mammals. Now completely updated and revised, it will continue to be the essential guide to the Sierra Nevada for a new generation of hikers, campers, tourists, naturalists, students, and teachers—everyone who wants to know more about this unique and beautiful mountain range. * Describes more than 750 of the species most likely to be encountered with more than 500 new color photographs and 218 detailed black-and-white drawings * Includes engaging and accessible introductory sections on Sierra Nevada topography, climate, geological history, and human history * The compact, updated species accounts make identification easy, provide informative remarks on ecology and life history, and note which species are threatened or endangered",
"language": "en",
"libraryCatalog": "www.ucpress.edu",
"numPages": "592",
"rights": "Available worldwide",
"shortTitle": "Sierra Nevada Natural History",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.ucpress.edu/book/9780520289888/division-system-in-crisis",
"items": [
{
"itemType": "book",
"title": "Division System in Crisis",
"creators": [
{
"firstName": "Nak-chung",
"lastName": "Paik",
"creatorType": "author"
},
{
"firstName": "Kim",
"lastName": "Myung-hwan",
"creatorType": "translator"
},
{
"firstName": "Sol",
"lastName": "June-Kyu",
"creatorType": "translator"
},
{
"firstName": "Song",
"lastName": "Seung-chul",
"creatorType": "translator"
},
{
"firstName": "Young-joo",
"lastName": "Ryu",
"creatorType": "translator"
},
{
"firstName": "Bruce",
"lastName": "Cumings",
"creatorType": "contributor"
}
],
"date": "2011-10",
"ISBN": "9780520289888",
"abstractNote": "Paik Nak-chung is one of Korea’s most incisive contemporary public intellectuals. By training a literary scholar, he is perhaps best known as an eloquent cultural and political critic. This volume represents the first book-length collection of his writings in English. Paik’s distinctive theme is the notion of a “division system” on the Korean peninsula, the peculiar geopolitical and cultural logic by which one nation continues to be divided into two states, South and North. Identifying a single structure encompassing both Koreas and placing it within the framework of the contemporary world-system, Paik shows how this reality has insinuated itself into virtually every corner of modern Korean life.",
"language": "en",
"libraryCatalog": "www.ucpress.edu",
"numPages": "280",
"rights": "Available worldwide",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.ucpress.edu/search.php?q=homer&submit=",
"defer": true,
"items": "multiple"
}
]
/** END TEST CASES **/
100Abe Jellinekhttps?://www\.deutschefotothek\.de//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/documents/obj/')) {
return "artwork";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.listItem');
for (let row of rows) {
let href = attr(row, '.listItemThumbnail a', 'href');
let title = ZU.trimInternal(text(row, '.description a'));
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) {
Object.keys(items).forEach(scrape);
}
});
}
else {
// scrape() wants a link to an image page, not a metadata page, because
// only image page URLs have the ID we need. so if we're on a metadata
// page, we just grab the link to the image page.
scrape(attr(doc, '.listItemThumbnail a', 'href') || url);
}
}
function scrape(url) {
let slug = url.match(/\/obj\/[^/?]+\/([^/?]+)/);
if (slug) {
let jsonURL = `https://iiif.arthistoricum.net/proxy/fotothek/${slug[1]}/manifest.json`;
ZU.doGet(jsonURL, function (json) {
scrapeManifest(json);
});
}
else {
throw new Error('Could not determine JSON URL');
}
}
function scrapeManifest(manifestJSON) {
let manifest = JSON.parse(manifestJSON);
let item = new Zotero.Item('artwork');
item.title = manifest.label;
if (item.title.startsWith('Serie:') && item.title.split(';').length > 1) {
item.title = item.title.split(';')[1];
}
item.abstractNote = manifest.description;
if (item.abstractNote) {
item.abstractNote = item.abstractNote.replace('Serie: Serie:', 'Serie:');
}
item.artworkMedium = 'Photograph';
for (let { label, value } of manifest.metadata) {
switch (label) {
case 'Urheber':
if (value.startsWith('n.a.')) {
// no personal author
item.creators.push({
lastName: value.replace(/n\.a\.;?\s*/, ''),
creatorType: 'artist',
fieldMode: 1
});
}
else {
// is this worth it? i'm not sure. but the catalog has a lot
// of misbracketed von-names
value = value.replace(/(\w+),\s*(\w+)\s+(von|van|de|St\.)\s*$/, '$3 $1, $2');
item.creators.push(ZU.cleanAuthor(value, 'artist', true));
}
break;
case 'Datierung':
item.date = ZU.strToISO(value);
break;
case 'Schlagwörter':
item.tags = value.split(';').map(tag => ({ tag: tag.trim() }));
break;
case 'Physische Beschreibung':
if (!item.abstractNote) {
item.abstractNote = value;
}
break;
}
}
if (manifest.sequences) {
for (let sequence of manifest.sequences) {
if (!sequence.canvases) continue;
for (let canvas of sequence.canvases) {
if (!canvas.images) continue;
for (let image of canvas.images) {
if (!image.resource) continue;
item.attachments.push({
title: 'Full-Size Scan',
mimeType: image.resource.format.replace('images', 'image'),
url: image.resource['@id']
});
}
}
}
}
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://www.deutschefotothek.de/documents/obj/72059007",
"items": [
{
"itemType": "artwork",
"title": "Rittersporn (Delphinium). Teil eines am Stengel getrockneten Blattes",
"creators": [
{
"firstName": "Karl",
"lastName": "Blossfeldt",
"creatorType": "artist"
}
],
"date": "1895",
"abstractNote": "Bild",
"artworkMedium": "Photograph",
"libraryCatalog": "Deutsche Fotothek",
"attachments": [
{
"title": "Full-Size Scan",
"mimeType": "image/jpeg"
}
],
"tags": [
{
"tag": "Archiv der Fotografen"
},
{
"tag": "Botanik"
},
{
"tag": "Hahnenfußgewächse"
},
{
"tag": "Ornament"
},
{
"tag": "Pflanze"
},
{
"tag": "Pflanzenfotografie"
},
{
"tag": "Rittersporn"
},
{
"tag": "Studie"
},
{
"tag": "plant photography"
},
{
"tag": "vegetabil"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.deutschefotothek.de/documents/obj/89041423/tu_hks_0001408",
"items": [
{
"itemType": "artwork",
"title": "Malerische Reisebilder Dresden Blatt 2",
"creators": [
{
"lastName": "Herm. Krone's photogr. Kunstverlag, Dresden",
"creatorType": "artist",
"fieldMode": 1
}
],
"date": "1855",
"abstractNote": "Serie: Historisches Lehrmuseum für Photographie (Lehrtafeln);Malerische Reisebilder Dresden Blatt 2;",
"artworkMedium": "Photograph",
"libraryCatalog": "Deutsche Fotothek",
"attachments": [
{
"title": "Full-Size Scan",
"mimeType": "image/jpeg"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.deutschefotothek.de/documents/obj/72025945",
"items": [
{
"itemType": "artwork",
"title": "Guanako (Lama guanicoe), auch Huanako im Zoologischen Garten Dresden. Weibliches Tier",
"creators": [
{
"firstName": "Dietmar",
"lastName": "Alex",
"creatorType": "artist"
}
],
"date": "1961",
"abstractNote": "Dresden",
"artworkMedium": "Photograph",
"libraryCatalog": "Deutsche Fotothek",
"attachments": [
{
"title": "Full-Size Scan",
"mimeType": "image/jpeg"
}
],
"tags": [
{
"tag": "Guanako"
},
{
"tag": "Paarhufer"
},
{
"tag": "Säugetier"
},
{
"tag": "Tier"
},
{
"tag": "Tierfotografie"
},
{
"tag": "Zoo"
},
{
"tag": "Zoologie"
},
{
"tag": "Zoologischer Garten"
},
{
"tag": "Zootier"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.deutschefotothek.de/ete?action=queryGallery&index=fotografen&desc=%22Alvensleben,%20Christian%20von%22&sortby=docnum_desc",
"items": "multiple"
},
{
"type": "web",
"url": "http://www.deutschefotothek.de/documents/obj/71610234/adf_cva_0000669",
"items": [
{
"itemType": "artwork",
"title": "Farol de Nazaré 15",
"creators": [
{
"firstName": "Christian",
"lastName": "von Alvensleben",
"creatorType": "artist"
}
],
"date": "2016",
"abstractNote": "Serie: MACARÉU;Farol de Nazaré",
"artworkMedium": "Photograph",
"libraryCatalog": "Deutsche Fotothek",
"attachments": [
{
"title": "Full-Size Scan",
"mimeType": "image/jpeg"
}
],
"tags": [
{
"tag": "Archiv der Fotografen"
},
{
"tag": "Portugal"
},
{
"tag": "Seestück"
},
{
"tag": "Wasser"
},
{
"tag": "Welle"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Abe Jellinek^https://katalog\.slub-dresden\.de//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/id/')) {
return guessType(doc);
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function guessType(doc) {
for (let name of doc.querySelectorAll('.fieldname')) {
if (!name.textContent.includes('Medientyp')
&& !name.textContent.includes('Media type')) {
continue;
}
let value = ZU.trimInternal(name.nextSibling.textContent).toLowerCase();
if (value.includes('article') || value.includes('artikel')) {
return 'journalArticle';
}
else if (value.includes('book component part') || value.includes('buchkapitel')) {
return 'bookSection';
}
break;
}
return 'book';
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.result-title a[href*="/id/"]');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, _url) {
let risEmbedURL = attr(doc, '.sharingItem.ris', 'href');
let accessURL = attr(doc, '#links-box a', 'href');
let publishedIn = ZU.trimInternal(text(doc, '.series .internal'));
ZU.processDocuments(risEmbedURL, function (risDoc) {
// this is how the site's download button does it
let risText = [...risDoc.querySelectorAll('.citation_field')]
.map(elem => elem.textContent.trim().replace(/[\n\r\t]/g, ''))
.join('\r\n');
var translator = Zotero.loadTranslator("import");
translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7");
translator.setString(risText);
translator.setHandler("itemDone", function (obj, item) {
if (item.place) {
item.place = item.place
.replace('[u.a.]', '')
.replace(/\[(.*)\]/, '$1');
}
if (item.itemType == 'journalArticle' && !item.publicationTitle) {
if (publishedIn.split(';').length == 1) {
item.publicationTitle = publishedIn;
}
else {
let parts = publishedIn.split(';');
item.publicationTitle = parts[0];
item.volume = (parts[1].match(/\s*([\d/-]+)/) || [])[1];
item.issue = (parts[1].match(/,\s*(\d+)\s*,/) || [])[1];
item.pages = (parts[1].match(/Seite ([\d\s-]+)/) || [])[1];
}
}
else if (item.itemType == 'bookSection' && !item.bookTitle) {
item.bookTitle = publishedIn;
}
if (!item.url || item.url.includes('//slubdd.de/katalog')) {
item.url = accessURL;
}
if (item.date) {
item.date = ZU.strToISO(item.date);
}
item.complete();
});
translator.translate();
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://katalog.slub-dresden.de/en/id/0-279433018",
"items": [
{
"itemType": "book",
"title": "The renaissance of Jewish culture in Weimar Germany",
"creators": [
{
"lastName": "Brenner",
"firstName": "Michael",
"creatorType": "author"
}
],
"date": "1996",
"ISBN": "9780300062625",
"libraryCatalog": "SLUB Dresden",
"place": "New Haven, Conn.",
"publisher": "Yale Univ. Press",
"attachments": [],
"tags": [
{
"tag": "Deutschland"
},
{
"tag": "Geschichte 1918-1933"
},
{
"tag": "Intellektuelle"
},
{
"tag": "Juden"
},
{
"tag": "Judentum"
},
{
"tag": "Jüdische Kultur"
},
{
"tag": "Kultur"
},
{
"tag": "Kulturelle Identität"
},
{
"tag": "Weimarer Republik"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://katalog.slub-dresden.de/en/id/0-1356953859",
"items": [
{
"itemType": "book",
"title": "Medical manufacturing",
"creators": [
{
"lastName": "Aronson",
"firstName": "Robert B.",
"creatorType": "author"
},
{
"lastName": "Koelsch",
"firstName": "James R.",
"creatorType": "author"
}
],
"date": "2007",
"libraryCatalog": "SLUB Dresden",
"place": "Milwaukee, Wis.",
"publisher": "Society of Manufacturing Engineers",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://katalog.slub-dresden.de/en?tx_find_find%5Bq%5D%5Bdefault%5D=Malerei",
"items": "multiple"
},
{
"type": "web",
"url": "https://katalog.slub-dresden.de/en/id/0-1623321026",
"items": [
{
"itemType": "journalArticle",
"title": "Sorbische Musik",
"creators": [
{
"lastName": "Kobjela",
"firstName": "Detlef",
"creatorType": "author"
}
],
"date": "1998",
"libraryCatalog": "SLUB Dresden",
"pages": "2-3",
"publicationTitle": "Journal Neue Lausitzer Philharmonie",
"volume": "1998/99",
"attachments": [],
"tags": [
{
"tag": "Musik"
},
{
"tag": "Sorben"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://katalog.slub-dresden.de/en/id/0-1628277424",
"items": [
{
"itemType": "journalArticle",
"title": "Sorbische Malerei",
"creators": [
{
"lastName": "Nedo",
"firstName": "Pawoł",
"creatorType": "author"
}
],
"date": "1953",
"ISSN": "0006-2391",
"issue": "4",
"libraryCatalog": "SLUB Dresden",
"pages": "54-56",
"publicationTitle": "Bildende Kunst",
"volume": "1953",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Aurimas Vinckevicius, Pierre-Alain Mignot, Michael Berkowitz, Hélène Prieto, Jean-François Rivière^https?://journals\.openedition\.org//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2020-2021 Aurimas Vinckevicius, Pierre-Alain Mignot, Michael Berkowitz, Hélène Prieto, Jean-François Rivière
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
var types = ZU.xpath(doc, '//meta[@name="DC.type"]/@content');
for (let i = 0, n = types.length; i < n; i++) {
switch (types[i].textContent.toLowerCase()) {
case 'journalarticle':
return 'journalArticle';
case 'collection':
return 'multiple';
case 'booksection':
return 'bookSection';
}
}
if (ZU.xpath(doc, '//div[@id="inside"]/div[@class="sommaire"]/dl[@class="documents"]/dd[@class="titre"]/a').length
|| ZU.xpath(doc, '//ul[@class="summary"]//div[@class="title"]/a').length) {
return "multiple";
}
else if (ZU.xpath(doc, '//h1[@id="docTitle"]/span[@class="text"]').length
|| /document\d+/.test(url)) {
return "journalArticle";
}
return false;
}
function scrape(doc, url) {
// Example: https://journals.openedition.org/remi/persee-144614
if (/persee-\d+/.test(url)) {
// the article is on Persée portal, getting it to be translated by COinS
let translator = Zotero.loadTranslator("web");
translator.setTranslator("05d07af9-105a-4572-99f6-a8e231c0daef");
translator.setDocument(doc);
translator.translate();
}
else {
// use Embeded Metadata
let translator = Zotero.loadTranslator('web');
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
// editor and translator declarations not part of DC spec
// editors (and compilers)
var editors = ZU.xpath(doc, '//meta[@name="DC.contributor.edt" or @name="DC.contributor.com"]/@content');
for (let i = 0, n = editors.length; i < n; i++) {
item.creators.push(
ZU.cleanAuthor(editors[i].textContent, 'editor', true));
}
// translators
var trans = ZU.xpath(doc,
'//meta[@name="DC.contributor.trl"]/@content');
for (let i = 0, n = trans.length; i < n; i++) {
item.creators.push(
ZU.cleanAuthor(trans[i].textContent, 'translator', true));
}
// fix all caps for author last names
for (let i = 0; i < item.creators.length; i++) {
if (item.creators[i].lastName == item.creators[i].lastName.toUpperCase()) {
item.creators[i].lastName = ZU.capitalizeTitle(item.creators[i].lastName.toLowerCase(), true);
}
}
// set abstract and keywords based on documents language
var locale = ZU.xpathText(doc, '//meta[@name="citation_language"]/@content');
// default to french if not set
locale = locale ? locale.toLowerCase() : 'fr';
// get abstract and tags in document language
// or the first locale available
item.abstractNote = ZU.xpathText(doc,
'//meta[@name="description" or @name="DC.description"][lang("' + locale + '") or @lang="' + locale + '"][1]/@content')
|| ZU.xpathText(doc,
'//meta[@name="description" or @name="DC.description"][1]/@content');
var tags = ZU.xpathText(doc,
'//meta[@name="keywords" or @name="DC.subject"][lang("' + locale + '") or @lang="' + locale + '"][1]/@content')
|| ZU.xpathText(doc,
'//meta[@name="keywords" or @name="DC.subject"][1]/@content');
if (tags) {
item.tags = tags.trim().split(/\s*,\s*/);
}
delete item.extra;
// The site lists all editor of journals as editor in the header. Remove them.
// I don't think there is a use case for editors for journal articles
if (item.itemType === "journalArticle") {
for (let i = 0; i < item.creators.length; i++) {
if (item.creators[i].creatorType === "editor") {
item.creators.splice(i--, 1);
}
}
}
for (let i = 0; i < item.attachments.length; i++) {
if (item.attachments[i].title == 'Snapshot') {
item.attachments.splice(i, 1);
break;
}
}
// store the language-specific url
item.url = url;
item.complete();
});
translator.getTranslatorObject(function (trans) {
// override some of the mappings
trans.addCustomFields({
'prism.number': 'issue',
'prism.volume': 'volume',
'DC.title': 'title'
});
trans.doWeb(doc, url);
});
}
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
var results = ZU.xpath(doc, '//div[@id="inside"]/div[@class="sommaire"]/dl[@class="documents"]/dd[@class="titre"]');
if (!results.length) {
results = ZU.xpath(doc, '//ul[@class="summary"]//div[@class="title"]');
}
Zotero.selectItems(ZU.getItemArray(doc, results), function (selectedItems) {
if (!selectedItems) return true;
var urls = [];
for (let i in selectedItems) {
urls.push(i);
}
ZU.processDocuments(urls, scrape);
return true;
});
}
else {
scrape(doc, url);
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://journals.openedition.org/amerika/1283",
"items": "multiple"
},
{
"type": "web",
"url": "https://journals.openedition.org/e-spania/12303?lang=fr",
"items": [
{
"itemType": "journalArticle",
"title": "Le testament d’Elvire (Tábara, 1099)",
"creators": [
{
"firstName": "Georges",
"lastName": "Martin",
"creatorType": "author"
}
],
"date": "2008/02/01",
"DOI": "10.4000/e-spania.12303",
"ISSN": "1951-6169",
"abstractNote": "Le testament d’Elvire livre de précieuses informations sur la réalité historique de l’infantat : son implantation, la composition de ses biens, ses évolutions, les formes de son acquisition et de sa transmission, sa fonction politique. Mais il nous renseigne aussi sur une infante de niveau moyen, sur son cadre de vie, son entourage, ses activités, les réseaux de son pouvoir et même sur sa foi.",
"issue": "5",
"language": "fr",
"libraryCatalog": "journals.openedition.org",
"publicationTitle": "e-Spania. Revue interdisciplinaire d’études hispaniques médiévales et modernes",
"rights": "Les contenus de la revue e-Spania sont mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d'Utilisation Commerciale - Pas de Modification 4.0 International.",
"url": "https://journals.openedition.org/e-spania/12303?lang=fr",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Alphonse VI de Castille et de León"
},
{
"tag": "Elvire Fernandez"
},
{
"tag": "Ferdinand Ier de Castille et de León"
},
{
"tag": "Saint-Isidore de León"
},
{
"tag": "Sancie Raimundez"
},
{
"tag": "Urraque Fernandez"
},
{
"tag": "XIe siècle"
},
{
"tag": "infantat"
},
{
"tag": "infantaticum"
},
{
"tag": "infante Elvire"
},
{
"tag": "infante Sancie"
},
{
"tag": "infante Urraque"
},
{
"tag": "testament"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://journals.openedition.org/e-spania/12303?lang=es",
"items": [
{
"itemType": "journalArticle",
"title": "Le testament d’Elvire (Tábara, 1099)",
"creators": [
{
"firstName": "Georges",
"lastName": "Martin",
"creatorType": "author"
}
],
"date": "2008/02/01",
"DOI": "10.4000/e-spania.12303",
"ISSN": "1951-6169",
"abstractNote": "Le testament d’Elvire livre de précieuses informations sur la réalité historique de l’infantat : son implantation, la composition de ses biens, ses évolutions, les formes de son acquisition et de sa transmission, sa fonction politique. Mais il nous renseigne aussi sur une infante de niveau moyen, sur son cadre de vie, son entourage, ses activités, les réseaux de son pouvoir et même sur sa foi.",
"issue": "5",
"language": "fr",
"libraryCatalog": "journals.openedition.org",
"publicationTitle": "e-Spania. Revue interdisciplinaire d’études hispaniques médiévales et modernes",
"rights": "Les contenus de la revue e-Spania sont mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d'Utilisation Commerciale - Pas de Modification 4.0 International.",
"url": "https://journals.openedition.org/e-spania/12303?lang=es",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Alphonse VI de Castille et de León"
},
{
"tag": "Elvire Fernandez"
},
{
"tag": "Ferdinand Ier de Castille et de León"
},
{
"tag": "Saint-Isidore de León"
},
{
"tag": "Sancie Raimundez"
},
{
"tag": "Urraque Fernandez"
},
{
"tag": "XIe siècle"
},
{
"tag": "infantat"
},
{
"tag": "infantaticum"
},
{
"tag": "infante Elvire"
},
{
"tag": "infante Sancie"
},
{
"tag": "infante Urraque"
},
{
"tag": "testament"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://journals.openedition.org/chs/142",
"items": [
{
"itemType": "journalArticle",
"title": "L’encadrement des Algériens de Paris (1944-1954), entre contraintes juridiques et arbitraire policier",
"creators": [
{
"firstName": "Emmanuel",
"lastName": "Blanchard",
"creatorType": "author"
}
],
"date": "2007/06/01",
"DOI": "10.4000/chs.142",
"ISSN": "1422-0857",
"abstractNote": "Au sortir de la Seconde Guerre mondiale, pour sauvegarder son empire colonial, la France est contrainte de reconnaître la citoyenneté des Français musulmans d’Algérie (FMA). Dès lors, ceux-ci se retrouvent en métropole dans une situation proche de celle d’autres citoyens diminués (vagabonds, prostituées…) qui, bien que juridiquement peu accessibles à la répression policière sont considérés comme « indésirables » et constituent la clientèle privilégiée de forces de l’ordre agissant aux marges de la loi. Si l’ethnicité, la xénophobie, et la situation coloniale contribuent à définir les Algériens comme « indésirables », le répertoire d’actions policier envers les FMA tient avant tout à la façon dont l’arène policière est médiatisée par le contrôle et la représentation politiques.",
"issue": "1",
"language": "fr",
"libraryCatalog": "journals.openedition.org",
"pages": "5-25",
"publicationTitle": "Crime, Histoire & Sociétés / Crime, History & Societies",
"rights": "© Droz",
"url": "https://journals.openedition.org/chs/142",
"volume": "11",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://journals.openedition.org/remi/2495",
"items": [
{
"itemType": "journalArticle",
"title": "Multiracial Classification on the United States Census",
"creators": [
{
"firstName": "Ann",
"lastName": "Morning",
"creatorType": "author"
}
],
"date": "2005/06/01",
"DOI": "10.4000/remi.2495",
"ISSN": "0765-0752",
"abstractNote": "In 1997, the United States’ federal guidelines on racial classification were amended to permit individual respondents to identify themselves as members of more than one race. This measure, taken at the urging of a vocal community of mixed-race individuals and organizations, was seen by many as having important consequences. In this article I examine the predictions about the impact of multiple-race classification, and assess how accurate they have proved to be. I conclude however that neither the hopes nor fears associated with multiracial recognition have been realized. Instead, the most important legacy of the recognition of mixed-race America is likely to be its contribution to the debate about classifying a much larger segment of the population: the Hispanic community.",
"issue": "2",
"language": "en",
"libraryCatalog": "journals.openedition.org",
"pages": "111-134",
"publicationTitle": "Revue européenne des migrations internationales",
"rights": "© Université de Poitiers",
"url": "https://journals.openedition.org/remi/2495",
"volume": "21",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "ethnicisation"
},
{
"tag": "méthodologie"
},
{
"tag": "recensement"
},
{
"tag": "statistiques"
},
{
"tag": "États-Unis"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Abe Jellinek^https?://menus\.nypl\.org//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (/\/menu(s|_pages)\/\d+/.test(url)) {
return "document";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.item .menu');
for (let row of rows) {
let href = attr(row, 'a[href*="/menus/"]', 'href');
let title = ZU.trimInternal(text(row, 'a:not(.thumbportrait)') + ' '
+ (text(row, 'div').match(/([0-9]{4})/) || [''])[0]);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else if (url.includes('/menu_pages/')) {
ZU.processDocuments(attr(doc, '#carousel li:first-child a', 'href'), scrape);
}
else {
scrape(doc, url);
}
}
function scrape(doc, _url) {
let item = new Zotero.Item('document');
item.title = text(doc, 'div.modes') + ' menu';
item.libraryCatalog = 'New York Public Library Menu Collection';
item.numPages = '' + doc.querySelector('.pages').childElementCount;
item.url = attr(doc, '.pages a', 'href').replace(/\/explore$/, '');
if (item.url.startsWith('/')) {
// only one case (/menu_pages/12345) to deal with here.
// no HTTPS.
item.url = 'http://menus.nypl.org' + item.url;
}
item.extra = 'genre: Restaurant menu\n';
for (let p of doc.querySelectorAll('.metadata p')) {
let text = ZU.trimInternal(p.innerText);
if (text.startsWith('Location')) {
text = text.substring('Location'.length).trim();
item.extra += `Restaurant Location: ${text}\n`;
}
else if (text.startsWith('Date')) {
text = text.substring('Date'.length);
item.date = ZU.strToISO(text);
}
else if (text.startsWith('Place')) {
text = text.substring('Place'.length).trim();
item.extra += `Place: ${text}\n`;
}
else if (text.startsWith('Physical description')) {
text = text.substring('Physical description'.length).trim();
item.extra += `Physical Description: ${text}\n`;
}
else if (text.startsWith('Call number')) {
text = text.substring('Call number'.length);
item.callNumber = text;
}
else if (text.startsWith('Notes')) {
text = text.substring('Notes'.length);
item.abstractNote = text;
}
}
let note = '<h1>Dishes</h1><ul>';
for (let row of doc.querySelectorAll('.dishtable > tbody > tr')) {
let name = text(row, '.name');
let price = text(row, '.price');
if (price == '-') {
note += `<li>${name}</li>`;
}
else {
note += `<li>${name} (price: ${price})</li>`;
}
}
note += '</ul>';
item.notes.push({ note });
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://menus.nypl.org/menus/26680",
"items": [
{
"itemType": "document",
"title": "Zum Durnbrau menu",
"creators": [],
"date": "2005-01-14",
"abstractNote": "Dieter Zander Collection; includes three paper inserts.",
"callNumber": "Zander 324",
"extra": "genre: Restaurant menu\nRestaurant Location: Zum Durnbrau\nPlace: Zum Durnbrau\nPhysical Description: Tri-fold; 11.75 x 16.5 inches folded",
"libraryCatalog": "New York Public Library Menu Collection",
"url": "http://menus.nypl.org/menu_pages/46080",
"attachments": [],
"tags": [],
"notes": [
{
"note": "<h1>Dishes</h1><ul><li>Gebrannte Grieβsupp'n 3.90 (price: 3.9)</li><li>Broccolirahmsupp'n 4.10 (price: 4.1)</li><li>Gebrannte Grießsupp'n, Seelachsfilet Gebacken, Remouladensoße, Kartoffel Gurkensalat (price: 9.7)</li><li>Seelachsfilet Gebacken, Remouladensosse, Kartoffel Gurkensalat (price: 9.7)</li><li>Saure Brez'n Knödel, Dünn Aufgeschnitten, Mit Regensburger Wurst (price: 7.2)</li><li>Heringssalat Mit Zwiebelringen Und Hausbrot 8.20 (price: 8.2)</li><li>Blattsalat In Kräuterrahmdressing Mit In Butter Gebratenen Austernpilzen (price: 6.4- 0.0)</li><li>Schweinskopf Sülze, Hausgemacht Mit Röstkartoffeln 9.20 / Klein 6.40 (price: 6.4- 0.0)</li><li>2 Ochsenaugen Auf Rahmspinat, Dazu Salzkartoffeln (price: 6.6)</li><li>Schweinsleber Geschnetzelt, Sauer, Mit Röstkartoffeln Und Grünem Salat 8.70 / Klein 6.10 (price: 6.1- 0.0)</li><li>Käsespätzle Hausgemacht, Mit Röstzwiebeln Und Gemischtem Salatteller 8.70 / Klein 6.10 (price: 6.1- 0.0)</li><li>Tagesgemüse Blumenkohl Mit Schinken Und Käse überbacken, Salzkartoffeln (price: 9.2)</li><li>Kassler Vom Rost, Mit Gemischtem Kartoffel Gurkensalat 9.20 (price: 9.2)</li><li>Hühnerbrüstchen Goldgelb Gebacken Mit Remouladensoße Und Gemischtem Salat 9.70 (price: 9.7)</li><li>Geschmorte Ochsenwade In Zwiebelsoße Mit Brezenknödel Und Grünem Salat 10.20 / Klein 7.10 (price: 7.1- 0.0)</li><li>Schweinsbraten Mit Kruste, Dazu Kartoffelknödel Und Speckkrautsalat 10.20 / Klein 7.10 (price: 7.1- 0.0)</li><li>1/2 Schweinshax'n Knusprig Gebraten, Mit Kartoffelknödel Und Speckkrautsalat 12.30 (price: 12.3)</li><li>Spanferkel Knusprig, In Dunkelbiersoße Mit Kartoffelknödel Und Speckkrautsalat 16.40 / Klein 11.50 (price: 11.5- 0.0)</li><li>Schellfisch Gekocht, In Senfrahmsoße Mit Petersilienkartoffeln Und Blattsalat 10.20 (price: 10.2)</li><li>Dampfnudel Mit Heißer Vanillesoße 5.10 (price: 5.1)</li><li>Castell Castell [Ww) Silvaner Qb A Qualitätswein Trocken Duft Nach Pfirsich Und Banane, Jung, Frisch, Handlese, Cremig Und Weich (price: 0.25- 0.0)</li><li>Spatenbräu Hell, Feinstes Münchner Lagerbier 0,5 L 3,20 (price: 3.2)</li><li>Spatenbräu Pils 25 L 1,90 / 0,3 L 3,20 (price: 1.9- 0.0)</li><li>Spatenbräu Dunkles Bier 0,5 L 3,20 (price: 3.2)</li><li>Schloss Castell [Ww) Bacchus Qb A Qualitätswein 0,25 5,00 (price: 5.0)</li><li>Schnitt (Schaumhalbe), Hell Oder Dunkel Lagerbier 0,25 L 1,90 / 0,4 L 2,80 (price: 1.9- 0.0)</li><li>Franziskaner Hefeweissbier Hell O,5 L 3,50 (price: 3.5)</li><li>Radler (Lagerbier Mit Brauselimonade) 0,3 L 2,30 / 0,5 L 3.20 (price: 2.3- 0.0)</li><li>Grüner Veltliner Vom Urgestein Trocken [Ww) Weingut Franz Türk 0,25 7,50 / 0,75 22,00 (price: 7.5- 0.0)</li><li>Russen (Hefeweissbier Mit Brauselimonade) 0,5 L 3,50 (price: 3.5)</li><li>Pfälzer Landwein Rheinpfalz, Landau (Ww), Deutscher Tafelwein Steiner'scher Keller 0,35 5,00 (price: 5.0)</li><li>Franziskaner Hefeweissbier Dunkel 0,5 L 3,50 (price: 3.5)</li><li>Spaten Alkoholfrei, Ein Herbfrisches Schankbier 0,5 L 3,20 (price: 3.2)</li><li>Light Bier, Das Kalorienarme Mit Weniger Alkohol 0,5 L 3,70 (price: 3.2)</li><li>Triumphator, Dunkles Starkbier 0,5 L 3,70 (price: 3.7)</li><li>Spaten Diätpils 0,33 L 3,20 (price: 3.2)</li><li>Castell (Rose), Rotling Qb A Qualitätswein Trocken 0,25 5,00 (price: 5.0)</li><li>Hefeweizen Leicht 0,5 L 3,50 (price: 3.5)</li><li>Reichsgraf Von Kesselstatt (Rw), Riesling Feinherb Qualitätswein Mosel Saar Ruwer 0,25 5,50 (price: 5.5)</li><li>Gerolsteiner Original Mineralwasser 0,25 L 2,20 (price: 2.2)</li><li>Staatlich Fachingen Mineralwasser 0,5 L 3,20 / 0,25 L 2,40 (price: 2.4- 0.0)</li><li>Zweigelt Weingut Markowitsch (Rw), Landwein Qualitätswein Aus Dem Carnuntum 0,25 5,50 (price: 5.5)</li><li>Libella Zitronenlimonade 0,5 L 3,40 (price: 3.4)</li><li>Pepsi Cola (Coffeinhaltige Limonade) 0,33 L 2,50 (price: 2.5)</li><li>Mirinda 0,33 L 2,50 (price: 2.5)</li><li>Spezi Schwip Schwap (Coffeinhaltige Limonade) 0,5 L 3,50 (price: 3.5)</li><li>Apfelsaft 0,2 L 2,40 (price: 2.4)</li><li>Orangensaft 0,2 L 2,70 (price: 2.7)</li><li>Trollinger/Lemberger (Rw), Haberschlachter Heuchelberg, Qb A Schlosskellerei Affaltrach, Würtemberg 0,35 6,00 (price: 6.0)</li><li>Schwarzer Johannisbeernektar 0,2 L 2,70 (price: 2.7)</li><li>Tomatensaft 0,2 L 3,30 (price: 3.3)</li><li>Apfelschorle 0,25 L 2,10 (price: 2.1)</li><li>Apfelschorle 0,5 L 3,70 (price: 3.7)</li><li>Tasse Kaffee 2,30 (price: 2.3)</li><li>Haferl Kaffee 3,70 (price: 3.7)</li><li>Obstler Von Stettner 38 % Vol 2 Cl 2,50 (price: 2.5)</li><li>Espresso 2,00 (price: 2.0)</li><li>Cappuccino 2,70 (price: 2.7)</li><li>Altbayerischer Kartoffelschnaps 40 % Vol 2 Cl 2,50 (price: 2.5)</li><li>Heisse Schokolade Mit Schlagrahm 3,50 (price: 3.5)</li><li>Milch Kaffee 3,70 (price: 3.7)</li><li>Bärwurz Wurzelschnaps 40 % Vol 2 Cl 2,50 (price: 2.5)</li><li>Glas Tee 2,30 (price: 2.3)</li><li>Steinhäger, Dornkaat 28 % Vol 2 Cl 2,50 (price: 2.5)</li><li>Glühwein 4,50 (price: 4.5)</li><li>Grog Von 4 Cl Pott Rum 4,90 (price: 4.9)</li><li>Gebirgsenzian 40 % Vol 2 Cl 2,70 (price: 2.7)</li><li>Kaffee Hag (price: 2.3)</li><li>Zwetschgenwasser, Himbeergeist, Williamsbrine Oder Kirschwasser Je 42 % Vol 2 Cl 3,00 (price: 3.0)</li><li>Williamsbirne (price: 3.0)</li><li>Jägermeister 35 % Vol 2 Cl 2,70 (price: 2.7)</li><li>Underberg 44 % Vol 2 Cl 2,90 (price: 2.9)</li><li>Amaretto Di Saronne 2cl 3,00 (price: 3.0)</li><li>Fernet Branca (42 %) Oder Fernet Menta (40%) 2 Cl 2,90 (price: 2.9)</li><li>Ramazzotti (30 %) Avernar (40 %) 2 Cl 3,20 (price: 3.2)</li><li>Hennessy Cognac Vsop 2 Cl 3,70 (price: 3.7)</li><li>Asbach Uralt 38 % Vol 2 Cl 3,20 (price: 3.2)</li><li>Drambuie 2 Cl 3,50 (price: 3.5)</li><li>Hennessy Cognac Vsop 40 % Vol 2 Cl 3,70 (price: 3.7)</li><li>Calvados 42 % Vol 2 Cl 4,30 (price: 4.3)</li><li>La Vieille Prune, Ein Alter Pflaumenbrand 42 % Vol 2 Cl 4,70 (price: 4.7)</li><li>Hennessy Cognac Xo, 50 Jahre Alt 40 % Vol 2 Cl 9,80 (price: 9.8)</li><li>Jubiläums Aquavit 42 % Vol 2 Cl 3,20 (price: 3.2)</li><li>Malteser Aquavit 40 % Vol 2 Cl 3,30 (price: 3.3)</li><li>Linie Aquavit 41,5 % Vol 2 Cl 4,20 (price: 4.2)</li><li>Morand Williamine Oder Kirsch 43 % Vol 2 Cl 5,40 (price: 5.4)</li><li>Ziegler Sauerkirsche 43 % Vol 2 Cl 5,60 (price: 5.6)</li><li>Ziegler, Nr 1, Wildkirsche 43 % Vol 2 Cl 9,70 (price: 9.7)</li><li>Veith Adams Bierschnaps 42 % Vol 2 Cl 5,60 (price: 5.6)</li><li>Grappa Di Prosecco 42 % Vol 2 Cl 5,60 (price: 5.6)</li><li>Feigling Wodka Feige 2 Cl0 3,70 (price: 3.7)</li><li>Campari* 4 Cl 3,70 (price: 3.7)</li><li>Sherry, Halbtrocken Oder Trocken 5 Cl 3,70 (price: 3.7)</li><li>Lantenhammer Schlehengeist, Waldhimheergeist, Mirabellenbrand, Williamsbrand, Sauerkirschbrand 42 % Vol 2 Cl 4,70 (price: 4.7)</li><li>Pflaumenwein 5 Cl 4,30 (price: 4.3)</li><li>Aperol (Rhabarberbitter) 2 Cl 3,00 (price: 3.0)</li><li>Lantenhammer Obstler 40 % Vol 2 Cl 3,70 (price: 3.7)</li><li>Sauers Lüngerl Mit Semmelknödel 8,60 (price: 8.6)</li><li>Kälberne Milzwurst, Gebacken Mit Kartoffel Gurkensalat (Oder Aus'm Wurzelsud, Sauer, Mit Friscem Meerrettich) 10,20 (price: 10.2)</li><li>Abgeschmolzene Maultaschen In Zwiebelsoße, Mit Grünem Salat 10,50 (price: 10.5)</li><li>Kälberfüße, Ausgelöst Und Paniert, In Butter Gebacken, Mit Remouladensoße, Und Gemischtem Salatteller (Oder Kälberfüsse Aus'm Wurzelsud, Sauer, Mit Frischem Meerrettich) 10,50 (price: 10.5)</li><li>Ausgelöster Kalbskopf, Gebacken Mit Remouladensoße Und Gemischtem Kartoffel Gurkensalat (Oder Ausgelöster Kalbskopf Aus'm Wurzelsud, Sauer, Mit Frischem Meerrettich) 11,50 (price: 11.5)</li><li>Ochsenfleisch, Paniert, In Butter Gebacken, Mit Remouladensoße Und Kartoffel Gurkensalat 12,20 (price: 12.2)</li><li>Ochsenfleisch Mit Ei Und Jungen Zwiebeln In Butter Abgeröstet, Dazu Salzkartoffeln Und Blattsalat 12,20 (price: 12.2)</li><li>Surhax'n (Eisbein) Auf Sauerkraut Mit Röstkartoffeln 12,20 (price: 12.2)</li><li>Kalbsbries Natur, In Butter Gebraten, Mit Champignon Kräuterrahmsosse Dazu Petersilienkartoffeln 17,80 (price: 17.8)</li><li>Kalbsbries Paniert, In Butter Gebacken, Mit Remouladensoße Und Kartoffel Gurkensalat 17,80 (price: 17.8)</li><li>Niederbayerische Mast Gans Aus'm Bratrohr Mit Apfelblaukraut Und Handgeriebenen Kartoffelknödeln</li><li>Niederbayerische Mast Ente Aus'm Bratrohr Mit Apfelblaukraut Und Handgeriebenen Kartoffelknödeln</li><li>Schweinekotelett Paniert In Butter Gebacken Mit Gemischtem Kartoffel Gurkensalat 12,00 (price: 12.0)</li><li>Schweinkotelett Natur, In Krautersoße Mit Röstkartoffeln Und Gemischten Salat 12,20 (price: 12.2)</li><li>Schweineschnitzel Gebacken, Mit Röstkartoffeln Und Gemischtem Salatteller 12,00 (price: 12.0)</li><li>Schweinefilet Vom Grill, Mit Champignons, Petersiliekartoffeln Und Frischem Marktgemüse 15,30 (price: 15.3)</li><li>Wiener Schnitzel Vom Kalb, In Butter Gebacken, Mit Röstkartoffeln Und Gemischtem Salatteller 16,30 (price: 16.3)</li><li>Zwiebelrostbraten (Aus Der Lende) Mit Röstkartoffeln Und Grünen Bohnen 16,30 (price: 16.3)</li><li>Filetsteak Vom Rind, In Gestoßenem Pfeffer Gebraten, In Leichter Cognac Rahmsoße, Mit Butterreis Und Frischem Marktgemüse 21,40 (price: 21.4)</li><li>Schlachtschüssel Blut Und Leberwurst Mit Wellfleisch Auf Sauerkraut, Dazu Kartoffelpüree.</li><li>Original Miesbacher, Delikatesskase Auch Sauer Mit Zwiebelringen 4,30 (price: 4.3)</li><li>Allgäuer Emmentaler Käse, Aufgeschnitten 6,60 (price: 6.6)</li><li>Obatzter Käse, Garniert Mit Zwiebelringen 7,10 (price: 7.1)</li><li>Echter Gorgonzola Auch Sauer Mit Zwiebelringen 9,70 (price: 9.7)</li><li>Bayerischer Käseteller 12,20 (price: 12.2)</li><li>Kleiner Pfannkuchen Mit Marmelade Gefüllt 3,20 (price: 3.2)</li><li>Apfelstrudel Mit Heißer Vanillesoße 4,70 (price: 4.7)</li><li>Gemischtes Eis Mit Schlagrahm 4,70 (price: 4.7)</li><li>Bayerische Creme Mit Schlagrahm Und Fruchtsoße 5,10 (price: 5.1)</li><li>Eisbecher Mit Amarenakirschen Und Eingelegten Pflaumen, Schlagrahm 7,60 (price: 7.6)</li><li>Semmelschmarrn Mit Zwetschgenkompott 9,10 (price: 9.1)</li><li>Kaiserschmarrn Mit Mandeln, Rosinen Und Apfelmus 10,20 (price: 10.2)</li><li>Bayerische Brotsuppe, Abgeschmolzen, Mit Gerösteten Zwiebeln 4,50 (price: 4.5)</li><li>Kräftige Kesselbrühe, Mit Hausgemachtem Leberknödel 4,50 (price: 4.5)</li><li>Münchner Kartoffelsuppe, Mit Lauchstreifen Und Räucherspeck 4,90 (price: 4.9)</li><li>Omelette Natur Mit Grünem Salat 6,40 (price: 6.4)</li><li>Rühreier Mit Schinken Und Grünem Salat 7,10 (price: 7.1)</li><li>Omelette Mit Schinken Oder Champignons Oder Käse Und Grünem Salat 8,60 (price: 8.6)</li><li>Speckpfannenkuchen Mit Gemischtem Salatteller 8,90 (price: 8.9)</li><li>Münchner Weisswurst*, Ab 2 Stück (price: 1.9)</li><li>Wiener Würstchen (price: 3.8)</li><li>Debreciner Würstchen (price: 4.0)</li><li>Münchner Stadtwurst Vom Rost Auf Sauerkraut (price: 6.6)</li><li>Münchner Stadtwurst Heissgelegt Auf Sauerkraut (price: 6.6)</li><li>Münchner Schweinsbratwürstl Mit Kraut (price: 6.1)</li><li>Gschwollne Würstl Mit Kartoffelsalat (price: 6.6)</li><li>Orig. Nürnberger Rostbratwürstl Mit Kraut (price: 4.9- 0.0)</li><li>4 Stuck Orig. Nurnberger Rostabratwurstl* Mit Kraut (price: 4.9)</li><li>8 Stuck Saure Zipfel* Im Wurzelsud Serviert (price: 9.1)</li><li>4 Stuck Saure Zipfel Im Wurselsud Serviert (price: 4.9)</li><li>Portion Bayerischer Leberkäs, Ofengebacken, Warm Serviert Mit Hausmachersenf (price: 6.4)</li><li>Leberkäs Kalt Mit Essiggurke Dazu Hausgemachter, Süsser Senf (price: 6.4)</li><li>Wurstsalat Aus Regensburgern Mit Zwiebelringen (price: 6.6)</li><li>Bayerischer Bauernpresssack Mit Zwiebelringen Schwarz Und Weiss (price: 6.6)</li><li>Bayerischer Bauernpresssack In Essig Und öl (price: 6.6)</li><li>Ochsenmaulsalat, Süss Sauer Angemacht Mit Zwiebeln (price: 7.6)</li><li>Knöcherlsülze Hausgemacht Mit Röstkartoffeln (price: 7.6)</li><li>Bayerischer Lumpensalat Aus Rindfleisch, Wurst, Käse, Tomate Und Zwiebeln (price: 7.6)</li><li>Kalter Braten, Dünn Geschnitten Mit Gemischtem Kartoffel Gurkensalat (price: 10.2)</li><li>Münchner Brotzeitbrettl Mit Hausbrot 12,50 (price: 12.5)</li><li>Orig. Niederbayerisches Bauerngeräuchertes Mit Apfelkren Und Hausbrot 12,70 (price: 12.7)</li><li>Bauernspeck, Luftgetrocknet, Dünn Aufgeschnitten 13,20 (price: 13.2)</li><li>Ochsenfleisch, Dünn Aufgeschnitten, Suüß Sauer Angemacht, Mit Zwiebel Und Gurkenstreifen, Röstkartoffeln 12,20 (price: 12.2)</li><li>Roastbeef, Rosa Gebraten Mit Remouladensoße Und Röstkartoffeln 16,80 (price: 16.8)</li><li>Tatar Garniert, Mit Butter Und Schwarzbrot 15,30 (price: 15.3)</li><li>Gemischte Salatplatte Aus Frischen Marktsalaten Mit Gekochtem Schinken 8,60 (price: 8.6)</li><li>Milde Matjesfilets In Apfel Sahnesoße Mit Butterkartoffeln 10,20 (price: 10.2)</li><li>Bierradi Mit Schnittlauchbrot Nach Saison!</li><li>Ochsenmaul Salat Suss Sauer Angemacht (price: 7.7)</li><li>Wade Gekocht, Dunn Aufgeschnitten, Suss Sauer Auf Blattsalat (price: 8.7)</li><li>Sulze, Vom Gekochten Tafelspitz Mit Gemuse, Dazu Rostkartoffeln (price: 11.2)</li><li>Tages Rahmgemüse</li><li>Gurkensalat</li><li>Blattsalat</li><li>Röstkartoffeln</li><li>Saures Kartoffelgemüse</li><li>Salzkartoffeln</li><li>Meerrettich Rahmsosse</li><li>Wurzelsud</li><li>Apfelmeerrettich</li><li>Schnittlauch Rahmsosse</li><li>Kutteln, In Brauner Sosse, Sauer Gekocht (price: 7.7)</li><li>Zunge, Gepokelt Und Gekocht, Zart Und Schmackhaft (price: 14.5)</li><li>Kronfleisch (Das Zwerchfell) Leicht Grobfaserig, Aber Mit Biss (price: 13.9)</li><li>Kopfbackerl Butterweich, Leicht Durchzogen (price: 14.5)</li><li>Tafelspitz (price: 17.9)</li><li>Brust Kern (price: 14.9)</li><li>Burgermeister Stuck (price: 19.9)</li><li>Fledermaus (price: 19.9)</li><li>Lende (price: 18.9)</li><li>Filet (price: 23.9)</li><li>Gemischtes Gekochtes, Drei Sorten Vom Ochs Mit Zunge In Einem Topf (price: 18.9)</li><li>Pfannkuchensupp'n 3.90 (price: 3.9)</li><li>Fenchelrahmsupp'n 4.10 (price: 4.1)</li><li>Camembert Gebacken Mit Preiselbeeren Und Rosti (price: 5.1)</li><li>Saure Brez'n Knodel, Dunn Aufgeschnitten, Mit Regensburger Wurst (price: 7.2)</li><li>Blattsalat In Krauterrahmdressing Mit Truthahnstreifen (price: 8.2)</li><li>Schweinskopf Sulze, Hausgemacht Mit Rostkartoffeln</li><li>3 Reiberdatschi Auf Sauerkraut Oder Mit Apfelmus (price: 7.2)</li><li>Hackbraten Mit Schwammerlrahmsosse, Butternudeln Und Grunem Salat (price: 8.2)</li><li>Schweinsleber Geschnetzelt, Sauer, Mit Rostkartoffeln Und Grunem Salat (price: 8.7)</li><li>Kasespatzle Hausgemacht, Mit Rostzwiebeln Und Gemischtem Salatteller (price: 8.7)</li><li>Zucchini Paprikagemuse Mit Schinken Und Kase Uberbacken, Kartoffeln (price: 9.2)</li><li>Huhnerbruschtchen Goldgelb Gebacken Mit Remouladensosse Und Gemischtem Salat (price: 9.7)</li><li>Geschmorte Ochsenwade In Zwiebelsosse Mit Brezenknodel Und Grunem Salat (price: 10.2)</li><li>Schweinsbraten Mit Kruste, Dazu Kartoffelknodel Und Speckkraustsalat (price: 10.2)</li><li>1/2 Schweinshax'n Knusprig Gebraten, Mit Kartoffelknodel Und Speckkrautsakat (price: 12.3)</li><li>Spanferkel Knusprig, In Dunkelbiersosse Mit Kartoffelknodel Und Speckkrautsalat (price: 16.4)</li><li>Cordon Bleu Vom Kalb, In Butter Gebraten Mit Rostkartoffeln Und Gemischtem Salatteller (price: 17.4)</li><li>Heilbutt Vom Grill, Mit Krauterbutter, Kartoffeln Und Salat (price: 14.3)</li><li>Apfelkucherl In Bierteig Gebacken, Mit Zimtzucker Und Vanilleeis (price: 5.1)</li></ul>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://menus.nypl.org/menus/28929/explore",
"items": [
{
"itemType": "document",
"title": "The Famous Anchor Sea Food House menu",
"creators": [],
"date": "1962-07-29",
"abstractNote": "German is secondary language",
"callNumber": "1962-0040_wotm",
"extra": "genre: Restaurant menu\nRestaurant Location: The Famous Anchor Sea Food House\nPhysical Description: 33.5x25.5cm folded; 33.5x51cm open",
"libraryCatalog": "New York Public Library Menu Collection",
"url": "http://menus.nypl.org/menu_pages/54352",
"attachments": [],
"tags": [],
"notes": [
{
"note": "<h1>Dishes</h1><ul><li>Fresh Fruit In Season</li><li>Manhattan Clam Chowder (price: 0.35- 25.0)</li><li>Tomato Juice (price: 0.25)</li><li>Jumbo Shrimp Cocktail (price: 1.2)</li><li>New England Fish Chowder (price: 0.35- 0.5)</li><li>Fresh Fruit Cup (price: 0.45)</li><li>Crab Lump Cocktail (price: 1.5)</li><li>Fresh Seafood Cocktail (price: 2.25)</li><li>Tomato Juice (price: 0.25)</li><li>Clam Broth (price: 0.25- 50.0)</li><li>Lobster Cocktail (Fresh Picked) (price: 1.95)</li><li>Filet Of Marinated Herring, Cream Sauce (price: 0.55)</li><li>Cherrystone Clams (6) (price: 0.75)</li><li>Clams A La Casino (price: 2.25)</li><li>Fried Clams, Tartare (price: 1.95)</li><li>Oysters: Blue Points (6) On The Half Shell (price: 0.95)</li><li>Clam Stew In Milk (price: 1.5)</li><li>Clam Stew, Half And Half (price: 1.85)</li><li>Oysters: Cape Cods (6) On The Half Shell</li><li>Broiled Oysters (Crumb) (price: 2.25)</li><li>Oysters A La Casino (price: 3.25)</li><li>Oyster Stew: Half And Half (price: 2.35)</li><li>Oyster Stew: Milk (price: 2.1)</li><li>Oyster Fry, Sauce Tartare (price: 2.1)</li><li>Basket Steamed Soft Main Clams, Broth, Drawn Butter (price: 1.95)</li><li>Oyster Fry With Bacon, Sauce Tartare (price: 2.1)</li><li>Sea Scallops Saute (price: 2.45)</li><li>Sea Scallops Newburg (price: 2.45)</li><li>Peconic Deep Sea Scallops, Fried (price: 2.15)</li><li>Peconic Deep Sea Scallops, Broiled (price: 2.45)</li><li>Long Island Bay Scallops, Fried (price: 2.5)</li><li>Long Island Bay Scallops, Broiled (price: 2.75)</li><li>Long Island Bay Scallops Saute (price: 2.75)</li><li>Sea Scallops Au Gratin (price: 2.75)</li><li>Jumbo Shrimp Cocktail (price: 1.2)</li><li>Curried Shrimps, With Steamed Rice, Chutney (price: 2.75)</li><li>Fried, Florida Shrimps (price: 2.45)</li><li>Shrimps A La Newburg (price: 2.75)</li><li>Shrimps Creole (price: 2.75)</li><li>King Sized Jumbo Shrimp Salad (price: 2.65)</li><li>Shrimps Saute In Butter (price: 2.75)</li><li>Shrimps Au Gratin (price: 2.75)</li><li>Cold Half Lobster Platter (price: 2.25)</li><li>Lobster Thermidor (price: 4.25)</li><li>Lobster Saute (price: 3.45)</li><li>Lobster A La Newburg (price: 3.45)</li><li>Lobster Stew In Milk (price: 2.25)</li><li>Lobster Stew In Half And Half (price: 2.65)</li><li>Lobster Au Gratin (price: 3.25)</li><li>Lobster A L'americaine (price: 4.95)</li><li>Bouillabaise Marseillaise (price: 4.95)</li><li>Broiled Jumbo Deviled Crab (1) (price: 1.75)</li><li>Broiled Jumbo Deviled Crab (Pair) (price: 2.45)</li><li>Broiled South African Lobster Tail, Drawn Butter (price: 3.75)</li><li>Crabs A La Newburg (price: 2.95)</li><li>Crab Lump Salad (price: 2.65)</li><li>Crab Meat Au Gratin (price: 2.95)</li><li>Crab Flakes, Dewey (price: 2.75)</li><li>Crabmeat Saute (price: 2.95)</li><li>Soft Shell Crabs Broiled Fried</li><li>Broiled Mushrooms (price: 0.75)</li><li>Grilled Tomato (price: 0.35)</li><li>French Fried Onion Rings (price: 0.45)</li><li>Green Vegetable (In Season)</li><li>Shrimps, Scallops And Clams, Fried, Tartare (price: 2.35)</li><li>Shrimps, Scallops And Clams, Saute In Pure Butter (price: 2.5)</li><li>Lobster, Shrimps And Crab Meat Stew In Milk (price: 1.75)</li><li>Crabmeat Salad (price: 2.65)</li><li>Lobster, Shrimps And Crab Meat Stew Au Gratin (price: 3.25)</li><li>Shrimp Salad (price: 2.65)</li><li>Lobster (Fresh) Salad (price: 3.5)</li><li>Lobster, Shrimps And Crab Meat Saute In Butter (price: 3.25)</li><li>Combination Salad (Lobster, Shrimp And Crab Meat) (price: 3.25)</li><li>Lobster, Shrimps And Crab Meat A La Newburg (price: 3.25)</li><li>Chef's Salad Bowl, Anchor's Special Dressing (price: 0.25)</li><li>Hearts Of Lettuce Salad (price: 0.35)</li><li>Lettuce And Tomato Salad (price: 0.5)</li><li>Sliced Tomato Salad (price: 0.35)</li><li>Melon</li><li>Cup Of Chowder</li><li>Fresh Fruit Cup</li><li>Lump Crabmeat, Shrimp And Rock Lobster Au Gratin En Casserole (price: 3.25)</li><li>Broiled Boneless Shad And Shad Roe, Parsley Butter Crisp Bacon (price: 3.25)</li><li>Cold 1/2 Lobster (price: 2.25)</li><li>Broiled Eastern Halibut Steak Parsley Butter (price: 2.75)</li><li>Selected Large Sea Bass Split And Broiled (price: 2.75)</li><li>Broiled Jumbo Deviled Crabs Prepared To Order (price: 2.75)</li><li>Broiled Large Long Island Flounder Lemon Butter (price: 2.75)</li><li>Broiled Fresh Calf's Liver, Crisp Bacon (price: 2.45)</li><li>Fresh Calf's Liver, Smothered Onions (price: 2.45)</li><li>Tea</li><li>Coffee</li><li>Individual Serving Milk</li><li>Two Vegetables</li><li>Broiled Large Deep Sea Scallops (price: 2.75)</li><li>Fried Maryland Soft Shell Crabs (price: 2.95)</li><li>Broiled Florida Pompano (price: 2.75)</li><li>Seas Kebab A Tempting Combination Of Sea Scallops, Jumbo Florida Shrmps, Maine Lobster Meat, Crisp Bacon (Broiled On Skewer) Served On A Bed Of Saffron Rice. Served With Choice Of Two Vegetable Du Jour, French Fried Potatoes, Chef's Salad Bowl (price: 2.95)</li><li>Tomato Juice</li><li>Broiled Fresh Long Island Flounder (price: 1.95)</li><li>Apple Juice</li><li>Grapefruit Juice</li><li>Fruit Cocktail</li><li>Golden Fried Filet Of Native Lemon Sole, Sauce Tartar (price: 2.25)</li><li>Cherrystone Clams</li><li>Shrimp Cocktail</li><li>Large Selected Sea Bass, Split And Broiled (price: 2.45)</li><li>New England Fish Chowder (Cup)</li><li>Broiled Filet Of Lake Erie Whitefish (price: 2.65)</li><li>Manhattan Clam Chowder (Cup)</li><li>Clam Broth (Cup)</li><li>Broiled Filet Of Fresh Long Island Fluke (price: 2.45)</li><li>Steamed Clams (When Available)</li><li>Broiled Fresh Striped Bass, Parlsey And Butter (price: 2.45)</li><li>Broiled Chinook Salmon Steak With Butter (price: 2.75)</li><li>Poached Chinook Salmon Steak With Butter (price: 2.75)</li><li>Broiled Deviled Crab</li><li>Thickly Cut Swordfish Steak, Broiled (price: 2.45)</li><li>Thickly Cut Swordfish Steak, Saute (price: 2.45)</li><li>Broiled Filet Of Native Lemon Sole (price: 2.45)</li><li>Whole Maine Lobster, Drawn Butter (price: 5.5)</li><li>Whole Cold Lobster Platter, Garni (price: 4.95)</li><li>Large Cucumber Smelts Fried (price: 1.95)</li><li>Large Cucumber Smelts Broiled (price: 2.25)</li><li>Half Cold Maine Lobster And Broiled Half Chicken (price: 5.5)</li><li>Broiled Boston Scrod (price: 1.95)</li><li>Fish And Chips, English Style (price: 1.95)</li><li>Half Chicken Broiled (price: 4.75)</li><li>Bluefish Saute In Pure Butter (price: 2.25)</li><li>Half Chicken Southern Fried (price: 4.75)</li><li>Broiled Eastern Halibut Steak, Maitre D'hotel (price: 2.45)</li><li>Broiled Florida Red Snapper (price: 2.65)</li><li>Two Brook Trout, Broiled (price: 2.45)</li><li>Mixed Green Salad Bowl</li><li>Rice</li><li>Potatoes</li><li>Two Brook Trout, Saute (price: 2.45)</li><li>Vegetable Du Jour</li><li>Baked Idaho Potato (15c Extra)</li><li>Spanish Or King Mackerel (price: 2.25)</li><li>Hollandaise Sauce (price: 0.6)</li><li>Lobster Sauce (price: 0.75)</li><li>Shrimp Sauce (price: 0.6)</li><li>Fruit Pies</li><li>Egg Sauce (price: 0.4)</li><li>Fresh Fruit Cup</li><li>Creole Sauce (price: 0.25)</li><li>Tartar Sauce (price: 0.15)</li><li>Nesselrode Pie</li><li>Ice Cream</li><li>Roquefort Dressing (price: 0.35)</li><li>Rice Pudding</li><li>Jell O</li><li>Jell O</li><li>Layer Cake</li><li>Half Grapefruit</li><li>Chocolate Pudding</li><li>Sanka</li><li>Postum</li><li>Milk</li><li>Coca Cola</li><li>Coffee Or Tea (Hot Or Cold)</li><li>Broiled Fresh Florida Pompano (price: 3.25)</li><li>Frog's Legs Saute Provencale (price: 2.75)</li><li>Shad Roe</li><li>Boneless Hudson River Shad</li><li>Cold Sea Food Platter Half Lobster, Shrimps, Crab Meat, Oyster And Clam, Garni (price: 3.95)</li><li>Sirloin Steak (price: 5.25)</li><li>Double Rib Lamb Chops (price: 3.5)</li><li>Calf's Liver, Smothered Onions (price: 2.45)</li><li>Filet Mignon With Mushrooms (price: 4.95)</li><li>Pork Chops (price: 2.5)</li><li>Roast Maryland Turkey (price: 2.45)</li><li>Broiled Half Chicken (price: 2.25)</li><li>Fried Half Chicken (price: 2.25)</li><li>Imported Ham Steak, Hawaiian (price: 2.45)</li><li>Smoked Nova Scotia Salmon Sandwich, Bermuda Onion (price: 1.45)</li><li>Chopped Sirloin Of Prime Beef (price: 2.25)</li><li>Shrimp Salad Sandwich (price: 1.25)</li><li>Crab Meat Salad Sandwich (price: 1.25)</li><li>Salmon Salad Sandwich (price: 0.95)</li><li>Fresh Tunafish Sandwich (price: 0.75)</li><li>Bleu Cheese, Served With Crackers (price: 0.35)</li><li>American Cheese Served With Crackers (price: 0.25)</li><li>Swiss Cheese, Served With Crackers (price: 0.35)</li><li>French Ice Cream (Large Scoop) (price: 0.3)</li><li>Iced Coffee Or Tea (price: 0.25)</li><li>Fruit Compote (price: 0.4)</li><li>Coffee Or Tea (price: 0.15)</li><li>Old Fashioned Strawberry Shortcake (price: 0.6)</li><li>Individual Serving Of Milk (price: 0.2)</li><li>Home Made Apple Pie With Cheese (price: 0.35)</li><li>Instant Postum Or Sanka (price: 0.2)</li><li>Fruit Jello With Cream (price: 0.25)</li><li>Rice Pudding With Cream (price: 0.45)</li><li>Fresh Fruit In Season</li><li>Anchor Parfait (price: 0.6)</li><li>Home Made Fresh Fruit Cup (price: 0.45)</li><li>The Seafood Sensation Broiled Jumbo Florida Shrimps A La Maison Served With Choice Of Two French Fried Potatoes, Vegetable Du Jour, Tossed Salad Bowl (price: 2.95)</li><li>Stuffed Whole Boneless Flounder With Lump Maryland Crab Meat Sauce Fantasie Served With Choice Of Two Chef's Salad, Vegetable Du Jour, Cole Slaw, French Fried Potatoes (price: 2.95)</li><li>Shrimp Cocktail</li><li>Cherrystone Clams</li><li>Fresh Fruit Cup</li><li>Tomato Juice</li><li>Grapefruit Juice</li><li>Half Grapefruit</li><li>Fish Chowder</li><li>Clam Broth</li><li>Clam Chowder</li><li>Our Famous Original Specialty Deviled Crabettes</li><li>Broiled South African Lobster Tail, Drawn Butter Lemon Wedge</li><li>Selected Large Half Chicken, Broiled</li><li>Selected Large Half Chicken Southern Fried</li><li>Cole Slaw</li><li>Chef's Salad (Dressing)</li><li>French Fried Potato</li><li>Boiled Potato</li><li>Vegetable Du Jour</li><li>Nesselrode Pie</li><li>Fruit Cup</li><li>Fruit Pies</li><li>Layer Cake</li><li>Home Made Rice Pudding</li><li>Ice Cream</li><li>Home Made Apple Pie</li><li>Fruit Jello</li><li>Oregon Prunes</li><li>Coffee Strip</li><li>Coffee</li><li>Tea</li><li>Seven Up</li><li>Milk</li><li>Coke</li><li>Imported Still Wines Consult Server For Imported Wines</li><li>Frappes, Extra (price: 0.1)</li><li>Orange Blossom Cocktail (price: 0.75)</li><li>Cherry Brandy (price: 0.55- 2.5)</li><li>P. & T. Reserve (price: 0.65)</li><li>Martini (price: 0.75)</li><li>Carstairs (price: 0.65)</li><li>Apricot Brandy (price: 0.55- 20.0)</li><li>Extra Dry Martini (price: 0.85)</li><li>Imperial (price: 0.65)</li><li>Blackberry Brandy (price: 0.55- 3.0)</li><li>Vodka Martini (price: 0.75)</li><li>Peach Brandy (price: 0.55- 15.0)</li><li>Apple Jack (price: 0.6)</li><li>Manhattan (price: 0.75)</li><li>Marschion Bols (price: 0.55- 0.65)</li><li>Jack Rose Cocktail (price: 0.7)</li><li>P.M. (price: 0.65)</li><li>Curacao (price: 0.55- 30.0)</li><li>Daiquiri (price: 0.7)</li><li>Fleischmann's (price: 0.65)</li><li>Anisette (price: 0.55- 85.0)</li><li>Old Fashioned Cocktail (price: 0.7)</li><li>Hunter (price: 0.65)</li><li>Cherry (price: 0.55- 2.0)</li><li>Bacardi Cocktail (price: 0.75)</li><li>Creme De Cacao (price: 0.55- 85.0)</li><li>Gibson (price: 0.85)</li><li>Schenley Reserve (price: 0.7)</li><li>Creme De Menthe (price: 0.55- 15.0)</li><li>Pink Lady (price: 0.8)</li><li>Calvart Reserve (price: 0.7)</li><li>Rock 'N Rye (price: 0.55- 0.65)</li><li>Alexander With Brandy (price: 0.95)</li><li>Seagram's 7 Crown (price: 0.7)</li><li>P. & T, Private Stock (price: 0.75)</li><li>Bloody Mary (price: 0.9)</li><li>Sauterne (Glass) (price: 0.4)</li><li>Chablis (Glass) (price: 0.4)</li><li>Grasshopper (price: 0.9)</li><li>Four Roses (price: 0.75)</li><li>Rhine Wine (Glass) (price: 0.4)</li><li>Screwdriver (price: 0.9)</li><li>Rhine Wine Half Bottle, Bottle (price: 1.5- 2.75)</li><li>Sauterne Half Bottle, Bottle (price: 1.5- 2.75)</li><li>Chablis Half Bottle, Bottle (price: 1.5- 2.75)</li><li>Lord Calvert (price: 0.75)</li><li>Kummel (price: 0.6- 85.0)</li><li>Side Car (price: 0.95)</li><li>Old Overholt (price: 0.85)</li><li>Cointreau (price: 0.65- 85.0)</li><li>Stinger (price: 0.95)</li><li>Southern Comfort (price: 0.75- 85.0)</li><li>Rob Roy (price: 0.9)</li><li>Louis Martini Napa White Wine, Half Bottle, Bottle (price: 1.5- 0.0)</li><li>Champagne Cocktail (price: 1.0)</li><li>Grand Marnier (price: 0.85- 85.0)</li><li>Benedictine (price: 0.9- 20.0)</li><li>B. & B. (price: 0.9- 1.65)</li><li>Cherry Heering (price: 0.9- 85.0)</li><li>Canadian Club (price: 0.8)</li><li>Drambuie (price: 0.95- 85.0)</li><li>Seagram's V.O. (price: 0.8)</li><li>Claret Lemonade (price: 0.65)</li><li>Vodka (price: 0.75)</li><li>Rum Collins (price: 0.75)</li><li>Mc Naughton's (price: 0.75)</li><li>Port (Glass) (price: 0.5)</li><li>Burgundy (Glass) (price: 0.5)</li><li>Claret (Glass) (price: 0.5)</li><li>Tom Collins (price: 0.75)</li><li>Sherry (Glass) (price: 0.5)</li><li>Port Half Bottle, Bottle (price: 1.5- 0.0)</li><li>Cuba Libre (price: 0.75)</li><li>Burgundy Half Bottle, Bottle (price: 1.5- 2.75)</li><li>Sherry Half Bottle, Bottle (price: 1.5- 2.75)</li><li>Claret Half Bottle, Bottle (price: 1.5- 2.75)</li><li>Gin 'N Tonic (price: 0.75)</li><li>Whiskey Sour (price: 0.75)</li><li>Imported French Brandy (price: 0.9- 0.0)</li><li>Scotch Sour (price: 0.9)</li><li>Metaxa (Greek) Brandy (price: 0.95- 1.1)</li><li>Vodka Collins (price: 0.8)</li><li>Old Forester (price: 0.8)</li><li>Old Taylor (price: 0.8)</li><li>Old Grand Dad (price: 0.8)</li><li>Champagnes Split, Half Bottle, Bottle (price: 1.5- 5.95)</li><li>Native Beer And Ale (price: 0.5)</li><li>Milk Punch (price: 0.75)</li><li>I.W. Harper (price: 0.8)</li><li>Planter's Punch (price: 0.85)</li><li>Imported Beer And Ale (price: 0.7)</li><li>Port Flip (price: 0.75)</li><li>Native Sparkling Burgundy Split, Half Bottle, Bottle (price: 1.5- 0.0)</li><li>Guinness Stout (price: 0.4)</li><li>Vat 69 Scotch (price: 0.75)</li><li>Gin Fizz (price: 0.75)</li><li>J. & B. Scotch (price: 0.8)</li><li>Sloe Gin Fizz (price: 0.75)</li><li>Teacher's Scotch (price: 0.8)</li><li>Nip Of Beer (price: 0.3)</li><li>Sherry Flip (price: 0.65)</li><li>White Horse Scotch (price: 0.8)</li><li>Brandy Flip (price: 1.0)</li><li>Black And White Scotch (price: 0.8)</li><li>Johnnie Walker, Red, Scotch (price: 0.8)</li><li>Ballantine's Scotch (price: 0.8)</li><li>Bacardi P.R. Rum (price: 0.6)</li><li>Dewar's White Label Scotch (price: 0.8)</li><li>Coca Cola (price: 0.2)</li><li>Gilbey's Gin (price: 0.6)</li><li>Johnnie Walker, Black, Scotch (price: 0.9)</li><li>Gordon Gin (price: 0.6)</li><li>Bacardi, Cuba Rum (price: 0.75)</li><li>Canada Dry Ginger Ale Soda (Split) (price: 0.2)</li><li>8 Year Old Scotch (price: 0.9)</li><li>Myer's Jamaica Rum (price: 0.75)</li><li>12 Year Old Scotch (price: 0.95)</li><li>Piper Heidsieck Champagne Per Bottle (price: 11.0)</li><li>Seven Up (price: 0.2)</li><li>Chivas Regal (price: 0.95)</li><li>Mumm's Champagne Per Bottle (price: 11.0)</li><li>Beefeater Gin (price: 0.7)</li><li>Schweppes Tonic (price: 0.2)</li><li>Booth's Imp. Gin (price: 0.7)</li><li>Haig & Haig, Pinch, Scotch (price: 0.9)</li></ul>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://menus.nypl.org/menus/31054",
"items": [
{
"itemType": "document",
"title": "Plaza Hotel menu",
"creators": [],
"date": "1933",
"abstractNote": "62 menus bound into 1 volume",
"callNumber": "1933-0128_wotm",
"extra": "genre: Restaurant menu\nRestaurant Location: Plaza Hotel\nPhysical Description: 30x21",
"libraryCatalog": "New York Public Library Menu Collection",
"url": "http://menus.nypl.org/menu_pages/62720",
"attachments": [],
"tags": [],
"notes": [
{
"note": "<h1>Dishes</h1><ul><li>Cherry Stone Clams (price: 0.5)</li><li>Cocktail Sauce (price: 0.1)</li><li>Little Neck Clams (price: 0.45)</li><li>Sea Food Cocktail Plaza (price: 1.0)</li><li>Crab Flake Cocktail (price: 0.75)</li><li>Clam Juice Cocktail (price: 0.35)</li><li>Shrimp Cocktail (price: 0.75)</li><li>Tomato Juice Cocktail (price: 0.35)</li><li>Grapefruit (price: 0.65)</li><li>Orange (price: 0.65)</li><li>Melon (price: 0.65)</li><li>Fruit Supreme (price: 0.65)</li><li>Pineapple Paradise (price: 0.75)</li><li>Filet Of Herring (price: 0.5)</li><li>Fresh Caviar (price: 2.25)</li><li>Petit Artichoke Mariniere (price: 0.5)</li><li>Smoked Salmon (price: 0.75)</li><li>Tomato Monegasque (price: 0.75)</li><li>Stuffed Celery (price: 0.5)</li><li>Hors D'oeuvre Varies</li><li>Anchovy Canape (price: 0.6)</li><li>Salami (price: 0.5)</li><li>Maquereau Au Vin Blanc (price: 0.5)</li><li>Little Neck Clams (price: 0.45)</li><li>Cocktail Sauce (price: 0.1)</li><li>Crab Flake Cocktail (price: 0.75)</li><li>Clam Juice Cocktail (price: 0.35)</li><li>Tomato Juice Cocktail (price: 0.35)</li><li>Shrimp Cocktail (price: 0.75)</li><li>Grapefruit Supreme (price: 0.65)</li><li>Melon Supreme (price: 0.65)</li><li>Fruit Supreme (price: 0.65)</li><li>Pineapple Paradise (price: 0.75)</li><li>Petit Artichoke Mariniere (price: 0.5)</li><li>Filet Of Herring (price: 0.5)</li><li>Fresh Caviar (price: 2.25)</li><li>Smoked Salmon (price: 0.75)</li><li>Plaza Appetizer (price: 1.25)</li><li>Tomato Monegasque (price: 0.75)</li><li>Hors D'oeuvre Variés</li><li>Anchovy Canape (price: 0.6)</li><li>Stuffed Celery (price: 0.5)</li><li>Salami (price: 0.5)</li><li>Antipasto (price: 0.5)</li><li>Wesphalia Ham (price: 1.25)</li><li>Maquereau Au Vin Blanc (price: 0.5)</li><li>St. Germain Soup (price: 0.4)</li><li>Chicken Okra Soup (price: 0.5)</li><li>Tomato Soup (price: 0.4)</li><li>Home Made Chicken Soup (price: 0.5)</li><li>Bortsch A La Russe (price: 0.5)</li><li>Jellied Gumbo Consomme, Cup (price: 0.4)</li><li>Jellied Consomme, Madrilene, Cup (price: 0.4)</li><li>Jellied Chicken Consomme, Cup (price: 0.4)</li><li>Jellied Beef Consomme, Cup (price: 0.4)</li><li>Planked Boneless Shad And Roe Lady Duveene (price: 1.25)</li><li>Filet Of Sole Cafe De Paris (price: 0.9)</li><li>Brook Trout Au Bleu, Sauce Escoffier (price: 1.0)</li><li>Frogs' Legs A La Cavour (price: 1.25)</li><li>Baked Lobster Beaugency (1/2) (price: 1.5)</li><li>Supreme Of Kingfish Fin De Siecle (price: 1.1)</li><li>Grilled Bluefish Baltimore (price: 1.1)</li><li>Soft Shell Crabs Under Glass Archiduc (price: 1.25)</li><li>Sea Bass Saute Nicoise (price: 1.1)</li><li>Chicken Halibut Au Beurre D'anchois With Potatoes Allumette (price: 1.1)</li><li>Salmon Steak Meuniere With Bananas And Sweet Peppers (price: 1.25)</li><li>Smothered Squab Chicken A La Dickens With Asparagus Tips (1/2) (price: 1.5)</li><li>Roast Hindquarter Of Baby Lamb, Potatoes Parisienne, Succotash Virginia (price: 1.5)</li><li>Glazed Virginia Ham, Sauce Porto With Sweet Potatoes Dixie, Braised Celery (price: 1.25)</li><li>Grilled Kernel Of Sweatbread With Bacon And Heart Of Artichoke Princesse (price: 1.5)</li><li>Escalopines Of Milk Veal Au Vin Blanc With String Beans And Veloute Crecy (price: 1.25)</li><li>Larded Tenderloin Of Beef, Melba (price: 2.0)</li><li>Imperial Squab Souvaroff (price: 2.0)</li><li>Planked Porter House Steak Aux Primeurs (price: 3.0)</li><li>Quenelle Of Capon National (price: 1.25)</li><li>Grilled Egg Plant And Tomato Baltimore (price: 0.9)</li><li>Noisette De Pre Sale Parisienne (price: 1.5)</li><li>Hot House Chicken L'athuile (1/2) (price: 1.75)</li><li>Supreme Of Guinea Hen Tour D'argent (price: 1.75)</li><li>Patty Of Mushrooms A La Reine (price: 1.0)</li><li>Calf's Head En Tortue (price: 1.1)</li><li>Roast Beef (price: 1.0)</li><li>Roast Baby Lamb (price: 1.5)</li><li>Broiler (price: 3.0)</li><li>Broiler (1/2) (price: 1.5)</li><li>Roast Royal Squab (price: 1.75)</li><li>Roast Squab Chicken (price: 2.0)</li><li>Jersey Asparagus (price: 0.9)</li><li>Cauliflower (price: 0.7)</li><li>Beets In Butter (price: 0.5)</li><li>New Peas (price: 0.6)</li><li>New Lima Beans (price: 0.6)</li><li>New String Beans (price: 0.6)</li><li>Carrots Vichy (price: 0.5)</li><li>Succotash Plaza (price: 0.65)</li><li>Braised Lettuce (price: 0.6)</li><li>Braised Celery (price: 0.6)</li><li>Stewed Okra (price: 0.6)</li><li>Artichoke (price: 0.6)</li><li>White Squash (price: 0.5)</li><li>Hubbard Squash (price: 0.5)</li><li>Stewed Fresh Tomatoes (price: 0.5)</li><li>Creamed Spinach (price: 0.6)</li><li>Small Onions In Cream (price: 0.6)</li><li>Fried Egg Plant (price: 0.5)</li><li>Mashed Yellow Turnips (price: 0.5)</li><li>Biron Potatoes (price: 0.45)</li><li>Plaza Potatoes (price: 0.5)</li><li>Sweet Potatoes (price: 0.5)</li><li>Voisin Potatoes (price: 0.5)</li><li>Boiled Bermuda Potatoes (price: 0.3)</li><li>Dixie Potatoes (price: 0.5)</li><li>Sunrise Salad (price: 0.6)</li><li>Mimosa Salad (price: 0.6)</li><li>Lettuce, Tomato And Asparagus Tips Salad (price: 0.6)</li><li>Jeannette Salad (price: 0.6)</li><li>Fruit Salad (price: 0.6)</li><li>Rocheford Salad (price: 0.6)</li><li>Alligator Pear Salad (price: 0.7)</li><li>Chicory Salad (price: 0.45)</li><li>Escarole Salad (price: 0.45)</li><li>Lettuce Salad (price: 0.45)</li><li>Romaine Salad (price: 0.45)</li><li>Mixed Green Salad (price: 0.45)</li><li>Tomato Salad (price: 0.45)</li><li>Endive Salad (price: 0.45)</li><li>Hot Albufera Pudding (price: 0.35)</li><li>Cold Apple Custard Pudding (price: 0.35)</li><li>Bavarian Cream, Marie Louise (price: 0.4)</li><li>Chocolate Souffle (price: 0.75)</li><li>Orange Jelly (price: 0.35)</li><li>Rice Pudding (price: 0.35)</li><li>Apple Pie (price: 0.35)</li><li>French Pastry (1) (price: 0.25)</li><li>Fresh Strawberry Ice Cream (price: 0.45)</li><li>Strawberry Ice (price: 0.4)</li><li>Fresh Caramel Ice Cream (price: 0.45)</li><li>Orange Sherbet (price: 0.4)</li><li>Strawberry Coupe (price: 0.6)</li><li>Pear Cardinal (price: 0.65)</li><li>Camembert Cheese (price: 0.45)</li><li>Swiss Cheese (price: 0.4)</li><li>Brie Cheese (price: 0.45)</li><li>Port Du Salut Cheese (price: 0.45)</li><li>Bel Paese Cheese (price: 0.45)</li><li>Roquefort Cheese (price: 0.5)</li><li>Liederkranz Cheese (price: 0.45)</li><li>Stilton Cheese (price: 0.6)</li><li>English Cheddar Cheese (price: 0.5)</li><li>Gorgonzola Cheese (price: 0.5)</li><li>Honeydew Melon (price: 0.6)</li><li>Strawberries (price: 0.6)</li><li>Cantaloupe (price: 0.6)</li><li>Grapefruit (price: 0.4)</li><li>Orange (price: 0.2)</li><li>Grapes (price: 0.5)</li><li>King Orange (price: 0.2)</li><li>Pear (price: 0.2)</li><li>Delicious Apple (price: 0.2)</li><li>Shrimp Cocktail (price: 0.75)</li><li>Fruit Supreme (price: 0.65)</li><li>Grapefruit Supreme (price: 0.65)</li><li>Pineapple Paradise (price: 0.75)</li><li>Melon Supreme (price: 0.65)</li><li>Orange Supreme (price: 0.65)</li><li>Filet Of Herring (price: 0.5)</li><li>Fresh Caviar (price: 2.25)</li><li>Petit Artichoke Mariniere (price: 0.5)</li><li>Tomato Monegasque (price: 0.75)</li><li>Plaza Appetizer (price: 1.25)</li><li>Smoked Salmon (price: 0.75)</li><li>Anchovy Canape (price: 0.6)</li><li>Hors D'oeuvre Variés</li><li>Stuffed Celery (price: 0.5)</li><li>Maquereau Au Vin Blanc (price: 0.5)</li><li>Antipasto (price: 0.5)</li><li>Westphalia Ham (price: 1.25)</li><li>Salami (price: 0.5)</li><li>St. Germain Soup (price: 0.4)</li><li>Tomato Soup (price: 0.4)</li><li>Chicken Okra Soup (price: 0.5)</li><li>Florida Soup With Paillettes Au Chester (price: 0.6)</li><li>Minestrone A L'italienne (price: 0.5)</li><li>Jellied Chicken Consomme, Cup (price: 0.4)</li><li>Jellied Gumbo Consomme, Cup (price: 0.4)</li><li>Jellied Beef Consomme, Cup (price: 0.4)</li><li>Jellied Consomme, Madrilene, Cup (price: 0.4)</li><li>Poached Eggs, Armenonville (price: 0.55)</li><li>Scrambled Eggs, Grand' Mere (price: 0.8)</li><li>Omelette, Agnes Sorel (price: 0.8)</li><li>Fried Soft Shell Crabs With Bacon, Sauce Remoulade (price: 1.25)</li><li>Creamed Salmon In Bordure Florentine (price: 1.25)</li><li>Chicken Halibut, Los Angeles (price: 1.1)</li><li>Kingfish, Amelie (price: 1.1)</li><li>Filet Of Sea Bass Lady Egmont (price: 1.1)</li><li>Brook Trout A La Lindbergh (price: 1.1)</li><li>Grilled Bluefish, Jardiniere (price: 1.1)</li><li>Boneless Shad And Roe Beaucaire (price: 1.25)</li><li>Supreme Of Sole Commodore (price: 0.9)</li><li>Frogs' Legs Rissolees Royer (price: 1.25)</li><li>Boiled Short Rib Of Beef, New England Style (price: 1.1)</li><li>Braised Rack Of Milk Veal Bourgeoise With Peas And Fresh Noodles (price: 1.5)</li><li>Roast Loin Of Baby Lamb With Lima Beans Bretonne (price: 1.5)</li><li>Grilled Squab Chicken With Bacon, Mushrooms, Marrow, Potatoes Souffles (1/2) (price: 1.5)</li><li>Fresh Vegetable Luncheon Au Gratin With Poached Egg (price: 1.25)</li><li>Fresh Mushrooms In Crust Maryland (price: 1.0)</li><li>Imperial Squab A L'americaine (price: 2.0)</li><li>Supreme Of Guinea Hen Rossini (price: 1.75)</li><li>Chicken Saute Lafayette (1/2) (price: 1.75)</li><li>Egg With Ham (price: 0.5)</li><li>Egg, Nicoise Or A La Russe (price: 0.75)</li><li>Cold Egg Finlandaise (price: 0.6)</li><li>Cold Halibut Steak A L'espagnole (price: 1.25)</li><li>Cold Kennebec Salmon Parisienne (price: 1.25)</li><li>Crab Ravigote (price: 1.0)</li><li>Chicken Lobster, Mayonnaise (price: 1.5)</li><li>Cold Shrimps A La Joseph (price: 0.75)</li><li>Cold Chicken And Ham Pie (price: 1.5)</li><li>Cold Supreme Jeannette (price: 1.25)</li><li>Cold Supreme Plaza (price: 1.75)</li><li>Head Cheese With Potato Salad (price: 1.0)</li><li>Truffled Galantine Of Capon (price: 1.5)</li><li>Beef A La Mode In Jelly (price: 1.0)</li><li>Assorted Cold Cuts (price: 1.5)</li><li>Assorted Cold Cuts With Chicken (price: 1.75)</li><li>Jersey Asparagus (price: 0.9)</li><li>Cauliflower (price: 0.7)</li><li>Beets In Butter (price: 0.5)</li><li>String Beans (price: 0.6)</li><li>Lima Beans (price: 0.6)</li><li>New Peas (price: 0.6)</li><li>Succotash Plaza (price: 0.65)</li><li>Carrots Vichy (price: 0.5)</li><li>Braised Celery (price: 0.6)</li><li>Braised Lettuce (price: 0.6)</li><li>Stewed Okra (price: 0.6)</li><li>Artichoke (price: 0.6)</li><li>Hubbard Squash (price: 0.5)</li><li>White Squash (price: 0.5)</li><li>Stewed Fresh Tomatoes (price: 0.5)</li><li>Creamed Spinach (price: 0.6)</li><li>Small Onions In Cream (price: 0.6)</li><li>Mashed Yellow Turnips (price: 0.6)</li><li>Fried Egg Plant (price: 0.5)</li><li>Biron Potatoes (price: 0.45)</li><li>Boiled Bermuda Potatoes (price: 0.3)</li><li>Plaza Potatoes (price: 0.5)</li><li>Sweet Potatoes (price: 0.5)</li><li>Voisin Potatoes (price: 0.5)</li><li>Dixie Potatoes (price: 0.5)</li><li>Lettuce, Eggs And Beets Salad (price: 0.6)</li><li>Orleans Salad (price: 0.6)</li><li>Sunrise Salad (price: 0.6)</li><li>Hartford Salad (price: 0.6)</li><li>Alligator Pear Salad (price: 0.7)</li><li>Fruit Salad (price: 0.6)</li><li>Rocheford Salad (price: 0.6)</li><li>Endive Salad (price: 0.45)</li><li>Escarole Salad (price: 0.45)</li><li>Lettuce Salad (price: 0.45)</li><li>Tomato Salad (price: 0.45)</li><li>Chicory Salad (price: 0.45)</li><li>Romaine Salad (price: 0.45)</li><li>Mixed Green Salad (price: 0.45)</li><li>Duchesse Pudding (price: 0.35)</li><li>Deep Dish Rhubarb Pie (price: 0.4)</li><li>Hazelnut Custard Pie (price: 0.35)</li><li>Chocolate Layer Cake (price: 0.4)</li><li>Raspberry Slice (price: 0.25)</li><li>Apple Pie (price: 0.35)</li><li>Rice Pudding (price: 0.35)</li><li>French Pastry (1) (price: 0.25)</li><li>Strawberry Ice (price: 0.4)</li><li>Fresh Strawberry Ice Cream (price: 0.45)</li><li>Caramel Ice Cream (price: 0.45)</li><li>Lemon Sherbet (price: 0.4)</li><li>Vanilla Mousse, Hot Chocolate Sauce (price: 0.6)</li><li>Parfait Tosca (price: 0.6)</li><li>Brie Cheese (price: 0.45)</li><li>Camembert Cheese (price: 0.45)</li><li>Swiss Cheese (price: 0.4)</li><li>Port Du Salut Cheese (price: 0.45)</li><li>Bel Paese Cheese (price: 0.45)</li><li>Stilton Cheese (price: 0.6)</li><li>Liederkranz Cheese (price: 0.45)</li><li>Roquefort Cheese (price: 0.5)</li><li>Gorgonzola Cheese (price: 0.5)</li><li>English Cheddar Cheese (price: 0.5)</li><li>Cantaloupe (price: 0.6)</li><li>Honeydew Melon (price: 0.6)</li><li>Strawberries (price: 0.6)</li><li>Orange (price: 0.2)</li><li>Grapes (price: 0.5)</li><li>Pear (price: 0.2)</li><li>Delicious Apple (price: 0.2)</li><li>King Orange (price: 0.2)</li><li>Grapefruit (price: 0.4)</li><li>Little Neck Clams (price: 0.45)</li><li>Cocktail Sauce (price: 0.1)</li><li>Cherry Stone Clams (price: 0.5)</li><li>Crab Flake Cocktail (price: 0.75)</li><li>Sea Food Cocktail Plaza (price: 1.0)</li><li>Tomato Juice Cocktail (price: 0.35)</li><li>Shrimp Cocktail (price: 0.75)</li><li>Clam Juice Cocktail (price: 0.35)</li><li>Grapefruit Supreme (price: 0.65)</li><li>Melon Supreme (price: 0.65)</li><li>Orange Supreme (price: 0.65)</li><li>Fruit Supreme (price: 0.65)</li><li>Pineapple Paradise (price: 0.75)</li><li>Petit Artichoke Mariniere (price: 0.5)</li><li>Fresh Caviar (price: 2.25)</li><li>Filet Of Herring (price: 0.5)</li><li>Plaza Appetizer (price: 1.25)</li><li>Tomato Monegasque (price: 0.75)</li><li>Smoked Salmon (price: 0.75)</li><li>Hors D'oeuvre Variés</li><li>Stuffed Celery (price: 0.5)</li><li>Anchovy Canape (price: 0.6)</li><li>Antipasto (price: 0.5)</li><li>Westphalia Ham (price: 1.25)</li><li>Salami (price: 0.5)</li><li>Maquereau Au Vin Blanc (price: 0.5)</li><li>Tomato Soup (price: 0.4)</li><li>St. Germain Soup (price: 0.4)</li><li>Chicken Okra Soup (price: 0.5)</li><li>Soup, Chicken Printanier With Barley (price: 0.5)</li><li>Cream Of New Peas Boula Boula Soup (price: 0.6)</li><li>Jellied Consomme, Chicken (price: 0.4)</li><li>Jellied Consomme, Beef (price: 0.4)</li><li>Gumbo</li><li>Jellied Consomme, Madrilene (price: 0.4)</li><li>Supreme Of Sole Duchesse (price: 0.9)</li><li>Poached Kennebec Salmon, Sauce Joinville (price: 1.1)</li><li>Soft Shell Crabs Rissolées With Almonds (price: 1.25)</li><li>Chicken Halibut à La Turque (price: 1.1)</li><li>Boneless Shad And Roe Belle Meunière (price: 1.25)</li><li>Frilled Bluefish Pompadour (price: 1.1)</li><li>Baked Lobster In Shell Majestic (1/2) (price: 1.5)</li><li>Sea Bass Sauté Alphonse Xiii (price: 1.1)</li><li>Patty Of Frogs' Legs Poulette (price: 1.25)</li><li>Brook Trout A La Canajoharie (price: 1.1)</li><li>Roast Rack And Loin Of Baby Lamb Nivernaise With Potatoes Parisienne (price: 1.75)</li><li>Supreme Of Hot House Chicken, Rimini, Heart Of Artichoke Princesse (price: 1.75)</li><li>Escalopine Of Milk Veal à L'estragon, Noodles In Butter, Mashed Carrot (price: 1.25)</li><li>Larded Kernel Of Sweetbread Prince De Galles (price: 1.5)</li><li>Petit Tournedos Sauté Chantecler (price: 1.75)</li><li>Grilled Fresh Mushrooms On Toast With Ham Au Beurre D'escargots (price: 1.0)</li><li>Poussin De Serre En Vol Au Vent Financiere (price: 2.25)</li><li>Imperial Squab En Compote (price: 2.0)</li><li>Quenelles Of Ham Florentine (price: 1.1)</li><li>Noisette Of Spring Lamb Judic (price: 1.5)</li><li>Calf's Head En Tortue (price: 1.1)</li><li>Roast Baby Lamb (price: 1.5)</li><li>Roast Beef (price: 1.0)</li><li>Broiler (price: 1.5- 3.0)</li><li>Roast Royal Squab (price: 1.75)</li><li>Roast Squab Chicken (price: 2.0)</li><li>Egg With Ham (price: 0.5)</li><li>Egg, Nicoise (price: 0.75)</li><li>Egg Finlandaise (price: 0.6)</li><li>Egg A La Russe (price: 0.75)</li><li>Kennebec Salmon Parisienne (price: 1.25)</li><li>Halibut Steak A L'espagnole (price: 1.25)</li><li>Crab Ravigote (price: 1.0)</li><li>Chicken Lobster, Mayonnaise (price: 1.5)</li><li>Shrimps A La Joseph (price: 0.75)</li><li>Supreme Jeannette (price: 1.25)</li><li>Chicken And Ham Pie (price: 1.5)</li><li>Supreme Plaza (price: 1.75)</li><li>Head Cheese With Potato Salad (price: 1.0)</li><li>Truffled Galantine Of Capon (price: 1.5)</li><li>Beef A La Mode In Jelly (price: 1.0)</li><li>Assorted Cold Cuts (price: 1.5)</li><li>Assorted Cold Cuts With Chicken (price: 1.75)</li><li>Jersey Asparagus (price: 0.9)</li><li>Cauliflower (price: 0.7)</li><li>Beets In Butter (price: 0.5)</li><li>New Peas (price: 0.6)</li><li>String Beans (price: 0.6)</li><li>Lima Beans (price: 0.6)</li><li>Carrots Vichy (price: 0.5)</li><li>Succotash Plaza (price: 0.65)</li><li>Braised Lettuce (price: 0.6)</li><li>Braised Celery (price: 0.6)</li><li>Stewed Okra (price: 0.65)</li><li>Artichoke (price: 0.6)</li><li>White Squash (price: 0.5)</li><li>Hubbard Squash (price: 0.5)</li><li>Stewed Fresh Tomatoes (price: 0.5)</li><li>Creamed Spinach (price: 0.6)</li><li>Small Onions In Cream (price: 0.6)</li><li>Mashed Yellow Turnips (price: 0.5)</li><li>Fried Egg Plant (price: 0.5)</li><li>Sweet Potatoes (price: 0.5)</li><li>Plaza Potatoes (price: 0.5)</li><li>Dixie Potatoes (price: 0.5)</li><li>Biron Potatoes (price: 0.45)</li><li>Boiled Bermuda Potatoes (price: 0.3)</li><li>Voisin Potatoes (price: 0.5)</li><li>Hartford Salad (price: 0.6)</li><li>Juliette Salad (price: 0.6)</li><li>Excelsior Salad (price: 0.6)</li><li>Royal Salad (price: 0.6)</li><li>Rocheford Salad (price: 0.6)</li><li>Fruit Salad (price: 0.6)</li><li>Alligator Pear Salad (price: 0.7)</li><li>Endive Salad (price: 0.45)</li><li>Escarole Salad (price: 0.45)</li><li>Chicory Salad (price: 0.45)</li><li>Lettuce Salad (price: 0.45)</li><li>Romaine Salad (price: 0.45)</li><li>Mixed Green Salad (price: 0.45)</li><li>Tomato Salad (price: 0.45)</li><li>Hot Tapioca Pudding (price: 0.35)</li><li>Cold Pear Custard Pudding (price: 0.35)</li><li>Brandied Peach Jubliee (price: 0.9)</li><li>Souffle Rothschild (price: 0.75)</li><li>Crepes Georgette (price: 1.0)</li><li>Apple Pie (price: 0.35)</li><li>Rice Pudding (price: 0.35)</li><li>French Pastry (1) (price: 0.25)</li><li>Fresh Strawberry Ice Cream (price: 0.45)</li><li>Caramel Ice Cream (price: 0.45)</li><li>Strawberry Ice (price: 0.4)</li><li>Orange Sherbet (price: 0.4)</li><li>Strawberry Coupe (price: 0.6)</li><li>Pear Cardinal (price: 0.65)</li><li>Brie Cheese (price: 0.45)</li><li>Port Du Salut Cheese (price: 0.45)</li><li>Camembert Cheese (price: 0.45)</li><li>Swiss Cheese (price: 0.4)</li><li>Bel Paese Cheese (price: 0.45)</li><li>Roquefort Cheese (price: 0.5)</li><li>Gorgonzola Cheese (price: 0.5)</li><li>Liederkranz Cheese (price: 0.45)</li><li>English Cheddar Cheese (price: 0.5)</li><li>Stilton Cheese (price: 0.6)</li><li>Cantaloupe (price: 0.6)</li><li>Honeydew Melon (price: 0.6)</li><li>Strawberries (price: 0.6)</li><li>King Orange (price: 0.2)</li><li>Grapes (price: 0.5)</li><li>Orange (price: 0.2)</li><li>Delicious Apple (price: 0.2)</li><li>Grapefruit (price: 0.4)</li><li>Pear (price: 0.2)</li><li>Cherry Stone Clams (price: 0.5)</li><li>Little Neck Clams (price: 0.45)</li><li>Cocktail Sauce (price: 0.1)</li><li>Sea Food Cocktail Plaza (price: 1.0)</li><li>Crab Flake Cocktail (price: 0.75)</li><li>Clam Juice Cocktail (price: 0.35)</li><li>Tomato Juice Cocktail (price: 0.35)</li><li>Shrimp Cocktail (price: 0.75)</li><li>Melon Supreme (price: 0.65)</li><li>Orange Supreme (price: 0.65)</li><li>Fruit Supreme (price: 0.65)</li><li>Grapefruit Supreme (price: 0.65)</li><li>Pineapple Paradise (price: 0.75)</li><li>Fresh Caviar (price: 2.25)</li><li>Petit Artichoke Mariniere (price: 0.5)</li><li>Filet Of Herring (price: 0.5)</li><li>Plaza Appetizer (price: 1.25)</li><li>Smoked Salmon (price: 0.75)</li><li>Tomato Monegasque (price: 0.75)</li><li>Hors D'oeuvre Variés</li><li>Stuffed Celery (price: 0.5)</li><li>Anchovy Canape (price: 0.6)</li><li>Westphalia Ham (price: 1.25)</li><li>Antipasto (price: 0.5)</li><li>Maquereau Au Vin Blanc (price: 0.5)</li><li>Salami (price: 0.5)</li><li>Tomato Soup (price: 0.4)</li><li>Chicken Okra Soup (price: 0.5)</li><li>St. Germain Soup (price: 0.4)</li><li>Westmoreland Soup (price: 0.4)</li><li>Leek And Potato Soup (price: 0.5)</li><li>Jellied Consomme, Beef (price: 0.4)</li><li>Jellied Consomme, Madrilene (price: 0.4)</li><li>Jellied Consomme, Chicken (price: 0.4)</li><li>Gumbo (price: 0.4)</li><li>Poached Eggs With Succotash Au Gratin (price: 0.55)</li><li>Omelette, Savoyarde (price: 0.8)</li><li>Scrambled Eggs With Calf's Brains (price: 0.8)</li><li>Fried Codfish Cakes With Bacon, Sauce Orly (price: 0.9)</li><li>Aiguillette Of Kingfish Sarah (price: 1.1)</li><li>Boneless Shad And Roe Florida (price: 1.25)</li><li>Soft Shell Crabs On Toast, Beurre Ravigotte (price: 1.0)</li><li>Brook Trout Genevoise (price: 1.1)</li><li>Supreme Of Sole Georgette (price: 0.9)</li><li>Filet Of Sea Bass Cancale (price: 1.1)</li><li>Lobster Thermidor (1/2) (price: 1.5)</li><li>Frogs' Legs Bordelaise With Rice Pilaw (price: 1.25)</li><li>Browned Roast Beef Hash With Fried Egg And Spaghetti Milanaise (price: 0.9)</li><li>Grilled Milk Veal Chop Colerette (price: 1.25)</li><li>Baked Shell Of Capon A La Royal (price: 1.5)</li><li>Honeycomb Tripe A La Creole With Parsley Potatoes (price: 1.1)</li><li>Roast Hindquarter Of Baby Lamb Cullinan (price: 1.5)</li><li>Sugar Cured Ham Steak, Southern Style (price: 1.25)</li><li>Assorted Fresh Vegetable Luncheon (price: 1.25)</li><li>Patty Of Mushrooms A La Newburg (price: 1.0)</li><li>Hot House Chicken A La Marengo (1/2) (price: 1.75)</li><li>Imperial Squab A La Bressane (price: 2.0)</li><li>Supreme Of Guinea Hen Au Foie Gras (price: 1.75)</li><li>Cold Egg Finlandaise (price: 0.6)</li><li>Egg, Nicoise (price: 0.75)</li><li>Egg A La Russe (price: 0.75)</li><li>Cold Egg With Ham (price: 0.5)</li><li>Cold Halibut Steak A L'espagnole (price: 1.25)</li><li>Cold Kennebec Salmon Parisienne (price: 1.25)</li><li>Cold Shrimps A La Joseph (price: 0.75)</li><li>Chicken Lobster, Mayonnaise (price: 1.5)</li><li>Crab Ravigote (price: 1.0)</li><li>Cold Chicken And Ham Pie (price: 1.5)</li><li>Cold Supreme Jeannette (price: 1.25)</li><li>Cold Supreme Plaza (price: 1.75)</li><li>Truffled Galantine Of Capon (price: 1.5)</li><li>Head Cheese With Potato Salad (price: 1.0)</li><li>Assorted Cold Cuts Wit Chicken (price: 1.75)</li><li>Assorted Cold Cuts (price: 1.5)</li><li>Beef A La Mode In Jelly (price: 1.0)</li><li>Beets In Butter (price: 0.5)</li><li>Jersey Asparagus (price: 0.9)</li><li>Cauliflower (price: 0.7)</li><li>Carrots Vichy (price: 0.5)</li><li>Succotash Plaza (price: 0.65)</li><li>String Beans (price: 0.6)</li><li>Lima Beans (price: 0.6)</li><li>New Peas (price: 0.6)</li><li>Braised Celery (price: 0.6)</li><li>Stewed Okra (price: 0.6)</li><li>Artichoke (price: 0.6)</li><li>Braised Lettuce (price: 0.6)</li><li>Creamed Spinach (price: 0.6)</li><li>Stewed Fresh Tomatoes (price: 0.5)</li><li>White Squash (price: 0.5)</li><li>Hubbard Squash (price: 0.5)</li><li>Mashed Yellow Turnips (price: 0.6)</li><li>Small Onions In Cream (price: 0.6)</li><li>Fried Egg Plant (price: 0.5)</li><li>Voisin Potatoes (price: 0.5)</li><li>Plaza Potatoes (price: 0.5)</li><li>Boiled Bermuda Potatoes (price: 0.3)</li><li>Sweet Potatoes (price: 0.5)</li><li>Dixie Potatoes (price: 0.5)</li><li>Biron Potatoes (price: 0.45)</li><li>Blackstone Salad (price: 0.6)</li><li>Lettuce, Orange And Grapefruit Salad (price: 0.6)</li><li>Knickerbocker Salad (price: 0.6)</li><li>Alligator Pear Salad (price: 0.7)</li><li>Rocheford Salad (price: 0.6)</li><li>Fruit Salad (price: 0.6)</li><li>Lettuce Salad (price: 0.45)</li><li>Escarole Salad (price: 0.45)</li><li>Mixed Green Salad (price: 0.45)</li><li>Tomato Salad (price: 0.45)</li><li>Romaine Salad (price: 0.45)</li><li>Endive Salad (price: 0.45)</li><li>Chicory Salad (price: 0.45)</li><li>Apricot Pie (price: 0.35)</li><li>Vanilla Custard Pie (price: 0.35)</li><li>White Cherry Puddiing (price: 0.35)</li><li>Apple Tart (price: 0.4)</li><li>Punch Cake (price: 0.4)</li><li>Apple Pie (price: 0.35)</li><li>French Pastry (1) (price: 0.25)</li><li>Rice Pudding (price: 0.35)</li><li>Fresh Strawberry Ice Cream (price: 0.45)</li><li>Caramel Ice Cream (price: 0.45)</li><li>Strawberry Ice (price: 0.4)</li><li>Parfait Tosca (price: 0.6)</li><li>Lemon Sherbet (price: 0.4)</li><li>Vanilla Mousse, Hot Chocolate Sauce (price: 0.6)</li><li>Bel Paese Cheese (price: 0.45)</li><li>Brie Cheese (price: 0.45)</li><li>Port Du Salut Cheese (price: 0.45)</li><li>Swiss Cheese (price: 0.4)</li><li>Camembert Cheese (price: 0.45)</li><li>English Cheddar Cheese (price: 0.5)</li><li>Stilton Cheese (price: 0.6)</li><li>Gorgonzola Cheese (price: 0.5)</li><li>Liederkranz Cheese (price: 0.45)</li><li>Roquefort Cheese (price: 0.5)</li><li>Strawberries (price: 0.6)</li><li>Honeydew Melon (price: 0.6)</li><li>Cantaloupe (price: 0.6)</li><li>Grapes (price: 0.5)</li><li>Orange (price: 0.2)</li><li>Delicious Apple (price: 0.2)</li><li>Pear (price: 0.2)</li><li>Grapefruit (price: 0.4)</li><li>King Orange (price: 0.2)</li><li>Cherry Stone Clams (price: 0.5)</li><li>Little Neck Clams (price: 0.45)</li><li>Cocktail Sauce (price: 0.1)</li><li>Crab Flake Cocktail (price: 0.75)</li><li>Sea Food Cocktail Plaza (price: 1.0)</li><li>Clam Juice Cocktail (price: 0.35)</li><li>Tomato Juice Cocktail (price: 0.35)</li><li>Shrimp Cocktail (price: 0.75)</li><li>Orange Supreme (price: 0.65)</li><li>Fruit Supreme (price: 0.65)</li><li>Grapefruit Supreme (price: 0.65)</li><li>Melon Supreme (price: 0.65)</li><li>Pineapple Paradise (price: 0.75)</li><li>Petit Artichoke Mariniere (price: 0.5)</li><li>Filet Of Herring (price: 0.5)</li><li>Fresh Caviar (price: 2.25)</li><li>Smoked Salmon (price: 0.75)</li><li>Plaza Appetizer (price: 1.25)</li><li>Tomato Monegasque (price: 0.75)</li><li>Hors D'oeuvre Variés</li><li>Anchovy Canape (price: 0.6)</li><li>Stuffed Celery (price: 0.5)</li><li>Westphalia Ham (price: 1.25)</li><li>Maquereau Au Vin Blanc (price: 0.5)</li><li>Salami (price: 0.5)</li><li>Antipasto (price: 0.5)</li><li>St. Germain Soup (price: 0.4)</li><li>Chicken Okra Soup (price: 0.5)</li><li>Tomato Soup (price: 0.4)</li><li>Beef Broth A L'ecossaise (price: 0.5)</li><li>Cream Of Mushrooms Soup Aux Souffles (price: 0.5)</li><li>Jellied Beef Consomme, Cup (price: 0.4)</li><li>Jellied Gumbo Consomme, Cup (price: 0.4)</li><li>Jellied Consomme, Madrilene, Cup (price: 0.4)</li><li>Jellied Chicken Consomme, Cup (price: 0.4)</li><li>Soft Shell Crabs A La Creole (price: 1.25)</li><li>Boiled Chicken Halibut, Sauce Mousseline (price: 1.1)</li><li>Supreme Of Sole Mervina (price: 0.9)</li><li>Baked Lobster Grand Hotel (1/2) (price: 1.5)</li><li>Turban Of Frogs' Legs Regence (price: 1.5)</li><li>Brook Trout Matelotte (price: 1.1)</li><li>Grilled Bluefish With Bacon Au Capeco (price: 1.1)</li><li>Boneless Shad And Roe A L'orange (price: 1.25)</li><li>Carne Of Salmon Montgolfier (price: 1.25)</li><li>Sliced Sirloin Of Beef Saute Mexicaine (price: 1.75)</li><li>Smothered Squab Chicken Archiduc, Veloute Crecy, Asparagus Tips (1/2) (price: 1.5)</li><li>Grilled Kernel Of Sweetbread With Ham And Succotash Plaza (price: 1.5)</li><li>Braised Milk Veal Zingara With Ravioli Bercetto (price: 1.25)</li><li>Boneless Saddle Of Baby Lamb Ambassadeur (price: 1.75)</li><li>Grilled Mushrooms On Toast With Bacon, Beurre Ravigotte (price: 1.0)</li><li>Arroz Con Pollo A L'espagnole (1/2) (price: 1.75)</li><li>Mousseline Of Ham National (price: 1.1)</li><li>Boneless Royal Squab A La Turner (price: 2.0)</li><li>Supreme Of Chicken Champs Elysees (price: 1.75)</li><li>Roast Beef (price: 1.0)</li><li>Roast Baby Lamb (price: 1.5)</li><li>Roast Squab Chicken (price: 2.0)</li><li>Broiler (1/2) (price: 1.5)</li><li>Roast Royal Squab (price: 1.75)</li><li>Broiler (price: 3.0)</li><li>Cold Egg Finlandaise (price: 0.6)</li><li>Cold Egg With Ham (price: 0.5)</li><li>Egg, Nicoise (price: 0.75)</li><li>Egg A La Russe (price: 0.75)</li><li>Cold Halibut Steak A L'espagnole (price: 1.25)</li><li>Cold Kennebec Salmon Parisienne (price: 1.25)</li><li>Cold Shrimps A La Joseph (price: 0.75)</li><li>Chicken Lobster, Mayonnaise (price: 1.5)</li><li>Crab Ravigote (price: 1.0)</li><li>Cold Chicken And Ham Pie (price: 1.5)</li><li>Cold Supreme Jeannette (price: 1.25)</li><li>Cold Supreme Plaza (price: 1.75)</li><li>Head Cheese With Potato Salad (price: 1.0)</li><li>Truffled Galantine Of Capon (price: 1.5)</li><li>Assorted Cold Cuts (price: 1.5)</li><li>Assorted Cold Cuts With Chicken (price: 1.75)</li><li>Beef A La Mode In Jelly (price: 1.0)</li><li>Jersey Asparagus (price: 0.9)</li><li>Beets In Butter (price: 0.5)</li><li>Cauliflower (price: 0.7)</li><li>Lima Beans (price: 0.6)</li><li>Carrots Vichy (price: 0.5)</li><li>New Peas (price: 0.6)</li><li>String Beans (price: 0.6)</li><li>Succotash Plaza (price: 0.65)</li><li>Stewed Okra (price: 0.6)</li><li>Braised Lettuce (price: 0.6)</li><li>Braised Celery (price: 0.6)</li><li>Artichoke (price: 0.6)</li><li>Creamed Spinach (price: 0.6)</li><li>Stewed Fresh Tomatoes (price: 0.5)</li><li>White Squash (price: 0.5)</li><li>Hubbard Squash (price: 0.5)</li><li>Small Onions In Cream (price: 0.6)</li><li>Fried Egg Plant (price: 0.5)</li><li>Mashed Yellow Turnips (price: 0.5)</li><li>Boiled Bermuda Potatoes (price: 0.3)</li><li>Sweet Potatoes (price: 0.5)</li><li>Biron Potatoes (price: 0.45)</li><li>Dixie Potatoes (price: 0.5)</li><li>Plaza Potatoes (price: 0.5)</li><li>Voisin Potatoes (price: 0.5)</li><li>Kuroki Salad (price: 0.6)</li><li>Louisette Salad (price: 0.6)</li><li>Lettuce, Tomato And Cucumber Salad (price: 0.6)</li><li>Fruit Salad (price: 0.6)</li><li>Alligator Pear Salad (price: 0.7)</li><li>Rocheford Salad (price: 0.6)</li><li>Lettuce Salad (price: 0.45)</li><li>Mixed Green Salad (price: 0.45)</li><li>Tomato Salad (price: 0.45)</li><li>Endive Salad (price: 0.45)</li><li>Romaine Salad (price: 0.45)</li><li>Chicory Salad (price: 0.45)</li><li>Escarole Salad (price: 0.45)</li><li>Cold Pudding Suchard (price: 0.35)</li><li>Hot Montmorency Pudding (price: 0.35)</li><li>Fruits In Jelly (price: 0.35)</li><li>Rice Maltaise (price: 0.4)</li><li>Strawberry Souffle (price: 0.75)</li><li>French Pastry (1) (price: 0.25)</li><li>Rice Pudding (price: 0.35)</li><li>Apple Pie (price: 0.35)</li><li>Caramel Ice Cream (price: 0.45)</li><li>Strawberry Ice (price: 0.4)</li><li>Fresh Strawberry Ice Cream (price: 0.45)</li><li>Orange Sherbet (price: 0.4)</li><li>Strawberry Coupe (price: 0.6)</li><li>Pear Cardinal (price: 0.65)</li><li>Port Du Salut Cheese (price: 0.45)</li><li>Bel Paese Cheese (price: 0.45)</li><li>Camembert Cheese (price: 0.45)</li><li>Swiss Cheese (price: 0.4)</li><li>Brie Cheese (price: 0.45)</li><li>English Cheddar Cheese (price: 0.5)</li><li>Stilton Cheese (price: 0.6)</li><li>Roquefort Cheese (price: 0.5)</li><li>Gorgonzola Cheese (price: 0.5)</li><li>Liederkranz Cheese (price: 0.45)</li><li>Honeydew Melon (price: 0.6)</li><li>Strawberries (price: 0.6)</li><li>Cantaloupe (price: 0.6)</li><li>Orange (price: 0.2)</li><li>Delicious Apple (price: 0.2)</li><li>King Orange (price: 0.2)</li><li>Grapefruit (price: 0.4)</li><li>Grapes (price: 0.5)</li><li>Pear (price: 0.2)</li><li>Cherry Stone Clams (price: 0.5)</li><li>Little Neck Clams (price: 0.45)</li><li>Cocktail Sauce (price: 0.1)</li><li>Sea Food Cocktail Plaza (price: 1.0)</li><li>Crab Flake Cocktail (price: 0.75)</li><li>Tomato Juice Cocktail (price: 0.35)</li><li>Shrimp Cocktail (price: 0.75)</li><li>Clam Juice Cocktail (price: 0.35)</li><li>Grapefruit Supreme (price: 0.65)</li><li>Orange Supreme (price: 0.65)</li><li>Pineapple Paradise (price: 0.75)</li><li>Melon Supreme (price: 0.65)</li><li>Fruit Supreme (price: 0.65)</li><li>Fresh Caviar (price: 2.25)</li><li>Petit Artichoke Mariniere (price: 0.5)</li><li>Filet Of Herring (price: 0.5)</li><li>Plaza Appetizer (price: 1.25)</li><li>Smoked Salmon (price: 0.75)</li><li>Tomato Monegasque (price: 0.75)</li><li>Stuffed Celery (price: 0.5)</li><li>Hors D'oeuvre Variés</li><li>Anchovy Canape (price: 0.6)</li><li>Salami (price: 0.5)</li><li>Westphalia Ham (price: 1.25)</li><li>Antipasto (price: 0.5)</li><li>Maquereau Au Vin Blanc (price: 0.5)</li><li>St. Germain Soup (price: 0.4)</li><li>Chicken Okra Soup (price: 0.5)</li><li>Tomato Soup (price: 0.4)</li><li>Cream Of Sorrel Soup With Rice (price: 0.5)</li><li>Crab Meat Gumbo (price: 0.5)</li><li>Jellied Consomme, Chicken (price: 0.4)</li><li>Jellied Consomme, Madrilene (price: 0.4)</li><li>Jellied Consomme, Beef (price: 0.4)</li><li>Gumbo (price: 0.4)</li><li>Shirred Eggs A La Turque (price: 0.5)</li><li>Omelette Parisienne (price: 0.8)</li><li>Poached Eggs Benedict (price: 0.6)</li><li>Baked Boston Scrod A La Dickens (price: 0.9)</li><li>Supreme Of Sole Breval (price: 0.9)</li><li>Chicken Halibut A La Bartelette (price: 1.1)</li><li>Frogs' Legs Rissolees Provencale (price: 1.0)</li><li>Sea Bass Meuniere Alphonse Xiii (price: 1.1)</li><li>Brook Trout A La Richebourg (price: 1.1)</li><li>Fried Soft Shell Crabs Gribiche (price: 1.0)</li><li>Boneless Shad And Roe, Los Angeles (price: 1.25)</li><li>Prime Rib Of Beef With Veloute Freneuse (price: 1.25)</li><li>Stuffed Breast Of Veal With New Succotash, Potatoes Olivette Persillee (price: 1.1)</li><li>Grilled Squab Chicken A La Plaza (1/2) (price: 1.5)</li><li>Pork Chop Saute Milanaise (price: 1.25)</li><li>Roast Rack Of Baby Lamb Boulangere (price: 1.5)</li><li>Fresh Vegetable Luncheon En Bordure, Mornay (price: 1.25)</li><li>Poussin De Serre Sous La Cendre Perigourdine (price: 2.25)</li><li>Grilled Jumbo Squab En Crapaudine (price: 1.75)</li><li>Hot House Chicken L'athuile (1/2) (price: 1.75)</li><li>Steak Minute With Cepes Provencale (price: 1.75)</li><li>Supreme Of Guinea Hean A L'orange (price: 1.75)</li><li>Egg Finlandaise (price: 0.6)</li><li>Egg With Ham (price: 0.5)</li><li>Egg A La Russe (price: 0.75)</li><li>Egg, Nicoise (price: 0.75)</li><li>Kennebec Salmon Parisienne (price: 1.25)</li><li>Halibut Steak A L'espagnole (price: 1.25)</li><li>Chicken Lobster, Mayonnaise (price: 1.5)</li><li>Shrimps A La Joseph (price: 0.75)</li><li>Crab Ravigote (price: 1.0)</li><li>Chicken And Ham Pie (price: 1.5)</li><li>Supreme Jeannette (price: 1.25)</li><li>Supreme Plaza (price: 1.75)</li><li>Truffled Galantine Of Capon (price: 1.5)</li><li>Head Cheese With Potato Salad (price: 1.0)</li><li>Beef A La Mode In Jelly (price: 1.0)</li><li>Assorted Cold Cuts (price: 1.5)</li><li>Assorted Cold Cuts With Chicken (price: 1.75)</li><li>Beets In Butter (price: 0.5)</li><li>Cauliflower (price: 0.7)</li><li>Jersey Asparagus (price: 0.8)</li><li>String Beans (price: 0.6)</li><li>Carrots Vichy (price: 0.5)</li><li>Succotash Plaza (price: 0.65)</li><li>Lima Beans (price: 0.6)</li><li>New Peas (price: 0.6)</li><li>Braised Celery (price: 0.6)</li><li>Stewed Okra (price: 0.6)</li><li>Braised Lettuce (price: 0.6)</li><li>Artichoke (price: 0.6)</li><li>White Squash (price: 0.5)</li><li>Creamed Spinach (price: 0.6)</li><li>Stewed Fresh Tomatoes (price: 0.5)</li><li>Hubbard Squash (price: 0.5)</li><li>Small Onions In Cream (price: 0.6)</li><li>Mashed Yellow Turnips (price: 0.6)</li><li>Fried Egg Plant (price: 0.5)</li><li>Plaza Potatoes (price: 0.5)</li><li>Dixie Potatoes (price: 0.5)</li><li>Sweet Potatoes (price: 0.5)</li><li>Biron Potatoes (price: 0.45)</li><li>Boiled Bermuda Potatoes (price: 0.3)</li><li>Voisin Potatoes (price: 0.5)</li><li>Louise Salad (price: 0.6)</li><li>Sunrise Salad (price: 0.6)</li><li>Richard Salad (price: 0.6)</li><li>Lettuce, Cucumber And Beets Salad (price: 0.6)</li><li>Rocheford Salad (price: 0.6)</li><li>Alligator Pear Salad (price: 0.7)</li><li>Fruit Salad (price: 0.6)</li><li>Romaine Salad (price: 0.45)</li><li>Mixed Green Salad (price: 0.45)</li><li>Lettuce Salad (price: 0.45)</li><li>Chicory Salad (price: 0.45)</li><li>Escarole Salad (price: 0.45)</li><li>Endive Salad (price: 0.45)</li><li>Tomato Salad (price: 0.45)</li><li>Red Sour Cherry Pie (price: 0.35)</li><li>Orange Custard Pie (price: 0.35)</li><li>Mylady Pudding (price: 0.35)</li><li>Apple Fritters, Apricot Sauce (price: 0.45)</li><li>Hazelnut Layer Cake (price: 0.4)</li><li>French Pastry (1) (price: 0.25)</li><li>Apple Pie (price: 0.35)</li><li>Rice Pudding (price: 0.35)</li><li>Caramel Ice Cream (price: 0.45)</li><li>Fresh Strawberry Ice Cream (price: 0.45)</li><li>Strawberry Ice (price: 0.4)</li><li>Lemon Sherbet (price: 0.4)</li><li>Parfait Tosca (price: 0.6)</li><li>Vanilla Mousse, Hot Chocolate Sauce (price: 0.6)</li><li>Port Du Salut Cheese (price: 0.45)</li><li>Swiss Cheese (price: 0.4)</li><li>Camembert Cheese (price: 0.45)</li><li>Bel Paese Cheese (price: 0.45)</li><li>Brie Cheese (price: 0.45)</li><li>Gorgonzola Cheese (price: 0.5)</li><li>Roquefort Cheese (price: 0.5)</li><li>Liederkranz Cheese (price: 0.45)</li><li>English Cheddar Cheese (price: 0.5)</li><li>Stilton Cheese (price: 0.6)</li><li>Cantaloupe (price: 0.6)</li><li>Honeydew Melon (price: 0.6)</li><li>Strawberries (price: 0.6)</li><li>Grapefruit (price: 0.4)</li><li>Grapes (price: 0.5)</li><li>Orange (price: 0.2)</li><li>Delicious Apple (price: 0.2)</li><li>Pear (price: 0.2)</li><li>King Orange (price: 0.2)</li><li>Cocktail Sauce (price: 0.1)</li><li>Cherry Stone Clams (price: 0.5)</li><li>Little Neck Clams (price: 0.45)</li><li>Sea Food Cocktail Plaza (price: 1.0)</li><li>Crab Flake Cocktail (price: 0.75)</li><li>Shrimp Cocktail (price: 0.75)</li><li>Clam Juice Cocktail (price: 0.35)</li><li>Tomato Juice Cocktail (price: 0.35)</li><li>Orange Supreme (price: 0.65)</li><li>Grapefruit Supreme (price: 0.65)</li><li>Fruit Supreme (price: 0.65)</li><li>Melon Supreme (price: 0.65)</li><li>Pineapple Paradise (price: 0.75)</li><li>Petit Artichoke Mariniere (price: 0.5)</li><li>Fresh Caviar (price: 2.25)</li><li>Filet Of Herring (price: 0.5)</li><li>Tomato Monegasque (price: 0.75)</li><li>Smoked Salmon (price: 0.75)</li><li>Plaza Appetizer (price: 1.25)</li><li>Anchovy Canape (price: 0.6)</li><li>Hors D'oeuvre Variés</li><li>Stuffed Celery (price: 0.5)</li><li>Westphalia Ham (price: 1.25)</li><li>Maquereau Au Vin Blanc (price: 0.5)</li><li>Salami (price: 0.5)</li><li>Antipasto (price: 0.5)</li><li>St. Germain Soup (price: 0.4)</li><li>Chicken Okra Soup (price: 0.5)</li><li>Tomato Soup (price: 0.4)</li><li>Cream Of Vegetables Soup Encore (price: 0.5)</li><li>Mutton Broth Scotch Style (price: 0.5)</li><li>Jellied Chicken Consomme, Cup (price: 0.4)</li><li>Jellied Beef Consomme, Cup (price: 0.4)</li><li>Jellied Madrilene Consomme, Cup (price: 0.4)</li><li>Jellied Gumbo Consomme, Cup (price: 0.4)</li><li>Boiled Live Codfish, Mousseline Sauce (price: 0.9)</li><li>Filet Of Kingfish, Rosine (price: 1.1)</li><li>Paupiette Of Sole A La Royal (price: 0.9)</li><li>Frogs' Legs Bercy With Rice Pilaw (price: 1.25)</li><li>Baked Lobster Vanderbilt (1/2) (price: 1.5)</li><li>Brook Trout Maconnaise (price: 1.1)</li><li>Sea Bass Saute Doria (price: 1.1)</li><li>Shad Roe A La Tailer (price: 1.5)</li><li>Soft Shell Crabs A La Newburg With Mushrooms (price: 1.25)</li><li>Roast Baron Of Baby Lamb With Potatoes And Vegetables Armenonville (price: 1.5)</li><li>Squab Chicken Poele Metternick (1/2) (price: 1.5)</li><li>Escalopine Of Milk Veal Mascotte (price: 1.25)</li><li>Grilled Kernel Of Sweetbread On Toast With Bacon St. Germain (price: 1.5)</li><li>Braised Beef A La Mode With Green Noodles (price: 1.1)</li><li>Noisette De Pre Sale Rossini (price: 1.5)</li><li>Mousseline Of Ham Carignan (price: 1.1)</li><li>Calf's Head Vinaigrette (price: 0.9)</li><li>Poussin De Serre A La Souvaroff (price: 2.25)</li><li>Breast Of Guinea Hen Santa Clara (price: 1.75)</li><li>Boneless Imperial Squab A La Turner (price: 2.0)</li><li>Stuffed Mushrooms Under Glass Bercy (price: 1.0)</li><li>Roast Beef (price: 1.0)</li><li>Roast Baby Lamb (price: 1.5)</li><li>Broiler Chicken (1/2) (price: 1.5)</li><li>Broiler Chicken (price: 3.0)</li><li>Roast Squab Chicken (price: 2.0)</li><li>Roast Royal Squab (price: 1.75)</li><li>Egg With Ham (price: 0.5)</li><li>Egg Finlandaise (price: 0.6)</li><li>Egg, Nicoise (price: 0.75)</li><li>Egg, A La Russe (price: 0.75)</li><li>Kennebec Salmon Parisienne (price: 1.25)</li><li>Halibut Steak A L'espagnole (price: 1.25)</li><li>Shrimps A La Joseph (price: 0.75)</li><li>Crab Ravigote (price: 1.0)</li><li>Chicken Lobster, Mayonnaise (price: 1.5)</li><li>Supreme Jeannette (price: 1.25)</li><li>Chicken And Ham Pie (price: 1.5)</li><li>Supreme Plaza (price: 1.75)</li><li>Head Cheese With Potato Salad (price: 1.0)</li><li>Truffled Galantine Of Capon (price: 1.5)</li><li>Assorted Cold Cuts With Chicken (price: 1.75)</li><li>Beef A La Mode In Jelly (price: 1.0)</li><li>Assorted Cold Cuts (price: 1.5)</li><li>Beets In Butter (price: 0.5)</li><li>Cauliflower (price: 0.7)</li><li>Jersey Asparagus (price: 0.8)</li><li>Carrots Vichy (price: 0.5)</li><li>Succotash Plaza (price: 0.65)</li><li>Lima Beans (price: 0.6)</li><li>New Peas (price: 0.6)</li><li>String Beans (price: 0.6)</li><li>Stewed Okra (price: 0.6)</li><li>Artichoke (price: 0.6)</li><li>Braised Celery (price: 0.6)</li><li>Braised Lettuce (price: 0.6)</li><li>Stewed Fresh Tomatoes (price: 0.5)</li><li>Hubbard Squash (price: 0.5)</li><li>White Squash (price: 0.5)</li><li>Creamed Spinach (price: 0.6)</li><li>Fried Egg Plant (price: 0.5)</li><li>Mashed Yellow Turnips (price: 0.5)</li><li>Small Onions In Cream (price: 0.6)</li><li>Voisin Potatoes (price: 0.5)</li><li>Boiled Bermuda Potatoes (price: 0.3)</li><li>Dixie Potatoes (price: 0.5)</li><li>Biron Potatoes (price: 0.45)</li><li>Sweet Potatoes (price: 0.5)</li><li>Plaza Potatoes (price: 0.5)</li><li>Lettuce, Celery And Pimentos Salad (price: 0.6)</li><li>Hartford Salad (price: 0.6)</li><li>Bonnie Brea Salad (price: 0.6)</li><li>Fruit Salad (price: 0.6)</li><li>Rocheford Salad (price: 0.6)</li><li>Alligator Pear Salad (price: 0.7)</li><li>Tomato Salad (price: 0.45)</li><li>Escarole Salad (price: 0.45)</li><li>Romaine Salad (price: 0.45)</li><li>Mixed Green Salad (price: 0.45)</li><li>Chicory Salad (price: 0.45)</li><li>Endive Salad (price: 0.45)</li><li>Lettuce Salad (price: 0.45)</li><li>Cold Pudding Sans Gene (price: 0.35)</li><li>Hot Fig Pudding (price: 0.35)</li><li>Souffle Surprise (price: 0.75)</li><li>Raspberry Jelly (price: 0.35)</li><li>Almond Blanc Manger (price: 0.4)</li><li>French Pastry (1) (price: 0.25)</li><li>Apple Pie (price: 0.35)</li><li>Rice Pudding (price: 0.35)</li><li>Strawberry Ice (price: 0.4)</li><li>Caramel Ice Cream (price: 0.45)</li><li>Fresh Strawberry Ice Cream (price: 0.45)</li><li>Strawberry Coupe (price: 0.6)</li><li>Pear Cardinal (price: 0.65)</li><li>Orange Sherbet (price: 0.4)</li><li>Bel Paese Cheese (price: 0.45)</li><li>Brie Cheese (price: 0.45)</li><li>Port Du Salut Cheese (price: 0.45)</li><li>Swiss Cheese (price: 0.4)</li><li>Camembert Cheese (price: 0.45)</li><li>English Cheddar Cheese (price: 0.5)</li><li>Liederkranz Cheese (price: 0.45)</li><li>Gorgonzola Cheese (price: 0.5)</li><li>Stilton Cheese (price: 0.6)</li><li>Roquefort Cheese (price: 0.5)</li><li>Honeydew Melon (price: 0.6)</li><li>Strawberries (price: 0.6)</li><li>Cantaloupe (price: 0.6)</li><li>Orange (price: 0.2)</li><li>Delicious Apple (price: 0.2)</li><li>Pear (price: 0.2)</li><li>King Orange (price: 0.2)</li><li>Grapefruit (price: 0.4)</li><li>Grapes (price: 0.5)</li><li>Cherry Stone Clams (price: 0.5)</li><li>Little Neck Clams (price: 0.45)</li><li>Cocktail Sauce (price: 0.1)</li><li>Sea Food Cocktail Plaza (price: 1.0)</li><li>Crab Flake Cocktail (price: 0.75)</li><li>Shrimp Cocktail (price: 0.75)</li><li>Clam Juice Cocktail (price: 0.35)</li><li>Tomato Juice Cocktail (price: 0.35)</li><li>Grapefruit Supreme (price: 0.65)</li><li>Melon Supreme (price: 0.65)</li><li>Fruit Supreme (price: 0.65)</li><li>Orange Supreme (price: 0.65)</li><li>Pineapple Paradise (price: 0.75)</li><li>Fresh Caviar (price: 2.25)</li><li>Petit Artichoke Mariniere (price: 0.5)</li><li>Filet Of Herring (price: 0.5)</li><li>Plaza Appetizer (price: 1.25)</li><li>Smoked Salmon (price: 0.75)</li><li>Tomato Monegasque (price: 0.75)</li><li>Anchovy Canape (price: 0.6)</li><li>Hors D'oeuvre Variés</li><li>Stuffed Celery (price: 0.5)</li><li>Salami (price: 0.5)</li><li>Westphalia Ham (price: 1.25)</li><li>Antipasto (price: 0.5)</li><li>Maquereau Au Vin Blanc (price: 0.5)</li><li>Chicken Okra Soup (price: 0.5)</li><li>St. Germain Soup (price: 0.4)</li><li>Tomato Soup (price: 0.4)</li><li>Cream Soup Mille Fanti (price: 0.5)</li><li>Onion Soup Gratine (price: 0.5)</li><li>Jellied Consomme, Chicken (price: 0.4)</li><li>Jellied Consomme, Madrilene (price: 0.4)</li><li>Jellied Consomme, Beef (price: 0.4)</li><li>Gumbo (price: 0.4)</li><li>Poached Eggs A La Henry (price: 0.75)</li><li>Omelette Au Gruyere (price: 0.8)</li><li>Scramble Eggs With Asparagus Tips (price: 0.8)</li><li>Steamed Finnan Haddie Des Gourmets (price: 0.9)</li><li>Filet Of Flounder St. Germain (price: 0.9)</li><li>Frogs' Legs Rissolees A La Royer (price: 1.25)</li><li>Soft Shell Crabs A La Sterry (price: 1.25)</li><li>Chicken Halibut A La Manhatta (price: 1.1)</li><li>Sea Bass Saute A L'orange (price: 1.1)</li><li>Grilled Boneless Shad With Mushrooms, Bacon And Cole Slaw (price: 1.25)</li><li>Brook Trout Cleopatra (price: 1.1)</li><li>Plate Corned Beef With Spinach, Parsley Potatoes And Chow Chow (price: 1.1)</li><li>Roast Hindquarter Of Baby Lamb With White Beans Bretonne (price: 1.5)</li><li>Milk Veal Cutlet Reforme With Carrots And Peas (price: 1.25)</li><li>Assorted Fresh Vegetables En Bordure Gratinee (price: 1.25)</li><li>Shell Of Capon A La Royal (price: 1.5)</li><li>English Mutton Chop Vert Pre (price: 1.25)</li><li>Smothered Guinea Hen, Marengo (1/2) (price: 1.75)</li><li>Supreme Of Chicken Belle Helene (price: 1.75)</li><li>Planked Small Steak Aux Primeurs (price: 2.75)</li><li>Grilled Fresh Mushrooms On Toast, Beurre D'escargots (price: 0.8)</li><li>Cold Egg With Ham (price: 0.5)</li><li>Egg Nicoise (price: 0.75)</li><li>Cold Egg A La Russe (price: 0.75)</li><li>Cold Egg Finlandaise (price: 0.6)</li><li>Cold Kennebec Salmon Parisienne (price: 1.25)</li><li>Cold Halibut Steak A L'espagnole (price: 1.25)</li><li>Chicken Lobster, Mayonnaise (price: 1.5)</li><li>Crab Ravigote (price: 1.0)</li><li>Cold Shrimps A La Joseph (price: 0.75)</li><li>Cold Chicken And Ham Pie (price: 1.5)</li><li>Cold Supreme Jeannette (price: 1.25)</li><li>Cold Supreme Plaza (price: 1.75)</li><li>Head Cheese With Potato Salad (price: 1.0)</li><li>Truffled Galantine Of Capon (price: 1.5)</li><li>Assorted Cold Cuts (price: 1.5)</li><li>Assorted Cold Cuts With Chicken (price: 1.75)</li><li>Beef A La Mode In Jelly (price: 1.0)</li><li>Jersey Asparagus (price: 0.8)</li><li>Cauliflower (price: 0.7)</li><li>Beets In Butter (price: 0.5)</li><li>Lima Beans (price: 0.6)</li><li>New Peas (price: 0.6)</li><li>String Beans (price: 0.6)</li><li>Succotash Plaza (price: 0.65)</li><li>Carrots Vichy (price: 0.5)</li><li>Braised Lettuce (price: 0.6)</li><li>Stewed Okra (price: 0.6)</li><li>Braised Celery (price: 0.6)</li><li>Artichoke (price: 0.6)</li><li>White Squash (price: 0.5)</li><li>Stewed Fresh Tomatoes (price: 0.5)</li><li>Hubbard Squash (price: 0.5)</li><li>Creamed Spinach (price: 0.6)</li><li>Fried Egg Plant (price: 0.5)</li><li>Mashed Yellow Turnips (price: 0.6)</li><li>Small Onions In Cream (price: 0.6)</li><li>Biron Potatoes (price: 0.45)</li><li>Boiled Bermuda Potatoes (price: 0.3)</li><li>Voisin Potatoes (price: 0.5)</li><li>Plaza Potatoes (price: 0.5)</li><li>Sweet Potatoes (price: 0.5)</li><li>Dixie Potatoes (price: 0.5)</li><li>Jeannette Salad (price: 0.6)</li><li>Mimosa Salad (price: 0.6)</li><li>Sunrise Salad (price: 0.6)</li><li>Lettuce, Tomato And Asparagus Tips Salad (price: 0.6)</li><li>Rocheford Salad (price: 0.6)</li><li>Alligator Pear Salad (price: 0.7)</li><li>Fruit Salad (price: 0.6)</li><li>Mixed Green Salad (price: 0.45)</li><li>Romaine Salad (price: 0.45)</li><li>Tomato Salad (price: 0.45)</li><li>Escarole Salad (price: 0.45)</li><li>Lettuce Salad (price: 0.45)</li><li>Endive Salad (price: 0.45)</li><li>Macaroon Custard Pie (price: 0.35)</li><li>Apple Dumpling, Hard Sauce (price: 0.4)</li><li>Peach Pie (price: 0.35)</li><li>Pompadour Chantilly (price: 0.25)</li><li>Marquise Layer Cake (price: 0.4)</li><li>French Pastry (1) (price: 0.25)</li><li>Apple Pie (price: 0.35)</li><li>Rice Pudding (price: 0.35)</li><li>Strawberry Ice (price: 0.4)</li><li>Fresh Strawberry Ice Cream (price: 0.45)</li><li>Caramel Ice Cream (price: 0.45)</li><li>Parfait Tosca (price: 0.6)</li><li>Vanilla Mousse, Hot Chocolate Sauce (price: 0.6)</li><li>Lemon Sherbet (price: 0.4)</li><li>Bel Paese Cheese (price: 0.45)</li><li>Brie Cheese (price: 0.45)</li><li>Port Du Salut Cheese (price: 0.45)</li><li>Swiss Cheese (price: 0.4)</li><li>Camembert Cheese (price: 0.45)</li><li>Liederkranz Cheese (price: 0.45)</li><li>English Cheddar Cheese (price: 0.5)</li><li>Stilton Cheese (price: 0.6)</li><li>Roquefort Cheese (price: 0.5)</li><li>Gorgonzola Cheese (price: 0.5)</li><li>Honeydew Melon (price: 0.6)</li><li>Strawberries (price: 0.6)</li><li>Cantaloupe (price: 0.6)</li><li>Delicious Apple (price: 0.2)</li><li>Orange (price: 0.2)</li><li>Pear (price: 0.2)</li><li>Grapes (price: 0.5)</li><li>King Orange (price: 0.2)</li><li>Grapefruit (price: 0.4)</li><li>Cherry Stone Clams (price: 0.5)</li><li>Cocktail Sauce (price: 0.1)</li><li>Little Neck Clams (price: 0.45)</li><li>Sea Food Cocktail Plaza (price: 1.0)</li><li>Crab Flake Cocktail (price: 0.75)</li><li>Clam Juice Cocktail (price: 0.35)</li><li>Tomato Juice Cocktail (price: 0.35)</li><li>Shrimp Cocktail (price: 0.75)</li><li>Grapefruit Supreme (price: 0.65)</li><li>Melon Supreme (price: 0.65)</li><li>Orange Supreme (price: 0.65)</li><li>Pineapple Paradise (price: 0.75)</li><li>Fruit Supreme (price: 0.65)</li><li>Fresh Caviar (price: 2.25)</li><li>Petit Artichoke Mariniere (price: 0.5)</li><li>Filet Of Herring (price: 0.5)</li><li>Plaza Appetizer (price: 1.25)</li><li>Smoked Salmon (price: 0.75)</li><li>Tomato Monegasque (price: 0.75)</li><li>Anchovy Canape (price: 0.6)</li><li>Hors D'oeuvre Variés</li><li>Stuffed Celery (price: 0.5)</li><li>Maquereau Au Vin Blanc (price: 0.5)</li><li>Westphalia Ham (price: 1.25)</li><li>Salami (price: 0.5)</li><li>Antipasto (price: 0.5)</li><li>St. Germain Soup (price: 0.4)</li><li>Chicken Okra Soup (price: 0.5)</li><li>Tomato Soup (price: 0.4)</li><li>Cream Of Asparagus Soup Aux Quenelles (price: 0.5)</li><li>Florida Soup With Paillettes Doree (price: 0.6)</li><li>Jellied Madrilene Consomme, Cup (price: 0.4)</li><li>Jellied Gumbo Consomme, Cup (price: 0.4)</li><li>Jellied Chicken Consomme, Cup (price: 0.4)</li><li>Jellied Beef Consomme, Cup (price: 0.4)</li><li>Boiled Kennebec Salmon, Sauce Hollandaise (price: 1.1)</li><li>Supreme Of Sole A La Plaza (price: 0.9)</li><li>Patty Of Frogs' Legs With Mushrooms Newburg (price: 1.25)</li><li>Brook Trout A La Tivoli (price: 1.1)</li><li>Grilled Bluefish With Cucumber Vernon (price: 1.1)</li><li>Sea Bass Saute Dauphine (price: 1.1)</li><li>Sof Shell Crabs Rissolees With Almonds And Apples (price: 1.25)</li><li>Boneless Shad And Roe Meuniere A La Vichy (price: 1.25)</li><li>Roast Hindquarter Of Baby Lamb With Succotash Virginia, Potatoes Olivette (price: 1.5)</li><li>Smothered Breast Of Chicken Archiduc With Asparagus Tips, Mashed Carrots (price: 1.75)</li><li>Escalopine Of Milk Veal A La Kossuth With Veloute Of Artichokes (price: 1.25)</li><li>Steak Minute Saute Chasseur With Noodles And Braised Celery (price: 1.75)</li><li>Grilled Kernel Of Sweetbread Gismonde (price: 1.5)</li><li>Mousseline Of Ham Florentine (price: 1.1)</li><li>Milk Fed Chicken Saute Bordelaise (1/2) (price: 1.75)</li><li>Noisette De Pre Sale Rossini (price: 1.5)</li><li>Imperial Squab En Casserole Turner (price: 2.0)</li><li>Grilled Fresh Mushrooms On Toast With Ham Maitre D'hotel (price: 1.0)</li><li>Roast Baby Lamb (price: 1.5)</li><li>Roast Beef (price: 1.0)</li><li>Roast Royal Squab (price: 1.75)</li><li>Broiled Chicken (price: 3.0)</li><li>Broiler Chicken (1/2) (price: 1.5)</li><li>Roast Squab Chicken (price: 2.0)</li><li>Egg, Nicoise (price: 0.75)</li><li>Cold Egg With Ham (price: 0.5)</li><li>Cold Egg A La Russe (price: 0.75)</li><li>Cold Egg Finlandaise (price: 0.6)</li><li>Cold Halibut Steak A L'espagnole (price: 1.25)</li><li>Cold Kennebec Salmon Parisienne (price: 1.25)</li><li>Cold Shrimps A La Joseph (price: 0.75)</li><li>Chicken Lobster, Mayonnaise (price: 1.5)</li><li>Crab Ravigote (price: 1.0)</li><li>Cold Supreme Plaza (price: 1.75)</li><li>Cold Chicken And Ham Pie (price: 1.5)</li><li>Cold Supreme Jeannette (price: 1.25)</li><li>Truffled Galantine Of Capon (price: 1.5)</li><li>Head Cheese With Potato Salad (price: 1.0)</li><li>Assorted Cold Cuts With Chicken (price: 1.75)</li><li>Assorted Cold Cuts (price: 1.5)</li><li>Beef A La Mode In Jelly (price: 1.0)</li><li>Cauliflower (price: 0.7)</li><li>Beets In Butter (price: 0.5)</li><li>Jersey Asparagus (price: 0.8)</li><li>Lima Beans (price: 0.6)</li><li>New Peas (price: 0.6)</li><li>Succotash Plaza (price: 0.65)</li><li>String Beans (price: 0.6)</li><li>Carrots Vichy (price: 0.5)</li><li>Stewed Okra (price: 0.6)</li><li>Artichoke (price: 0.6)</li><li>Braised Lettuce (price: 0.6)</li><li>Braised Celery (price: 0.6)</li><li>Creamed Spinach (price: 0.6)</li><li>Stewed Fresh Tomatoes (price: 0.5)</li><li>Hubbard Squash (price: 0.5)</li><li>White Squash (price: 0.5)</li><li>Mashed Yellow Turnips (price: 0.5)</li><li>Small Onions In Cream (price: 0.6)</li><li>Fried Egg Plant (price: 0.5)</li><li>Biron Potatoes (price: 0.45)</li><li>Boiled Bermuda Potatoes (price: 0.3)</li><li>Sweet Potatoes (price: 0.5)</li><li>Voisin Potatoes (price: 0.5)</li><li>Dixie Potatoes (price: 0.5)</li><li>Plaza Potatoes (price: 0.5)</li><li>Sunrise Salad (price: 0.6)</li><li>Hartford Salad (price: 0.6)</li><li>Lily Salad (price: 0.6)</li><li>Plaza Special Salad (price: 0.6)</li><li>Princess Salad (price: 0.6)</li><li>Alligator Pear Salad (price: 0.7)</li><li>Rocheford Salad (price: 0.6)</li><li>Fruit Salad (price: 0.6)</li><li>Tomato Salad (price: 0.45)</li><li>Mixed Green Salad (price: 0.45)</li><li>Romaine Salad (price: 0.45)</li><li>Endive Salad (price: 0.45)</li><li>Escarole Salad (price: 0.45)</li><li>Lettuce Salad (price: 0.45)</li><li>Cold Farina Pudding (price: 0.35)</li><li>Hot Valencia Pudding (price: 0.35)</li><li>Vanilla Bavaroise (price: 0.4)</li><li>Apricot Bourdaloue (price: 0.4)</li><li>Souffle Nougatine (price: 0.75)</li><li>French Pastry (1) (price: 0.25)</li><li>Rice Pudding (price: 0.35)</li><li>Apple Pie (price: 0.35)</li><li>Strawberry Ice (price: 0.4)</li><li>Fresh Strawberry Ice Cream (price: 0.45)</li><li>Caramel Ice Cream (price: 0.45)</li><li>Pear Cardinal (price: 0.65)</li><li>Orange Sherbet (price: 0.4)</li><li>Strawberry Coupe (price: 0.6)</li><li>Swiss Cheese (price: 0.4)</li><li>Bel Paese Cheese (price: 0.45)</li><li>Port Du Salut Cheese (price: 0.45)</li><li>Brie Cheese (price: 0.45)</li><li>Camembert Cheese (price: 0.45)</li><li>English Cheddar Cheese (price: 0.5)</li><li>Stilton Cheese (price: 0.6)</li><li>Liederkranz Cheese (price: 0.45)</li><li>Roquefort Cheese (price: 0.5)</li><li>Gorgonzola Cheese (price: 0.5)</li><li>Honeydew Melon (price: 0.6)</li><li>Strawberries (price: 0.6)</li><li>Cantaloupe (price: 0.6)</li><li>Orange (price: 0.2)</li><li>Pear (price: 0.2)</li><li>Delicious Apple (price: 0.2)</li><li>Grapes (price: 0.5)</li><li>Grapefruit (price: 0.4)</li><li>King Orange (price: 0.2)</li><li>Little Neck Clams (price: 0.45)</li><li>Cherry Stone Clams (price: 0.5)</li><li>Cocktail Sauce (price: 0.1)</li><li>Crab Flake Cocktail (price: 0.75)</li><li>Sea Food Cocktail Plaza (price: 1.0)</li><li>Tomato Juice Cocktail (price: 0.35)</li><li>Shrimp Cocktail (price: 0.75)</li><li>Clam Juice Cocktail (price: 0.35)</li><li>Pineapple Paradise (price: 0.75)</li><li>Fruit Supreme (price: 0.65)</li><li>Melon Supreme (price: 0.65)</li><li>Orange Supreme (price: 0.65)</li><li>Grapefruit Supreme (price: 0.65)</li><li>Filet Of Herring (price: 0.5)</li><li>Fresh Caviar (price: 2.25)</li><li>Petit Artichoke Mariniere (price: 0.5)</li><li>Smoked Salmon (price: 0.75)</li><li>Tomato Monegasque (price: 0.75)</li><li>Plaza Appetizer (price: 1.25)</li><li>Stuffed Celery (price: 0.5)</li><li>Anchovy Canape (price: 0.6)</li><li>Hors D'oeuvre Variés</li><li>Westphalia Ham (price: 1.25)</li><li>Salami (price: 0.5)</li><li>Maquereau Au Vin Blanc (price: 0.5)</li><li>Antipasto (price: 0.5)</li><li>Tomato Soup (price: 0.4)</li><li>Chicken Okra Soup (price: 0.5)</li><li>St. Germain Soup (price: 0.4)</li><li>Jubilee Soup (price: 0.5)</li><li>Clam Chowder Manhattan (price: 0.5)</li><li>Jellied Beef Consomme, Cup (price: 0.4)</li><li>Jellied Madrilene Consomme, Cup (price: 0.4)</li><li>Jellied Chicken Consomme, Cup (price: 0.4)</li><li>Jellied Gumbo Consomme, Cup (price: 0.4)</li><li>Poached Eggs, Lorenzo (price: 0.75)</li><li>Omelet With Chicken Livers Madere (price: 0.8)</li><li>Shirred Eggs Bercy (price: 0.5)</li><li>Boston Rock Cod Saute Lyonnaise (price: 0.9)</li><li>Chicken Halibut A La Venitienne (price: 1.1)</li><li>Filet Of Kingfish, Laperouse (price: 1.1)</li><li>Supreme Of Sole Waleska (price: 0.9)</li><li>Sea Bass Saute Cleopatra (price: 1.1)</li><li>Brook Trout A La Beaucaire (price: 1.1)</li><li>Crab Flakes A La King, Wheat Cakes (price: 1.25)</li><li>Boneless Shad And Roe, Tyrolienne (price: 1.25)</li><li>Frogs' Legs Bercy With Rice Pilaw (price: 1.25)</li><li>Prime Rib Of Beef With Potatoes Fondantes And Stuffed Tomato (price: 1.25)</li><li>Braised Milk Veal Chop With Spinach And Mushrooms (price: 1.25)</li><li>Roast Loin Of Baby Lamb With Cauliflower Polonaise (price: 1.5)</li><li>Smothered Squab Chicken A La Biarritz (1/2) (price: 1.5)</li><li>Stuffed Mushrooms Under Glass Maitre D'hotel (price: 1.0)</li><li>Fresh Vegetable Luncheon With Poached Egg (price: 1.25)</li><li>Imperial Squab Sous La Cendre Perigourdine (price: 2.0)</li><li>Mixed Grill A L'americaine (price: 1.25)</li><li>Supreme Of Guinea Hen D'alcantora (price: 1.75)</li><li>Milk Fed Chicken Lathuile (1/2) (price: 1.75)</li><li>Filet Mignon Henry Iv (price: 2.0)</li><li>Egg Finlandaise (price: 0.6)</li><li>Egg A La Russe (price: 0.75)</li><li>Egg With Ham (price: 0.5)</li><li>Egg, Nicoise (price: 0.75)</li><li>Cold Halibut Steak A L'espagnole (price: 1.25)</li><li>Kennebec Salmon Parisienne (price: 1.25)</li><li>Crab Ravigote (price: 1.0)</li><li>Shrimps A La Joseph (price: 0.75)</li><li>Chicken Lobster, Mayonnaise (price: 1.5)</li><li>Supreme Jeannette (price: 1.25)</li><li>Chicken And Ham Pie (price: 1.5)</li><li>Supreme Plaza (price: 1.75)</li><li>Head Cheese With Potato Salad (price: 1.0)</li><li>Truffled Galantine Of Capon (price: 1.5)</li><li>Assorted Cold Cuts (price: 1.5)</li><li>Assorted Cold Cuts With Chicken (price: 1.75)</li><li>Beef A La Mode In Jelly (price: 1.0)</li><li>Beets In Butter (price: 0.5)</li><li>Cauliflower (price: 0.7)</li><li>Jersey Asparagus (price: 0.8)</li><li>Carrots Vichy (price: 0.5)</li><li>String Beans (price: 0.6)</li><li>New Peas (price: 0.6)</li><li>Lima Beans (price: 0.6)</li><li>Succotash Plaza (price: 0.65)</li><li>Artichoke (price: 0.6)</li><li>Braised Celery (price: 0.6)</li><li>Stewed Okra (price: 0.6)</li><li>Braised Lettuce (price: 0.6)</li><li>Stewed Fresh Tomatoes (price: 0.5)</li><li>Hubbard Squash (price: 0.5)</li><li>Creamed Spinach (price: 0.6)</li><li>White Squash (price: 0.5)</li><li>Mashed Yellow Turnips (price: 0.6)</li><li>Fried Egg Plant (price: 0.5)</li><li>Small Onions In Cream (price: 0.6)</li><li>Voisin Potatoes (price: 0.5)</li><li>Plaza Potatoes (price: 0.5)</li><li>Dixie Potatoes (price: 0.5)</li><li>Biron Potatoes (price: 0.45)</li><li>Boiled Bermuda Potatoes (price: 0.3)</li><li>Sweet Potatoes (price: 0.5)</li><li>Juliette Salad (price: 0.6)</li><li>Excelsior Salad (price: 0.6)</li><li>Hartford Salad (price: 0.6)</li><li>Royal Salad (price: 0.6)</li><li>Fruit Salad (price: 0.6)</li><li>Alligator Pear Salad (price: 0.7)</li><li>Rocheford Salad (price: 0.6)</li><li>Escarole Salad (price: 0.45)</li><li>Lettuce Salad (price: 0.45)</li><li>Mixed Green Salad (price: 0.45)</li><li>Tomato Salad (price: 0.45)</li><li>Endive Salad (price: 0.45)</li><li>Romaine Salad (price: 0.45)</li><li>Strawberry Meringue Pie (price: 0.35)</li><li>Farina Pudding, Fruit Sauce (price: 0.35)</li><li>Boston Cream Puff (price: 0.25)</li><li>Vanilla Custard Pie (price: 0.35)</li><li>Flemish Apple Cake (price: 0.4)</li><li>Rice Pudding (price: 0.35)</li><li>Apple Pie (price: 0.35)</li><li>French Pastry (1) (price: 0.25)</li><li>Strawberry Ice (price: 0.4)</li><li>Caramel Ice Cream (price: 0.45)</li><li>Fresh Strawberry Ice Cream (price: 0.45)</li><li>Parfait Tosca (price: 0.6)</li><li>Vanilla Mousse, Hot Chocolate Sauce (price: 0.6)</li><li>Lemon Sherbet (price: 0.4)</li><li>Bel Paese Cheese (price: 0.45)</li><li>Brie Cheese (price: 0.45)</li><li>Swiss Cheese (price: 0.4)</li><li>Port Du Salut Cheese (price: 0.45)</li><li>Camembert Cheese (price: 0.45)</li><li>Stilton Cheese (price: 0.6)</li><li>English Cheddar Cheese (price: 0.5)</li><li>Gorgonzola Cheese (price: 0.5)</li><li>Liederkranz Cheese (price: 0.45)</li><li>Roquefort Cheese (price: 0.5)</li><li>Honeydew Melon (price: 0.6)</li><li>Strawberries (price: 0.6)</li><li>Cantaloupe (price: 0.6)</li><li>Orange (price: 0.2)</li><li>Grapes (price: 0.5)</li><li>Grapefruit (price: 0.4)</li><li>Delicious Apple (price: 0.2)</li><li>Pear (price: 0.2)</li><li>King Orange (price: 0.2)</li><li>Cherry Stone Clams (price: 0.5)</li><li>Cocktail Sauce (price: 0.1)</li><li>Little Neck Clams (price: 0.45)</li><li>Sea Food Cocktail Plaza (price: 1.0)</li><li>Crab Flake Cocktail (price: 0.75)</li><li>Shrimp Cocktail (price: 0.75)</li><li>Clam Juice Cocktail (price: 0.35)</li><li>Tomato Juice Cocktail (price: 0.35)</li><li>Grapefruit Supreme (price: 0.65)</li><li>Pineapple Paradise (price: 0.75)</li><li>Fruit Supreme (price: 0.65)</li><li>Orange Supreme (price: 0.65)</li><li>Melon Supreme (price: 0.65)</li><li>Petit Artichoke Mariniere (price: 0.5)</li><li>Filet Of Herring (price: 0.5)</li><li>Fresh Caviar (price: 2.25)</li><li>Tomato Monegasque (price: 0.75)</li><li>Plaza Appetizer (price: 1.25)</li><li>Smoked Salmon (price: 0.75)</li><li>Hors D'oeuvre Variés</li><li>Stuffed Celery (price: 0.5)</li><li>Anchovy Canape (price: 0.6)</li><li>Maquereau Au Vin Blanc (price: 0.5)</li><li>Salami (price: 0.5)</li><li>Antipasto (price: 0.5)</li><li>Westphalia Ham (price: 1.25)</li><li>Chicken Okra Soup (price: 0.5)</li><li>St. Germain Soup (price: 0.4)</li><li>Tomato Soup (price: 0.4)</li><li>Soup, Petite Marmite St. Michel (price: 0.6)</li><li>Soup, Cream Of Shrimps Aux Quenelles (price: 0.5)</li><li>Jellied Consomme, Beef (price: 0.4)</li><li>Jellied Consomme, Madrilene (price: 0.4)</li><li>Gumbo (price: 0.4)</li><li>Jellied Consomme, Chicken (price: 0.4)</li><li>Boiled Live Codfish, Egg Sauce (price: 0.9)</li><li>Stuffed Brook Trout Polonaise (price: 1.1)</li><li>Supreme Of Sole Amelie (price: 0.9)</li><li>Soft Shell Crabs, Belle Meuniere (price: 1.25)</li><li>Grilled Bluefish With Cucumber Vernon (price: 1.1)</li><li>Lobster Excelsior (1/2) (price: 1.5)</li><li>Halibut Steak Meuniere A L'orange (price: 1.1)</li><li>Patty Of Frogs' Legs Maryland (price: 1.25)</li><li>Planked Boneless Shad, Bouquetiere (price: 1.25)</li><li>Filet Of Sea Bass Breval (price: 1.1)</li><li>Roast Baron Of Baby Lamb, Boulangere, Creamed Asparagus Tips (price: 1.5)</li><li>Glazed Sugar Cured Ham With Candied Sweet Potatoes, Whole Spinach (price: 1.1)</li><li>Fried Squab Chicken A La Maryland (1/2) (price: 1.5)</li><li>Petit Tournedao Saute Cocarde (price: 1.75)</li><li>Grilled Kernel Of Sweetbread With Heart Of Artichoke Da Gama (price: 1.5)</li><li>Mushrooms In Crust A La Creme (price: 1.0)</li><li>Small Steak En Casserole Grand'mere (price: 2.25)</li><li>Mushrooms In Crust A La Creme (price: 1.0)</li><li>Vol Au Vent Clementine (price: 1.5)</li><li>Boneless Royal Squab A La Washington (price: 2.0)</li><li>Supreme Of Hot House Chicken Champs Elysees (price: 1.75)</li><li>Roast Beef (price: 1.0)</li><li>Roast Baby Lamb (price: 1.5)</li><li>Roast Royal Squab (price: 1.75)</li><li>Roast Squab Chicken (price: 2.0)</li><li>Broiler (price: 1.5- 3.0)</li><li>Cold Egg, Nicoise Or A La Russe (price: 0.75)</li><li>Cold Egg Finlandaise (price: 0.6)</li><li>Cold Egg With Ham (price: 0.5)</li><li>Egg A La Russe (price: 0.75)</li><li>Cold Halibut Steak A L'espagnole (price: 1.25)</li><li>Cold Kennebec Salmon Parisienne (price: 1.25)</li><li>Cold Chicken Lobster, Mayonnaise (price: 1.5)</li><li>Cold Shrimps A La Joseph (price: 0.75)</li><li>Cold Crab Ravigote (price: 1.0)</li><li>Cold Chicken And Ham Pie (price: 1.5)</li><li>Cold Supreme Plaza (price: 1.75)</li><li>Cold Supreme Jeannette (price: 1.25)</li><li>Cold Head Cheese With Potato Salad (price: 1.0)</li><li>Cold Truffled Galantine Of Capon (price: 1.5)</li><li>Assorted Cold Cuts With Chicken (price: 1.75)</li><li>Cold Beef A La Mode In Jelly (price: 1.0)</li><li>Assorted Cold Cuts (price: 1.5)</li><li>Cauliflower (price: 0.7)</li><li>Beets On Butter (price: 0.5)</li><li>Jersey Asparagus (price: 0.8)</li><li>Succotash Plaza (price: 0.65)</li><li>Lima Beans (price: 0.6)</li><li>Carrots Vichy (price: 0.5)</li><li>New Peas (price: 0.6)</li><li>String Beans (price: 0.6)</li><li>Artichoke (price: 0.6)</li><li>Braised Lettuce (price: 0.6)</li><li>Stewed Okra (price: 0.6)</li><li>Braised Celery (price: 0.6)</li><li>White Squash (price: 0.5)</li><li>Creamed Spinach (price: 0.6)</li><li>Hubbard Squash (price: 0.5)</li><li>Stewed Fresh Tomatoes (price: 0.5)</li><li>Mashed Yellow Turnips (price: 0.5)</li><li>Small Onions In Cream (price: 0.6)</li><li>Fried Egg Plant (price: 0.5)</li><li>Voisin Potatoes (price: 0.5)</li><li>Dixie Potatoes (price: 0.5)</li><li>Biron Potatoes (price: 0.45)</li><li>Sweet Potatoes (price: 0.5)</li><li>Plaza Potatoes (price: 0.5)</li><li>Boiled Bermuda Potatoes (price: 0.3)</li><li>Lettuce, Eggs And Beets Salad (price: 0.6)</li><li>Hartford Salad (price: 0.6)</li><li>Orleans Salad (price: 0.6)</li><li>Sunrise Salad (price: 0.6)</li><li>Alligator Pear Salad (price: 0.7)</li><li>Fruit Salad (price: 0.6)</li><li>Rocheford Salad (price: 0.6)</li><li>Tomato Salad (price: 0.45)</li><li>Mixed Green Salad (price: 0.45)</li><li>Endive Salad (price: 0.45)</li><li>Escarole Salad (price: 0.45)</li><li>Lettuce Salad (price: 0.45)</li><li>Romaine Salad (price: 0.45)</li><li>Hot Semoulina Pudding (price: 0.35)</li><li>Cold Pineapple Pudding (price: 0.35)</li><li>Souffle Martinique (price: 0.75)</li><li>Nicoise Jelly (price: 0.35)</li><li>Crème Caramel (price: 0.3)</li><li>Apple Pie (price: 0.35)</li><li>French Pastry (1) (price: 0.25)</li><li>Rice Pudding (price: 0.35)</li><li>Strawberry Ice (price: 0.4)</li><li>Caramel Ice Cream (price: 0.45)</li><li>Fresh Strawberry Ice Cream (price: 0.45)</li><li>Strawberry Coupe (price: 0.6)</li><li>Pear Cardinal (price: 0.65)</li><li>Orange Sherbet (price: 0.4)</li><li>Bel Paese Cheese (price: 0.45)</li><li>Port Du Salut Cheese (price: 0.45)</li><li>Camembert Cheese (price: 0.45)</li><li>Brie Cheese (price: 0.45)</li><li>Swiss Cheese (price: 0.4)</li><li>English Cheddar Cheese (price: 0.5)</li><li>Roquefort Cheese (price: 0.5)</li><li>Liederkranz Cheese (price: 0.45)</li><li>Gorgonzola Cheese (price: 0.5)</li><li>Stilton Cheese (price: 0.6)</li><li>Strawberries (price: 0.6)</li><li>Honeydew Melon (price: 0.6)</li><li>Cantaloupe (price: 0.6)</li><li>Delicious Apple (price: 0.2)</li><li>Pear (price: 0.2)</li><li>Grapefruit (price: 0.4)</li><li>Grapes (price: 0.5)</li><li>Orange (price: 0.2)</li><li>King Orange (price: 0.2)</li><li>Cocktail Sauce (price: 0.1)</li><li>Little Neck Clams (price: 0.45)</li><li>Cherry Stone Clams (price: 0.5)</li><li>Crab Flake Cocktail (price: 0.75)</li><li>Sea Food Cocktail Plaza (price: 1.0)</li><li>Tomato Juice Cocktail (price: 0.35)</li><li>Shrimp Cocktail (price: 0.75)</li><li>Clam Juice Cocktail (price: 0.35)</li><li>Pineapple Paradise (price: 0.75)</li><li>Melon Supreme (price: 0.65)</li><li>Fruit Supreme (price: 0.65)</li><li>Orange Supreme (price: 0.65)</li><li>Grapefruit Supreme (price: 0.65)</li><li>Petit Artichoke Mariniere (price: 0.5)</li><li>Filet Of Herring (price: 0.5)</li><li>Fresh Caviar (price: 2.25)</li><li>Tomato Monegasque (price: 0.75)</li><li>Plaza Appetizer (price: 1.25)</li><li>Smoked Salmon (price: 0.75)</li><li>Anchovy Canape (price: 0.6)</li><li>Stuffed Celery (price: 0.5)</li><li>Hors D'oeuvres Varies</li><li>Antipasto (price: 0.5)</li><li>Salami (price: 0.5)</li><li>Westphalia Ham (price: 1.25)</li><li>Maquereau Au Vin Blanc (price: 0.5)</li><li>Tomato Soup (price: 0.4)</li><li>Chicken Okra Soup (price: 0.5)</li><li>St. Germain Soup (price: 0.4)</li><li>Cream Soup Ambassadeur (price: 0.5)</li><li>Jellied Consomme Gumbo, Cup (price: 0.4)</li><li>Jellied Consomme Madrilene, Cup (price: 0.4)</li><li>Jellied Consomme Chicken, Cup (price: 0.4)</li><li>Jellied Consomme Beef, Cup (price: 0.4)</li><li>Scrambled Eggs With Mushrooms (price: 0.8)</li><li>Eggs Cocotte Cafe Anglais (price: 0.5)</li><li>Poached Eggs, Comtesse (price: 0.55)</li><li>Omelette Mogador (price: 0.8)</li><li>Grilled Boston Scrod St. Laurent (price: 0.9)</li><li>Boneless Shad And Roe Saute Mascotte (price: 1.25)</li><li>Brook Trout A La Vatel (price: 1.1)</li><li>Filet Of Sole Breval (price: 0.9)</li><li>Soft Shell Crabs Under Glass Maryland (price: 1.25)</li><li>Bluefish Epicurienne (price: 1.1)</li><li>Fried Frogs' Legs With Bacon, Sauce Orly (price: 1.25)</li><li>Supreme Of Sea Bass Florentine (price: 1.1)</li><li>Chicken Halibut Marseillaise (price: 1.1)</li><li>Prime Rib Of Beef With Yorkshire Pudding And New Succotash (price: 1.25)</li><li>Squab Chicken Pot Pie A La Plaza (price: 1.5)</li><li>Grilled Milk Veal Chop, Continental (price: 1.25)</li><li>Noisette Of Spring Lamb A La Paillard (price: 1.5)</li><li>Deerfoot Sausages With Veloute Lyonnaise (price: 0.9)</li><li>Assorted Fresh Vegetables En Bordure Gratinee (price: 1.25)</li><li>Royal Squab En Casserole Beaulieu (price: 2.0)</li><li>Small Steak En Casserole Nivernaise (price: 2.25)</li><li>Baby Lamb Steak Saute Nicoise (price: 2.0)</li><li>Supreme Of Guinea Hen, Metternick (price: 1.75)</li><li>Stuffed Fresh Mushrooms Under Glass Au Beurre D'escargots (price: 1.0)</li><li>Egg, Nicoise (price: 0.75)</li><li>Cold Egg Finlandaise (price: 0.6)</li><li>Cold Egg With Ham (price: 0.5)</li><li>Cold Egg A La Russe (price: 0.75)</li><li>Cold Halibut Steak A L'espagnole (price: 1.25)</li><li>Cold Kennebec Salmon Parisienne (price: 1.25)</li><li>Chicken Lobster, Mayonnaise (price: 1.5)</li><li>Cold Shrimps A La Joseph (price: 0.75)</li><li>Crab Ravigote (price: 1.0)</li><li>Cold Supreme Jeannette (price: 1.25)</li><li>Cold Supreme Plaza (price: 1.75)</li><li>Cold Chicken And Ham Pie (price: 1.5)</li><li>Head Cheese With Potato Salad (price: 1.0)</li><li>Truffled Galantine Of Capon (price: 1.5)</li><li>Beef A La Mode In Jelly (price: 1.0)</li><li>Assorted Cold Cuts With Chicken (price: 1.75)</li><li>Assorted Cold Cuts (price: 1.5)</li><li>Jersey Asparagus (price: 0.8)</li><li>Beets In Butter (price: 0.5)</li><li>Cauliflower (price: 0.7)</li><li>String Beans (price: 0.6)</li><li>Succotash Plaza (price: 0.65)</li><li>New Peas (price: 0.6)</li><li>Lima Beans (price: 0.6)</li><li>Carrots Vichy (price: 0.5)</li><li>Braised Celery (price: 0.6)</li><li>Artichoke (price: 0.6)</li><li>Stewed Okra (price: 0.6)</li><li>Braised Lettuce (price: 0.6)</li><li>Hubbard Squash (price: 0.5)</li><li>Stewed Fresh Tomatoes (price: 0.5)</li><li>Creamed Spinach (price: 0.6)</li><li>White Squash (price: 0.5)</li><li>Small Onions In Cream (price: 0.6)</li><li>Fried Egg Plant (price: 0.5)</li><li>Mashed Yellow Turnips (price: 0.6)</li><li>Biron Potatoes (price: 0.45)</li><li>Boiled Bermuda Potatoes (price: 0.3)</li><li>Dixie Potatoes (price: 0.5)</li><li>Voisin Potatoes (price: 0.5)</li><li>Sweet Potatoes (price: 0.5)</li><li>Plaza Potatoes (price: 0.5)</li><li>Lettuce, Tomato And Cucumber Salad (price: 0.6)</li><li>Kuroki Salad (price: 0.6)</li><li>Louisette Salad (price: 0.6)</li><li>Rocheford Salad (price: 0.6)</li><li>Alligator Pear Salad (price: 0.7)</li><li>Fruit Salad (price: 0.6)</li><li>Romaine Salad (price: 0.45)</li><li>Endive Salad (price: 0.45)</li><li>Tomato Salad (price: 0.45)</li><li>Escarole Salad (price: 0.45)</li><li>Lettuce Salad (price: 0.45)</li><li>Mixed Green Salad (price: 0.45)</li><li>Portugaise Pudding (price: 0.35)</li><li>Boston Cream Pie (price: 0.35)</li><li>Rhubarb Pie (price: 0.35)</li><li>Baba Au Sirop (price: 0.3)</li><li>Old Fashioned Strawberry Short Cake (price: 0.65)</li><li>Apple Pie (price: 0.35)</li><li>Rice Pudding (price: 0.35)</li><li>French Pastry (1) (price: 0.25)</li><li>Caramel Ice Cream (price: 0.45)</li><li>Fresh Strawberry Ice Cream (price: 0.45)</li><li>Strawberry Ice (price: 0.4)</li><li>Mocha Mousse (price: 0.6)</li><li>Pineapple Sherbet (price: 0.4)</li><li>Bar Le Duc Parfait (price: 0.6)</li><li>Bel Paese Cheese (price: 0.45)</li><li>Swiss Cheese (price: 0.4)</li><li>Port Du Salut Cheese (price: 0.45)</li><li>Camembert Cheese (price: 0.45)</li><li>Brie Cheese (price: 0.45)</li><li>Stilton Cheese (price: 0.6)</li><li>Liederkranz Cheese (price: 0.45)</li><li>English Cheddar Cheese (price: 0.5)</li><li>Gorgonzola Cheese (price: 0.5)</li><li>Roquefort Cheese (price: 0.5)</li><li>Honeydew Melon (price: 0.6)</li><li>Cantaloupe (price: 0.6)</li><li>Strawberries (price: 0.6)</li><li>Grapefruit (price: 0.4)</li><li>Grapes (price: 0.5)</li><li>Orange (price: 0.2)</li><li>Delicious Apple (price: 0.2)</li><li>Pear (price: 0.2)</li><li>King Orange (price: 0.2)</li><li>Cherry Stone Clams (price: 0.5)</li><li>Little Neck Clams (price: 0.45)</li><li>Cocktail Sauce (price: 0.1)</li><li>Sea Food Cocktail Plaza (price: 1.0)</li><li>Crab Flake Cocktail (price: 0.75)</li><li>Shrimp Cocktail (price: 0.75)</li><li>Clam Juice Cocktail (price: 0.35)</li><li>Tomato Juice Cocktail (price: 0.35)</li><li>Orange Supreme (price: 0.65)</li><li>Grapefruit Supreme (price: 0.65)</li><li>Fruit Supreme (price: 0.65)</li><li>Pineapple Paradise (price: 0.75)</li><li>Melon Supreme (price: 0.65)</li><li>Petit Artichoke Mariniere (price: 0.5)</li><li>Fresh Caviar (price: 2.25)</li><li>Filet Of Herring (price: 0.5)</li><li>Smoked Salmon (price: 0.75)</li><li>Plaza Appetizer (price: 1.25)</li><li>Tomato Monegasque (price: 0.75)</li><li>Hors D'oeuvres Varies</li><li>Anchovy Canape (price: 0.6)</li><li>Stuffed Celery (price: 0.5)</li><li>Westphalia Ham (price: 1.25)</li><li>Antipasto (price: 0.5)</li><li>Maquereau Au Vin Blanc (price: 0.5)</li><li>Salami (price: 0.5)</li><li>Chicken Okra Soup (price: 0.5)</li><li>Tomato Soup (price: 0.4)</li><li>St. Germain Soup (price: 0.4)</li><li>Cream Of Tomato With Rice Soup (price: 0.5)</li><li>Belle Fermiere A La Moelle Soup (price: 0.5)</li><li>Jellied Consomme, Madrilene, Cup (price: 0.4)</li><li>Jellied Consomme, Chicken, Cup (price: 0.4)</li><li>Jellied Consomme, Gumbo, Cup (price: 0.4)</li><li>Jellied Consomme, Beef, Cup (price: 0.4)</li><li>Boiled Live Codfish, Sauce Crevette (price: 0.9)</li><li>Supreme Of Sole Bonne Femme (price: 0.9)</li><li>Boneless Shad And Roe Bretonne (price: 1.25)</li><li>Brook Trout A La Marchand De Vins (price: 1.1)</li><li>Frogs' Legs Rissolees Provencale (price: 1.0)</li><li>Bluefish A La Bartlett (price: 1.1)</li><li>Sea Bass Hawaiian (price: 1.1)</li><li>Lobster In Shell, Thermidor(1/2) (price: 1.5)</li><li>Soft Shell Crabs Meuniere With Bacon And Mushrooms (price: 1.25)</li><li>Boiled Squab Chicken With Rice Pilaw, Sauce Supreme(1/2) (price: 1.5)</li><li>Slice Of Sirloin Of Beef Saute Bristol (price: 1.75)</li><li>Grilled Sweetbread On Toast With Bacon, Mushrooms, And New Succotash (price: 1.5)</li><li>Escalopines Of Milk Veal Au Marsala With Spinach And Noodles In Butter (price: 1.25)</li><li>Glazed Sugar Cured Ham With Vegetables Porte Maillot (price: 1.25)</li><li>Roast Hindquarter Of Baby Lamb, Boulangere (price: 1.5)</li><li>Fresh Mushrooms On Toast With Bacon, Maitre D'hotel (price: 1.0)</li><li>Smothered Hot House Chicken Lathuile(1/2) (price: 1.75)</li><li>Royal Squab A La Turner (price: 2.0)</li><li>Supreme Of Guinea Hen A La Paul With Seedless Grapes (price: 1.75)</li><li>Roast Beef (price: 1.0)</li><li>Roast Baby Lamb (price: 1.5)</li><li>Roast Royal Squab (price: 1.75)</li><li>Broiler(1/2) (price: 1.5- 0.0)</li><li>Roast Squab Chicken (price: 2.0)</li><li>Cold Egg, Nicoise Or A La Russe (price: 0.75)</li><li>Cold Egg With Ham (price: 0.5)</li><li>Cold Egg Findlandaise (price: 0.6)</li><li>Kennebec Salmon Parisienne (price: 1.25)</li><li>Halibut Steak A L'espagnole (price: 1.25)</li><li>Cold Crab Ravigote (price: 1.0)</li><li>Cold Shrimps A La Joseph (price: 0.75)</li><li>Cold Chicken Lobster, Mayonnaise (price: 1.5)</li><li>Cold Supreme Jeannette (price: 1.25)</li><li>Cold Supreme Plaza (price: 1.75)</li><li>Cold Chicken And Ham Pie (price: 1.5)</li><li>Cold Truffled Galantine Of Capon (price: 1.5)</li><li>Cold Head Cheese With Potato Salad (price: 1.0)</li><li>Assorted Cold Cuts (price: 1.5)</li><li>Cold Beef A La Mode In Jelly (price: 1.0)</li><li>Assorted Cold Cuts With Chicken (price: 1.75)</li><li>Jersey Asparagus (price: 0.8)</li><li>Cauliflower (price: 0.7)</li><li>Beets In Butter (price: 0.5)</li><li>New Peas (price: 0.6)</li><li>Carrots Vichy (price: 0.5)</li><li>String Beans (price: 0.6)</li><li>Lima Beans (price: 0.6)</li><li>Succotash Plaza (price: 0.65)</li><li>Braised Lettuce (price: 0.6)</li><li>Stewed Okra (price: 0.6)</li><li>Artichoke (price: 0.6)</li><li>Braised Celery (price: 0.6)</li><li>Hubbard Squash (price: 0.5)</li><li>Stewed Fresh Tomatoes (price: 0.5)</li><li>White Squash (price: 0.5)</li><li>Creamed Spinach (price: 0.6)</li><li>Small Onions In Cream (price: 0.6)</li><li>Fried Egg Plant (price: 0.5)</li><li>Mashed Yellow Turnips (price: 0.5)</li><li>Biron Potatoes (price: 0.45)</li><li>Boiled Bermuda Potatoes (price: 0.3)</li><li>Sweet Potatoes (price: 0.5)</li><li>Plaza Potatoes (price: 0.5)</li><li>Dixie Potatoes (price: 0.5)</li><li>Voisin Potatoes (price: 0.5)</li><li>Knickerbocker Salad (price: 0.6)</li><li>Lettuce, Orange And Grapefruit Salad (price: 0.6)</li><li>Blackstone Salad (price: 0.6)</li><li>Fruit Salad (price: 0.6)</li><li>Alligator Pear Salad (price: 0.7)</li><li>Rocheford Salad (price: 0.6)</li><li>Endive Salad (price: 0.45)</li><li>Escarole Salad (price: 0.45)</li><li>Romaine Salad (price: 0.45)</li><li>Lettuce Salad (price: 0.45)</li><li>Mixed Green Salad (price: 0.45)</li><li>Tomato Salad (price: 0.45)</li><li>Hot Apricot Pudding (price: 0.35)</li><li>Cold Mogador Pudding (price: 0.35)</li><li>Brandied Pear Jubilee (price: 0.9)</li><li>Souffle Tutti Frutti (price: 0.75)</li><li>Lemon Jelly (price: 0.35)</li><li>Rice Pudding (price: 0.35)</li><li>Apple Pie (price: 0.35)</li><li>French Pastry (1) (price: 0.25)</li><li>Fresh Strawberry Ice Cream (price: 0.45)</li><li>Caramel Ice Cream (price: 0.45)</li><li>Strawberry Ice (price: 0.4)</li><li>Raspberry Sherbet (price: 0.4)</li><li>Coupe Apricotine (price: 0.6)</li><li>Bombe Reve De Bebe (price: 0.6)</li><li>Camembert Cheese (price: 0.45)</li><li>Brie Cheese (price: 0.45)</li><li>Port Du Salut Cheese (price: 0.45)</li><li>Swiss Cheese (price: 0.4)</li><li>Bel Paese Cheese (price: 0.45)</li><li>Gorgonzola Cheese (price: 0.5)</li><li>Roquefort Cheese (price: 0.5)</li><li>Liederkranz Cheese (price: 0.45)</li><li>Stilton Cheese (price: 0.6)</li><li>English Cheddar Cheese (price: 0.5)</li><li>Cantaloupe (price: 0.6)</li><li>Honeydew Melon (price: 0.6)</li><li>Strawberries (price: 0.6)</li><li>King Orange (price: 0.2)</li><li>Grapefruit (price: 0.4)</li><li>Grapes (price: 0.5)</li><li>Orange (price: 0.2)</li><li>Delicious Apple (price: 0.2)</li><li>Pear (price: 0.2)</li><li>Little Neck Clams (price: 0.45)</li><li>Cherry Stone Clams (price: 0.5)</li><li>Cocktail Sauce (price: 0.1)</li><li>Sea Food Cocktail Plaza (price: 1.0)</li><li>Crab Flake Cocktail (price: 0.75)</li><li>Clam Juice Cocktail (price: 0.35)</li><li>Shrimp Cocktail (price: 0.75)</li><li>Tomato Juice Cocktail (price: 0.35)</li><li>Fruit Supreme (price: 0.65)</li><li>Pineapple Paradise (price: 0.75)</li><li>Melon Supreme (price: 0.65)</li><li>Grapefruit Supreme (price: 0.65)</li><li>Orange Supreme (price: 0.65)</li><li>Petit Artichoke Mariniere (price: 0.5)</li><li>Filet Of Herring (price: 0.5)</li><li>Fresh Caviar (price: 2.25)</li><li>Tomato Monegasque (price: 0.75)</li><li>Smoked Salmon (price: 0.75)</li><li>Plaza Appetizer (price: 1.25)</li><li>Hors D'oeuvre Variés</li><li>Stuffed Celery (price: 0.5)</li><li>Anchovy Canape (price: 0.6)</li><li>Maquereau Au Vin Blanc (price: 0.5)</li><li>Antipasto (price: 0.5)</li><li>Westphalia Ham (price: 1.25)</li><li>Salami (price: 0.5)</li><li>St. Germain Soup (price: 0.4)</li><li>Chicken Okra Soup (price: 0.5)</li><li>Tomato Soup (price: 0.4)</li><li>Home Made Chicken Soup (price: 0.5)</li><li>Jellied Consommes Madrilene, Chicken, Beef Or Gumbo, Cup (price: 0.4)</li><li>Omelette Maria (price: 0.8)</li><li>Poached Eggs, Benedict (price: 0.6)</li><li>Scrambled Eggs, St. James (price: 0.8)</li><li>Brook Trout A La Santos Dumont (price: 1.1)</li><li>Supreme Of Sea Bass Lackme (price: 1.1)</li><li>Frogs' Legs Rissolees Lilloise (price: 1.25)</li><li>Soft Shell Crabs Saute With Almonds (price: 1.25)</li><li>Boneless Shad And Roe With Glazed Pineapple (price: 1.25)</li><li>Filet Of Sole Bonnefoy (price: 0.9)</li><li>Kingfish Meuniere A La Bretonne (price: 1.1)</li><li>Baked Lobster Thermidor(1/2) (price: 1.5)</li><li>Grilled Chicken Halibut, Cucumber Vernon (price: 1.1)</li><li>Prime Rib Of Beef, Creamed Potatoes Parisienne, Macedoine Of Vegetables (price: 1.25)</li><li>Grilled Sugar Cured Ham A La Norfolk (price: 1.1)</li><li>Baked Chicken Hash Tettrazini (price: 1.5)</li><li>Kidney Saute Turbigo (price: 1.1)</li><li>Spring Lamb Chop A La Robinson (price: 1.0)</li><li>Milk Veal Cutlet A La Bercy With Veloute Of Cauliflower (price: 1.25)</li><li>Fresh Vegetable Luncheon With Poached Egg (price: 1.25)</li><li>Shoulder Of Baby Lamb En Casserole Nivernaise(For Two) (price: 3.0)</li><li>Tournedo Colbert (price: 2.0)</li><li>Supreme Of Guinea Hen Mikado (price: 1.75)</li><li>Fresh Mushrooms Eugenie (price: 1.0)</li><li>Poussin De Serre En Croute St. Andre (price: 2.25)</li><li>Cold Egg Findlandaise (price: 0.6)</li><li>Egg A La Russe (price: 0.75)</li><li>Cold Egg With Ham (price: 0.5)</li><li>Egg, Nicoise (price: 0.75)</li><li>Cold Halibut Steak A L'espagnole (price: 1.25)</li><li>Cold Kennebec Salmon Parisienne (price: 1.25)</li><li>Cold Chicken Lobster, Mayonnaise (price: 1.5)</li><li>Cold Chicken Lobster, Mayonnaise (price: 1.5)</li><li>Cold Shrimps A La Joseph (price: 0.75)</li><li>Cold Crab Ravigote (price: 1.0)</li><li>Cold Chicken And Ham Pie (price: 1.5)</li><li>Cold Supreme Jeannette (price: 1.25)</li><li>Cold Supreme Plaza (price: 1.75)</li><li>Cold Head Cheese With Potato Salad (price: 1.0)</li><li>Cold Truffled Galantine Of Capon (price: 1.5)</li><li>Assorted Cold Cuts (price: 1.5)</li><li>Assorted Cold Cuts With Chicken (price: 1.75)</li><li>Cold Beef A La Mode In Jelly (price: 1.0)</li><li>Beets In Butter (price: 0.5)</li><li>Jersey Asparagus (price: 0.8)</li><li>Cauliflower (price: 0.7)</li><li>Succotash Plaza (price: 0.65)</li><li>Carrots Vichy (price: 0.5)</li><li>String Beans (price: 0.6)</li><li>New Peas (price: 0.6)</li><li>Lima Beans (price: 0.6)</li><li>Artichoke (price: 0.6)</li><li>Stewed Okra (price: 0.6)</li><li>Braised Celery (price: 0.6)</li><li>Braised Lettuce (price: 0.6)</li><li>Creamed Spinach (price: 0.6)</li><li>Stewed Fresh Tomatoes (price: 0.5)</li><li>White Squash (price: 0.5)</li><li>Hubbard Squash (price: 0.5)</li><li>Mashed Yellow Turnips (price: 0.6)</li><li>Fried Egg Plant (price: 0.5)</li><li>Small Onions In Cream (price: 0.6)</li><li>Boiled Bermuda Potatoes (price: 0.3)</li><li>Voisin Potatoes (price: 0.5)</li><li>Plaza Potatoes (price: 0.5)</li><li>Dixie Potatoes (price: 0.5)</li><li>Biron Potatoes (price: 0.45)</li><li>Sweet Potatoes (price: 0.5)</li><li>Bonnie Brae Salad (price: 0.6)</li><li>Hartford Salad (price: 0.6)</li><li>Lettuce, Celery And Pimentos Salad (price: 0.6)</li><li>Rocheford Salad (price: 0.6)</li><li>Alligator Pear Salad (price: 0.7)</li><li>Fruit Salad (price: 0.6)</li><li>Romaine Salad (price: 0.45)</li><li>Tomato Salad (price: 0.45)</li><li>Mixed Green Salad (price: 0.45)</li><li>Lettuce Salad (price: 0.45)</li><li>Escarole Salad (price: 0.45)</li><li>Endive Salad (price: 0.45)</li><li>Black Cherry Pie (price: 0.35)</li><li>Vanilla Cup Custard (price: 0.25)</li><li>Floating Island, Palmyre (price: 0.4)</li><li>Compote Of Assorted Fruits (price: 0.45)</li><li>Strawberry Tart (price: 0.4)</li><li>French Pastry (1) (price: 0.25)</li><li>Apple Pie (price: 0.35)</li><li>Rice Pudding (price: 0.35)</li><li>Strawberry Ice (price: 0.4)</li><li>Caramel Ice Cream (price: 0.45)</li><li>Fresh Strawberry Ice Cream (price: 0.45)</li><li>Bar Le Duc Parfait (price: 0.6)</li><li>Mocha Mousse (price: 0.6)</li><li>Pineapple Sherbet (price: 0.4)</li><li>Bel Paese Cheese (price: 0.45)</li><li>Swiss Cheese (price: 0.4)</li><li>Port Du Salut Cheese (price: 0.45)</li><li>Brie Cheese (price: 0.45)</li><li>Camembert Cheese (price: 0.45)</li><li>Liederkranz Cheese (price: 0.45)</li><li>English Cheddar Cheese (price: 0.5)</li><li>Stilton Cheese (price: 0.6)</li><li>Roquefort Cheese (price: 0.5)</li><li>Gorgonzola Cheese (price: 0.5)</li><li>Berries In Season (price: 0.6)</li><li>Honeydew Melon (price: 0.6)</li><li>Cantaloupe (price: 0.6)</li><li>Orange (price: 0.2)</li><li>Delicious Apple (price: 0.2)</li><li>Pear (price: 0.2)</li><li>Grapes (price: 0.5)</li><li>Grapefruit (price: 0.4)</li><li>King Orange (price: 0.2)</li><li>Cherry Stone Clams (price: 0.5)</li><li>Little Neck Clams (price: 0.45)</li><li>Cocktail Sauce (price: 0.1)</li><li>Sea Food Cocktail Plaza (price: 1.0)</li><li>Crab Flake Cocktail (price: 0.75)</li><li>Clam Juice Cocktail (price: 0.35)</li><li>Shrimp Cocktail (price: 0.75)</li><li>Tomato Juice Cocktail (price: 0.35)</li><li>Grapefruit Supreme (price: 0.65)</li><li>Melon Supreme (price: 0.65)</li><li>Fruit Supreme (price: 0.65)</li><li>Orange Supreme (price: 0.65)</li><li>Pineapple Paradise (price: 0.75)</li><li>Petit Artichoke Mariniere (price: 0.5)</li><li>Fresh Caviar (price: 2.25)</li><li>Filet Of Herring (price: 0.5)</li><li>Plaza Appetizer (price: 1.25)</li><li>Smoked Salmon (price: 0.75)</li><li>Tomato Monegasque (price: 0.75)</li><li>Hors D'oeuvre Variés</li><li>Anchovy Canape (price: 0.6)</li><li>Stuffed Celery (price: 0.5)</li><li>Maquereau Au Vin Blanc (price: 0.5)</li><li>Westphalia Ham (price: 1.25)</li><li>Antipasto (price: 0.5)</li><li>Salami (price: 0.5)</li><li>St. Germain Soup (price: 0.4)</li><li>Tomato Soup (price: 0.4)</li><li>Chicken Okra Soup (price: 0.5)</li><li>Essence De Volaille Theodora (price: 0.5)</li><li>Home Made Chicken Soup (price: 0.5)</li><li>Jellied Consommes Madrilene, Chicken, Beef Or Gumbo, Cup (price: 0.4)</li><li>Planked Boneless Shad And Roe Lady Duveene (price: 1.25)</li><li>Brook Trout Au Bleu, Sauce Escoffier (price: 1.0)</li><li>Filet Of Sole Cafe De Paris (price: 0.9)</li><li>Frogs' Legs A La Cavour (price: 1.25)</li><li>Baked Lobster Beaugency(1/2) (price: 1.5)</li><li>Grilled Bluefish Baltimore (price: 1.1)</li><li>Supreme Of Kingfish Fin De Siecle (price: 1.1)</li><li>Soft Shell Crabs Under Glass Archiduc (price: 1.25)</li><li>Sea Bass Saute Nicoise (price: 1.1)</li><li>Sea Bass Saute Nicoise (price: 1.1)</li><li>Smothered Squab Chicken A La Dickens With Asparagus Tips(1/2) (price: 1.5)</li><li>Roast Hindquarter Of Baby Lamb, Potatoes Parisienne, Succotash Virginia (price: 1.5)</li><li>Glazed Virginia Ham, Sauce Porto With Sweet Potatoes Dixie, Braised Endives (price: 1.25)</li><li>Grilled Kernel Of Sweetbread With Bacon And Heart Of Artichoke Princesse (price: 1.5)</li><li>Escalopines Of Milk Veal Au Vin Blanc With String Beans And Veloute Crecy (price: 1.25)</li><li>Larded Tenderloin Of Beef, Richelieu (price: 2.0)</li><li>Planked Porterhouse Steak Aux Primeurs (price: 3.0)</li><li>Imperial Squab Souvaroff (price: 2.0)</li><li>Patty Of Mushrooms A La Reine (price: 1.0)</li><li>Supreme Of Guinea Hen Tour D'argent (price: 1.75)</li><li>Grilled Egg Plant And Tomato Baltimore (price: 0.9)</li><li>Hot House Chicken L'athuile(1/2) (price: 1.75)</li><li>Roast Beef (price: 1.0)</li><li>Baby Lamb (price: 1.5)</li><li>Roast Royal Squab (price: 1.75)</li><li>Broiler Chicken (price: 1.5012- 0.0)</li><li>Squab Chicken (price: 2.0)</li><li>Egg, Nicoise (price: 0.75)</li><li>Egg A La Russe (price: 0.75)</li><li>Cold Egg Findlandaise (price: 0.6)</li><li>Cold Egg With Ham (price: 0.5)</li><li>Cold Kennebec Salmon Parisienne (price: 1.25)</li><li>Cold Halibut Steak A L'espagnole (price: 1.25)</li><li>Cold Chicken Lobster, Mayonnaise (price: 1.5)</li><li>Cold Crab Ravigote (price: 1.0)</li><li>Cold Shrimps A La Joseph (price: 0.75)</li><li>Cold Chicken And Ham Pie (price: 1.5)</li><li>Cold Supreme Plaza (price: 1.75)</li><li>Cold Supreme Jeannette (price: 1.25)</li><li>Cold Truffled Galantine Of Capon (price: 1.5)</li><li>Cold Head Cheese With Potato Salad (price: 1.0)</li><li>Assorted Cold Cuts (price: 1.5)</li><li>Assorted Cold Cuts With Chicken (price: 1.75)</li><li>Cold Beef A La Mode In Jelly (price: 1.0)</li><li>Jersey Asparagus (price: 0.8)</li><li>Cauliflower (price: 0.7)</li><li>Beets In Butter (price: 0.5)</li><li>Carrots Vichy (price: 0.5)</li><li>String Beans (price: 0.6)</li><li>Lima Beans (price: 0.6)</li><li>Succotash Plaza (price: 0.65)</li><li>New Peas (price: 0.6)</li><li>Braised Lettuce (price: 0.6)</li><li>Artichoke (price: 0.6)</li><li>Stewed Okra (price: 0.6)</li><li>Braised Celery (price: 0.6)</li><li>Creamed Spinach (price: 0.6)</li><li>Hubbard Squash (price: 0.5)</li><li>White Squash (price: 0.5)</li><li>Stewed Fresh Tomatoes (price: 0.5)</li><li>Mashed Yellow Turnips (price: 0.5)</li><li>Fried Egg Plant (price: 0.5)</li><li>Small Onions In Cream (price: 0.6)</li><li>Potatoes, Dixie (price: 0.5)</li><li>Potatoes Biron (price: 0.45)</li><li>Sweet Potatoes (price: 0.5)</li><li>Potatoes Voisin (price: 0.5)</li><li>Boiled Bermuda Potatoes (price: 0.3)</li><li>Potatoes, Plaza (price: 0.5)</li><li>Salad Louise (price: 0.6)</li><li>Salad Richard (price: 0.6)</li><li>Lettuce, Cucumber And Beets Salad (price: 0.6)</li><li>Sunrise Salad (price: 0.6)</li><li>Rocheford Salad (price: 0.6)</li><li>Fruit Salad (price: 0.6)</li><li>Alligator Pear Salad (price: 0.7)</li><li>Salad, Romaine (price: 0.45)</li><li>Salad, Mixed Green (price: 0.45)</li><li>Salad, Endive (price: 0.45)</li><li>Salad, (price: 0.45)</li><li>Salad, Lettuce (price: 0.45)</li><li>Salad, Tomato (price: 0.45)</li><li>Cold Mocha Custard Pudding (price: 0.35)</li><li>Cold Mocha Custard Pudding (price: 0.35)</li><li>Hot Caroline Pudding (price: 0.35)</li><li>Figs A La Kimberley (price: 0.65)</li><li>Bavarian Cream Aveline (price: 0.4)</li><li>Souffle Africaine (price: 0.75)</li><li>Apple Pie (price: 0.35)</li><li>French Pastry(1) (price: 0.25)</li><li>Rice Pudding (price: 0.35)</li><li>Caramel Ice Cream (price: 0.45)</li><li>Fresh Strawberry Ice Cream (price: 0.45)</li><li>Strawberry Ice (price: 0.4)</li><li>Bombe Reve De Bebe (price: 0.6)</li><li>Coupe Apricotine (price: 0.6)</li><li>Raspberry Sherbert (price: 0.4)</li><li>Port Du Salut (price: 0.45)</li><li>Brie (price: 0.45)</li><li>Swiss Cheese (price: 0.4)</li><li>Bel Paese (price: 0.45)</li><li>Camembert (price: 0.45)</li><li>English Cheddar Cheese (price: 0.5)</li><li>Liederkranz Cheese</li><li>Stilton Cheese (price: 0.6)</li><li>Roquefort (price: 0.5)</li><li>Gorgonzola (price: 0.5)</li><li>Honeydew Melon (price: 0.6)</li><li>Berries In Season (price: 0.6)</li><li>Cantaloupe (price: 0.6)</li><li>Grapes (price: 0.5)</li><li>King Orange (price: 0.2)</li><li>Delicious Apple (price: 0.2)</li><li>Orange (price: 0.2)</li><li>Grapefruit (price: 0.4)</li><li>Pear (price: 0.2)</li><li>Cherry Stone Clams (price: 0.5)</li><li>Little Neck Clams (price: 0.45)</li><li>Cocktail Sauce (price: 0.1)</li><li>Sea Food Cocktail Plaza (price: 1.0)</li><li>Crab Flake Cocktail (price: 0.75)</li><li>Shrimp Cocktail (price: 0.75)</li><li>Clam Juice Cocktail (price: 0.35)</li><li>Tomato Juice Cocktail (price: 0.35)</li><li>Fruit Supreme (price: 0.65)</li><li>Grapefruit Supreme (price: 0.65)</li><li>Melon Supreme (price: 0.65)</li><li>Orange Supreme (price: 0.65)</li><li>Pineapple Paradise (price: 0.75)</li><li>Petit Artichoke Mariniere (price: 0.5)</li><li>Fresh Caviar (price: 2.25)</li><li>Filet Of Herring (price: 0.5)</li><li>Plaza Appetizer (price: 1.25)</li><li>Tomato Monegasque (price: 0.75)</li><li>Smoked Salmon (price: 0.75)</li><li>Hors D'oeuvre Varies</li><li>Stuffed Celery (price: 0.5)</li><li>Anchovy Canape (price: 0.6)</li><li>Westphalia Ham (price: 1.25)</li><li>Maquereau Au Vin Blanc (price: 0.5)</li><li>Salami (price: 0.5)</li><li>Antipasto (price: 0.5)</li><li>St. Germain Soup (price: 0.4)</li><li>Chicken Okra Soup (price: 0.5)</li><li>Tomato Soup (price: 0.4)</li><li>Cream Of White Beans Soup Beauharnaise (price: 0.5)</li><li>Jellied Consomme, Chicken (price: 0.4)</li><li>Jellied Consomme, Madrilene (price: 0.4)</li><li>Gumbo (price: 0.4)</li><li>Jellied Consomme, Beef (price: 0.4)</li><li>Scrambled Eggs, Grand' Mere (price: 0.8)</li><li>Poached Eggs, Armenonville (price: 0.55)</li><li>Omelette With Lamb Kidney, Madeira (price: 0.8)</li><li>Creamed Salmon In Bordure Florentine (price: 1.25)</li><li>Chicken Halibut, Los Angeles (price: 1.1)</li><li>Filet Of Sea Bass, Lady Egmont (price: 1.1)</li><li>Frogs' Legs Rissolees Royer (price: 1.25)</li><li>Supreme Of Sole Commodore (price: 0.9)</li><li>Boneless Shad And Roe Beaucaire (price: 1.25)</li><li>Brook Trout A La Danicheff (price: 1.1)</li><li>Grilled Bluefish, Jardiniere (price: 1.1)</li><li>Kingfish, Amelie (price: 1.1)</li><li>Fried Soft Shell Crabs With Bacon, Sauce Remoulade (price: 1.25)</li><li>Deviled Slice Of Roast Beef With Bone, Fried Sweet Potatoes, Mixed Beans (price: 1.25)</li><li>Chicken Patty A La Reine (price: 1.25)</li><li>Roast Rack Of Milk Veal Bouulangere (price: 1.5)</li><li>Sugar Cured Ham Saute With Glazed Apple And New Succotash (price: 1.1)</li><li>Fresh Vegetable Luncheon Au Gratin With Poached Egg (price: 1.25)</li><li>Epigramme Of Baby Lamb With Spaghetti Caruso (price: 1.25)</li><li>Supreme Of Guinea Hen Rossini (price: 1.75)</li><li>Imperial Squab A L'americaine (price: 2.0)</li><li>Baked Fresh Mushrooms Bourguignonne (price: 1.0)</li><li>Chicken Saute Lafayette (1/2) (price: 1.75)</li><li>Egg With Ham (price: 0.5)</li><li>Egg Finlandaise (price: 0.6)</li><li>Egg A La Russe (price: 0.75)</li><li>Egg, Nicoise (price: 0.75)</li><li>Halibut Steak A L'espagnole (price: 1.25)</li><li>Kennebec Salmon Parisienne (price: 1.25)</li><li>Shrimps A La Joseph (price: 0.75)</li><li>Crab Ravigote (price: 1.0)</li><li>Chicken Lobster, Mayonnaise (price: 1.5)</li><li>Supreme Plaza (price: 1.75)</li><li>Chicken And Ham Pie (price: 1.5)</li><li>Supreme Jeannette (price: 1.25)</li><li>Head Cheese With Potato Salad (price: 1.0)</li><li>Truffled Galantine Of Capon (price: 1.5)</li><li>Assorted Cold Cuts With Chicken (price: 1.75)</li><li>Beef A La Mode In Jelly (price: 1.0)</li><li>Assorted Cold Cuts (price: 1.5)</li><li>Cauliflower (price: 0.7)</li><li>Beets In Butter (price: 0.5)</li><li>Jersey Asparagus (price: 0.8)</li><li>Carrots Vichy (price: 0.5)</li><li>Succotash Plaza (price: 0.65)</li><li>String Beans (price: 0.6)</li><li>Lima Beans (price: 0.6)</li><li>New Peas (price: 0.6)</li><li>Braised Celery (price: 0.6)</li><li>Stewed Okra (price: 0.6)</li><li>Braised Lettuce (price: 0.6)</li><li>Artichoke (price: 0.6)</li><li>White Squash (price: 0.5)</li><li>Creamed Spinach (price: 0.6)</li><li>Hubbard Squash (price: 0.5)</li><li>Stewed Fresh Tomatoes (price: 0.5)</li><li>Mashed Yellow Turnips (price: 0.6)</li><li>Small Onions In Cream (price: 0.6)</li><li>Fried Egg Plant (price: 0.5)</li><li>Plaza Potatoes (price: 0.5)</li><li>Boiled Bermuda (price: 0.3)</li><li>Voisin (price: 0.5)</li><li>Sweet Potatoes (price: 0.5)</li><li>Biron (price: 0.45)</li><li>Dixie Potatoes (price: 0.5)</li><li>Sunrise Salad (price: 0.6)</li><li>Lily Salad (price: 0.6)</li><li>Princess Salad (price: 0.6)</li><li>Hartford Salad (price: 0.6)</li><li>Salad, Plaza Special (price: 0.6)</li><li>Alligator Pear Salad (price: 0.7)</li><li>Rocheford Salad (price: 0.6)</li><li>Fruit Salad (price: 0.6)</li><li>Mixed Green Salad (price: 0.45)</li><li>Romaine Salad (price: 0.45)</li><li>Tomato Salad (price: 0.45)</li><li>Lettuce Salad (price: 0.45)</li><li>Endive Salad (price: 0.45)</li><li>Escarole Salad (price: 0.45)</li><li>Florida Pudding (price: 0.35)</li><li>Lemon Custard Pie (price: 0.35)</li><li>Apricot Pie (price: 0.35)</li><li>Mocha Layer Cake (price: 0.4)</li><li>Almond Cream Puff (price: 0.25)</li><li>Apple Pie (price: 0.35)</li><li>Rice Pudding (price: 0.35)</li><li>French Pastry (1) (price: 0.25)</li><li>Strawberry Ice (price: 0.4)</li><li>Fresh Strawberry Ice Cream (price: 0.45)</li><li>Caramel Ice Cream (price: 0.45)</li><li>Bar Le Duc Parfait (price: 0.6)</li><li>Pineapple Sherbet (price: 0.4)</li><li>Mocha Mousse (price: 0.6)</li><li>Swiss Cheese (price: 0.4)</li><li>Port Du Salut (price: 0.45)</li><li>Bel Paese (price: 0.45)</li><li>Camembert (price: 0.45)</li><li>Brie (price: 0.45)</li><li>English Cheddar Cheese (price: 0.5)</li><li>Liederkranz Cheese (price: 0.45)</li><li>Stilton (price: 0.6)</li><li>Roquefort (price: 0.5)</li><li>Gorgonzola (price: 0.5)</li><li>Berries In Season (price: 0.6)</li><li>Watermelon (price: 0.6)</li><li>Honeydew Melon (price: 0.6)</li><li>Cantaloupe (price: 0.6)</li><li>Orange (price: 0.2)</li><li>Delicious Apple (price: 0.2)</li><li>Pear (price: 0.2)</li><li>King Orange (price: 0.2)</li><li>Grapefruit (price: 0.4)</li><li>Grapes (price: 0.5)</li><li>Cherry Stone Clams (price: 0.5)</li><li>Cocktail Sauce (price: 0.1)</li><li>Little Neck Clams (price: 0.45)</li><li>Crab Flake Cocktail (price: 0.75)</li><li>Sea Food Cocktail Plaza (price: 1.0)</li><li>Tomato Juice Cocktail (price: 0.35)</li><li>Shrimp Cocktail (price: 0.75)</li><li>Clam Juice Cocktail (price: 0.35)</li><li>Grapefruit Supreme (price: 0.65)</li><li>Melon Supreme (price: 0.65)</li><li>Pineapple Paradise (price: 0.75)</li><li>Orange Supreme (price: 0.65)</li><li>Fruit Supreme (price: 0.65)</li><li>Petit Artichoke Mariniere (price: 0.5)</li><li>Fresh Caviar (price: 2.25)</li><li>Filet Of Herring (price: 0.5)</li><li>Plaza Appetizer (price: 1.25)</li><li>Tomato Monegasque (price: 0.75)</li><li>Hors D'oeuvre Varies</li><li>Anchovy Canape (price: 0.6)</li><li>Stuffed Celery (price: 0.5)</li><li>Maquereau Au Vin Blanc (price: 0.5)</li><li>Salami (price: 0.5)</li><li>Westphalia Ham (price: 1.25)</li><li>Chicken Okra Soup (price: 0.5)</li><li>St. Germain Soup (price: 0.4)</li><li>Tomato Soup (price: 0.4)</li><li>Pot Au Feu A La Moelle (price: 0.5)</li><li>Cream Of New Peas Soup A La Hugo (price: 0.6)</li><li>Jellied Consomme, Chicken (price: 0.4)</li><li>Jellied Consomme, Beef (price: 0.4)</li><li>Gumbo (price: 0.4)</li><li>Jellied Consomme, Madrilene (price: 0.4)</li><li>Poached Kennebec Salmon, Sauce Joinville (price: 1.1)</li><li>Supreme Of Sole Duchesse (price: 0.9)</li><li>Soft Shell Crabs Rissolees With Almonds (price: 1.25)</li><li>Chicken Halibut à La Turque (price: 1.1)</li><li>Boneless Shad And Roe Belle Meuniere (price: 1.25)</li><li>Grilled Bluefish Caprice (price: 1.1)</li><li>Sea Bass Sauté Alphonse Xiii (price: 1.1)</li><li>Baked Lobster In Shell Majestic (1/2) (price: 1.5)</li><li>Brook Trout A La Canajoharie (price: 1.1)</li><li>Patty Of Frogs' Legs Poulette (price: 1.25)</li><li>Squab Chicken En Casserole With Mushrooms And Fresh Vegetables (1/2) (price: 1.5)</li><li>Escalopines Of Milk Veal A L'anglaise With Whole Spinach And Carrots Vichy (price: 1.25)</li><li>Larded Kernel Of Sweetbread Demidoff With Potatoes Lorette (price: 1.5)</li><li>Grilled Loin Of Baby Lamb With Kidney, Nicoise (price: 1.5)</li><li>Sliced Filet Of Beef, Armenonville (price: 1.75)</li><li>Grilled Fresh Mushrooms On Toast With Ham Au Beurre D'escargots (price: 1.0)</li><li>Chicken Saute Frou Frou (1/2) (price: 1.75)</li><li>Imperial Squab En Compote (price: 2.0)</li><li>Quenelles Of Ham Florentine (price: 1.1)</li><li>Noisette Of Spring Lamb Lucullus (price: 1.5)</li><li>Roast Beef (price: 1.0)</li><li>Roast Baby Lamb (price: 1.5)</li><li>Roast Royal Squab (price: 1.75)</li><li>Broiler (price: 3.0)</li><li>Broiler (1/2) (price: 1.5)</li><li>Roast Squab Chicken (price: 2.0)</li><li>Egg With Ham (price: 0.5)</li><li>Egg Finlandaise (price: 0.6)</li><li>Egg A La Russe (price: 0.75)</li><li>Egg, Nicoise (price: 0.75)</li><li>Kennebec Salmon Parisienne (price: 1.25)</li><li>Halibut Steak A L'espagnole (price: 1.25)</li><li>Chicken Lobster, Mayonnaise (price: 1.5)</li><li>Shrimps A La Joseph (price: 0.75)</li><li>Crab Ravigote (price: 1.0)</li><li>Supreme Jeannette (price: 1.25)</li><li>Supreme Plaza (price: 1.75)</li><li>Chicken And Ham Pie (price: 1.5)</li><li>Truffled Galantine Of Capon (price: 1.5)</li><li>Head Cheese With Potato Salad (price: 1.0)</li><li>Beef A La Mode In Jelly (price: 1.0)</li><li>Assorted Cold Cuts (price: 1.5)</li><li>Assorted Cold Cuts With Chicken (price: 1.75)</li><li>Jersey Asparagus (price: 0.8)</li><li>Cauliflower (price: 0.7)</li><li>Beets In Butter (price: 0.5)</li><li>Lima Beans (price: 0.6)</li><li>New Peas (price: 0.6)</li><li>String Beans (price: 0.6)</li><li>Carrots Vichy (price: 0.5)</li><li>Succotash Plaza (price: 0.65)</li><li>Braised Lettuce (price: 0.6)</li><li>Stewed Okra (price: 0.6)</li><li>Braised Celery (price: 0.6)</li><li>Artichoke (price: 0.6)</li><li>Creamed Spinach (price: 0.6)</li><li>Hubbard Squash (price: 0.5)</li><li>White Squash (price: 0.5)</li><li>Stewed Fresh Tomatoes (price: 0.5)</li><li>Mashed Yellow Turnips (price: 0.5)</li><li>Small Onions In Cream (price: 0.6)</li><li>Fried Egg Plant (price: 0.5)</li><li>Boiled Bermuda Potatoes (price: 0.3)</li><li>Sweet Potatoes (price: 0.5)</li><li>Dixie Salad (price: 0.5)</li><li>Biron Potatoes (price: 0.45)</li><li>Plaza Potatoes (price: 0.5)</li><li>Jeannette Salad (price: 0.6)</li><li>Hot Bresilien Pudding (price: 0.35)</li><li>Cold Cocoanut Pudding (price: 0.35)</li><li>Mont Blanc Aux Marrons (price: 0.4)</li><li>Souffle Duchesse (price: 0.75)</li><li>Orange Jelly (price: 0.35)</li><li>Rice Pudding (price: 0.35)</li><li>French Pastry (1) (price: 0.25)</li><li>Apple Pie (price: 0.35)</li><li>Ice Cream, Caramel (price: 0.45)</li><li>Ice Cream, Fresh Strawberry (price: 0.45)</li><li>Strawberry Ice (price: 0.4)</li><li>Raspberry Sherbet (price: 0.4)</li><li>Coupe Apricotine (price: 0.6)</li><li>Bombe Reve De Bebe (price: 0.6)</li><li>Brie (price: 0.45)</li><li>Camembert (price: 0.45)</li><li>Port Du Salut (price: 0.45)</li><li>Bel Paese (price: 0.45)</li><li>Roquefort Cheese (price: 0.5)</li><li>Liederkranz Cheese (price: 0.45)</li><li>Stilton Cheese (price: 0.6)</li><li>Gorgonzola (price: 0.5)</li><li>English Cheddar Cheese (price: 0.5)</li><li>Cantaloupe (price: 0.6)</li><li>Watermelon (price: 0.6)</li><li>Honeydew Melon (price: 0.6)</li><li>Berries In Season (price: 0.6)</li><li>King Orange (price: 0.2)</li><li>Grapefruit (price: 0.4)</li><li>Grapes (price: 0.5)</li><li>Delicious Apple (price: 0.2)</li><li>Pear (price: 0.2)</li><li>Orange (price: 0.2)</li><li>Cherry Stone Clams (price: 0.5)</li><li>Little Neck Clams (price: 0.45)</li><li>Cocktail Sauce (price: 0.1)</li><li>Sea Food Cocktail Plaza (price: 1.0)</li><li>Crab Flake Cocktail (price: 0.75)</li><li>Shrimp Cocktail (price: 0.75)</li><li>Tomato Juice Cocktail (price: 0.35)</li><li>Pineapple Paradise (price: 0.75)</li><li>Fresh Caviar (price: 2.25)</li><li>Filet Of Herring (price: 0.5)</li><li>Plaza Appetizer (price: 1.25)</li><li>Tomato Monegasque (price: 0.75)</li><li>Anchovy Canape (price: 0.6)</li><li>Stuffed Celery (price: 0.5)</li><li>Westphalia Ham (price: 1.25)</li><li>St. Germain Soup (price: 0.4)</li><li>Chicken Okra Soup (price: 0.5)</li><li>Tomato Soup (price: 0.4)</li><li>Calf's Feet Soup, English Style (price: 0.5)</li><li>Noisette Of Mutton Chantilly (price: 1.25)</li><li>Egg With Ham (price: 0.5)</li><li>Huckleberry Pie (price: 0.35)</li><li>Dinner</li><li>Clams And Cocktails</li><li>Little Neck Clams (price: 0.45)</li><li>Cherry Stone Clams (price: 0.5)</li><li>Cocktail Sauce (price: 0.1)</li><li>Sea Food Cocktail Plaza (price: 1.0)</li><li>Crab Flake Cocktail (price: 0.75)</li><li>Clam Juice Cocktail (price: 0.35)</li><li>Shrimp Cocktail (price: 0.75)</li><li>Tomato Juice Cocktail (price: 0.35)</li><li>Grapefruit Supreme (price: 0.65)</li><li>Fruit Supreme (price: 0.65)</li><li>Orange Supreme (price: 0.65)</li><li>Melon Supreme (price: 0.65)</li><li>Pineapple Paradise (price: 0.75)</li><li>Petit Artichoke Mariniere (price: 0.5)</li><li>Fresh Caviar (price: 2.25)</li><li>Filet Of Herring (price: 0.5)</li><li>Smoked Salmon (price: 0.75)</li><li>Plaza Appetizer (price: 1.25)</li><li>Tomato Monegasque (price: 0.75)</li><li>Hors D'oeuvre Variés</li><li>Anchovy Canape (price: 0.6)</li><li>Stuffed Celery (price: 0.5)</li><li>Macquereau Au Vin Blanc (price: 0.5)</li><li>Salami (price: 0.5)</li><li>Antipasto (price: 0.5)</li><li>Westphalia Ham (price: 1.25)</li><li>St. Germain Soup (price: 0.4)</li><li>Chicken Okra Soup (price: 0.5)</li><li>Tomato Soup (price: 0.4)</li><li>Cream Of Mushrooms Aux Souffles Soup (price: 0.5)</li><li>Boula Gratinee Soup (price: 0.5)</li><li>Chicken, Jellied Consomme, Cup (price: 0.4)</li><li>Beef, Jellied Consomme, Cup (price: 0.4)</li><li>Gumbo, Cup (price: 0.4)</li><li>Madrilene, Jellied Consomme, Cup (price: 0.4)</li><li>Boiled Chicken Halibut, Sauce Mousseline (price: 1.1)</li><li>Soft Shell Crabs A La Creole (price: 1.25)</li><li>Baked Lobster Grand Hotel (1/2) (price: 1.5)</li><li>Supreme Of Sole Victoria (price: 0.9)</li><li>Turban Of Frogs' Legs Regence (price: 1.5)</li><li>Brook Trout Matelotte (price: 1.1)</li><li>Grilled Bluefish With Bacon Au Capeco (price: 1.1)</li><li>Boneless Shad And Roe A L'orange (price: 1.25)</li><li>Darne Of Salmon Marshall Joffre (price: 1.25)</li><li>Slice Of Beef Tenderloin Massenet (price: 1.75)</li><li>Supreme Of Hot House Chicken A La Paul With Seedless Grapes (price: 1.75)</li><li>Grenadin Of Milk Veal Lavalliere With Asparagus Tips (price: 1.25)</li><li>Roast Rack Of Spring Lamb, Boulangere (price: 1.5)</li><li>Glazed Virginia Ham With Mashed Yams, Creamed Spinach, Sauce Porto (price: 1.25)</li><li>Grilled Kernel Of Sweetbread With Mushrooms And String Beans Polonaise (price: 1.5)</li><li>Mushrooms On Toast With Bacon, Beurre Ravigotte (price: 1.0)</li><li>Planked American Steak A La Plaza (price: 3.0)</li><li>Boneless Royal Squab A La Turner (price: 2.0)</li><li>Baby Lamb Steak Saute Bonne Femme (price: 2.0)</li><li>Arroz Con Pollo A L'espagnole (1/2) (price: 1.75)</li><li>Roast Beef (price: 1.0)</li><li>Baby Lamb (price: 1.5)</li><li>Royal Squab (price: 1.75)</li><li>Squab Chicken (price: 2.0)</li><li>Broiler To Order (price: 3.0)</li><li>Broiler (1/2) (price: 1.5)</li><li>Egg With Ham (price: 0.5)</li><li>Egg, Nicoise (price: 0.75)</li><li>Egg, A La Russe (price: 0.75)</li><li>Egg Finlandaise (price: 0.6)</li><li>Kennebec Salmon Parisienne (price: 1.25)</li><li>Halibut Steak A L'espagnole (price: 1.25)</li><li>Chicken Lobster, Mayonnaise (price: 1.5)</li><li>Crab Ravigote (price: 1.0)</li><li>Shrimps A La Joseph (price: 0.75)</li><li>Supreme Jeannette (price: 1.25)</li><li>Chicken And Ham Pie (price: 1.5)</li><li>Chicken And Ham Pie (price: 1.5)</li><li>Supreme Plaza (price: 1.75)</li><li>Truffled Galantine Of Capon (price: 1.5)</li><li>Head Cheese With Potato Salad (price: 1.0)</li><li>Assorted Cold Cuts (price: 1.5)</li><li>Beef A La Mode In Jelly (price: 1.0)</li><li>Assorted Cold Cuts With Chicken (price: 1.75)</li><li>Cauliflower (price: 0.7)</li><li>Jersey Asparagus (price: 0.8)</li><li>Beets In Butter (price: 0.5)</li><li>Carrots Vichy (price: 0.5)</li><li>Lima Beans (price: 0.6)</li><li>String Beans (price: 0.6)</li><li>Succotash Plaza (price: 0.65)</li><li>New Peas.6</li><li>Stewed Okra (price: 0.6)</li><li>Braised Celery (price: 0.6)</li><li>Artichoke (price: 0.6)</li><li>Braised Lettuce (price: 0.6)</li><li>White Squash (price: 0.5)</li><li>Stewed Fresh Tomatoes (price: 0.5)</li><li>Creamed Spinach (price: 0.6)</li><li>Hubbard (price: 0.5)</li><li>Mashed Yellow Turnips (price: 0.5)</li><li>Small Onions In Cream (price: 0.6)</li><li>Biron Potatoes (price: 0.45)</li><li>Sweet Potatoes (price: 0.5)</li><li>Dixie Potatoes (price: 0.5)</li><li>Boiled Bermuda Potatoes (price: 0.3)</li><li>Voisin Potatoes (price: 0.5)</li><li>Plaza Potatoes (price: 0.5)</li><li>Excelsior Salad (price: 0.6)</li><li>Hartford Salad (price: 0.6)</li><li>Royal Salad (price: 0.6)</li><li>Juliette Salad (price: 0.6)</li><li>Alligator Pear Salad (price: 0.7)</li><li>Fruit Salad (price: 0.6)</li><li>Rocheford Salad (price: 0.6)</li><li>Romaine Salad (price: 0.45)</li><li>Endive Salad (price: 0.45)</li><li>Mixed Green Salad (price: 0.45)</li><li>Escarole Salad (price: 0.45)</li><li>Lettuce Salad (price: 0.45)</li><li>Tomato Salad (price: 0.45)</li><li>Hot Souveraine Pudding (price: 0.35)</li><li>Cold Cottage Pudding (price: 0.35)</li><li>Rice Imperatrice (price: 0.4)</li><li>Wild Cherry Jelly (price: 0.35)</li><li>Souffle Tosca (price: 0.75)</li><li>French Pastry (1) (price: 0.25)</li><li>Rice Pudding (price: 0.35)</li><li>Apple Pie (price: 0.35)</li><li>Fresh Strawberry Ice Cream (price: 0.45)</li><li>Caramel Ice Cream (price: 0.45)</li><li>Strawberry Ice (price: 0.4)</li><li>Raspberry Sherbet (price: 0.4)</li><li>Bombe Reve De Bebe (price: 0.6)</li><li>Coupe Apricotine (price: 0.6)</li><li>Camembert Cheese (price: 0.45)</li><li>Swiss Cheese (price: 0.4)</li><li>Port Du Salut Cheese (price: 0.45)</li><li>Bel Paese Cheese (price: 0.45)</li><li>Brie Cheese (price: 0.45)</li><li>Gorgonzola Cheese (price: 0.5)</li><li>Roquefort Cheese (price: 0.5)</li><li>Stilton Cheese (price: 0.6)</li><li>Liederkranz Cheese (price: 0.45)</li><li>English Cheddar Cheese (price: 0.5)</li><li>Cantaloupe (price: 0.6)</li><li>Honeydew Melon (price: 0.6)</li><li>Watermelon (price: 0.6)</li><li>Berries In Season (price: 0.6)</li><li>Orange (price: 0.2)</li><li>Pear (price: 0.2)</li><li>King Orange (price: 0.2)</li><li>Delicious Apple (price: 0.2)</li><li>Grapefruit (price: 0.4)</li><li>Grapes (price: 0.5)</li><li>Cherry Stone Clams (price: 0.5)</li><li>Little Neck Clams (price: 0.45)</li><li>Cocktail Sauce (price: 0.1)</li><li>Sea Food Cocktail Plaza (price: 1.0)</li><li>Crab Flake Cocktail (price: 0.75)</li><li>Crab Flake Cocktail (price: 0.75)</li><li>Shrimp Cocktail (price: 0.75)</li><li>Clam Juice Cocktail (price: 0.35)</li><li>Tomato Juice Cocktail (price: 0.35)</li><li>Orange Supreme (price: 0.65)</li><li>Fruit Supreme (price: 0.65)</li><li>Grapefruit Supreme (price: 0.65)</li><li>Pineapple Paradise (price: 0.75)</li><li>Melon Supreme (price: 0.65)</li><li>Filet Of Herring (price: 0.5)</li><li>Fresh Caviar (price: 2.25)</li><li>Petit Artichoke Mariniere (price: 0.5)</li><li>Smoked Salmon (price: 0.75)</li><li>Tomato Monegasque (price: 0.75)</li><li>Plaza Appetizer (price: 1.25)</li><li>Hors D'oeuvre Variés</li><li>Anchovy Canape (price: 0.6)</li><li>Stuffed Celery (price: 0.5)</li><li>Macquereau Au Vin Blanc (price: 0.5)</li><li>Salami (price: 0.5)</li><li>Antipasto (price: 0.5)</li><li>Westphalia Ham (price: 1.25)</li><li>St. Germain Soup (price: 0.4)</li><li>Chicken Okra Soup (price: 0.5)</li><li>Tomato Soup (price: 0.4)</li><li>Cream Germiny (price: 0.5)</li><li>Crab Meat Gumbo (price: 0.5)</li><li>Chicken, Jellied Consomme, Cup (price: 0.4)</li><li>Madrilene, Jellied Consomme, Cup (price: 0.4)</li><li>Gumbo, Cup (price: 0.4)</li><li>Beef, Jellied Consomme, Cup (price: 0.4)</li><li>Poached Eggs, Benedict (price: 0.6)</li><li>Eggs, Shirred A La Turque (price: 0.5)</li><li>Omelette Suissesse (price: 0.8)</li><li>Cherry Stone Clams (price: 0.5)</li><li>Sea Food Cocktail Plaza (price: 1.0)</li><li>Tomato Soup (price: 0.4)</li><li>St. Germain Soup (price: 0.4)</li><li>Chicken Okra Soup (price: 0.5)</li><li>Cocktail Sauce (price: 0.1)</li><li>Cherry Stone Clams (price: 0.5)</li><li>Little Neck Clams (price: 0.45)</li><li>Crab Flake Cocktail (price: 0.75)</li><li>Sea Food Cocktail Plaza (price: 1.0)</li><li>Shrimp Cocktail (price: 0.75)</li><li>Clam Juice Cocktail (price: 0.35)</li><li>Tomato Juice Cocktail (price: 0.35)</li><li>Pineapple Paradise (price: 0.75)</li><li>Melon Supreme (price: 0.65)</li><li>Orange Supreme (price: 0.65)</li><li>Grapefruit Supreme (price: 0.65)</li><li>Fruit Supreme (price: 0.65)</li><li>Filet Of Herring (price: 0.5)</li><li>Fresh Caviar (price: 2.25)</li><li>Petit Artichoke Mariniere (price: 0.5)</li><li>Plaza Appetizer (price: 1.25)</li><li>Smoked Salmon (price: 0.75)</li><li>Tomato Monegasque (price: 0.75)</li><li>Anchovy Canape (price: 0.6)</li><li>Stuffed Celery (price: 0.5)</li><li>Hors D'oeuvres Varies</li><li>Salami (price: 0.5)</li><li>Antipasto (price: 0.5)</li><li>Maquereau Au Vin Blanc (price: 0.5)</li><li>Chicken Okra Soup (price: 0.5)</li><li>Tomato Soup (price: 0.4)</li><li>St. Germain Soup (price: 0.4)</li><li>Onion Soup Gratine (price: 0.5)</li><li>Julienne Darblay Soup (price: 0.5)</li><li>Cocotte Eggs, Josephine (price: 0.5)</li><li>Minced Eggs A La Poulette (price: 0.75)</li><li>Poached Eggs, Bonne Femme (price: 0.55)</li><li>Omelette, Salvator (price: 0.8)</li><li>Scrambled Eggs, Rachel (price: 0.8)</li><li>Fried Soft Shell Crabs With Bacon, Sauce Remoulade (price: 1.25)</li><li>Creamed Finnan Haddie A La Douglas (price: 0.9)</li><li>Chicken Halibut, Los Angeles (price: 1.1)</li><li>Darne Of Salmon Flaubert (price: 1.25)</li><li>Frogs' Legs Rissolees Royer (price: 1.25)</li><li>Filet Of Sea Bass Lady Egmont (price: 1.1)</li><li>Stuffed Smelts A La Tailer (price: 1.1)</li><li>Grilled Bluefish, Jardiniere (price: 1.1)</li><li>Brook Trout A La Dussolier (price: 1.1)</li><li>Boneless Shad And Roe Beaucaire (price: 1.25)</li><li>Supreme Of Sole Commodore (price: 0.9)</li><li>Deviled Breast Of Baby Lamb Jardiniere With Veloute Parmentier (price: 1.25)</li><li>Ragout A La Deutsch (price: 1.25)</li><li>Grilled Squab Chicke Continental (1/2) (price: 1.5)</li><li>Browned Corned Beef Hash With Fried Egg And Carrots Vichy (price: 0.9)</li><li>Duck Livers Saute Bordelaise In Bordure Of Rice (price: 0.9)</li><li>Roast Rack Of Milk Veal Boulangere (price: 1.25)</li><li>Fresh Vegetable Luncheon Au Gratin (price: 1.25)</li><li>Gnocchi Romaine (price: 0.5)</li><li>Macaroni Caruso (price: 0.9)</li><li>Spaghetti A La Milanaise (price: 0.75)</li><li>Smothered Ham Steak Southern Style (price: 1.25)</li><li>Noisette De Pre Sale A La Paillard (price: 1.5)</li><li>Supreme Of Guinea Hen Rossini (price: 1.75)</li><li>Imperial Squab A L'americaine (price: 2.0)</li><li>Chicken Saute Lafayette (1/2) (price: 1.75)</li><li>Fresh Mushrooms On Toast With Bacon, Beurre D'escargots (price: 1.0)</li><li>Small Steak En Casserole Chez Soi (price: 2.25)</li><li>California Asparagus (price: 0.9)</li><li>Beets In Butter (price: 0.5)</li><li>Stewed Okra (price: 0.6)</li><li>Mashed Yellow Turnips (price: 0.5)</li><li>Cauliflower (price: 0.7)</li><li>Carrots Vichy (price: 0.5)</li><li>New Peas (price: 0.6)</li><li>Lima Beans (price: 0.6)</li><li>String Beas (price: 0.6)</li><li>Succotash Plaza (price: 0.65)</li><li>Braised Celery (price: 0.6)</li><li>Artichoke (price: 0.6)</li><li>Braised Lettuce (price: 0.6)</li><li>Parsnips, Fines Herbes (price: 0.5)</li><li>Creamed Spinach (price: 0.6)</li><li>Stewed Fresh Tomatoes (price: 0.5)</li><li>White Squash (price: 0.5)</li><li>Hubbard Squash (price: 0.5)</li><li>Fried Egg Plant (price: 0.5)</li><li>Oyster Plant, Poulette (price: 0.6)</li><li>Small Onions In Cream (price: 0.6)</li><li>Boiled Bermuda Potatoes (price: 0.3)</li><li>Bennet Potatoes (price: 0.5)</li><li>Voisin Potatoes (price: 0.5)</li><li>Plaza Potatoes (price: 0.5)</li><li>Sweet Potatoes (price: 0.5)</li><li>Biron Potatoes (price: 0.45)</li><li>Jeannette Salad (price: 0.6)</li><li>Sunrise Salad (price: 0.6)</li><li>Mimosa Salad (price: 0.6)</li><li>Lettuce, Tomato And Asparagus Tips Salad (price: 0.6)</li><li>Rocheford Salad (price: 0.6)</li><li>Dandelion Salad A L'allemande (price: 0.6)</li><li>Alligator Pear Salad (price: 0.7)</li><li>Fruit Salad (price: 0.6)</li><li>Lettuce Salad (price: 0.45)</li><li>Endive Salad (price: 0.45)</li><li>Mixed Green Salad (price: 0.45)</li><li>Escarole Salad (price: 0.45)</li><li>Chicory Salad (price: 0.45)</li><li>Romaine Salad (price: 0.45)</li><li>Tomato Salad (price: 0.45)</li><li>Diplomate Pudding (price: 0.35)</li><li>Caramel Custard Pie (price: 0.35)</li><li>Red Sour Cherry Pie (price: 0.35)</li><li>Mocha Layer Cake (price: 0.4)</li><li>Apple Tart (price: 0.4)</li><li>Rice Pudding (price: 0.35)</li><li>French Pastry (1) (price: 0.25)</li><li>Apple Pie (price: 0.35)</li><li>Fresh Strawberry Ice Cream (price: 0.45)</li><li>Caramel Ice Cream (price: 0.45)</li><li>Strawberry Ice (price: 0.4)</li><li>Mint Sherbet (price: 0.4)</li><li>Tutti Frutti Parfait (price: 0.6)</li><li>Mocha Mousse (price: 0.6)</li><li>Port Du Salut Cheese (price: 0.45)</li><li>Bel Paese Cheese (price: 0.45)</li><li>Camembert Cheese (price: 0.45)</li><li>Brie Cheese (price: 0.45)</li><li>Swiss Cheese (price: 0.4)</li><li>Gorgonzola Cheese (price: 0.5)</li><li>English Cheddar Cheese (price: 0.5)</li><li>Roquefort Cheese (price: 0.5)</li><li>Liederkranz Cheese (price: 0.45)</li><li>Stilton Cheese (price: 0.6)</li><li>Honeydew Melon (price: 0.6)</li><li>Cantaloupe (price: 0.6)</li><li>Strawberries (price: 0.6)</li><li>Delicious Apple (price: 0.2)</li><li>Grapes (price: 0.5)</li><li>Orange (price: 0.2)</li><li>Pear (price: 0.2)</li><li>Grapefruit (price: 0.4)</li><li>King Orange (price: 0.2)</li><li>Little Neck Clams (price: 0.45)</li><li>Cherry Stone Clams (price: 0.5)</li><li>Sea Food Cocktail Plaza (price: 1.0)</li><li>Shrimp Cocktail (price: 0.75)</li><li>Clam Juice Cocktail (price: 0.35)</li><li>St. Germain Soup (price: 0.4)</li><li>Chicken Okra Soup (price: 0.5)</li><li>Tomato Soup (price: 0.4)</li><li>Cream Of Golden Bantam Corn Savarin (price: 0.5)</li><li>Chicken Printaniere With Barley (price: 0.5)</li><li>Boiled Bermuda Potatoes (price: 0.3)</li><li>Plaza Potatoes (price: 0.5)</li><li>Sweet Potatoes (price: 0.5)</li><li>Biron Potatoes (price: 0.45)</li><li>Voisin Potatoes (price: 0.5)</li><li>Dixie Potatoes (price: 0.5)</li><li>Hartford Salad (price: 0.6)</li><li>Sunrise Salad (price: 0.6)</li><li>Princess Salad (price: 0.6)</li><li>Lily Salad (price: 0.6)</li><li>Plaza Special Salad (price: 0.6)</li><li>Fruit Salad (price: 0.6)</li><li>Rocheford Salad (price: 0.6)</li><li>Dandelion Salad A L'allemande (price: 0.6)</li><li>Alligator Pear Salad (price: 0.7)</li><li>Escarole Salad (price: 0.45)</li><li>Chicory Salad (price: 0.45)</li><li>Lettuce Salad (price: 0.45)</li><li>Romaine Salad (price: 0.45)</li><li>Tomato Salad (price: 0.45)</li><li>Endive Salad (price: 0.45)</li><li>Mixed Green Salad (price: 0.45)</li><li>Hot Tutti Frutti Pudding (price: 0.35)</li><li>Cold Pralinee Custard Pudding (price: 0.35)</li><li>Rice Imperatrice (price: 0.4)</li><li>Souffle Montreuil (price: 0.75)</li><li>Crepes Suzette (price: 1.0)</li><li>Rice Pudding (price: 0.35)</li><li>Apple Pie (price: 0.35)</li><li>French Pastry (1) (price: 0.25)</li><li>Fresh Strawberry Ice Cream (price: 0.45)</li><li>Caramel Ice Cream (price: 0.45)</li><li>Strawberry Ice (price: 0.4)</li><li>Strawberry Coupe (price: 0.6)</li><li>Orange Sherbet (price: 0.4)</li><li>Bombe Nelusko (price: 0.6)</li><li>Camembert Cheese (price: 0.45)</li><li>Brie Cheese (price: 0.45)</li><li>Swiss Cheese (price: 0.4)</li><li>Port Du Salut Cheese (price: 0.45)</li><li>Bel Paese Cheese (price: 0.45)</li><li>Roquefort Cheese (price: 0.5)</li><li>Gorgonzola Cheese (price: 0.5)</li><li>Stilton Cheese (price: 0.6)</li><li>English Cheddar Cheese (price: 0.5)</li><li>Liederkranz Cheese (price: 0.45)</li><li>Cantaloupe (price: 0.6)</li><li>Honeydew Melon (price: 0.6)</li><li>Strawberries (price: 0.6)</li><li>Grapefruit (price: 0.4)</li><li>King Orange (price: 0.2)</li><li>Grapes (price: 0.5)</li><li>Orange (price: 0.2)</li><li>Delicious Apple (price: 0.2)</li><li>Pear (price: 0.2)</li><li>Cocktail Sauce (price: 0.1)</li><li>Cherry Stone Clams (price: 0.5)</li><li>Little Neck Clams (price: 0.45)</li><li>Crab Flake Cocktail (price: 0.75)</li><li>Sea Food Cocktail Plaza (price: 1.0)</li><li>Clam Juice Cocktail (price: 0.35)</li><li>Shrimp Cocktail (price: 0.75)</li><li>Tomato Juice Cocktail (price: 0.35)</li><li>Pineapple Paradise (price: 0.75)</li><li>Orange, Grapefruit, Melon Or Fruit Supreme (price: 0.65)</li><li>Fresh Caviar (price: 2.25)</li><li>Soft Shell Crabs On Toast With Bacon, Beurre Ravigotte (price: 1.25)</li><li>Little Neck Clams (price: 0.45)</li><li>Cocktail Sauce (price: 0.1)</li><li>Cherry Stone Clams (price: 0.5)</li><li>Crab Flake Cocktail (price: 0.75)</li><li>Sea Food Cocktail Plaza (price: 1.0)</li><li>Tomato Juice Cocktail (price: 0.35)</li><li>Shrimp Cocktail (price: 0.75)</li><li>Clam Juice Cocktail (price: 0.35)</li><li>Pineapple Paradise (price: 0.75)</li><li>Orange, Grapefruit, Melon Or Fruit Supreme (price: 0.65)</li><li>Filet Of Herring (price: 0.5)</li><li>Fresh Caviar (price: 2.25)</li><li>Petit Artichoke Mariniere (price: 0.5)</li><li>Tomato Monegasque (price: 0.75)</li><li>Plaza Appetizer (price: 1.25)</li><li>Smoked Salmon (price: 0.75)</li><li>Stuffed Celery (price: 0.5)</li><li>Anchovy Canape (price: 0.6)</li><li>Hors D'oeuvre Variés</li><li>Salami (price: 0.5)</li><li>Antipasto (price: 0.5)</li><li>Maquereau Au Vin Blanc (price: 0.5)</li><li>Chicken Okra Soup (price: 0.5)</li><li>Tomato Soup (price: 0.4)</li><li>St. Germain Soup (price: 0.4)</li><li>Ox Tail Soup Parisienne (price: 0.5)</li><li>Cream Of Asparagus Soup Aux Quenelles (price: 0.5)</li><li>Soft Shell Crabs A La Creole (price: 1.25)</li><li>Boiled Chicken Halibut, Sauce Mousseline (price: 1.1)</li><li>Boneless Shad And Roe Mascotte (price: 1.25)</li><li>Filet Of Sea Bass, Miss Poulette (price: 1.1)</li><li>Baked Lobster Grand Hotel (1/2) (price: 1.5)</li><li>Supreme Of Sole Suzette (price: 0.9)</li><li>Brook Trout Matelotte (price: 1.1)</li><li>Grilled Bluefish With Bacon Au Capeco (price: 1.1)</li><li>Darne Of Salmon Montgolfier (price: 1.25)</li><li>Aiguillette Of Kingfish Trianon (price: 1.1)</li><li>Turban Of Frogs' Legs And Shrimps A L'americaine (price: 1.25)</li><li>Roast Baron Of Baby Lamb Boulangere With Mixed Beans Forestiere (price: 1.5)</li><li>Tournedo Saute Cocarde (price: 2.0)</li><li>Fricassee Of Half Squab Chicken Normande (price: 1.5)</li><li>Grilled Kernel Of Sweetbread With Ham, Tomato, Mushrooms, Green Pepper (price: 1.5)</li><li>Braised Loin Of Milk Veal Bourgeoise With Gnocchi Romaine (price: 1.25)</li><li>Calf's Head A L'huile (price: 0.9)</li><li>Grilled Mushrooms On Toast With Bacon, Beurre Ravigotte (price: 1.0)</li><li>Boneless Royal Squab A La Turner (price: 2.0)</li><li>Planked American Steak A La Plaza (price: 3.0)</li><li>Mousseline Of Ham National (price: 1.1)</li><li>Arroz Con Pollo A L'espagnole (1/2) (price: 1.75)</li><li>Vol Au Vent Of Green Turtle Madiera (price: 1.5)</li><li>Supreme Of Chicken Favorite (price: 1.75)</li><li>Noisette De Pre Sale A L'estragon With Cucumber A L'etuve (price: 1.5)</li><li>Galantine Of Capon Edward Vii (price: 1.5)</li><li>Baby Lamb (price: 1.5)</li><li>Roast Beef (price: 1.0)</li><li>Squab Chicken (price: 2.0)</li><li>Broiler (price: 3.0)</li><li>Broiler (1/2) (price: 1.5)</li><li>Royal Squab (price: 1.75)</li><li>Beets In Butter (price: 0.5)</li><li>California Asparagus (price: 0.9)</li><li>Mashed Yellow Turnips (price: 0.5)</li><li>Cauliflower (price: 0.7)</li><li>Stewed Okra (price: 0.6)</li><li>Carrots Vichy (price: 0.5)</li><li>New Peas, String Beans Or Lima Beans (price: 0.6)</li><li>Succotash Plaza (price: 0.65)</li><li>Artichoke (price: 0.6)</li><li>Braised Lettuce Or Celery (price: 0.6)</li><li>Parsnips, Fines Herbes (price: 0.5)</li><li>Stewed Fresh Tomatoes (price: 0.5)</li><li>Hubbard Or White Squash (price: 0.5)</li><li>Creamed Spinach (price: 0.6)</li><li>Oyster Plant, Poulette (price: 0.6)</li><li>Small Onions In Cream (price: 0.6)</li><li>Fried Egg Plant (price: 0.5)</li><li>Dixie Potatoes (price: 0.5)</li><li>Boiled Bermuda Potatoes (price: 0.3)</li><li>Sweet Potatoes (price: 0.5)</li><li>Biron Potatoes (price: 0.45)</li><li>Plaza Potatoes (price: 0.5)</li><li>Voisin Potatoes (price: 0.5)</li><li>Blue Points (price: 0.45)</li><li>Cherry Stone Clams (price: 0.5)</li><li>Sea Food Cocktail Plaza (price: 1.0)</li><li>Shrimp Cocktail (price: 0.75)</li><li>Cape Cods (price: 0.5)</li><li>Cotuits (price: 0.5)</li><li>Blue Points (price: 0.45)</li><li>Little Neck Clams (price: 0.45)</li><li>Cocktail Sauce (price: 0.1)</li><li>Cherry Stone Clams (price: 0.5)</li><li>Sea Food Cocktail Plaza (price: 1.0)</li><li>Crab Flake Cocktail (price: 0.75)</li><li>Tomato Juice Cocktail (price: 0.35)</li><li>Shrimp Cocktail (price: 0.75)</li><li>Clam Juice Cocktail (price: 0.35)</li><li>Melon Supreme (price: 0.65)</li><li>Fruit Supreme (price: 0.65)</li><li>Pineapple Paradise (price: 0.75)</li><li>Orange Supreme (price: 0.65)</li><li>Grapefruit Supreme (price: 0.65)</li><li>Fresh Caviar (price: 2.25)</li><li>Clams, Blue Points (price: 0.45)</li><li>Clams, Cape Cods (price: 0.5)</li><li>Clams, Cotuits (price: 0.5)</li><li>Little Neck Clams (price: 0.45)</li><li>Cocktail Sauce (price: 0.1)</li><li>Cherry Stone Clams (price: 0.5)</li><li>Crab Flake Cocktail (price: 0.75)</li><li>Sea Food Cocktail Plaze (price: 1.0)</li><li>Tomato Juice Cocktail (price: 0.35)</li><li>Shrimp Cocktail (price: 0.75)</li><li>Clam Juice Cocktail (price: 0.35)</li><li>Pineapple Paradise (price: 0.75)</li><li>Melon Supreme (price: 0.65)</li><li>Orange Supreme (price: 0.65)</li><li>Grapefruit Supreme (price: 0.65)</li><li>Fruit Supreme (price: 0.65)</li><li>Philadelphia Pepper Pot (price: 0.5)</li><li>Eggs Cocotte, Josephine (price: 0.5)</li><li>Poached Eggs, Bonne Femme (price: 0.55)</li><li>Eggs, Minced A La Poulette (price: 0.75)</li><li>Omelette, Agnes Sorel (price: 0.8)</li><li>Scrambled Eggs, Grand' Mere (price: 0.8)</li><li>Deviled Breast Of Baby Lamb With Brains Jardiniere With Veloute Parmentier (price: 1.25)</li><li>Milk Veal Cutlet Hongroise With Noodles (price: 1.25)</li><li>Grilled Squab Chicken Continental (1/2) (price: 1.5)</li><li>Braised Ham Steak, Southern Style (price: 1.25)</li><li>Knickerbocker Salad (price: 0.6)</li><li>Milady Pudding (price: 0.35)</li><li>Brie Cheese (price: 0.45)</li><li>Camembert Cheese (price: 0.45)</li><li>Swiss Cheese (price: 0.4)</li><li>Port Du Salut Cheese (price: 0.45)</li><li>Bel Paese Cheese (price: 0.45)</li><li>Stilton Cheese (price: 0.6)</li><li>Roquefort Cheese (price: 0.5)</li><li>Gorgonzola Cheese (price: 0.5)</li><li>Liederkranz Cheese (price: 0.45)</li><li>English Cheddar Cheese (price: 0.5)</li><li>Honeydew Melon (price: 0.6)</li><li>Cantaloupe (price: 0.6)</li><li>Strawberries (price: 0.6)</li><li>Grapefruit (price: 0.4)</li><li>Orange (price: 0.2)</li><li>Pear (price: 0.2)</li><li>Grapes (price: 0.5)</li><li>King Orange (price: 0.2)</li><li>Delicious Apple (price: 0.2)</li><li>Blue Points (price: 0.45)</li><li>Pineapple Paradise (price: 0.75)</li><li>Orange, Grapefruit, Melon Or Fruit Supreme (price: 0.65)</li><li>Filet Of Herring (price: 0.5)</li><li>Fresh Caviar (price: 2.25)</li><li>Petit Artichoke Mariniere (price: 0.5)</li><li>Plaza Appetizer (price: 1.25)</li><li>Tomato Monegasque (price: 0.75)</li><li>Smoked Salmon (price: 0.75)</li><li>Hors D'oeuvre Variés</li><li>Stuffed Celery (price: 0.5)</li><li>Anchovy Canape (price: 0.6)</li><li>Salami (price: 0.5)</li><li>Antipasto (price: 0.5)</li><li>Westphalia Ham (price: 1.25)</li><li>Maquereau Au Vin Blanc (price: 0.5)</li><li>Chicken Okra Soup (price: 0.5)</li><li>Tomato Soup (price: 0.4)</li><li>St. Germain (price: 0.4)</li><li>Calf's Feet Soup A L'anglaise (price: 0.5)</li><li>Cream Of Yelllow Squash Soup Aux Croutons (price: 0.5)</li><li>Quenelle Of Capon, Sauce Archiduc With Purée Of Peas (price: 1.25)</li><li>Poussin De Serre A La Souvaroff (price: 2.25)</li><li>Boneless Royal Squab A La Washington (price: 2.0)</li><li>Filet Mignon Béatrice (price: 2.0)</li><li>Supreme Of Hot House Chicken Rossini (price: 1.75)</li><li>Turban De Ris D'agneau Bonne Maman (price: 1.25)</li><li>Cherry Stone Clams (price: 0.5)</li><li>Cocktail Sauce (price: 0.1)</li><li>Little Neck Clams (price: 0.45)</li><li>Sea Food Cocktail Plaza (price: 1.0)</li><li>Crab Flake Cocktail (price: 0.75)</li><li>Shrimp Cocktail (price: 0.75)</li><li>Clam Juice Cocktail (price: 0.35)</li><li>Tomato Juice Cocktail (price: 0.35)</li><li>California Asparagus (price: 0.9)</li><li>Beets In Butter (price: 0.5)</li><li>Cauliflower (price: 0.7)</li><li>Stewed Okra (price: 0.6)</li><li>Mashed Yellow Turnips (price: 0.5)</li><li>Carrots Vichy (price: 0.5)</li><li>Succotash Plaza (price: 0.65)</li><li>Parsnips, Fines Herbes (price: 0.5)</li><li>Artichoke (price: 0.6)</li><li>Creamed Spinach (price: 0.6)</li><li>Stewed Fresh Tomatoes (price: 0.5)</li><li>Oyster Plant, Poulette (price: 0.6)</li><li>Fried Egg Plant (price: 0.5)</li><li>Sweet Onions In Cream (price: 0.6)</li><li>Biron Potatoes (price: 0.45)</li><li>Plaza Potatoes (price: 0.5)</li><li>Bennet Potatoes (price: 0.5)</li><li>Voisin Potatoes (price: 0.5)</li><li>Sweet Potatoes (price: 0.5)</li><li>Boiled Bermuda Potatoes (price: 0.3)</li><li>Princess Salad (price: 0.6)</li><li>Hartford Salad (price: 0.6)</li><li>Lily Salad (price: 0.6)</li><li>Plaza Special Salad (price: 0.6)</li><li>Sunrise Salad (price: 0.6)</li><li>Dandelion A L'allemande Salad (price: 0.6)</li><li>Alligator Pear Salad (price: 0.7)</li><li>Fruit Salad (price: 0.6)</li><li>Rocheford Salad (price: 0.6)</li><li>Romaine Salad (price: 0.45)</li><li>Chicory Salad (price: 0.45)</li><li>Mixed Green Salad (price: 0.45)</li><li>Tomato Salad (price: 0.45)</li><li>Escarole Salad (price: 0.45)</li><li>Endive Salad (price: 0.45)</li><li>Lettuce Salad (price: 0.45)</li><li>Boston Cream Pie (price: 0.35)</li><li>Portugaise Pudding (price: 0.35)</li><li>Rhubarb Pie (price: 0.35)</li><li>Baba Au Sirop (price: 0.3)</li><li>Old Fashioned Strawberry Short Cake (price: 0.65)</li><li>Apple Pie (price: 0.35)</li><li>French Pastry (1) (price: 0.25)</li><li>Rice Pudding (price: 0.35)</li><li>Caramel Ice Cream (price: 0.45)</li><li>Fresh Strawberry Ice Cream (price: 0.45)</li><li>Strawberry Ice (price: 0.4)</li><li>Grenadine Sherbet (price: 0.4)</li><li>Strawberry Mousse (price: 0.6)</li><li>Parfait Praline (price: 0.6)</li><li>Camembert Cheese (price: 0.45)</li><li>Brie Cheese (price: 0.45)</li><li>Swiss Cheese (price: 0.4)</li><li>Port Du Salut Cheese (price: 0.45)</li><li>Bel Paese Cheese (price: 0.45)</li><li>Gorgonzola Cheese (price: 0.5)</li><li>Roquefort Cheese (price: 0.5)</li><li>English Cheddar Cheese (price: 0.5)</li><li>Stilton Cheese (price: 0.6)</li><li>Liederkranz Cheese (price: 0.45)</li><li>Honeydew Melon (price: 0.6)</li><li>Strawberries (price: 0.6)</li><li>Cantaloupe (price: 0.6)</li><li>King Orange (price: 0.2)</li><li>Grapes (price: 0.5)</li><li>Orange (price: 0.2)</li><li>Delicious Apple (price: 0.2)</li><li>Pear (price: 0.2)</li><li>Grapefruit (price: 0.4)</li><li>Cherry Stone Clams (price: 0.5)</li><li>Cocktail Sauce (price: 0.1)</li><li>Little Neck Clams (price: 0.45)</li><li>Crab Flake Cocktail (price: 0.75)</li><li>Sea Food Cocktail Plaza (price: 1.0)</li><li>Tomato Juice Cocktail (price: 0.35)</li><li>Shrimp Cocktail (price: 0.75)</li><li>Clam Juice Cocktail (price: 0.35)</li><li>Orange (price: 0.65)</li><li>Pineapple Paradise (price: 0.75)</li><li>Fruit Supreme (price: 0.65)</li><li>Grapefruit (price: 0.65)</li><li>Melon (price: 0.65)</li><li>Petit Artichoke Mariniere (price: 0.5)</li><li>Filet Of Herring (price: 0.5)</li><li>Fresh Caviar (price: 2.25)</li><li>Smoked Salmon (price: 0.75)</li><li>Tomato Monegasque (price: 0.75)</li><li>Plaza Appetizer (price: 1.25)</li><li>Hors D'oeuvre Variés</li><li>Stuffed Celery (price: 0.5)</li><li>Anchovy Canape (price: 0.6)</li><li>Salami (price: 0.5)</li><li>Westphalia Ham (price: 1.25)</li><li>Antipasto (price: 0.5)</li><li>Maquereau Au Vin Blanc (price: 0.5)</li><li>St. Germain Soup (price: 0.4)</li><li>Chicken Okra (price: 0.5)</li><li>Tomato Soup (price: 0.4)</li><li>Home Made Chicken Soup (price: 0.5)</li><li>Clear Mock Turtle (price: 0.5)</li><li>Scrambled Eggs, Chasseur (price: 0.8)</li><li>Eggs Shirred, Meyerbeer (price: 0.5)</li><li>Poached, Benedict (price: 0.6)</li><li>Omelette Maria (price: 0.8)</li><li>Cocotte, Bergere (price: 0.5)</li><li>Supreme Of Sea Bass Florentine (price: 1.1)</li><li>Brook Trout Hoteliere (price: 1.1)</li><li>Frog's Legs Rissolees Provencale (price: 1.0)</li><li>Soft Shell Crabs Saute With Almonds (price: 1.25)</li><li>Filet Of Sole Veronique (price: 0.9)</li><li>Boneless Shad And Roe With Glazed Cantaloupe (price: 1.25)</li><li>Chicken Halibut, Cucumber Vernon (price: 1.1)</li><li>Kingfish Meuniere A La Bretonne (price: 1.1)</li><li>Grilled Bluefish With Bacon And Mushrooms (price: 1.1)</li><li>Cold Salmon Parisienne (price: 1.25)</li><li>Baked Lobster Thermidor (1/2) (price: 1.5)</li><li>Prime Rib Of Beef With Potatoes Maitre D'hotel And Stuffed Green Peppers (price: 1.25)</li><li>Grilled Sugar Cured Ham With Risotto Plaza (price: 1.1)</li><li>Baked Shell Of Capon St. Germain (price: 1.5)</li><li>Milk Veal Cutlet A La Viennoise (price: 1.25)</li><li>Kidney Saute Berrichonne (price: 1.1)</li><li>Spring Lamb Chop A La Pompadour (price: 1.0)</li><li>Fresh Vegetable Luncheon With Poached Egg (price: 1.25)</li><li>Spaghetti A La Milanaise (price: 0.75)</li><li>Gnocchi Romaine (price: 0.5)</li><li>Macaroni Caruso (price: 0.9)</li><li>Shoulder Of Baby Lamb En Casserole Grand'mere (For Two) (price: 3.0)</li><li>Fresh Mushrooms Under Glass New Orleans (price: 1.0)</li><li>Hot House Chicken A La Biarritz (1/2) (price: 1.75)</li><li>Duck Livers A La Teddy (price: 0.9)</li><li>Tournedo A La Morland (price: 2.0)</li><li>Supreme Of Guinea Hen Mikado (price: 1.75)</li><li>Poussin De Serre En Croute St. Genis (price: 2.25)</li><li>Brizola Steak Tyrolienne (price: 1.75)</li><li>Cassolette Of Sweetbread Hongroise (price: 1.25)</li><li>Beets In Butter (price: 0.5)</li><li>California Asparagus (price: 0.9)</li><li>Cauliflower (price: 0.7)</li><li>Stewed Okra (price: 0.6)</li><li>Mashed Yellow Turnips (price: 0.5)</li><li>New Peas (price: 0.6)</li><li>String Beans (price: 0.6)</li><li>Succotash Plaza (price: 0.65)</li><li>Carrots Vichy (price: 0.5)</li><li>Lima Beans (price: 0.6)</li><li>Parsnips, Fines Herbes (price: 0.5)</li><li>Braised Lettuce (price: 0.6)</li><li>Artichoke (price: 0.6)</li><li>Braised Celery (price: 0.6)</li><li>Stewed Fresh Tomatoes (price: 0.5)</li><li>Hubbard Squash (price: 0.5)</li><li>White Squash (price: 0.5)</li><li>Creamed Spinach (price: 0.6)</li><li>Oyster Plant, Poulette (price: 0.6)</li><li>Fried Egg Plant (price: 0.5)</li><li>Small Onions In Cream (price: 0.6)</li><li>Sweet Potatoes (price: 0.5)</li><li>Plaza Potatoes (price: 0.5)</li><li>Biron Potatoes (price: 0.45)</li><li>Voisin Potatoes (price: 0.5)</li><li>Bennet Potatoes (price: 0.5)</li><li>Boiled Bermuda Potatoes (price: 0.3)</li><li>Lettuce, Eggs And Beets Salad (price: 0.6)</li><li>Hartford Salad (price: 0.6)</li><li>Sunrise Salad (price: 0.6)</li><li>Orleans Salad (price: 0.6)</li><li>Alligator Pear Salad (price: 0.7)</li><li>Dandelion Salad A L'allemande (price: 0.6)</li><li>Rocheford Salad (price: 0.6)</li><li>Fruit Salad (price: 0.6)</li><li>Escarole Salad (price: 0.45)</li><li>Lettuce Salad (price: 0.45)</li><li>Romaine Salad (price: 0.45)</li><li>Mixed Green Salad (price: 0.45)</li><li>Tomato Salad (price: 0.45)</li><li>Endive Salad (price: 0.45)</li><li>Chicory Salad (price: 0.45)</li><li>Mocha Cup Custard (price: 0.25)</li><li>Peach Pie (price: 0.35)</li><li>Floating Island Duchesse (price: 0.4)</li><li>Compote Of Assorted Fruits (price: 0.45)</li><li>Strawberry Tart (price: 0.4)</li><li>French Pastry (1) (price: 0.25)</li><li>Rice Pudding (price: 0.35)</li><li>Apple Pie (price: 0.35)</li><li>Fresh Strawberry Ice Cream (price: 0.45)</li><li>Caramel Ice Cream (price: 0.45)</li><li>Strawberry Ice (price: 0.4)</li><li>Strawberry Mousse (price: 0.6)</li><li>Parfait Praline (price: 0.6)</li><li>Grenadine Sherbet (price: 0.4)</li><li>Camembert Cheese (price: 0.45)</li><li>Port Du Salut Cheese (price: 0.45)</li><li>Bel Paese Cheese (price: 0.45)</li><li>Brie Cheese (price: 0.45)</li><li>Swiss Cheese (price: 0.4)</li><li>Liederkranz Cheese (price: 0.45)</li><li>Stilton Cheese (price: 0.6)</li><li>Gorgonzola Cheese (price: 0.5)</li><li>English Cheddar Cheese (price: 0.5)</li><li>Roquefort Cheese (price: 0.5)</li><li>Honeydew Melon (price: 0.6)</li><li>Strawberries (price: 0.6)</li><li>Cantaloupe (price: 0.6)</li><li>Grapes (price: 0.5)</li><li>Orange (price: 0.2)</li><li>Delicious Apple (price: 0.2)</li><li>Pear (price: 0.2)</li><li>Grapefruit (price: 0.4)</li><li>King Orange (price: 0.2)</li><li>Dixie Potatoes (price: 0.5)</li><li>Sweet Potatoes (price: 0.5)</li><li>Biron Potatoes (price: 0.45)</li><li>Boiled Bermuda Potatoes (price: 0.3)</li><li>Plaza Potatoes (price: 0.5)</li><li>Voisin Potatoes (price: 0.5)</li><li>Excelsior Salad (price: 0.6)</li><li>Hartford Salad (price: 0.6)</li><li>Juliette Salad (price: 0.6)</li><li>Royal Salad (price: 0.6)</li><li>Fruit Salad (price: 0.6)</li><li>Rocheford Salad (price: 0.6)</li><li>Dandelion Salad A L'allemande (price: 0.6)</li><li>Alligator Pear Salad (price: 0.7)</li><li>Endive Salad (price: 0.45)</li><li>Mixed Green Salad (price: 0.45)</li><li>Tomato Salad (price: 0.45)</li><li>Chicory Salad (price: 0.45)</li><li>Lettuce Salad (price: 0.45)</li><li>Escarole Salad (price: 0.45)</li><li>Romaine Salad (price: 0.45)</li><li>Hot Royal Pudding (price: 0.35)</li><li>Cold Fig Pudding (price: 0.35)</li><li>Vanilla Souffle, Sabayon Sauce (price: 0.75)</li><li>Profiteroles Helene (price: 0.5)</li><li>Orange Jelly (price: 0.35)</li><li>French Pastry (1) (price: 0.25)</li><li>Rice Pudding (price: 0.35)</li><li>Apple Pie (price: 0.35)</li><li>Fresh Strawberry Ice Cream (price: 0.45)</li><li>Caramel Ice Cream (price: 0.45)</li><li>Strawberry Ice (price: 0.4)</li><li>Chestnut Coupe (price: 0.6)</li><li>Sherbet Panache (price: 0.4)</li><li>Frozen Log Plaza (price: 0.6)</li><li>Brie Cheese (price: 0.45)</li><li>Camembert Cheese (price: 0.45)</li><li>Port Du Salut Cheese (price: 0.45)</li><li>Swiss Cheese (price: 0.4)</li><li>Bel Paese Cheese (price: 0.45)</li><li>Roquefort Cheese (price: 0.5)</li><li>Gorgonzola Cheese (price: 0.5)</li><li>Stilton Cheese (price: 0.6)</li><li>Liederkranz Cheese (price: 0.45)</li><li>English Cheddar Cheese (price: 0.5)</li><li>Cantaloupe (price: 0.6)</li><li>Honeydew Melon (price: 0.6)</li><li>Strawberries (price: 0.6)</li><li>Grapefruit (price: 0.4)</li><li>Orange (price: 0.2)</li><li>Delicious Apple (price: 0.2)</li><li>King Orange (price: 0.2)</li><li>Grapes (price: 0.5)</li><li>Pear (price: 0.2)</li><li>Luncheon</li><li>Clams And Cocktails</li><li>Cherry Stone Clams (price: 0.5)</li><li>Cocktail Sauce (price: 0.1)</li><li>Little Neck Clams (price: 0.45)</li><li>Sea Food Cocktail Plaza (price: 1.0)</li><li>Crab Flake Cocktail (price: 0.75)</li><li>Clam Juice Cocktail (price: 0.35)</li><li>Tomato Juice Cocktail (price: 0.35)</li><li>Shrimp Cocktail (price: 0.75)</li><li>Pineapple Paradise (price: 0.75)</li><li>Filet Of Herring (price: 0.5)</li><li>Tomato Monegasque (price: 0.75)</li><li>Stuffed Celery (price: 0.5)</li><li>Westphalia Ham (price: 1.25)</li><li>Eggs Scrambled, Grand'mere (price: 0.8)</li><li>Eggs Poached, Plaza (price: 0.55)</li><li>Omelette, Agnes Sorel (price: 0.8)</li><li>Eggs Fried Andalouse (price: 0.5)</li><li>Eggs En Cocotte Zingara (price: 0.5)</li><li>Fried Soft Shell Crabs With Bacon, Sauce Remoulade (price: 1.25)</li><li>Creamed Salmon In Bordure Florentine (price: 1.25)</li><li>Chicken Halibut Los Angeles (price: 1.1)</li><li>Filet Of Sea Bass Lady Egmont (price: 1.1)</li><li>Kingfish, Amelie (price: 1.1)</li><li>Grilled Bluefish, Jardiniere (price: 1.1)</li><li>Brook Trout à La Buena Vista (price: 1.1)</li><li>Boneless Shad And Roe Beaucaire (price: 1.25)</li><li>Supreme Of Sole Commodore (price: 0.9)</li><li>Frogs' Legs Rissolés Royer (price: 1.25)</li><li>Jersey Asparagus (price: 0.9)</li><li>Beets In Butter (price: 0.5)</li><li>Cauliflower (price: 0.7)</li><li>Stewed Okra (price: 0.6)</li><li>Mashed Yellow Turnips (price: 0.5)</li><li>Lima Beans (price: 0.6)</li><li>New Peas (price: 0.6)</li><li>Carrots Vichy (price: 0.5)</li><li>Succotash Plaza (price: 0.65)</li><li>String Beans (price: 0.6)</li><li>Artichoke (price: 0.6)</li><li>Braised Lettuce Or Celery (price: 0.6)</li><li>Parsnips, Fines Herbes (price: 0.5)</li><li>Hubbard Or White Squash (price: 0.5)</li><li>Stewed Fresh Tomatoes (price: 0.5)</li><li>Creamed Spinach (price: 0.6)</li><li>Small Onions In Cream (price: 0.6)</li><li>Oyster Plant, Poulette (price: 0.6)</li><li>Fried Egg Plant (price: 0.5)</li><li>Plaza Potatoes (price: 0.5)</li><li>Potatoes Bennet (price: 0.5)</li><li>Potatoes Sweet (price: 0.5)</li><li>Boiled Bermuda Potatoes (price: 0.3)</li><li>Biron Potatoes (price: 0.45)</li><li>Voisin Potatoes (price: 0.5)</li><li>Knickerbocker Salad (price: 0.6)</li><li>Dixie Potatoes (price: 0.5)</li><li>Plaza Potatoes (price: 0.5)</li><li>Sweet Potatoes (price: 0.5)</li><li>Biron Potatoes (price: 0.45)</li><li>Boiled Bermuda Potatoes (price: 0.3)</li><li>Voisin Potatoes (price: 0.5)</li><li>Louisette Salad (price: 0.6)</li><li>Lettuce, Tomato And Cucumber Salad (price: 0.6)</li><li>Kuroki Salad (price: 0.6)</li><li>Fruit Salad (price: 0.6)</li><li>Rocheford Salad (price: 0.6)</li><li>Alligator Pear Salad (price: 0.7)</li><li>Endive Salad (price: 0.45)</li><li>Escarole Salad (price: 0.45)</li><li>Chicory Salad (price: 0.45)</li><li>Romaine Salad (price: 0.45)</li><li>Lettuce Salad (price: 0.45)</li><li>Mixed Green Salad (price: 0.45)</li><li>Tomato Salad (price: 0.45)</li><li>Hot Tapioca Pudding (price: 0.35)</li><li>Cold Pudding Clo Clo (price: 0.35)</li><li>Chestnut Bavaroise (price: 0.4)</li><li>Souffle Rothschild (price: 0.75)</li><li>Crepes Suzette (price: 1.0)</li><li>Rice Pudding (price: 0.35)</li><li>Apple Pie (price: 0.35)</li><li>French Pastry (1) (price: 0.25)</li><li>Fresh Strawberry Ice Cream (price: 0.45)</li><li>Caramel Ice Cream (price: 0.45)</li><li>Strawberry Ice (price: 0.4)</li><li>Chestnut Coupe (price: 0.6)</li><li>Sherbet Panache (price: 0.4)</li><li>Frozen Log Plaza (price: 0.6)</li><li>Brie Cheese (price: 0.45)</li><li>Swiss Cheese (price: 0.4)</li><li>Camembert Cheese (price: 0.45)</li><li>Bel Paese Cheese (price: 0.45)</li><li>Port Du Salut Cheese (price: 0.45)</li><li>Roquefort Cheese (price: 0.5)</li><li>Gorgonzola Cheese (price: 0.5)</li><li>Stilton Cheese (price: 0.6)</li><li>Liederkranz Cheese (price: 0.45)</li><li>English Cheddar Cheese (price: 0.5)</li><li>Cantaloupe (price: 0.6)</li><li>Honeydew Melon (price: 0.6)</li><li>Strawberries (price: 0.6)</li><li>King Orange (price: 0.2)</li><li>Grapes (price: 0.5)</li><li>Orange (price: 0.2)</li><li>Delicious Apple (price: 0.2)</li><li>Grapefruit (price: 0.4)</li><li>Pear (price: 0.2)</li><li>Cherry Stone Clams (price: 0.5)</li><li>Little Neck Clams (price: 0.45)</li><li>Cocktail Sauce (price: 0.1)</li><li>Sea Food Cocktail Plaza (price: 1.0)</li><li>Crab Flake Cocktail (price: 0.75)</li><li>Shrimp Cocktail (price: 0.75)</li><li>Clam Juice Cocktail (price: 0.35)</li><li>Tomato Juice Cocktail (price: 0.35)</li><li>Roast Beef (price: 1.0)</li><li>Baby Lamb (price: 1.5)</li><li>Broiler (price: 1.5- 3.0)</li><li>Royal Squab (price: 1.75)</li><li>Squab Chicken (price: 2.0)</li><li>Jersey Asparagus (price: 0.9)</li><li>Beets In Butter (price: 0.5)</li><li>Cauliflower (price: 0.7)</li><li>Stewed Okra (price: 0.6)</li><li>Mashed Yellow Turnips (price: 0.5)</li><li>New Peas (price: 0.6)</li><li>Lima Beans (price: 0.6)</li><li>Carrots Vichy (price: 0.5)</li><li>String Beans (price: 0.6)</li><li>Succotash Plaza (price: 0.65)</li><li>Braised Lettuce (price: 0.6)</li><li>Braised Celery (price: 0.6)</li><li>Artichoke (price: 0.6)</li><li>Hubbard Squash (price: 0.5)</li><li>Stewed Fresh Tomatoes (price: 0.5)</li><li>White Squash (price: 0.5)</li><li>Creamed Spinach (price: 0.6)</li><li>Small Onions In Cream (price: 0.6)</li><li>Fried Egg Plant (price: 0.5)</li><li>Sweet Potatoes (price: 0.5)</li><li>Dixie Potatoes (price: 0.5)</li><li>Plaza Potatoes (price: 0.5)</li><li>Biron Potatoes (price: 0.45)</li><li>Boiled Bermuda Potatoes (price: 0.3)</li><li>Voisin Potatoes (price: 0.5)</li><li>Hartford Salad (price: 0.6)</li><li>Lettuce, Celery And Pimentos Salad (price: 0.45)</li><li>Bonnie Brea Salad (price: 0.6)</li><li>Fruit Salad (price: 0.6)</li><li>Rocheford Salad (price: 0.45)</li><li>Alligator Pear Salad (price: 0.7)</li><li>Escarole Salad (price: 0.45)</li><li>Endive Salad (price: 0.45)</li><li>Chicory Salad (price: 0.45)</li><li>Lettuce Salad (price: 0.45)</li><li>Romaine Salad (price: 0.45)</li><li>Mixed Green Salad (price: 0.45)</li><li>Tomato Salad (price: 0.45)</li><li>Hot Peach Conde (price: 0.4)</li><li>Cold Jelly Roll Pudding (price: 0.35)</li><li>Bavaroise Pralinee (price: 0.4)</li><li>Souffle Nicoise (price: 0.75)</li><li>Madeira Jelly (price: 0.35)</li><li>Rice Pudding (price: 0.35)</li><li>Apple Pie (price: 0.35)</li><li>French Pastry (1) (price: 0.25)</li><li>Caramel Ice Cream (price: 0.45)</li><li>Fresh Strawberry Ice Cream (price: 0.45)</li><li>Strawberry Ice (price: 0.4)</li><li>Chestnut Coupe (price: 0.6)</li><li>Sherbet Panache (price: 0.4)</li><li>Frozen Log Plaza (price: 0.6)</li><li>Camembert Cheese (price: 0.45)</li><li>Brie Cheese (price: 0.45)</li><li>Swiss Cheese (price: 0.4)</li><li>Port Du Salut Cheese (price: 0.45)</li><li>Bel Paese Cheese (price: 0.45)</li><li>Roquefort Cheese (price: 0.5)</li><li>Gorgonzola Cheese (price: 0.5)</li><li>Liederkranz Cheese (price: 0.45)</li><li>Stilton Cheese (price: 0.6)</li><li>English Cheddar Cheese (price: 0.5)</li><li>Cantaloupe (price: 0.6)</li><li>Honeydew Melon (price: 0.6)</li><li>Strawberries (price: 0.6)</li><li>King Orange (price: 0.2)</li><li>Grapefruit (price: 0.4)</li><li>Grapes (price: 0.5)</li><li>Delicious Apple (price: 0.2)</li><li>Orange (price: 0.2)</li><li>Pear (price: 0.2)</li><li>Sweet Potatoes (price: 0.5)</li><li>Biron Potatoes (price: 0.45)</li><li>Plaza Potatoes (price: 0.5)</li><li>Boiled Bermuda Potatoes (price: 0.3)</li><li>Dixie Potatoes (price: 0.5)</li><li>Voisin Potatoes (price: 0.5)</li><li>Mimosa Salad (price: 0.6)</li><li>Sunrise Salad (price: 0.6)</li><li>Lettuce, Tomato And Asparagus Tips Salad (price: 0.6)</li><li>Jeannette Salad (price: 0.6)</li><li>Alligator Pear Salad (price: 0.7)</li><li>Rocheford Salad (price: 0.6)</li><li>Fruit Salad (price: 0.6)</li><li>Romaine Salad (price: 0.45)</li><li>Escarole Salad (price: 0.45)</li><li>Endive Salad (price: 0.45)</li><li>Lettuce Salad (price: 0.45)</li><li>Mixed Green Salad (price: 0.45)</li><li>Tomato Salad (price: 0.45)</li><li>Chicory Salad (price: 0.45)</li><li>Cocoanut Custard Pie (price: 0.35)</li><li>Diplomat Pudding (price: 0.35)</li><li>Apricot Pie (price: 0.35)</li><li>Pain De La Mecque (price: 0.25)</li><li>Strawberry Short Cake Plaza (price: 0.65)</li><li>Rice Pudding (price: 0.35)</li><li>Apple Pie (price: 0.35)</li><li>French Pastry (1) (price: 0.25)</li><li>Caramel Ice Cream (price: 0.45)</li><li>Strawberry Ice (price: 0.4)</li><li>Fresh Strawberry Ice Cream (price: 0.45)</li><li>Strawberry Mousse (price: 0.6)</li><li>Grenadine Sherbet (price: 0.4)</li><li>Parfait Praline (price: 0.6)</li><li>Port Du Salut Cheese (price: 0.45)</li><li>Brie Cheese (price: 0.45)</li><li>Swiss Cheese (price: 0.4)</li><li>Bel Paese Cheese (price: 0.45)</li><li>Camembert Cheese (price: 0.45)</li><li>Roquefort Cheese (price: 0.5)</li><li>Gorgonzola Cheese (price: 0.5)</li><li>English Cheddar Cheese (price: 0.5)</li><li>Stilton Cheese (price: 0.6)</li><li>Liederkranz Cheese (price: 0.45)</li><li>Honeydew Melon (price: 0.6)</li><li>Cantaloupe (price: 0.6)</li><li>Strawberries (price: 0.6)</li><li>Grapefruit (price: 0.4)</li><li>Orange (price: 0.2)</li><li>Grapes (price: 0.5)</li><li>Delicious Apple (price: 0.2)</li><li>Pear (price: 0.2)</li><li>King Orange (price: 0.2)</li><li>Biron Potatoes (price: 0.45)</li><li>Boiled Bermuda Potatoes (price: 0.3)</li><li>Dixie Potatoes (price: 0.5)</li><li>Plaza Potatoes (price: 0.5)</li><li>Voisin Potatoes (price: 0.5)</li><li>Sweet Potatoes (price: 0.5)</li><li>Lily Salad (price: 0.6)</li><li>Sunrise Salad (price: 0.6)</li><li>Hartford Salad (price: 0.6)</li><li>Princess Salad (price: 0.6)</li><li>Plaza Special Salad (price: 0.6)</li><li>Alligator Pear Salad (price: 0.7)</li><li>Fruit Salad (price: 0.6)</li><li>Rocheford Salad (price: 0.6)</li><li>Mixed Green Salad (price: 0.45)</li><li>Tomato Salad (price: 0.45)</li><li>Endive Salad (price: 0.45)</li><li>Lettuce Salad (price: 0.45)</li><li>Romaine Salad (price: 0.45)</li><li>Chicory Salad (price: 0.45)</li><li>Escarole Salad (price: 0.45)</li><li>Cold Macaroon Pudding (price: 0.35)</li><li>Hot Tutti Frutti Pudding (price: 0.35)</li><li>Wild Cherry Jelly (price: 0.35)</li><li>Souffle Milady (price: 0.75)</li><li>Rice Turban Cardinal (price: 0.4)</li><li>French Pastry (1) (price: 0.25)</li><li>Apple Pie (price: 0.35)</li><li>Rice Pudding (price: 0.35)</li><li>Strawberry Ice (price: 0.4)</li><li>Fresh Strawberry Ice Cream (price: 0.45)</li><li>Caramel Ice Cream (price: 0.45)</li><li>Frozen Log Plaza (price: 0.6)</li><li>Chestnut Coupe (price: 0.6)</li><li>Sherbet Panache (price: 0.4)</li><li>Port Du Salut Cheese (price: 0.45)</li><li>Brie Cheese (price: 0.45)</li><li>Swiss Cheese (price: 0.4)</li><li>Camembert Cheese (price: 0.45)</li><li>Bel Paese Cheese (price: 0.45)</li><li>Liederkranz Cheese (price: 0.45)</li><li>English Cheddar Cheese (price: 0.5)</li><li>Stilton Cheese (price: 0.6)</li><li>Roquefort Cheese (price: 0.5)</li><li>Gorgonzola Cheese (price: 0.5)</li><li>Honeydew Melon (price: 0.6)</li><li>Strawberries (price: 0.6)</li><li>Cantaloupe (price: 0.6)</li><li>Orange (price: 0.2)</li><li>Delicious Apple (price: 0.2)</li><li>King Orange (price: 0.2)</li><li>Grapes (price: 0.5)</li><li>Grapefruit (price: 0.4)</li><li>Pear (price: 0.2)</li><li>Voisin Potatoes (price: 0.5)</li><li>Plaza Potatoes (price: 0.5)</li><li>Biron Potatoes (price: 0.45)</li><li>Sweet Potatoes (price: 0.5)</li><li>Boiled Bermuda Potatoes (price: 0.3)</li><li>Dixie Potatoes (price: 0.5)</li><li>Juliette Salad (price: 0.6)</li><li>Royal Salad (price: 0.6)</li><li>Excelsior Salad (price: 0.6)</li><li>Hartford Salad (price: 0.6)</li><li>Rocheford Salad (price: 0.6)</li><li>Alligator Pear Salad (price: 0.7)</li><li>Fruit Salad (price: 0.6)</li><li>Lettuce Salad (price: 0.45)</li><li>Tomato Salad (price: 0.45)</li><li>Mixed Green Salad (price: 0.45)</li><li>Romaine Salad (price: 0.45)</li><li>Endive Salad (price: 0.45)</li><li>Escarole Salad (price: 0.45)</li><li>Chicory Salad (price: 0.45)</li><li>Lemon Custard Pie (price: 0.35)</li><li>Pudding A La Reine (price: 0.35)</li><li>Rhubarb Pie (price: 0.35)</li><li>Charlotte Russe (price: 0.4)</li><li>Mocha Layer Cake (price: 0.4)</li><li>French Pastry (1) (price: 0.25)</li><li>Apple Pie (price: 0.35)</li><li>Rice Pudding (price: 0.35)</li><li>Strawberry Ice (price: 0.4)</li><li>Caramel Ice Cream (price: 0.45)</li><li>Fresh Strawberry Ice Cream (price: 0.45)</li><li>Parfait Praline (price: 0.6)</li><li>Strawberry Mousse (price: 0.6)</li><li>Grenadine Sherbet (price: 0.4)</li><li>Port Du Salut Cheese (price: 0.45)</li><li>Swiss Cheese (price: 0.4)</li><li>Bel Paese Cheese (price: 0.45)</li><li>Brie Cheese (price: 0.45)</li><li>Camembert Cheese (price: 0.45)</li><li>English Cheddar Cheese (price: 0.5)</li><li>Stilton Cheese (price: 0.6)</li><li>Liederkranz Cheese (price: 0.45)</li><li>Gorgonzola Cheese (price: 0.5)</li><li>Roquefort Cheese (price: 0.5)</li><li>Honeydew Melon (price: 0.6)</li><li>Strawberries (price: 0.6)</li><li>Cantaloupe (price: 0.6)</li><li>Delicious Apple (price: 0.2)</li><li>Grapes (price: 0.5)</li><li>Pear (price: 0.2)</li><li>Orange (price: 0.2)</li><li>Grapefruit (price: 0.4)</li><li>King Orange (price: 0.2)</li><li>Cherry Stone Clams (price: 0.5)</li><li>Soups</li><li>Chicken Okra (price: 0.5)</li><li>St. Germain (price: 0.4)</li><li>Tomato (price: 0.4)</li><li>Cream Of Barley Aux Perles Du Nizam (price: 0.5)</li><li>Florida With Profiterole Virginienne (price: 0.6)</li><li>Jellied Consommes Madrilène, Chicken, Beef Or Gumbo, Cup (price: 0.4)</li><li>Fish</li><li>Boiled Kennebec Salmon, Sauce Hollandaise (price: 1.1)</li><li>Supreme Of Sole A La Plaza (price: 0.9)</li><li>Brook Trout A La Tivoli (price: 1.1)</li><li>Patty Of Frogs' Legs With Mushrooms Newburg (price: 1.25)</li><li>Sea Bass Saute Dauphine (price: 1.1)</li><li>Grilled Bluefish With Cucumber Vernon (price: 1.1)</li><li>Planked Chicken Halibut Nivernaise (price: 1.1)</li><li>Filet Of Kingfish Czarine (price: 1.1)</li><li>Soft Shell Crabs Rissolés With Almonds And Apples (price: 1.25)</li><li>Boneless Shad And Roe Meuniere A La Vichy (price: 1.25)</li><li>Baked Lobster In Shell Cardinal (1/2) (price: 1.5)</li><li>To Order</li><li>Poussin De Serre A La Washington (price: 2.25)</li><li>Mousseline Of Ham Florentine (price: 1.1)</li><li>Calf's Head A L'huile (price: 0.9)</li><li>Milk Fed Chicken Saute Bordelaise (1/2) (price: 1.75)</li><li>Turban De Cretes Et Rognons De Coq Toulousaine (price: 1.25)</li><li>Bouchee Montglas (price: 1.25)</li><li>Imperial Squab En Casserole Turner (price: 2.0)</li><li>Noisette De Pre Sale Rossini (price: 1.5)</li><li>Grilled Fresh Mushrooms On Toast With Ham Maitre D'hotel (price: 1.0)</li><li>Delmonico Steak à La Moêlle (price: 2.25)</li><li>Desserts</li><li>Hot Apple Charlotte (price: 0.4)</li><li>Cold Almond Pudding (price: 0.35)</li><li>Soufflé Saxon (price: 0.75)</li><li>Cherries Jubilee (price: 0.65)</li><li>Bavaroise Apricotine (price: 0.4)</li><li>Rice Pudding (price: 0.35)</li><li>Apple Pie (price: 0.35)</li><li>French Pastry (1) (price: 0.25)</li><li>Ice Creams Fresh Strawberry Or Caramel (price: 0.45)</li><li>Strawberry Ice (price: 0.4)</li><li>Sherbet Panache (price: 0.4)</li><li>Chestnut Coupe (price: 0.6)</li><li>Frozen Log Plaza (price: 0.6)</li><li>Cheese Camembert Or Brie (price: 0.45)</li><li>Swiss (price: 0.4)</li><li>Port Du Salut Or Bel Paese (price: 0.45)</li><li>Roquefort Or Gorgonzola (price: 0.5)</li><li>Stilton (price: 0.6)</li><li>Liederkranz (price: 0.45)</li><li>English Cheddar (price: 0.5)</li><li>Fruits Cantaloupe (price: 0.6)</li><li>Honeydew Melon (price: 0.6)</li><li>Strawberries (price: 0.6)</li><li>King Orange (price: 0.2)</li><li>Grapefruit (price: 0.4)</li><li>Orange, Delicious Apple Or Pear (price: 0.2)</li><li>Grapes (price: 0.5)</li><li>Chicken Halibut A La Venitienne (price: 1.1)</li><li>Boston Rock Cod Saute Lyonnaise (price: 0.9)</li><li>Filet Of Kingfish, Laperouse (price: 1.1)</li><li>Supreme Of Sole Vladimir (price: 0.9)</li><li>Brook Trout A La Beaucaire (price: 1.1)</li><li>Sea Bass Saute Cleopatra (price: 1.1)</li><li>Crab Meat Cakes A La Hoyt (price: 1.25)</li><li>Grenadin Of Salmon Petit Trianon (price: 1.25)</li><li>Boneless Shad And Roe, Sauce Raifort, Bacon, Potatoes Bataille (price: 1.25)</li><li>Frogs' Legs Bercy With Rice Pilaw (price: 1.25)</li><li>Cold Chicken Lobster, Sauce Vincent (price: 1.5)</li><li>Prime Rib Of Beef With Potatoes Macaire And Stuffed Tomato (price: 1.25)</li><li>Smothered Squab Chicken A La Cote D'azur (1/2) (price: 1.5)</li><li>Sweet Potatoes (price: 0.5)</li><li>Biron Potatoes (price: 0.45)</li><li>Boiled Bermuda Potatoes (price: 0.3)</li><li>Plaza Potatoes (price: 0.5)</li><li>Dixie Potatoes (price: 0.5)</li><li>Voisin Potatoes (price: 0.5)</li><li>Louisette Salad (price: 0.6)</li><li>Lettuce, Tomato And Cucumber Salad (price: 0.6)</li><li>Kuroki Salad (price: 0.6)</li><li>Rocheford Salad (price: 0.6)</li><li>Alligator Pear Salad (price: 0.7)</li><li>Fruit Salad (price: 0.6)</li><li>Escarole Salad (price: 0.45)</li><li>Lettuce Salad (price: 0.45)</li><li>Romaine Salad (price: 0.45)</li><li>Endive Salad (price: 0.45)</li><li>Chicory Salad (price: 0.45)</li><li>Tomato Salad (price: 0.45)</li><li>Mixed Green Salad (price: 0.45)</li><li>Farina Pudding, Peach Sauce (price: 0.35)</li><li>Strawberry Meringue Pie (price: 0.35)</li><li>Pear Pie (price: 0.35)</li><li>Cheese Cake (price: 0.4)</li><li>Savarin Curacao (price: 0.25)</li><li>Rice Pudding (price: 0.35)</li><li>Apple Pie (price: 0.35)</li><li>French Pastry (1) (price: 0.25)</li><li>Fresh Strawberry Ice Cream (price: 0.45)</li><li>Caramel Ice Cream (price: 0.45)</li><li>Strawberry Ice (price: 0.4)</li><li>Grenadine Sherbet (price: 0.4)</li><li>Strawberry Mousse (price: 0.6)</li><li>Parfait Praline (price: 0.6)</li><li>Brie (price: 0.45)</li><li>Swiss Cheese (price: 0.4)</li><li>Camembert Cheese (price: 0.45)</li><li>Port Du Salut Cheese (price: 0.45)</li><li>Bel Paese Cheese (price: 0.45)</li><li>Roquefort Cheese (price: 0.5)</li><li>Stilton Cheese (price: 0.6)</li><li>Gorgonzola Cheese (price: 0.5)</li><li>Liederkranz Cheese (price: 0.45)</li><li>English Cheddar Cheese (price: 0.5)</li><li>Cantaloupe (price: 0.6)</li><li>Honeydew Melon (price: 0.6)</li><li>Strawberries (price: 0.6)</li><li>Grapefruit (price: 0.4)</li><li>Grapes (price: 0.5)</li><li>Orange (price: 0.2)</li><li>Delicious Apple (price: 0.2)</li><li>Pear (price: 0.2)</li><li>King Orange (price: 0.2)</li><li>Tomato Juice Cocktail (price: 0.35)</li><li>Salami (price: 0.5)</li><li>Chicken Okra Soup (price: 0.5)</li><li>St. Germain Soup (price: 0.4)</li><li>Tomato Soup (price: 0.4)</li><li>Stuffed Brook Trout Polonaise (price: 1.1)</li><li>Boiled Live Codfish, Egg Sauce (price: 0.9)</li><li>Planked Boneless Shad A La Hoffman (price: 1.25)</li><li>Kingfish Saute Florida (price: 1.1)</li><li>Soft Shell Crabs, Belle Meuniere (price: 1.25)</li><li>Supreme Of Sole Amelie (price: 0.9)</li><li>Lobster Excelsior (1/2) (price: 1.5)</li><li>Grilled Bluefish, Tomato Relish (price: 1.1)</li><li>Filet Of Sea Bass Breval (price: 1.1)</li><li>Patty Of Frogs' Legs Maryland (price: 1.25)</li><li>Darne Of Salmon, Imperatrice (price: 1.25)</li><li>Halibut Steak Meuniere A L'orange (price: 1.1)</li><li>Roast Rack And Saddle Of Baby Lamb, Boulangere, Creamed Asparagus (price: 1.75)</li><li>Glazed Sugar Cured Ham With Candied Sweet Potatoes, Whole Spinach (price: 1.1)</li><li>Frincandeau Of Milk Veal, National (price: 1.25)</li><li>Petite Tournedo Saute Samaritaine (price: 1.75)</li><li>Grilled Kernel Of Sweetbread With Heart Of Artichoke Da Gama (price: 1.5)</li><li>Fried Squab Chicken A La Louisiana (1/2) (price: 1.5)</li><li>Quenelle Of Capon, Sauce Archiduc With Puree Of Peas (price: 1.25)</li><li>Poussin De Serre A La Souvaroff (price: 2.25)</li><li>Boneless Royal Squab A La Washington (price: 2.0)</li><li>Biron Potatoes (price: 0.45)</li><li>Boiled Bermuda Potatoes (price: 0.3)</li><li>Plaza Potatoes (price: 0.5)</li><li>Dixie Potatoes (price: 0.5)</li><li>Sweet Potatoes (price: 0.5)</li><li>Voisin Potatoes (price: 0.5)</li><li>Knickerbocker Salad (price: 0.6)</li><li>Lettuce, Orange And Grapefruit Salad (price: 0.6)</li><li>Blackstone Salad (price: 0.6)</li><li>Fruit Salad (price: 0.6)</li><li>Rocheford Salad (price: 0.6)</li><li>Alligator Pear Salad (price: 0.7)</li><li>Escarole Salad (price: 0.45)</li><li>Endive Salad (price: 0.45)</li><li>Lettuce Salad (price: 0.45)</li><li>Chicory Salad (price: 0.45)</li><li>Romaine Salad (price: 0.45)</li><li>Mixed Green Salad (price: 0.45)</li><li>Tomato Salad (price: 0.45)</li><li>Hot Semoulina Pudding (price: 0.35)</li><li>Cold Cabinet Pudding (price: 0.35)</li><li>Fresh Pear Bourdaloue (price: 0.4)</li><li>Orange Souffle (price: 0.75)</li><li>Lemon Jelly (price: 0.35)</li><li>Rice Pudding (price: 0.35)</li><li>French Pastry (1) (price: 0.25)</li><li>Apple Pie (price: 0.35)</li><li>Fresh Strawberry Ice Cream (price: 0.45)</li><li>Caramel Ice Cream (price: 0.45)</li><li>Strawberry Ice (price: 0.4)</li><li>Sherbet Panache (price: 0.4)</li><li>Chestnut Coupe (price: 0.6)</li><li>Frozen Log Plaza (price: 0.6)</li><li>Camembert Cheese (price: 0.45)</li><li>Swiss Cheese (price: 0.4)</li><li>Brie Cheese (price: 0.45)</li><li>Port Du Salut Cheese (price: 0.45)</li><li>Bel Paese Cheese (price: 0.45)</li><li>Roquefort Cheese (price: 0.5)</li><li>Stilton Cheese (price: 0.6)</li><li>Liederkranz Cheese (price: 0.45)</li><li>Gorgonzola Cheese (price: 0.5)</li><li>English Cheddar Cheese (price: 0.5)</li><li>Honeydew Melon (price: 0.6)</li><li>Cantaloupe (price: 0.6)</li><li>Strawberries (price: 0.6)</li><li>Grapefruit (price: 0.4)</li><li>Grapes (price: 0.5)</li><li>King Orange (price: 0.2)</li><li>Orange (price: 0.2)</li><li>Delicious Apple (price: 0.2)</li><li>Pear (price: 0.2)</li><li>Cocktail Sauce (price: 0.1)</li><li>Cherry Stone Clams (price: 0.5)</li><li>Little Neck Clams (price: 0.45)</li><li>Crab Flake Cocktail (price: 0.75)</li><li>Sea Food Cocktail Plaza (price: 1.0)</li><li>Clam Juice Cocktail (price: 0.35)</li><li>Shrimp Cocktail (price: 0.75)</li><li>Tomato Juice Cocktail (price: 0.35)</li><li>Shrimp Cocktail (price: 0.75)</li><li>Hors D'oeuvres</li><li>Pineapple Paradise (price: 0.75)</li><li>Orange, Grapefruit, Melon Or Fruit Supreme (price: 0.65)</li><li>Fillet Of Herring (price: 0.5)</li><li>Petit Artichoke Mariniere (price: 0.5)</li><li>Smoked Salmon (price: 0.75)</li><li>Tomato Monagasque (price: 0.75)</li><li>Plaza Appetizer (price: 1.25)</li><li>Anchovy Canape (price: 0.6)</li><li>Stuffed Celery (price: 0.5)</li><li>Hors D'oeuvre Variés</li><li>Salami (price: 0.5)</li><li>Antipasto (price: 0.5)</li><li>Westphalia Ham (price: 1.25)</li><li>Maquereau Au Vin Blanc (price: 0.5)</li><li>Chicken Okra Soup (price: 0.5)</li><li>Tomato Soup (price: 0.4)</li><li>St. Germain (price: 0.4)</li><li>Julienne Mongole (price: 0.5)</li><li>Essence De Tomate With Egg Filets (price: 0.4)</li><li>Jellied Comsommes Madrilene, Chicken, Beef Or Gumbo (price: 0.4)</li><li>Scrambled Eggs With Mushrooms (price: 0.8)</li><li>Eggs En Cocotte Café Anglais (price: 0.5)</li><li>Omlette Creole (price: 0.8)</li><li>Eggs Poached, Comtesse (price: 0.55)</li><li>Eggs Mollet à L'oseille (price: 0.5)</li><li>Boston Scrod Vendome (price: 0.9)</li><li>Creamed Finnan Haddie A La Kitchen (price: 0.9)</li><li>Brook Trout A La Vatel (price: 1.1)</li><li>Boneless Shad And Roe Saute Mascotte (price: 1.25)</li><li>Filet Of Sole Normande (price: 0.9)</li><li>Soft Shell Crabs Under Glass Maryland (price: 1.25)</li><li>Bluefish Epicurienne (price: 1.1)</li><li>Fried Frogs' Legs With Bacon, Sauce Orly (price: 1.25)</li><li>Supreme Of Sea Bass Florentine (price: 1.1)</li><li>Chicken Halibut Marseillaise (price: 1.1)</li><li>Cold Chicken Lobster Remoulade (price: 1.5)</li><li>Cold Salmon A L'espagnole (price: 1.25)</li><li>Prime Rib Of Beef With Yorkshire Pudding And New Succotash (price: 1.25)</li><li>Grilled Milk Veal Chop, Continental (price: 1.25)</li><li>Squab Chicken Pot Pie à La Plaza (price: 1.5)</li><li>Deerfoot Sausages Gastronome (price: 0.9)</li><li>Noisette Of Spring Lamb Salvandi (price: 1.5)</li><li>Assorted Fresh Vegetables In Bordure Gratinée (price: 1.25)</li><li>Macaroni Caruso (price: 0.9)</li><li>Gnocchi Romaine (price: 0.5)</li><li>Spaghetti A La Milanaise (price: 0.75)</li><li>Pilaw Of Duck Livers Bordelaise (price: 0.9)</li><li>Royal Squan En Casserole Beaulieu (price: 2.0)</li><li>Supreme Of Guinea Hen, Metternick (price: 1.75)</li><li>Arroz Con Pollo Catalane (price: 1.75)</li><li>Baby Lamb Steak Saute Nicoise (price: 2.0)</li><li>Vol Au Vent Of Calf's Brains Poulette (price: 1.0)</li><li>Poussin De Serre A La Washington (price: 2.25)</li><li>Small Steak En Casserole Nivernaise (price: 2.25)</li><li>Fresh Mushrooms On Toast With Bacon, Maitre D'hotel (price: 1.0)</li><li>Beets In Butter (price: 0.5)</li><li>Cauliflower (price: 0.7)</li><li>Jersey Asparagus (price: 0.9)</li><li>Lima Beans (price: 0.6)</li><li>String Beans (price: 0.6)</li><li>Carrots Vichy (price: 0.5)</li><li>Succotash Plaza (price: 0.65)</li><li>New Peas (price: 0.6)</li><li>Stewed Okra (price: 0.6)</li><li>Artichoke (price: 0.6)</li><li>Artichoke (price: 0.6)</li><li>Braised Lettuce (price: 0.6)</li><li>Braised Celery (price: 0.6)</li><li>Creamed Spinach (price: 0.6)</li><li>Stewed Fresh Tomatoes (price: 0.5)</li><li>White Squash (price: 0.5)</li><li>Hubbard Squash (price: 0.5)</li><li>Fried Egg Plant (price: 0.5)</li><li>Mashed Yellow Turnips (price: 0.6)</li><li>Small Onions In Cream (price: 0.6)</li><li>Potatoes</li><li>Biron Potatoes (price: 0.45)</li><li>Boiled Bermuda Potatoes (price: 0.3)</li><li>Plaza Potatoes (price: 0.5)</li><li>Sweet Potatoes (price: 0.5)</li><li>Dixie Potatoes (price: 0.5)</li><li>Voisin Potatoes (price: 0.5)</li><li>Lettuce, Celery And Pimentos Salad (price: 0.6)</li><li>Hartford Salad (price: 0.6)</li><li>Bonnie Brae Salad (price: 0.6)</li><li>Rocheford Salad (price: 0.6)</li><li>Fruit Salad (price: 0.6)</li><li>Alligator Pear Salad (price: 0.7)</li><li>Mixed Green Salad (price: 0.45)</li><li>Escarole Salad (price: 0.45)</li><li>Endive Salad (price: 0.45)</li><li>Chicory Salad (price: 0.45)</li><li>Romaine Salad (price: 0.45)</li><li>Tomato Salad (price: 0.45)</li><li>Lettuce Salad (price: 0.45)</li><li>Boston Cream Pie (price: 0.35)</li><li>Bread And Butter Pudding (price: 0.35)</li><li>Peach Pie (price: 0.35)</li><li>Old Fashioned Strawberry Short Cake (price: 0.65)</li><li>Black Cherry Tart (price: 0.4)</li><li>Apple Pie (price: 0.35)</li><li>Rice Pudding (price: 0.35)</li><li>French Pastry (1) (price: 0.25)</li><li>Fresh Strawberry Ice Cream (price: 0.45)</li><li>Strawberry Ice (price: 0.4)</li><li>Caramel Ice Cream (price: 0.45)</li><li>Lemon Sherbet (price: 0.4)</li><li>Vanilla Mousse, Hot Chocolate Sauce (price: 0.6)</li><li>Parfait Tosca (price: 0.6)</li><li>Camembert Cheese (price: 0.45)</li><li>Swiss Cheese (price: 0.4)</li><li>Port Du Salut Cheese (price: 0.45)</li><li>Brie Cheese (price: 0.45)</li><li>Bel Paese Cheese (price: 0.45)</li><li>Roquefort Cheese (price: 0.5)</li><li>Gorgonzola Cheese (price: 0.5)</li><li>Stilton Cheese (price: 0.6)</li><li>English Cheddar Cheese (price: 0.5)</li><li>Liederkranz Cheese (price: 0.45)</li><li>Honeydew Melon (price: 0.6)</li><li>Strawberries (price: 0.6)</li><li>Cantaloupe (price: 0.6)</li><li>Grapes (price: 0.5)</li><li>Orange (price: 0.2)</li><li>Grapefruit (price: 0.4)</li><li>Pear (price: 0.2)</li><li>Delicious Apple (price: 0.2)</li><li>King Orange (price: 0.2)</li></ul>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://menus.nypl.org/menu_pages/55739",
"items": [
{
"itemType": "document",
"title": "Legal Sea Foods menu",
"creators": [],
"date": "1998-01-26",
"callNumber": "1998-0005_wotm",
"extra": "genre: Restaurant menu\nRestaurant Location: Legal Sea Foods\nPhysical Description: 37.5x23 folded; 37.5x46cm open",
"libraryCatalog": "New York Public Library Menu Collection",
"url": "http://menus.nypl.org/menu_pages/55736",
"attachments": [],
"tags": [],
"notes": [
{
"note": "<h1>Dishes</h1><ul><li>Cherrystone Clams. Six On The Half Shell...With Any Of The Littleneck Garnishes (price: 6.95)</li><li>Oysters. Six On The Half Shell...Several Varieties Available...With Your Choice Of Lemon And Pepper, Champagne Migonette, Grated Horseradish, Green Tabasco Or Cocktail Sauce (price: 8.95)</li><li>Littleneck Clams. Eight On The Half Shell...With Your Choice Of Lemon And Horseradish, Lime And Chile Salsa, Green Tabasco Or Cocktail Sauce (price: 7.95)</li><li>Steamers With Drawn Butter (price: 9.95)</li><li>Mussels With Garlic And White Wine (price: 8.95)</li><li>Mussels With Fragrant Seafood Sauce (price: 8.95)</li><li>Baltimore Peel N' Eat Shrimp (price: 9.95)</li><li>Legal's New England Clam Chowder. Served At The Past Five Presidential Inaugurations And Boston's Fenway Park, Too! (price: 3.5- 4.25)</li><li>Rhode Island Red Clam Chowder (price: 3.5- 4.25)</li><li>Fish Chowder (price: 3.95- 4.95)</li><li>Fried Smelts. Butterflied And Boneless (price: 4.95)</li><li>C Bar Coconut Shrimp. With Ginger Orange Sauce (price: 8.95)</li><li>Shrimp Wontons. Steamed Or Fried (price: 6.95)</li><li>Fried Oysters. With Cassia Salt And Seaweed Salad (price: 9.95)</li><li>Legal's Smoked Bluefish Pate. The Original...Rolled In A Walnut And Herb Crust (price: 5.95)</li><li>Onion Strings. Thinly Sliced, Battered And Fried (price: 3.95)</li><li>Kung Pao Chicken Wings. Spicy...Served With Blue Cheese (price: 6.95)</li><li>Rhode Island Fried Calamari. Hot Peppers & Garlic (price: 7.95)</li><li>Mussels Au Gratin. With Garlic (price: 5.95- 9.95)</li><li>Oysters Legal. Baked With Spinach, Cheese & Crumbs (price: 9.95)</li><li>Jonah Crab Claws. On Ice (price: 9.95)</li><li>Smoked Salmon. Thinly Sliced...Pumpernickle Toast (price: 11.95)</li><li>Maryland Crab Cake. With Apple And Mesclun Salad, Cider Mustard Vinaigrette (price: 10.95)</li><li>Clam Fritters. With Bacon...Roasted Red Pepper Sauce. Great With Chowder! (price: 5.95)</li><li>Shrimp Cocktail (price: 8.95)</li><li>House Salad. A Mix Of Romaine And Mesclun With Red Onions, Tomatoes And Cucumbers...Choice Of Dressing (price: 3.5)</li><li>Caesar Salad (price: 4.95)</li><li>Winter Salad. Endive, Pear And Maytag Blue Cheese With Toasted Walnuts (price: 5.95)</li><li>Seafood Antipasto. Grilled Shrimp, Clams, Mussels And Calamari...With Greens, Provolone Cheese And Olives...Tomato Vinaigrette (price: 14.95)</li><li>Warm Marinated And Grilled Calamari. With Grilled Onions And White Beans (price: 8.95)</li><li>Steamed Vegetables (price: 3.95)</li><li>Steamed Broccoli...With Or Without Cheese (price: 3.95)</li><li>Mashed Potatoes (price: 2.25)</li><li>French Fries (price: 2.25)</li><li>Sugar Snap Peas...Oyster Sauce (price: 3.95)</li><li>Baked Idaho Potato (price: 2.25)</li><li>Rice Pilaf With Orzo (price: 2.25)</li><li>Vegetable Of The Day (price: 2.25)</li><li>Onion Strings (price: 2.25)</li><li>Jasmine Rice (price: 2.25)</li><li>Vegetable Slaw (price: 2.25)</li><li>Lobster Bake. Steamed 1 1.25 Lb Lobster, Steamers, Mussels, Corn On Th Cob, And A Cup Of Clam Chowder...With One Side (price: 34.95)</li><li>Steamed Lobster (price: 19.95- 39.95)</li><li>Baked Stuffed Lobster With Buttery Crabmeat Stuffing (price: 22.95- 44.95)</li><li>Salmon Fillet (price: 18.95)</li><li>Tuna. Prepared Medium Rare (price: 19.95)</li><li>Assorted Dinner. Shrimp, Scallops & Three Cuts Of Fish (price: 19.95)</li><li>Rainbow Trout (price: 12.95)</li><li>Sirloin Steak 12 Oz. (price: 18.95)</li><li>Bluefish. Also Available Baked With Mustard Sauce (price: 11.95)</li><li>Arctic Char (price: 19.95)</li><li>Filet Mignon 8 Oz. (price: 22.95)</li><li>Haddock Loin (price: 16.95)</li><li>Skewered Shrimp (price: 18.95)</li><li>Chicken Breast (price: 13.95)</li><li>Mahi Mahi (price: 17.95)</li><li>Sea Scallops (price: 19.95)</li><li>Homemade Seafood Sausage. Made With Shrimp, Salmon And White Fish...Served With Savoy Cabbage And Mashed Potatoes. (price: 16.95)</li><li>Portuguese Fisherman's Stew. Cod, Mussels, Clams And Chorizo In A Saffron Tomato Broth...Garlick Toasts (price: 14.95)</li><li>Swordfish. Grilled And Served With Sauteed Cherry Tomatoes, Rice Pilaf And Cold Cucumber Sauce (price: 22.95)</li><li>\"Scampi\". Shrimp And Garlic With White Wine, Tomatoes And Mushrooms Over Linguine (price: 17.95)</li><li>Classic Boston Scrod. Baked With Buttery Bread Crumbs...With Seasonal Vegetables And Choice Of One Side (price: 14.95)</li><li>C Bar Brazilian Red Snapper Fillet. Cooked With Coconut And Cilantro (price: 18.95)</li><li>Seafood Casserole. Scallops, Shrimp, Lobster And White Fish...\"Au Gratin\"...Choice Of One Side (price: 21.95)</li><li>Flounder Fillet. Plain, Simple And Delicious...Broiled Or Baked With Buttery Bread Crumbs...With Seasonal Vegetables And Choice Of One Side (price: 17.95)</li><li>Linguini With White Clam Sauce. Lots Of Whole And Chopped Clams, Garlic, Parmesan, Herbs And Butter (price: 15.95)</li><li>Jasmine Special. Shrimp And Broccoli Steamed Over Jasmine Rice...Melted Monterey Jack Cheese (price: 15.95)</li><li>Salmon Fillet With Chinese Fruit Sauce Or Fragrant Seafood Sauce. With Sugar Snap Peas And Jasmine Rice (price: 15.95)</li><li>Baked Stuffed Shrimp. Baked With A Buttery Crabmeat Stuffing...Choice Of One Side (price: 17.95)</li><li>Vegetarian Curried Noodles With Small Shrimp. Chinese Egg Noodles Stir Fried With Leeks, Bok Choi, Eggplant And Tofu (price: 13.95)</li><li>Vegetarian Curried Noodles. Chinese Egg Noodles Stir Fried With Leeks, Bok Choi, Eggplant And Tofu (price: 10.95)</li><li>Spicy Shandong Baked Bluefish. With Sugar Snap Peas And Jasmine Rice (price: 12.95)</li><li>\"Smoke Roasted\" Salmon Cold Plate. Cooked And Chilled Smoked Salmon From Maine With Roasted Red Pepper Sauce, Capers, Coucous Salad, Pickled Red Onions, And Hard Boiled Egg (price: 13.95)</li><li>Haddock (price: 14.95)</li><li>Calamari. Regular Or Spicy (price: 11.95)</li><li>Scrod (price: 14.95)</li><li>Sea S Callops (price: 15.95)</li><li>Fish & Chips. Regular Or Spicy (price: 11.95)</li><li>Fisherman's Platter. Shrimp, Clam Fritters, Scallops, Clams & Haddock (price: 19.95)</li><li>Smelts (price: 9.95)</li><li>Maine Clams (price: 15.95)</li><li>Sole Flakes (price: 15.95)</li><li>Arctic Char (price: 14.95)</li><li>Rainbow Trout (price: 11.95)</li><li>Skewered Shrimp (price: 13.95)</li><li>Bluefish (price: 7.95)</li><li>Shrimp Wontons. Fried Or Steamed...With Snap Peas And Jasmine Rice (price: 8.95)</li><li>\"Smoke Roasted\" Salmon Cold Plate. Cooked And Chilled Smoked Salmon From Maine With Roasted Red Pepper Sauce, Capers, Coucous Salad, Pickled Red Onions, And Hard Boiled Egg (price: 13.95)</li><li>Trout Provencal. Sauteed With Diced Tomatoes, Mushrooms And Garlic...With Rice (price: 11.95)</li><li>Caesar Salad With Cajun Shrimp. Fresh Romaine Tossed With Ceasar Drissing, Croutons (price: 13.95)</li><li>\"Scampi\" Shrimp And Garlic With White Wine, Tomatoes And Mushrooms Over Linguine (price: 11.95)</li><li>Gumbo. Hearty & Spicy...Shrimp, Scallps, Pollock...Cajun Andouille And Tasso...Jasmine Rice (price: 10.95)</li><li>Jasmine Special. Shrimp And Broccoli Steamed Over Jasmine Rice...Melted Monterey Jack Cheese (price: 10.95)</li><li>Mussels Fra'diavolo. Mussels In A Zesty Tomato Sauce Over Linguine (price: 6.95)</li><li>Classic Boston Scrod. Baked With Buttery Bread Crumbs...With Choice Of One Side (price: 9.95)</li><li>Fish & Chips. Regular Or Spicy (price: 8.95)</li><li>Lobster Roll. Fresh Lobster Meat From A Stemed 1 1.25 Lb. Lobster...Cold, Creamy Lobster Salad In A Toasted Bun...With French Fries (price: 16.95)</li><li>Crab Roll. Maine Crab Salad In A Warm Buttery New England Bun...With Fries (price: 10.95)</li><li>Clam Fritters & Chowder. Served With Roasted Red Pepper Sauce...A Great Combination (price: 7.95)</li><li>Grilled Chicken Sandwich. Topped With Melted Cheese And Crisp Bacon (price: 8.95)</li><li>Smoked Salmon Sandwich. Fresh Egg Bread...Mustard Sauce, Sliced Tomatoes, Onions And Capers (price: 8.95)</li><li>Po'boy Sandwich. Fried Oysters, Lettuce, Tomato & Spicy Mayo (price: 9.95)</li><li>Tuna Burger. Freshly Ground Tuna, Chili Paste, Crumbs And Spices (price: 9.95)</li></ul>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://menus.nypl.org/menu_pages/35364/explore",
"items": [
{
"itemType": "document",
"title": "American Asiatic Association menu",
"creators": [],
"date": "1906-02-03",
"abstractNote": "WINES INCLUDED; EVENT WAS 1P.M. MENU MORE APPROPIATE FOR LUNCH THAN BREAKFAST;",
"callNumber": "1906-126",
"extra": "genre: Restaurant menu\nRestaurant Location: American Asiatic Association\nPlace: MERCHANTS CLUB,NY\nPhysical Description: BOOKLET; ILLUS; 4.5X7;",
"libraryCatalog": "New York Public Library Menu Collection",
"url": "http://menus.nypl.org/menu_pages/35366",
"attachments": [],
"tags": [],
"notes": [
{
"note": "<h1>Dishes</h1><ul><li>Oysters</li><li>Cotuits</li><li>Clear Green Turtle Soup In Cups</li><li>Amontillado</li><li>Olives</li><li>Celery</li><li>Radishes</li><li>Filet Of Sea Bass, White Wine Sauce</li><li>Cucumber Salad</li><li>Carbonnieux 1889</li><li>Parisienne Potatoes</li><li>Noisettes Of Lamb, Bonnefoy</li><li>G. H. Mumm's Selected Brut</li><li>Fresh Artichokes, Sauce Hollandaise</li><li>Roast Chicken</li><li>Roast Squab</li><li>Salad Romaine</li><li>Ices</li><li>Assorted Cakes</li><li>Cheese</li><li>Fruit</li><li>Coffee</li></ul>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://menus.nypl.org/dishes/9512",
"items": "multiple"
},
{
"type": "web",
"url": "http://menus.nypl.org/search?utf8=%E2%9C%93&query=aspic",
"defer": true,
"items": "multiple"
}
]
/** END TEST CASES **/
100Bo An^https?://(www\.)?versobooks\.com/books//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Bo An
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
const isSubject = url.includes("subjects/");
if (isSubject && getSearchResults(doc, true)) {
return 'multiple';
}
else if (doc.querySelector('.edition-single--book-title')) {
return 'book';
} else {
return false;
}
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), (items) => {
if (!items) {
return true;
}
const articles = [];
for (const i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
return true;
});
}
else {
scrape(doc, url);
}
}
function getSearchResults(doc) {
let items = {};
let found = false;
const bookLinkEls = doc.querySelectorAll('.book-grid > .book-card');
Z.debug(bookLinkEls.length);
bookLinkEls.forEach((bookLinkEl) => {
const titleEl = bookLinkEl.querySelectorAll('div.book-card--title > a')[0];
const href = titleEl.href;
const title = titleEl.textContent;
items[href] = title;
if (found === false) {
found = true;
}
});
return found ? items : false;
}
function scrape(doc, _) {
const newItem = new Zotero.Item('book');
newItem.publisher = "Verso Books";
const title = text(doc, '.edition-single--book-title');
const subtitle = text(doc, '.edition-single--book-subtitle');
newItem.title = title + (subtitle ? `: ${subtitle}` : '');
const contributorsEls = doc.querySelectorAll('.edition-single--book-contributors > span');
contributorsEls.forEach((contributorEl) => {
const authors = contributorEl.querySelectorAll('a');
authors.forEach((authorEl) => {
let role = 'author';
const isAuthor = authorEl.href.includes('authors');
const isEditor = contributorEl.textContent.toLowerCase().includes('edited by');
if (isEditor) {
role = 'editor';
}
if (isAuthor) {
const authorFullName = authorEl.textContent;
newItem.creators.push(ZU.cleanAuthor(authorFullName, role, false));
}
});
// check if translator
const spanText = contributorEl.textContent;
const isTranslator = spanText.toLowerCase().includes('translated by');
if (isTranslator) {
const translatorName = spanText.replace('Translated by', '');
newItem.creators.push(ZU.cleanAuthor(translatorName, "translator", false));
}
});
const description = text(doc, '.edition-single--book-description');
if (description) {
newItem.abstractNote = description;
}
const detailsText = text(doc, '.edition-single--product-card > .details');
if (detailsText.length > 0) {
const detailsArray = detailsText.split('/');
const pages = detailsArray[0].replace('pages', '');
const date = detailsArray[1];
const ISBN = detailsArray[2];
if (pages) {
newItem.pages = pages;
}
if (date) {
newItem.date = ZU.strToISO(date);
}
if (ISBN) {
newItem.ISBN = ZU.cleanISBN(ISBN);
}
}
newItem.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.versobooks.com/books/subjects/35-feminism-amp-gender#browse",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.versobooks.com/books/3779-china-in-one-village",
"items": [
{
"itemType": "book",
"title": "China in One Village: The Story of One Town and the Changing World",
"creators": [
{
"firstName": "Liang",
"lastName": "Hong",
"creatorType": "author"
},
{
"firstName": "Emily",
"lastName": "Goedde",
"creatorType": "translator"
}
],
"date": "2021-06",
"ISBN": "9781839761775",
"abstractNote": "After a decade away from her ancestral family village, during which she became a writer and literary scholar in Beijing, Liang Hong started visiting her rural hometown in landlocked Henan Province. What she found was an extended family riven by the seismic changes in Chinese society and a village turned inside out by emigration, neglect, and environmental despoliation. Combining family memoir, literary observation, and social commentary, Liang’s by turns lyrically poetic and movingly raw investigation into the fate of her village became a bestselling book in China and brought her fame.\n\nFor many months, Liang walked the roads and fields of her village, recording the stories of her relatives—especially her irascible, unforgettable father—and talking to everyone from high government officials to the lowest of village outcasts. Across China, many saw in Liang’s riveting interviews with family members and childhood acquaintances a mirror of their own lives, and her observations about the way the greatest rural-to-urban migration of modern times has twisted the country resonated deeply. China in One Village tells the story of contemporary China through one clear-eyed, literary observer, one family, and one village.",
"libraryCatalog": "Verso Books",
"publisher": "Verso Books",
"shortTitle": "China in One Village",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.versobooks.com/books/3814-capitalism-and-the-camera",
"items": [
{
"itemType": "book",
"title": "Capitalism and the Camera: Essays on Photography and Extraction",
"creators": [
{
"firstName": "Kevin",
"lastName": "Coleman",
"creatorType": "editor"
},
{
"firstName": "Daniel",
"lastName": "James",
"creatorType": "editor"
}
],
"date": "2021-05",
"ISBN": "9781839760808",
"abstractNote": "Photography was invented between the publication of Adam Smith’s The Wealth of Nations and Karl Marx and Friedrich Engels’s The Communist Manifesto. Taking the intertwined development of capitalism and the camera as their starting point, the essays collected here investigate the relationship between capitalist accumulation and the photographic image, and ask whether photography might allow us to refuse capitalism’s violence—and if so, how?\n\nDrawn together in productive disagreement, the essays in this collection explore the relationship of photography to resource extraction and capital accumulation, from 1492 to the postcolonial; the camera’s potential to make visible critical understandings of capitalist production and society, especially economies of class and desire; and the ways the camera and the image can be used to build cultural and political counterpublics from which a democratic struggle against capitalism might emerge.\n\nWith essays by Ariella Aïsha Azoulay, Siobhan Angus, Kajri Jain, Walter Benn Michaels, T. J. Clark, John Paul Ricco, Blake Stimson, Chris Stolarski, Tong Lam and Jacob Emery.",
"libraryCatalog": "Verso Books",
"publisher": "Verso Books",
"shortTitle": "Capitalism and the Camera",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.versobooks.com/books/1508-yellow-peril",
"items": [
{
"itemType": "book",
"title": "Yellow Peril!: An Archive of Anti-Asian Fear",
"creators": [
{
"firstName": "John Kuo Wei",
"lastName": "Tchen",
"creatorType": "author"
},
{
"firstName": "Dylan",
"lastName": "Yeats",
"creatorType": "author"
}
],
"date": "2014-02",
"ISBN": "9781781681237",
"abstractNote": "The “yellow peril” is one of the oldest and most pervasive racist ideas in Western culture—dating back to the birth of European colonialism during the Enlightenment. Yet while Fu Manchu looks almost quaint today, the prejudices that gave him life persist in modern culture. Yellow Peril! is the first comprehensive repository of anti-Asian images and writing, and it surveys the extent of this iniquitous form of paranoia.\n\nWritten by two dedicated scholars and replete with paintings, photographs, and images drawn from pulp novels, posters, comics, theatrical productions, movies, propagandistic and pseudo-scholarly literature, and a varied world of pop culture ephemera, this is both a unique and fascinating archive and a modern analysis of this crucial historical formation.",
"libraryCatalog": "Verso Books",
"publisher": "Verso Books",
"shortTitle": "Yellow Peril!",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.versobooks.com/books/subjects/6-middle-east",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.versobooks.com/books/2930-poets-of-the-chinese-revolution",
"items": [
{
"itemType": "book",
"title": "Poets of the Chinese Revolution",
"creators": [
{
"firstName": "Chen",
"lastName": "Duxiu",
"creatorType": "author"
},
{
"firstName": "Chen",
"lastName": "Yi",
"creatorType": "author"
},
{
"firstName": "Mao",
"lastName": "Zedong",
"creatorType": "author"
},
{
"firstName": "Zheng",
"lastName": "Chaolin",
"creatorType": "author"
},
{
"firstName": "Gregor",
"lastName": "Benton",
"creatorType": "editor"
},
{
"firstName": "Feng",
"lastName": "Chongyi",
"creatorType": "editor"
}
],
"date": "2019-06",
"ISBN": "9781788734684",
"abstractNote": "The Chinese Revolution was a complex and protracted event staged by competing groups and individuals with different hopes and expectations. Its veterans included many poets, four of whom feature in this anthology. Poetry has played a different role in China—and in the Chinese Revolution—than in the West. In the Chinese tradition, poetry is collective and collaborative. But, in life, the four poets in this collection were entangled in opposition and, at times, regarded one another with bitter hostility.\n\nThe four poets, whose work is collected in English translation here alongside the Chinese originals, all wrote in the classical style, but their poetry was no less diverse than their politics. Chen Duxiu led China’s early cultural awakening before founding the Communist Party in 1921. Mao Zedong led the party to power in 1949. Zheng Chaolin, Chen Duxiu’s disciple and, like him, a convert to Trotskyism, spent thirty-four years in jail, first under the Nationalist regime and then under their Maoist nemeses. The guerrilla leader Chen Yi wrote flamboyant and descriptive poems in mountain bivouacs and in the heat of battle. Together, the four poets illustrate the complicated relationship between the Communist Revolution and Chinese cultural traditions.",
"libraryCatalog": "Verso Books",
"publisher": "Verso Books",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Sylvain Machefert^https?://www\.idref\.fr//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2018 Sylvain Machefert
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
var domain2translator = {
'www.sudoc.abes.fr': '1b9ed730-69c7-40b0-8a06-517a89a3a278',
'hal.archives-ouvertes.fr': 'f20f91fe-d875-47e7-9656-0abb928be472',
'archivesic.ccsd.cnrs.fr': 'dedcae51-073c-48fb-85ce-2425e97f128d',
'memsic.ccsd.cnrs.fr': '58ab2618-4a25-4b9b-83a7-80cd0259f896',
'catalogue.bnf.fr': '47533cd7-ccaa-47a7-81bb-71c45e68a74d',
'www.theses.fr': '3f73f0aa-f91c-4192-b0d5-907312876cb9',
'www.persee.fr': '951c027d-74ac-47d4-a107-9c3069ab7b48',
'oatao.univ-toulouse.fr': '951c027d-74ac-47d4-a107-9c3069ab7b48',
'pub.orcid.org': 'bc03b4fe-436d-4a1f-ba59-de4d2d7a63f7',
'dumas.ccsd.cnrs.fr': '951c027d-74ac-47d4-a107-9c3069ab7b48',
'publications-prairial.fr': '951c027d-74ac-47d4-a107-9c3069ab7b48',
'univoak.eu': '951c027d-74ac-47d4-a107-9c3069ab7b48',
'publications.ut-capitole.fr': '951c027d-74ac-47d4-a107-9c3069ab7b48',
'agritrop.cirad.fr': '951c027d-74ac-47d4-a107-9c3069ab7b48',
'explore.lib.uliege.be': 'cd669d1f-96b8-4040-aa36-48f843248399',
};
function getTranslatorFromDomain(domain) {
if (domain2translator[domain]) {
return domain2translator[domain];
}
/* Fallback for *.archives-ouvertes.fr */
if (domain.endsWith(".archives-ouvertes.fr")) {
return '951c027d-74ac-47d4-a107-9c3069ab7b48';
}
return false;
}
function detectWeb(doc, _url) {
if (getSearchResults(doc, true)) {
return "multiple";
}
Z.monitorDOMChanges(doc.getElementById("ref-liees-p"));
return false;
}
function getSearchResults(doc, checkOnly) {
var resultsTitle = ZU.xpath(doc, '//div[@id="perenne-references-docs"]/span[contains(@class, "detail_value")]');
var resultsHref = ZU.xpath(doc, '//div[@id="perenne-references-docs"]/span[contains(@class, "detail_label")]/a/@href');
var found = false;
var items = {};
for (let i = 0; i < resultsTitle.length; i++) {
var href = resultsHref[i].textContent;
// We need to replace the http://www.sudoc.fr/XXXXXX links are they are redirects and aren't handled correctly from subtranslator
href = href.replace(/http:\/\/www\.sudoc\.fr\/(.*)$/, "http://www.sudoc.abes.fr/xslt/DB=2.1//SRCH?IKT=12&TRM=$1");
var domain = urlToDomain(href);
if (getTranslatorFromDomain(domain)) {
if (checkOnly) return true;
found = true;
items[href] = resultsTitle[i].textContent;
}
else {
Z.debug("Not found : " + domain);
}
}
return found ? items : false;
}
function doWeb(doc, _url) {
Zotero.selectItems(getSearchResults(doc, false), function (selectedItems) {
if (!selectedItems) {
return;
}
var articles = [];
for (var i in selectedItems) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
// Orcid is the only case where we need to use an import translator, different behvior from previous ones
if (url.includes("pub.orcid.org")) {
// Idrefs contains orcid links with /works/ for which the content negotiation
// does not allow to get CSL results. Each link describes only one reference
// so we can safely replace /works/ by /work/. The last one allows content negotiation
url = url.replace("/works/", "/work/");
ZU.doGet(url, function (text) {
var translator = Zotero.loadTranslator("import");
translator.setTranslator("bc03b4fe-436d-4a1f-ba59-de4d2d7a63f7");// CSL JSON
translator.setString(text);
translator.translate();
}, undefined, undefined, { Accept: "application/vnd.citationstyles.csl+json" });
return;
}
var domain = urlToDomain(url);
var domainTranslator = getTranslatorFromDomain(domain);
if (domainTranslator) {
translator.setTranslator(domainTranslator);
}
else {
Z.debug("Undefined website");
return;
}
translator.setHandler('itemDone', function (obj, item) {
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.doWeb(doc, url);
});
}
function urlToDomain(url) {
return url.replace(/^https?:\/\/([^/]*).*/, "$1");
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.idref.fr/199676100",
"defer": true,
"items": "multiple"
},
{
"type": "web",
"url": "https://www.idref.fr/236948326",
"defer": true,
"items": "multiple"
},
{
"type": "web",
"url": "https://www.idref.fr/056894546",
"defer": true,
"items": "multiple"
}
]
/** END TEST CASES **/
99Philipp Zumstein// This is a temporary placeholder translator to fix the broken-identifier-lookup-until-restart-after-
// a-translator-rename problem that was fixed in https://github.com/zotero/zotero/commit/bde9a74f9db
// and https://github.com/zotero/zotero/commit/b8ad18e96d53.
function detectSearch(item) {
return false;
}
function doSearch(item) {}
100Guy Aglionbyhttps://(www\.)?mitpress\.mit\.edu/(mit-press-open|contributors|search|series|distribution|topics|forthcoming|best-sellers|books)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2019 Guy Aglionby
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/books/') && !url.includes('/series/') && !url.includes('/distribution/') && !url.includes('/imprint/')) {
return 'book';
}
else if (getSearchResults(doc, true)) {
return 'multiple';
}
return false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) === 'multiple') {
Zotero.selectItems(getSearchResults(doc, false), function (selected) {
if (selected) {
ZU.processDocuments(Object.keys(selected), scrape);
}
});
}
else {
scrape(doc);
}
}
function scrape(doc, url) {
let item = new Zotero.Item('book');
item.url = url;
item.place = 'Cambridge, MA, USA';
item.language = 'en';
item.date = ZU.xpathText(doc, '(//time[@property = "publishDate"]/@content)[1]');
item.ISBN = ZU.xpathText(doc, '(//span[@property = "isbn"])[1]');
item.numPages = ZU.xpathText(doc, '(//span[@property = "numPages"])[1]');
let abstract = doc.querySelector('div.book__blurb');
if (abstract) {
item.abstractNote = abstract.textContent.trim();
}
let title = ZU.xpathText(doc, '//h1[@class = "book__title"]').trim();
let editionRegex = /, (([\w ]+) edition( [\w ]+)?)/i;
let matchedEdition = title.match(editionRegex);
if (matchedEdition) {
item.edition = cleanEdition(matchedEdition[1]);
title = title.replace(matchedEdition[0], '');
}
let volumeRegex = /, volume (\d+)/i;
let matchedVolume = title.match(volumeRegex);
if (matchedVolume) {
item.volume = matchedVolume[1];
title = title.replace(matchedVolume[0], '');
}
let subtitle = ZU.xpathText(doc, '//h2[@class = "book__subtitle"]');
if (subtitle) {
subtitle = subtitle.trim();
item.title = [title, subtitle].join(': ');
}
else {
item.title = title;
}
const contributorTypes = [['By', 'author'], ['Translated by', 'translator'], ['Edited by', 'editor']];
let allContributors = ZU.xpath(doc, '//span[@class = "book__authors"]/p');
allContributors.forEach(function (contributorLine) {
contributorLine = contributorLine.textContent;
contributorTypes.forEach(function (contributorType) {
if (contributorLine.startsWith(contributorType[0])) {
let contributors = contributorLine.replace(contributorType[0], '').split(/ and |,/);
contributors.forEach(function (contributorName) {
item.creators.push(ZU.cleanAuthor(contributorName, contributorType[1]));
});
}
});
});
let series = ZU.xpathText(doc, '//p[@class = "book__series"]/a[contains(@href, "/series/")]');
if (series) {
item.series = series.trim();
}
let publisher = ZU.xpathText(doc, '//p[@class = "book__series"]/a[contains(@href, "/imprint/") or contains(@href, "/distribution/")]');
if (publisher) {
item.publisher = publisher.trim();
}
else {
item.publisher = 'MIT Press';
}
let openAccessUrl = ZU.xpathText(doc, '//div[contains(@class, "open-access")]/a/@href');
if (openAccessUrl) {
if (openAccessUrl.endsWith('.pdf') || openAccessUrl.endsWith('.pdf?dl=1')) {
item.attachments.push({
url: openAccessUrl,
title: 'Full Text PDF',
mimeType: 'application/pdf'
});
}
else {
item.attachments.push({
url: openAccessUrl,
title: 'Open Access',
mimeType: 'text/html'
});
}
}
let seriesURL = attr(doc, '.book__series a', 'href');
if (seriesURL) {
ZU.processDocuments(seriesURL, function (seriesDoc) {
let seriesEditors = text(seriesDoc, '.series__editors')
.split(/,| and /);
for (let seriesEditor of seriesEditors) {
let creator = ZU.cleanAuthor(seriesEditor, 'seriesEditor');
// sometimes series editors are also editors of individual
// volumes, and it doesn't make sense to include the same name
// twice. not an efficient approach but we're dealing with 4-5
// contributors max.
let duplicate = false;
for (let other of item.creators) {
if (other.firstName == creator.firstName && other.lastName == creator.lastName) {
duplicate = true;
}
}
if (!duplicate) {
item.creators.push(creator);
}
}
item.complete();
});
}
else {
item.complete();
}
}
function cleanEdition(text) {
if (!text) return text;
// from Taylor & Francis eBooks translator, slightly adapted
const ordinals = {
first: "1",
second: "2",
third: "3",
fourth: "4",
fifth: "5",
sixth: "6",
seventh: "7",
eighth: "8",
ninth: "9",
tenth: "10"
};
text = ZU.trimInternal(text).replace(/[[\]]/g, '');
// this somewhat complicated regex tries to isolate the number (spelled out
// or not) and make sure that it isn't followed by any extra info
let matches = text
.match(/^(?:(?:([0-9]+)(?:st|nd|rd|th)?)|(first|second|third|fourth|fifth|sixth|seventh|eighth|ninth|tenth))(?:\s?ed?\.?|\sedition)?$/i);
if (matches) {
let edition = matches[1] || matches[2];
edition = ordinals[edition.toLowerCase()] || edition;
return edition == "1" ? null : edition;
}
else {
return text;
}
}
function getSearchResults(doc, checkOnly) {
let rows = ZU.xpath(doc, '//ul[contains(@class, "results__list")]//a[@property = "name"]');
if (checkOnly) {
return rows.length > 0;
}
let items = {};
for (let i = 0; i < rows.length; i++) {
items[rows[i].href] = rows[i].text.trim();
}
return items;
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://mitpress.mit.edu/search?keywords=deep+learning",
"items": "multiple"
},
{
"type": "web",
"url": "https://mitpress.mit.edu/contributors/ian-goodfellow",
"items": "multiple"
},
{
"type": "web",
"url": "https://mitpress.mit.edu/books/series/adaptive-computation-and-machine-learning-series",
"items": "multiple"
},
{
"type": "web",
"url": "https://mitpress.mit.edu/books/imprint/bradford-book",
"items": "multiple"
},
{
"type": "web",
"url": "https://mitpress.mit.edu/books/distribution/urbanomic",
"items": "multiple"
},
{
"type": "web",
"url": "https://mitpress.mit.edu/books/elements-causal-inference",
"items": [
{
"itemType": "book",
"title": "Elements of Causal Inference: Foundations and Learning Algorithms",
"creators": [
{
"firstName": "Jonas",
"lastName": "Peters",
"creatorType": "author"
},
{
"firstName": "Dominik",
"lastName": "Janzing",
"creatorType": "author"
},
{
"firstName": "Bernhard",
"lastName": "Schölkopf",
"creatorType": "author"
},
{
"firstName": "Francis",
"lastName": "Bach",
"creatorType": "seriesEditor"
}
],
"date": "2017-11-29",
"ISBN": "9780262037310",
"abstractNote": "A concise and self-contained introduction to causal inference, increasingly important in data science and machine learning.",
"language": "en",
"libraryCatalog": "MIT Press Books",
"numPages": "288",
"place": "Cambridge, MA, USA",
"publisher": "MIT Press",
"series": "Adaptive Computation and Machine Learning series",
"shortTitle": "Elements of Causal Inference",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://mitpress.mit.edu/books/sciences-artificial-reissue-third-edition-new-introduction-john-laird",
"items": [
{
"itemType": "book",
"title": "The Sciences of the Artificial",
"creators": [
{
"firstName": "Herbert A.",
"lastName": "Simon",
"creatorType": "author"
}
],
"date": "2019-08-13",
"ISBN": "9780262537537",
"abstractNote": "Herbert Simon's classic work on artificial intelligence in the expanded and updated third edition from 1996, with a new introduction by John E. Laird.",
"edition": "Reissue Of The Third Edition With A New Introduction By John Laird",
"language": "en",
"libraryCatalog": "MIT Press Books",
"numPages": "256",
"place": "Cambridge, MA, USA",
"publisher": "MIT Press",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://mitpress.mit.edu/books/construction-site-possible-worlds",
"items": [
{
"itemType": "book",
"title": "Construction Site for Possible Worlds",
"creators": [
{
"firstName": "Amanda",
"lastName": "Beech",
"creatorType": "editor"
},
{
"firstName": "Robin",
"lastName": "Mackay",
"creatorType": "editor"
},
{
"firstName": "James",
"lastName": "Wiltgen",
"creatorType": "editor"
}
],
"date": "2020-08-11",
"ISBN": "9781913029579",
"abstractNote": "Perspectives from philosophy, aesthetics, and art on how to envisage the construction site of possible worlds.",
"language": "en",
"libraryCatalog": "MIT Press Books",
"numPages": "276",
"place": "Cambridge, MA, USA",
"publisher": "Urbanomic",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://mitpress.mit.edu/books/ribbon-olympias-throat",
"items": [
{
"itemType": "book",
"title": "The Ribbon at Olympia's Throat",
"creators": [
{
"firstName": "Michel",
"lastName": "Leiris",
"creatorType": "author"
},
{
"firstName": "Christine",
"lastName": "Pichini",
"creatorType": "translator"
}
],
"date": "2019-07-02",
"ISBN": "9781635900842",
"abstractNote": "Short fragments and essays that explore how a seemingly irrelevant aesthetic detail may cause the eruption of sublimity within the mundane.",
"language": "en",
"libraryCatalog": "MIT Press Books",
"numPages": "288",
"place": "Cambridge, MA, USA",
"publisher": "Semiotext(e)",
"series": "Semiotext(e) / Native Agents",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://mitpress.mit.edu/books/foundations-machine-learning-second-edition",
"items": [
{
"itemType": "book",
"title": "Foundations of Machine Learning",
"creators": [
{
"firstName": "Mehryar",
"lastName": "Mohri",
"creatorType": "author"
},
{
"firstName": "Afshin",
"lastName": "Rostamizadeh",
"creatorType": "author"
},
{
"firstName": "Ameet",
"lastName": "Talwalkar",
"creatorType": "author"
},
{
"firstName": "Francis",
"lastName": "Bach",
"creatorType": "seriesEditor"
}
],
"date": "2018-12-25",
"ISBN": "9780262039406",
"abstractNote": "A new edition of a graduate-level machine learning textbook that focuses on the analysis and theory of algorithms.",
"edition": "2",
"language": "en",
"libraryCatalog": "MIT Press Books",
"numPages": "504",
"place": "Cambridge, MA, USA",
"publisher": "MIT Press",
"series": "Adaptive Computation and Machine Learning series",
"attachments": [
{
"title": "Open Access",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://mitpress.mit.edu/books/collapse-volume-8",
"items": [
{
"itemType": "book",
"title": "Collapse: Casino Real",
"creators": [
{
"firstName": "Robin",
"lastName": "Mackay",
"creatorType": "editor"
}
],
"date": "2018-10-23",
"ISBN": "9780956775023",
"abstractNote": "An assembly of perspectives on risk, contingency, and chance—at the gaming table, in the markets, and in life.",
"language": "en",
"libraryCatalog": "MIT Press Books",
"numPages": "1020",
"place": "Cambridge, MA, USA",
"publisher": "Urbanomic",
"series": "Urbanomic / Collapse",
"shortTitle": "Collapse",
"volume": "8",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://mitpress.mit.edu/books/reinforcement-learning-second-edition",
"items": [
{
"itemType": "book",
"title": "Reinforcement Learning: An Introduction",
"creators": [
{
"firstName": "Richard S.",
"lastName": "Sutton",
"creatorType": "author"
},
{
"firstName": "Andrew G.",
"lastName": "Barto",
"creatorType": "author"
},
{
"firstName": "Francis",
"lastName": "Bach",
"creatorType": "seriesEditor"
}
],
"date": "2018-11-13",
"ISBN": "9780262039246",
"abstractNote": "The significantly expanded and updated new edition of a widely used text on reinforcement learning, one of the most active research areas in artificial intelligence.",
"edition": "2",
"language": "en",
"libraryCatalog": "MIT Press Books",
"numPages": "552",
"place": "Cambridge, MA, USA",
"publisher": "A Bradford Book",
"series": "Adaptive Computation and Machine Learning series",
"shortTitle": "Reinforcement Learning",
"attachments": [
{
"title": "Open Access",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://mitpress.mit.edu/books/architecture-and-action",
"items": [
{
"itemType": "book",
"title": "Architecture and Action",
"creators": [
{
"firstName": "J. Meejin",
"lastName": "Yoon",
"creatorType": "editor"
},
{
"firstName": "Irina",
"lastName": "Chernyakova",
"creatorType": "editor"
}
],
"date": "2019-07-02",
"ISBN": "9780998117065",
"abstractNote": "Projects and texts that address architecture's role in taking on complex global challenges including climate change, housing, migration, and social justice.",
"language": "en",
"libraryCatalog": "MIT Press Books",
"numPages": "350",
"place": "Cambridge, MA, USA",
"publisher": "SA+P Press",
"series": "Agendas in Architecture",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://mitpress.mit.edu/books/acquired-tastes",
"items": [
{
"itemType": "book",
"title": "Acquired Tastes: Stories about the Origins of Modern Food",
"creators": [
{
"firstName": "Benjamin R.",
"lastName": "Cohen",
"creatorType": "editor"
},
{
"firstName": "Michael S.",
"lastName": "Kideckel",
"creatorType": "editor"
},
{
"firstName": "Anna",
"lastName": "Zeide",
"creatorType": "editor"
},
{
"firstName": "Robert",
"lastName": "Gottlieb",
"creatorType": "seriesEditor"
},
{
"firstName": "Nevin",
"lastName": "Cohen",
"creatorType": "seriesEditor"
}
],
"date": "2021-08-17",
"ISBN": "9780262542913",
"abstractNote": "How modern food helped make modern society between 1870 and 1930: stories of power and food, from bananas and beer to bread and fake meat.",
"language": "en",
"libraryCatalog": "MIT Press Books",
"numPages": "290",
"place": "Cambridge, MA, USA",
"publisher": "MIT Press",
"series": "Food, Health, and the Environment",
"shortTitle": "Acquired Tastes",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Abe Jellinek^https://scholar\.archive\.org//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/search?') && getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.biblio-record');
for (let row of rows) {
let href = attr(row, '.external-identifiers a[href*="fatcat.wiki/"]', 'href');
if (!href) href = attr(row, '.dropdown-menu a[title*="fulltext"]', 'href');
let title = ZU.trimInternal(text(row, '.biblio-title'));
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
if (url.includes('fatcat.wiki/')) {
// Fatcat
translator.setTranslator('afef9c9d-53a1-49da-9155-1fdf683798c3');
}
else if (url.includes('archive.org/')) {
// Internet Archive
translator.setTranslator('db0f4858-10fa-4f76-976c-2592c95f029c');
}
else {
Z.debug('Unknown item fulltext source; trying Embedded Metadata');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
}
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://scholar.archive.org/search?q=interlisp",
"items": "multiple"
}
]
/** END TEST CASES **/
100Michael Berkowitz, John Muccigrosso, and Abe Jellinek^https?://bmcr\.brynmawr\.edu//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2016-2021 Michael Berkowitz, John Muccigrosso, and Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.match(/\d\/?$/) && doc.querySelector('.entry-title')) {
return "journalArticle";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('a.ref-wrapper');
for (var i = 0; i < rows.length; i++) {
var href = rows[i].href;
var title = ZU.trimInternal(text(rows[i], '.ref-title'));
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) {
return;
}
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
let item = new Zotero.Item("journalArticle");
let bmcrID = text(doc, '.ref-id').replace(/^BMCR /, '');
let title = text(doc, '.entry-title');
// trim BMCR ID off the beginning when present
item.title = "Review of: "
+ ZU.trimInternal(title).replace(/^\d{2,4}\.\d{1,2}\.\d{1,2}, /, '');
item.shortTitle = '';
let authors = doc.querySelectorAll('.meta-affiliation[itemprop="author"] [itemprop="name"]');
for (let author of authors) {
item.creators.push(ZU.cleanAuthor(author.textContent, "author"));
}
let reviewedAuthors = doc.querySelectorAll('.entry-citation [itemprop="author"]');
for (let author of reviewedAuthors) {
item.creators.push(ZU.cleanAuthor(author.textContent, "reviewedAuthor"));
}
item.date = ZU.strToISO(attr(doc, 'meta[itemprop="datePublished"]', 'content'));
item.extra = "BMCR ID: " + bmcrID;
item.publicationTitle = "Bryn Mawr Classical Review";
item.journalAbbreviation = "Bryn Mawr Class. Rev.";
item.ISSN = "1055-7660";
item.url = url;
item.attachments.push({
document: doc,
title: "Full Text Snapshot"
});
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://bmcr.brynmawr.edu/2010/2010.01.02",
"items": [
{
"itemType": "journalArticle",
"title": "Review of: Sallust: The War Against Jugurtha. Aris and Phillips Classical Texts",
"creators": [
{
"firstName": "Christina S.",
"lastName": "Kraus",
"creatorType": "author"
},
{
"firstName": "Michael",
"lastName": "Comber",
"creatorType": "reviewedAuthor"
},
{
"firstName": "Catalina",
"lastName": "Balmaceda",
"creatorType": "reviewedAuthor"
}
],
"date": "2010-01-02",
"ISSN": "1055-7660",
"extra": "BMCR ID: 2010.01.02",
"journalAbbreviation": "Bryn Mawr Class. Rev.",
"libraryCatalog": "Bryn Mawr Classical Review",
"publicationTitle": "Bryn Mawr Classical Review",
"url": "https://bmcr.brynmawr.edu/2010/2010.01.02",
"attachments": [
{
"title": "Full Text Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://bmcr.brynmawr.edu/2013/2013.01.44",
"items": [
{
"itemType": "journalArticle",
"title": "Review of: The Classical Tradition",
"creators": [
{
"firstName": "Christina S.",
"lastName": "Kraus",
"creatorType": "author"
},
{
"firstName": "Anthony",
"lastName": "Grafton",
"creatorType": "reviewedAuthor"
},
{
"firstName": "Glenn W.",
"lastName": "Most",
"creatorType": "reviewedAuthor"
},
{
"firstName": "Salvatore",
"lastName": "Settis",
"creatorType": "reviewedAuthor"
}
],
"date": "2013-01-30",
"ISSN": "1055-7660",
"extra": "BMCR ID: 2013.01.44",
"journalAbbreviation": "Bryn Mawr Class. Rev.",
"libraryCatalog": "Bryn Mawr Classical Review",
"publicationTitle": "Bryn Mawr Classical Review",
"url": "https://bmcr.brynmawr.edu/2013/2013.01.44",
"attachments": [
{
"title": "Full Text Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://bmcr.brynmawr.edu/Archive/",
"items": "multiple"
},
{
"type": "web",
"url": "https://bmcr.brynmawr.edu/1999/1999.11.02",
"items": [
{
"itemType": "journalArticle",
"title": "Review of: Epic traditions in the contemporary world : the poetics of community",
"creators": [
{
"firstName": "James V.",
"lastName": "Morrison",
"creatorType": "author"
},
{
"firstName": "Margaret",
"lastName": "Beissinger",
"creatorType": "reviewedAuthor"
},
{
"firstName": "Jane",
"lastName": "Tylus",
"creatorType": "reviewedAuthor"
},
{
"firstName": "Susanne",
"lastName": "Wofford",
"creatorType": "reviewedAuthor"
}
],
"date": "1999-11-02",
"ISSN": "1055-7660",
"extra": "BMCR ID: 1999.11.02",
"journalAbbreviation": "Bryn Mawr Class. Rev.",
"libraryCatalog": "Bryn Mawr Classical Review",
"publicationTitle": "Bryn Mawr Classical Review",
"url": "https://bmcr.brynmawr.edu/1999/1999.11.02",
"attachments": [
{
"title": "Full Text Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://bmcr.brynmawr.edu/1998/1998.01.04/",
"items": [
{
"itemType": "journalArticle",
"title": "Review of: Athens and Persians in the Fifth Century BC: A Study in Cultural Receptivity",
"creators": [
{
"firstName": "Balbina",
"lastName": "Baebler",
"creatorType": "author"
},
{
"firstName": "Margaret Christina",
"lastName": "Miller",
"creatorType": "reviewedAuthor"
}
],
"date": "1998-01-04",
"ISSN": "1055-7660",
"extra": "BMCR ID: 1998.01.04",
"journalAbbreviation": "Bryn Mawr Class. Rev.",
"libraryCatalog": "Bryn Mawr Classical Review",
"publicationTitle": "Bryn Mawr Classical Review",
"url": "https://bmcr.brynmawr.edu/1998/1998.01.04/",
"attachments": [
{
"title": "Full Text Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://bmcr.brynmawr.edu/?s=cicero",
"items": "multiple"
}
]
/** END TEST CASES **/
100Dan Stillman^https://zbib\.org//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2018 Dan Stillman
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
var dataSelector = 'script[type="application/vnd.zotero.data+json"]';
function detectWeb(doc, url) {
Zotero.monitorDOMChanges(doc.querySelector('#zotero-bib'));
return doc.querySelectorAll(dataSelector).length ? 'multiple' : false;
}
function getJSON(doc) {
var json = [];
for (let row of doc.querySelectorAll(dataSelector)) {
json.push(JSON.parse(row.textContent));
}
return json;
}
function getTitles(doc) {
var titles = {};
for (let entryJSON of getJSON(doc)) {
titles[entryJSON.key] = entryJSON.title;
}
return titles;
}
// TODO: Move to API JSON import translator?
function importJSON(json) {
json.forEach(entry => {
var item = new Zotero.Item(entry.itemType);
for (let field in entry) {
switch (field) {
case 'key':
case 'version':
continue;
case 'creators':
case 'tags':
item[field].push(...entry[field]);
break;
default:
// Ignore other properties that are already set
if (item[field] !== undefined) {
continue;
}
item[field] = entry[field];
}
}
item.complete();
});
}
function doWeb(doc, url) {
Zotero.selectItems(getTitles(doc), function (items) {
var keys = new Set(Object.keys(items));
var json = getJSON(doc).filter(entry => keys.has(entry.key));
importJSON(json);
});
}
100Amelia Ireland and Abe Jellinek^https?://(amigo\.)?geneontology\.org//*
Copyright (C) 2010-2021 girlwithglasses (amelia.ireland@gmail.com)
and Abe Jellinek
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/*
This translator works on cited PubMed references on the Gene Ontology website.
It makes use of the code of the existing PubMed translator; thanks to the
authors of that translator for their premium quality code.
*/
var items = {};
var choices = {};
var itemsRemaining = 0;
function detectWeb(doc, _url) {
if (getPMIDs(doc, true)) {
Zotero.debug("Found some cites!");
return "multiple";
}
return false;
}
function getPMIDs(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('cite a[title*="PMID:"], cite a[href*="/pubmed/"]');
for (let row of rows) {
let pmid = (row.href.match(/\/pubmed\/([0-9]+)/) || [])[1];
if (!pmid) pmid = (row.textContent.match(/PMID:([0-9]+)/) || [])[1];
let title = ZU.trimInternal(row.textContent);
if (!pmid || !title) continue;
if (checkOnly) return true;
found = true;
items[pmid] = title;
}
return found ? items : false;
}
function doWeb(doc, _url) {
choices = getPMIDs(doc, false);
items = {};
let pmids = Object.keys(choices);
itemsRemaining = pmids.length;
for (let pmid of pmids) {
searchWithPMID(pmid, itemLookupComplete);
}
}
function searchWithPMID(pmid, callback) {
var translate = Zotero.loadTranslator("search");
translate.setTranslator("3d0231ce-fd4b-478c-b1d3-840389e5b68c"); // PubMed
var item = { itemType: "journalArticle", PMID: pmid };
translate.setSearch(item);
// Don't throw on error
translate.setHandler("error", function () {
callback(null);
});
// don't save immediately when item is done
translate.setHandler("itemDone", function (translate, item) {
item.itemID = pmid;
callback(item);
});
translate.translate();
}
function itemLookupComplete(item) {
itemsRemaining--;
if (item) {
choices[item.itemID] = item.title;
items[item.itemID] = item;
}
if (itemsRemaining <= 0) {
Zotero.selectItems(choices, function (selected) {
if (selected) {
for (let selectedPMID of Object.keys(selected)) {
items[selectedPMID].complete();
}
}
});
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://amigo.geneontology.org/amigo/term/GO:0048003",
"items": "multiple"
}
]
/** END TEST CASES **/
100Sebastian Karcher^https?://(:?www\.|google\.)?pubs\.rsc\.org//*
***** BEGIN LICENSE BLOCK *****
RSC Publishing Translator
Copyright © 2011 Aurimas Vinckevicius
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function getResults(doc) {
/** Both search result and book ToC pages use javascript to load content, so
* this actually doesn't work as intended. Search results will work, but
* will also trigger on empty result set. detectWeb for book ToC does not
* work, but doWeb does,
*/
return ZU.xpath(doc, '//div[@id="all" or @id="chapterList"]//div[contains(@class,"title_text")]//a[not(contains(@href,"/database/"))]');
}
function detectWeb(doc, url) {
if (/\/results[?/]/i.test(url) || url.includes('/ebook/')
&& getResults(doc).length) {
return 'multiple';
}
// apparently URLs sometimes have upper case as in /Content/ArticleLanding/
if (url.search(/\/content\/articlelanding\//i) != -1 && ZU.xpathText(doc, '//meta[@name="citation_title"]/@content')) {
return 'journalArticle';
}
if (url.search(/\/content\/chapter\//i) != -1) {
return 'bookSection';
}
return false;
}
function scrape(doc, url, type) {
var translator = Zotero.loadTranslator('web');
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
// item.itemType = type;
// keywords is frequently an empty string
if (item.tags.length == 1 && !item.tags[0]) {
item.tags = [];
}
if (item.date) {
item.date = ZU.strToISO(item.date);
}
for (let link of doc.querySelectorAll('.list__item-link')) {
if (link.textContent.includes('Supplementary information')) {
item.attachments.push({
url: link.href,
title: 'Supplementary Information PDF',
mimeType: 'application/pdf'
});
break;
}
}
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.itemType = type;
trans.doWeb(doc, url);
});
}
function doWeb(doc, url) {
var type = detectWeb(doc, url);
if (type == 'multiple') {
var results = getResults(doc);
var items = {};
for (var i = 0, n = results.length; i < n; i++) {
items[results[i].href] = ZU.trimInternal(
ZU.xpathText(results[i], './node()', null, ' '));
}
Zotero.selectItems(items, function (selectedItems) {
if (!selectedItems) return;
var urls = [];
for (var i in selectedItems) {
urls.push(i);
}
ZU.processDocuments(urls, doWeb);
});
}
else {
scrape(doc, url, type);
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://pubs.rsc.org/en/content/articlelanding/2012/ee/c1ee02148f#!divAbstract",
"items": [
{
"itemType": "journalArticle",
"title": "Superior radical polymer cathode material with a two-electron process redox reaction promoted by graphene",
"creators": [
{
"firstName": "Wei",
"lastName": "Guo",
"creatorType": "author"
},
{
"firstName": "Ya-Xia",
"lastName": "Yin",
"creatorType": "author"
},
{
"firstName": "Sen",
"lastName": "Xin",
"creatorType": "author"
},
{
"firstName": "Yu-Guo",
"lastName": "Guo",
"creatorType": "author"
},
{
"firstName": "Li-Jun",
"lastName": "Wan",
"creatorType": "author"
}
],
"date": "2012-01-01",
"DOI": "10.1039/C1EE02148F",
"ISSN": "1754-5706",
"abstractNote": "Poly(2,2,6,6-tetramethyl-1-piperidinyloxy-4-yl methacrylate) (PTMA) displays a two–electron process redox reaction, high capacity of up to 222 mA h g−1, good rate performance and long cycle life, which is promoted by graphene as cathode material for lithium rechargeable batteries.",
"issue": "1",
"journalAbbreviation": "Energy Environ. Sci.",
"language": "en",
"libraryCatalog": "pubs.rsc.org",
"pages": "5221-5225",
"publicationTitle": "Energy & Environmental Science",
"url": "https://pubs.rsc.org/en/content/articlelanding/2012/ee/c1ee02148f",
"volume": "5",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Snapshot",
"mimeType": "text/html"
},
{
"title": "Supplementary Information PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://pubs.rsc.org/en/content/chapter/bk9781849730518-00330/978-1-84973-051-8#!divabstract",
"items": [
{
"itemType": "bookSection",
"title": "Chapter 14:In Vivo Approaches to Predictive Toxicology Using Zebrafish",
"creators": [
{
"firstName": "Michael T.",
"lastName": "Simonich",
"creatorType": "author"
},
{
"firstName": "Jill A.",
"lastName": "Franzosa",
"creatorType": "author"
},
{
"firstName": "Robert L.",
"lastName": "Tanguay*",
"creatorType": "author"
}
],
"date": "2011-11-15",
"abstractNote": "A key to sustainability in modern paradigms of drug discovery and toxicology will be predictive structure–activity relationships based on vertebrate-model responses. The zebrafish embryo is the emerging vertebrate choice for rapid-throughput chemical screening, providing a quick and inexpensive way to test hypotheses and to generate strategies for complementary integrative research with rodent models, and humans. Numerous embryonic zebrafish assays and omics approaches appear to predict hazard in mammals. We review physiologic parameters of the zebrafish that are amenable to rapid-throughput screening. Toxicity investigations in the zebrafish have included endpoints in developmental, neuro, cardio, ocular, otic, gastrointestinal, hepato, regenerative and vascular toxicity. Small-scale screens have used zebrafish embryos to analyze heart rate and ERG function, and to screen drugs that affect these parameters. Novel tissue-specific and xenobiotic-responsive reporter lines are enabling rapid screening of new chemistries for cardio, hepato, and neuronal toxicity. In particular, zebrafish screens that combine gene expression profiling with comprehensive phenotype analyses are strengthening the predictivity of the toxicology data and fostering greater use of the model, especially as a means of frontloading hazard detection and reducing late-stage attrition in drug discovery. A pressing need remains for large-scale zebrafish studies that systematically evaluate the most promising zebrafish assays against the widest possible range of positive and negative reference compounds to distinguish the truly predictive approaches in zebrafish from those that are not.",
"bookTitle": "New Horizons in Predictive Toxicology",
"extra": "DOI: 10.1039/9781849733045-00330",
"language": "en",
"libraryCatalog": "pubs.rsc.org",
"pages": "330-355",
"shortTitle": "Chapter 14",
"url": "https://pubs.rsc.org/en/content/chapter/bk9781849730518-00330/978-1-84973-051-8",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://pubs.rsc.org/en/results?searchtext=open%20source",
"defer": true,
"items": "multiple"
}
]
/** END TEST CASES **/
100Sebastian Karcher^https?://www\.mja\.com\.au//*
***** BEGIN LICENSE BLOCK *****
eMJA Translator - Copyright © 2012 Sebastian Karcher
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function getSearchResults(doc, checkOnly) {
let items = {};
let found = false;
for (let item of doc.querySelectorAll('div.views-field-title a, div.mja-search-results-container a')) {
let title = (item.textContent || '').trim();
if (!title) continue;
let href = item.getAttribute('href');
if (!href) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found && items;
}
function match(t, r, n) {
if (!t) return '';
let m = t.match(r);
return (m && m[typeof n === 'number' ? n : 1]) || '';
}
function scrape(doc, url) {
Zotero.debug(url);
let item = new Zotero.Item('journalArticle');
item.url = url;
item.title = (text(doc, 'h1.article-heading') || '').trim();
item.attachments = [
{ url, title: 'Snapshot', mimeType: 'text/html' },
{ url: attr(doc, 'a.pdf', 'href'), title: 'Full Text PDF', mimeType: 'application/pdf' },
];
item.creators = Array.from(doc.querySelectorAll('ul#authors-list li')).map(author => ZU.cleanAuthor(author.getAttribute('data-author'), 'author'));
item.volume = match(text(doc, 'div#meta-container div div.field-items div'), /;\s*\d+\s*\(/, 0).replace(/\(|;\s*/g, '');
for (let citation of doc.querySelectorAll('span.citation')) {
if (citation.textContent.includes('Published online:')) item.date = citation.textContent.replace(/Published online:/, '');
}
item.issue = attr(doc, 'a.article-issue', 'data-issue');
item.volume = (text(doc, 'a.article-volume') || '').replace(/Volume\s*/, '');
for (let comment of doc.querySelectorAll('div.comment')) {
let abstr = comment.querySelector('h2');
if (!abstr || abstr.textContent.trim() !== 'Abstract') continue;
item.abstractNote = comment.textContent.replace('Abstract', '').trim();
}
item.journalAbbreviation = "Med. J. Aust.";
item.ISSN = "0025-729X";
item.publicationTitle = "Medical Journal of Australia";
item.complete();
}
function detectWeb(doc, _url) {
if (getSearchResults(doc, true)) return 'multiple';
if (doc.querySelector('h1.article-heading')) return 'journalArticle';
return false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) === 'multiple') {
Zotero.selectItems(getSearchResults(doc), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.mja.com.au/journal/2011/195/1/socioeconomic-disparities-stroke-rates-and-outcome-pooled-analysis-stroke",
"items": [
{
"itemType": "journalArticle",
"title": "Socioeconomic disparities in stroke rates and outcome: pooled analysis of stroke incidence studies in Australia and New Zealand",
"creators": [
{
"firstName": "Emma L.",
"lastName": "Heeley",
"creatorType": "author"
},
{
"firstName": "Jade W.",
"lastName": "Wei",
"creatorType": "author"
},
{
"firstName": "Kristie",
"lastName": "Carter",
"creatorType": "author"
},
{
"firstName": "Md Shaheenul",
"lastName": "Islam",
"creatorType": "author"
},
{
"firstName": "Amanda G.",
"lastName": "Thrift",
"creatorType": "author"
},
{
"firstName": "Graeme J.",
"lastName": "Hankey",
"creatorType": "author"
},
{
"firstName": "Alan",
"lastName": "Cass",
"creatorType": "author"
},
{
"firstName": "Craig S.",
"lastName": "Anderson",
"creatorType": "author"
}
],
"date": "4 July 2011",
"ISSN": "0025-729X",
"abstractNote": "Objective: To assess the influence of area-level socioeconomic status (SES) on incidence and case-fatality rates for stroke.Design, setting and participants: Analysis of pooled data for 3077 patients with incident stroke from three population-based studies in Perth, Melbourne, and Auckland between 1995 and 2003.Main outcome measures: Incidence and 12-month case-fatality rates for stroke.Results: Annual age-standardised stroke incidence rates ranged from 77 per 100 000 person-years (95% CI, 72–83) in the least deprived areas to 131 per 100 000 person-years (95% CI, 120–141) in the most deprived areas (rate ratio, 1.70; 95% CI, 1.47–1.95; P < 0.001). The population attributable risk of stroke was 19% (95% CI, 12%–27%) for those living in the most deprived areas compared with the least deprived areas. Compared with people in the least deprived areas, those in the most deprived areas tended to be younger (mean age, 68 v 77 years; P < 0.001), had more comorbidities such as hypertension (58% v 51%; P < 0.001) and diabetes (22% v 12%; P < 0.001), and were more likely to smoke (23% v 8%; P < 0.001). After adjustment for age, area-level SES was not associated with 12-month case-fatality rate.Conclusions: Our analysis provides evidence that people living in areas that are relatively more deprived in socioeconomic terms experience higher rates of stroke. This may be explained by a higher prevalence of risk factors among these populations, such as hypertension, diabetes and cigarette smoking. Effective preventive measures in the more deprived areas of the community could substantially reduce rates of stroke.",
"issue": "1",
"journalAbbreviation": "Med. J. Aust.",
"libraryCatalog": "eMJA",
"publicationTitle": "Medical Journal of Australia",
"shortTitle": "Socioeconomic disparities in stroke rates and outcome",
"url": "https://www.mja.com.au/journal/2011/195/1/socioeconomic-disparities-stroke-rates-and-outcome-pooled-analysis-stroke",
"volume": "195",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
},
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.mja.com.au/public/issues/195_01_040711/contents_040711.html",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.mja.com.au/search?search=vaccination",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.mja.com.au/journal/2021/215/1/potentially-preventable-hospitalisations-people-intellectual-disability-new",
"items": [
{
"itemType": "journalArticle",
"title": "Potentially preventable hospitalisations of people with intellectual disability in New South Wales",
"creators": [
{
"firstName": "Janelle C.",
"lastName": "Weise",
"creatorType": "author"
},
{
"firstName": "Preeyaporn",
"lastName": "Srasuebkul",
"creatorType": "author"
},
{
"firstName": "Julian N.",
"lastName": "Trollor",
"creatorType": "author"
}
],
"date": "14 June 2021",
"ISSN": "0025-729X",
"abstractNote": "Objective: To determine rates of potentially preventable hospitalisation of people with intellectual disability in New South Wales, and compare them with those for the NSW population.\n\nDesign: Retrospective cohort study.\n\nSetting: Potentially preventable hospitalisations in NSW, as defined by the National Healthcare Agreement progress indicator 18, 1 July 2001 ‒ 30 June 2015.\n\nParticipants: Data collected in a retrospective data linkage study of 92 542 people with intellectual disability in NSW; potentially preventable hospitalisations data for NSW published by HealthStats NSW.\n\nMain outcome measures: Age‐adjusted rates of potentially preventable hospitalisation by group (people with intellectual disability, NSW population), medical condition type (acute, chronic, vaccine‐preventable), and medical condition.\n\nResults: The annual age‐standardised rate for people with intellectual disability ranged between 5286 and 6301 per 100 000 persons, and for the NSW population between 1278 and 1511 per 100 000 persons; the rate ratio (RR) ranged between 3.5 (95% CI, 3.3–3.7) in 2014–15 and 4.5 (95% CI, 4.2–4.9) in 2002–03. The difference was greatest for admissions with acute (RR range: 5.3 [95% CI, 4.9–5.7] in 2014–15 to 8.1 [95% CI, 7.4–8.8] in 2002–03) and vaccine‐preventable conditions (RR range: 2.1 [95% CI, 1.6–3.0] in 2007–08 to 3.4 [95% CI, 2.2–5.2] in 2004–05). By specific condition, the highest age‐standardised rate was for admissions with convulsions and epilepsy (all years, 2567 per 100 000 population; v NSW population: RR, 22.2; 95% CI, 21.3–23.1).\n\nConclusion: Age‐standardised rates of potentially preventable hospitalisation are higher for people with intellectual disability than for the general population. The reasons for these differences should be investigated, and strategies for averting potentially preventable hospitalisation developed.",
"journalAbbreviation": "Med. J. Aust.",
"libraryCatalog": "eMJA",
"publicationTitle": "Medical Journal of Australia",
"url": "https://www.mja.com.au/journal/2021/215/1/potentially-preventable-hospitalisations-people-intellectual-disability-new",
"volume": "Online first",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
},
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Luke van der Hoeven^https?://(www\.)?etsjets\.org//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2019-2021 Luke van der Hoeven
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes("/JETS_current") || url.includes("/JETS/") || url.includes("/node/")) {
return "multiple";
}
return false;
}
function doWeb(doc, _url) {
let results = getSearchResults(doc, false);
if (results) {
Zotero.selectItems(results, function (selected) {
if (!selected) {
return;
}
for (let url in selected) scrape(selected[url], url);
});
}
}
function scrape(titleAuthor, url) {
let [title, author] = titleAuthor.split(". . .");
let pdfTitle = url.split('/').pop();
let [, issue, pages] = pdfTitle.split('_');
var item = new Zotero.Item('journalArticle');
item.url = url;
item.journalAbbreviation = "J. Evang. Theol. Soc."; // ISO 4 abbreviation
item.publicationTitle = "Journal of the Evangelical Theological Society";
item.title = ZU.trimInternal(title);
if (author) {
item.creators.push(ZU.cleanAuthor(author, 'author', false));
}
if (pages.match(/[0-9]+(-[0-9]+)?/)) {
item.pages = pages;
}
[item.volume, item.issue] = issue.split('.');
item.attachments.push({
title: "Full Text PDF",
mimeType: 'application/pdf',
url: url
});
item.complete();
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
let results = doc.querySelectorAll('div.content p a');
for (var result of results) {
let href = result.href;
let title = ZU.capitalizeTitle(ZU.trimInternal(result.innerText).toLowerCase(), true);
if (!href || !title || !href.endsWith(".pdf")) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.etsjets.org/JETS_current",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.etsjets.org/node/9799",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.etsjets.org/JETS/45_2",
"items": "multiple"
}
]
/** END TEST CASES **/
100Philipp Zumstein and Abe Jellinek^https?://collections\.louvre\.fr//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Philipp Zumstein and Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/ark:/')) {
return "artwork";
}
else if (url.includes('/recherche') && getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('a[href*="/ark:/"]');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) {
return;
}
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, _url) {
let item = new Zotero.Item('artwork');
let json = JSON.parse(text(doc, 'script[type="application/ld+json"]'));
item.title = json.name || 'Untitled';
item.artworkMedium = json.material;
item.callNumber = json.identifier;
item.archive = "Louvre";
item.abstractNote = json.description;
item.url = json.url;
if (json.creator) {
for (let artist of json.creator) {
// sometimes these aren't really artists ("School / Artistic centre"),
// but it's a royal pain to strip those out and there's nothing to
// clearly identify them
let surnameMatch = artist.name.match(/^([^a-z\s.]{2,})\s*(.*)/);
if (surnameMatch) {
// if the artist's name starts with an uppercase surname
// (like "GOGH Vincent van") then pull that out.
item.creators.push({
lastName: ZU.capitalizeTitle(surnameMatch[1], true),
firstName: surnameMatch[2],
creatorType: 'artist'
});
}
else {
item.creators.push(ZU.cleanAuthor(
artist.name,
'artist',
artist.name.includes(', ')
));
}
}
}
if (json.dateCreated) {
let bceDateMatch = json.dateCreated.match(/([0-9]+) av\./);
if (bceDateMatch) {
// this generates a date in EDTF format, which works like ISO 8601:
// https://en.wikipedia.org/wiki/ISO_8601#Years
// so we need to add one; 200 BCE is represented as -0199
let year = parseInt(bceDateMatch[1]);
if (!isNaN(year)) {
item.date = '-' + (year - 1).toString().padStart(4, '0');
}
}
else {
item.date = ZU.strToISO(json.dateCreated);
}
}
if (json.width && json.height && json.width.length && json.height.length) {
item.artworkSize = `${json.width[0].name} x ${json.height[0].name}`;
}
if (json.image) {
item.attachments.push({
title: 'Image',
url: json.image,
mimeType: 'image/jpeg'
});
}
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://collections.louvre.fr/en/ark:/53355/cl010208581",
"items": [
{
"itemType": "artwork",
"title": "Hyacinthe Collin de Vermont (1693-1761), peintre",
"creators": [
{
"firstName": "Alexandre",
"lastName": "Roslin",
"creatorType": "artist"
},
{
"firstName": "",
"lastName": "Suède",
"creatorType": "artist"
}
],
"date": "1753",
"archive": "Louvre",
"artworkMedium": "huile sur toile",
"artworkSize": "0,98 m x 1,28 m",
"callNumber": "/ark:/53355/cl010208581",
"libraryCatalog": "Musée du Louvre",
"url": "https://collections.louvre.fr/ark:/53355/cl010208581",
"attachments": [
{
"title": "Image",
"mimeType": "image/jpeg"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://collections.louvre.fr/ark:/53355/cl020032677",
"items": [
{
"itemType": "artwork",
"title": "Tête de jeune homme coiffé d'un grand chapeau",
"creators": [
{
"lastName": "Gogh",
"firstName": "Vincent van",
"creatorType": "artist"
}
],
"archive": "Louvre",
"artworkMedium": "Fusain sur feuillet de carnet initialement quadrillé très jauni à tranche rouge et coins arrondis",
"artworkSize": "0.087 m x 0.132 m",
"callNumber": "/ark:/53355/cl020032677",
"libraryCatalog": "Musée du Louvre",
"url": "https://collections.louvre.fr/ark:/53355/cl020032677",
"attachments": [
{
"title": "Image",
"mimeType": "image/jpeg"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://collections.louvre.fr/ark:/53355/cl010123452",
"items": [
{
"itemType": "artwork",
"title": "stèle",
"creators": [],
"date": "-2299",
"abstractNote": "stèle ; ; Décor : scène de victoire ; Sargon d'Akkad (?, kaunakès, masse d'armes, capturant, ennemi : plusieurs, filet) ; Ishtar (?) ; inscription ; ; Etat de l'oeuvre : incomplet ; Précisions de l'objet : Sommet d'une scène de victoire. Le roi, peut-être Sargon d'Akkad, capture dans un filet des ennemis et assomme le roi vaincu avec sa masse d'armes. La scène se passe devant une divinité, peut-être la déesse Ishtar",
"archive": "Louvre",
"artworkMedium": "Matériau : diorite ; Technique : bas-relief",
"artworkSize": "0,26 cm x 0,54 cm",
"callNumber": "/ark:/53355/cl010123452",
"libraryCatalog": "Musée du Louvre",
"url": "https://collections.louvre.fr/ark:/53355/cl010123452",
"attachments": [
{
"title": "Image",
"mimeType": "image/jpeg"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://collections.louvre.fr/en/recherche?q=marseille",
"items": "multiple"
},
{
"type": "web",
"url": "https://collections.louvre.fr/recherche?collection%5B0%5D=3",
"items": "multiple"
}
]
/** END TEST CASES **/
100Philipp Zumstein^https?://(www\.)?xueshu\.baidu\.com//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2017 Philipp Zumstein
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
// attr()/text() v2
// eslint-disable-next-line
function attr(docOrElem,selector,attr,index){var elem=index?docOrElem.querySelectorAll(selector).item(index):docOrElem.querySelector(selector);return elem?elem.getAttribute(attr):null}function text(docOrElem,selector,index){var elem=index?docOrElem.querySelectorAll(selector).item(index):docOrElem.querySelector(selector);return elem?elem.textContent:null}
function detectWeb(doc, url) {
if (url.includes('paperid=')) {
return "journalArticle";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('h3>a[href*="show?paperid="]');
for (var i = 0; i < rows.length; i++) {
var href = rows[i].href;
var title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) {
return;
}
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, _url) {
var dataUrl = attr(doc, 'i.reqdata', 'url');
let paperId = undefined;
const paperIdMatches = _url.match(/paperid=([a-z0-9]*)/i);
if (paperIdMatches[1]) {
paperId = paperIdMatches[1];
}
const risUrl = `https://xueshu.baidu.com/u/citation?type=ris&paperid=${paperId}`;
var title = doc.title.replace('_百度学术', '');
var tags = [];
doc.querySelectorAll('p.kw_main span a').forEach(e => tags.push(ZU.trimInternal(e.textContent)));
ZU.doGet(risUrl, function (ris) {
// Z.debug({ ris });
// delete parenthesis in pages information, e.g. SP - 5-7(3)
ris = ris.replace(/(SP\s+-\s\d+-\d+)\(\d+\)$/m, "$1");
var translator = Zotero.loadTranslator("import");
translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7");
translator.setString(ris);
translator.setHandler("itemDone", function (obj, item) {
item.url = dataUrl;
var doiLink = attr(doc, 'a.dl_item[data-url*="doi.org/"]', 'data-url');
if (!item.DOI && doiLink) {
item.DOI = doiLink.substr(doiLink.indexOf('doi.org/') + 8);
}
if (!item.abstractNote) {
item.abstractNote = text(doc, 'div.sc_abstract') || text(doc, 'p.abstract');
}
item.attachments.push({
title: "Snapshot",
document: doc
});
item.tags = tags;
if (!item.title) {
item.title = title;
}
if (!item.creators || item.creators.length == 0) {
item.creators = [];
doc.querySelectorAll('p.author_text a').forEach((e) => {
item.creators.push(ZU.cleanAuthor(e.textContent, 'author', true));
});
}
for (let i = 0, n = item.creators.length; i < n; i++) {
let creator = item.creators[i];
if (!creator.firstName && creator.lastName.search(/[A-Za-z]/) == -1 && !creator.lastName.includes(' ')) {
// Chinese name: first character is last name, the rest are first name (ignoring compound last names which are rare)
creator.firstName = creator.lastName.substr(1);
creator.lastName = creator.lastName.charAt(0);
}
item.creators[i] = creator;
}
if (!item.publicationTitle) {
item.publicationTitle = attr(doc, 'a.journal_title', 'title');
}
if (!item.date && text(doc, 'div.year_wr p.kw_main')) {
item.date = ZU.trimInternal(text(doc, 'div.year_wr p.kw_main'));
}
if (!item.DOI && text(doc, 'div.doi_wr p.kw_main')) {
item.DOI = ZU.trimInternal(text(doc, 'div.doi_wr p.kw_main'));
}
item.complete();
});
translator.translate();
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://xueshu.baidu.com/usercenter/paper/show?paperid=b3ab239032d44d951d8eee26d7bc44bf&site=xueshu_se",
"items": [
{
"itemType": "journalArticle",
"title": "Zotero: information management software 2.0",
"creators": [
{
"lastName": "Fernandez",
"firstName": "P.",
"creatorType": "author"
}
],
"date": "2011",
"DOI": "10.1108/07419051111154758",
"abstractNote": "Purpose – The purpose of this paper is to highlight how the open-source bibliographic management program Zotero harnesses Web 2.0 features to make library resources more accessible to casual users without sacrificing advanced features. This reduces the barriers understanding library resources and provides additional functionality when organizing information resources. Design/methodology/approach – The paper reviews select aspects of the program to illustrate how it can be used by patrons and information professionals, and why information professionals should be aware of it. Findings – Zotero has some limitations, but succeeds in meeting the information management needs of a wide variety of users, particularly users who use online resources. Originality/value – This paper is of interest to information professionals seeking free software that can make managing bibliographic information easier for themselves and their patrons.",
"issue": "4",
"libraryCatalog": "Baidu Scholar",
"pages": "5-7",
"publicationTitle": "Library Hi Tech News",
"shortTitle": "Zotero",
"url": "http://www.emeraldinsight.com/doi/pdfplus/10.1108/07419051111154758",
"volume": "28",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Citation management"
},
{
"tag": "Internet"
},
{
"tag": "Library services"
},
{
"tag": "Open source"
},
{
"tag": "Reference management"
},
{
"tag": "Technology"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://xueshu.baidu.com/usercenter/paper/show?paperid=29fcf50a863692823c3f336a9ee1efea&site=xueshu_se",
"items": [
{
"itemType": "journalArticle",
"title": "Comparativo dos softwares de gerenciamento de referências bibliográficas: Mendeley, EndNote e Zotero",
"creators": [
{
"lastName": "Yamakawa",
"firstName": "E. K.",
"creatorType": "author"
},
{
"lastName": "Kubota",
"firstName": "F. I.",
"creatorType": "author"
},
{
"lastName": "Beuren",
"firstName": "F. H.",
"creatorType": "author"
},
{
"lastName": "Scalvenzi",
"firstName": "L.",
"creatorType": "author"
},
{
"lastName": "Miguel",
"firstName": "Pac",
"creatorType": "author"
}
],
"date": "2014",
"DOI": "10.1590/0103-37862014000200006",
"abstractNote": "A elaboração de uma revisão bibliográfica confiável, a partir de trabalhos relevantes publicados anteriormente, é fundamental para evidenciar a originalidade e a contribuição científica dos trabalhos de pesquisa. Devido à grande quantidade de bases de dados e de publicações disponíveis, torna-se necessário utilizar ferramentas que auxiliem na gestão das referências bibliográficas de uma maneira fácil e padronizada. O objetivo deste artigo é examinar três de gerenciamento bibliográfico utilizados com frequência por pesquisadores acadêmicos, são eles: , e . Nesse sentido, buscou-se, em primeiro lugar, evidenciar seus principais benefícios e as possíveis dificuldades de utilização. Em segundo lugar, procurou-se comparar suas principais características por meio de uma pesquisa teórico-conceitual baseada em literatura especializada, o que permitiu utilizá-los e analisá-los de maneira crítica. Assim sendo, evidenciou-se as principais particularidades de cada e foi elaborado um quadro comparativo entre os mesmos. Considerando as características analisadas nos três , concluiu-se que todos, ao mesmo tempo em que facilitam o trabalho dos pesquisadores, possuem ferramentas que facilitam as buscas, a organização e a análise dos artigos.",
"issue": "2",
"libraryCatalog": "Baidu Scholar",
"pages": "167-176",
"publicationTitle": "Transinformao",
"shortTitle": "Comparativo dos softwares de gerenciamento de referências bibliográficas",
"url": "http://www.scielo.br/scielo.php?script=sci_arttext&pid=S0103-37862014000200167&lng=pt&nrm=is",
"volume": "26",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://xueshu.baidu.com/s?wd=zotero&rsv_bp=0&tn=SE_baiduxueshu_c1gjeupa&rsv_spt=3&ie=utf-8&f=8&rsv_sug2=0&sc_f_para=sc_tasktype%3D%7BfirstSimpleSearch%7D",
"items": "multiple"
}
]
/** END TEST CASES **/
100Bo An^https?://(www\.)?newleftreview\.org/issues//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Bo An
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
const article = "articles";
const isArticle = url.includes(article);
if (isArticle) {
return 'journalArticle';
}
else {
return 'multiple';
}
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), (items) => {
if (!items) {
return true;
}
const articles = [];
for (const i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
return true;
});
}
else {
scrape(doc, url);
}
}
function getSearchResults(doc) {
let items = {};
let found = false;
const articleLinks = doc.querySelectorAll('a.article-link');
articleLinks.forEach((articleLink, articleIndex) => {
const href = articleLink.href;
let title = text(articleLink, '.programme-note__title');
const author = text(articleLink, '.programme-note__author');
if (author) {
title += ` (${author})`;
}
items[href] = title;
if (found === false) {
found = true;
}
});
return found ? items : false;
}
function scrape(doc, _) {
const newItem = new Zotero.Item('journalArticle');
newItem.publicationTitle = "New Left Review";
newItem.journalAbbreviation = "New Left Rev";
const title = ZU.xpath(doc, '//meta[@itemprop="name"]/@content')[0].value;
newItem.title = title;
const description = ZU.xpathText(doc, '//meta[@name="description"]/@content');
if (description) {
newItem.abstractNote = description;
}
const authors = ZU.xpath(doc, '//meta[@itemprop="author"]/@content');
const authorFullNames = authors.map(author => author.value);
authorFullNames.forEach((authorFullName) => {
newItem.creators.push(ZU.cleanAuthor(authorFullName, "author", false));
});
const issueNum = ZU.xpathText(doc, '//span[@class="article-publication-details__issue_number"]');
newItem.issue = issueNum;
const pageStart = ZU.xpathText(doc, '//meta[@itemprop="pageStart"]/@content');
const pageEnd = ZU.xpathText(doc, '//meta[@itemprop="pageEnd"]/@content');
newItem.pages = `${pageStart}-${pageEnd}`;
const publicationDate = ZU.xpathText(doc, '//time[@itemprop="datePublished"]/@datetime');
newItem.date = publicationDate;
let pdfUrl = undefined;
const pdfUrlEl = ZU.xpath(doc, '//a[@title="Download PDF version"]');
if (pdfUrlEl[0]) {
pdfUrl = pdfUrlEl[0].href;
}
if (pdfUrl) {
newItem.attachments.push({
url: pdfUrl,
mimeType: "application/pdf",
});
}
newItem.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://newleftreview.org/issues/ii128/articles/georgi-derluguian-a-small-world-war/",
"items": [
{
"itemType": "journalArticle",
"title": "A Small World War",
"creators": [
{
"firstName": "Georgi",
"lastName": "Derluguian",
"creatorType": "author"
}
],
"date": "2021-04-30",
"abstractNote": "At the intersection of Eurasia’s pre-modern empires, Transcaucasia has long been a battlezone. With the waning of American-led globalization, and its legacy of militarization, are their avatars—Russia, Turkey, Iran—re-emerging, equipped with Israeli drones? Georgi Derluguian locates the 2020 war for Nagorno Karabagh in the geopolitical longue durée.",
"issue": "128",
"journalAbbreviation": "New Left Rev",
"libraryCatalog": "New Left Review",
"pages": "24-46",
"publicationTitle": "New Left Review",
"attachments": [
{
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://newleftreview.org/issues/ii115/articles/didier-fassin-anne-claire-defossez-an-improbable-movement",
"items": [
{
"itemType": "journalArticle",
"title": "An Improbable Movement?",
"creators": [
{
"firstName": "Didier",
"lastName": "Fassin",
"creatorType": "author"
},
{
"firstName": "Anne-Claire",
"lastName": "Defossez",
"creatorType": "author"
}
],
"date": "2019-02-01",
"abstractNote": "The policies and pretensions of a Bourbonnais president as background to the political insurgency of provincial France. Origins and complexion of the gilets jaunes mobilization, with the Elysée resorting to the worst police violence since May 68.",
"issue": "115",
"journalAbbreviation": "New Left Rev",
"libraryCatalog": "New Left Review",
"pages": "77-92",
"publicationTitle": "New Left Review",
"attachments": [
{
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://newleftreview.org/issues/ii128",
"items": "multiple"
},
{
"type": "web",
"url": "https://newleftreview.org/issues/ii128/articles/michael-lipkin-domesticating-hegel",
"items": [
{
"itemType": "journalArticle",
"title": "Domesticating Hegel",
"creators": [
{
"firstName": "Michael",
"lastName": "Lipkin",
"creatorType": "author"
}
],
"date": "2021-04-30",
"abstractNote": "Michael Lipkin on Klaus Vieweg, Hegel: Der Philosoph der Freiheit. The author of Philosophy of Right as roistering liberal.",
"issue": "128",
"journalAbbreviation": "New Left Rev",
"libraryCatalog": "New Left Review",
"pages": "153-160",
"publicationTitle": "New Left Review",
"attachments": [
{
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://newleftreview.org/issues/i171",
"items": "multiple"
}
]
/** END TEST CASES **/
100czar^https?://(www\.)?frieze\.com//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2018-2021 czar (http://en.wikipedia.org/wiki/User_talk:Czar)
and Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes("/article/")) { // does not handle /event/ or /media/ pages, which EM alone can handle
if (text(doc, '.article-belongs-to-issue')) {
return "magazineArticle";
}
else {
return "blogPost";
}
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48'); // embedded metadata (EM)
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) { // corrections to EM
item.title = attr(doc, 'meta[property="og:title"]', 'content') || item.title; // EM is putting " | Frieze" at the end
item.publicationTitle = "Frieze";
item.issue = text(doc, '.article-belongs-to-issue');
if (item.issue) {
item.itemType = "magazineArticle";
item.ISSN = "0962-0672";
item.issue = item.issue.replace('Issue ', '');
}
else {
item.itemType = "blogPost";
}
item.date = text(doc, '.article-header-author-info').split('|')[1].trim();
if (item.date) {
// 21 -> 2021
item.date = item.date.replace(/([0-9]{2})$/, '20$1');
item.date = ZU.strToISO(item.date);
}
var authorMetadata = doc.querySelectorAll('.article-header-author-responsive a[href*="/contributor/"]');
for (let author of authorMetadata) {
item.creators.push(ZU.cleanAuthor(author.text, "author"));
}
item.tags = []; // the only tag is "premium"
if (item.abstractNote) {
item.abstractNote = item.abstractNote.replace(/, Frieze$/, '');
}
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.doWeb(doc, url);
});
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.teaser-title a[href*="/article/"]');
for (let i = 0; i < rows.length; i++) {
let href = rows[i].href;
let title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (/\/(event|media)\//.test(href)) continue; // scrap items that link to /event/ or /media/ pages
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
switch (detectWeb(doc, url)) {
case "multiple":
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) {
return;
}
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
break;
case "magazineArticle":
case "blogPost":
scrape(doc, url);
break;
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.frieze.com/article/africa-venice",
"items": [
{
"itemType": "magazineArticle",
"title": "Africa in Venice",
"creators": [
{
"firstName": "Sean",
"lastName": "O'Toole",
"creatorType": "author"
}
],
"date": "2013-09-14",
"ISSN": "0962-0672",
"abstractNote": "The 55th Venice Biennale",
"issue": "157",
"language": "en",
"libraryCatalog": "www.frieze.com",
"publicationTitle": "Frieze",
"url": "https://www.frieze.com/article/africa-venice",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.frieze.com/search?search=%22venice%20biennale%22",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.frieze.com/article/weekend-reading-list-54",
"items": [
{
"itemType": "blogPost",
"title": "Weekend Reading List",
"creators": [
{
"firstName": "Paul",
"lastName": "Clinton",
"creatorType": "author"
}
],
"date": "2017-03-10",
"abstractNote": "From the Women's Strike to a march that cancels itself out: what to read this weekend",
"blogTitle": "Frieze",
"language": "en",
"url": "https://www.frieze.com/article/weekend-reading-list-54",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.frieze.com/article/art-world-overwhelmingly-liberal-still-overwhelmingly-middle-class-and-white-why",
"items": [
{
"itemType": "blogPost",
"title": "The Art World is Overwhelmingly Liberal But Still Overwhelmingly Middle Class and White – Why?",
"creators": [
{
"firstName": "Hettie",
"lastName": "Judah",
"creatorType": "author"
}
],
"date": "2018-07-06",
"abstractNote": "Is the lack of social mobility in the arts due to a self-congratulatory conviction that the sector represents the solution rather than the problem?",
"blogTitle": "Frieze",
"language": "en",
"url": "https://www.frieze.com/article/art-world-overwhelmingly-liberal-still-overwhelmingly-middle-class-and-white-why",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.frieze.com/",
"items": "multiple"
}
]
/** END TEST CASES **/
100czar and Abe Jellinek^https?://(www\.)?mcvuk\.com/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2018-2021 czar (http://en.wikipedia.org/wiki/User_talk:Czar)
and Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (doc.querySelector('meta[name="description"]')) {
return "magazineArticle";
} else if (getSearchResults(doc, true)) {
return "multiple";
}
}
function scrape(doc, url) {
let item = new Zotero.Item('magazineArticle');
let json = JSON.parse(text(doc, '.tie-schema-graph'));
item.title = decodeEntities(json.headline, doc);
item.publicationTitle = "MCV";
item.ISSN = "1469-4832";
item.date = json.dateModified || json.datePublished;
item.url = json.url;
item.abstractNote = decodeEntities(json.description, doc);
item.language = 'en';
for (let tag of json.keywords.split(',')) {
if (tag.toLowerCase().startsWith('mcv')) continue;
item.tags.push({ tag });
}
item.creators.push(ZU.cleanAuthor(json.author.name, 'author'));
if (["Staff", "Editors"].includes(item.creators[0].lastName)) {
delete item.creators[0].firstName; // remove the firstName param
item.creators[0].lastName = "MCV Editors"; // write the desired name to lastName
item.creators[0].fieldMode = 1; // change to single-field mode
}
item.attachments.push({ document: doc, title: 'Snapshot' });
item.complete();
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.post-box-title');
var links = doc.querySelectorAll('.post-box-title a');
for (let i=0; i<rows.length; i++) {
let href = links[i].href;
let title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
switch (detectWeb(doc, url)) {
case "multiple":
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) {
return true;
}
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
break;
case "magazineArticle":
scrape(doc, url);
break;
}
}
function decodeEntities(str, doc) {
if (!str || !str.includes('&') || !doc.createElement) {
return str;
}
// https://stackoverflow.com/questions/7394748/whats-the-right-way-to-decode-a-string-that-has-special-html-entities-in-it/7394787#7394787
var textarea = doc.createElement('textarea');
textarea.innerHTML = str;
return textarea.value;
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.mcvuk.com/business-news/no-dlc-for-rare-replay/",
"items": [
{
"itemType": "magazineArticle",
"title": "No DLC for Rare Replay",
"creators": [
{
"lastName": "MCV Editors",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "2016-01-26T09:45:00+00:00",
"ISSN": "1469-4832",
"abstractNote": "No more games will be added to the Rare Replay collection, the studio has said.UK developer Rare hinted that more games could be added to its package of 30 titles, when engineer James Thomas said on a",
"language": "en",
"libraryCatalog": "MCV",
"publicationTitle": "MCV",
"url": "https://www.mcvuk.com/business-news/no-dlc-for-rare-replay/",
"attachments": [
{
"title": "Snapshot",
"snapshot": true,
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "dlc"
},
{
"tag": "rare"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.mcvuk.com/esports/seagull-quits-pro-overwatch-in-favour-of-streaming/",
"items": [
{
"itemType": "magazineArticle",
"title": "Seagull quits pro Overwatch in favour of streaming",
"creators": [
{
"lastName": "MCV Editors",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "2017-04-14T10:30:00+01:00",
"ISSN": "1469-4832",
"abstractNote": "Arguably the biggest name in professional Overwatch has quit his team in order to focus on streaming. Brandon \"Seagull\" Larned rose to fame when his Twitch stream exploded during the ea",
"language": "en",
"libraryCatalog": "MCV",
"publicationTitle": "MCV",
"url": "https://www.mcvuk.com/esports/seagull-quits-pro-overwatch-in-favour-of-streaming/",
"attachments": [
{
"title": "Snapshot",
"snapshot": true,
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "NRG"
},
{
"tag": "mike-stubbs"
},
{
"tag": "overwatch"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.mcvuk.com/?s=earthbound",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.mcvuk.com/business-news/koch-media-unveils-its-new-gaming-label-prime-matter/",
"items": [
{
"itemType": "magazineArticle",
"title": "Koch Media unveils its new gaming label, Prime Matter",
"creators": [
{
"firstName": "Chris",
"lastName": "Wallace",
"creatorType": "author"
}
],
"date": "2021-06-11T10:36:00+01:00",
"ISSN": "1469-4832",
"abstractNote": "Koch Media has unveiled its new gaming label, titled Prime Matter. The new label will be publishing a variety of new titles across a wide range of genres, as well as some established brands from the l",
"language": "en",
"libraryCatalog": "MCV",
"publicationTitle": "MCV",
"url": "https://www.mcvuk.com/business-news/koch-media-unveils-its-new-gaming-label-prime-matter/",
"attachments": [
{
"title": "Snapshot",
"snapshot": true,
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "koch media"
},
{
"tag": "prime matter"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Adam Crymble and Abe Jellinek^https://(www\.)?(national|financial)post\.com//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, _url) {
let jsonText = text(doc, 'script[type="application/ld+json"]');
if (jsonText && JSON.parse(jsonText)['@type'] == 'NewsArticle') {
return "newspaperArticle";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('a.article-card__link');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, _url) {
let item = new Zotero.Item('newspaperArticle');
let json = JSON.parse(text(doc, 'script[type="application/ld+json"]'));
item.title = json.headline;
item.url = json.url;
item.date = ZU.strToISO(json.dateModified || json.datePublished);
item.abstractNote = json.description;
item.publicationTitle = json.publisher.name;
item.language = 'en';
item.creators.push(ZU.cleanAuthor(json.author.name, 'author'));
if (doc.querySelector('.wire-published-by__authors')) {
item.creators = [];
for (let author of text(doc, '.wire-published-by__authors').split(/, | and /)) {
item.creators.push(ZU.cleanAuthor(author, 'author'));
}
}
item.attachments.push({ title: 'Snapshot', document: doc });
item.libraryCatalog = '';
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://financialpost.com/news/economy/a-really-tough-sell-multinationals-shrug-off-g7-tax-assault",
"items": [
{
"itemType": "newspaperArticle",
"title": "'A really tough sell': Multinationals shrug off G7 tax assault",
"creators": [
{
"firstName": "Richard",
"lastName": "Waters",
"creatorType": "author"
},
{
"firstName": "Emma",
"lastName": "Agyemang",
"creatorType": "author"
},
{
"firstName": "Aziza",
"lastName": "Kasumov",
"creatorType": "author"
},
{
"firstName": "Tim",
"lastName": "Bradshaw",
"creatorType": "author"
}
],
"date": "2021-06-11",
"abstractNote": "The stock market's response has been a collective yawn, while big tech gave a muted welcome to the plans",
"language": "en",
"publicationTitle": "Financial Post",
"shortTitle": "'A really tough sell'",
"url": "https://financialpost.com/news/economy/a-really-tough-sell-multinationals-shrug-off-g7-tax-assault",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://nationalpost.com/entertainment/weekend-post/massive-genre-nerd-kate-herron-calls-loki-a-love-letter-to-sci-fi",
"items": [
{
"itemType": "newspaperArticle",
"title": "'Massive genre nerd' Kate Herron calls Loki a love letter to sci-fi",
"creators": [
{
"firstName": "Chris",
"lastName": "Knight",
"creatorType": "author"
}
],
"date": "2021-06-11",
"abstractNote": "Riffs and references include Brazil, Dune, Blade Runner, The Hitchhiker's Guide to the Galaxy and (almost) Sesame Street",
"language": "en",
"publicationTitle": "National Post",
"url": "https://nationalpost.com/entertainment/weekend-post/massive-genre-nerd-kate-herron-calls-loki-a-love-letter-to-sci-fi",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://nationalpost.com/search/?search_text=uefa&date_range=-30d&sort=score",
"items": "multiple"
}
]
/** END TEST CASES **/
150Sebastian Karcher(cran\..+|cloud\.r-project\.org|/CRAN)/web/packages//*
***** BEGIN LICENSE BLOCK *****
R Packages Translator
Copyright © 2013-2021 Sebastian Karcher
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
/* Some other sample sites:
https://stat.ethz.ch/CRAN/web/packages/MCMCpack/
https://cloud.r-project.org/web/packages/asciiruler/index.html
*/
function detectWeb(doc, url) {
if (text(doc, 'h2')) {
return "computerProgram";
}
else if ((url.includes('/available_packages_by_date.html') || url.includes('/available_packages_by_name.html')) && getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('tr>td>a[href*="/web/packages/"]');
for (let i = 0; i < rows.length; i++) {
let href = rows[i].href;
let title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) {
return;
}
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var item = new Zotero.Item('computerProgram');
item.title = text(doc, 'h2');
var authorString = ZU.xpathText(doc, '//table/tbody/tr/td[contains(text(), "Author")]/following-sibling::td');
if (authorString) {
var creators = authorString.replace(/\[.+?\]/g, '').split(/\s*,\s*/);
for (let i = 0; i < creators.length; i++) {
if (creators[i].trim() == "R Core Team") {
item.creators.push({
lastName: creators[i].trim(),
fieldMode: true,
creatorType: "author"
});
}
else {
item.creators.push(ZU.cleanAuthor(creators[i], 'author'));
}
}
}
item.versionNumber = ZU.xpathText(doc, '//table/tbody/tr/td[contains(text(), "Version")]/following-sibling::td');
item.abstractNote = ZU.trimInternal(text(doc, 'body p') || '');
item.date = ZU.xpathText(doc, '//table/tbody/tr/td[contains(text(), "Published")]/following-sibling::td');
item.rights = ZU.xpathText(doc, '//table/tbody/tr/td[contains(text(), "License")]/following-sibling::td');
item.url = text(doc, 'a>samp') || url;
var tags = ZU.xpath(doc, '//td[contains(text(), "views")]/following-sibling::td/a');
for (let i = 0; i < tags.length; i++) {
item.tags.push(tags[i].textContent);
}
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://lib.stat.cmu.edu/R/CRAN/web/packages/available_packages_by_name.html#available-packages-B",
"items": "multiple"
},
{
"type": "web",
"url": "http://lib.stat.cmu.edu/R/CRAN/web/packages/available_packages_by_date.html",
"items": "multiple"
},
{
"type": "web",
"url": "http://lib.stat.cmu.edu/R/CRAN/web/packages/effects/index.html",
"items": [
{
"itemType": "computerProgram",
"title": "effects: Effect Displays for Linear, Generalized Linear, and Other Models",
"creators": [
{
"firstName": "John",
"lastName": "Fox",
"creatorType": "author"
},
{
"firstName": "Sanford",
"lastName": "Weisberg",
"creatorType": "author"
},
{
"firstName": "Brad",
"lastName": "Price",
"creatorType": "author"
},
{
"firstName": "Michael",
"lastName": "Friendly",
"creatorType": "author"
},
{
"firstName": "Jangman",
"lastName": "Hong",
"creatorType": "author"
},
{
"firstName": "Robert",
"lastName": "Andersen",
"creatorType": "author"
},
{
"firstName": "David",
"lastName": "Firth",
"creatorType": "author"
},
{
"firstName": "Steve",
"lastName": "Taylor",
"creatorType": "author"
},
{
"lastName": "R Core Team",
"fieldMode": true,
"creatorType": "author"
}
],
"date": "2020-08-11",
"abstractNote": "Graphical and tabular effect displays, e.g., of interactions, for various statistical models with linear predictors.",
"libraryCatalog": "R-Packages",
"rights": "GPL-2 | GPL-3 [expanded from: GPL (≥ 2)]",
"shortTitle": "effects",
"url": "https://CRAN.R-project.org/package=effects",
"versionNumber": "4.2-0",
"attachments": [],
"tags": [
{
"tag": "Econometrics"
},
{
"tag": "MachineLearning"
},
{
"tag": "SocialSciences"
},
{
"tag": "TeachingStatistics"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://cran.rstudio.com/web/packages/effects/",
"items": [
{
"itemType": "computerProgram",
"title": "effects: Effect Displays for Linear, Generalized Linear, and Other Models",
"creators": [
{
"firstName": "John",
"lastName": "Fox",
"creatorType": "author"
},
{
"firstName": "Sanford",
"lastName": "Weisberg",
"creatorType": "author"
},
{
"firstName": "Brad",
"lastName": "Price",
"creatorType": "author"
},
{
"firstName": "Michael",
"lastName": "Friendly",
"creatorType": "author"
},
{
"firstName": "Jangman",
"lastName": "Hong",
"creatorType": "author"
},
{
"firstName": "Robert",
"lastName": "Andersen",
"creatorType": "author"
},
{
"firstName": "David",
"lastName": "Firth",
"creatorType": "author"
},
{
"firstName": "Steve",
"lastName": "Taylor",
"creatorType": "author"
},
{
"lastName": "R Core Team",
"fieldMode": true,
"creatorType": "author"
}
],
"date": "2020-08-11",
"abstractNote": "Graphical and tabular effect displays, e.g., of interactions, for various statistical models with linear predictors.",
"libraryCatalog": "R-Packages",
"rights": "GPL-2 | GPL-3 [expanded from: GPL (≥ 2)]",
"shortTitle": "effects",
"url": "https://CRAN.R-project.org/package=effects",
"versionNumber": "4.2-0",
"attachments": [],
"tags": [
{
"tag": "Econometrics"
},
{
"tag": "MachineLearning"
},
{
"tag": "SocialSciences"
},
{
"tag": "TeachingStatistics"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://cloud.r-project.org/web/packages/effects/index.html",
"items": [
{
"itemType": "computerProgram",
"title": "effects: Effect Displays for Linear, Generalized Linear, and Other Models",
"creators": [
{
"firstName": "John",
"lastName": "Fox",
"creatorType": "author"
},
{
"firstName": "Sanford",
"lastName": "Weisberg",
"creatorType": "author"
},
{
"firstName": "Brad",
"lastName": "Price",
"creatorType": "author"
},
{
"firstName": "Michael",
"lastName": "Friendly",
"creatorType": "author"
},
{
"firstName": "Jangman",
"lastName": "Hong",
"creatorType": "author"
},
{
"firstName": "Robert",
"lastName": "Andersen",
"creatorType": "author"
},
{
"firstName": "David",
"lastName": "Firth",
"creatorType": "author"
},
{
"firstName": "Steve",
"lastName": "Taylor",
"creatorType": "author"
},
{
"lastName": "R Core Team",
"fieldMode": true,
"creatorType": "author"
}
],
"date": "2020-08-11",
"abstractNote": "Graphical and tabular effect displays, e.g., of interactions, for various statistical models with linear predictors.",
"libraryCatalog": "R-Packages",
"rights": "GPL-2 | GPL-3 [expanded from: GPL (≥ 2)]",
"shortTitle": "effects",
"url": "https://CRAN.R-project.org/package=effects",
"versionNumber": "4.2-0",
"attachments": [],
"tags": [
{
"tag": "Econometrics"
},
{
"tag": "MachineLearning"
},
{
"tag": "SocialSciences"
},
{
"tag": "TeachingStatistics"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://cran.r-project.org/web/packages/DCEtool/index.html",
"items": [
{
"itemType": "computerProgram",
"title": "DCEtool: Create, Survey and Analyse Discrete Choice Experiments",
"creators": [
{
"firstName": "Daniel Perez",
"lastName": "Troncoso",
"creatorType": "author"
}
],
"date": "2021-05-24",
"abstractNote": "This app is intended to be a complete package for creating, surveying, and analysing discrete choice experiments. Although all these functionalities are available, the app can also be used only to obtain the design of a discrete choice experiment. Reference: Perez-Troncoso, D. (2021) <https://github.com/danielpereztr/DCEtool>.",
"libraryCatalog": "R-Packages",
"rights": "GPL-3",
"shortTitle": "DCEtool",
"url": "https://CRAN.R-project.org/package=DCEtool",
"versionNumber": "0.2.3",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Sebastian Berlin^https?://sverigesradio\.se/(artikel|sok\?)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2018 Sebastian Berlin
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/artikel/')) {
return "newspaperArticle";
}
else if (url.includes('/sok?') && getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('a.search-item');
for (let i = 0; i < rows.length; i++) {
let href = rows[i].href;
let title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) {
return;
}
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setHandler('itemDone', function (obj, item) {
item.publicationTitle = "Sveriges Radio";
item.creators = [];
var nameNodes = ZU.xpath(doc, '//p[@class="byline"]/text()');
for (let node of nameNodes) {
// Take the first two strings of non-spaces as the names. The byline
// can vary in format, including:
// First Last
// First Last SecondLast
// First Last, City
// First Last City, Country
var nameString = node.wholeText.split(" ", 2).join(" ");
var author = ZU.cleanAuthor(nameString, "author");
item.creators.push(author);
}
if (item.creators.length === 1 && item.creators[0].lastName === "Ekot") {
// Special case when only signed as "Ekot", i.e. no person
// specified as author.
item.creators[0].fieldMode = true;
item.creators[0].firstName = undefined;
}
// The title from the meta is in the format:
// Australierna säger ja till samkönade äktenskap - Nyheter (Ekot)
var titleString = attr(doc, 'meta[name="twitter:title"]', "content");
var titleParts = titleString.split(" - ");
item.title = titleParts[0];
item.section = titleParts[1];
var dateString = attr(doc, '.publication-metadata time', 'datetime');
item.date = dateString;
item.tags = [];
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.itemType = "newspaperArticle";
trans.addCustomFields({
'twitter:description': 'abstractNote'
});
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://sverigesradio.se/artikel/6821850",
"items": [
{
"itemType": "newspaperArticle",
"title": "Australierna säger ja till samkönade äktenskap",
"creators": [
{
"lastName": "Ekot",
"creatorType": "author",
"fieldMode": true
}
],
"date": "2017-11-15 00:11:00Z",
"abstractNote": "I en rådgivande postomröstning i Australien svarade 61,6 procent av medborgarna att de ville se en lag som godkänner samkönade äktenskap.",
"language": "sv",
"libraryCatalog": "sverigesradio.se",
"publicationTitle": "Sveriges Radio",
"section": "Nyheter (Ekot)",
"url": "https://sverigesradio.se/artikel/6821850",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://sverigesradio.se/artikel/6865752",
"items": [
{
"itemType": "newspaperArticle",
"title": "Här duschas de äldre av en robot",
"creators": [
{
"firstName": "Emil",
"lastName": "Hellerud",
"creatorType": "author"
}
],
"date": "2018-02-20 06:06:00Z",
"abstractNote": "I Karlstad har äldreomsorgen börjat använda en duschrobot.",
"language": "sv",
"libraryCatalog": "sverigesradio.se",
"publicationTitle": "Sveriges Radio",
"section": "Nyheter (Ekot)",
"url": "https://sverigesradio.se/artikel/6865752",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://sverigesradio.se/artikel/6891473",
"items": [
{
"itemType": "newspaperArticle",
"title": "Stim skriver internationellt avtal med Facebook",
"creators": [
{
"firstName": "Emil",
"lastName": "Salmaso",
"creatorType": "author"
}
],
"date": "2018-02-21 16:26:00Z",
"abstractNote": "Musikskaparnas representantorganisation Stim har skrivit ett internationellt avtal med Facebook.",
"language": "sv",
"libraryCatalog": "sverigesradio.se",
"publicationTitle": "Sveriges Radio",
"section": "Kulturnytt i P1",
"url": "https://sverigesradio.se/artikel/6891473",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://sverigesradio.se/artikel/6892065",
"items": [
{
"itemType": "newspaperArticle",
"title": "HD: Nawaz Sharif får inte leda sitt parti i Pakistan",
"creators": [
{
"firstName": "Margita",
"lastName": "Boström",
"creatorType": "author"
}
],
"date": "2018-02-22 11:44:00Z",
"abstractNote": "Högsta domstolen i Pakistan har slagit fast att landets avsatte premiärminister Nawaz Sharif inte längre får leda det parti han själv grundat.",
"language": "sv",
"libraryCatalog": "sverigesradio.se",
"publicationTitle": "Sveriges Radio",
"section": "Nyheter (Ekot)",
"shortTitle": "HD",
"url": "https://sverigesradio.se/artikel/6892065",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://sverigesradio.se/artikel/6891577",
"items": [
{
"itemType": "newspaperArticle",
"title": "Alarmerande självmordssiffror bland ensamkommande unga",
"creators": [
{
"firstName": "Åsa",
"lastName": "Swee",
"creatorType": "author"
}
],
"date": "2018-02-22 06:21:00Z",
"abstractNote": "Förra året begick 12 ensamkommande barn och ungdomar självmord i Sverige. Ett av fallen skedde i Jämtland.",
"language": "sv",
"libraryCatalog": "sverigesradio.se",
"publicationTitle": "Sveriges Radio",
"section": "P4 Jämtland",
"url": "https://sverigesradio.se/artikel/6891577",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://sverigesradio.se/artikel/6892091",
"items": [
{
"itemType": "newspaperArticle",
"title": "Facebook låg nere – #facebookdown trendar",
"creators": [
{
"firstName": "Karin",
"lastName": "Ingströmer",
"creatorType": "author"
},
{
"firstName": "Estrid",
"lastName": "Wagersten",
"creatorType": "author"
}
],
"date": "2018-02-22 12:09:00Z",
"abstractNote": "Facebook och Instagram fick problem strax före 12. Minuter senare fungerade allt som vanligt för de flesta användare. Under tiden hade #facebookdown använts ...",
"language": "sv",
"libraryCatalog": "sverigesradio.se",
"publicationTitle": "Sveriges Radio",
"section": "P4 Halland",
"url": "https://sverigesradio.se/artikel/6892091",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://sverigesradio.se/artikel/6894423",
"items": [
{
"itemType": "newspaperArticle",
"title": "Siberian 'Beast from the East' keeps Swedish kids inside",
"creators": [
{
"firstName": "Richard",
"lastName": "Orange",
"creatorType": "author"
}
],
"date": "2018-02-26 13:31:00Z",
"abstractNote": "A Siberian cold front has brought Sweden unusually cold temperatures for late February. It was -42C when Kristina Lindqvist left home for her job at the ...",
"language": "en",
"libraryCatalog": "sverigesradio.se",
"publicationTitle": "Sveriges Radio",
"section": "Radio Sweden",
"url": "https://sverigesradio.se/artikel/6894423",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://sverigesradio.se/sok?query=choklad",
"defer": true,
"items": "multiple"
},
{
"type": "web",
"url": "https://sverigesradio.se/artikel/har-gor-den-svenska-extrabubblan-sin-forsta-traning",
"items": [
{
"itemType": "newspaperArticle",
"title": "Här gör den svenska ”extrabubblan” sin första träning",
"creators": [
{
"firstName": "",
"lastName": "Radiosporten",
"creatorType": "author"
}
],
"date": "2021-06-11 20:03:00Z",
"abstractNote": "Under fredagen genomfördes den första träningen för de sex spelare som blixtinkallats till fotbollslandslagets extrabubbla. De som ska vara redo att skrivas ...",
"language": "sv",
"libraryCatalog": "sverigesradio.se",
"publicationTitle": "Sveriges Radio",
"section": "Radiosporten",
"url": "https://sverigesradio.se/artikel/har-gor-den-svenska-extrabubblan-sin-forsta-traning",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Sebastian Karcher and Emiliano Heyns^https?://(www\.)?oed\.com//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2013-2021 Sebastian Karcher and Emiliano Heyns
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.match(/\/search\?/) && getSearchResults(doc, true)) return 'multiple';
if (url.match(/\/view\/Entry\//)) return 'dictionaryEntry';
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('#results .word a');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) === 'multiple') {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
let item = new Zotero.Item('dictionaryEntry');
item.url = url.replace(/\?.+/, '');
item.title = ZU.trimInternal(text(doc, 'h1 .hwSect') || '');
item.attachments = [
{
url: url,
title: "OED snapshot",
mimeType: "text/html"
}
];
item.language = 'en-GB';
item.publisher = 'Oxford University Press';
item.publicationTitle = 'OED Online';
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.oed.com/view/Entry/104732",
"items": [
{
"itemType": "dictionaryEntry",
"title": "labour | labor, n.",
"creators": [],
"dictionaryTitle": "OED Online",
"language": "en-GB",
"libraryCatalog": "Oxford English Dictionary",
"publisher": "Oxford University Press",
"url": "https://www.oed.com/view/Entry/104732",
"attachments": [
{
"title": "OED snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.oed.com/search?searchType=dictionary&q=labor&_searchBtn=Search",
"items": "multiple"
}
]
/** END TEST CASES **/
100Vincent Carret^https?://(www\.)?scinapse\.io//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2019-2021 Vincent Carret
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if ((url.includes('/journals/') || url.includes('/authors/') || url.includes('/search?')) && getSearchResults(doc, true)) {
return "multiple";
}
else if (url.includes("/papers/")) {
return "journalArticle";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll("a[href*='/papers/']");
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrapeEM(doc, url, postprocess) {
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
item.abstractNote = item.abstractNote.replace(/^Abstract/, '')
.split(' | ')[0];
item.date = ZU.strToISO(item.date);
item.attachments = [];
postprocess(item);
});
translator.getTranslatorObject(function (trans) {
trans.itemType = "journalArticle";
trans.doWeb(doc, url);
});
}
function scrape(doc, url) {
scrapeEM(doc, url, function (item) {
item.attachments.push({
title: "Full Text PDF",
url: attr(doc, 'a[href*=".pdf"][target="_blank"]', 'href'),
mimeType: 'application/pdf'
});
var m = url.match(/\/papers\/([^/#?]+)/);
if (m) {
var bibUrl = "/api/citations/export?pids=" + m[1] + "&format=BIBTEX";
ZU.doGet(bibUrl, function (text, xhr) {
if (xhr.status != 200) {
Z.debug("Couldn't fetch BibTeX");
// it's fine, we'll return what EM gave us
item.complete();
return;
}
var translator = Zotero.loadTranslator("import");
// BibTeX
translator.setTranslator("9cb70025-a888-4a29-a210-93ec52da40d4");
translator.setString(text);
translator.setHandler("itemDone", function (obj, bibItem) {
if (bibItem.publicationTitle) {
// BibTeX publication title is better
delete item.publicationTitle;
}
if (bibItem.url) {
// EM URL is just the page URL
delete item.url;
}
Object.assign(bibItem, item);
bibItem.complete();
});
translator.translate();
}, null, null, null, false);
}
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.scinapse.io/papers/2981511200",
"items": [
{
"itemType": "journalArticle",
"title": "Natural resources in the theory of production: the Georgescu-Roegen/Daly versus Solow/Stiglitz controversy",
"creators": [
{
"firstName": "Quentin",
"lastName": "Couix",
"creatorType": "author"
}
],
"date": "2019-10-23",
"DOI": "10.1080/09672567.2019.1679210",
"ISSN": "0967-2567",
"abstractNote": "This paper provides a theoretical and methodological account of an important controversy between neocl",
"issue": "6",
"itemID": "Couix_2019",
"language": "en",
"libraryCatalog": "www.scinapse.io",
"pages": "1341–1378",
"publicationTitle": "The European Journal of the History of Economic Thought",
"shortTitle": "Natural resources in the theory of production",
"url": "https://doi.org/10.1080%2F09672567.2019.1679210",
"volume": "26",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://scinapse.io/journals/105799767",
"items": "multiple"
},
{
"type": "web",
"url": "https://scinapse.io/authors/290705619",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.scinapse.io/papers/2908678941",
"items": [
{
"itemType": "journalArticle",
"title": "Electrospun polymer biomaterials",
"creators": [
{
"firstName": "Jianxun",
"lastName": "Ding",
"creatorType": "author"
},
{
"firstName": "Jin",
"lastName": "Zhang",
"creatorType": "author"
},
{
"firstName": "Jiannan",
"lastName": "Li",
"creatorType": "author"
},
{
"firstName": "Di",
"lastName": "Li",
"creatorType": "author"
},
{
"firstName": "Chunsheng",
"lastName": "Xiao",
"creatorType": "author"
},
{
"firstName": "Haihua",
"lastName": "Xiao",
"creatorType": "author"
},
{
"firstName": "Huanghao",
"lastName": "Yang",
"creatorType": "author"
},
{
"firstName": "Huang-Hao",
"lastName": "Yang",
"creatorType": "author"
},
{
"firstName": "Xiuli",
"lastName": "Zhuang",
"creatorType": "author"
},
{
"firstName": "Xuesi",
"lastName": "Chen",
"creatorType": "author"
}
],
"date": "2019-01-14",
"DOI": "10.1016/J.PROGPOLYMSCI.2019.01.002",
"ISSN": "0079-6700",
"abstractNote": "Electrospinning provides a versatile technique for the preparation of matrices with micro/nanoscopi",
"itemID": "Ding_2019",
"language": "en",
"libraryCatalog": "www.scinapse.io",
"pages": "1–34",
"publicationTitle": "Progress in Polymer Science",
"url": "https://doi.org/10.1016%2Fj.progpolymsci.2019.01.002",
"volume": "90",
"attachments": [
{
"title": "Full Text PDF",
"url": "",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100PChemGuy^https?://(search|favorites|aleph)\.rsl\.ru//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2020-2021 PChemGuy
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
/*
Testing/troubleshooting issues in Scaffold (valid as of April 2020):
Care must be taken when loading an additional translator as a preprocessor.
setTranslator:
- does not throw any errors when invalid translator id is supplied;
- does not provide any human readable feedback with translator name, so
even if a valid translator id for a wrong translator is supplied,
no immediate feedback is supplied.
In both cases "Translation successful" status is likely to be returned.
Working environment: Windows 7 x64
*/
/*
RSL has two primary catalog interfaces:
https://search.rsl.ru (sRSL)
http://aleph.rsl.ru (aRSL)
search.rsl.ru records can be accessed via search.rsl.ru/(ru|en)/record/<RID>
aleph.rsl.ru is a total mess, a very basic partial support for single record
saving is implemented.
search.rsl.ru/(ru|en)/download/marc21?id=<RID> interface provides access to
binary MARC21 records, but requires prior authentication, so they are not used.
Translator's logic for both catalogs involves parsing the web page into MARCXML,
loading MARCXML translator for initial processing, followed by postprocessing as
necessary.
Postprocessing for search.rsl.ru aslo involves parsing of the human readable
descriptioto harvest additional metadata.
TODO:
search.rsl.ru - some records contain expandable "Consists of" or "Periodicals"
reference with an arrow, when displayed as part of a search result, and "Contents"
tab on the record page, referring to related/constituent records. Such references
may potentially be processed via the "multiple" routine, but such processing
is not implemented.
*/
/*
Item type is adjusted based on the catalog information. Present implementation
assumes that each record belongs to a single catalog (it is not clear whether
this is correct or not.)
Russian style thesis abstracts are more like manuscripts, but they are assigned
the "thesis" type, with additional type note added to the "Extra" field.
At present, technical standards are commonly mapped to Zotero "report" due to
lack of a dedicated type. Such a type is expected to be implemented in the near
future, but for the time being a type note is added to the "Extra" field.
The following catalogs are supported. For items beloning to other catalogs no
type adjustment is made.
*/
const catalog2type = {
"Книги (изданные с 1831 г. по настоящее время)": "book",
"Старопечатные книги (изданные с 1450 по 1830 г.)": "book",
"Сериальные издания (кроме газет)": "journal",
"Авторефераты диссертаций": "thesisAutoreferat",
Диссертации: "thesis",
Стандарты: "standard"
};
/*
Filter strings used for extraction of metadata from
https://search.rsl.ru/(ru|en)/record/<RSLID>
https://search.rsl.ru/(ru|en)/search#
https://favorites.rsl.ru/(ru|en)/
*/
const sRSLFilters = {
libraryCatalog: "Российская Государственная Библиотека",
marcTableCSS: "div#marc-rec > table",
descTableCSS: "table.card-descr-table",
searchListCSS: "span.js-item-maininfo",
searchRecordRslidAttr: "data-id",
searchRecordTitle: /^[^:/[]*/,
searchPattern: "https://search.rsl.ru/ru/search#q=id:{@id@} AND title:({@title@})",
rslidPrefix: "https://search.rsl.ru/ru/record/",
thesisRelAttr: "href",
thesisRelPrefix: "/ru/transition/",
thesisRelCSS: 'a[href^="/ru/transition/"]',
favRslidCSS: "a.rsl-link",
favDescCSS: "div.rsl-fav-item-descr",
title: "Заглавие",
catalog: "Каталоги",
bbk: "BBK-код",
callNumber: "Места хранения",
eResource: "Электронный адрес"
};
/*
Filter strings for extraction of metadata from
aleph.rsl.ru
*/
const aRSLFilters = {
marcTableTagCSS: "td.td1[nowrap]",
marcTableValCSS: "td.td1:not([nowrap])",
marcTableSetCSS: 'a[title="Добавить в подборку"]',
recordMarcSignature: "&format=001",
recordStandardSignature: "&format=999",
recordFormatRegex: /&format=[0-9]{3}/,
urlPrefix: "http://aleph.rsl.ru/F/",
};
const baseEurl = 'https://dlib.rsl.ru/';
/**
* Adds link attachment to a Zotero item.
*
* @param {Object} item - Zotero item
* @param {String} title - Link name
* @param {String} url - Link url
*
* @return {None}
*/
function addLink(item, title, url) {
item.attachments.push({
title: title,
snapshot: false,
contentType: "text/html",
url: url
});
}
/*
Scaffold issue (valid as of April 2020):
When detectWeb is run via
- "Ctrl/Cmd-T", "doc" receives "object HTMLDocument";
- "Run test", "doc" receives JS object (not sure about details).
Both objects have doc.location.host defined.
When tester runs a web translator on a search results page, it fails to
present the search result selection dialog and throws an error:
"Error: Translator called select items with no items"
When tester is called on "https://search.rsl.ru/ru/search#q=math", the part
starting with the hashtag is lost and not passed to the processing function
(not available from either "url" or "doc").
Working environment: Windows 7 x64
*/
function detectWeb(doc, url) {
let domain = url.match(/^https?:\/\/([^/]*)/)[1];
let subdomain = domain.slice(0, -'.rsl.ru'.length);
let pathname = doc.location.pathname;
// Z.debug(subdomain);
switch (subdomain) {
case 'search':
if (pathname.includes('/search')) {
return 'multiple';
}
else if (pathname.includes('/record/')) {
let metadata = getRecordDescriptionsRSL(doc, url);
let itemType = metadata.itemType;
if (itemType == 'thesis') {
if (metadata.relatedURL['Autoreferat RSL record']
|| metadata.relatedURL['Thesis RSL record']) {
return 'multiple';
}
}
// Z.debug(metadata);
return itemType ? itemType : 'book';
}
else {
Z.debug('Catalog section not supported');
return false;
}
case 'favorites':
return 'multiple';
case 'aleph':
/*
There are other single record patterns, but the full repertoire
is unclear. Only this pattern is supported
*/
if (url.includes('func=full-set-set')) {
return 'book';
/*
There are other single record patterns, but the full repertoire
is unclear. Due to awful implementation, "multiple" is not supported.
*/
}
else if (url.match(/func=(find-[abcm]|basket-short|(history|short)-action)/)) {
Z.debug('Due to awful implementation, "multiple" is not supported.');
// return 'multiple';
return false;
}
else {
Z.debug('Catalog section not supported');
return false;
}
default:
Z.debug('Subdomain not supported: ' + subdomain);
return false;
}
}
/*
Scaffold issue (date detected: April 2020):
When detectWeb is run via
"Ctrl/Cmd-T", "doc" receives "HTMLDocument object";
"Run test", "doc" receives JS object (not sure about details).
Working environment: Windows 7 x64
*/
function doWeb(doc, url) {
// Zotero.debug(doc);
// Z.debug(doc.toString());
let domain = url.match(/^https?:\/\/([^/]*)/)[1];
let subdomain = domain.slice(0, -'.rsl.ru'.length);
if (detectWeb(doc, url) != 'multiple') {
switch (subdomain) {
case 'search':
scrape(doc, url);
break;
case 'aleph':
if (url.includes(aRSLFilters.recordMarcSignature)) {
scrape(doc, url);
}
else {
let href = aRSLFilters.urlPrefix + '?'
+ url.split('?')[1].replace(aRSLFilters.recordFormatRegex,
aRSLFilters.recordMarcSignature);
ZU.processDocuments([href], scrape);
}
break;
default:
Z.debug('Subdomain not supported');
}
}
else {
let pathname = doc.location.pathname;
var records;
if (pathname.includes('/record/')) {
let metadata = getRecordDescriptionsRSL(doc, url);
let itemType = metadata.itemType;
records = {};
if (itemType == 'thesis' && metadata.relatedURL['Autoreferat RSL record']) {
records[url] = 'Thesis';
records[metadata.relatedURL['Autoreferat RSL record']] = 'Autoreferat';
}
else if (itemType == 'thesis' && metadata.relatedURL['Thesis RSL record']) {
records[metadata.relatedURL['Thesis RSL record']] = 'Thesis';
records[url] = 'Autoreferat';
}
else {
Z.debug('Unsupported case of related records');
}
}
else {
records = getSearchResults(doc, url);
}
Zotero.selectItems(records,
function (records) {
if (records) ZU.processDocuments(Object.keys(records), scrape);
}
);
}
}
function scrape(doc, url) {
// Convert HTML table of MARC record to MARCXML
let recordMarcxml;
let scrapeCallback;
let domain = url.match(/^https?:\/\/([^/]*)/)[1];
let subdomain = domain.slice(0, -'.rsl.ru'.length);
switch (subdomain) {
case 'search':
recordMarcxml = getMarcxmlsRSL(doc);
scrapeCallback = scrapeCallbacksRSL;
break;
case 'aleph':
recordMarcxml = getMarcxmlaRSL(doc);
scrapeCallback = scrapeCallbackaRSL;
break;
default:
Z.debug('Subdomain not supported');
return;
}
// Z.debug('\n' + recordMarcxml);
// call MARCXML translator
const MarcxmlTid = 'edd87d07-9194-42f8-b2ad-997c4c7deefd';
let trans = Zotero.loadTranslator('import');
trans.setTranslator(MarcxmlTid);
trans.setString(recordMarcxml);
trans.setHandler('itemDone', scrapeCallback(doc, url));
trans.translate();
}
/*
Additional processing after the MARCXML translator for search.rsl.ru
Adjust item type based on catalog information for supported catalogs. For
types not available in Zotero, "type" annotation is added to the "extra"
field. Add the following information:
RSL record ID,
call numbers (semicolon separated),
catalog/item type,
BBK codes (semicolon separated),
electronic url, if available.
*/
function scrapeCallbacksRSL(doc, url) {
function callback(obj, item) {
// Zotero.debug(item);
let metadata = getRecordDescriptionsRSL(doc, url);
// Z.debug(metadata);
if (metadata.itemType) {
item.itemType = metadata.itemType;
}
item.url = metadata.url;
item.libraryCatalog = sRSLFilters.libraryCatalog;
item.callNumber = metadata[sRSLFilters.callNumber];
item.archive = metadata[sRSLFilters.catalog];
let extra = [];
extra.push('RSLID: ' + metadata.rslid);
if (metadata.extraType) {
extra.push('Type: ' + metadata.extraType);
}
if (metadata[sRSLFilters.bbk]) {
extra.push('BBK: ' + metadata[sRSLFilters.bbk]);
}
if (item.extra) {
extra.push(item.extra);
}
item.extra = extra.join('\n');
// Z.debug(item.attachments[0]);
let rURLs = metadata.relatedURL;
Object.keys(rURLs).forEach(key => addLink(item, key, rURLs[key]));
// Z.debug(item);
item.complete();
}
return callback;
}
/*
Additional processing after the MARCXML translator for aleph.rsl.ru
*/
function scrapeCallbackaRSL(doc, url) {
function callback(obj, item) {
// RSLID
let add2set = attr(doc, aRSLFilters.marcTableSetCSS, 'href');
let RSLID = add2set.match(/&doc_library=RSL([0-9]{2})/)[1]
+ add2set.match(/&doc_number=([0-9]{9})/)[1];
let extra = ['RSLID: ' + RSLID];
if (item.extra) {
extra.push(item.extra);
}
item.extra = extra.join('\n');
item.url = aRSLFilters.urlPrefix + '?'
+ url.split('?')[1].replace(aRSLFilters.recordFormatRegex,
aRSLFilters.recordStandardSignature);
let metadata = {};
metadata.relatedURL = {};
let href = sRSLFilters.rslidPrefix + RSLID;
metadata.relatedURL['search.rsl.ru'] = href;
let rURLs = metadata.relatedURL;
Object.keys(rURLs).forEach(key => addLink(item, key, rURLs[key]));
// Z.debug(item);
item.complete();
}
return callback;
}
function getSearchResults(doc, url) {
let domain = url.match(/^https?:\/\/([^/]*)/)[1];
let subdomain = domain.slice(0, -'.rsl.ru'.length);
let records = {};
if (subdomain == 'search') {
let rows = doc.querySelectorAll(sRSLFilters.searchListCSS);
// ZU.processDocuments(url, function (doc, url) { Z.debug(doc); });
// ZU.doGet(url, function (responseText, response, url) { Z.debug(response); });
for (let row of rows) {
let href = sRSLFilters.rslidPrefix
+ row.getAttribute(sRSLFilters.searchRecordRslidAttr);
records[href] = row.innerText.match(sRSLFilters.searchRecordTitle)[0];
}
}
else if (subdomain == 'favorites') {
let rows = doc.querySelectorAll(sRSLFilters.favRslidCSS);
for (let row of rows) {
let href = row.href;
records[href] = row.parentNode.parentNode.querySelector(sRSLFilters.favDescCSS).innerText.match(sRSLFilters.searchRecordTitle)[0];
}
}
return records;
}
/**
* Parses record table with MARC data https://search.rsl.ru/(ru|en)/record/<RSLID>.
* Returned MARCXML string can be processed using the MARCXML import translator.
*
* @return {String} - MARCXML record
*/
function getMarcxmlsRSL(doc) {
let irow = 0;
let marc21TableRows = doc.querySelector(sRSLFilters.marcTableCSS).rows;
let marcxmlLines = [];
marcxmlLines.push(
'<?xml version="1.0" encoding="UTF-8"?>',
'<record xmlns="http://www.loc.gov/MARC21/slim" type="Bibliographic">',
' <leader>' + marc21TableRows[0].cells[1].innerText.replace(/#/g, ' ') + '</leader>'
);
irow++;
// Control fields
for (irow; irow < marc21TableRows.length; irow++) {
let curCells = marc21TableRows[irow].cells;
let fieldTag = curCells[0].innerText;
let fieldVal = curCells[1].innerText;
if (Number(fieldTag) > 8) {
break;
}
marcxmlLines.push(
' <controlfield tag="' + fieldTag + '">' + fieldVal.replace(/#/g, ' ') + '</controlfield>'
);
}
// Data fields
for (irow; irow < marc21TableRows.length; irow++) {
let curCells = marc21TableRows[irow].cells;
let fieldTag = curCells[0].innerText;
/*
Subfield separator is '$'. Subfield separator always comes right after a tag,
so triple all '$' that follow immediately after '>' before stripping HTML tags
to prevent collisions with potential occurences of '$' as part of subfield contets.
*/
curCells[1].innerHTML = curCells[1].innerHTML.replace(/>\$/g, '>$$$$$$');
let fieldVal = curCells[1].innerText;
let subfields = fieldVal.split('$$$');
curCells[1].innerHTML = curCells[1].innerHTML.replace(/\$\$\$/g, '$$');
let inds = subfields[0].replace(/#/g, ' ');
// Data field tag and indicators
marcxmlLines.push(
' <datafield tag="' + fieldTag + '" ind1="' + inds[0] + '" ind2="' + inds[1] + '">'
);
// Subfields
for (let isubfield = 1; isubfield < subfields.length; isubfield++) {
// Split on first <space> character to extract the subfield code and its contents
let subfield = subfields[isubfield].replace(/\s/, '\x01').split('\x01');
marcxmlLines.push(
' <subfield code="' + subfield[0] + '">' + subfield[1] + '</subfield>'
);
}
marcxmlLines.push(
' </datafield>'
);
}
marcxmlLines.push(
'</record>'
);
return marcxmlLines.join('\n');
}
/**
* Parses record table with human readable bibliographic description on
* https://search.rsl.ru/(ru|en)/record/<RSLID> and constructs metadata object.
* Returned metadata object can be used for additional processing of the output
* produced by the MARCXML import translator.
*
* @return {Object} - extracted metadata.
*/
function getRecordDescriptionsRSL(doc, url) {
let irow;
let metadata = {};
let propertyName = '';
let propertyValue = '';
let descTableRows = doc.querySelector(sRSLFilters.descTableCSS).rows;
// Parse description table
for (irow = 0; irow < descTableRows.length; irow++) {
let curCells = descTableRows[irow].cells;
let buffer = curCells[0].innerText;
if (buffer) {
metadata[propertyName] = propertyValue;
propertyName = buffer;
propertyValue = curCells[1].innerText;
}
else {
propertyValue = propertyValue + '; ' + curCells[1].innerText;
}
}
metadata[propertyName] = propertyValue;
delete metadata[''];
// Record type
let type = catalog2type[metadata[sRSLFilters.catalog]];
if (type) {
metadata.type = type;
metadata.itemType = type;
}
// Record ID
metadata.rslid = url.slice(sRSLFilters.rslidPrefix.length);
// URL
metadata.url = url;
// Array of link attachments: {title: title, url: url}
metadata.relatedURL = {};
/*
Some metadata is only included with the record when displayed as part
of search result. Here a search query is constructed combining (AND)
record title and system record id, which is RSL ID without the two
most significant digits.
*/
let href = sRSLFilters.searchPattern
.replace(/\{@title@\}/, metadata[sRSLFilters.title])
.replace(/\{@id@\}/, metadata.rslid.slice(2));
metadata.relatedURL['via search'] = href;
// E-resource
if (metadata[sRSLFilters.eResource]) {
let eurl = baseEurl + metadata.rslid;
metadata.relatedURL['E-resource'] = eurl;
}
// Workaround until implementation of a "technical standard" type
if (type == 'standard') {
metadata.itemType = 'report';
metadata.extraType = type;
}
if (type == 'journal') {
metadata.itemType = 'book';
metadata.extraType = type;
}
// Complementary thesis/autoreferat record if availabless
if (type == 'thesis') {
let aurl = attr(doc, sRSLFilters.thesisRelCSS, sRSLFilters.thesisRelAttr);
if (aurl) {
aurl = sRSLFilters.rslidPrefix
+ aurl.slice(sRSLFilters.thesisRelPrefix.length
+ metadata.rslid.length + '/'.length);
metadata.relatedURL['Autoreferat RSL record'] = aurl;
}
}
if (type == 'thesisAutoreferat') {
// From citation point of view, the "manuscript" type might be more suitable
// On the other hand, the thesis should be cited rather then this paper anyway.
metadata.itemType = 'thesis';
let turl = attr(doc, sRSLFilters.thesisRelCSS, sRSLFilters.thesisRelAttr);
if (turl) {
turl = sRSLFilters.rslidPrefix
+ turl.slice(sRSLFilters.thesisRelPrefix.length
+ metadata.rslid.length + '/'.length);
metadata.relatedURL['Thesis RSL record'] = turl;
}
metadata.extraType = type;
}
return metadata;
}
/**
* Parses record table with MARC data from aleph.rsl.ru.
* Returned MARCXML string can be processed using the MARCXML import translator.
*
* @return {String} - MARCXML record
*/
function getMarcxmlaRSL(doc) {
// -------------- Parse MARC table into a MARC array object -------------- //
let marcTags = doc.querySelectorAll(aRSLFilters.marcTableTagCSS);
let marcVals = doc.querySelectorAll(aRSLFilters.marcTableValCSS);
let marc = [];
if (marcTags.length < 1) {
return '';
}
// Leader
marc.push([marcTags[1].innerText.padEnd(5, ' '), marcVals[1].innerText]);
for (let fieldCount = 2; fieldCount < marcTags.length; fieldCount++) {
let tag = marcTags[fieldCount].innerText;
if (Number(tag)) {
tag = tag.padEnd(5, ' ');
marc.push([tag, marcVals[fieldCount].innerText]);
}
}
if (marc.length < 5) {
return '';
}
// ---------- Format MARCXML from the prepared MARC array object --------- //
let irow = 0;
let marcxmlLines = [];
marcxmlLines.push(
'<?xml version="1.0" encoding="UTF-8"?>',
'<record xmlns="http://www.loc.gov/MARC21/slim" type="Bibliographic">',
' <leader>' + marc[1][1] + '</leader>'
);
irow++;
// Control fields
for (irow; irow < marc.length; irow++) {
let fieldTag = marc[irow][0].slice(0, 3);
let fieldVal = marc[irow][1];
if (Number(fieldTag) > 8) {
break;
}
marcxmlLines.push(
' <controlfield tag="' + fieldTag + '">' + fieldVal + '</controlfield>'
);
}
// Data fields
for (irow; irow < marc.length; irow++) {
let fieldTag = marc[irow][0].slice(0, 3);
let fieldInd = marc[irow][0].slice(3);
let fieldVal = marc[irow][1];
// Data field tag and indicators
marcxmlLines.push(' <datafield tag="' + fieldTag
+ '" ind1="' + fieldInd[0]
+ '" ind2="' + fieldInd[1] + '">');
// Subfields
let subfields = fieldVal.split('|');
for (let isubfield = 1; isubfield < subfields.length; isubfield++) {
// Split on first <space> character to extract the subfield code and its contents
let subfield = subfields[isubfield].replace(/\s/, '\x01').split('\x01');
marcxmlLines.push(
' <subfield code="' + subfield[0] + '">' + subfield[1] + '</subfield>'
);
}
marcxmlLines.push(
' </datafield>'
);
}
marcxmlLines.push(
'</record>'
);
return marcxmlLines.join('\n');
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://search.rsl.ru/ru/record/01002457709",
"items": [
{
"itemType": "book",
"title": "Study of the ⁴He+²⁰⁹Bi fusion reaction",
"creators": [
{
"firstName": "A. A.",
"lastName": "Hassan",
"creatorType": "editor"
}
],
"date": "2003",
"archive": "Книги (изданные с 1831 г. по настоящее время)",
"callNumber": "FB 3 04-32/701",
"extra": "RSLID: 01002457709\nBBK: В383.5,09",
"language": "eng",
"libraryCatalog": "Российская Государственная Библиотека",
"numPages": "11",
"place": "Дубна",
"publisher": "Объед. ин-т ядер. исслед",
"series": "Объединенный ин-т ядерных исследований, Дубна",
"seriesNumber": "E15-2003-186",
"url": "https://search.rsl.ru/ru/record/01002457709",
"attachments": [
{
"title": "via search",
"snapshot": false,
"contentType": "text/html"
}
],
"tags": [
{
"tag": "Физико-математические науки -- Физика -- Физика атомного ядра -- Ядерные реакции"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://search.rsl.ru/ru/record/01007721928",
"items": "multiple"
},
{
"type": "web",
"url": "https://search.rsl.ru/ru/record/01009512194",
"items": "multiple"
},
{
"type": "web",
"url": "https://search.rsl.ru/ru/record/01000580022",
"items": [
{
"itemType": "book",
"title": "Труды Международной конференции \"Математика в индустрии\", 29 июня - 3 июля 1998 года",
"creators": [],
"date": "1998",
"ISBN": "9785879761405",
"archive": "Книги (изданные с 1831 г. по настоящее время)",
"callNumber": "FB 2 98-27/128; FB 2 98-27/129",
"extra": "RSLID: 01000580022\nBBK: Ж.с11я431(0)",
"language": "rus",
"libraryCatalog": "Российская Государственная Библиотека",
"numPages": "352",
"place": "Таганрог",
"publisher": "Изд-во Таганрог. гос. пед. ин-та",
"url": "https://search.rsl.ru/ru/record/01000580022",
"attachments": [
{
"title": "via search",
"snapshot": false,
"contentType": "text/html"
}
],
"tags": [
{
"tag": "Техника и технические науки -- Применение математических методов -- Материалы конференции"
}
],
"notes": [
{
"note": "В надзаг.: М-во общ. и проф. образования РФ. Таганрог. гос. пед. ин-т На обл. в подзаг.: ICIM - 98 Текст рус., англ Посвящается 300-летию основания г. Таганрога"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://search.rsl.ru/ru/record/01004044482",
"items": [
{
"itemType": "book",
"title": "Химия. Неорганическая химия: учебник для 8 класса общеобразовательных учреждений",
"creators": [
{
"firstName": "Гунтис Екабович",
"lastName": "Рудзитис",
"creatorType": "author"
},
{
"firstName": "Фриц Генрихович",
"lastName": "Фельдман",
"creatorType": "author"
}
],
"date": "2008",
"ISBN": "9785090198592",
"archive": "Книги (изданные с 1831 г. по настоящее время)",
"callNumber": "FB 3 08-13/261",
"edition": "12-е изд., испр",
"extra": "RSLID: 01004044482\nBBK: Г1я721-1",
"language": "rus",
"libraryCatalog": "Российская Государственная Библиотека",
"numPages": "175",
"place": "Москва",
"publisher": "Просвещение",
"shortTitle": "Химия. Неорганическая химия",
"url": "https://search.rsl.ru/ru/record/01004044482",
"attachments": [
{
"title": "via search",
"snapshot": false,
"contentType": "text/html"
}
],
"tags": [
{
"tag": "Химические науки -- Общая и неорганическая химия -- Учебник для средней общеобразовательной школы"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://search.rsl.ru/ru/record/01008704042",
"items": "multiple"
},
{
"type": "web",
"url": "https://search.rsl.ru/ru/record/01010006646",
"items": "multiple"
},
{
"type": "web",
"url": "https://search.rsl.ru/ru/record/01008942252",
"items": [
{
"itemType": "report",
"title": "Товары бытовой химии. Метод определения щелочных компонентов: Goods of household chemistry. Method for determination of alkaline components: государственный стандарт Российской Федерации: издание официальное: утвержден и введен в действие Постановлением Госстандарта России от 29 января 1997 г. № 26: введен впервые: введен 1998-01-01",
"creators": [],
"date": "1997",
"archive": "Стандарты",
"callNumber": "SVT ГОСТ Р 51021-97",
"extra": "RSLID: 01008942252\nType: standard",
"institution": "Изд-во стандартов",
"language": "rus",
"libraryCatalog": "Российская Государственная Библиотека",
"place": "Москва",
"shortTitle": "Товары бытовой химии. Метод определения щелочных компонентов",
"url": "https://search.rsl.ru/ru/record/01008942252",
"attachments": [
{
"title": "via search",
"snapshot": false,
"contentType": "text/html"
},
{
"title": "E-resource",
"snapshot": false,
"contentType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://search.rsl.ru/ru/record/01007057068",
"items": [
{
"itemType": "book",
"title": "Химия и реставрация",
"creators": [],
"date": "1970",
"archive": "Книги (изданные с 1831 г. по настоящее время)",
"callNumber": "FB Бр 130/952; FB Бр 130/953; FB Арх",
"extra": "RSLID: 01007057068",
"language": "rus",
"libraryCatalog": "Российская Государственная Библиотека",
"numPages": "10",
"place": "Москва",
"publisher": "б. и.",
"series": "Химия/ М-во культуры СССР",
"seriesNumber": "70",
"url": "https://search.rsl.ru/ru/record/01007057068",
"attachments": [
{
"title": "via search",
"snapshot": false,
"contentType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://search.rsl.ru/ru/record/01000681096",
"items": [
{
"itemType": "book",
"title": "Тезисы докладов Межрегиональной научной конференции \"Химия на пути в XXI век\", Ухта, 13-14 марта 2000 г",
"creators": [],
"date": "2000",
"ISBN": "9785881792152",
"archive": "Книги (изданные с 1831 г. по настоящее время)",
"callNumber": "FB 2 00-8/1758-0; FB 2 00-8/1759-9",
"extra": "RSLID: 01000681096\nBBK: Г.я431(2)",
"language": "rus",
"libraryCatalog": "Российская Государственная Библиотека",
"numPages": "46",
"place": "Ухта",
"publisher": "Ухт. гос. техн. ун-т",
"url": "https://search.rsl.ru/ru/record/01000681096",
"attachments": [
{
"title": "via search",
"snapshot": false,
"contentType": "text/html"
}
],
"tags": [
{
"tag": "Химия -- Материалы конференции"
}
],
"notes": [
{
"note": "В надзаг.: В надзаг.: М-во образования Рос. Федерации. Ухт. гос. техн. ун-т. Каф. химии"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://search.rsl.ru/ru/record/01002792532",
"items": [
{
"itemType": "book",
"title": "Физическая химия",
"creators": [],
"date": "2005",
"ISBN": "9785812208066",
"abstractNote": "Учебное пособие предназначено для студентов, аспирантов, научных и инженерно-технических работников, преподавателей ВУЗов и техникумов",
"archive": "Книги (изданные с 1831 г. по настоящее время)",
"callNumber": "FB 12 05-8/83",
"extra": "RSLID: 01002792532\nBBK: Г5я732-1; Г6я732-1",
"language": "rus",
"libraryCatalog": "Российская Государственная Библиотека",
"numPages": "282",
"place": "М.",
"publisher": "Моск. гос. ун-т печати",
"url": "https://search.rsl.ru/ru/record/01002792532",
"attachments": [
{
"title": "via search",
"snapshot": false,
"contentType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://search.rsl.ru/ru/record/01004080147",
"items": [
{
"itemType": "book",
"title": "Физическая химия: учебное пособие",
"creators": [
{
"firstName": "Константин Григорьевич",
"lastName": "Боголицын",
"creatorType": "editor"
}
],
"date": "2008",
"ISBN": "9785261003861",
"archive": "Книги (изданные с 1831 г. по настоящее время)",
"callNumber": "FB 3 08-25/12",
"extra": "RSLID: 01004080147\nBBK: Г5я738-1",
"language": "rus",
"libraryCatalog": "Российская Государственная Библиотека",
"numPages": "111",
"place": "Архангельск",
"publisher": "Архангельский гос. технический ун-т",
"shortTitle": "Физическая химия",
"url": "https://search.rsl.ru/ru/record/01004080147",
"attachments": [
{
"title": "via search",
"snapshot": false,
"contentType": "text/html"
},
{
"title": "E-resource",
"snapshot": false,
"contentType": "text/html"
}
],
"tags": [
{
"tag": "Химические науки -- Физическая химия. Химическая физика -- Учебник для высшей школы -- Заочное обучение"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://search.rsl.ru/ru/record/01002386114",
"items": [
{
"itemType": "book",
"title": "Журнал физической химии",
"creators": [
{
"lastName": "АН СССР",
"creatorType": "editor",
"fieldMode": true
},
{
"lastName": "СССР",
"creatorType": "editor",
"fieldMode": true
},
{
"lastName": "РСФСР",
"creatorType": "editor",
"fieldMode": true
},
{
"lastName": "СССР",
"creatorType": "editor",
"fieldMode": true
},
{
"lastName": "Российская академия наук",
"creatorType": "editor",
"fieldMode": true
}
],
"date": "1930",
"archive": "Сериальные издания (кроме газет)",
"extra": "RSLID: 01002386114\nType: journal\nBBK: Г5я5",
"language": "rus",
"libraryCatalog": "Российская Государственная Библиотека",
"place": "Москва",
"publisher": "Российская академия наук",
"url": "https://search.rsl.ru/ru/record/01002386114",
"attachments": [
{
"title": "via search",
"snapshot": false,
"contentType": "text/html"
}
],
"tags": [
{
"tag": "Химические науки -- Физическая химия. Химическая физика -- Общий раздел -- Периодические и продолжающиеся издания"
}
],
"notes": [
{
"note": "Основан Бюро физ.-хим. конф. при НТУ ВСНХ СССР в 1930 г Журнал издается под руководством Отделения химии и наук о материалах РАН 1931-1934 (Т. 5 Вып. 1-3) является \"Серией В Химического журнала\" Изд-во: Т. 1 Гос. изд-во; Т. 2 Гос. науч.-техн. изд-во ; Т. 3-5 (Вып. 1-7) Гос. техн.-теорет. изд-во ; Т. 5 (Вып. 8-12) - 11 (Вып. 1-3) ОНТИ НКТП СССР; Т. 11 (Вып. 4-6) - 38 не указано; Т. 39-66 Наука ; Т. 67-72 МАИК \"Наука\"; Т. 73- Наука: МАИК \"Наука\"/Интерпериодика ; Т. 82- Наука Место изд.: 1930, т. 1, 29- М.; 1931. т. 2-28 М.; Л Изд-во: 2017- Федеральное государственное унитарное предприятие Академический научно-издательский, производственно-полиграфический и книгораспространительский центр \"Наука\" ; 2018- Российская академия наук"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://search.rsl.ru/ru/record/07000380351",
"items": [
{
"itemType": "book",
"title": "Журнал физической химии",
"creators": [
{
"lastName": "АН СССР",
"creatorType": "editor",
"fieldMode": true
},
{
"lastName": "СССР",
"creatorType": "editor",
"fieldMode": true
},
{
"lastName": "РСФСР",
"creatorType": "editor",
"fieldMode": true
},
{
"lastName": "СССР",
"creatorType": "editor",
"fieldMode": true
},
{
"lastName": "Российская академия наук",
"creatorType": "editor",
"fieldMode": true
}
],
"date": "1930",
"archive": "Сериальные издания (кроме газет)",
"extra": "RSLID: 07000380351\nType: journal",
"language": "rus",
"libraryCatalog": "Российская Государственная Библиотека",
"place": "Москва",
"publisher": "Российская академия наук",
"url": "https://search.rsl.ru/ru/record/07000380351",
"attachments": [
{
"title": "via search",
"snapshot": false,
"contentType": "text/html"
}
],
"tags": [],
"notes": [
{
"note": "Основан Бюро физ.-хим. конф. при НТУ ВСНХ СССР в 1930 г Журнал издается под руководством Отделения химии и наук о материалах РАН 1931-1934 (Т. 5 Вып. 1-3) является \"Серией В Химического журнала\" Изд-во: Т. 1 Гос. изд-во; Т. 2 Гос. науч.-техн. изд-во; Т. 3-5 (Вып. 1-7) Гос. техн.-теорет. изд-во; Т. 5 (Вып. 8-12) - 11 (Вып. 1-3) ОНТИ НКТП СССР; Т. 11 (Вып. 4-6) - 38 не указано; Т. 39-66 Наука; Т. 67-72 МАИК \"Наука\"; Т. 73- Наука: МАИК \"Наука\"/Интерпериодика ; Т. 82- Наука Место изд.: 1930, т. 1, 29- М.; 1931. т. 2-28 М.; Л Изд-во: 2017- Федеральное государственное унитарное предприятие Академический научно-издательский, производственно-полиграфический и книгораспространительский центр \"Наука\" ; 2018- Российская академия наук"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://search.rsl.ru/ru/record/01010153224",
"items": [
{
"itemType": "report",
"title": "Стабильные жидкие углеводороды. Определение ванадия, никеля, алюминия, мышьяка, меди, железа, натрия и свинца спектральными методами: стандарт организации: издание официальное: введен впервые: дата введения 2018-12-01",
"creators": [
{
"lastName": "\"Газпром\", российское акционерное общество",
"creatorType": "editor",
"fieldMode": true
}
],
"date": "2019",
"archive": "Стандарты",
"callNumber": "SVT СТО Газпром 5.78-2018",
"extra": "RSLID: 01010153224\nType: standard\nBBK: Л54-101с344я861(2Р); Д453.1-43,0; И36-1я861",
"institution": "Газпром экспо",
"language": "rus",
"libraryCatalog": "Российская Государственная Библиотека",
"place": "Санкт-Петербург",
"shortTitle": "Стабильные жидкие углеводороды. Определение ванадия, никеля, алюминия, мышьяка, меди, железа, натрия и свинца спектральными методами",
"url": "https://search.rsl.ru/ru/record/01010153224",
"attachments": [
{
"title": "via search",
"snapshot": false,
"contentType": "text/html"
}
],
"tags": [
{
"tag": "Горное дело -- Разработка нефтяных и газовых месторождений -- Исследование -- Стандарты"
},
{
"tag": "Науки о Земле -- Геологические науки -- Полезные ископаемые -- Горючие полезные ископаемые. Битумы -- Нефть -- Химический состав -- Стандарты"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://search.rsl.ru/ru/record/01008033518",
"items": [
{
"itemType": "report",
"title": "ГОСТ IEC 61010-1-2014. Безопасность электрических контрольно-измерительных приборов и лабораторного оборудования =: Safety requirements for electrical equipment for measurement, control, and laboratory use. Part 1. General requirements: межгосударственный стандарт. Ч. 1: Общие требования",
"creators": [
{
"lastName": "Межгосударственный совет по стандартизации, метрологии и сертификации",
"creatorType": "editor",
"fieldMode": true
}
],
"date": "2015",
"archive": "Стандарты",
"callNumber": "SVT ГОСТ IEC 61010-1-2014",
"extra": "RSLID: 01008033518\nType: standard",
"institution": "Стандартинформ",
"libraryCatalog": "Российская Государственная Библиотека",
"place": "Москва",
"shortTitle": "ГОСТ IEC 61010-1-2014. Безопасность электрических контрольно-измерительных приборов и лабораторного оборудования =",
"url": "https://search.rsl.ru/ru/record/01008033518",
"attachments": [
{
"title": "via search",
"snapshot": false,
"contentType": "text/html"
}
],
"tags": [
{
"tag": "аналитическая химия"
},
{
"tag": "измерительные приборы"
},
{
"tag": "лабораторное оборудование"
},
{
"tag": "средства автоматизации и вычислительной техники"
},
{
"tag": "техника безопасности"
},
{
"tag": "химическая промышленность"
},
{
"tag": "электрические и электронные испытания"
}
],
"notes": [
{
"note": "Настоящий стандарт идентичен международному стандарту IEC 61010-1:2010 Safety requirements for electrical equipment for measurement, control, and laboratory use - Part 1: General requirements (Безопасность контрольно-измерительных приборов и лабораторного оборудования. Часть 1. Общие требования)"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://search.rsl.ru/ru/record/01010285501",
"items": [
{
"itemType": "book",
"title": "Индия: путеводитель + карта: 12+",
"creators": [
{
"firstName": "Дмитрий Евгеньевич",
"lastName": "Кульков",
"creatorType": "author"
}
],
"date": "2020",
"ISBN": "9785041079505",
"archive": "Карты",
"callNumber": "FB Гр Ч518; KGR Ко 169-20/IX-21",
"edition": "2-е изд., испр. и доп.",
"extra": "RSLID: 01010285501\nBBK: Я23(5Ид)",
"language": "rus",
"libraryCatalog": "Российская Государственная Библиотека",
"numPages": "413",
"place": "Москва",
"publisher": "Эксмо, Бомбора™",
"series": "Orangевый гид",
"shortTitle": "Индия",
"url": "https://search.rsl.ru/ru/record/01010285501",
"attachments": [
{
"title": "via search",
"snapshot": false,
"contentType": "text/html"
}
],
"tags": [
{
"tag": "Литература универсального содержания -- Справочные издания -- Страноведческие справочники. Путеводители. Адресные книги. Адрес-календари -- Отдельные зарубежные страны -- Азия -- Индия"
},
{
"tag": "Республика Индия, государство"
}
],
"notes": [
{
"note": "Авт. указан перед вып. дан Указ. в конце кн"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://search.rsl.ru/ru/record/01008937943",
"items": [
{
"itemType": "thesis",
"title": "Реакция Дильса-Альдера при деформации органических веществ под давлением: диссертация ... кандидата химических наук: 02.00.03",
"creators": [
{
"firstName": "Валентин Сергеевич",
"lastName": "Абрамов",
"creatorType": "author"
}
],
"date": "1980",
"archive": "Диссертации",
"callNumber": "OD Дк 81-2/93",
"extra": "RSLID: 01008937943\nBBK: Г591,0; Г222.6Дл,0",
"language": "rus",
"libraryCatalog": "Российская Государственная Библиотека",
"numPages": "118",
"place": "Москва",
"shortTitle": "Реакция Дильса-Альдера при деформации органических веществ под давлением",
"url": "https://search.rsl.ru/ru/record/01008937943",
"attachments": [
{
"title": "via search",
"snapshot": false,
"contentType": "text/html"
}
],
"tags": [
{
"tag": "Органическая химия"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://search.rsl.ru/ru/record/01000287561",
"items": "multiple"
},
{
"type": "web",
"url": "https://search.rsl.ru/ru/record/01002444380",
"items": [
{
"itemType": "book",
"title": "Основы общей химии: В 2 т.",
"creators": [
{
"firstName": "Борис Владимирович",
"lastName": "Некрасов",
"creatorType": "author"
}
],
"date": "2003",
"ISBN": "9785811405008",
"abstractNote": "Книга является первым томом двухтомной монографии, суммирующей основные особенности химии всех химических элементов. Монография предназначена для широкого круга научных работников, инженеров, студентов химических специальностей",
"archive": "Книги (изданные с 1831 г. по настоящее время)",
"edition": "4. изд., стер",
"extra": "RSLID: 01002444380\nBBK: Г1я731-1",
"language": "rus",
"libraryCatalog": "Российская Государственная Библиотека",
"place": "СПб. [и др.]",
"publisher": "Лань",
"shortTitle": "Основы общей химии",
"url": "https://search.rsl.ru/ru/record/01002444380",
"attachments": [
{
"title": "via search",
"snapshot": false,
"contentType": "text/html"
}
],
"tags": [
{
"tag": "Химические науки -- Общая и неорганическая химия -- Учебник для высшей школы"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://search.rsl.ru/ru/record/01002386114",
"items": [
{
"itemType": "book",
"title": "Журнал физической химии",
"creators": [
{
"lastName": "АН СССР",
"creatorType": "editor",
"fieldMode": true
},
{
"lastName": "СССР",
"creatorType": "editor",
"fieldMode": true
},
{
"lastName": "РСФСР",
"creatorType": "editor",
"fieldMode": true
},
{
"lastName": "СССР",
"creatorType": "editor",
"fieldMode": true
},
{
"lastName": "Российская академия наук",
"creatorType": "editor",
"fieldMode": true
}
],
"date": "1930",
"archive": "Сериальные издания (кроме газет)",
"extra": "RSLID: 01002386114\nType: journal\nBBK: Г5я5",
"language": "rus",
"libraryCatalog": "Российская Государственная Библиотека",
"place": "Москва",
"publisher": "Российская академия наук",
"url": "https://search.rsl.ru/ru/record/01002386114",
"attachments": [
{
"title": "via search",
"snapshot": false,
"contentType": "text/html"
}
],
"tags": [
{
"tag": "Химические науки -- Физическая химия. Химическая физика -- Общий раздел -- Периодические и продолжающиеся издания"
}
],
"notes": [
{
"note": "Основан Бюро физ.-хим. конф. при НТУ ВСНХ СССР в 1930 г Журнал издается под руководством Отделения химии и наук о материалах РАН 1931-1934 (Т. 5 Вып. 1-3) является \"Серией В Химического журнала\" Изд-во: Т. 1 Гос. изд-во; Т. 2 Гос. науч.-техн. изд-во ; Т. 3-5 (Вып. 1-7) Гос. техн.-теорет. изд-во ; Т. 5 (Вып. 8-12) - 11 (Вып. 1-3) ОНТИ НКТП СССР; Т. 11 (Вып. 4-6) - 38 не указано; Т. 39-66 Наука ; Т. 67-72 МАИК \"Наука\"; Т. 73- Наука: МАИК \"Наука\"/Интерпериодика ; Т. 82- Наука Место изд.: 1930, т. 1, 29- М.; 1931. т. 2-28 М.; Л Изд-во: 2017- Федеральное государственное унитарное предприятие Академический научно-издательский, производственно-полиграфический и книгораспространительский центр \"Наука\" ; 2018- Российская академия наук"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://search.rsl.ru/ru/record/07000380352",
"items": [
{
"itemType": "book",
"title": "Журнал физической химии. 2019",
"creators": [],
"archive": "Книги (изданные с 1831 г. по настоящее время)",
"extra": "RSLID: 07000380352",
"language": "rus",
"libraryCatalog": "Российская Государственная Библиотека",
"url": "https://search.rsl.ru/ru/record/07000380352",
"attachments": [
{
"title": "via search",
"snapshot": false,
"contentType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100czar^https?://(www\.)?theintercept\.com/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2017-2021 czar
http://en.wikipedia.org/wiki/User_talk:Czar
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (/theintercept\.com\/\d{4}\/\d{2}\/\d{2}\//.test(url)) {
return "blogPost";
}
else if (url.includes("/document/")) {
return "document";
}
else if (/(theintercept\.com\/search\/\?s=)|(theintercept\.com\/?$)/.test(url) && getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function scrape(doc, _url) {
var item = new Zotero.Item("blogPost");
item.blogTitle = "The Intercept";
item.language = "en-US";
var ldjson = JSON.parse(text(doc, 'script[type="application/ld+json"]'));
item.url = ldjson.url;
item.title = ldjson.headline;
item.date = ldjson.dateCreated;
item.abstractNote = text(doc, 'meta[name="description"]');
item.attachments.push({
document: doc,
title: "Snapshot"
});
// Authors
if (ldjson.author.length) {
do {
item.creators.push(ZU.cleanAuthor(ldjson.author[0], "author"));
ldjson.author.shift();
}
while (ldjson.author.length);
}
// Feature articles json omits the feature title
var featureTitle = text(doc, '.Post-feature-title');
if (featureTitle) {
item.title = featureTitle.concat(": ", item.title);
}
item.complete();
}
function scrapeDocument(doc, url) {
var item = new Zotero.Item("document");
item.publisher = "The Intercept";
item.language = "en-US";
item.url = url;
item.title = text(doc, '.BasicDocumentPage-title');
item.date = text(doc, '.BasicDocumentPage-date');
if (item.date) { // don't perform on empty string
item.date = ZU.strToISO(item.date);
}
// no item.abstractNote: no description given
item.attachments.push({
title: item.title,
mimeType: "application/pdf",
url: attr(doc, 'a[class$="-navigation-download"]', 'href')
});
item.complete();
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.Promo-title, h1.HomeFeature-title');
var links = doc.querySelectorAll('.Promo-link, a.HomeFeature-link');
for (var i = 0; i < rows.length; i++) {
var href = links[i].href;
var title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) {
return;
}
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
}
else if (detectWeb(doc, url) == "document") {
scrapeDocument(doc, url);
}
else if (detectWeb(doc, url) == "blogPost") {
// if this if statement is removed, the multi page attempts to feed itself into the scrape function
scrape(doc, url);
}
}/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://theintercept.com/2017/06/05/top-secret-nsa-report-details-russian-hacking-effort-days-before-2016-election/",
"items": [
{
"itemType": "blogPost",
"title": "Top-Secret NSA Report Details Russian Hacking Effort Days Before 2016 Election",
"creators": [
{
"firstName": "Matthew",
"lastName": "Cole",
"creatorType": "author"
},
{
"firstName": "Richard",
"lastName": "Esposito",
"creatorType": "author"
},
{
"firstName": "Sam",
"lastName": "Biddle",
"creatorType": "author"
},
{
"firstName": "Ryan",
"lastName": "Grim",
"creatorType": "author"
}
],
"date": "2017-06-05T19:44:23+00:00",
"blogTitle": "The Intercept",
"language": "en-US",
"url": "https://theintercept.com/2017/06/05/top-secret-nsa-report-details-russian-hacking-effort-days-before-2016-election/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://theintercept.com/2015/11/19/an-fbi-informant-seduced-eric-mcdavid-into-a-bomb-plot-then-the-government-lied-about-it/",
"items": [
{
"itemType": "blogPost",
"title": "Manufacturing Terror: An FBI Informant Seduced Eric McDavid Into a Bomb Plot. Then the Government Lied About It.",
"creators": [
{
"firstName": "Trevor",
"lastName": "Aaronson",
"creatorType": "author"
},
{
"firstName": "Katie",
"lastName": "Galloway",
"creatorType": "author"
}
],
"date": "2015-11-19T18:04:35+00:00",
"blogTitle": "The Intercept",
"language": "en-US",
"shortTitle": "Manufacturing Terror",
"url": "https://theintercept.com/2015/11/19/an-fbi-informant-seduced-eric-mcdavid-into-a-bomb-plot-then-the-government-lied-about-it/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://theintercept.com/search/?s=bernie",
"items": "multiple"
},
{
"type": "web",
"url": "https://theintercept.com/document/2017/02/22/mastering-the-internet/",
"items": [
{
"itemType": "document",
"title": "Mastering the Internet",
"creators": [],
"date": "2017-02-22",
"language": "en-US",
"libraryCatalog": "The Intercept",
"publisher": "The Intercept",
"url": "https://theintercept.com/document/2017/02/22/mastering-the-internet/",
"attachments": [
{
"title": "Mastering the Internet",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://theintercept.com/",
"items": "multiple"
}
]
/** END TEST CASES **/
101Matt Burton, Avram Lyon, Etienne Cavalié, Rintze Zelle, Philipp Zumstein, Sebastian Karcher, Aurimas Vinckevicius/primo_library/|/nebis/|^https?://www\.recherche-portal\.ch/zbz//*
***** BEGIN LICENSE BLOCK *****
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
/*
Supports Primo 2:
Université de Nice, France (http://catalogue.unice.fr/) (looks like this is Primo3 now, too)
Supports Primo 3
Boston College (http://www.bc.edu/libraries/),
Oxford Libraries (http://solo.ouls.ox.ac.uk/)
Primos with showPNX.jsp installed:
(1) http://purdue-primo-prod.hosted.exlibrisgroup.com/primo_library/libweb/action/search.do?vid=PURDUE
(2) http://primo.bib.uni-mannheim.de/primo_library/libweb/action/search.do?vid=MAN_UB
(3) http://limo.libis.be/primo_library/libweb/action/search.do?vid=LIBISnet&fromLogin=true
(4.a) http://virtuose.uqam.ca/primo_library/libweb/action/search.do?vid=UQAM
(5) http://searchit.princeton.edu/primo_library/libweb/action/dlDisplay.do?docId=PRN_VOYAGER2778598&vid=PRINCETON&institution=PRN
*/
function getSearchResults(doc) {
// order dictates preference
var linkXPaths = ['.//li[starts-with(@id,"exlidResult") and substring(@id,string-length(@id)-10)="-DetailsTab"]/a[@href]', // details link
'.//h2[@class="EXLResultTitle"]/a[@href]']; // title link
var resultsXPath = '//*[self::tr or self::div][starts-with(@id, "exlidResult") and '
+ 'number(substring(@id,12))=substring(@id,12)][' + linkXPaths.join(' or ') + ']';
// Z.debug(resultsXPath);
var results = ZU.xpath(doc, resultsXPath);
results.titleXPath = './/h2[@class="EXLResultTitle"]';
results.linkXPaths = linkXPaths;
return results;
}
function detectWeb(doc) {
if (getSearchResults(doc).length) {
return 'multiple';
}
var contentDiv = doc.getElementsByClassName('EXLFullResultsHeader');
if (!contentDiv.length) contentDiv = doc.getElementsByClassName('EXLFullDisplay');
if (!contentDiv.length) contentDiv = doc.getElementsByClassName('EXLFullView');
if (contentDiv.length) return 'book';
return false;
}
function doWeb(doc, url) {
var searchResults = getSearchResults(doc);
if (searchResults.length) {
var items = {}, itemIDs = {}, title, link,
linkXPaths = searchResults.linkXPaths;
for (var i = 0, n = searchResults.length; i < n; i++) {
title = ZU.xpathText(searchResults[i], searchResults.titleXPath);
for (var j = 0, m = linkXPaths.length; j < m; j++) {
link = ZU.xpath(searchResults[i], linkXPaths[j])[0];
if (link) {
break;
}
}
if (!link || !title || !(title = ZU.trimInternal(title))) continue;
items[link.href] = title;
itemIDs[link.href] = { id: i, docID: getDocID(link.href) };
}
Z.selectItems(items, function (selectedItems) {
if (!selectedItems) return true;
var urls = [];
for (var i in selectedItems) {
urls.push({ url: i, id: itemIDs[i].id, docID: itemIDs[i].docID });
}
fetchPNX(urls);
return true;
});
}
else {
fetchPNX([{ url: url, id: 0, docID: getDocID(url) }]);
}
}
function getDocID(url) {
var id = url.match(/\bdoc(?:Id)?=([^&]+)/i);
if (id) return id[1];
else return false;
}
// keeps track of which URL format works for retrieving PNX record
// and applies the correct transformation function
var PNXUrlGenerator = new function () {
var functions = [
// showPNX.js
// using docIDs instead of IDs tied to a session
// e.g. http://searchit.princeton.edu/primo_library/libweb/showPNX.jsp?id=PRN_VOYAGER7343340
function (urlObj) {
return getUrlWithId(urlObj.url, urlObj.docID);
},
// fall back to IDs
// from: http://primo.bib.uni-mannheim.de/primo_library/libweb/action/search.do?...
// to: http://primo.bib.uni-mannheim.de/primo_library/libweb/showPNX.jsp?id=
function (urlObj) {
return getUrlWithId(urlObj.url, urlObj.id);
},
// simply add &showPnx=true
function (urlObj) {
var url = urlObj.url.split('#');
if (!url[0].includes("?")) {
url[0] += '?';
}
else {
url[0] += '&';
}
return url[0] + 'showPnx=true';
}
];
function getUrlWithId(url, id) {
url = url.match(/(https?:\/\/[^?#]+\/)[^?#]+\/[^/]*(?:[?#]|$)/);
if (!url) return false;
return url[1] + 'showPNX.jsp?id=' + id;
}
this.currentFunction = 0;
this.confirmed = false;
this.getUrl = function (data) {
var fun = functions[this.currentFunction];
if (!fun) return false;
return fun(data);
};
this.nextFunction = function () {
if (!this.confirmed && this.currentFunction < functions.length) {
Z.debug("Function " + this.currentFunction + " did not work.");
this.currentFunction++;
return true;
}
else {
return false;
}
};
};
// retrieve PNX records for given items sequentially
function fetchPNX(itemData) {
if (!itemData.length) return; // do this until we run out of URLs
var data = itemData.shift();
var url = PNXUrlGenerator.getUrl(data); // format URL if still possible
if (!url) {
if (PNXUrlGenerator.nextFunction()) {
itemData.unshift(data);
}
else if (!PNXUrlGenerator.confirmed) {
// in case we can't find PNX for a particular item,
// go to the next and start looking from begining
Z.debug("Could not determine PNX url from " + data.url);
PNXUrlGenerator.currentFunction = 0;
}
fetchPNX(itemData);
return;
}
var gotPNX = false;
Z.debug("Trying " + url);
ZU.doGet(url,
function (text) {
text = text.trim();
if (text.substr(0, 5) != '<?xml' || text.search(/<error\b/i) !== -1) {
// try a different PNX url
gotPNX = false;
return;
}
else {
gotPNX = true;
PNXUrlGenerator.confirmed = true;
}
importPNX(text, url);
},
function () {
if (!gotPNX && PNXUrlGenerator.nextFunction()) {
// if url function not confirmed, try another one on the same URL
// otherwise, we move on
itemData.unshift(data);
}
fetchPNX(itemData);
},
null,
null,
[200, 404, 500]
);
}
function importPNX(text, url) {
// Z.debug(text);
var translator = Zotero.loadTranslator("import");
translator.setTranslator("efd737c9-a227-4113-866e-d57fbc0684ca");
translator.setString(text);
translator.setHandler("itemDone", function (obj, item) {
if (url) {
item.libraryCatalog = url.match(/^https?:\/\/(.+?)\//)[1].replace(/\.hosted\.exlibrisgroup/, "");
}
item.complete();
});
translator.translate();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://princeton-primo.hosted.exlibrisgroup.com/primo_library/libweb/action/dlDisplay.do?vid=PRINCETON&search_scope=All%20Princeton%20Libraries&docId=PRN_VOYAGER2778598&fn=permalink",
"items": [
{
"itemType": "book",
"title": "China and foreign missionaries.",
"creators": [
{
"lastName": "Great Britain Foreign Office",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "1860",
"callNumber": "5552.406",
"language": "eng",
"libraryCatalog": "princeton-primo.com",
"place": "London",
"publisher": "1860-1912",
"attachments": [],
"tags": [
{
"tag": "China"
},
{
"tag": "China; China"
},
{
"tag": "Foreign relations"
},
{
"tag": "Foreign relations"
},
{
"tag": "Great Britain; Great Britain"
},
{
"tag": "Missions"
},
{
"tag": "Religion; China"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://digitale.beic.it/primo_library/libweb/action/display.do?doc=39bei_digitool2018516",
"items": [
{
"itemType": "book",
"title": "Grida per i Milanesi che avevano seguito Ludovico il Moro",
"creators": [
{
"lastName": "Milano",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "1500",
"language": "ita",
"libraryCatalog": "digitale.beic.it",
"place": "Milano",
"publisher": "Ambrogio : da Caponago",
"attachments": [],
"tags": [
"LEGGI;ITALIA - STORIA MEDIOEVALE"
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Sean Takats, Philipp Zumstein^https?://web\.archive\.org/web//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2008 Sean Takats
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.match(/\/web\/\d{14}\/http/)) {
return "webpage";
}
if (getSearchResults(doc, true)) {
return "multiple";
}
else if (url.includes('/web/*/')) {
Z.monitorDOMChanges(doc.querySelector('#react-wayback-search'));
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.result-item-heading>a');
for (let i = 0; i < rows.length; i++) {
var href = rows[i].href;
var title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) {
return;
}
var articles = [];
for (let i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
// create new webpage Item from page
var newItem = new Zotero.Item("webpage");
newItem.title = doc.title;
newItem.url = url;
// parse date and add
var date = url.match(/\/web\/(\d{4})(\d{2})(\d{2})\d{6}\/http/);
if (date) {
newItem.date = [date[1], date[2], date[3]].join('-');
}
var pdfUrl = attr('#playback', 'src');
// if snapshot is pdf, attach it
// e.g. https://web.archive.org/web/20180316005456/https://www.foxtel.com.au/content/dam/foxtel/support/pdf/channel-packs.pdf
if (url.endsWith(".pdf") && pdfUrl) {
newItem.attachments = [{
mimeType: "application/pdf",
title: "PDF Snapshot",
url: pdfUrl
}];
}
else {
// create snapshot
newItem.attachments = [{
url: doc.location.href,
title: "Snapshot",
mimeType: "text/html"
}];
}
newItem.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://web.archive.org/web/20110310073553/http://www.taz.de/",
"items": [
{
"itemType": "webpage",
"title": "taz.de",
"creators": [],
"date": "2011-03-10",
"url": "http://web.archive.org/web/20110310073553/http://www.taz.de/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://web.archive.org/web/*/zotero",
"defer": true,
"items": "multiple"
}
]
/** END TEST CASES **/
100Luke van der Hoeven^https?://(www\.)?desiringgod\.org//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2019 Luke van der Hoeven
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
var handlers = {
blogPost: (_, __) => {},
interview: fetchAudio
};
function detectWeb(doc, url) {
if (url.includes("search/results")) {
return "multiple";
}
else if (url.includes("articles")) {
return "blogPost";
}
else if (url.includes("interviews")) {
return "interview";
}
return false;
}
function doWeb(doc, url) {
var type = detectWeb(doc, url);
switch (type) {
case "multiple": {
let results = getSearchResults(doc, false);
if (results) {
Zotero.selectItems(results, function (selected) {
if (!selected) return;
var articles = [];
for (let i in selected) {
articles.push(i);
}
ZU.processDocuments(articles, doWeb);
});
}
break;
}
case "interview":
case "blogPost":
scrape(doc, url, type);
break;
}
}
function scrape(doc, url, type) {
var translator = Zotero.loadTranslator('web');
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48'); // embedded metadata
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
item.itemType = type;
item.date = attr(doc, 'header time.resource__date', 'datetime');
var authors = doc.querySelectorAll('.resource .resource__header #authors');
for (let author of authors) {
var name = ZU.cleanAuthor(text(author, ".resource__author span", 0), "author");
item.creators.push(name);
}
handlers[type](doc, item);
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.doWeb(doc, url);
});
}
function fetchAudio(doc, item) {
let downloadLinks = doc.querySelectorAll('.resource .media-menu__item--download ul li');
for (var link of downloadLinks) {
let linkUrl = attr(link, 'a', 'href');
if (linkUrl.endsWith('.mp3')) {
item.attachments.push({
url: linkUrl,
title: "Recorded Audio",
mimeType: "audio/mp3",
snapshot: false
});
}
}
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
let results = doc.querySelectorAll('div.gsc-results div.gs-result a.gs-title');
for (var result of results) {
let href = result.dataset.ctorig;
let title = ZU.trimInternal(result.innerText);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.desiringgod.org/articles/too-depressed-to-believe-what-we-know",
"items": [
{
"itemType": "blogPost",
"title": "Too Depressed to Believe What We Know",
"creators": [
{
"firstName": "Marshall",
"lastName": "Segal",
"creatorType": "author"
}
],
"date": "2015-07-14",
"abstractNote": "We’ve collected some of our best resources on depression, as well as a few others around the web. We pray they will bring God’s light into your darkness.",
"blogTitle": "Desiring God",
"language": "en",
"url": "https://www.desiringgod.org/articles/too-depressed-to-believe-what-we-know",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.desiringgod.org/interviews/discussion-with-justin-holcomb",
"items": [
{
"itemType": "interview",
"title": "Discussion with Justin Holcomb",
"creators": [
{
"firstName": "Justin",
"lastName": "Holcomb",
"creatorType": "author"
}
],
"date": "2011-05-25",
"language": "en",
"libraryCatalog": "www.desiringgod.org",
"url": "https://www.desiringgod.org/interviews/discussion-with-justin-holcomb",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
},
{
"title": "Recorded Audio",
"mimeType": "audio/mp3",
"snapshot": false
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.desiringgod.org/search/results?q=depression",
"items": "multiple"
}
]
/** END TEST CASES **/
100Reverend Wicks Cherrycoke^https?://(libgen\.[a-z]{2}|gen\.lib\.rus\.ec)//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2016 Rev. Wicks Cherrycoke
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
var MD5_REGEX = /md5=([0-9a-fA-F]+)/;
var AUTHOR_REGEX = /author\s*=\s*{(.*?)}/;
function detectWeb(doc, url) {
if (url.includes('book/index.php')) {
return 'book';
}
return false;
}
function doWeb(doc, url) {
var md5Hash = MD5_REGEX.exec(url)[1];
// To save some work, we use the provided bibtex file to retrieve the
// metadata and use Zotero's built-in bibtex importer
var bibtexUrl = "/book/bibtex.php?md5=" + md5Hash;
ZU.processDocuments(bibtexUrl, function (bibtexDoc) {
var bibtexStr = bibtexDoc.getElementsByTagName("textarea")[0].value;
var translator = Zotero.loadTranslator('import');
translator.setTranslator('9cb70025-a888-4a29-a210-93ec52da40d4');
translator.setString(bibtexStr);
translator.setHandler('itemDone', function (obj, item) {
// The bibtex messes up multiple authors, so we set them ourselves
var authorStr = AUTHOR_REGEX.exec(bibtexStr)[1];
if (authorStr.includes(';')) {
item.creators = authorStr.split(";").map(function (author) {
// Are we dealing with "last, first" formatting?
var useCommas = (author.includes(","));
return ZU.cleanAuthor(author, "author", useCommas);
});
}
else {
item.creators = authorStr.split(",").map(function (author) {
return ZU.cleanAuthor(author, "author", false);
});
}
// It also messes up multiple ISBNs, so we just pick the first one
if (item.ISBN) {
[' ', ','].forEach(function (splitChar) {
if (item.ISBN.includes(splitChar)) {
item.ISBN = item.ISBN.split(splitChar)[0];
}
});
}
// Add the full text attachment
/* NOTE: For now this is commented out, pending a decision on how to
deal with possibly huge downloads, see issue #1056 for details.
var MIME_TYPES = {
pdf: 'application/pdf',
epub: 'application/epub+zip',
mobi: 'application/x-mobipocket-ebook',
djvu: 'image/vnd.djvu'
};
var extension = ZU.xpathText(
doc, '//td[contains(./font/text(), "Extension")]/following-sibling::td');
var downloadUrl = "/get/" + md5Hash + "/" + md5Hash + "." + extension;
item.attachments.push({
title: "Full Text",
url: downloadUrl,
mimeType: MIME_TYPES[extension]});
*/
item.complete();
});
translator.translate();
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://gen.lib.rus.ec/book/index.php?md5=A2560CC676A29BD4B289A2034894AF69",
"items": [
{
"itemType": "book",
"title": "African ivories",
"creators": [
{
"firstName": "Ezra",
"lastName": "Kate",
"creatorType": "author"
}
],
"date": "1984",
"itemID": "book:882539",
"libraryCatalog": "Library Genesis",
"publisher": "The Metropolitan Museum of Art",
"url": "http://gen.lib.rus.ec/book/index.php?md5=a2560cc676a29bd4b289a2034894af69",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://libgen.rs/book/index.php?md5=664C8F28B54C7166469F54F0D1395D5E",
"items": [
{
"itemType": "book",
"title": "Disenfranchised: The Rise and Fall of Industrial Citizenship in China",
"creators": [
{
"firstName": "Joel",
"lastName": "Andreas",
"creatorType": "author"
}
],
"date": "2019",
"ISBN": "9780190052614",
"itemID": "book:2780848",
"libraryCatalog": "Library Genesis",
"publisher": "Oxford University Press, USA",
"shortTitle": "Disenfranchised",
"url": "http://gen.lib.rus.ec/book/index.php?md5=664C8F28B54C7166469F54F0D1395D5E",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://libgen.rs/book/index.php?md5=3F3AE2E1C6293A4550904E2587FF1441",
"items": [
{
"itemType": "book",
"title": "Gravity's Rainbow, domination, and freedom",
"creators": [
{
"firstName": "Luc",
"lastName": "Herman",
"creatorType": "author"
},
{
"firstName": "Steven",
"lastName": "Weisenburger",
"creatorType": "author"
},
{
"firstName": "Thomas",
"lastName": "Pynchon",
"creatorType": "author"
}
],
"date": "2013",
"ISBN": "9780820335087",
"itemID": "book:1425220",
"libraryCatalog": "Library Genesis",
"publisher": "The University of Georgia Press",
"url": "http://gen.lib.rus.ec/book/index.php?md5=3f3ae2e1c6293a4550904e2587ff1441",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://libgen.rs/book/index.php?md5=8AE55C8664341707B748EADE479C02C1",
"items": [
{
"itemType": "book",
"title": "Mason & Dixon",
"creators": [
{
"firstName": "Thomas",
"lastName": "Pynchon",
"creatorType": "author"
}
],
"date": "1998",
"ISBN": "9780805058376",
"itemID": "book:536374",
"libraryCatalog": "Library Genesis",
"publisher": "Holt Paperbacks",
"url": "http://gen.lib.rus.ec/book/index.php?md5=8ae55c8664341707b748eade479c02c1",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://libgen.rs/book/index.php?md5=16C402F4F9B737EA33C4EA5D938331A0",
"items": [
{
"itemType": "book",
"title": "Nineteen Eighty-Four",
"creators": [
{
"firstName": "George",
"lastName": "Orwell",
"creatorType": "author"
},
{
"firstName": "Erich",
"lastName": "Fromm",
"creatorType": "author"
},
{
"firstName": "Thomas",
"lastName": "Pynchon",
"creatorType": "author"
},
{
"firstName": "Daniel",
"lastName": "Lagin",
"creatorType": "author"
}
],
"date": "2003",
"ISBN": "9780452284234",
"itemID": "book:266853",
"libraryCatalog": "Library Genesis",
"publisher": "Plume",
"url": "http://gen.lib.rus.ec/book/index.php?md5=16c402f4f9b737ea33c4ea5d938331a0",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://libgen.rs/book/index.php?md5=A05BE4942325AEA362E2AFF8C305B0DE",
"items": [
{
"itemType": "book",
"title": "Deep Learning [pre-pub version]",
"creators": [
{
"firstName": "Ian",
"lastName": "Goodfellow",
"creatorType": "author"
},
{
"firstName": "Yoshua",
"lastName": "Bengio",
"creatorType": "author"
},
{
"firstName": "Aaron",
"lastName": "Courville",
"creatorType": "author"
}
],
"date": "2016",
"itemID": "book:1491328",
"libraryCatalog": "Library Genesis",
"publisher": "MIT Press",
"url": "http://gen.lib.rus.ec/book/index.php?md5=a05be4942325aea362e2aff8c305b0de",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://libgen.st/book/index.php?md5=BD4B66472A15D6F0A2BC350A833581C1",
"items": [
{
"itemType": "book",
"title": "A Short History of Chinese Philosophy",
"creators": [
{
"firstName": "Fung",
"lastName": "Yu-lan",
"creatorType": "author"
},
{
"firstName": "Derek",
"lastName": "Bodde",
"creatorType": "author"
}
],
"date": "1948",
"itemID": "book:885016",
"libraryCatalog": "Library Genesis",
"publisher": "The Free Press",
"url": "http://gen.lib.rus.ec/book/index.php?md5=bd4b66472a15d6f0a2bc350a833581c1",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Nathan Day^https?://(www\.)?datadryad\.org//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2014 Dryad Digital Repository
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
// Dryad search page
if (url.indexOf('/discover?') != -1) {
return getSearchResults(doc, true) ? 'multiple' : false;
} else {
var result = ZU.xpathText(doc,'//meta[@name="DC.type"][1]/@content');
// Dryad data package
if (result === 'Article') {
return 'journalArticle';
// Dryad data file
} else if (result === 'Dataset') {
//return 'dataset';
return 'journalArticle';
}
}
return false;
}
function doWeb(doc, url) {
var itemType = detectWeb(doc, url);
if (itemType === 'journalArticle') {
scrape(doc, url);
} else if (itemType === 'multiple') {
Zotero.selectItems(getSearchResults(doc), function(items) {
if (!items) return true;
var urls = [];
for (var i in items) {
urls.push(i);
}
ZU.processDocuments(urls, scrape);
})
}
}
function getSearchResults(doc, checkOnly) {
var results = ZU.xpath(doc, '//li[contains(@class,"ds-artifact-item")]/div/a'),
items = {},
found = false;
for (var i=0; i<results.length; i++) {
var title = results[i].getElementsByClassName('artifact-title')[0];
if (!title) continue;
if (checkOnly) return true;
found = true;
title = ZU.trimInternal(title.textContent).replace(/^Data From:\s*/i, '');
items[results[i].href] = title;
}
return found ? items : false;
}
function scrape(doc, url) {
var package_doi = ZU.xpathText(doc, '//meta[@name="DCTERMS.isPartOf"]/@content');
var translator = Zotero.loadTranslator('web');
// use the Embedded Metadata translator
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function(obj, item) {
var itemDoi = item.url.replace(/^.*?doi:/, '');
item.DOI = itemDoi;
item.url = ''; // the doi value is to be used in lieu of the url
item.itemType = 'journalArticle';
// signal a dataset until supported per
// https://www.zotero.org/support/dev/translators/datasets
item.extra = 'Type: dataset';
item.archive = 'Dryad Digital Repository';
item.attachments = [];
item.shortTitle = '';
// Add a .seeAlso value if this is a page for a single data file,
// rather than for a data package collection.
// This is a data file if there is a DCTERMS.isPartOf property.
if (package_doi && package_doi !== 'doi:' + itemDoi) {
item.seeAlso = [package_doi.substring(4)];
}
item.itemID = itemDoi; // internal value for seeAlso relation
item.complete();
});
translator.translate();
// Value for page's possible DCTERMS.isPartOf <meta> tag,
// minus the initial 'doi:'.
// This value is used to set the seeAlso value for a data-file record.
if (package_doi) {
ZU.processDocuments('http://datadryad.org/resource/' + package_doi, scrape);
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://datadryad.org/resource/doi:10.5061/dryad.9025",
"items": [
{
"itemType": "journalArticle",
"title": "Data from: Phylogenetic analyses of mitochondrial and nuclear data in haematophagous flies support the paraphyly of the genus Stomoxys (Diptera: Muscidae)",
"creators": [
{
"firstName": "Najla",
"lastName": "Dsouli",
"creatorType": "author"
},
{
"firstName": "Frédéric",
"lastName": "Delsuc",
"creatorType": "author"
},
{
"firstName": "Johan",
"lastName": "Michaux",
"creatorType": "author"
},
{
"firstName": "Eric",
"lastName": "De Stordeur",
"creatorType": "author"
},
{
"firstName": "Arnaud",
"lastName": "Couloux",
"creatorType": "author"
},
{
"firstName": "Michel",
"lastName": "Veuille",
"creatorType": "author"
},
{
"firstName": "Gérard",
"lastName": "Duvallet",
"creatorType": "author"
}
],
"date": "2011-02-13",
"DOI": "10.5061/dryad.9025",
"abstractNote": "The genus Stomoxys Geoffroy (Diptera; Muscidae) contains species of parasitic flies that are of medical and economic importance. We conducted a phylogenetic analysis including 10 representative species of the genus including multiple exemplars, together with the closely related genera Prostomoxys Zumpt, Haematobosca Bezzi, and Haematobia Lepeletier & Serville. Phylogenetic relationships were inferred using maximum likelihood and Bayesian methods from DNA fragments from the cytochrome c oxidase subunit I (COI, 753 bp) and cytochrome b (CytB, 587 bp) mitochondrial genes, and the nuclear ribosomal internal transcribed spacer 2 (ITS2, 426 bp). The combination of mitochondrial and nuclear data strongly supports the paraphyly of the genus Stomoxys because of the inclusion of Prostomoxys saegerae Zumpt. This unexpected result suggests that Prostomoxys should be renamed into Stomoxys. Also, the deep molecular divergence observed between the subspecies Stomoxys niger niger Macquart and S. niger bilineatus Grünbreg led us to propose that they should rather be considered as distinct species, in agreement with ecological data. Bayesian phylogenetic analyses support three distinct lineages within the genus Stomoxys with a strong biogeographical component. The first lineage consists solely of the divergent Asian species S. indicus Picard which appears as the sister-group to all remaining Stomoxys species. The second clade groups the strictly African species Stomoxys inornatus Grünbreg, Stomoxys transvittatus Villeneuve, Stomoxys omega Newstead, and Stomoxys pallidus Roubaud. Finally, the third clade includes both African occurring and more widespread species such as the livestock pest Stomoxys calcitrans Linnaeus. Divergence time estimates indicate that the genus Stomoxys originated in the late Oligocene around 30 million years ago, with the major lineages diversifying in the Early Miocene between 20 and 15 million years ago at a time when temperate forests developed in the Northern Hemisphere.",
"archive": "Dryad Digital Repository",
"extra": "Type: dataset",
"itemID": "10.5061/dryad.9025",
"libraryCatalog": "datadryad.org",
"attachments": [],
"tags": [
"Molecular dating",
"Phylogenetic relationship",
"Stomoxys flies"
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://datadryad.org/resource/doi:10.5061/dryad.9025/2",
"items": [
{
"itemType": "journalArticle",
"title": "Dsouli-InfectGenetEvol11 phylogram",
"creators": [
{
"firstName": "Najla",
"lastName": "Dsouli",
"creatorType": "author"
},
{
"firstName": "Frédéric",
"lastName": "Delsuc",
"creatorType": "author"
},
{
"firstName": "Johan",
"lastName": "Michaux",
"creatorType": "author"
},
{
"firstName": "Eric",
"lastName": "De Stordeur",
"creatorType": "author"
},
{
"firstName": "Arnaud",
"lastName": "Couloux",
"creatorType": "author"
},
{
"firstName": "Michel",
"lastName": "Veuille",
"creatorType": "author"
},
{
"firstName": "Gérard",
"lastName": "Duvallet",
"creatorType": "author"
}
],
"date": "2011-03-31",
"DOI": "10.5061/dryad.9025/2",
"abstractNote": "This phylogram is the 50% majority\r\nrule consensus tree presented in Figure 1. It was obtained with Bayesian inference using MrBayes under the GTR + G model. Numbers at nodes indicate posterior probabilities (PP).",
"archive": "Dryad Digital Repository",
"extra": "Type: dataset",
"itemID": "10.5061/dryad.9025/2",
"libraryCatalog": "datadryad.org",
"rights": "http://creativecommons.org/publicdomain/zero/1.0/",
"attachments": [],
"tags": [
"Molecular dating",
"Phylogenetic relationship",
"Stomoxys flies"
],
"notes": [],
"seeAlso": [
"10.5061/dryad.9025"
]
},
{
"itemType": "journalArticle",
"title": "Data from: Phylogenetic analyses of mitochondrial and nuclear data in haematophagous flies support the paraphyly of the genus Stomoxys (Diptera: Muscidae)",
"creators": [
{
"firstName": "Najla",
"lastName": "Dsouli",
"creatorType": "author"
},
{
"firstName": "Frédéric",
"lastName": "Delsuc",
"creatorType": "author"
},
{
"firstName": "Johan",
"lastName": "Michaux",
"creatorType": "author"
},
{
"firstName": "Eric",
"lastName": "De Stordeur",
"creatorType": "author"
},
{
"firstName": "Arnaud",
"lastName": "Couloux",
"creatorType": "author"
},
{
"firstName": "Michel",
"lastName": "Veuille",
"creatorType": "author"
},
{
"firstName": "Gérard",
"lastName": "Duvallet",
"creatorType": "author"
}
],
"date": "2011-02-13",
"DOI": "10.5061/dryad.9025",
"abstractNote": "The genus Stomoxys Geoffroy (Diptera; Muscidae) contains species of parasitic flies that are of medical and economic importance. We conducted a phylogenetic analysis including 10 representative species of the genus including multiple exemplars, together with the closely related genera Prostomoxys Zumpt, Haematobosca Bezzi, and Haematobia Lepeletier & Serville. Phylogenetic relationships were inferred using maximum likelihood and Bayesian methods from DNA fragments from the cytochrome c oxidase subunit I (COI, 753 bp) and cytochrome b (CytB, 587 bp) mitochondrial genes, and the nuclear ribosomal internal transcribed spacer 2 (ITS2, 426 bp). The combination of mitochondrial and nuclear data strongly supports the paraphyly of the genus Stomoxys because of the inclusion of Prostomoxys saegerae Zumpt. This unexpected result suggests that Prostomoxys should be renamed into Stomoxys. Also, the deep molecular divergence observed between the subspecies Stomoxys niger niger Macquart and S. niger bilineatus Grünbreg led us to propose that they should rather be considered as distinct species, in agreement with ecological data. Bayesian phylogenetic analyses support three distinct lineages within the genus Stomoxys with a strong biogeographical component. The first lineage consists solely of the divergent Asian species S. indicus Picard which appears as the sister-group to all remaining Stomoxys species. The second clade groups the strictly African species Stomoxys inornatus Grünbreg, Stomoxys transvittatus Villeneuve, Stomoxys omega Newstead, and Stomoxys pallidus Roubaud. Finally, the third clade includes both African occurring and more widespread species such as the livestock pest Stomoxys calcitrans Linnaeus. Divergence time estimates indicate that the genus Stomoxys originated in the late Oligocene around 30 million years ago, with the major lineages diversifying in the Early Miocene between 20 and 15 million years ago at a time when temperate forests developed in the Northern Hemisphere.",
"archive": "Dryad Digital Repository",
"extra": "Type: dataset",
"itemID": "10.5061/dryad.9025",
"libraryCatalog": "datadryad.org",
"attachments": [],
"tags": [
"Molecular dating",
"Phylogenetic relationship",
"Stomoxys flies"
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://datadryad.org/discover?query=&submit=Go&fq=dc.subject%3APhylogenetic+relationship&filtertype=*&filter=&rpp=5&sort_by=score&order=DESC",
"items": "multiple"
}
]
/** END TEST CASES **/
100Oliver Vivell and Michael Berkowitz^https?://www\.jurpc\.de/jurpc/show\?id=function detectWeb(doc, url) {
//prevent Zotero from throwing an error here
var firstLine = ZU.xpathText(doc, '//h2[1]');
if (firstLine.indexOf("Urteil vom") != -1 || firstLine.indexOf("Beschluss vom")!=-1) {
return "case";
}
else {
return "journalArticle";
}
}
function doWeb(doc, url) {
var articles = new Array();
if (detectWeb(doc, url) == "journalArticle") {
// Aufsatz gefunden
var item = new Zotero.Item('journalArticle');
// Authors and title are in h2-elements
var information = ZU.xpath(doc, '//h2');
var aus = information[0].textContent.split("/");
for (var i=0; i< aus.length ; i++) {
aus[i] = aus[i].replace(/\*/, "").trim();
item.creators.push(ZU.cleanAuthor(aus[i], "author"));
}
item.title = ZU.trimInternal(information[1].textContent);
var webdoktext = ZU.xpathText(doc, '//h3');
var year = webdoktext.match(/\/(\d{4}),/);
var webdok = webdoktext.match(/Dok. (\d+)\//);
if (year) item.year = year[1];
if (webdok && year) {
item.volume = "WebDok " + webdok[1] + "/" + year[1];
}
var doi = ZU.xpathText(doc, '//span[@class="resultinfo left"]')
if (doi != null) {
item.DOI = ZU.cleanDOI(doi);
}
item.journal = "JurPC";
item.url = url;
item.language = "de-DE";
item.attachments = [{
title: "JurPC Snapshot",
document: doc
}];
item.complete();
} else {
//Case
var item = new Zotero.Item('case');
// all information about the case are stored in h2-elements.
var information = doc.getElementsByTagName('h2');
var caseInformation = [];
for (var i=0; i<information.length; i++) {
caseInformation[i] = information[i].textContent;
}
// does the first row contain court, type of decision and date? Then clean up data!
var i = caseInformation[0].indexOf("Urteil vom");
if (i == -1) i = caseInformation[0].indexOf("Beschluss vom")
if (i != -1) {
caseInformation.splice(1, 0, caseInformation[0].substr(i));
caseInformation[0] = caseInformation[0].substring(0, i);
}
item.title = caseInformation[3];
item.court = caseInformation[0];
item.docketNumber = caseInformation[2];
item.reporter = "JurPC WebDok";
var cite = ZU.xpathText(doc, '//h3');
var year = cite.match(/\/(\d{4})/);
var webdok = cite.match(/Dok. (\d+)\//);
if (webdok && year) {
item.reporterVolume = " " + webdok[1] + "/" + year[1];
}
item.url = url;
var date = caseInformation[1].match(/\b(\d{1,2})\.\s*(\d{1,2})\.\s*(\d{4})\b/);
if (date) {
item.dateDecided = date[3] + "-" + date[2] + "-" + date[1];
}
// store type of decision
if (/Beschluss./i.test(caseInformation[1])) {
item.extra = "Genre: Beschl.";
}
else if (/Urteil/i.test(caseInformation[1])) {
item.extra = "Genre: Urt.";
}
var doi = ZU.xpathText(doc, '//span[@class="resultinfo left"]')
if (doi) {
item.DOI = ZU.cleanDOI(doi);
}
item.language = "de-DE";
item.attachments = [{
title: "JurPC Snapshot",
document: doc
}];
item.complete();
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://www.jurpc.de/jurpc/show?id=20110132",
"items": [
{
"itemType": "journalArticle",
"title": "Die datenschutzrechtliche Einwilligung des Beschäftigten",
"creators": [
{
"firstName": "Johannes",
"lastName": "Habermalz",
"creatorType": "author"
}
],
"DOI": "10.7328/jurpcb/2011268130",
"language": "de-DE",
"libraryCatalog": "JurPC",
"url": "http://www.jurpc.de/jurpc/show?id=20110132",
"volume": "WebDok 132/2011",
"attachments": [
{
"title": "JurPC Snapshot"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.jurpc.de/jurpc/show?id=20000220",
"items": [
{
"itemType": "case",
"caseName": "OEM-Version",
"creators": [],
"dateDecided": "2000-07-06",
"court": "BGH",
"docketNumber": "I ZR 244/97",
"extra": "Genre: Urt.",
"language": "de-DE",
"reporter": "JurPC WebDok",
"reporterVolume": "220/2000",
"url": "http://www.jurpc.de/jurpc/show?id=20000220",
"attachments": [
{
"title": "JurPC Snapshot"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.jurpc.de/jurpc/show?id=20140193",
"items": [
{
"itemType": "case",
"caseName": "Zur Haftung des Domainregistrars für Domaininhalte",
"creators": [],
"dateDecided": "2014-10-22",
"court": "Saarländisches Oberlandesgericht",
"docketNumber": "1 U 25/14",
"extra": "Genre: Urt.",
"language": "de-DE",
"reporter": "JurPC WebDok",
"reporterVolume": "193/2014",
"url": "http://www.jurpc.de/jurpc/show?id=20140193",
"attachments": [
{
"title": "JurPC Snapshot"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.jurpc.de/jurpc/show?id=20140165",
"items": [
{
"itemType": "case",
"caseName": "Deus Ex",
"creators": [],
"dateDecided": "2014-05-15",
"court": "BGH",
"docketNumber": "I ZB 71/13",
"extra": "Genre: Beschl.",
"language": "de-DE",
"reporter": "JurPC WebDok",
"reporterVolume": "165/2014",
"url": "http://www.jurpc.de/jurpc/show?id=20140165",
"attachments": [
{
"title": "JurPC Snapshot"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.jurpc.de/jurpc/show?id=20140194",
"items": [
{
"itemType": "journalArticle",
"title": "Tagungsbericht über den 3. IT-Rechtstag in Frankfurt am Main",
"creators": [
{
"firstName": "Wolfgang",
"lastName": "Kuntz",
"creatorType": "author"
}
],
"DOI": "10.7328/jurpcb20142912190",
"language": "de-DE",
"libraryCatalog": "JurPC",
"url": "http://www.jurpc.de/jurpc/show?id=20140194",
"volume": "WebDok 194/2014",
"attachments": [
{
"title": "JurPC Snapshot"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Martin Fenner^https?://(www\.)?ncbi\.nlm\.nih\.gov/nuccore//**
Copyright (c) 2014 Martin Fenner
This program is free software: you can redistribute it and/or
modify it under the terms of the GNU Affero General Public License
as published by the Free Software Foundation, either version 3 of
the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public
License along with this program. If not, see
<http://www.gnu.org/licenses/>.
*/
function detectWeb(doc, url) {
// use item type journalArticle until item type dataset is supported in Zotero
if (getIds(doc)) return "journalArticle";
// search results
if (url.indexOf("/?term=") != -1 && getSearchResults(doc, true)) return "multiple";
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
getSelectedJSON(doc);
} else {
var ids = getIds(doc);
getJSON(ids);
}
}
function getSearchResults(doc, checkOnly) {
var results = doc.getElementsByClassName('rslt');
if (!results.length) return false;
var items = {};
var found = false;
for (var i = 0; i < results.length; i++) {
var title = results[i].firstChild.textContent;
// parse the id (a number) from the second link
var links = results[i].getElementsByTagName("a");
var id = links[1].href.match(/[\d]+/);
if (id && title) {
if (checkOnly) return true;
found = true;
items["_" + id[0]] = ZU.trimInternal(title);
}
}
return found ? items : false;
}
function getSelectedJSON(doc) {
var items = getSearchResults(doc);
var ids = [];
Zotero.selectItems(items, function(selectedItems) {
if (!selectedItems) return true;
for (var i in selectedItems) {
ids.push(i.substr(1));
}
getJSON(ids);
});
}
function getIds(doc) {
var ids = ZU.xpathText(doc, '/html/head/meta[@name="ncbi_uidlist"]/@content')
if (!ids) return false;
return ids.split(",");
}
function getJSON(ids) {
var baseURL = "//eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=nucleotide&retmode=json&id=";
var jsonURL = baseURL + encodeURIComponent(ids.join(","));
Z.debug(jsonURL);
ZU.doGet(jsonURL, parseJSON);
}
function parseJSON(text) {
try {
var obj = JSON.parse(text).result;
var uids = obj.uids;
} catch (e) {
Z.debug(text.substr(0, 100));
throw e;
}
for (var i = 0; i < uids.length; i++) {
var uid = uids[i];
var data = obj[uid];
var item = new Z.Item("journalArticle");
item.title = data.title;
item.callNumber = data.accessionversion;
item.archive = "NCBI Nucleotide Database";
item.archiveLocation = uid;
// indicate that this is in fact a dataset
item.extra = "Type: dataset";
var version = data.accessionversion.match(/\.(\d{1,2})$/);
if (version && version[1] != '1') {
item.extra += "\nVersion: " + version[1];
}
item.url = "http://www.ncbi.nlm.nih.gov/nuccore/" + encodeURIComponent(data.accessionversion);
item.date = data.updatedate;
if (data.organism) item.tags.push(data.organism);
if (data.moltype) item.tags.push(data.moltype);
if (data.sourcedb) item.tags.push(data.sourcedb);
item.attachments.push({
url: "http://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=nucleotide&retmode=gb&rettype=text&id=" + encodeURIComponent(uid),
title: "Nucleotide sequence (gb)",
mimeType: "chemical/x-genbank",
snapshot: false
});
// http://www.ncbi.nlm.nih.gov/About/disclaimer.html
item.rights = "Public domain";
item.language = "en-US";
item.complete();
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://www.ncbi.nlm.nih.gov/nuccore/?term=brca1",
"items": "multiple"
},
{
"type": "web",
"url": "http://www.ncbi.nlm.nih.gov/nuccore/I01425.1",
"items": [
{
"itemType": "journalArticle",
"title": "Sequence 1 from Patent US 4849348",
"creators": [],
"date": "1993/03/05",
"archive": "NCBI Nucleotide Database",
"archiveLocation": "270186",
"callNumber": "I01425.1",
"extra": "Type: dataset",
"language": "en-US",
"libraryCatalog": "NCBI Nucleotide",
"rights": "Public domain",
"url": "http://www.ncbi.nlm.nih.gov/nuccore/I01425.1",
"attachments": [
{
"title": "Nucleotide sequence (gb)",
"mimeType": "chemical/x-genbank",
"snapshot": false
}
],
"tags": [
"dna",
"insd"
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.ncbi.nlm.nih.gov/nuccore/NM_078524.4",
"items": [
{
"itemType": "journalArticle",
"title": "Drosophila melanogaster smad on X, transcript variant A (Smox), mRNA",
"creators": [],
"date": "2016/12/13",
"archive": "NCBI Nucleotide Database",
"archiveLocation": "665390239",
"callNumber": "NM_078524.4",
"extra": "Type: dataset\nVersion: 4",
"language": "en-US",
"libraryCatalog": "NCBI Nucleotide",
"rights": "Public domain",
"url": "http://www.ncbi.nlm.nih.gov/nuccore/NM_078524.4",
"attachments": [
{
"title": "Nucleotide sequence (gb)",
"mimeType": "chemical/x-genbank",
"snapshot": false
}
],
"tags": [
"fruit fly",
"refseq",
"rna"
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Aurimas Vinckevicius^https?://([^/]+\.)?treesearch\.fs\.fed\.us/(pubs/\d+$|search\.php)/**
Copyright (c) 2012 Aurimas Vinckevicius
This program is free software: you can redistribute it and/or
modify it under the terms of the GNU Affero General Public License
as published by the Free Software Foundation, either version 3 of
the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public
License along with this program. If not, see
<http://www.gnu.org/licenses/>.
*/
function getFieldValue(entry, name) {
var value = ZU.xpathText(entry,
'.//p/strong[normalize-space(text())="'
+ name + ':"]/following-sibling::node()', null, '');
return value ? value.trim() : '';
}
function parseSource(sourceStr) {
sourceStr = sourceStr.trim();
var matches = sourceStr.match(
/^(.*[^.])\.?\s+(\d+\w?)(?:\((\d+)\))?:\s*(\w?\d+(?:-\w?\d+)?)(?:\.?\s+\[[^\]]+\])?\s*\.?$/);
if (matches) {
return {
Type: 'journalArticle',
publicationTitle: matches[1],
volume: matches[2],
issue: matches[3],
pages: matches[4]
};
}
else {
if (sourceStr.substr(0, 3) == 'In:') {
// book section
matches = sourceStr.match(/\d+-\d+/);
return {
Type: 'bookSection',
pages: matches ? matches[0] : null
};
}
matches = sourceStr.match(/\.\s+(\d+)\s+p\./);
return {
Type: 'book',
numPages: matches ? matches[1] : null
};
}
}
function scrape(doc, url) {
var entry = doc.getElementById('publicationLayoutLeftSide');
var source = parseSource(getFieldValue(entry, 'Source'));
var item = new Zotero.Item(source.type);
item.title = getFieldValue(entry, 'Title');
item.date = getFieldValue(entry, 'Date');
item.abstractNote = getFieldValue(entry, 'Description');
item.publicationTitle = source.publicationTitle;
item.volume = source.volume;
item.issue = source.issue;
item.pages = source.pages;
item.numPages = source.numPages;
item.url = url;
var authors = getFieldValue(entry, 'Author').split(/;\s+/);
for (let i = 0, n = authors.length; i < n; i++) {
item.creators.push(
ZU.cleanAuthor(
ZU.capitalizeTitle(authors[i].replace(/;$/, '')),
'author', true));
}
var keywords = ZU.xpath(entry, './/p[@id="keywords"]/a');
for (let i in keywords) {
item.tags.push(keywords[i].textContent.trim());
}
var pdfUrl = ZU.xpathText(entry, '/html/head/meta[@name="citation_pdf_url"]/@content');
if (pdfUrl) {
item.attachments.push({
url: pdfUrl.trim(),
title: 'Full Text PDF',
mimeType: 'application/pdf'
});
}
item.complete();
}
function detectWeb(doc, url) {
if (url.match(/\/pubs\/\d+$/)) {
var entry = doc.getElementById('publicationLayoutLeftSide');
if (!entry) return false;
var source = parseSource(getFieldValue(entry, 'Source'));
return source ? source.type : null;
}
else if (url.includes('search.php') && getSearchResults(doc, true)) {
return 'multiple';
}
return false;
}
function getSearchResults(doc, checkOnly) {
var links = ZU.xpath(doc, '//table[@class="query"]//tr[1]/following-sibling::tr/td[2]//a');
if (checkOnly || !links.length) return !!links.length;
var items = {};
for (var i = 0; i < links.length; i++) {
items[links[i].href] = ZU.trimInternal(links[i].textContent);
}
return items;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == 'multiple') {
Zotero.selectItems(getSearchResults(doc), function (selectedItems) {
if (!selectedItems) return;
var urls = [];
for (var i in selectedItems) {
urls.push(i);
}
ZU.processDocuments(urls, scrape);
});
}
else {
scrape(doc, url);
}
}/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.treesearch.fs.fed.us/pubs/39839",
"items": [
{
"itemType": "journalArticle",
"title": "Landscape epidemiology and control of pathogens with cryptic and long-distance dispersal: Sudden oak death in northern Californian forests",
"creators": [
{
"firstName": "Joao A. N.",
"lastName": "Filipe",
"creatorType": "author"
},
{
"firstName": "Richard C.",
"lastName": "Cobb",
"creatorType": "author"
},
{
"firstName": "Ross K.",
"lastName": "Meentemeyer",
"creatorType": "author"
},
{
"firstName": "Christopher A.",
"lastName": "Lee",
"creatorType": "author"
},
{
"firstName": "Yana S.",
"lastName": "Valachovic",
"creatorType": "author"
},
{
"firstName": "Alex R.",
"lastName": "Cook",
"creatorType": "author"
},
{
"firstName": "David M.",
"lastName": "Rizzo",
"creatorType": "author"
},
{
"firstName": "Christopher A.",
"lastName": "Gilligan",
"creatorType": "author"
}
],
"date": "2012",
"abstractNote": "Exotic pathogens and pests threaten ecosystem service, biodiversity, and crop security globally. If an invasive agent can disperse asymptomatically over long distances, multiple spatial and temporal scales interplay, making identification of effective strategies to regulate, monitor, and control disease extremely difficult. The management of outbreaks is also challenged by limited data on the actual area infested and the dynamics of spatial spread, due to financial, technological, or social constraints. We examine principles of landscape epidemiology important in designing policy to prevent or slow invasion by such organisms, and use Phytophthora ramorum, the cause of sudden oak death, to illustrate how shortfalls in their understanding can render management applications inappropriate. This pathogen has invaded forests in coastal California, USA, and an isolated but fast-growing epidemic focus in northern California (Humboldt County) has the potential for extensive spread. The risk of spread is enhanced by the pathogen's generalist nature and survival. Additionally, the extent of cryptic infection is unknown due to limited surveying resources and access to private land. Here, we use an epidemiological model for transmission in heterogeneous landscapes and Bayesian Markov-chain-Monte-Carlo inference to estimate dispersal and life-cycle parameters of P. ramorum and forecast the distribution of infection and speed of the epidemic front in Humboldt County. We assess the viability of management options for containing the pathogen's northern spread and local impacts. Implementing a stand-alone host-free \"barrier\" had limited efficacy due to long-distance dispersal, but combining curative with preventive treatments ahead of the front reduced local damage and contained spread. While the large size of this focus makes effective control expensive, early synchronous treatment in newly-identified disease foci should be more cost-effective. We show how the successful management of forest ecosystems depends on estimating the spatial scales of invasion and treatment of pathogens and pests with cryptic long-distance dispersal.",
"issue": "1",
"libraryCatalog": "Treesearch",
"pages": "e1002328",
"publicationTitle": "PLoS Comput Biol",
"shortTitle": "Landscape epidemiology and control of pathogens with cryptic and long-distance dispersal",
"url": "https://www.treesearch.fs.fed.us/pubs/39839",
"volume": "8",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
"Phytophthora ramorum",
"landscape epidemiology",
"sudden oak death"
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.treesearch.fs.fed.us/pubs/40071",
"items": [
{
"itemType": "journalArticle",
"title": "Repeated prescribed fires alter gap-phase regeneration in mixed-oak forests",
"creators": [
{
"firstName": "Todd F.",
"lastName": "Hutchinson",
"creatorType": "author"
},
{
"firstName": "Robert P.",
"lastName": "Long",
"creatorType": "author"
},
{
"firstName": "Joanne",
"lastName": "Rebbeck",
"creatorType": "author"
},
{
"firstName": "Elaine Kennedy",
"lastName": "Sutherland",
"creatorType": "author"
},
{
"firstName": "Daniel A.",
"lastName": "Yaussy",
"creatorType": "author"
}
],
"date": "2012",
"abstractNote": "Oak dominance is declining in the central hardwoods region, as canopy oaks are being replaced by shade-tolerant trees that are abundant in the understory of mature stands. Although prescribed fire can reduce understory density, oak seedlings often fail to show increased vigor after fire, as the canopy remains intact. In this study, we examine the response of tree regeneration to a sequence of repeated prescribed fires followed by canopy gap formation. We sampled advance regeneration (stems >30 cm tall) in 52 gaps formed by synchronous mortality of white oak (Quercus alba L.); 28 gaps were in three burned stands and 24 gaps were in three unburned stands. Five years after gap formation, unburned gaps were being filled by shade-tolerant saplings and poles and were heavily shaded (7% of full sun). By contrast, tolerant saplings had been virtually eliminated in the burned gaps, which averaged 19% of full sun. Larger oak and hickory regeneration was much more abundant in burned gaps, as was sassafras, while shade-tolerant stems were equally abundant in burned and unburned gaps. Our results suggest that the regeneration of oak, particularly that of white oak, may be improved with multiple prescribed fires followed by the creation of moderate-sized canopy gaps (200-400 m2).",
"libraryCatalog": "Treesearch",
"pages": "303-314",
"publicationTitle": "Canadian Journal of Forest Research",
"url": "https://www.treesearch.fs.fed.us/pubs/40071",
"volume": "42",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.treesearch.fs.fed.us/pubs/39949",
"items": [
{
"itemType": "journalArticle",
"title": "Application of phosphonate to prevent sudden oak death in south-western Oregon tanoak (Notholithocarpus densiflorus) forests",
"creators": [
{
"firstName": "Alan",
"lastName": "Kanaskie",
"creatorType": "author"
},
{
"firstName": "Everett",
"lastName": "Hansen",
"creatorType": "author"
},
{
"firstName": "Wendy",
"lastName": "Sutton",
"creatorType": "author"
},
{
"firstName": "Paul",
"lastName": "Reeser",
"creatorType": "author"
},
{
"firstName": "Carolyn",
"lastName": "Choquette",
"creatorType": "author"
}
],
"date": "2011",
"abstractNote": "We conducted four experiments to evaluate the effectiveness of phosphonate application to tanoak (Notholithocarpus densiflorus (Hook. & Arn.) Manos, Cannon & S.H.Oh) forests in south-western Oregon: (1) aerial application to forest stands; (2) trunk injection; (3) foliar spray of potted seedlings; and (4) foliar spray of stump sprouts. We compared aerial spray treatments: (1) no treatment (unsprayed); (2) low-dose (17.35 kg a.i. ha-1); and (3) high dose (34.5 kg a.i. ha-1), applied by helicopter in a carrier volume of 188 L ha-1 to 4-ha treatment plots. Treatments were applied in November 2007, in May 2008, and in December 2008 and May 2009 (double treatment). At the same time as the aerial application we injected phosphonate into the trunk of nearby mature tanoak trees at the standard label rates of 0.43 g a.i. cm-dbh-1. We used three different biological assays to measure uptake of phosphonate: (1) canopy twig dip in zoospore suspension; (2) in situ bole inoculation with Phytophthora gonapodyides (Petersen) Buisman; and (3) laboratory inoculation of log bolts with Phytophthora ramorum S. Werres, A.W.A.M. de Cock & W.A. Man in 't Veld and P. gonapodyides. We also simulated an aerial spray of potted seedlings, comparing an untreated control, a low dose (2.9 kg a.i. ha-1 applied in 935 L spray solution ha-1#, and a high dose #17.35 kg a.i. ha-1applied in 187 L spray solution ha-1).",
"libraryCatalog": "Treesearch",
"pages": "S177-S187",
"publicationTitle": "New Zealand Journal of Forestry Science",
"url": "https://www.treesearch.fs.fed.us/pubs/39949",
"volume": "41S",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
"Oregon",
"Phytophthora gonapodyides",
"Phytophthora ramorum",
"phosphonate",
"sudden oak death",
"tanoak."
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.treesearch.fs.fed.us/pubs/38058",
"items": [
{
"itemType": "bookSection",
"title": "Analysis of historical vegetation patterns in the eastern portion of the Illinois Lesser Shawnee Hills",
"creators": [
{
"firstName": "Suzanne L.",
"lastName": "Jones",
"creatorType": "author"
},
{
"firstName": "Roger C.",
"lastName": "Anderson",
"creatorType": "author"
}
],
"date": "2011",
"abstractNote": "We used General Land Office Survey (GLO) records to reconstruct the historical (1806-1810) vegetation of the eastern portion of the unglaciated Lesser Shawnee Hills Ecoregion of the Shawnee National Forest Purchase Area in southern Illinois. Prairies occurred on 0.4 percent of the area and savannah, open forest, and closed forest occupied 14.5 percent, 25.4 percent, and 59.6 percent of the area, respectively. Average tree density and basal area for the area were 102 trees per ha and 13 m2/ha, respectively. Closed forest occurred at significantly lower elevation than savannah, with average elevation being 139.3 m and 147.1 m for closed forest and savannah, respectively. White oak (Quercus alba) and black oak (Q. velutina) were the two leading dominant species in all vegetation categories. Savannah had higher importance of xeric species than did closed forest, whereas mesophytic species had higher Importance Values in closed forest. Variation in fire frequency, topography, and moisture availability likely contributed to the landscape vegetation patterns, species composition, and tree density and basal area in the study area. High abundances of oaks and hickories and low tree densities and basal areas throughout the study area indicate that all vegetation types may have experienced periodic fires. Note: Figure 1 corrected on October 30, 2014.",
"libraryCatalog": "Treesearch",
"pages": "5-7",
"url": "https://www.treesearch.fs.fed.us/pubs/38058",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.treesearch.fs.fed.us/pubs/38032",
"items": [
{
"itemType": "book",
"title": "Proceedings, 17th Central Hardwood Forest Conference",
"creators": [
{
"firstName": "Songlin",
"lastName": "Fei",
"creatorType": "author"
},
{
"firstName": "John M.",
"lastName": "Lhotka",
"creatorType": "author"
},
{
"firstName": "Jeffrey W.",
"lastName": "Stringer",
"creatorType": "author"
},
{
"firstName": "Kurt W.",
"lastName": "Gottschalk",
"creatorType": "author"
},
{
"firstName": "Gary W.",
"lastName": "Miller",
"creatorType": "author"
}
],
"date": "2011",
"abstractNote": "Includes 64 papers and 17 abstracts pertaining to research conducted on forest regeneration and propagation, forest products, ecology and forest dynamics, human dimensions and economics, forest biometrics and modeling, silviculture genetics, forest health and protection, and soil and mineral nutrition.",
"libraryCatalog": "Treesearch",
"numPages": "678",
"url": "https://www.treesearch.fs.fed.us/pubs/38032",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
"forest biometrics",
"forest ecology",
"forest health",
"forest products",
"regeneration",
"silviculture"
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.treesearch.fs.fed.us/pubs/40032",
"items": [
{
"itemType": "book",
"title": "West Virginia's Forests 2008",
"creators": [
{
"firstName": "Richard H.",
"lastName": "Widmann",
"creatorType": "author"
},
{
"firstName": "Gregory W.",
"lastName": "Cook",
"creatorType": "author"
},
{
"firstName": "Charles J.",
"lastName": "Barnett",
"creatorType": "author"
},
{
"firstName": "Brett J.",
"lastName": "Butler",
"creatorType": "author"
},
{
"firstName": "Douglas M.",
"lastName": "Griffith",
"creatorType": "author"
},
{
"firstName": "Mark A.",
"lastName": "Hatfield",
"creatorType": "author"
},
{
"firstName": "Cassandra M.",
"lastName": "Kurtz",
"creatorType": "author"
},
{
"firstName": "Randall S.",
"lastName": "Morin",
"creatorType": "author"
},
{
"firstName": "W. Keith",
"lastName": "Moser",
"creatorType": "author"
},
{
"firstName": "Charles H.",
"lastName": "Perry",
"creatorType": "author"
},
{
"firstName": "Ronald J.",
"lastName": "Piva",
"creatorType": "author"
},
{
"firstName": "Rachel",
"lastName": "Riemann",
"creatorType": "author"
},
{
"firstName": "Christopher W.",
"lastName": "Woodall",
"creatorType": "author"
}
],
"date": "2012",
"abstractNote": "The first full annual inventory of West Virginia's forests reports 12.0 million acres of forest land or 78 percent of the State's land area. The area of forest land has changed little since 2000. Of this land, 7.2 million acres (60 percent) are held by family forest owners. The current growing-stock inventory is 25 billion cubic feet--12 percent more than in 2000--and averages 2,136 cubic feet per acre. Yellow-poplar continues to lead in volume followed by white and chestnut oaks. Since 2000, the saw log portion of growing-stock volume has increased by 23 percent to 88 billion board feet. In the latest inventory, net growth exceeded removals for all major species. Detailed information on forest inventory methods and data quality estimates is included in a DVD at the back of this report. Tables of population estimates and a glossary are also included.",
"libraryCatalog": "Treesearch",
"numPages": "64",
"url": "https://www.treesearch.fs.fed.us/pubs/40032",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
"biomass",
"forest health",
"forest products",
"forest resources",
"volume"
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Eran Rosenthal and Abe Jellinek^https?://www\.ynet(\.co\.il|news\.com)//**
Copyright (c) 2021 Eran Rosenthal and Abe Jellinek
This program is free software: you can redistribute it and/or
modify it under the terms of the GNU Affero General Public License
as published by the Free Software Foundation, either version 3 of
the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public
License along with this program. If not, see
<http://www.gnu.org/licenses/>.
*/
function detectWeb(doc, _url) {
if (attr(doc, 'meta[property="og:type"]', 'content') == 'article') {
return 'newspaperArticle';
}
// no multiples - search is Google in an iframe
return false;
}
function doWeb(doc, url) {
let translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setHandler('itemDone', function (obj, item) {
// Ynet/Ynetnews stylize their names in lowercase, even in the metadata
item.publicationTitle = ZU.capitalizeTitle(item.publicationTitle, true);
item.tags = []; // always the same
var json = text(doc, 'script[type="application/ld+json"]');
var data = JSON.parse(json);
if (data.author) {
for (let name of data.author.name.split(', ')) {
item.creators.push(ZU.cleanAuthor(name, 'author', false));
}
}
item.complete();
});
translator.getTranslatorObject(function (em) {
em.itemType = 'newspaperArticle';
em.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.ynet.co.il/articles/0,7340,L-4690772,00.html",
"items": [
{
"itemType": "newspaperArticle",
"title": "תעלומת הקצין מארה\"ב, הסודות והמאהבת",
"creators": [
{
"firstName": "ירון",
"lastName": "דרוקמן",
"creatorType": "author"
}
],
"date": "2015-08-15T05:14:22.05522Z",
"abstractNote": "הכותרות בישרו השבוע לפני 15 שנים על פרשת ריגול מהסרטים: אמריקני-יהודי שהתגייר, בא לישראל עם חומר סודי ביותר ומטריף את הממשל מדאגה. חברתו העידה שהסתובב עם פאה ושפם והתקשר אליה מטלפונים ציבוריים לסניף הדואר. בסוף מצאו אותו במצפה רמון, והאמת התבררה. בערך",
"language": "he",
"libraryCatalog": "www.ynet.co.il",
"publicationTitle": "Ynet",
"url": "https://www.ynet.co.il/articles/0,7340,L-4690772,00.html",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.ynet.co.il/health/article/SkqOFf8qd",
"items": [
{
"itemType": "newspaperArticle",
"title": "השפעת כוח הכבידה על האוזניים: בדיקת שמיעה ישראלית תשוגר לחלל",
"creators": [
{
"firstName": "אלכסנדרה",
"lastName": "לוקש",
"creatorType": "author"
},
{
"firstName": "ניר (שוקו)",
"lastName": "כהן",
"creatorType": "author"
}
],
"date": "2021-06-03T09:59:52.444818Z",
"abstractNote": "בדיקות השמיעה של החברה הישראלית Tunefork נבחרו לקחת חלק במשימת החלל הפרטית \"רקיע\" בהשתתפות האסטרונאוט הישראלי איתן סטיבה: \"כולם זקוקים לחוויית סאונד טובה במכשירים החכמים שלהם\"",
"language": "he",
"libraryCatalog": "www.ynet.co.il",
"publicationTitle": "Ynet",
"shortTitle": "השפעת כוח הכבידה על האוזניים",
"url": "https://www.ynet.co.il/health/article/SkqOFf8qd",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.ynetnews.com/article/BkexUbIcO",
"items": [
{
"itemType": "newspaperArticle",
"title": "Historic coalition deal could help divided Israel heal",
"creators": [
{
"firstName": "Merav",
"lastName": "Batito",
"creatorType": "author"
}
],
"date": "2021-06-03T20:30:56.063619Z",
"abstractNote": "Opinion: With the dark cloud of the sectarian violence of last month still hovering over the country, Mansour Abbas' decision to join 'coalition for change' marks an opportunity for genuine partnership and cooperation between Israeli Jews and Arabs",
"language": "en",
"libraryCatalog": "www.ynetnews.com",
"publicationTitle": "Ynetnews",
"url": "https://www.ynetnews.com/article/BkexUbIcO",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Sebastian Karcher^https?://meetinglibrary\.asco\.org/(content|search)/* FW LINE 59:b820c6d */ function flatten(t){var e=new Array;for(var i in t){var r=t[i];r instanceof Array?e=e.concat(flatten(r)):e.push(r)}return e}var FW={_scrapers:new Array};FW._Base=function(){this.callHook=function(t,e,i,r){if("object"==typeof this.hooks){var n=this.hooks[t];"function"==typeof n&&n(e,i,r)}},this.evaluateThing=function(t,e,i){var r=typeof t;if("object"===r){if(t instanceof Array){var n=this.evaluateThing,a=t.map(function(t){return n(t,e,i)});return flatten(a)}return t.evaluate(e,i)}return"function"===r?t(e,i):t},this.makeItems=function(t,e,i,r,n){n()}},FW.Scraper=function(t){FW._scrapers.push(new FW._Scraper(t))},FW._Scraper=function(t){for(x in t)this[x]=t[x];this._singleFieldNames=["abstractNote","applicationNumber","archive","archiveLocation","artworkMedium","artworkSize","assignee","audioFileType","audioRecordingType","billNumber","blogTitle","bookTitle","callNumber","caseName","code","codeNumber","codePages","codeVolume","committee","company","conferenceName","country","court","date","dateDecided","dateEnacted","dictionaryTitle","distributor","docketNumber","documentNumber","DOI","edition","encyclopediaTitle","episodeNumber","extra","filingDate","firstPage","forumTitle","genre","history","institution","interviewMedium","ISBN","ISSN","issue","issueDate","issuingAuthority","journalAbbreviation","label","language","legalStatus","legislativeBody","letterType","libraryCatalog","manuscriptType","mapType","medium","meetingName","nameOfAct","network","number","numberOfVolumes","numPages","pages","patentNumber","place","postType","presentationType","priorityNumbers","proceedingsTitle","programTitle","programmingLanguage","publicLawNumber","publicationTitle","publisher","references","reportNumber","reportType","reporter","reporterVolume","rights","runningTime","scale","section","series","seriesNumber","seriesText","seriesTitle","session","shortTitle","studio","subject","system","thesisType","title","type","university","url","version","videoRecordingType","volume","websiteTitle","websiteType"],this._makeAttachments=function(t,e,i,r){if(i instanceof Array)i.forEach(function(i){this._makeAttachments(t,e,i,r)},this);else if("object"==typeof i){var n=i.urls||i.url,a=i.types||i.type,s=i.titles||i.title,o=i.snapshots||i.snapshot,u=this.evaluateThing(n,t,e),l=this.evaluateThing(s,t,e),c=this.evaluateThing(a,t,e),h=this.evaluateThing(o,t,e);u instanceof Array||(u=[u]);for(var f in u){var p,m,v,d=u[f];p=c instanceof Array?c[f]:c,m=l instanceof Array?l[f]:l,v=h instanceof Array?h[f]:h,r.attachments.push({url:d,title:m,mimeType:p,snapshot:v})}}},this.makeItems=function(t,e,i,r,n){var a=new Zotero.Item(this.itemType);a.url=e;for(var s in this._singleFieldNames){var o=this._singleFieldNames[s];if(this[o]){var u=this.evaluateThing(this[o],t,e);u instanceof Array?a[o]=u[0]:a[o]=u}}var l=["creators","tags"];for(var c in l){var h=l[c],f=this.evaluateThing(this[h],t,e);if(f)for(var p in f)a[h].push(f[p])}this._makeAttachments(t,e,this.attachments,a),r(a,this,t,e),n()}},FW._Scraper.prototype=new FW._Base,FW.MultiScraper=function(t){FW._scrapers.push(new FW._MultiScraper(t))},FW._MultiScraper=function(t){for(x in t)this[x]=t[x];this._mkSelectItems=function(t,e){var i=new Object;for(var r in t)i[e[r]]=t[r];return i},this._selectItems=function(t,e,i){var r=new Array;Zotero.selectItems(this._mkSelectItems(t,e),function(t){for(var e in t)r.push(e);i(r)})},this._mkAttachments=function(t,e,i){var r=this.evaluateThing(this.attachments,t,e),n=new Object;if(r)for(var a in i)n[i[a]]=r[a];return n},this._makeChoices=function(t,e,i,r,n){if(t instanceof Array)t.forEach(function(t){this._makeTitlesUrls(t,e,i,r,n)},this);else if("object"==typeof t){var a=t.urls||t.url,s=t.titles||t.title,o=this.evaluateThing(a,e,i),u=this.evaluateThing(s,e,i),l=u instanceof Array;o instanceof Array||(o=[o]);for(var c in o){var h,f=o[c];h=l?u[c]:u,n.push(f),r.push(h)}}},this.makeItems=function(t,e,i,r,n){if(this.beforeFilter){var a=this.beforeFilter(t,e);if(a!=e)return void this.makeItems(t,a,i,r,n)}var s=[],o=[];this._makeChoices(this.choices,t,e,s,o);var u=this._mkAttachments(t,e,o),l=this.itemTrans;this._selectItems(s,o,function(t){if(t){var e=function(t){var e=t.documentURI,i=l;void 0===i&&(i=FW.getScraper(t,e)),void 0===i||i.makeItems(t,e,u[e],r,function(){})};Zotero.Utilities.processDocuments(t,e,n)}else n()})}},FW._MultiScraper.prototype=new FW._Base,FW.WebDelegateTranslator=function(t){return new FW._WebDelegateTranslator(t)},FW._WebDelegateTranslator=function(t){for(x in t)this[x]=t[x];this.makeItems=function(t,e,i,r,n){var a=this,s=Zotero.loadTranslator("web");s.setHandler("itemDone",function(i,n){r(n,a,t,e)}),s.setDocument(t),this.translatorId?(s.setTranslator(this.translatorId),s.translate()):(s.setHandler("translators",function(t,e){e.length&&(s.setTranslator(e[0]),s.translate())}),s.getTranslators()),n()}},FW._WebDelegateTranslator.prototype=new FW._Base,FW._StringMagic=function(){this._filters=new Array,this.addFilter=function(t){return this._filters.push(t),this},this.split=function(t){return this.addFilter(function(e){return e.split(t).filter(function(t){return""!=t})})},this.replace=function(t,e,i){return this.addFilter(function(r){return r.match(t)?r.replace(t,e,i):r})},this.prepend=function(t){return this.replace(/^/,t)},this.append=function(t){return this.replace(/$/,t)},this.remove=function(t,e){return this.replace(t,"",e)},this.trim=function(){return this.addFilter(function(t){return Zotero.Utilities.trim(t)})},this.trimInternal=function(){return this.addFilter(function(t){return Zotero.Utilities.trimInternal(t)})},this.match=function(t,e){return e||(e=0),this.addFilter(function(i){var r=i.match(t);return void 0===r||null===r?void 0:r[e]})},this.cleanAuthor=function(t,e){return this.addFilter(function(i){return Zotero.Utilities.cleanAuthor(i,t,e)})},this.key=function(t){return this.addFilter(function(e){return e[t]})},this.capitalizeTitle=function(){return this.addFilter(function(t){return Zotero.Utilities.capitalizeTitle(t)})},this.unescapeHTML=function(){return this.addFilter(function(t){return Zotero.Utilities.unescapeHTML(t)})},this.unescape=function(){return this.addFilter(function(t){return unescape(t)})},this._applyFilters=function(t,e){for(i in this._filters){t=flatten(t),t=t.filter(function(t){return void 0!==t&&null!==t});for(var r=0;r<t.length;r++)try{if(void 0===t[r]||null===t[r])continue;t[r]=this._filters[i](t[r],e)}catch(n){t[r]=void 0,Zotero.debug("Caught exception "+n+"on filter: "+this._filters[i])}t=t.filter(function(t){return void 0!==t&&null!==t})}return flatten(t)}},FW.PageText=function(){return new FW._PageText},FW._PageText=function(){this._filters=new Array,this.evaluate=function(t){var e=[t.documentElement.innerHTML];return e=this._applyFilters(e,t),0==e.length?!1:e}},FW._PageText.prototype=new FW._StringMagic,FW.Url=function(){return new FW._Url},FW._Url=function(){this._filters=new Array,this.evaluate=function(t,e){var i=[e];return i=this._applyFilters(i,t),0==i.length?!1:i}},FW._Url.prototype=new FW._StringMagic,FW.Xpath=function(t){return new FW._Xpath(t)},FW._Xpath=function(t){this._xpath=t,this._filters=new Array,this.text=function(){var t=function(t){return"object"==typeof t&&t.textContent?t.textContent:t};return this.addFilter(t),this},this.sub=function(t){var e=function(e,i){var r=i.evaluate(t,e,null,XPathResult.ANY_TYPE,null);return r?r.iterateNext():void 0};return this.addFilter(e),this},this.evaluate=function(t){var e=t.evaluate(this._xpath,t,null,XPathResult.ANY_TYPE,null),i=e.resultType,r=new Array;if(i==XPathResult.STRING_TYPE)r.push(e.stringValue);else if(i==XPathResult.BOOLEAN_TYPE)r.push(e.booleanValue);else if(i==XPathResult.NUMBER_TYPE)r.push(e.numberValue);else if(i==XPathResult.ORDERED_NODE_ITERATOR_TYPE||i==XPathResult.UNORDERED_NODE_ITERATOR_TYPE)for(var n;n=e.iterateNext();)r.push(n);return r=this._applyFilters(r,t),0==r.length?!1:r}},FW._Xpath.prototype=new FW._StringMagic,FW.detectWeb=function(t,e){for(var i in FW._scrapers){var r=FW._scrapers[i],n=r.evaluateThing(r.itemType,t,e),a=r.evaluateThing(r.detect,t,e);if(a.length>0&&a[0])return n}},FW.getScraper=function(t,e){var i=FW.detectWeb(t,e);return FW._scrapers.filter(function(r){return r.evaluateThing(r.itemType,t,e)==i&&r.evaluateThing(r.detect,t,e)})[0]},FW.doWeb=function(t,e){var i=FW.getScraper(t,e);i.makeItems(t,e,[],function(t,e,i,r){e.callHook("scraperDone",t,i,r),t.title||(t.title=""),t.complete()},function(){Zotero.done()}),Zotero.wait()};
function detectWeb(doc, url) { return FW.detectWeb(doc, url); }
function doWeb(doc, url) { return FW.doWeb(doc, url); }
/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2013 Sebastian Karcher
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
FW.Scraper({
itemType : 'journalArticle',
detect : FW.Url().match(/content\/\d+\-\d+/),
title : FW.Xpath ('//div[@class="content"]/h3').text().trim().replace(/\.$/, ''),
creators : FW.Xpath ('//div[contains(@class, "field-name-field-authors")]/div[@class="field-items"]')
.text().remove(/\;.*/m ).split(/\,/).replace(/\s/," ").cleanAuthor("author"),
date : FW.Xpath ('//div[contains(@class, "field-name-field-citation")]/div[@class="field-items"]').text().match( /\d{4}/ ).trim(),
publicationTitle : "Journal of Clinical Oncology",
journalAbbreviation: "J. Clin. Oncol.",
ISSN : "0732-183X",
url : FW.Url(),
volume: FW.Xpath ('//div[contains(@class, "field-name-field-citation")]/div[@class="field-items"]').text().remove(/,.+/).remove(/J Clin Oncol\s*/),
issue: FW.Xpath ('//div[contains(@class, "field-name-field-citation")]/div[@class="field-items"]').text().match(/\(.+\)/).remove(/[\(\)]/g),
abstractNote : FW.Xpath ('//div[@class="field-label" and contains(text(), "Abstract:")]/following-sibling::p').text().remove(/Background:/).trim(),
meetingName : FW.Xpath ('//div[contains(@class, "field-name-field-meeting")]/div[@class="field-items"]//a').text().trim(),
tags : FW.Xpath ('//div[contains(@class, "field-name-field-subcategories")]/div[@class="field-items"]//a').text().remove(/;[\s\S]*/).split(/\//).trim()
});
FW.MultiScraper({
itemType : 'multiple',
detect : FW.Url().match(/\/search\//),
choices : {
titles : FW.Xpath('//li[@class="search-result"]//h3[contains(@class, "title")]/a').text().trim(),
urls : FW.Xpath('//li[@class="search-result"]//h3[contains(@class, "title")]/a').key("href")
}
});/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://meetinglibrary.asco.org/content/112732-132",
"items": [
{
"itemType": "journalArticle",
"title": "Denosumab versus placebo as adjuvant treatment for women with early-stage breast cancer at high risk of disease recurrence (D-CARE): An international, placebo-controlled, randomized, double-blind phase III clinical trial",
"creators": [
{
"firstName": "Paul E.",
"lastName": "Goss",
"creatorType": "author"
},
{
"firstName": "Carlos H.",
"lastName": "Barrios",
"creatorType": "author"
},
{
"firstName": "Arlene",
"lastName": "Chan",
"creatorType": "author"
},
{
"firstName": "Dianne M.",
"lastName": "Finkelstein",
"creatorType": "author"
},
{
"firstName": "Hiroji",
"lastName": "Iwata",
"creatorType": "author"
},
{
"firstName": "Miguel",
"lastName": "Martin",
"creatorType": "author"
},
{
"firstName": "Ada",
"lastName": "Braun",
"creatorType": "author"
},
{
"firstName": "Beiying",
"lastName": "Ding",
"creatorType": "author"
},
{
"firstName": "Tapan",
"lastName": "Maniar",
"creatorType": "author"
},
{
"firstName": "Robert E.",
"lastName": "Coleman",
"creatorType": "author"
}
],
"date": "2013",
"ISSN": "0732-183X",
"abstractNote": "In women with early-stage breast cancer, bone is a common site of distant recurrence and represents approximately 40% of all first recurrences. Preclinical studies demonstrated that inhibition of RANKL significantly delays skeletal tumor formation, reduces skeletal tumor burden, and prolongs survival of tumor-bearing mice. Denosumab is approved for the prevention of skeletal-related events (SREs) in patients with established bone metastases from solid tumors. The D-CARE trial is designed to assess if denosumab treatment prolongs bone metastasis-free survival (BMFS) and disease-free survival (DFS) in the adjuvant breast cancer setting. The primary endpoint of this event-driven trial is BMFS. Secondary endpoints include DFS and overall survival. Additional endpoints include safety, breast density, time to first on-study SRE (following the development of bone metastasis), patient reported outcomes, and biomarkers. Methods: In this international, randomized, double-blind, and placebo-controlled phase 3 trial, 4509 women with stage II or III breast cancer at high risk for recurrence and with known hormone and HERE2 receptor status were randomized. High risk was defined as biopsy evidence of breast cancer in regional lymph nodes, tumor size > 5 cm (T3), or locally advanced disease (T4). Standard-of-care adjuvant or neoadjuvant chemo-, endocrine, or HER-2 targeted therapy, alone or in combination, must be planned. Patients with a prior history of breast cancer (except DCIS or LCIS) or distant metastasis, oral bisphosphonate (BP) use within 1 year of randomization, or any intravenous BP use, were not eligible. Patients were randomized 1:1 to receive denosumab 120 mg or placebo subcutaneously monthly for 6 months, then every 3 months for a total of 5 years of treatment. Supplemental vitamin D (≥ 400 IU) and calcium (≥ 500 mg) were required. The trial, sponsored by Amgen Inc., began enrolling patients in June 2010 and completed enrollment in late 2012. Clinical trial information: NCT01077154.",
"issue": "suppl; abstr TPS662",
"journalAbbreviation": "J. Clin. Oncol.",
"libraryCatalog": "ASCO Meeting Library",
"publicationTitle": "Journal of Clinical Oncology",
"shortTitle": "Denosumab versus placebo as adjuvant treatment for women with early-stage breast cancer at high risk of disease recurrence (D-CARE)",
"url": "http://meetinglibrary.asco.org/content/112732-132",
"volume": "31",
"attachments": [],
"tags": [
"HER2+"
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://meetinglibrary.asco.org/search/site/?f[0]=bundle_name%3AAbstract&f[1]=fctContentType%3AAbstract&the_title=test",
"items": "multiple"
}
]
/** END TEST CASES **/
100Matt Mayer^https://www\.bangkokpost\.com/[a-z0-9-]+/([a-z0-9-]+/)?[0-9]+/*
* ***** BEGIN LICENSE BLOCK *****
Copyright © 2020 Matt Mayer
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(_doc, _url) {
return 'newspaperArticle';
}
function doWeb(doc, url) {
scrape(doc, url);
}
function getMetaTag(doc, attr, value, contentattr) {
const tag = Array.from(doc.getElementsByTagName("meta")).filter(m => m.attributes[attr] && m.attributes[attr].value == value)[0];
if (tag && tag.attributes[contentattr]) {
return tag.attributes[contentattr].value;
}
return null;
}
function scrape(doc, _url) {
const translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
// Add data for fields that are not covered by Embedded Metadata
// Author name is stored as firstname lastname
const authorName = getMetaTag(doc, "property", "cXenseParse:author", "content");
if (authorName) {
item.creators = [ZU.cleanAuthor(authorName, "author", false)];
}
// Date is stored as a timestamp like 2020-09-07T17:37:00+07:00, just extract the YYYY-MM-DD at start
const date = getMetaTag(doc, "name", "cXenseParse:recs:publishtime", "content");
if (date) {
item.date = date.substr(0, 10);
}
item.publicationTitle = "Bangkok Post";
item.itemType = "newspaperArticle";
item.complete();
});
translator.translate();
}/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.bangkokpost.com/thailand/politics/1981267/house-general-debate-set-for-wednesday",
"items": [
{
"itemType": "newspaperArticle",
"title": "House general debate set for Wednesday",
"creators": [
{
"firstName": "Aekarach",
"lastName": "Sattaburuth",
"creatorType": "author"
}
],
"date": "2020-09-07",
"abstractNote": "A general debate without a vote in the House of Representatives has been scheduled for Wednesday for MPs to question the government on the current economic and political crises and suggest ways of solving related problems.",
"libraryCatalog": "www.bangkokpost.com",
"publicationTitle": "Bangkok Post",
"url": "https://www.bangkokpost.com/thailand/politics/1981267/house-general-debate-set-for-wednesday",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "cabinet ministers"
},
{
"tag": "debate"
},
{
"tag": "general debate"
},
{
"tag": "government mps"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.bangkokpost.com/tech/1979315/air-force-satellite-napa-1-launched",
"items": [
{
"itemType": "newspaperArticle",
"title": "Air force satellite Napa-1 launched",
"creators": [
{
"firstName": "Wassana",
"lastName": "Nanuam",
"creatorType": "author"
}
],
"date": "2020-09-03",
"abstractNote": "The Royal Thai Air Force’s first security satellite, Napa-1, was successfully launched on a European rocket from French Guiana on Thursday morning.",
"libraryCatalog": "www.bangkokpost.com",
"publicationTitle": "Bangkok Post",
"url": "https://www.bangkokpost.com/tech/1979315/air-force-satellite-napa-1-launched",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "French Guiana"
},
{
"tag": "Napa-1"
},
{
"tag": "air force"
},
{
"tag": "launched"
},
{
"tag": "satellite"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.bangkokpost.com/opinion/opinion/1981587/tech-is-key-to-rebooting-tourism",
"items": [
{
"itemType": "newspaperArticle",
"title": "Tech is key to rebooting tourism",
"creators": [
{
"firstName": "Jeff",
"lastName": "Paine",
"creatorType": "author"
}
],
"date": "2020-09-08",
"abstractNote": "Southeast Asia relies heavily on tourism. In 2019, the travel and tourism industry contributed 12.1% of the region's GDP and approximately one in 10 people are employed within and around it, according to the World Travel and Tourism Council (WTTC).",
"libraryCatalog": "www.bangkokpost.com",
"publicationTitle": "Bangkok Post",
"url": "https://www.bangkokpost.com/opinion/opinion/1981587/tech-is-key-to-rebooting-tourism",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "domestic tourism"
},
{
"tag": "industry"
},
{
"tag": "tourism"
},
{
"tag": "tourism industry"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Michael Berkowitz^https?://(www\.)?publish\.csiro\.au/function detectWeb(doc, url) {
if (doc.evaluate('//a[@class="searchBoldBlue"]', doc, null, XPathResult.ANY_TYPE, null).iterateNext() || doc.evaluate('//a[@class="linkjournal"]|//a[@class="journal_title"]', doc, null, XPathResult.ANY_TYPE, null).iterateNext()) {
return "multiple";
} else if (url.indexOf("/view/journals/") != -1 || url.indexOf("paper") != -1) {
return "journalArticle";
}
}
function doWeb(doc, url) {
var articles = new Array();
if (detectWeb(doc, url) == "multiple") {
var items = new Object();
if (doc.evaluate('//a[@class="searchBoldBlue"]', doc, null, XPathResult.ANY_TYPE, null).iterateNext()) {
var arts = doc.evaluate('//a[@class="searchBoldBlue"]', doc, null, XPathResult.ANY_TYPE, null);
var art = arts.iterateNext();
while (art) {
items[art.href] = art.textContent;
art = arts.iterateNext();
}
} else if (doc.evaluate('//a[@class="linkjournal"]', doc, null, XPathResult.ANY_TYPE, null).iterateNext()) {
var arts = doc.evaluate('//a[@class="linkjournal"]', doc, null, XPathResult.ANY_TYPE, null);
var titles = doc.evaluate('//td[3]//td[1]/table/tbody/tr/td/b', doc, null, XPathResult.ANY_TYPE, null);
var art;
var title;
while ((art = arts.iterateNext()) && (title = titles.iterateNext())) {
items[art.href] = title.textContent;
}
} else if (doc.evaluate('//a[@class="journal_title"]', doc, null, XPathResult.ANY_TYPE, null).iterateNext()) {
var arts = doc.evaluate('//a[@class="journal_title"]', doc, null, XPathResult.ANY_TYPE, null);
while (art = arts.iterateNext()){
items[art.href] = art.textContent;
}
}
Zotero.selectItems(items, function (items) {
if (!items) {
return true;
}
for (var i in items) {
articles.push(i.match(/([^/=.htm]*)(.htm)?$/)[1]);
}
scrape(articles, function () {
Zotero.done();
});
});
} else {
articles.push(url.match(/([^/=.htm]*)(.htm)?$/)[1]);
scrape(articles);
}
}
function scrape (link) {
for (i in link){
var newURL = 'http://www.publish.csiro.au/view/journals/dsp_journal_retrieve_citation.cfm?ct=' + link[i] + '.ris';
var pdfURL = 'http://www.publish.csiro.au/?act=view_file&file_id=' + link[i] + '.pdf';
Zotero.Utilities.HTTP.doGet(newURL, function(text) {
var translator = Zotero.loadTranslator("import");
translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7");
translator.setString(text);
translator.setHandler("itemDone", function(obj, item) {
item.itemType = "journalArticle";
if (item.notes[0]) {
item.abstractNote = item.notes[0].note;
}
if (item.abstractNote) item.abstractNote = item.abstractNote.replace(/[\n\t]/g, " ")
item.attachments = [
{url:pdfURL, title:"CSIRO Publishing PDF", mimeType:"application/pdf"},
{url:newURL, title:"CSIRO Publishing Snaphost", mimeType:"text/html"}
];
item.complete();
});
translator.translate();
});
}
}/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://www.publish.csiro.au/paper/BT04151.htm",
"items": [
{
"itemType": "journalArticle",
"creators": [
{
"lastName": "Humphreys",
"firstName": "W.F.",
"creatorType": "author"
}
],
"notes": [],
"tags": [],
"seeAlso": [],
"attachments": [
{
"title": "CSIRO Publishing PDF",
"mimeType": "application/pdf"
},
{
"title": "CSIRO Publishing Snaphost",
"mimeType": "text/html"
}
],
"title": "Aquifers: the ultimate groundwater-dependent ecosystems",
"publicationTitle": "Australian Journal of Botany",
"journalAbbreviation": "Aust. J. Bot.",
"date": "2006",
"volume": "54",
"issue": "2",
"pages": "115-132",
"url": "http://dx.doi.org/10.1071/BT04151",
"abstractNote": "Australian aquifers support diverse metazoan faunas comprising obligate groundwater inhabitants, largely crustaceans but also including insects, worms, gastropods, mites and fish. They typically comprise short-range endemics, often of relictual lineages and sometimes widely vicariant from their closest relatives. They have been confined to subterranean environments from a range of geological eras and may contain information on the deep history of aquifers. Obligate groundwater fauna (stygobites) occurs in the void spaces in karst, alluvial and fractured rock aquifers. They have convergent morphologies (reduction or loss of eyes, pigment, enhanced non-optic senses, vermiform body form) and depend on energy imported from the surface except in special cases of in situ chemoautotrophic energy fixation. In Australia, many stygofaunas in arid areas occur in brackish to saline waters, although they contain taxa from lineages generally restricted to freshwater systems. They may occur alongside species belonging to taxa considered typical of the marine littoral although far removed in space and time from marine influence. The ecological attributes of stygofauna makes them vulnerable to changes in habitat, which, combined with their taxonomic affinities, makes them a significant issue to biodiversity conservation. The interaction of vegetation and groundwater ecosystems is discussed and, in places, there are conservation issues common to both.",
"libraryCatalog": "CSIRO Publishing",
"accessDate": "CURRENT_TIMESTAMP",
"shortTitle": "Aquifers"
}
]
},
{
"type": "web",
"url": "http://www.publish.csiro.au/nid/65/issue/2496.htm",
"items": "multiple"
}
]
/** END TEST CASES **/
100Bo An^https?://www\.computerhistory\.org/collections//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2020-2021 Bo An
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
const collection = "/collections/search/";
const artifact = "/collections/catalog/";
const isCollection = url.includes(collection);
const isArtifact = url.includes(artifact);
if (isCollection) {
return 'multiple';
}
else if (isArtifact) {
return getZoteroItemType(doc);
}
return false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), (items) => {
if (!items) {
return true;
}
const articles = [];
for (const i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
return true;
});
}
else {
scrape(doc, url);
}
}
function getSearchResults(doc, checkOnly) {
let items = {};
let found = false;
const entries = doc.querySelectorAll('p.objtext');
for (let i = 0; i < entries.length; i++) {
const titleDiv = entries[i].querySelector('span.objtitle a');
if (!titleDiv) continue;
const href = titleDiv.href;
const title = titleDiv.textContent;
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function scrape(doc, _) {
const zoteroItemType = getZoteroItemType(doc);
let newItem = new Zotero.Item(zoteroItemType);
const nodes = getFieldNodes(doc);
nodes.forEach((node) => {
const fieldTitleNode = node.querySelector("h4");
const fieldTitle = fieldTitleNode.textContent.trim();
switch (fieldTitle) {
case 'Title':
newItem.title = getContent(node, fieldTitle);
break;
case 'Date':
newItem.date = getContent(node, fieldTitle);
break;
case 'Participants':
case 'Contributor':
newItem.creators = getContributors(node);
break;
case 'Publisher':
if (newItem.itemType == 'artwork') {
newItem.rights = getContent(node, fieldTitle);
}
else {
newItem.publisher = getContent(node, fieldTitle);
}
break;
case 'Place of Publication':
newItem.place = getContent(node, fieldTitle);
break;
case 'Extent':
newItem.numPages = getContent(node, fieldTitle).replace(' p.', '');
break;
case 'Lot Number':
newItem.archiveLocation = getContent(node, fieldTitle);
break;
case 'Description':
newItem.abstractNote = insertToTheStartOfAbstract(getContent(node, fieldTitle), newItem.abstractNote);
break;
case 'Biographical Notes':
newItem.abstractNote = insertToTheEndOfAbstract(getContent(node, fieldTitle), newItem.abstractNote, fieldTitle);
break;
case 'Copyright Holder':
newItem.rights = getContent(node, fieldTitle);
break;
case 'Subject':
const allTagsString = getContent(node, fieldTitle);
const allTags = allTagsString.split(';').map(tag => tag.trim()).sort();
if (allTags && allTags.length > 0) {
newItem.tags = allTags;
}
break;
// other archival and / or meta info that go into extra.
case 'Format':
if (newItem.itemType == 'videoRecording') {
// note that format field for Video Recording type is not displayed in scaffold.
newItem.videoRecordingFormat = getContent(node, fieldTitle);
break;
}
if (newItem.itemType == 'audioRecording') {
newItem.audioRecordingFormat = getContent(node, fieldTitle);
break;
}
if (newItem.itemType == 'artwork') {
newItem.medium = getContent(node, fieldTitle);
break;
}
case 'Dimensions':
if (newItem.itemType == 'artwork') {
newItem.artworkSize = getContent(node, fieldTitle);
break;
}
case 'Duration':
if (newItem.itemType == 'videoRecording' || newItem.itemType == 'audioRecording') {
// note that format field for Video Recording type is not displayed in scaffold.
newItem.runningTime = getContent(node, fieldTitle);
break;
}
// notes that if there are conditional logics for a field, like "dimensions", they need to come above. Therewise, they might be polluted by stacked switch cases, like "Categories" got mixed with "Dimensions".
case 'Category':
case 'Collection Title':
case 'Credit':
case 'Place Manufactured':
case 'Manufacturer':
case 'System Requirements':
case 'Series Title':
case 'Platform':
// the categories vary therefore many are collapsed under 'extra'.
case 'Catalog Number':
newItem.extra = addToExtra(newItem.extra, getContent(node, fieldTitle), fieldTitle);
break;
// parsing identifying numbers with existing Zotero fields e.g. ISBN
case 'Identifying Numbers':
node.querySelectorAll('tr').forEach((div) => {
const numberKey = div.querySelector('td.col1').textContent;
const numberVal = div.querySelector('td.col2').textContent;
switch (numberKey) {
case 'ISBN10':
newItem.ISBN = numberVal;
break;
case 'Other number':
break;
default:
newItem.extra = addToExtra(newItem.extra, numberVal, numberKey);
break;
}
});
}
});
// add pdf documents
const pdfDiv = doc.querySelectorAll('div.mediaDocument li a');
if (pdfDiv) {
pdfDiv.forEach((div) => {
const fileName = div.textContent;
const pdfPath = div.href;
if (pdfPath) {
newItem.attachments.push({
url: pdfPath,
mimeType: "application/pdf",
title: `${fileName ? fileName : newItem.title}`,
});
}
});
}
// add audio recordings
const audioDiv = doc.querySelectorAll('div.mediaAudio li a');
if (audioDiv) {
audioDiv.forEach((div) => {
const audioPath = div.href;
const fileName = div.textContent;
if (audioPath) {
newItem.attachments.push({
url: audioPath,
mimeType: "audio/mpeg",
title: `${fileName ? fileName : newItem.title}`
});
}
});
}
// add object images
const imageDiv = doc.querySelectorAll('div.mediarow a.media-large img');
if (imageDiv) {
imageDiv.forEach((div) => {
const imagePath = div.src;
const fileName = div.textContent;
if (imagePath) {
newItem.attachments.push({
url: imagePath,
title: `${fileName ? fileName : newItem.title}`,
mimeType: 'image/png'
});
}
});
}
// add video links
const videoDivs = doc.querySelectorAll('div.mediaVideo iframe');
if (videoDivs) {
videoDivs.forEach((div) => {
const videoPath = div.src;
const fileName = div.textContent;
if (videoPath) {
newItem.attachments.push({
url: videoPath,
title: `${fileName ? fileName : newItem.title}`,
snapshot: false
});
}
});
}
newItem.archive = 'Computer History Museum';
newItem.complete();
}
// get field nodes containing item information from html doc.
function getFieldNodes(doc) {
const fields = [...doc.querySelectorAll("div.field")];
// clone the node to avoid altering the document.
return fields.map(nodeOriginal => nodeOriginal.cloneNode(true));
}
// get the corresponding types. CHM Still Image = Zotero Artwork; CHM Moving Image = Zotero Video Recording; CHM Software = Zotero Computer Program. Other CHM types are all "books".
function getZoteroItemType(doc) {
let type = 'book';
const nodes = getFieldNodes(doc);
nodes.forEach((node) => {
const fieldTitleNode = node.querySelector("h4");
const fieldTitle = fieldTitleNode.textContent.trim();
if (fieldTitle == 'Type') {
let chmItemType = getContent(node, fieldTitle);
chmItemType = chmItemType.toLowerCase();
switch (chmItemType) {
case 'audio':
type = 'audioRecording';
break;
case 'moving image':
type = "videoRecording";
break;
case 'software':
type = "computerProgram";
break;
case 'still image':
type = 'artwork';
break;
default:
type = 'book';
}
}
return type;
});
return type;
}
// helper functions
function insertToTheStartOfAbstract(insert, abstract, fieldTitle) {
const abstractContent = (fieldTitle !== undefined ? fieldTitle + ': ' : '') + insert + '\n' + (abstract ? abstract : '');
return abstractContent ? abstractContent : '';
}
function insertToTheEndOfAbstract(insert, abstract, fieldTitle) {
const abstractContent = (abstract ? abstract + '\n' : '') + (fieldTitle !== undefined ? fieldTitle + ': ' : '') + insert;
return abstractContent ? abstractContent : '';
}
function getContent(node, fieldTitle) {
const content = node.textContent.replace(fieldTitle, '').trim();
return content ? content : '';
}
function addToExtra(oldExtra, newContent, fieldTitle) {
return (oldExtra ? oldExtra + '\n' : '') + fieldTitle + ': ' + newContent.replace(/ {2}/g, '').replace(/\n\n/g, '').replace('\n', ': ');
}
function getContributors(node) {
let contributors = [];
const people = node.querySelectorAll('td');
people.forEach((personDiv) => {
const spans = personDiv.querySelectorAll('span');
const name = spans[0].textContent;
const [lastName, firstName] = name.split(', ');
contributors.push({
firstName,
lastName,
creatorType: "contributor"
});
});
return contributors;
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.computerhistory.org/collections/catalog/102658053",
"items": [
{
"itemType": "book",
"title": "Knuth, Donald oral history",
"creators": [
{
"firstName": "Edward",
"lastName": "Feigenbaum",
"creatorType": "contributor"
},
{
"firstName": "Donald E.",
"lastName": "Knuth",
"creatorType": "contributor"
},
{
"firstName": "Yan",
"lastName": "Rosenshteyn",
"creatorType": "contributor"
}
],
"date": "2007-03-14; 2007-03-21",
"abstractNote": "In this wide-ranging interview conducted by Edward Feigenbaum, Donald Knuth talks about the progression of his life and career. Topics include his family background and early interest in music, physics and mathematics, his first exposure to programming, finding a mentor, and writing a doctoral thesis. He describes how \"The Art of Computer Programming\" became \"the story of my life\", and why it was put on hold for the TeX and METAFONT projects. He also talks about personal work habits, programming style, analysis of algorithms, the influence of religion in his life, and his advice to the next generation of scientists.",
"archive": "Computer History Museum",
"archiveLocation": "X3926.2007",
"extra": "Catalog Number: 102658053\nCategory: Transcription\nCollection Title: Oral history collection",
"libraryCatalog": "Computer History Museum Archive",
"numPages": "73",
"place": "Mountain View, California",
"publisher": "Computer History Museum",
"attachments": [
{
"mimeType": "application/pdf",
"title": "102658053-05-01-acc.pdf"
}
],
"tags": [
{
"tag": "Analysis of algorithms"
},
{
"tag": "Combinatorial analysis--Data processing"
},
{
"tag": "Combinatorics"
},
{
"tag": "Fellow Award Honoree"
},
{
"tag": "IBM 650 (Computer)"
},
{
"tag": "Knuth, Donald"
},
{
"tag": "Literate programming"
},
{
"tag": "METAFONT"
},
{
"tag": "Religion"
},
{
"tag": "Stanford University"
},
{
"tag": "TeX"
},
{
"tag": "The Art of Computer Programming"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.computerhistory.org/collections/catalog/102646282",
"items": [
{
"itemType": "book",
"title": "IBM 1401 Programming Systems",
"creators": [],
"date": "1959",
"abstractNote": "The brochure explains the IBM 1401 programming languages and their application to the 1401 data processing system. The brochure is printed in black, white, and blue. The front cover shows the words Programming and Systems in a repetitive design with the name Donald G. McBrien stamped in the upper right corner. The back cover shows the company logo on a blue background. Throughout the inside pages are black and white photographs of the computer and images of reports generated by the system. Text contents include: What is a 1401 program?; What is a stored program machine?; What are 1401 programming systems?; What 1401 programming systems mean to management?; IBM programming systems; Here's how one of the 1401 programming systems -- Report Program Generator -- works to increase programming efficiency; New IBM services include:; Other services available to every IBM customer.",
"archive": "Computer History Museum",
"archiveLocation": "X3067.2005",
"extra": "Catalog Number: 102646282\nDimensions: 9 5/8 x 7 6/8 in.\nCategory: Promotional Material",
"libraryCatalog": "Computer History Museum Archive",
"numPages": "6",
"place": "U.S.",
"publisher": "International Business Machines Corporation. Data Processing Division. (IBM)",
"rights": "International Business Machines Corporation (IBM). Data Processing Division",
"attachments": [
{
"mimeType": "application/pdf",
"title": "IBM.1401.1959.102646282.pdf"
},
{
"title": "IBM 1401 Programming Systems",
"mimeType": "image/png"
}
],
"tags": [
{
"tag": "1401 data processing system (Computer)"
},
{
"tag": "1401 programming systems (Software)"
},
{
"tag": "Business applications"
},
{
"tag": "COBOL (Software)"
},
{
"tag": "Digital communications--Social aspects"
},
{
"tag": "Digital computer: mainframe"
},
{
"tag": "International Business Machines Corporation (IBM). Data Processing Division"
},
{
"tag": "Scientific applications"
},
{
"tag": "Software"
},
{
"tag": "promotional materials"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.computerhistory.org/collections/catalog/102623002",
"items": [
{
"itemType": "book",
"title": "A guide to Fortran IV programming",
"creators": [],
"date": "1972",
"ISBN": "9780471582816",
"abstractNote": "Second edition. Signed by McCracken on title page.",
"archive": "Computer History Museum",
"archiveLocation": "X3682.2007",
"extra": "Catalog Number: 102623002\nLCCN: 72-4745\nLOC call num: QA76.73.F25 M3 1972\nDimensions: 28 cm.\nCategory: Book",
"libraryCatalog": "Computer History Museum Archive",
"numPages": "288",
"place": "New York",
"publisher": "John Wiley & Sons",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.computerhistory.org/collections/catalog/102790985",
"items": [
{
"itemType": "book",
"title": "Logic Programming Workshop '83 poster",
"creators": [],
"date": "1983",
"abstractNote": "PDF scan of the poster for the Logic Programming Workshop '83 in Algarve Portugal, June 26 - July 1, 1983.",
"archive": "Computer History Museum",
"archiveLocation": "X9292.2020",
"extra": "Catalog Number: 102790985\nCategory: Promotional Material",
"libraryCatalog": "Computer History Museum Archive",
"numPages": "1; 0.0004 GB",
"attachments": [
{
"mimeType": "application/pdf",
"title": "LPW_Albufeira_1983_poster.pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.computerhistory.org/collections/catalog/102620354",
"items": [
{
"itemType": "book",
"title": "LP20 Linear Programming System",
"creators": [],
"archive": "Computer History Museum",
"archiveLocation": "X4248.2008",
"extra": "Catalog Number: 102620354\nProgram ID number: 10.1.009\nCategory: Manual\nCollection Title: 1620 Restoration Project Collection\nCredit: Gift of John Maniotes",
"libraryCatalog": "Computer History Museum Archive",
"publisher": "International Business Machines Corporation (IBM)",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.computerhistory.org/collections/catalog/102765924",
"items": [
{
"itemType": "book",
"title": "Jacquard programming cards",
"creators": [],
"abstractNote": "The object is a series of cardboard punch cards connected by string. The cards are hand numbered sequentially from 6 to 44.",
"archive": "Computer History Museum",
"archiveLocation": "X8070.2017",
"extra": "Catalog Number: 102765924\nDimensions: folded for storage: 2 1/2 in x 9 1/4 in x 5 in; unfolded: 1/8 in x 9 1/4 in x 97 1/2 in\nCategory: I/O/punched card device\nCredit: Gift of the Museum of American Heritage",
"libraryCatalog": "Computer History Museum Archive",
"attachments": [
{
"title": "Jacquard programming cards",
"mimeType": "image/png"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.computerhistory.org/collections/catalog/102701957",
"items": [
{
"itemType": "book",
"title": "Bizmac programming manual binder",
"creators": [],
"date": "1956",
"archive": "Computer History Museum",
"archiveLocation": "X5121.2009",
"extra": "Catalog Number: 102701957\nManufacturer: RCA Corporation\nDimensions: overall: 2 in x 10 in x 11 1/2 in\nCategory: Ephemera/other",
"libraryCatalog": "Computer History Museum Archive",
"attachments": [
{
"title": "Bizmac programming manual binder",
"mimeType": "image/png"
},
{
"title": "Bizmac programming manual binder",
"mimeType": "image/png"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.computerhistory.org/collections/catalog/102738167",
"items": [
{
"itemType": "book",
"title": "Abe, Takao oral history",
"creators": [
{
"firstName": "Takao",
"lastName": "Abe",
"creatorType": "contributor"
},
{
"firstName": "Doug",
"lastName": "Fairbairn",
"creatorType": "contributor"
}
],
"date": "2016-06-20",
"abstractNote": "Mr. Abe was born in 1936 in Otaru, on Hokkaido, the northern island of Japan. He attended Hokkaido University, majoring in physics. He was recruited by a previous graduate of the same university to come to Tokyo and work for Shin-Etsu Handotai. The year was 1964. Abe requested a job in basic research, but the company needed help in growing crystalline silicon for use in semiconductors. \n\nAbe was given the job to improve the quality of the silicon ingots. He traveled to Bell Labs and to Siemens, as Siemens was the source of their crystal growing equipment. During the interview, Abe describes the ups and downs of the industry and his substantial contributions to the quality of silicon wafers.",
"archive": "Computer History Museum",
"archiveLocation": "X7645.2016",
"extra": "Catalog Number: 102738167\nFormat: PDF\nCategory: Transcription\nCollection Title: CHM oral history collection\nCredit: Computer History Museum",
"libraryCatalog": "Computer History Museum Archive",
"numPages": "24",
"place": "Tokyo, Japan",
"publisher": "Computer History Museum",
"attachments": [
{
"mimeType": "application/pdf",
"title": "Transcript of Takeo Abe's oral history"
}
],
"tags": [
{
"tag": "Dash-necking"
},
{
"tag": "Hokkaido University"
},
{
"tag": "SIMOX"
},
{
"tag": "SOI"
},
{
"tag": "Silicon on Insulator"
},
{
"tag": "Voronkov"
},
{
"tag": "silicon wafers"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.computerhistory.org/collections/catalog/102746874",
"items": [
{
"itemType": "book",
"title": "Xbox oral history panel",
"creators": [
{
"firstName": "Nicholas",
"lastName": "Baker",
"creatorType": "contributor"
},
{
"firstName": "Eric",
"lastName": "Dennis",
"creatorType": "contributor"
},
{
"firstName": "Todd",
"lastName": "Holmdahl",
"creatorType": "contributor"
},
{
"firstName": "Albert J.",
"lastName": "Penello",
"creatorType": "contributor"
},
{
"firstName": "Dag",
"lastName": "Spicer",
"creatorType": "contributor"
}
],
"date": "2014-03-25",
"abstractNote": "Three key members of the original Microsoft Xbox team come together in this oral history to discuss the early development of Xbox and Xbox 360, two of the most significant game consoles in computer history. Architect Nick Baker, head of hardware Todd Holmdahl, and marketing lead Albert Penello cover the early development years of the original Xbox and their attempt to gain a foothold in the highly competitive game console market. They then continue with the history of the Xbox 360 console, the successor to the original, and the changing nature of the video game business during that period that allowed for innovations such as live, interconnected play over a network and the Kinect input capture device. Strategic, technical, and marketing aspects of this history are discussed, as are visions for the future of gaming.",
"archive": "Computer History Museum",
"archiveLocation": "X7120.2014",
"extra": "Catalog Number: 102746874\nCategory: Transcription\nCollection Title: Oral history collection\nCredit: Computer History Museum",
"libraryCatalog": "Computer History Museum Archive",
"numPages": "27",
"place": "Mountain View, California",
"publisher": "Computer History Museum",
"rights": "Computer History Museum",
"attachments": [
{
"mimeType": "application/pdf",
"title": "102746874-05-01-acc.pdf"
}
],
"tags": [
{
"tag": "ATI Technologies Inc."
},
{
"tag": "Allard, J"
},
{
"tag": "Bach, Robbie"
},
{
"tag": "Central Processing Unit (CPU)"
},
{
"tag": "Flextronics"
},
{
"tag": "Graphics Processing Unit (GPU)"
},
{
"tag": "Halo"
},
{
"tag": "International Business Machines Corporation (IBM)"
},
{
"tag": "Kinect"
},
{
"tag": "Media Center PC (personal computer)"
},
{
"tag": "Microsoft Corporation"
},
{
"tag": "Nvidia Corporation"
},
{
"tag": "Performance Optimization With Enhanced RISC--Performance Computing (PowerPC)"
},
{
"tag": "Playstation"
},
{
"tag": "Sony Corporation"
},
{
"tag": "Windows"
},
{
"tag": "Wistron"
},
{
"tag": "Xbox"
},
{
"tag": "Xbox 360"
},
{
"tag": "Xbox One"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.computerhistory.org/collections/search/?s=oral+history&page=4",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.computerhistory.org/collections/catalog/102738261",
"items": [
{
"itemType": "videoRecording",
"title": "Su, Stephen oral history",
"creators": [
{
"firstName": "Douglas",
"lastName": "Fairbairn",
"creatorType": "contributor"
},
{
"firstName": "Stephen",
"lastName": "Su",
"creatorType": "contributor"
}
],
"date": "2017-04-19",
"abstractNote": "Stephen Su grew up on Taiwan, but in 1980 he came to the US to attend high school and college, including studying semiconductors at Caltech. He worked for Motorola for a period of time before returning to school in 1992 to get an MBA from Kellog. Upon graduation, he joined Boston Consulting Group and went to Hong Kong on a consulting assignment. \nIn 1998, Stephen returned to Taiwan, working for Primax. While there he spent several years managing the Mobile Accessories group, responsible for developing accessories for mobile phone makers like Nokia and Apple. In particular, he was responsible for developing the camera module for several generations of Apple’s iPhone. He tells many interesting stories about working with Apple on this very important program. \nIn 2009, he was recruited to join ITRI, where he is involved with helping steer Taiwan into lucrative new markets through careful investments in promising new technologies.",
"archive": "Computer History Museum",
"archiveLocation": "X8201.2017",
"extra": "Catalog Number: 102738261\nCategory: Oral history\nCredit: Computer History Museum",
"libraryCatalog": "Computer History Museum Archive",
"place": "Mountain View, CA",
"studio": "Computer History Museum",
"videoRecordingFormat": "MOV",
"attachments": [
{
"title": "Su, Stephen oral history",
"snapshot": false
}
],
"tags": [
{
"tag": "Apple"
},
{
"tag": "Camera"
},
{
"tag": "ITRI"
},
{
"tag": "iPhone"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.computerhistory.org/collections/search/?s=oral+history&page=5",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.computerhistory.org/collections/catalog/102796519",
"items": [
{
"itemType": "computerProgram",
"title": "TRS-80 word processing applications",
"creators": [],
"date": "1984",
"abstractNote": "One 5 1/4 floppy disk. Label: Single-sided, double-density disk for TRS-80 Word Processing Applications for Profile III Plus for the TRS-80 Model III or Model 4 with 48K memory. ISBN: 0-8359-7881-8.",
"archive": "Computer History Museum",
"archiveLocation": "X4114.2007",
"company": "Reston Publishing Company",
"extra": "Catalog Number: 102796519\nSystem Requirements: TRS-80 Model III or Model 4 with 48K memory\nFormat: 5 1/4 inch floppy disk\nCollection Title: Radio Shack collection\nSeries Title: Software",
"libraryCatalog": "Computer History Museum Archive",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.computerhistory.org/collections/catalog/102740039",
"items": [
{
"itemType": "videoRecording",
"title": "Kramlich, Dick (C. Richard) oral history part 1 of 4",
"creators": [
{
"firstName": "David C.",
"lastName": "Brock",
"creatorType": "contributor"
},
{
"firstName": "James",
"lastName": "Fortier",
"creatorType": "contributor"
},
{
"firstName": "C. Richard",
"lastName": "Kramlich",
"creatorType": "contributor"
}
],
"date": "2015-03-31",
"abstractNote": "C. Richard Kramlich co-founded the venture capital firm New Enterprise Associates (NEA) in 1978, serving as its managing general partner for two decades. In this oral history, Kramlich discusses his education at the Harvard Business School, his early career in finance, and his entry into venture capital in a partnership with Arthur Rock starting in 1969. He details the establishment of NEA with his co-founders, his personal investment in Apple Computer, and one of NEA’s earliest investments, 3Com. After noting the rise of the graphical in computing, Kramlich discusses at length his investment and involvement with the Apple Computer spinoff, Forethought Inc., its history, and its development of PowerPoint. The interview concludes with some of his thoughts about his investment in Silicon Graphics, the software industry, NEA’s approach, and collecting video art.",
"archive": "Computer History Museum",
"archiveLocation": "X7447.2015",
"extra": "Catalog Number: 102740039\nCategory: Oral history\nCollection Title: CHM Oral History Collection\nCredit: Computer History Museum",
"libraryCatalog": "Computer History Museum Archive",
"place": "Mountain View, California",
"rights": "Computer History Museum",
"runningTime": "01:31:00",
"studio": "Computer History Museum",
"videoRecordingFormat": "MOV",
"attachments": [
{
"title": "Kramlich, Dick (C. Richard) oral history part 1 of 4",
"snapshot": false
}
],
"tags": [
{
"tag": "3Com"
},
{
"tag": "Apple"
},
{
"tag": "Forethought, Inc."
},
{
"tag": "Graphics"
},
{
"tag": "Kramlich, C. Richard"
},
{
"tag": "Networking"
},
{
"tag": "New Enterprise Associates (NEA)"
},
{
"tag": "PowerPoint"
},
{
"tag": "Rock, Arthur"
},
{
"tag": "Silicon Graphics"
},
{
"tag": "Software"
},
{
"tag": "Venture Capital"
},
{
"tag": "Video Art"
},
{
"tag": "personal computers (PCs)"
},
{
"tag": "software industry"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.computerhistory.org/collections/catalog/102645840",
"items": [
{
"itemType": "videoRecording",
"title": "Challenges and Directions in Fault-Tolerant Computing, lecture by Jack Goldberg",
"creators": [
{
"firstName": "Jack",
"lastName": "Goldberg",
"creatorType": "contributor"
}
],
"date": "1985-10-02",
"abstractNote": "Label taped to the video case reads: \"Two decaes of theoritical and experimental work and numerous recent successful applications have established fault tolerance as a standard objective of high speed, satisfaction of fault tolerance requirements cannot be demonstrated by testing alone, but requires formal analysis. Most of the work in fault tolerance has been concerned with developing effective design techniques. Recent work on reliabilitymodeling and formal proof of fault tolerant design and implementation is laying a foundation for a more rigorous design discipline. The scope of concern has also expanded to include any source of computer reliability, such as design mistakes, in software, hardware, or at any system level. Current art is barely able to keep up with the rapid pace of computer technology, the stresses of new applications and the new expansion in scope of concerns. Particular challenges lie in coping with the imperfections of the ultrasamll, i.e., high density VLSI, and the ultra-large, i.e., large software systems. It is clear that fault tolerance cannot be \"added\" to a design and must be integrated with other design objectives. Simultaneous demands in future systems for high performance, high security, high evolvability and high fault tolerance will require new theoretical models of computer systems and a much closer integration of practical design techniques. The talk will discuss the widening scope of research into computer dependability. New issues include tolerance of design errors (including software), operator errors, and the safety of computer-controlled systems.\"",
"archive": "Computer History Museum",
"extra": "Catalog Number: 102645840\nPlatform: NTSC VHS VCR\nCategory: Lecture\nSeries Title: Stanford Computer Forum Distinguished Lecture Series",
"libraryCatalog": "Computer History Museum Archive",
"place": "Palo Alto, CA, US",
"studio": "Stanford University. Stanford Computer Forum",
"videoRecordingFormat": "VHS",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.computerhistory.org/collections/catalog/102706809",
"items": [
{
"itemType": "audioRecording",
"title": "Tutorials on software systems design",
"creators": [],
"date": "1977-04",
"abstractNote": "The West Coast Computer Faire was an annual computer industry conference and exposition. The first fair was held in 1977 and was organized by Jim Warren and Bob Relling. At the time, it was the biggest computer show in the world, intended to popularize the peronal computer in the home.\n\nThis first fair took place on April 16-17, 1977, in San Francisco Civic Auditorium and Brooks Hall, and saw the debut of the Commodre PET, presented by Chuck Peddle, and the Apple II, presented by then 21-year-old Steve Jobs and Steve Wozniak. There were about 180 exhibitors, among them Intel, MITS, and Digitial Research. More than 12,000 people visited the fair.\n\nPapers presented during this session:\n\nR. W. Ulrickson, \"Learning to program microcomputers? Here's how\"\nLarry Tesler, \"Home text editing\"\n\nBiographical Notes: Robert Wayne Ulrickson received a B.S.E.E. from MIT (1959) and M.S.E.E. from SJSC (1966). He was commissioned and served as a Coast Guard officer before working for Lockheed Missiles and Space in Sunnyvale, California, where he designed PCM telemetry systems for satellites. He joined John Hulme’s Applications Department at Fairchild as supervisor of Systems Engineering where his team defined the 9300 series TTL MSI devices. Systems Engineering became a part of Robert Schreiner’s Custom Micromatrix Arrays Department at Fairchild R&D in 1968, where Bob was Section Manager in charge of array architecture, test engineering, and computer aided design. After CMA’s reorganization, Bob served Fairchild as Manager of Systems and Applications Engineering and as Product Marketing manager for Bipolar ICs. In 1973 Bob joined John Nichols as co-founder and President of Logical Services Incorporated in Santa Clara. Logical developed hundreds of new products incorporating microprocessors until and after it was acquired by Smartflex Systems in 1998. Bob retired to Maui in 2000.",
"archive": "Computer History Museum",
"archiveLocation": "X2595.2004",
"audioRecordingFormat": "Standard audio cassette",
"extra": "Catalog Number: 102706809\nSeries Title: The First West Coast Computer Faire\nCredit: Gift of Jim Warren",
"label": "Butterfly Media Dimensions",
"libraryCatalog": "Computer History Museum Archive",
"place": "San Francisco, CA",
"attachments": [
{
"mimeType": "audio/mpeg",
"title": "Tutorials on software systems design - Side B"
},
{
"mimeType": "audio/mpeg",
"title": "Tutorials on software systems design - Side A"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.computerhistory.org/collections/catalog/102661095",
"items": [
{
"itemType": "book",
"title": "People's Computer Company; People's Computers; Recreational Computing",
"creators": [],
"date": "1972-1981",
"abstractNote": "Founded in Oct 1972 as a large-format bimonthly newsprint publication called \"People's Computer Company.\" Name changed to \"People's Computers\" beginning with the May-June 1977 issue and the format changed to a more conventional magazine style, albeit with uncoated paper. Name changed again to \"Recreational Computing\" with Jan-Feb 1979 issue with slicker covers and paper. \n\nNote: The print collection has been augmented with scans provided by Bob Zeidman under lot number X6691.2013. Some issues in the collection exist in digital form only.",
"archive": "Computer History Museum",
"archiveLocation": "X2595.2004",
"extra": "Catalog Number: 102661095\nCategory: Periodical\nCredit: Gift of Jim Warren",
"libraryCatalog": "Computer History Museum Archive",
"publisher": "People's Computer Company",
"attachments": [
{
"mimeType": "application/pdf",
"title": "People's Computer Company, v. 1, no. 1 (Oct 1972)"
},
{
"mimeType": "application/pdf",
"title": "People's Computer Company, v. 1, no. 2 (Dec 1972)"
},
{
"mimeType": "application/pdf",
"title": "People's Computer Company, v. 1, no. 3 (Feb 1973)"
},
{
"mimeType": "application/pdf",
"title": "People's Computer Company, v. 1, no. 4 (Apr 1973)"
},
{
"mimeType": "application/pdf",
"title": "People's Computer Company, v. 1, no. 5 (May 1973)"
},
{
"mimeType": "application/pdf",
"title": "People's Computer Company, v. 2, no. 1 (Sep 1973)"
},
{
"mimeType": "application/pdf",
"title": "People's Computer Company, v. 2, no. 2 (Nov 1973)"
},
{
"mimeType": "application/pdf",
"title": "People's Computer Company, v. 2, no. 3 (Jan 1974)"
},
{
"mimeType": "application/pdf",
"title": "PCC (People's Computer Company) Games (1974)"
},
{
"mimeType": "application/pdf",
"title": "People's Computer Company, v. 2, no. 4 (Mar 1974)"
},
{
"mimeType": "application/pdf",
"title": "People's Computer Company, v. 2, no. 5 (May 1974)"
},
{
"mimeType": "application/pdf",
"title": "People's Computer Company, v. 2, no. 6 (Jul 1974)"
},
{
"mimeType": "application/pdf",
"title": "People's Computer Company, v. 3, no. 1 (Sep 1974)"
},
{
"mimeType": "application/pdf",
"title": "People's Computer Company, v. 3, no. 2 (1974)"
},
{
"mimeType": "application/pdf",
"title": "People's Computer Company, v. 3, no. 3 (Jan 1975)"
},
{
"mimeType": "application/pdf",
"title": "People's Computer Company, v. 3, no. 4 (Mar 1975)"
},
{
"mimeType": "application/pdf",
"title": "People's Computer Company, v. 3, no. 5 (May 1975)"
},
{
"mimeType": "application/pdf",
"title": "People's Computer Company, v. 4, no. 1 (Jul 1975)"
},
{
"mimeType": "application/pdf",
"title": "People's Computer Company, v. 4, no. 2 (Sep 1975)"
},
{
"mimeType": "application/pdf",
"title": "People's Computer Company, v. 4, no. 3 (Nov 1975)"
},
{
"mimeType": "application/pdf",
"title": "People's Computer Company, v. 4, no. 4 (Jan 1976)"
},
{
"mimeType": "application/pdf",
"title": "People's Computer Company, v. 4, no. 5 (Mar-Apr 1976)"
},
{
"mimeType": "application/pdf",
"title": "People's Computer Company, v. 4, no. 6 (May 1976)"
},
{
"mimeType": "application/pdf",
"title": "People's Computer Company, v. 5, no. 1 (Jul 1976)"
},
{
"mimeType": "application/pdf",
"title": "People's Computer Company, v. 5, no. 2 (Aug-Sep 1976)"
},
{
"mimeType": "application/pdf",
"title": "People's Computer Company, v. 5, no. 3 (Nov-Dec 1976)"
},
{
"mimeType": "application/pdf",
"title": "People's Computer Company, v. 5, no. 4 (Jan-Feb 1977)"
},
{
"mimeType": "application/pdf",
"title": "People's Computer Company, v. 5, no. 5 (Mar-Apr 1977)"
},
{
"mimeType": "application/pdf",
"title": "People's Computers, v. 5, no. 6 (May-Jun 1977)"
},
{
"mimeType": "application/pdf",
"title": "People's Computers, v. 6, no. 1 (Jul-Aug 1977)"
},
{
"mimeType": "application/pdf",
"title": "People's Computers, v. 6, no. 2 (Sep-Oct 1977)"
},
{
"mimeType": "application/pdf",
"title": "People's Computers, v. 6, no. 3 (Nov-Dec 1977)"
},
{
"mimeType": "application/pdf",
"title": "People's Computers, v. 6, no. 4 (Jan-Feb 1978)"
},
{
"mimeType": "application/pdf",
"title": "People's Computers, v. 6, no. 5 (Mar-Apr 1978)"
},
{
"mimeType": "application/pdf",
"title": "People's Computers, v. 6, no. 6 (May-Jun 1978)"
},
{
"mimeType": "application/pdf",
"title": "People's Computers, v. 7, no. 1 (Jul-Aug 1978)"
},
{
"mimeType": "application/pdf",
"title": "People's Computers, v. 7, no. 2 (Sep-Oct 1978)"
},
{
"mimeType": "application/pdf",
"title": "People's Computers, v. 7, no. 3 (Nov-Dec 1978)"
},
{
"mimeType": "application/pdf",
"title": "Recreational Computing, v. 7, no. 4 (Jan-Feb 1979)"
},
{
"mimeType": "application/pdf",
"title": "Recreational Computing, v. 7, no. 5 (Mar-Apr 1979)"
},
{
"mimeType": "application/pdf",
"title": "Recreational Computing, v. 7, no. 6 (May-Jun 1979)"
},
{
"mimeType": "application/pdf",
"title": "Recreational Computing, v. 8, no. 1 (Jul-Aug 1979)"
},
{
"mimeType": "application/pdf",
"title": "Recreational Computing, v. 8, no. 2 (Sep-Oct 1979)"
},
{
"mimeType": "application/pdf",
"title": "Recreational Computing, v. 8, no. 3 (Nov-Dec 1979)"
},
{
"mimeType": "application/pdf",
"title": "Recreational Computing, v. 8, no. 4 (Jan-Feb 1980)"
},
{
"mimeType": "application/pdf",
"title": "Recreational Computing, v. 8, no. 5 (Mar-Apr 1980)"
},
{
"mimeType": "application/pdf",
"title": "Recreational Computing, v. 8, no. 6 (May-Jun 1980)"
},
{
"mimeType": "application/pdf",
"title": "Recreational Computing, v. 9, no. 1 (Jul-Aug 1980)"
},
{
"mimeType": "application/pdf",
"title": "Recreational Computing, v. 9, no. 2 (Sep-Oct 1980)"
},
{
"mimeType": "application/pdf",
"title": "Recreational Computing, v. 9, no. 3 (Nov-Dec 1980)"
},
{
"mimeType": "application/pdf",
"title": "Recreational Computing, v. 9, no. 4 (Jan-Feb 1981)"
},
{
"mimeType": "application/pdf",
"title": "Recreational Computing, v. 9, no. 5 (Mar-Apr 1981)"
},
{
"mimeType": "application/pdf",
"title": "Recreational Computing, v. 9, no. 6 (May-June 1981)"
},
{
"mimeType": "application/pdf",
"title": "Recreational Computing, v. 10, no. 1 (Jul-Aug 1981)"
},
{
"mimeType": "application/pdf",
"title": "Recreational Computing, v. 10, no. 2 (Sep-Oct 1981)"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.computerhistory.org/collections/catalog/102630889",
"items": [
{
"itemType": "artwork",
"title": "Apple IIe",
"creators": [],
"abstractNote": "Black and white identification photograph of the Apple IIe main terminal including monitor, disk drive and keyboard. appriximately 1/2 inch white border surrounds main image. Background is gray. Computer is sitting on a ledge.",
"archive": "Computer History Museum",
"archiveLocation": "X2870.2005",
"artworkMedium": "Photographic print",
"artworkSize": "8 x 10 in.",
"extra": "Catalog Number: 102630889\nCategory: Identification photograph; Publicity photograph\nCredit: Gift of CHM AppleLore",
"libraryCatalog": "Computer History Museum Archive",
"rights": "Apple Computer, Inc.",
"attachments": [
{
"title": "Apple IIe",
"mimeType": "image/png"
}
],
"tags": [
{
"tag": "Apple Computer, Inc."
},
{
"tag": "Apple IIe (Computer)"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Kagami Sascha Rosylight^https?://news\.v\.daum\.net/v//*
* ***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Kagami Sascha Rosylight
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
/* global attr, text */
function detectWeb(doc, _url) {
if (attr(doc, "meta[property='og:type']", "content") === "article") {
return "newspaperArticle";
}
return false;
}
function doWeb(doc, url) {
scrape(doc, url);
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator("web");
// Embedded Metadata
translator.setTranslator("951c027d-74ac-47d4-a107-9c3069ab7b48");
translator.setHandler("itemDone", function (obj, item) {
item.creators = [{
lastName: text(doc, ".info_view .txt_info"),
fieldMode: 1,
creatorType: "author"
}];
item.publicationTitle = attr(doc, ".link_cp .thumb_g", "alt");
item.abstractNote = item.abstractNote.replace(/^\[[^\]]+\]/, "").replace(/^.+ 기자 =/, "");
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.itemType = "newspaperArticle";
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://news.v.daum.net/v/20210517200529855",
"items": [
{
"itemType": "newspaperArticle",
"title": "\"가운데 여성의 손 모양이..\" 평택시, '남혐' 논란 포스터 전량 수거해 수정 배포",
"creators": [
{
"lastName": "김초영",
"fieldMode": 1,
"creatorType": "author"
}
],
"abstractNote": "경기 평택시가 최근 '남혐 손모양'으로 논란을 빚은 공모전 홍보 포스터를 전량 수거해 수정한 뒤 다시 배포했다고 17일 밝혔다. 수정된 포스터에는 문제가 됐던 그림이 삭제됐고, 주민참여예산 공모전을 안내하는 글만 담겼다. 시는 이렇게 수정된 이미지로 홍보 현수막 23개, 포스터 200장, 전단 4000장 등을 새로 제작해 배부했다",
"language": "ko",
"libraryCatalog": "news.v.daum.net",
"publicationTitle": "아시아경제",
"url": "https://news.v.daum.net/v/cqtgoNRQCS",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://news.v.daum.net/v/cVBhcyjPIe",
"items": [
{
"itemType": "newspaperArticle",
"title": "환청 시달리다 도끼 난동 부린 50대 2심도 집행유예",
"creators": [
{
"lastName": "문다영",
"fieldMode": 1,
"creatorType": "author"
}
],
"abstractNote": "서울북부지법 제1-2형사부(이근영 노진영 김지철 부장판사)는 18일 특수협박 혐의로 기소된 임모(52)씨에게 1심과 마찬가지로 징역 8개월과 집행유예 2년을 선고했다. 임씨는 지난해 3월 14일 오후 7시께 \"죽이겠다\"는 환청을 듣고 서울 노원구의 길거리에서 도끼 두 자루를 들고 돌아다니며 시민들을 위협한 혐의로 재판에 넘",
"language": "ko",
"libraryCatalog": "news.v.daum.net",
"publicationTitle": "연합뉴스",
"url": "https://news.v.daum.net/v/cVBhcyjPIe",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Sebastian Karcher^https?://(data\.)?[^/]*historicaltexts\.jisc\.ac\.uk/(view|results)\?/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2018 Sebastian Karcher
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
// attr()/text() v2
function attr(docOrElem,selector,attr,index){var elem=index?docOrElem.querySelectorAll(selector).item(index):docOrElem.querySelector(selector);return elem?elem.getAttribute(attr):null;}function text(docOrElem,selector,index){var elem=index?docOrElem.querySelectorAll(selector).item(index):docOrElem.querySelector(selector);return elem?elem.textContent:null;}
function detectWeb(doc, url) {
if (url.includes('/view?')) {
return "book";
} else if (url.includes("/results?terms")) {
// we don't use getSearchResults so we don't need the DOM object which loads after page load finishes
return "multiple";
}
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('a[class*="book-title"]');
for (let i=0; i<rows.length; i++) {
let href = rows[i].href;
let title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) {
return true;
}
var articles = [];
for (var i in items) {
articles.push(i);
}
for (let article of articles) {
scrape(article);
}
});
} else {
scrape(url);
}
}
function generateJSONUrl(url) {
let pubId = url.match(/pubId=([^&]+)/);
if (!pubId) return false;
else if (pubId[1].startsWith("ukmhl")) {
return "https://data.ukmhl.historicaltexts.jisc.ac.uk/elasticsearch/ukmhl/publication/" + pubId[1];
}
else if (pubId[1].startsWith("bl-")) {
return "https://data.historicaltexts.jisc.ac.uk/elasticsearch/es1/ht/bl/publication/" + pubId[1];
}
else if (pubId[1].startsWith("ecco-")) {
return "https://data.historicaltexts.jisc.ac.uk/elasticsearch/es1/ht/ecco/publication/" + pubId[1];
}
else if (pubId[1].startsWith("eebo-")) {
return "https://data.historicaltexts.jisc.ac.uk/elasticsearch/es1/ht/eebo/publication/" + pubId[1];
}
else return false;
}
function scrape(url) {
var JSONurl = generateJSONUrl(url);
if (!JSONurl) {
throw("Can't generate JSON ID");
}
ZU.doGet(JSONurl, function(text){
//Z.debug(text);
var data = JSON.parse(text);
if (data.hits && data.hits.hits.length) {
data = data.hits.hits[0];
}
var creation = data._source.lifecycle.creation;
var publication = data._source.lifecycle.publication[0];
var media = data._source.media[0];
var item = new Zotero.Item("book");
if (creation) {
var author = creation[0].author;
//Z.debug(author);
if (author) {
item.creators.push(ZU.cleanAuthor(author[0].name[0].value, "author", true));
}
}
if (publication) {
if (publication.publisher) {
item.publisher = publication.publisher[0].name[0].value;
}
if (publication.place) {
item.place = publication.place[0].name[0].value;
}
if (publication.date) {
item.date = publication.date[0].value;
}
}
item.title= data._source.summary_title;
item.numPages = media.page_count;
if (data._source.edition) {
item.edition = data._source.edition[0].statement;
}
if (data._source.series) {
item.volume = data._source.series[0].volume;
}
var topics = data._source.subjects.topic;
if (topics) {
for (let topic of topics) {
item.tags.push(topic.name[0].value);
}
}
item.url = url.replace(/&.+/, "");
var formats = media.format;
var pdfUrl;
for (let format of formats) {
if (format.type == "pdf") {
pdfUrl = "/media/pdf/" + format.location;
//Z.debug(pdfUrl);
break;
}
}
if (pdfUrl) {
item.attachments.push({url: pdfUrl, title: "Historical Text PDF", mimeType: "application/pdf"});
}
item.complete();
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://data.ukmhl.historicaltexts.jisc.ac.uk/view?pubId=ukmhl-b20392497&pageId=ukmhl-b20392497-1",
"items": [
{
"itemType": "book",
"title": "Test types for determining the acuteness of vision",
"creators": [
{
"firstName": "George",
"lastName": "Cowell",
"creatorType": "author"
}
],
"date": "189-?",
"libraryCatalog": "JISC Historical Texts",
"numPages": 4,
"place": "London",
"publisher": "Printed And Sold By Harrison And Sons",
"url": "https://data.ukmhl.historicaltexts.jisc.ac.uk/view?pubId=ukmhl-b20392497",
"attachments": [
{
"title": "Historical Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Vision Tests"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://data.ukmhl.historicaltexts.jisc.ac.uk/view?pubId=ukmhl-b21304439_0003&pageId=ukmhl-b21304439_0003-1",
"items": [
{
"itemType": "book",
"title": "A compendium of the anatomy of the human body",
"creators": [
{
"firstName": "Andrew",
"lastName": "Fyfe",
"creatorType": "author"
}
],
"date": "1812-18",
"edition": "Fifth edition, enlarged and improved. To which is now added, a fourth volume, containing Outlines of comparative anatomy.",
"libraryCatalog": "JISC Historical Texts",
"numPages": 350,
"place": "Edinburgh",
"publisher": "Printed By J. Pillans & Sons For Adam Black ... Etc",
"url": "https://data.ukmhl.historicaltexts.jisc.ac.uk/view?pubId=ukmhl-b21304439_0003",
"volume": "3",
"attachments": [
{
"title": "Historical Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Anatomy"
},
{
"tag": "Anatomy, Comparative"
},
{
"tag": "Bones"
},
{
"tag": "Human anatomy"
},
{
"tag": "Ligaments"
},
{
"tag": "Muscles"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Guillaume Adreani^https?://(www\.)?legifrance\.gouv\.fr//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2013 Guillaume Adreani (guillaume.adreani@gmail.com @adreagui] for Droit.org
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
/*
Thanks to Sebastian Karcher and Aurimas Vinckevicius
*/
var legifrancecaseRegexp = /https?:\/\/(www.)?legifrance\\.gouv\\.fr\/.+JURITEXT|CETATEXT|CONSTEXT.+/
// Détection occurences multiples uniquement pour la jurisprudence ... pour l'instant
function detectWeb(doc, url) {
if (url.match(/.CETATEXT|CONSTEXT|JURITEXT./)) { // Détection jurisprudence
return "case";
} else if (url.match(/LEGIARTI|affichCodeArticle|affichTexteArticle|KALICONT|JORFTEXT|CNILTEXT/)) { // Détection textes législatifs
return "statute"; // Détection lois et codes
} else if (url.match(/rechJuriConst|rechExpJuriConst|rechJuriAdmin|rechExpJuriAdmin|rechJuriJudi|rechExpJuriJudi/)) { // Détection occurences multiples uniquement pour la jurisprudence
return "multiple"; // occurences multiples
} else return false;
}
function scrapecase(doc) { //Jurisprudence
var newItem = new Zotero.Item("case");
// Paramètres communs
var title = ZU.xpathText(doc, '//h1[@class="main-title"]');
newItem.title = title;
newItem.url = doc.location.href;
var rtfurl = ZU.xpathText(doc, '//a[contains(text(), "Télécharger")]/@href');
if (rtfurl) {
newItem.attachments = [{
url: "http://www.legifrance.gouv.fr/" + rtfurl,
title: "Document en RTF",
mimeType: "application/rtf"
}];
}
// Situation selon les juridictions
// Conseil constitutionnel
a = title.match(/(.*) - (.*) - (.*) - (.*)/)
if (a) {
var numero = a[1];
var date = a[2];
var texteparties = a[3]
var formation = a[4];
newItem.court = 'Conseil constitutionnel';
newItem.docketNumber = numero;
newItem.date = date;
newItem.extra = texteparties;
}
// Conseil d'État avec indication de publication
b = title.match(/(Conseil d'État), (.*), (s*[0-9/]+), (s*[0-9]+), (.*Lebon)/)
if (b) {
var cour = b[1];
var formation = b[2];
var date = b[3];
var numero = b[4];
var publication = b[5];
newItem.court = 'Conseil d\'État';
newItem.extra = formation;
newItem.date = date;
newItem.docketNumber = numero;
newItem.reporter = publication;
}
// Conseil d'État sans indication de publication
c = title.match(/(Conseil d'État), (.*), (s*[0-9/]+), (s*[0-9]+)/)
if (c) {
var formation = c[2];
var date = c[3];
var numero = c[4];
newItem.court = 'Conseil d\'État';
newItem.extra = formation;
newItem.date = date;
newItem.docketNumber = numero;
}
// Tribunal des conflits (jp administrative)
d = title.match(/(Tribunal des Conflits), , (s*[0-9/]+), (.*)/)
if (d) {
var date = d[2];
var numero = d[3];
newItem.court = 'Tribunal des Conflits';
newItem.date = date;
newItem.docketNumber = numero;
}
// Cours administratives d'appel avec publication // très rares cas sans publication
e = title.match(/(Cour administrative .*), (.*), (s*[0-9/]+), (.*), (.*Lebon)/)
if (e) {
var cour = e[1];
var formation = e[2];
var date = e[3];
var numero = e[4];
var publication = e[5];
newItem.court = cour;
newItem.extra = formation;
newItem.date = date;
newItem.docketNumber = numero;
newItem.reporter = publication;
}
var f; // tribunaux administratifs avec chambre
f = title.match(/(|Tribunal Administratif|administratif.*), (.*chambre), (s*[0-9/]+), (s*[0-9]+)/)
if (f) {
var cour = f[1];
var formation = f[2];
var date = f[3];
var numero = f[4];
newItem.court = 'Tribunal ' + cour;
newItem.date = date;
newItem.docketNumber = numero;
}
var g; // tribunaux administratifs sans chambre avec publication
g = title.match(/(Tribunal Administratif|administratif.*), du (.*), (s*[0-9-]+), (.*Lebon)/)
if (g) {
var cour = g[1];
var date = g[2];
var numero = g[3];
var publication = g[4];
newItem.court = 'Tribunal ' + cour;
newItem.date = date;
newItem.docketNumber = numero;
newItem.reporter = publication;
}
// Note : présence d'autres cas pour les TA
var h; // Cour de cassation
h = title.match(/(Cour de cassation), (.*), (.*), (s*[0-9-. ]+), (.*)/)
if (h) {
var nature = h[1];
var formation = h[2];
var date = h[3];
var numero = h[4];
var publication = h[5];
newItem.court = 'Cour de cassation';
if (nature) newItem.tags.push(nature);
newItem.extra = formation;
newItem.date = date;
newItem.docketNumber = numero;
newItem.reporter = publication;
}
var i; // cours d'appel et tribunaux
i = title.match(/(Cour d'appel.*|Tribunal.*|Conseil.*|Chambre.*|Juridiction.*|Commission.*|Cour d'assises.*) de (.*), (.*), (s*[0-9/]+)/)
if (i) {
var cour = i[1];
var lieu = i[2];
var date = i[3];
var numero = i[4];
newItem.court = cour + ' de ' + lieu;
newItem.date = date;
newItem.docketNumber = numero;
}
// Tribunal des conflits - Base CASS
j = title.match(/(Tribunal des conflits), (.*), (.*), (s*[0-9-. ]+), (.*)/)
if (j) {
var nature = j[2];
var date = j[3];
var numero = j[4];
var publication = j[5];
newItem.court = 'Tribunal des conflits';
if (nature) newItem.tags.push(nature);
newItem.date = date;
newItem.docketNumber = numero;
newItem.reporter = publication;
}
newItem.complete();
}
function scrapelegislation(doc, url) { //Législation
var newItem = new Zotero.Item("statute");
var title = ZU.xpathText(doc, '//h1[@class="main-title"]');
newItem.title = title;
newItem.accessDate = 'CURRENT_TIMESTAMP';
//
var a; // Codes
a = title.match(/(Code.*) - Article (.*)/)
if (a) {
var code = a[1];
var codeNumber = a[2];
newItem.code = code;
newItem.codeNumber = codeNumber;
}
var b; // Lois 1er modèle
b = title.match(/(LOI|Décret) n[o°] (s*[0-9-]+) du ((s*[0-9]+) (janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre) (s*[0-9z]+))/)
if (b) {
var code = b[2];
var date = b[3];
newItem.code = code; // publicLawNumber non défini
newItem.date = date;
}
var c; // Lois 2ème modèle
c = title.match(/(Loi|Décret) n[o°](s*[0-9-]+) du ((s*[0-9]+) (janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre) (s*[0-9z]+))/)
if (c) {
var code = c[2];
var date = c[3];
newItem.code = code; // publicLawNumber non défini
newItem.date = date;
}
var e; // CNIL
e = title.match(/(Délibération) (s*[0-9-]+) du ((s*[0-9]+) (.*) (s*[0-9]+))/)
if (e) {
var nameOfAct = e[1];
var code = e[2];
var date = e[3];
newItem.nameOfAct = nameOfAct + ' de la Commission Nationale de l\'Informatique et des Libertés';
newItem.code = code;
newItem.date = date;
}
newItem.complete();
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "case") {
scrapecase(doc, url);
} else if (detectWeb(doc, url) == "statute") {
scrapelegislation(doc, url);
} else if (detectWeb(doc, url) == "multiple") {
var items = Zotero.Utilities.getItemArray(doc, doc, legifrancecaseRegexp);
var articles = [];
Zotero.selectItems(items, function (items) {
if (!items) {
return true;
}
for (var i in items) {
articles.push(i);
}
Zotero.Utilities.processDocuments(articles, scrapecase);
});
}
} /** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://www.legifrance.gouv.fr/affichJuriConst.do?oldAction=rechJuriConst&idTexte=CONSTEXT000026458384&fastReqId=79382296&fastPos=1",
"items": [
{
"itemType": "case",
"creators": [],
"notes": [],
"tags": [],
"seeAlso": [],
"attachments": [
{
"title": "Document en RTF",
"mimeType": "application/rtf"
}
],
"title": "Décision 2012-274 QPC - 28 septembre 2012 - Consorts G. [Calcul de l'indemnité de réduction due par le donataire ou le légataire d'une exploitation agricole en Alsace-Moselle] - Conformité",
"accessDate": "CURRENT_TIMESTAMP",
"url": "http://www.legifrance.gouv.fr/affichJuriConst.do?oldAction=rechJuriConst&idTexte=CONSTEXT000026458384&fastReqId=79382296&fastPos=1",
"court": "Conseil constitutionnel",
"docketNumber": "Décision 2012-274 QPC",
"date": "28 septembre 2012",
"extra": "Consorts G. [Calcul de l'indemnité de réduction due par le donataire ou le légataire d'une exploitation agricole en Alsace-Moselle]",
"libraryCatalog": "Légifrance"
}
]
},
{
"type": "web",
"url": "http://www.legifrance.gouv.fr/affichJuriAdmin.do?oldAction=rechJuriAdmin&idTexte=CETATEXT000026845833&fastReqId=1276712822&fastPos=1",
"items": [
{
"itemType": "case",
"creators": [],
"notes": [],
"tags": [],
"seeAlso": [],
"attachments": [
{
"title": "Document en RTF",
"mimeType": "application/rtf"
}
],
"title": "Tribunal des Conflits, , 17/12/2012, C3871",
"accessDate": "CURRENT_TIMESTAMP",
"url": "http://www.legifrance.gouv.fr/affichJuriAdmin.do?oldAction=rechJuriAdmin&idTexte=CETATEXT000026845833&fastReqId=1276712822&fastPos=1",
"court": "Tribunal des Conflits",
"date": "17/12/2012",
"docketNumber": "C3871",
"libraryCatalog": "Légifrance"
}
]
},
{
"type": "web",
"url": "http://www.legifrance.gouv.fr/affichJuriAdmin.do?oldAction=rechJuriAdmin&idTexte=CETATEXT000021750743&fastReqId=754258727&fastPos=1",
"items": [
{
"itemType": "case",
"creators": [],
"notes": [],
"tags": [],
"seeAlso": [],
"attachments": [
{
"title": "Document en RTF",
"mimeType": "application/rtf"
}
],
"title": "Tribunal Administratif de Nantes, 5ème chambre, 17/12/2009, 0802183",
"accessDate": "CURRENT_TIMESTAMP",
"url": "http://www.legifrance.gouv.fr/affichJuriAdmin.do?oldAction=rechJuriAdmin&idTexte=CETATEXT000021750743&fastReqId=754258727&fastPos=1",
"court": "Tribunal Administratif de Nantes, 5ème chambre",
"date": "17/12/2009",
"docketNumber": "0802183",
"libraryCatalog": "Légifrance"
}
]
},
{
"type": "web",
"url": "http://www.legifrance.gouv.fr/affichJuriAdmin.do?oldAction=rechJuriAdmin&idTexte=CETATEXT000026925589&fastReqId=1836722737&fastPos=1",
"items": [
{
"itemType": "case",
"creators": [],
"notes": [],
"tags": [],
"seeAlso": [],
"attachments": [
{
"title": "Document en RTF",
"mimeType": "application/rtf"
}
],
"title": "Cour administrative d'appel de Bordeaux, 2ème chambre (formation à 3), 08/01/2013, 11BX01796, Inédit au recueil Lebon",
"accessDate": "CURRENT_TIMESTAMP",
"url": "http://www.legifrance.gouv.fr/affichJuriAdmin.do?oldAction=rechJuriAdmin&idTexte=CETATEXT000026925589&fastReqId=1836722737&fastPos=1",
"court": "Cour administrative d'appel de Bordeaux",
"extra": "2ème chambre (formation à 3)",
"date": "08/01/2013",
"docketNumber": "11BX01796",
"reporter": "Inédit au recueil Lebon",
"libraryCatalog": "Légifrance"
}
]
},
{
"type": "web",
"url": "http://www.legifrance.gouv.fr/affichJuriJudi.do?oldAction=rechJuriJudi&idTexte=JURITEXT000026815591&fastReqId=673705389&fastPos=2",
"items": [
{
"itemType": "case",
"creators": [],
"notes": [],
"tags": [
"Cour de cassation"
],
"seeAlso": [],
"attachments": [
{
"title": "Document en RTF",
"mimeType": "application/rtf"
}
],
"title": "Cour de cassation, Chambre mixte, 21 décembre 2012, 12-15.063, Publié au bulletin",
"url": "http://www.legifrance.gouv.fr/affichJuriJudi.do?oldAction=rechJuriJudi&idTexte=JURITEXT000026815591&fastReqId=673705389&fastPos=2",
"court": "Cour de cassation",
"extra": "Chambre mixte",
"date": "21 décembre 2012",
"docketNumber": "12-15.063",
"reporter": "Publié au bulletin",
"libraryCatalog": "Légifrance",
"accessDate": "CURRENT_TIMESTAMP"
}
]
},
{
"type": "web",
"url": "http://www.legifrance.gouv.fr/affichJuriJudi.do?oldAction=rechJuriJudi&idTexte=JURITEXT000026870360&fastReqId=1277546473&fastPos=1",
"items": [
{
"itemType": "case",
"creators": [],
"notes": [],
"tags": [],
"seeAlso": [],
"attachments": [
{
"title": "Document en RTF",
"mimeType": "application/rtf"
}
],
"title": "Cour d'appel de Limoges, 27 décembre 2012, 11/01637",
"accessDate": "CURRENT_TIMESTAMP",
"url": "http://www.legifrance.gouv.fr/affichJuriJudi.do?oldAction=rechJuriJudi&idTexte=JURITEXT000026870360&fastReqId=1277546473&fastPos=1",
"court": "Cour d'appel de Limoges",
"date": "27 décembre 2012",
"docketNumber": "11/01637",
"libraryCatalog": "Légifrance"
}
]
},
{
"type": "web",
"url": "http://www.legifrance.gouv.fr/affichJuriJudi.do?oldAction=rechJuriJudi&idTexte=JURITEXT000020391875&fastReqId=1321603064&fastPos=9",
"items": [
{
"itemType": "case",
"creators": [],
"notes": [],
"tags": [],
"seeAlso": [],
"attachments": [
{
"title": "Document en RTF",
"mimeType": "application/rtf"
}
],
"title": "Conseil de prud'hommes de Bordeaux, 13 janvier 2009, 04/00973",
"accessDate": "CURRENT_TIMESTAMP",
"url": "http://www.legifrance.gouv.fr/affichJuriJudi.do?oldAction=rechJuriJudi&idTexte=JURITEXT000020391875&fastReqId=1321603064&fastPos=9",
"court": "Conseil de prud'hommes de Bordeaux",
"date": "13 janvier 2009",
"docketNumber": "04/00973",
"libraryCatalog": "Légifrance"
}
]
},
{
"type": "web",
"url": "http://www.legifrance.gouv.fr/affichJuriJudi.do?oldAction=rechJuriJudi&idTexte=JURITEXT000026304473&fastReqId=2146436360&fastPos=11",
"items": [
{
"itemType": "case",
"creators": [],
"notes": [],
"tags": [
"civile"
],
"seeAlso": [],
"attachments": [
{
"title": "Document en RTF",
"mimeType": "application/rtf"
}
],
"title": "Tribunal des conflits, civile, 14 mai 2012, 12-03.836, Publié au bulletin",
"url": "http://www.legifrance.gouv.fr/affichJuriJudi.do?oldAction=rechJuriJudi&idTexte=JURITEXT000026304473&fastReqId=2146436360&fastPos=11",
"court": "Tribunal des conflits",
"date": "14 mai 2012",
"docketNumber": "12-03.836",
"reporter": "Publié au bulletin",
"libraryCatalog": "Légifrance",
"accessDate": "CURRENT_TIMESTAMP"
}
]
},
{
"type": "web",
"url": "http://www.legifrance.gouv.fr/affichCodeArticle.do?idArticle=LEGIARTI000006419320&cidTexte=LEGITEXT000006070721&dateTexte=20130114&fastPos=2&fastReqId=490815339&oldAction=rechCodeArticle",
"items": [
{
"itemType": "statute",
"creators": [],
"notes": [],
"tags": [],
"seeAlso": [],
"attachments": [],
"title": "Code civil - Article 16",
"accessDate": "CURRENT_TIMESTAMP",
"code": "Code civil",
"codeNumber": "16",
"libraryCatalog": "Légifrance"
}
]
},
{
"type": "web",
"url": "http://www.legifrance.gouv.fr/affichCnil.do?oldAction=rechExpCnil&id=CNILTEXT000017653865&fastReqId=131680152&fastPos=1",
"items": [
{
"itemType": "statute",
"creators": [],
"notes": [],
"tags": [],
"seeAlso": [],
"attachments": [],
"title": "Délibération de la Commission Nationale de l'Informatique et des Libertés",
"accessDate": "CURRENT_TIMESTAMP",
"nameOfAct": "Délibération de la Commission Nationale de l'Informatique et des Libertés",
"code": "97-008",
"date": "04 février 1997",
"libraryCatalog": "Légifrance"
}
]
},
{
"type": "web",
"url": "http://www.legifrance.gouv.fr/affichJuriAdmin.do?oldAction=rechJuriAdmin&idTexte=CETATEXT000026910036&fastReqId=1849242527&fastPos=10",
"items": [
{
"itemType": "case",
"creators": [],
"notes": [],
"tags": [],
"seeAlso": [],
"attachments": [
{
"title": "Document en RTF",
"mimeType": "application/rtf"
}
],
"title": "Conseil d'État, 1ère et 6ème sous-sections réunies, 07/01/2013, 343126",
"accessDate": "CURRENT_TIMESTAMP",
"url": "http://www.legifrance.gouv.fr/affichJuriAdmin.do?oldAction=rechJuriAdmin&idTexte=CETATEXT000026910036&fastReqId=1849242527&fastPos=10",
"court": "Conseil d'État",
"extra": "1ère et 6ème sous-sections réunies",
"date": "07/01/2013",
"docketNumber": "343126",
"libraryCatalog": "Légifrance"
}
]
},
{
"type": "web",
"url": "http://www.legifrance.gouv.fr/affichJuriAdmin.do?oldAction=rechJuriAdmin&idTexte=CETATEXT000026910028&fastReqId=726489675&fastPos=15",
"items": [
{
"itemType": "case",
"creators": [],
"notes": [],
"tags": [],
"seeAlso": [],
"attachments": [
{
"title": "Document en RTF",
"mimeType": "application/rtf"
}
],
"title": "Conseil d'État, 10ème sous-section jugeant seule, 28/12/2012, 331405, Inédit au recueil Lebon",
"accessDate": "CURRENT_TIMESTAMP",
"url": "http://www.legifrance.gouv.fr/affichJuriAdmin.do?oldAction=rechJuriAdmin&idTexte=CETATEXT000026910028&fastReqId=726489675&fastPos=15",
"court": "Conseil d'État",
"extra": "10ème sous-section jugeant seule",
"date": "28/12/2012",
"docketNumber": "331405",
"reporter": "Inédit au recueil Lebon",
"libraryCatalog": "Légifrance"
}
]
},
{
"type": "web",
"url": "http://www.legifrance.gouv.fr/affichTexte.do?cidTexte=JORFTEXT000026871286&fastPos=1&fastReqId=217867052&categorieLien=id&oldAction=rechTexte",
"items": [
{
"itemType": "statute",
"creators": [],
"notes": [],
"tags": [],
"seeAlso": [],
"attachments": [],
"title": "LOI n° 2012-1561 du 31 décembre 2012 relative à la représentation communale dans les communautés de communes et d'agglomération",
"accessDate": "CURRENT_TIMESTAMP",
"code": "2012-1561",
"date": "31 décembre 2012",
"libraryCatalog": "Légifrance"
}
]
},
{
"type": "web",
"url": "http://www.legifrance.gouv.fr/affichTexte.do?cidTexte=JORFTEXT000000320901&fastPos=4&fastReqId=702580559&categorieLien=id&oldAction=rechTexte",
"items": [
{
"itemType": "statute",
"creators": [],
"notes": [],
"tags": [],
"seeAlso": [],
"attachments": [],
"title": "Loi n°85-1483 du 31 décembre 1985 AUTORISANT L'APPROBATION D'UN ACCORD DE COOPERATION EN MATIERE ECONOMIQUE ET FINANCIERE ENTRE LE GOUVERNEMENT DE LA REPUBLIQUE FRANCAISE ET LE GOUVERNEMENT DE LA REPUBLIQUE GABONAISE,SIGNE A PARIS LE 14-04-1983",
"accessDate": "CURRENT_TIMESTAMP",
"code": "85-1483",
"date": "31 décembre 1985",
"libraryCatalog": "Légifrance"
}
]
}
]
/** END TEST CASES **/
100Kagami Sascha Rosylight^https?://www\.womennews\.co\.kr/*
***** BEGIN LICENSE BLOCK *****
womennews.co.kr (여성신문) Translator
Copyright © 2021 Kagami Sascha Rosylight
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
/* global attr */
function detectWeb(doc, url) {
if (url.includes("articleView.html")) {
return "newspaperArticle";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
const items = {};
let found = false;
const rows = doc.querySelectorAll(".article-list-content .list-titles a");
for (const row of rows) {
const href = row.href;
const title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator("web");
// Embedded Metadata
translator.setTranslator("951c027d-74ac-47d4-a107-9c3069ab7b48");
translator.setHandler("itemDone", function (obj, item) {
const author = attr(doc, 'meta[property="og:article:author"]', "content");
if (author) {
item.creators = author.split(", ").map(name => ({
lastName: name,
fieldMode: 1,
creatorType: "author"
}));
}
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.itemType = "newspaperArticle";
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://www.womennews.co.kr/news/articleView.html?idxno=211608",
"items": [
{
"itemType": "newspaperArticle",
"title": "‘평택항 참사’ 이선호 아버지 “청년들, 위험한 일 안 할 권리 있다”",
"creators": [
{
"lastName": "김규희 기자",
"fieldMode": 1,
"creatorType": "author"
}
],
"date": "2021-05-17T15:16:00+09:00",
"abstractNote": "“우리 아들은 그곳이 얼마나 위험한지 알았으면 안 들어갔을 겁니다. 청년들에게 ‘위험한 일을 안 할 권리가 있다’고 말해주고 싶습니다. 시키는 대로 다 하면 안 됩니다. 위험한 일은 피해야 합니다.”아들이 일하다가 300kg 철판에 깔렸다. 처음 해보는 일이었는데, 안전교육, 안전장비, 안전관리자 아무것도 없었다. 사측은 사고 이후 119에 바로 신고하지 않고 윗선에 보고했다.‘평택항 참사’로 세상을 떠난 고(故) 이선호(23)씨 아버지 이재훈씨를 13일 경기도 평택시 안중백병원 장례식장에서 만났다. 그는 “기업들은 오로지 비용 절",
"language": "ko",
"libraryCatalog": "www.womennews.co.kr",
"publicationTitle": "여성신문",
"section": "사회",
"url": "http://www.womennews.co.kr/news/articleView.html?idxno=211608",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "산재"
},
{
"tag": "아버지"
},
{
"tag": "이선호"
},
{
"tag": "이재훈"
},
{
"tag": "인터뷰"
},
{
"tag": "참사"
},
{
"tag": "청년"
},
{
"tag": "평택항"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.womennews.co.kr/news/articleView.html?idxno=205665",
"items": [
{
"itemType": "newspaperArticle",
"title": "[92년생 김지영③] 아직도 싸워야 한다",
"creators": [
{
"lastName": "이하나",
"fieldMode": 1,
"creatorType": "author"
},
{
"lastName": "진혜민",
"fieldMode": 1,
"creatorType": "author"
},
{
"lastName": "김서현",
"fieldMode": 1,
"creatorType": "author"
},
{
"lastName": "전성운 기자",
"fieldMode": 1,
"creatorType": "author"
}
],
"date": "2021-01-04T09:29:00+09:00",
"abstractNote": "여성신문이 2021년 신년 기획 을 통해 이 시대 여성들의 목소리를 싣습니다. 82년생, 92년생, 00년생 여성의 이야기를 들으며 ‘젠더갈등’이라는 이름 아래 그동안 ‘한국형 백래시’가 어떻게 작동했는지에 주목했습니다. 뿐만 아니라 성평등한 세상을 만들기 위해 우리 사회가 노력해야 할 방안 등을 살펴보려 합니다.*편집자 주 : 백래시(Backlash)는 어떠한 아이디어, 행동 또는 물체에 대한 강한 반발을 뜻하는 단어로, 성평등 및 젠더 운동 등의 흐름에 반대하는 운동 및 세력을 ‘백래시’라 부른다. (출처 :",
"language": "ko",
"libraryCatalog": "www.womennews.co.kr",
"publicationTitle": "여성신문",
"section": "사회",
"url": "http://www.womennews.co.kr/news/articleView.html?idxno=205665",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "92년생김지영"
},
{
"tag": "고용불안"
},
{
"tag": "메갈리아"
},
{
"tag": "빈곤"
},
{
"tag": "안전비용"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.womennews.co.kr/news/articleList.html?sc_section_code=S1N1&view_type=sm",
"items": "multiple"
}
]
/** END TEST CASES **/
100nikhil trivedi, Illya Moskvin^https?://(www\.)?artic\.edu/(artworks/|collection)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Art Institute of Chicago
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc) {
if (ZU.xpathText(doc, '//html[contains(@class, "p-artwork-show")]')) {
return 'artwork';
}
else if (ZU.xpathText(doc, '//html[contains(@class, "p-collection-index")]')) {
return 'multiple';
}
return false;
}
function doWeb(doc) {
if (detectWeb(doc) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) {
return true;
}
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
return true;
});
} else {
scrape(doc);
}
}
function scrape(doc) {
var item = new Zotero.Item('artwork');
item.title = ZU.xpathText(doc, '//h1');
var artists = ZU.xpath(doc, '//meta[contains(@name, "citation_author")]');
for (var i = 0; i < artists.length; i++) {
var cleaned = artists[i].content.replace(/\(.*\)$/, '').trim();
item.creators.push(ZU.cleanAuthor(cleaned, 'artist'));
}
item.attachments.push({
title: 'Snapshot',
document: doc
});
item.date = ZU
.xpath(doc, '//dl[@id="dl-artwork-details"]/dd[@itemprop="dateCreated"]/*/a')
.map(function (date) {
return date.textContent;
})
.join(', ');
item.artworkMedium = ZU.xpathText(doc, '//dl[@id="dl-artwork-details"]/dd[@itemprop="material"]');
item.artworkSize = ZU.xpathText(doc, '//dl[@id="dl-artwork-details"]/dd[@itemprop="size"]');
item.callNumber = ZU.xpathText(doc, '//dl[@id="dl-artwork-details"]/dd[@itemprop="identifier"]');
item.url = ZU.xpathText(doc, '//link[@rel="canonical"]/@href');
item.complete();
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = ZU.xpath(doc, '//ul[@id="artworksList"]/li/a');
for (var i = 0; i < rows.length; i++) {
var href = rows[i].href;
var title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.artic.edu/artworks/129884/starry-night-and-the-astronauts",
"items": [
{
"itemType": "artwork",
"title": "Starry Night and the Astronauts",
"creators": [
{
"firstName": "Alma",
"lastName": "Thomas",
"creatorType": "artist"
}
],
"date": "1972",
"artworkMedium": "Acrylic on canvas",
"artworkSize": "152.4 × 134.6 cm (60 × 53 in.)",
"callNumber": "1994.36",
"libraryCatalog": "Art Institute of Chicago",
"url": "https://www.artic.edu/artworks/129884/starry-night-and-the-astronauts",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.artic.edu/artworks/156538/chicago-stock-exchange-trading-room-reconstruction-at-the-art-institute-of-chicago",
"items": [
{
"itemType": "artwork",
"title": "Chicago Stock Exchange Trading Room: Reconstruction at the Art Institute of Chicago",
"creators": [
{
"lastName": "Architects",
"creatorType": "artist",
"firstName": "Adler & Sullivan"
}
],
"date": "Built 1893–1894",
"artworkMedium": "Mixed media recreation of room",
"artworkSize": "Room is roughly 5,704 square feet (not including gallery)",
"callNumber": "RX23310/0002",
"libraryCatalog": "Art Institute of Chicago",
"shortTitle": "Chicago Stock Exchange Trading Room",
"url": "https://www.artic.edu/artworks/156538/chicago-stock-exchange-trading-room-reconstruction-at-the-art-institute-of-chicago",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.artic.edu/artworks/28560/the-bedroom",
"items": [
{
"itemType": "artwork",
"title": "The Bedroom",
"creators": [
{
"lastName": "Gogh",
"creatorType": "artist",
"firstName": "Vincent van"
}
],
"date": "1889",
"artworkMedium": "Oil on canvas",
"artworkSize": "73.6 × 92.3 cm (29 × 36 5/8 in.)",
"callNumber": "1926.417",
"libraryCatalog": "Art Institute of Chicago",
"url": "https://www.artic.edu/artworks/28560/the-bedroom",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.artic.edu/artworks/52273/platform-bench",
"items": [
{
"itemType": "artwork",
"title": "Platform Bench",
"creators": [
{
"firstName": "George",
"lastName": "Nelson",
"creatorType": "artist"
},
{
"lastName": "Inc",
"creatorType": "artist",
"firstName": "Herman Miller"
}
],
"date": "Designed 1946, Made 1946-1967, c. 1946-1967",
"artworkMedium": "Birch",
"artworkSize": "35.5 × 47 × 183.5 cm (14 × 18 1/2 × 72 1/4 in.)",
"callNumber": "1978.141",
"libraryCatalog": "Art Institute of Chicago",
"url": "https://www.artic.edu/artworks/52273/platform-bench",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.artic.edu/artworks/7691/gathering-seaweed-at-omori",
"items": [
{
"itemType": "artwork",
"title": "Gathering Seaweed at Omori",
"creators": [
{
"firstName": "Utagawa",
"lastName": "Kuniyoshi",
"creatorType": "artist"
}
],
"artworkMedium": "Ink and red pigment on paper",
"callNumber": "1958.191",
"libraryCatalog": "Art Institute of Chicago",
"url": "https://www.artic.edu/artworks/7691/gathering-seaweed-at-omori",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Corey Runkel^https?://ypfs\.som\.yale\.edu/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Corey Runkel
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/library/')) {
return 'document';
}
else if (url.endsWith('.edu') || url.endsWith('.edu/') || url.includes('admin/content')) {
return 'multiple';
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('a[href*="/library/"]');
for (let row of rows) {
href = row.href;
title = ZU.trimInternal(row.text);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == 'multiple') {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) {
return true;
}
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
} else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var type = itemType(doc.querySelector('a[href*="ypfsresourcelibrary"]').href);
var item = new Zotero.Item(type[0]);
var pub = ZU.xpathText(doc, '//dl[@class="ypfs-case__details"]/dt[contains(., "Publisher")]/following-sibling::dd[1]/a');
var lang = ZU.xpathText(doc, '//dl[@class="ypfs-case__details"]/dt[contains(., "Language")]/following-sibling::dd[1]/a');
item.title = doc.querySelector('#block-ypfs-theme-page-title').innerText;
item.date = ZU.xpathText(doc, '//dl[@class="ypfs-case__details"]/dt[contains(., "Date")]/following-sibling::dd[1]');
item.abstractNote = ZU.xpathText(doc, '//dl[@class="ypfs-case__details"]/dt[contains(., "Information")]/following-sibling::dd[1]');
item.publisher = pub.replace(/.*: | \(.*\)/g, "");
item.language = getLocale(lang);
item.url = doc.querySelector('link[rel="shortlink"]').href;
item.archive = 'Yale Program on Financial Stability Resource Library';
item.extra = type[3];
item.creators = [];
for (i=1; i<=ZU.xpath(doc, '//dl[@class="ypfs-case__details"]/dt[contains(., "Author")]/following-sibling::dd[1]/a').length; i++) {
auth = ZU.xpathText(doc, '//dl[@class="ypfs-case__details"]/dt[contains(., "Author")]/following-sibling::dd[1]/a'.concat("[", i, "]"));
item.creators.push(ZU.cleanAuthor(auth.replace(/.*: | \(.*\)/g, ""), "author", true));
}
item.attachments = [{
url: doc.querySelector('a[href*="ypfsresourcelibrary"]').href,
mimeType: type[1],
title: type[2]
}];
item.tags = [
{tag: ZU.xpathText(doc, '//dl[@class="ypfs-case__details"]/dt[contains(., "Crisis")]/following-sibling::dd[1]/a')},
{tag: ZU.xpathText(doc, '//dl[@class="ypfs-case__details"]/dt[contains(., "Case Series")]/following-sibling::dd[1]/a')},
{tag: ZU.xpathText(doc, '//dl[@class="ypfs-case__details"]/dt[contains(., "Country")]/following-sibling::dd[1]/a')}
];
item.complete();
}
function itemType(href) {
switch (href.split(/\./).pop()) {
case "pdf":
return ['document', 'application/pdf', 'Full Text PDF'];
case "xlsx":
return ['document', 'application/vnd.ms-excel', 'Excel Workbook', 'type: dataset'];
case "xls":
return ['document', 'application/vnd.ms-excel', 'Excel Workbook', 'type: dataset'];
case "xlsm":
return ['document', 'application/vnd.ms-excel.sheet.macroEnabled.12', 'Macro-enabled Excel Workbook', 'type: dataset'];
case "doc":
return ['document', 'application/vnd.ms-word', 'Word Document'];
case "docx":
return ['document', 'application/vnd.ms-word', 'Word Document'];
case "pptx":
return ['presentation', 'application/vnd.ms-powerpoint', 'Powerpoint'];
case "mp3":
return ['audioRecording', 'audio/mpeg', 'Audio Recording'];
case "mp4":
return ['document', 'application/mp4', 'mp4 Recording'];
case "wma":
return ['audioRecording', 'audio/x-ms-wwma', 'Audio Recording'];
case "mov":
return ['videoRecording', 'video/quicktime', 'Video Recording'];
}
}
function getLocale(lang) {
return {
Arabic: 'ar',
Bulgarian: 'bg',
Danish: 'da',
Dutch: 'nl',
English: 'en',
Finnish: 'fi',
French: 'fr',
German: 'de',
Hungarian: 'hu',
Icelandic: 'is',
Japanese: 'jp',
Korean: 'kr',
Mongolian: 'mn',
Polish: 'pl',
Portugese: 'pt',
Slovene: 'sl',
Spanish: 'es',
Swedish: 'sv',
Thai: 'th',
Turkish: 'tr',
}[lang] || lang;
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://ypfs.som.yale.edu/",
"items": "multiple"
},
{
"type": "web",
"url": "https://ypfs.som.yale.edu/library/public-debt-outstanding",
"items": [
{
"itemType": "document",
"title": "Public Debt Outstanding",
"creators": [
{
"lastName": "Thai Public Debt Management Office",
"creatorType": "author"
}
],
"date": "February 05, 2021",
"abstractNote": "data showing, among other public debts, those attributed to the FIDF (in billions of baht)",
"archive": "Yale Program on Financial Stability Resource Library",
"archiveLocation": "16563",
"extra": "type: dataset",
"language": "en",
"libraryCatalog": "YPFS",
"publisher": "Thai Public Debt Management Office",
"url": "https://ypfs.som.yale.edu/library/public-debt-outstanding",
"attachments": [
{
"mimeType": "application/vnd.ms-excel",
"title": "Excel Workbook"
}
],
"tags": [
{
"tag": "Asia Crisis (1997-1998)"
},
{
"tag": "Broad-Based Emergency Liquidity"
},
{
"tag": "Thailand"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
310Simon Kornblith/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Simon Kornblith and Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, _url) {
var encounteredType = false;
var spans = doc.querySelectorAll('span.Z3988[title]');
for (let span of spans) {
// determine if it's a valid type
var item = new Zotero.Item();
Zotero.Utilities.parseContextObject(span.title, item);
if (item.itemType) {
if (encounteredType) {
return "multiple";
}
else {
encounteredType = item.itemType;
}
}
}
return encounteredType;
}
// Borrowed from Nature translator
function supplementItem(item, supp, prefer, ignore) {
if (!prefer) prefer = [];
if (!ignore) ignore = [];
for (var i in supp) {
if (ignore.includes(i)) continue;
if (i == 'creators' || i == 'attachments' || i == 'notes'
|| i == 'tags' || i == 'seeAlso'
) {
if ((item.hasOwnProperty(i) && item[i].length) // Supplement only if completely empty
|| (!supp[i].length || typeof supp[i] == 'string')
) {
continue;
}
}
else if (!supp.hasOwnProperty(i)
|| (item.hasOwnProperty(i) && !prefer.includes(i))) {
continue;
}
Z.debug('Supplementing item.' + i);
item[i] = supp[i];
}
return item;
}
// used to retrieve next COinS object when asynchronously parsing COinS objects
// on a page
function retrieveNextCOinS(needFullItems, newItems, couldUseFullItems, doc) {
if (needFullItems.length) {
var item = needFullItems.shift();
Zotero.debug("Looking up contextObject");
var search = Zotero.loadTranslator("search");
search.setHandler("itemDone", function (obj, newItem) {
supplementItem(newItem, item, [], ['contextObject', 'repository']);
newItems.push(newItem);
});
search.setHandler("done", function () {
retrieveNextCOinS(needFullItems, newItems, couldUseFullItems, doc);
});
// Don't throw on error
search.setHandler("error", function () {
Zotero.debug("Failed to look up item:");
Zotero.debug(item);
});
// look for translators
search.setHandler("translators", function (obj, translators) {
if (translators.length) {
search.setTranslator(translators);
search.translate();
}
else {
retrieveNextCOinS(needFullItems, newItems, couldUseFullItems, doc);
}
});
search.setSearch(item);
search.getTranslators();
}
else {
completeCOinS(newItems, couldUseFullItems, doc);
Zotero.done();
}
}
// saves all COinS objects
function completeCOinS(newItems, couldUseFullItems, doc) {
if (newItems.length > 1) {
var selectArray = new Array(newItems.length);
for (var i in newItems) {
selectArray[i] = newItems[i].title;
}
Zotero.selectItems(selectArray, function (selectArray) {
if (!selectArray) return;
var useIndices = [];
for (var i in selectArray) {
useIndices.push(i);
}
completeItems(newItems, useIndices, couldUseFullItems, doc);
});
}
else if (newItems.length) {
completeItems(newItems, [0], couldUseFullItems, doc);
}
}
function completeItems(newItems, useIndices, couldUseFullItems, doc) {
if (!useIndices.length) {
return;
}
var i = useIndices.shift();
// grab full item if the COinS was missing an author
if (couldUseFullItems[i]) {
Zotero.debug("Looking up contextObject");
var search = Zotero.loadTranslator("search");
var firstItem = false;
search.setHandler("itemDone", function (obj, newItem) {
supplementItem(newItem, newItems[i], [], ['contextObject', 'repository']);
if (!firstItem) {
// add doc as attachment
newItem.attachments.push({ document: doc });
newItem.complete();
firstItem = true;
}
});
search.setHandler("done", function (_obj) {
// if we didn't find anything, use what we had before (even if it
// lacks the creator)
if (!firstItem) {
newItems[i].complete();
}
// call next
completeItems(newItems, useIndices, couldUseFullItems);
});
// Don't throw on error
search.setHandler("error", function () {});
search.setHandler("translators", function (obj, translators) {
if (translators.length) {
search.setTranslator(translators);
search.translate();
}
else {
// add doc as attachment
newItems[i].attachments.push({ document: doc });
newItems[i].complete();
// call next
completeItems(newItems, useIndices, couldUseFullItems);
}
});
search.setSearch(newItems[i]);
search.getTranslators();
}
else {
// add doc as attachment
newItems[i].attachments.push({ document: doc });
newItems[i].complete();
// call next
completeItems(newItems, useIndices, couldUseFullItems);
}
}
function doWeb(doc, _url) {
var newItems = [];
var needFullItems = [];
var couldUseFullItems = [];
var spans = doc.querySelectorAll('span.Z3988[title]');
for (let span of spans) {
var spanTitle = span.title;
var newItem = new Zotero.Item();
newItem.repository = false; // do not save repository
if (Zotero.Utilities.parseContextObject(spanTitle, newItem)) {
if (newItem.title) {
if (!newItem.creators.length) {
// if we have a title but little other identifying
// information, say we'll get full item later
newItem.contextObject = spanTitle;
couldUseFullItems[newItems.length] = true;
}
// title and creators are minimum data to avoid looking up
newItems.push(newItem);
}
else {
// retrieve full item
newItem.contextObject = spanTitle;
needFullItems.push(newItem);
}
}
}
Zotero.debug(needFullItems);
if (needFullItems.length) {
// retrieve full items asynchronously
Zotero.wait();
retrieveNextCOinS(needFullItems, newItems, couldUseFullItems, doc);
}
else {
completeCOinS(newItems, couldUseFullItems, doc);
}
}
function doExport() {
var item;
var co;
while ((item = Zotero.nextItem())) {
co = Zotero.Utilities.createContextObject(item, "1.0");
if (co) {
Zotero.write("<span class='Z3988' title='" + Zotero.Utilities.htmlSpecialChars(co) + "'></span>\n");
}
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://husdal.com/2011/06/19/disruptions-in-supply-networks/",
"items": [
{
"itemType": "journalArticle",
"title": "Disruptions and supply networks: a multi-level, multi-theoretical relational perspective",
"creators": [
{
"firstName": "Phil",
"lastName": "Greening",
"creatorType": "author"
},
{
"firstName": "Christine",
"lastName": "Rutherford",
"creatorType": "author"
}
],
"date": "2011",
"issue": "1",
"pages": "104-126",
"publicationTitle": "International Journal of Logistics Management",
"shortTitle": "Disruptions and supply networks",
"volume": "22",
"attachments": [
{
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://gamblershouse.wordpress.com/2011/06/19/the-view-from-dolores/",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.worldcat.org/title/genealogy-of-the-royal-family-of-great-britain-shewing-the-descent-of-queen-victoria-through-five-of-the-saxon-kings-who-were-crowned-at-kingston-upon-thames/oclc/559794003&referer=brief_results",
"items": [
{
"itemType": "book",
"title": "The Genealogy of the Royal Family of Great Britain, shewing the descent of ... Queen Victoria, through five of the Saxon Kings who were crowned ... at Kingston-upon-Thames.",
"creators": [
{
"lastName": "Royal Families (England)",
"isInstitution": true
},
{
"lastName": "GENEALOGY",
"creatorType": "author"
}
],
"date": "1850",
"place": "London",
"publisher": "C. & E. Layton",
"attachments": [
{
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
248Sean Takats, Michael Berkowitz, Sylvain Machefert, Sebastian Karcher, Stéphane Gully, Mathis Eon^https?://[^/]+(/[^/]+)*//?DB=\d/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2013 Sean Takats, Michael Berkowitz, Sylvain Machefert, Sebastian Karcher, Stéphane Gully
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function getSearchResults(doc) {
return doc.evaluate(
"//table[@summary='short title presentation']/tbody/tr//td[contains(@class, 'rec_title')]|//table[@summary='hitlist']/tbody/tr//td[contains(@class, 'hit') and a/@href]",
doc, null, XPathResult.ANY_TYPE, null);
}
function detectWeb(doc, _url) {
var multxpath = "//span[@class='tab1']|//td[@class='tab1']";
var elt;
if ((elt = doc.evaluate(multxpath, doc, null, XPathResult.ANY_TYPE, null).iterateNext())) {
var content = elt.textContent;
// Z.debug(content)
if ((content == "Liste des résultats") || (content == "shortlist") || (content == 'Kurzliste') || content == 'titellijst') {
if (!getSearchResults(doc).iterateNext()) {
// no results. Does not seem to be necessary, but just in case.
return false;
}
return "multiple";
}
else if ((content == "Notice détaillée") || (content == "title data") || (content == 'Titeldaten') || (content == 'Vollanzeige') || (content == 'Besitznachweis(e)') || (content == 'full title') || (content == 'Titelanzeige' || (content == 'titelgegevens'))) {
var xpathimage = "//span[@class='rec_mat_long']/img|//table[contains(@summary, 'presentation')]/tbody/tr/td/img";
if ((elt = doc.evaluate(xpathimage, doc, null, XPathResult.ANY_TYPE, null).iterateNext())) {
var type = elt.getAttribute('src');
// Z.debug(type);
if (type.includes('article.')) {
// book section and journal article have the same icon
// we can check if there is an ISBN
if (ZU.xpath(doc, '//tr/td[@class="rec_lable" and .//span[starts-with(text(), "ISBN")]]').length) {
return 'bookSection';
}
return "journalArticle";
}
else if (type.includes('audiovisual.')) {
return "film";
}
else if (type.includes('book.')) {
return "book";
}
else if (type.includes('handwriting.')) {
return "manuscript";
}
else if (type.includes('sons.') || type.includes('sound.') || type.includes('score')) {
return "audioRecording";
}
else if (type.includes('thesis.')) {
return "thesis";
}
else if (type.includes('map.')) {
return "map";
}
}
return "book";
}
}
return false;
}
function scrape(doc, url) {
var zXpath = '//span[@class="Z3988"]';
var eltCoins = doc.evaluate(zXpath, doc, null, XPathResult.ANY_TYPE, null).iterateNext();
var newItem = new Zotero.Item();
if (eltCoins) {
var coins = eltCoins.getAttribute('title');
// newItem.repository = "SUDOC"; // do not save repository
// make sure we don't get stuck because of a COinS error
try {
Zotero.Utilities.parseContextObject(coins, newItem);
}
catch (e) {
Z.debug("error parsing COinS");
}
/** we need to clean up the results a bit **/
// pages should not contain any extra characters like p. or brackets (what about supplementary pages?)
if (newItem.pages) newItem.pages = newItem.pages.replace(/[^\d-]+/g, '');
}
newItem.itemType = detectWeb(doc, url);
newItem.libraryCatalog = "Library Catalog - " + doc.location.host;
// We need to correct some informations where COinS is wrong
var rowXpath = '//tr[td[@class="rec_lable"]]';
if (!ZU.xpathText(doc, rowXpath)) {
rowXpath = '//tr[td[@class="preslabel"]]';
}
var tableRows = doc.evaluate(rowXpath, doc, null, XPathResult.ANY_TYPE, null);
var tableRow, role;
var authorpresent = false;
while ((tableRow = tableRows.iterateNext())) {
var field = doc.evaluate('./td[@class="rec_lable"]|./td[@class="preslabel"]', tableRow, null, XPathResult.ANY_TYPE, null).iterateNext().textContent;
var value = doc.evaluate('./td[@class="rec_title"]|./td[@class="presvalue"]', tableRow, null, XPathResult.ANY_TYPE, null).iterateNext().textContent;
field = ZU.trimInternal(ZU.superCleanString(field.trim()))
.toLowerCase().replace(/\(s\)/g, '');
// With COins, we only get one author - so we start afresh. We do so in two places: Here if there is an author fied
// further down for other types of author fields. This is so we don't overwrite the author array when we have both an author and
// another persons field (cf. the Scheffer/Schachtschabel/Blume/Thiele test)
if (field == "author" || field == "auteur" || field == "verfasser") {
authorpresent = true;
newItem.creators = [];
}
// Z.debug(field + ": " + value)
// french, english, german, and dutch interface
var m;
var i;
switch (field) {
case 'auteur':
case 'author':
case 'medewerker':
case 'beteiligt':
case 'verfasser':
case 'other persons':
case 'sonst. personen':
case 'collaborator':
case 'beiträger': // turn into contributor
case 'contributor':
if (field == 'medewerker' || field == 'beteiligt' || field == 'collaborator') role = "editor";
if (field == 'beiträger' || field == 'contributor') role = "contributor";
// we may have set this in the title field below
else if (!role) role = "author";
if (!authorpresent) newItem.creators = [];
if (authorpresent && (field == "sonst. personen" || field == "other persons")) role = "editor";
// sudoc has authors on separate lines and with different format - use this
var authors;
var author;
if (url.search(/sudoc\.(abes\.)?fr/) != -1) {
authors = ZU.xpath(tableRow, './td[2]/div');
for (i in authors) {
var authorText = authors[i].textContent;
var authorFields = authorText.match(/^\s*(.+?)\s*(?:\((.+?)\)\s*)?\.\s*([^.]+)\s*$/);
var authorFunction = '';
if (authorFields) {
authorFunction = authorFields[3];
authorText = authorFields[1];
var extra = authorFields[2];
}
if (authorFunction) {
authorFunction = Zotero.Utilities.superCleanString(authorFunction);
}
var zoteroFunction = '';
// TODO : Add other author types
if (authorFunction == 'Traduction') {
zoteroFunction = 'translator';
}
else if ((authorFunction.substr(0, 7) == 'Éditeur') || authorFunction == "Directeur de la publication") {
// once Zotero suppports it, distinguish between editorial director and editor here;
zoteroFunction = 'editor';
}
else if ((newItem.itemType == "thesis") && (authorFunction != 'Auteur')) {
zoteroFunction = "contributor";
}
else {
zoteroFunction = 'author';
}
if (authorFunction == "Université de soutenance" || authorFunction == "Organisme de soutenance") {
// If the author function is "université de soutenance" it means that this author has to be in "university" field
newItem.university = authorText;
newItem.city = extra; // store for later
}
else {
author = authorText.replace(/[*(].+[)*]/, "");
newItem.creators.push(Zotero.Utilities.cleanAuthor(author, zoteroFunction, true));
}
}
}
else {
authors = value.split(/\s*;\s*/);
for (i in authors) {
if (role == "author") if (authors[i].search(/[[()]Hrsg\.?[\])]/) != -1) role = "editor";
author = authors[i].replace(/[*([].+[)*\]]/, "");
var comma = author.includes(",");
newItem.creators.push(Zotero.Utilities.cleanAuthor(author, role, comma));
}
}
break;
case 'edition':
case 'ausgabe':
var edition;
if ((edition = value.match(/(\d+)[.\s]+(Aufl|ed|éd)/))) {
newItem.edition = edition[1];
}
else newItem.edition = value;
break;
case 'dans':
case 'in':
// Looks like we can do better with titles than COinS
// journal/book titles are always first
// Several different formats for ending a title
// end with "/" http://gso.gbv.de/DB=2.1/PPNSET?PPN=732386977
// http://gso.gbv.de/DB=2.1/PPNSET?PPN=732443563
// end with ". -" followed by publisher information http://gso.gbv.de/DB=2.1/PPNSET?PPN=729937798
// end with ", ISSN" (maybe also ISBN?) http://www.sudoc.abes.fr/DB=2.1/SET=6/TTL=1/SHW?FRST=10
newItem.publicationTitle = ZU.superCleanString(
value.substring(0, value.search(/(?:\/|,\s*IS[SB]N\b|\.\s*-)/i)));
// ISSN/ISBN are easyto find
// http://gso.gbv.de/DB=2.1/PPNSET?PPN=732386977
// http://gso.gbv.de/DB=2.1/PPNSET?PPN=732443563
var issnRE = /\b(is[sb]n)\s+([-\d\sx]+)/i; // this also matches ISBN
m = value.match(issnRE);
if (m) {
if (m[1].toUpperCase() == 'ISSN' && !newItem.ISSN) {
newItem.ISSN = m[2].replace(/\s+/g, '');
}
else if (m[1].toUpperCase() == 'ISBN' && !newItem.ISBN) {
newItem.ISBN = m[2].replace(/\s+/g, '');
}
}
// publisher information can be preceeded by ISSN/ISBN
// typically / ed. by ****. - city, country : publisher
// http://gso.gbv.de/DB=2.1/PPNSET?PPN=732386977
var n = value;
if (m) {
n = value.split(m[0])[0];
// first editors
var ed = n.split('/'); // editors only appear after /
if (ed.length > 1) {
n = n.substr(ed[0].length + 1); // trim off title
ed = ed[1].split('-', 1)[0];
n = n.substr(ed.length + 1); // trim off editors
if (ed.includes('ed. by')) { // not http://gso.gbv.de/DB=2.1/PPNSET?PPN=732443563
ed = ed.replace(/^\s*ed\.\s*by\s*|[.\s]+$/g, '')
.split(/\s*(?:,|and)\s*/); // http://gso.gbv.de/DB=2.1/PPNSET?PPN=731519299
for (i = 0, m = ed.length; i < m; i++) {
newItem.creators.push(ZU.cleanAuthor(ed[i], 'editor', false));
}
}
}
var loc = n.split(':');
if (loc.length == 2) {
if (!newItem.publisher) newItem.publisher = loc[1].replace(/^\s+|[\s,]+$/, '');
if (!newItem.place) newItem.place = loc[0].replace(/\s*\[.+?\]\s*/, '').trim();
}
// we can now drop everything up through the last ISSN/ISBN
n = value.split(issnRE).pop();
}
// For the rest, we have trouble with some articles, like
// http://www.sudoc.abes.fr/DB=2.1/SRCH?IKT=12&TRM=013979922
// we'll only take the last set of year, volume, issue
// There are also some other problems, like
// "How to cook a russian goose / by Robert Cantwell" at http://opc4.kb.nl
// page ranges are last
// but they can be indicated by p. or page (or s?)
// http://www.sudoc.abes.fr/DB=2.1/SET=6/TTL=1/SHW?FRST=10
// http://opc4.kb.nl/DB=1/SET=2/TTL=1/SHW?FRST=7
// we'll just assume there are always pages at the end and ignore the indicator
n = n.split(',');
var pages = n.pop().match(/\d+(?:\s*-\s*\d+)/);
if (pages && !newItem.pages) {
newItem.pages = pages[0];
}
n = n.join(','); // there might be empty values that we're joining here
// could filter them out, but IE <9 does not support Array.filter, so we won't bother
// we're left possibly with some sort of formatted volume year issue string
// it's very unlikely that we will have 4 digit volumes starting with 19 or 20, so we'll just grab the year first
var dateRE = /\b(?:19|20)\d{2}\b/g;
var date, lastDate;
while ((date = dateRE.exec(n))) {
lastDate = date[0];
n = n.replace(lastDate, ''); // get rid of year
}
if (lastDate) {
if (!newItem.date) newItem.date = lastDate;
}
else { // if there's no year, panic and stop trying
break;
}
// volume comes before issue
// but there can sometimes be other numeric stuff that we have
// not filtered out yet, so we just take the last two numbers
// e.g. http://gso.gbv.de/DB=2.1/PPNSET?PPN=732443563
var issvolRE = /[\d/]+/g; // in French, issues can be 1/4 (e.g. http://www.sudoc.abes.fr/DB=2.1/SRCH?IKT=12&TRM=013979922)
var num, vol, issue;
while ((num = issvolRE.exec(n))) {
if (issue != undefined) {
vol = issue;
issue = num[0];
}
else if (vol != undefined) {
issue = num[0];
}
else {
vol = num[0];
}
}
if (vol != undefined && !newItem.volume) {
newItem.volume = vol;
}
if (issue != undefined && !newItem.issue) {
newItem.issue = issue;
}
break;
case 'serie':
case 'collection':
case 'series':
case 'schriftenreihe':
case 'reeks':
// The series isn't in COinS
var series = value;
var volRE = /;[^;]*?(\d+)\s*$/;
if ((m = series.match(volRE))) {
if (ZU.fieldIsValidForType('seriesNumber', newItem.itemType)) { // e.g. http://gso.gbv.de/DB=2.1/PPNSET?PPN=729937798
if (!newItem.seriesNumber) newItem.seriesNumber = m[1];
}
else if (!newItem.volume) {
// e.g. http://www.sudoc.fr/05625248X
newItem.volume = m[1];
}
series = series.replace(volRE, '').trim();
}
newItem.seriesTitle = newItem.series = series; // see http://forums.zotero.org/discussion/18322/series-vs-series-title/
break;
case 'titre':
case 'title':
case 'titel':
case 'title of article':
case 'aufsatztitel':
var title = value.split(" / ");
if (title[1]) {
// Z.debug("Title1: "+title[1])
// store this to convert authors to editors.
// Run separate if in case we'll do this for more languages
// this assumes title precedes author - need to make sure that's the case
if (title[1].match(/^\s*(ed. by|edited by|hrsg\. von|édité par)/)) role = "editor";
}
if (!newItem.title) {
newItem.title = title[0];
}
newItem.title = newItem.title.replace(/\s+:/, ":").replace(/\s*\[[^\]]+\]/g, "");
break;
case 'periodical':
case 'zeitschrift':
// for whole journals
var journaltitle = value.split(" / ")[0];
break;
case 'year':
case 'jahr':
case 'jaar':
case 'date':
newItem.date = value; // we clean this up below
break;
case 'language':
case 'langue':
case 'sprache':
// Language not defined in COinS
newItem.language = value;
break;
case 'editeur':
case 'published':
case 'publisher':
case 'ort/jahr':
case 'uitgever':
case 'publication':
// ignore publisher for thesis, so that it does not overwrite university
if (newItem.itemType == 'thesis' && newItem.university) break;
m = value.split(';')[0]; // hopefully publisher is always first (e.g. http://www.sudoc.fr/128661828)
var place = m.split(':', 1)[0];
var pub = m.substring(place.length + 1); // publisher and maybe year
if (!newItem.city) {
place = place.replace(/[[\]]/g, '').trim();
if (place.toUpperCase() != 'S.L.') { // place is not unknown
newItem.city = place;
}
}
if (!newItem.publisher) {
if (!pub) break; // not sure what this would be or look like without publisher
pub = pub.replace(/\[.*?\]/g, '') // drop bracketted info, which looks to be publisher role
.split(',');
if (pub[pub.length - 1].search(/\D\d{4}\b/) != -1) { // this is most likely year, we can drop it
pub.pop();
}
if (pub.length) newItem.publisher = pub.join(','); // in case publisher contains commas
}
if (!newItem.date) { // date is always (?) last on the line
m = value.match(/\D(\d{4})\b[^,;]*$/); // could be something like c1986
if (m) newItem.date = m[1];
}
break;
case 'pays':
case 'country':
case 'land':
if (!newItem.country) {
newItem.country = value;
}
break;
case 'description':
case 'extent':
case 'umfang':
case 'omvang':
case 'kollation':
case 'collation':
value = ZU.trimInternal(value); // Since we assume spaces
// We're going to extract the number of pages from this field
m = value.match(/(\d+) vol\./);
// sudoc in particular includes "1 vol" for every book; We don't want that info
if (m && m[1] != 1) {
newItem.numberOfVolumes = m[1];
}
// make sure things like 2 partition don't match, but 2 p at the end of the field do
// f., p., and S. are "pages" in various languages
// For multi-volume works, we expect formats like:
// x-109 p., 510 p. and X, 106 S.; 123 S.
var numPagesRE = /\[?((?:[ivxlcdm\d]+[ ,-]*)+)\]?\s+[fps]\b/ig,
numPages = [];
while ((m = numPagesRE.exec(value))) {
numPages.push(m[1].replace(/ /g, '')
.replace(/[-,]/g, '+')
.toLowerCase() // for Roman numerals
);
}
if (numPages.length) newItem.numPages = numPages.join('; ');
// running time for movies:
m = value.match(/\d+\s*min/);
if (m) {
newItem.runningTime = m[0];
}
break;
case 'résumé':
case 'abstract':
case 'inhalt':
case 'samenvatting':
newItem.abstractNote = value;
break;
case 'notes':
case 'note':
case 'anmerkung':
case 'snnotatie':
case 'annotatie':
newItem.notes.push({
note: doc.evaluate('./td[@class="rec_title"]|./td[@class="presvalue"]', tableRow, null, XPathResult.ANY_TYPE, null).iterateNext().innerHTML
});
break;
case 'sujets':
case 'subjects':
case 'subject heading':
case 'trefwoord':
case 'schlagwörter':
case 'gattung/fach':
case 'category/subject':
var subjects = doc.evaluate('./td[2]/div', tableRow, null, XPathResult.ANY_TYPE, null);
// subjects on separate div lines
if (ZU.xpath(tableRow, './td[2]/div').length > 1) {
var subject;
while ((subject = subjects.iterateNext())) {
var subjectContent = subject.textContent;
subjectContent = subjectContent.replace(/^\s*/, "");
subjectContent = subjectContent.replace(/\s*$/, "");
subjectContent = subjectContent.split(/\s*;\s*/);
for (i in subjectContent) {
if (subjectContent != "") {
newItem.tags.push(Zotero.Utilities.trimInternal(subjectContent[i]));
}
}
}
}
else {
// subjects separated by newline or ; in same div.
subjects = value.trim().split(/\s*[;\n]\s*/);
for (i in subjects) {
subjects[i] = subjects[i].trim().replace(/\*/g, "").replace(/^\s*\/|\/\s*$/, "");
if (subjects[i].length != 0) newItem.tags.push(Zotero.Utilities.trimInternal(subjects[i]));
}
}
break;
case 'thèse':
case 'dissertation':
newItem.type = value.split(/ ?:/)[0];
break;
case "identifiant pérenne de la notice":
case 'persistent identifier of the record':
case 'persistent identifier des datensatzes':
var permalink = value; // we handle this at the end
break;
case 'doi':
newItem.DOI = value.trim();
break;
case 'isbn':
var isbns = value.trim().split(/[\n,]/);
var isbn = [];
for (i in isbns) {
m = isbns[i].match(/[-x\d]{10,}/i); // this is necessary until 3.0.12
if (!m) continue;
if (m[0].replace(/-/g, '').search(/^(?:\d{9}|\d{12})[\dx]$/i) != -1) {
isbn.push(m[0]);
}
}
// we should eventually check for duplicates, but right now this seems fine;
newItem.ISBN = isbn.join(", ");
break;
case 'signatur':
newItem.callNumber = value;
break;
case 'worldcat':
// SUDOC only
var worldcatLink = doc.evaluate('./td[2]//a', tableRow, null, XPathResult.ANY_TYPE, null).iterateNext();
if (worldcatLink) {
newItem.attachments.push({
url: worldcatLink.href,
title: 'Worldcat Link',
mimeType: 'text/html',
snapshot: false
});
}
break;
case 'links zum titel':
case 'volltext':
case 'link zum volltext':
case 'link':
case 'zugang':
case 'accès en ligne':
// Some time links are inside the third cell : https://kxp.k10plus.de/DB=2.1/DB=2.1/PPNSET?PPN=600530787
url = doc.evaluate('./td[3]//a | ./td[2]//a', tableRow, null, XPathResult.ANY_TYPE, null).iterateNext();
newItem.url = url;
break;
}
}
// merge city & country where they're separate
var location = [];
if (newItem.city) location.push(newItem.city.trim());
newItem.city = undefined;
if (newItem.country) location.push(newItem.country.trim());
newItem.country = undefined;
// join and remove the "u.a." common in German libraries
if (location.length) newItem.place = location.join(', ').replace(/\[?u\.a\.\]?\s*$/, "");
// remove u.a. and [u.a.] from publisher
if (newItem.publisher) {
newItem.publisher = newItem.publisher.replace(/\[?u\.a\.\]?\s*$/, "");
}
// clean up date, which may come from various places; We're conservative here and are just cleaning up c1996 and [1995] and combinations thereof
if (newItem.date) {
newItem.date = newItem.date.replace(/[[c]+\s*(\d{4})\]?/, "$1");
}
// if we didn't get a permalink, look for it in the entire page
if (!permalink) {
permalink = ZU.xpathText(doc, '//a[./img[contains(@src,"/permalink") or contains(@src,"/zitierlink")]][1]/@href');
}
// switch institutional authors to single field;
for (i = 0; i < newItem.creators.length; i++) {
if (!newItem.creators[i].firstName) {
newItem.creators[i].fieldMode = true;
}
}
if (permalink) {
newItem.attachments.push({
title: 'Link to Library Catalog Entry',
url: permalink,
mimeType: 'text/html',
snapshot: false
});
// also add snapshot using permalink so that right-click -> View Online works
newItem.attachments.push({
title: 'Library Catalog Entry Snapshot',
url: permalink,
mimeType: 'text/html',
snapshot: true
});
}
else {
// add snapshot
newItem.attachments.push({
title: 'Library Catalog Entry Snapshot',
document: doc
});
}
if (!newItem.title) newItem.title = journaltitle;
newItem.complete();
}
function doWeb(doc, url) {
var type = detectWeb(doc, url);
if (type == "multiple") {
var newUrl = doc.evaluate('//base/@href', doc, null, XPathResult.ANY_TYPE, null).iterateNext().nodeValue;
// fix for sudoc, see #1529
newUrl = newUrl.replace(/sudoc\.abes\.fr\/cbs\/\/?DB=/, 'sudoc.abes.fr/cbs/xslt/DB=');
var elmts = getSearchResults(doc);
var elmt = elmts.iterateNext();
var availableItems = {};
do {
var link = doc.evaluate(".//a/@href", elmt, null, XPathResult.ANY_TYPE, null).iterateNext().nodeValue;
var searchTitle = doc.evaluate(".//a", elmt, null, XPathResult.ANY_TYPE, null).iterateNext().textContent;
availableItems[newUrl + link] = searchTitle;
} while ((elmt = elmts.iterateNext()));
Zotero.selectItems(availableItems, function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://www.sudoc.abes.fr/cbs/xslt/DB=2.1//CMD?ACT=SRCHA&IKT=1016&SRT=RLV&TRM=labor",
"items": "multiple"
},
{
"type": "web",
"url": "http://www.sudoc.abes.fr/cbs/xslt/DB=2.1//SRCH?IKT=12&TRM=147745608",
"items": [
{
"itemType": "book",
"title": "Souffrance au travail dans les grandes entreprises",
"creators": [
{
"firstName": "Jacques",
"lastName": "Delga",
"creatorType": "editor"
},
{
"firstName": "Fabrice",
"lastName": "Bien",
"creatorType": "author"
}
],
"date": "2010",
"ISBN": "9782747217293",
"language": "français",
"libraryCatalog": "Library Catalog - www.sudoc.abes.fr",
"numPages": "290",
"place": "Paris, France",
"publisher": "Eska",
"attachments": [
{
"title": "Worldcat Link",
"mimeType": "text/html",
"snapshot": false
},
{
"title": "Link to Library Catalog Entry",
"mimeType": "text/html",
"snapshot": false
},
{
"title": "Library Catalog Entry Snapshot",
"mimeType": "text/html",
"snapshot": true
}
],
"tags": [
{
"tag": "Conditions de travail -- France"
},
{
"tag": "Harcèlement -- France"
},
{
"tag": "Psychologie du travail"
},
{
"tag": "Stress lié au travail -- France"
},
{
"tag": "Violence en milieu de travail"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.sudoc.abes.fr/cbs/xslt/DB=2.1//SRCH?IKT=12&TRM=156726319",
"items": [
{
"itemType": "book",
"title": "Zotero: a guide for librarians, researchers and educators",
"creators": [
{
"firstName": "Jason",
"lastName": "Puckett",
"creatorType": "author"
}
],
"date": "2011",
"ISBN": "9780838985892",
"language": "anglais",
"libraryCatalog": "Library Catalog - www.sudoc.abes.fr",
"numPages": "159",
"place": "Chicago, Etats-Unis d'Amérique",
"publisher": "Association of College and Research Libraries",
"shortTitle": "Zotero",
"attachments": [
{
"title": "Worldcat Link",
"mimeType": "text/html",
"snapshot": false
},
{
"title": "Link to Library Catalog Entry",
"mimeType": "text/html",
"snapshot": false
},
{
"title": "Library Catalog Entry Snapshot",
"mimeType": "text/html",
"snapshot": true
}
],
"tags": [
{
"tag": "Bibliographie -- Méthodologie -- Informatique"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.sudoc.abes.fr/cbs/xslt/DB=2.1//SRCH?IKT=12&TRM=093838956",
"items": [
{
"itemType": "thesis",
"title": "Facteurs pronostiques des lymphomes diffus lymphocytiques",
"creators": [
{
"firstName": "Brigitte",
"lastName": "Lambert",
"creatorType": "author"
},
{
"firstName": "Pierre",
"lastName": "Morel",
"creatorType": "contributor"
}
],
"date": "2004",
"language": "français",
"libraryCatalog": "Library Catalog - www.sudoc.abes.fr",
"numPages": "87",
"place": "Lille ; 1969-2017, France",
"thesisType": "Thèse d'exercice",
"university": "Université du droit et de la santé",
"attachments": [
{
"title": "Worldcat Link",
"mimeType": "text/html",
"snapshot": false
},
{
"title": "Link to Library Catalog Entry",
"mimeType": "text/html",
"snapshot": false
},
{
"title": "Library Catalog Entry Snapshot",
"mimeType": "text/html",
"snapshot": true
}
],
"tags": [
{
"tag": "Leucémie chronique lymphocytaire à cellules B -- Dissertation universitaire"
},
{
"tag": "Leucémie lymphoïde chronique"
},
{
"tag": "Lymphocytes B"
},
{
"tag": "Lymphocytes B -- Dissertation universitaire"
},
{
"tag": "Lymphome malin non hodgkinien -- Dissertation universitaire"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.sudoc.abes.fr/cbs/xslt/DB=2.1//SRCH?IKT=12&TRM=127261664",
"items": [
{
"itemType": "journalArticle",
"title": "Mobile technology in the village: ICTs, culture, and social logistics in India",
"creators": [
{
"firstName": "Sirpa",
"lastName": "Tenhunen",
"creatorType": "author"
}
],
"date": "impr. 2008",
"ISSN": "1359-0987",
"issue": "3",
"language": "anglais",
"libraryCatalog": "Library Catalog - www.sudoc.abes.fr",
"pages": "515-534",
"publicationTitle": "Journal of the Royal Anthropological Institute",
"shortTitle": "Mobile technology in the village",
"volume": "14",
"attachments": [
{
"title": "Link to Library Catalog Entry",
"mimeType": "text/html",
"snapshot": false
},
{
"title": "Library Catalog Entry Snapshot",
"mimeType": "text/html",
"snapshot": true
}
],
"tags": [
{
"tag": "Communes rurales -- Et la technique -- Aspect social -- Inde"
},
{
"tag": "Conditions sociales -- Inde -- 20e siècle"
},
{
"tag": "Téléphonie mobile -- Aspect social -- Inde"
}
],
"notes": [
{
"note": "<div><span>Contient un résumé en anglais et en français. - in Journal of the Royal Anthropological Institute, vol. 14, no. 3 (Septembre 2008)</span></div>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.sudoc.abes.fr/cbs/xslt/DB=2.1//SRCH?IKT=12&TRM=128661828",
"items": [
{
"itemType": "film",
"title": "Exploring the living cell",
"creators": [
{
"firstName": "Véronique",
"lastName": "Kleiner",
"creatorType": "author"
},
{
"firstName": "Christian",
"lastName": "Sardet",
"creatorType": "author"
}
],
"date": "cop. 2006",
"abstractNote": "Ensemble de 20 films permettant de découvrir les protagonistes de la découverte de la théorie cellulaire, l'évolution, la diversité, la structure et le fonctionnement des cellules. Ce DVD aborde aussi en images les recherches en cours dans des laboratoires internationaux et les débats que ces découvertes sur la cellule provoquent. Les films sont regroupés en 5 chapitres complétés de fiches informatives et de liens Internet.",
"distributor": "CNRS Images",
"language": "anglais",
"libraryCatalog": "Library Catalog - www.sudoc.abes.fr",
"runningTime": "180 min",
"url": "http://bioclips.com/dvd/index.html",
"attachments": [
{
"title": "Worldcat Link",
"mimeType": "text/html",
"snapshot": false
},
{
"title": "Link to Library Catalog Entry",
"mimeType": "text/html",
"snapshot": false
},
{
"title": "Library Catalog Entry Snapshot",
"mimeType": "text/html",
"snapshot": true
}
],
"tags": [
{
"tag": "Biogenèse des organelles"
},
{
"tag": "Biologie cellulaire"
},
{
"tag": "Cell membranes"
},
{
"tag": "Cells"
},
{
"tag": "Cells -- Evolution"
},
{
"tag": "Cells -- Moral and ethical aspects"
},
{
"tag": "Cellules"
},
{
"tag": "Cellules -- Aspect moral"
},
{
"tag": "Cellules -- Évolution"
},
{
"tag": "Cytologie -- Recherche"
},
{
"tag": "Cytology -- Research"
},
{
"tag": "Membrane cellulaire"
},
{
"tag": "QH582.4"
},
{
"tag": "Ultrastructure"
}
],
"notes": [
{
"note": "<div><span>Les différents films qui composent ce DVD sont réalisés avec des prises de vue réelles, ou des images microcinématographiques ou des images de synthèse, ou des images fixes tirées de livres. La bande son est essentiellement constituée de commentaires en voix off et d'interviews (les commentaires sont en anglais et les interviews sont en langue originales : anglais, français ou allemand, sous-titrée en anglais). - Discovering the cell : participation de Paul Nurse (Rockefeller university, New York), Claude Debru (ENS : Ecole normale supérieure, Paris) et Werner Franke (DKFZ : Deutsches Krebsforschungszentrum, Heidelberg) ; Membrane : participation de Kai Simons, Soizig Le Lay et Lucas Pelkmans (MPI-CBG : Max Planck institute of molecular cell biology and genetics, Dresden) ; Signals and calcium : participation de Christian Sardet et Alex Mc Dougall (CNRS / UPMC : Centre national de la recherche scientifique / Université Pierre et Marie Curie, Villefrance-sur-Mer) ; Membrane traffic : participation de Thierry Galli et Phillips Alberts (Inserm = Institut national de la santé et de la recherche médicale, Paris) ; Mitochondria : participation de Michael Duchen, Rémi Dumollard et Sean Davidson (UCL : University college of London) ; Microfilaments : participation de Cécile Gauthier Rouvière et Alexandre Philips (CNRS-CRBM : CNRS-Centre de recherche de biochimie macromoléculaire, Montpellier) ; Microtubules : participation de Johanna Höög, Philip Bastiaens et Jonne Helenius (EMBL : European molecular biology laboratory, Heidelberg) ; Centrosome : participation de Michel Bornens et Manuel Théry (CNRS-Institut Curie, Paris) ; Proteins : participation de Dino Moras et Natacha Rochel-Guiberteau (IGBMC : Institut de génétique et biologie moléculaire et cellulaire, Strasbourg) ; Nocleolus and nucleus : participation de Daniele Hernandez-Verdun, Pascal Rousset, Tanguy Lechertier (CNRS-UPMC / IJM : Institut Jacques Monod, Paris) ; The cell cycle : participation de Paul Nurse (Rockefeller university, New York) ; Mitosis and chromosomes : participation de Jan Ellenberg, Felipe Mora-Bermudez et Daniel Gerlich (EMBL, Heidelberg) ; Mitosis and spindle : participation de Eric Karsenti, Maiwen Caudron et François Nedelec (EMBL, Heidelberg) ; Cleavage : participation de Pierre Gönczy, Marie Delattre et Tu Nguyen Ngoc (Isrec : Institut suisse de recherche expérimentale sur le cancer, Lausanne) ; Cellules souches : participation de Göran Hermerén (EGE : European group on ethics in science and new technologies, Brussels) ; Cellules libres : participation de Jean-Jacques Kupiec (ENS, Paris) ; Cellules et évolution : participation de Paule Nurse (Rockefeller university, New York)</span></div>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.sudoc.abes.fr/cbs/xslt/DB=2.1//SRCH?IKT=12&TRM=098846663",
"items": [
{
"itemType": "map",
"title": "Wind and wave atlas of the Mediterranean sea",
"creators": [],
"date": "2004",
"ISBN": "9782110956743",
"language": "anglais",
"libraryCatalog": "Library Catalog - www.sudoc.abes.fr",
"publisher": "Western European Union, Western European armaments organisation research cell",
"attachments": [
{
"title": "Worldcat Link",
"mimeType": "text/html",
"snapshot": false
},
{
"title": "Link to Library Catalog Entry",
"mimeType": "text/html",
"snapshot": false
},
{
"title": "Library Catalog Entry Snapshot",
"mimeType": "text/html",
"snapshot": true
}
],
"tags": [
{
"tag": "Méditerranée (mer)"
},
{
"tag": "Météorologie maritime -- Méditerranée (mer)"
},
{
"tag": "Vagues -- Méditerranée (mer)"
},
{
"tag": "Vent de mer -- Méditerranée (mer)"
},
{
"tag": "Vents -- Méditerranée (mer)"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.sudoc.abes.fr/cbs/xslt/DB=2.1//SRCH?IKT=12&TRM=05625248X",
"items": [
{
"itemType": "audioRecording",
"title": "English music for mass and offices (II) and music for other ceremonies",
"creators": [
{
"firstName": "Ernest H.",
"lastName": "Sanders",
"creatorType": "editor"
},
{
"firstName": "Frank Llewellyn",
"lastName": "Harrison",
"creatorType": "editor"
},
{
"firstName": "Peter M.",
"lastName": "Lefferts",
"creatorType": "editor"
}
],
"date": "1986",
"label": "Éditions de l'oiseau-lyre",
"language": "latin",
"libraryCatalog": "Library Catalog - www.sudoc.abes.fr",
"place": "Monoco, Monaco",
"attachments": [
{
"title": "Worldcat Link",
"mimeType": "text/html",
"snapshot": false
},
{
"title": "Link to Library Catalog Entry",
"mimeType": "text/html",
"snapshot": false
},
{
"title": "Library Catalog Entry Snapshot",
"mimeType": "text/html",
"snapshot": true
}
],
"tags": [
{
"tag": "Messes (musique) -- Partitions"
},
{
"tag": "Motets -- Partitions"
}
],
"notes": [
{
"note": "\n<div><span>Modern notation. - \"Critical apparatus\": p. 174-243</span></div>\n<div><span> </span></div>\n"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://gso.gbv.de/DB=2.1/PPNSET?PPN=732443563",
"items": [
{
"itemType": "journalArticle",
"title": "A new method to obtain a consensus ranking of a region's vintages' quality",
"creators": [
{
"firstName": "José",
"lastName": "Borges",
"creatorType": "author"
},
{
"firstName": "António C.",
"lastName": "Real",
"creatorType": "author"
},
{
"firstName": "J. Sarsfield",
"lastName": "Cabral",
"creatorType": "author"
},
{
"firstName": "Gregory V.",
"lastName": "Jones",
"creatorType": "author"
}
],
"date": "2012",
"ISSN": "1931-4361",
"issue": "1",
"libraryCatalog": "Library Catalog - kxp.k10plus.de",
"pages": "88-107",
"publicationTitle": "Journal of wine economics / American Association of Wine Economists",
"volume": "7",
"attachments": [
{
"title": "Link to Library Catalog Entry",
"mimeType": "text/html",
"snapshot": false
},
{
"title": "Library Catalog Entry Snapshot",
"mimeType": "text/html",
"snapshot": true
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://gso.gbv.de/DB=2.1/PPNSET?PPN=731519299",
"items": [
{
"itemType": "bookSection",
"title": "'The truth against the world': spectrality and the mystic past in late twentieth-century Cornwall",
"creators": [
{
"firstName": "Carl",
"lastName": "Phillips",
"creatorType": "author"
}
],
"date": "2013",
"ISBN": "9780415628686 9780415628693 9780203080184",
"bookTitle": "Mysticism, myth and Celtic identity / Gibson, Marion *1970-*",
"libraryCatalog": "Library Catalog - kxp.k10plus.de",
"pages": "70-83",
"shortTitle": "'The truth against the world'",
"attachments": [
{
"title": "Link to Library Catalog Entry",
"mimeType": "text/html",
"snapshot": false
},
{
"title": "Library Catalog Entry Snapshot",
"mimeType": "text/html",
"snapshot": true
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://gso.gbv.de/DB=2.1/PPNSET?PPN=729937798",
"items": [
{
"itemType": "bookSection",
"title": "Noise reduction potential of an engine oil pan",
"creators": [
{
"firstName": "Tommy",
"lastName": "Luft",
"creatorType": "author"
},
{
"firstName": "Stefan",
"lastName": "Ringwelski",
"creatorType": "author"
},
{
"firstName": "Ulrich",
"lastName": "Gabbert",
"creatorType": "author"
},
{
"firstName": "Wilfried",
"lastName": "Henze",
"creatorType": "editor"
},
{
"firstName": "Helmut",
"lastName": "Tschöke",
"creatorType": "editor"
}
],
"date": "2013",
"ISBN": "9783642338328",
"bookTitle": "Proceedings of the FISITA 2012 World Automotive Congress ; Vol. 13:Noise, vibration and harshness (NVH) / Zhongguo qi che gong cheng xue hui",
"libraryCatalog": "Library Catalog - kxp.k10plus.de",
"pages": "291-304",
"series": "Lecture notes in electrical engineering",
"seriesNumber": "201",
"url": "http://dx.doi.org/10.1007/978-3-642-33832-8_23",
"attachments": [
{
"title": "Link to Library Catalog Entry",
"mimeType": "text/html",
"snapshot": false
},
{
"title": "Library Catalog Entry Snapshot",
"mimeType": "text/html",
"snapshot": true
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.sudoc.abes.fr/cbs/xslt/DB=2.1//SRCH?IKT=12&TRM=013979922",
"items": [
{
"itemType": "journalArticle",
"title": "Health promotion by the family, the role of the family in enhancing healthy behavior, symposium 23-25 March 1992, Brussels",
"creators": [
{
"lastName": "Organisation mondiale de la santé",
"creatorType": "editor",
"fieldMode": true
}
],
"date": "1992",
"ISSN": "0003-9578",
"issue": "1/4",
"language": "français",
"libraryCatalog": "Library Catalog - www.sudoc.abes.fr",
"pages": "3-232",
"publicationTitle": "Archives belges de médecine sociale, hygiène, médecine du travail et médecine légale",
"volume": "51",
"attachments": [
{
"title": "Worldcat Link",
"mimeType": "text/html",
"snapshot": false
},
{
"title": "Link to Library Catalog Entry",
"mimeType": "text/html",
"snapshot": false
},
{
"title": "Library Catalog Entry Snapshot",
"mimeType": "text/html",
"snapshot": true
}
],
"tags": [
{
"tag": "Famille"
},
{
"tag": "Santé publique"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://gso.gbv.de/DB=2.1/PPNSET?PPN=600530787",
"items": [
{
"itemType": "book",
"title": "Lehrbuch der Bodenkunde",
"creators": [
{
"firstName": "Fritz",
"lastName": "Scheffer",
"creatorType": "author"
},
{
"firstName": "Paul",
"lastName": "Schachtschabel",
"creatorType": "author"
},
{
"firstName": "Hans-Peter",
"lastName": "Blume",
"creatorType": "editor"
},
{
"firstName": "Sören",
"lastName": "Thiele",
"creatorType": "editor"
}
],
"date": "2010",
"ISBN": "978-3-8274-1444-1",
"edition": "16",
"libraryCatalog": "Library Catalog - gso.gbv.de",
"numPages": "xiv+569",
"place": "Heidelberg",
"publisher": "Spektrum, Akad.-Verl.",
"attachments": [
{
"title": "Link to Library Catalog Entry",
"mimeType": "text/html",
"snapshot": false
},
{
"title": "Library Catalog Entry Snapshot",
"mimeType": "text/html",
"snapshot": true
}
],
"tags": [
"Bodenkunde / Lehrbuch"
],
"notes": [
{
"note": "\n<div><span>Literaturangaben</span></div>\n<div style=\"display:none\" title=\"optional\" id=\"ANNOTATIE\"><span>Hier auch später ersch. unveränd. Nachdr.</span></div>\n"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://opac.tib.eu/DB=1/XMLPRS=N/PPN?PPN=620088028",
"items": [
{
"itemType": "book",
"title": "Phönix auf Asche: von Wäldern und Wandel in der Dübener Heide und Bitterfeld",
"creators": [
{
"firstName": "Caroline",
"lastName": "Möhring",
"creatorType": "editor"
}
],
"date": "2009",
"ISBN": "9783941300149",
"callNumber": "F 10 B 2134",
"libraryCatalog": "Library Catalog - opac.tib.eu",
"numPages": "140",
"place": "Remagen",
"publisher": "Kessel",
"shortTitle": "Phönix auf Asche",
"attachments": [
{
"title": "Link to Library Catalog Entry",
"mimeType": "text/html",
"snapshot": false
},
{
"title": "Library Catalog Entry Snapshot",
"mimeType": "text/html",
"snapshot": true
}
],
"tags": [
{
"tag": "Waldsterben / Schadstoffimmission / Dübener Heide / Bitterfeld <Region>"
}
],
"notes": [
{
"note": "<div>Förderkennzeichen BMBF 0330634 K. - Verbund-Nr. 01033571</div>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://opac.sub.uni-goettingen.de/DB=1/XMLPRS=N/PPN?PPN=57161647X",
"items": [
{
"itemType": "book",
"title": "Das war das Waldsterben!",
"creators": [
{
"lastName": "Klein",
"creatorType": "author",
"firstName": "Elmar"
}
],
"date": "2008",
"ISBN": "9783793095262",
"callNumber": "48 Kle",
"edition": "1",
"libraryCatalog": "Library Catalog - opac.sub.uni-goettingen.de",
"numPages": "164",
"place": "Freiburg i. Br[eisgau]",
"publisher": "Rombach",
"series": "Rombach-Wissenschaften. Reihe Ökologie. - Freiburg, Br. : Rombach, 1992- ; ZDB-ID: 1139339-7",
"seriesNumber": "8",
"attachments": [
{
"title": "Link to Library Catalog Entry",
"mimeType": "text/html",
"snapshot": false
},
{
"title": "Library Catalog Entry Snapshot",
"mimeType": "text/html",
"snapshot": true
}
],
"tags": [
{
"tag": "*Baumkrankheit"
},
{
"tag": "*Waldsterben"
},
{
"tag": "*Waldsterben / Geschichte"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://lhclz.gbv.de/DB=1/XMLPRS=N/PPN?PPN=08727342X",
"items": [
{
"itemType": "book",
"title": "Geschichten, die die Forschung schreibt: ein Umweltlesebuch des Deutschen Forschungsdienstes",
"creators": [
{
"firstName": "Bettina",
"lastName": "Reckter",
"creatorType": "editor"
},
{
"firstName": "Rolf H.",
"lastName": "Simen",
"creatorType": "editor"
},
{
"firstName": "Karl-Heinz",
"lastName": "Preuß",
"creatorType": "editor"
}
],
"date": "1990",
"ISBN": "9783923120260",
"abstractNote": "Bettina Reckter, Rolf H. Simen, Karl-Heinz Preuß (Hrsg.): Geschichten, die die Forschung schreibt. Ein Umweltlesebuch des Deutschen Forschungsdienstes. Verlag Deutscher Forschungsdienst, Bonn-Bad Godesberg 1990, 320 Seiten, 29,80 Mark",
"callNumber": "CL 13 : IfW13 40 W 2",
"libraryCatalog": "Library Catalog - lhclz.gbv.de",
"numPages": "319",
"place": "Bonn - Bad Godesberg",
"publisher": "Verlag Deutscher Forschungsdienst",
"shortTitle": "Geschichten, die die Forschung schreibt",
"attachments": [
{
"title": "Link to Library Catalog Entry",
"mimeType": "text/html",
"snapshot": false
},
{
"title": "Library Catalog Entry Snapshot",
"mimeType": "text/html",
"snapshot": true
}
],
"tags": [
{
"tag": "Algenpest"
},
{
"tag": "Aufsatzsammlung"
},
{
"tag": "Aufsatzsammlung / Umweltschutz"
},
{
"tag": "Bienen"
},
{
"tag": "Gewässerverschmutzung"
},
{
"tag": "Gleichgewicht"
},
{
"tag": "Lebensräume"
},
{
"tag": "Mülldeponie"
},
{
"tag": "Perlmuscheln"
},
{
"tag": "Saurer Regen"
},
{
"tag": "Schmetterlinge"
},
{
"tag": "Sonnenenergie"
},
{
"tag": "Süßwasserfische"
},
{
"tag": "Tiere"
},
{
"tag": "Trinkwasser"
},
{
"tag": "Umweltgifte"
},
{
"tag": "Umweltschaden"
},
{
"tag": "Umweltschutz"
},
{
"tag": "Umweltsignale"
},
{
"tag": "Vogelarten"
},
{
"tag": "Waldsterben"
},
{
"tag": "Ökomonie"
}
],
"notes": [
{
"note": "<div>Institutsbestand, deshalb nähere Informationen im Inst. f. Wirtschaftswissenschaft (IfW13)</div>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://swb.bsz-bw.de/DB=2.1/PPNSET?PPN=012099554&INDEXSET=1",
"items": [
{
"itemType": "book",
"title": "Borges por el mismo",
"creators": [
{
"lastName": "Rodríguez Monegal",
"creatorType": "author",
"firstName": "Emir"
},
{
"firstName": "Emir",
"lastName": "Rodri%CC%81guez Monegal",
"creatorType": "author"
},
{
"firstName": "Jorge Luis",
"lastName": "Borges",
"creatorType": "author"
}
],
"date": "1984",
"ISBN": "9788472229679",
"edition": "1. ed",
"libraryCatalog": "Library Catalog - swb.bsz-bw.de",
"numPages": "255",
"place": "Barcelona",
"publisher": "Ed. laia",
"series": "Laia literatura",
"attachments": [
{
"title": "Link to Library Catalog Entry",
"mimeType": "text/html",
"snapshot": false
},
{
"title": "Library Catalog Entry Snapshot",
"mimeType": "text/html",
"snapshot": true
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://cbsopac.rz.uni-frankfurt.de/DB=2.1/PPNSET?PPN=318490412",
"items": [
{
"itemType": "book",
"title": "Daten- und Identitätsschutz in Cloud Computing, E-Government und E-Commerce",
"creators": [
{
"firstName": "Georg",
"lastName": "Borges",
"creatorType": "editor"
}
],
"ISBN": "978-3-642-30102-5",
"abstractNote": "Fuer neue und kuenftige Gesch ftsfelder von E-Commerce und E-Government stellen der Datenschutz und der Identit tsschutz wichtige Herausforderungen dar. Renommierte Autoren aus Wissenschaft und Praxis widmen sich in dem Band aktuellen Problemen des Daten- und Identit tsschutzes aus rechtlicher und technischer Perspektive. Sie analysieren aktuelle Problemf lle aus der Praxis und bieten Handlungsempfehlungen an. Das Werk richtet sich an Juristen und technisch Verantwortliche in Beh rden und Unternehmen sowie an Rechtsanw lte und Wissenschaftler.",
"libraryCatalog": "Library Catalog - cbsopac.rz.uni-frankfurt.de",
"numPages": "x+187",
"series": "SpringerLink: Springer e-Books",
"attachments": [
{
"title": "Link to Library Catalog Entry",
"mimeType": "text/html",
"snapshot": false
},
{
"title": "Library Catalog Entry Snapshot",
"mimeType": "text/html",
"snapshot": true
}
],
"tags": [
"Cloud Computing",
"Datenschutz",
"Deutschland",
"Electronic Commerce",
"Electronic Government",
"Persönlichkeitsrecht",
"f Aufsatzsammlung",
"f Online-Publikation"
],
"notes": [
{
"note": "<div>Description based upon print version of record </div>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://stabikat.de/DB=1/XMLPRS=N/PPN?PPN=717966224",
"items": [
{
"itemType": "book",
"title": "Politiques publiques, systèmes complexes",
"creators": [
{
"firstName": "Danièle",
"lastName": "Bourcier",
"creatorType": "editor"
},
{
"firstName": "Romain",
"lastName": "Boulet",
"creatorType": "editor"
}
],
"date": "2012",
"ISBN": "2-7056-8274-0, 978-2-7056-8274-3",
"callNumber": "1 A 845058 Verfügbarkeit anzeigen / bestellen",
"libraryCatalog": "Library Catalog - stabikat.de",
"numPages": "290",
"pages": "290",
"place": "Paris",
"publisher": "Hermann Ed.",
"attachments": [
{
"title": "Link to Library Catalog Entry",
"mimeType": "text/html",
"snapshot": false
},
{
"title": "Library Catalog Entry Snapshot",
"mimeType": "text/html",
"snapshot": true
}
],
"tags": [
"Gesetzgebung / Rechtsprechung / Komplexes System / Kongress / Paris <2010>Law -- Philosophy -- Congresses / Law -- Political aspects -- Congresses / Rule of law -- Congresses"
],
"notes": [
{
"note": "Contient des contributions en anglais<br>Notes bibliogr. Résumés. Index"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://lhiai.gbv.de/DB=1/XMLPRS=N/PPN?PPN=1914428323",
"items": [
{
"itemType": "journalArticle",
"title": "La temprana devoción de Borges por el norte",
"creators": [
{
"firstName": "Gustavo",
"lastName": "Rubén Giorgi",
"creatorType": "author"
}
],
"date": "2012",
"ISSN": "1515-4017",
"libraryCatalog": "Library Catalog - lhiai.gbv.de",
"pages": "61-71",
"publicationTitle": "Proa",
"volume": "83",
"attachments": [
{
"title": "Link to Library Catalog Entry",
"mimeType": "text/html",
"snapshot": false
},
{
"title": "Library Catalog Entry Snapshot",
"mimeType": "text/html",
"snapshot": true
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://gso.gbv.de/DB=2.1/PPNSET?PPN=768059798",
"items": [
{
"itemType": "book",
"title": "Ehetagebücher 1840 - 1844",
"creators": [
{
"firstName": "Robert",
"lastName": "Schumann",
"creatorType": "author"
},
{
"firstName": "Clara",
"lastName": "Schumann",
"creatorType": "author"
},
{
"firstName": "Gerd",
"lastName": "Nauhaus",
"creatorType": "editor"
},
{
"firstName": "Ingrid",
"lastName": "Bodsch",
"creatorType": "editor"
}
],
"date": "2013",
"ISBN": "978-3-86600-002-5, 978-3-931878-40-5",
"abstractNote": "Zum ersten Mal als Einzelausgabe erscheinen die von Robert Schumann und seiner Frau, der Pianistin und Komponistin Clara Schumann, geb. Wieck, in den ersten Jahren ihrer Ehe geführten gemeinsamen Tagebücher. 1987 waren diese in Leipzig und bei Stroemfeld in wissenschaftlich-kritischer Edition von dem Schumannforscher und langjährigen Direktor des Robert-Schumann-Hauses Zwickau, Gerd Nauhaus, vorgelegt worden. Mit der Neupublikation wird die textgetreue, mit Sacherläuterungen sowie Personen-, Werk- und Ortsregistern und ergänzenden Abbildungen versehene Leseausgabe vorgelegt, die einem breiten interessierten Publikum diese einzigartigen Zeugnisse einer bewegenden Künstlerehe nahebringen.",
"edition": "2",
"libraryCatalog": "Library Catalog - gso.gbv.de",
"numPages": "332",
"place": "Frankfurt/M.",
"publisher": "Stroemfeld",
"attachments": [
{
"title": "Link to Library Catalog Entry",
"mimeType": "text/html",
"snapshot": false
},
{
"title": "Library Catalog Entry Snapshot",
"mimeType": "text/html",
"snapshot": true
}
],
"tags": [
"Schumann, Robert 1810-1856 / Schumann, Clara 1819-1896 / Tagebuch 1840-1844"
],
"notes": [
{
"note": "<div><span>Sammlung</span></div>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://gso.gbv.de/DB=2.1/PPNSET?PPN=770481450",
"items": [
{
"itemType": "book",
"title": "Religiosidade no Brasil",
"creators": [
{
"firstName": "João Baptista Borges",
"lastName": "Pereira",
"creatorType": "author"
}
],
"date": "2012",
"ISBN": "9788531413742",
"libraryCatalog": "Library Catalog - kxp.k10plus.de",
"numPages": "397",
"place": "São Paulo, SP, Brasil",
"publisher": "EDUSP",
"url": "http://www.gbv.de/dms/spk/iai/toc/770481450.pdf",
"attachments": [
{
"title": "Link to Library Catalog Entry",
"mimeType": "text/html",
"snapshot": false
},
{
"title": "Library Catalog Entry Snapshot",
"mimeType": "text/html",
"snapshot": true
}
],
"tags": [
{
"tag": "Brazil -- Religious life and customs"
}
],
"notes": [
{
"note": "<div><span>Includes bibliographical references</span></div>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.sudoc.abes.fr/cbs/xslt/DB=2.1//SRCH?IKT=12&TRM=024630527",
"items": [
{
"itemType": "book",
"title": "Conférences sur l'administration et le droit administratif faites à l'Ecole impériale des ponts et chaussées",
"creators": [
{
"firstName": "Léon",
"lastName": "Aucoc",
"creatorType": "author"
}
],
"date": "1869-1876",
"language": "français",
"libraryCatalog": "Library Catalog - www.sudoc.abes.fr",
"numPages": "xii+xxiii+681+540+739",
"numberOfVolumes": "3",
"place": "Paris, France",
"publisher": "Dunod",
"attachments": [
{
"title": "Worldcat Link",
"mimeType": "text/html",
"snapshot": false
},
{
"title": "Link to Library Catalog Entry",
"mimeType": "text/html",
"snapshot": false
},
{
"title": "Library Catalog Entry Snapshot",
"mimeType": "text/html",
"snapshot": true
}
],
"tags": [
{
"tag": "Droit administratif -- France"
},
{
"tag": "Ponts et chaussées (administration) -- France"
},
{
"tag": "Travaux publics -- Droit -- France"
},
{
"tag": "Voirie et réseaux divers -- France"
}
],
"notes": [
{
"note": "\n<div><span>Titre des tomes 2 et 3 : Conférences sur l'administration et le droit administratif faites à l'Ecole des ponts et chaussées</span></div>\n<div><span> </span></div>\n"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.sudoc.abes.fr/cbs/xslt/DB=2.1//SRCH?IKT=12&TRM=001493817",
"items": [
{
"itemType": "book",
"title": "Traité de la juridiction administrative et des recours contentieux",
"creators": [
{
"firstName": "Édouard",
"lastName": "Laferrière",
"creatorType": "author"
},
{
"firstName": "Roland Préfacier",
"lastName": "Drago",
"creatorType": "author"
}
],
"date": "1989",
"ISBN": "9782275007908",
"language": "français",
"libraryCatalog": "Library Catalog - www.sudoc.abes.fr",
"numPages": "ix+670; 675",
"numberOfVolumes": "2",
"place": "Paris, France",
"publisher": "Librairie générale de droit et de jurisprudence",
"attachments": [
{
"title": "Worldcat Link",
"mimeType": "text/html",
"snapshot": false
},
{
"title": "Link to Library Catalog Entry",
"mimeType": "text/html",
"snapshot": false
},
{
"title": "Library Catalog Entry Snapshot",
"mimeType": "text/html",
"snapshot": true
}
],
"tags": [
{
"tag": "Contentieux administratif -- France -- 19e siècle"
},
{
"tag": "Recours administratifs -- France"
},
{
"tag": "Tribunaux administratifs -- France -- 19e siècle"
},
{
"tag": "Tribunaux administratifs -- Études comparatives"
}
],
"notes": [
{
"note": "<div><span>1, Notions générales et législation comparée, histoire, organisation compétence de la juridiction administrative. 2, Compétence (suite), marchés et autres contrats, dommages, responsabilité de l'état, traitements et pensions, contributions directes, élections, recours pour excés de pouvoir, interprétation, contraventions de grandes voirie</span></div>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.sudoc.abes.fr/cbs/xslt/DB=2.1//SRCH?IKT=12&TRM=200278649",
"items": [
{
"itemType": "book",
"title": "Il brutto all'opera: l'emancipazione del negativo nel teatro di Giuseppe Verdi",
"creators": [
{
"firstName": "Gabriele",
"lastName": "Scaramuzza",
"creatorType": "author"
}
],
"date": "2013",
"ISBN": "9788857515953",
"language": "italien",
"libraryCatalog": "Library Catalog - www.sudoc.abes.fr",
"numPages": "232",
"place": "Milano, Italie",
"publisher": "Mimesis",
"shortTitle": "Il brutto all'opera",
"attachments": [
{
"title": "Worldcat Link",
"mimeType": "text/html",
"snapshot": false
},
{
"title": "Link to Library Catalog Entry",
"mimeType": "text/html",
"snapshot": false
},
{
"title": "Library Catalog Entry Snapshot",
"mimeType": "text/html",
"snapshot": true
}
],
"tags": [
{
"tag": "Laideur -- Dans l'opéra"
},
{
"tag": "ML410.V4. S36 2013"
},
{
"tag": "Opera -- 19th century"
},
{
"tag": "Ugliness in opera"
},
{
"tag": "Verdi, Giuseppe (1813-1901) -- Thèmes, motifs"
}
],
"notes": [
{
"note": "<div>\n<span>Table des matières disponible en ligne (</span><span><a class=\"\n\t\t\tlink_gen\n\t\t \" target=\"\" href=\"http://catdir.loc.gov/catdir/toc/casalini11/13192019.pdf\">http://catdir.loc.gov/catdir/toc/casalini11/13192019.pdf</a></span><span>)</span>\n</div>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://stabikat.de/DB=1/XMLPRS=N/PPN?PPN=1748358820",
"items": [
{
"itemType": "webpage",
"title": "Modern and contemporary Taiwanese philosophy: traditional foundations and new developments",
"creators": [],
"date": "2021",
"abstractNote": "This collection contains 13 essays on modern and contemporary Taiwanese philosophy, written by outstanding scholars working in this field. It highlights the importance of Taiwanese philosophy in the second half of the 20th century. While the Chinese conceptual tradition (especially Confucianism) fell out of favor from the 1950s onwards and was often banned or at least severely criticized on the mainland, Taiwanese philosophers constantly strove to preserve and develop it. Many of them tried to modernize their own traditions through dialogs with Western thought, especially with the ideas of the European Enlightenment. However, it was not only about preserving tradition; in the second half of the 20th century, several complex and coherent philosophical systems emerged in Taiwan. The creation of these discourses is evidence of the great creativity and innovative power of many Taiwanese theorists, whose work is still largely unknown in the Western world.Intro -- Table of Contents -- Acknowledgements -- Editor's Foreword -- Introduction -- Modern and Contemporary Confucianism -- The Problem of \"Inner Sageliness and Outer Kingliness\" Revisited -- A Debate on Confucian Orthodoxy in Contemporary Taiwanese Confucian Thought -- A Phenomenological Interpretation of Mou Zongsan's Use of \"Transcendence\" and \"Immanence\" -- Modern Confucianism and the Methodology of Chinese Aesthetics -- Research on Daoist Philosophy -- Laozi's View of Presence and Absence, Movement and Stillness, and Essence and Function -- Characteristics of Laozi's \"Complementary Opposition\" Thought Pattern -- A General Survey of Taiwanese Studies on the Philosophy of the Wei-Jin Period in the Last Fifty Years of the 20th Century -- Logic and Methodology -- Qinghua School of Logic and the Origins of Taiwanese Studies in Modern Logic -- Discussing the Functions and Limitations of Conveying \"Concepts\" in Philosophical Thinking -- Taiwanese Philosophy from the East Asian and Global Perspective -- How is it Possible to \"Think from the Point of View of East Asia?\" -- Between Philosophy and Religion -- The Global Significance of Chinese/Taiwanese Philosophy in a Project -- Index of Special Terms and Proper Names.",
"shortTitle": "Modern and contemporary Taiwanese philosophy",
"url": "http://erf.sbb.spk-berlin.de/han/872773256/ebookcentral.proquest.com/lib/staatsbibliothek-berlin/detail.action?docID=6416045",
"attachments": [
{
"title": "Link to Library Catalog Entry",
"mimeType": "text/html",
"snapshot": false
},
{
"title": "Library Catalog Entry Snapshot",
"mimeType": "text/html",
"snapshot": true
}
],
"tags": [
{
"tag": "*Electronic books"
},
{
"tag": "*Taiwan / Philosophie"
}
],
"notes": [
{
"note": "<div>Description based on publisher supplied metadata and other sources.</div>"
},
{
"note": "<div>Einzelnutzerlizenz</div>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://swb.bsz-bw.de/DB=2.1/PPNSET?PPN=1703871782",
"items": [
{
"itemType": "journalArticle",
"title": "Calculation of the electronic, nuclear, rotational, and vibrational stopping cross sections for H atoms irradiation on H2, N2 and O2 gas targets at low collision energies",
"creators": [
{
"firstName": "Abdel Ghafour",
"lastName": "El Hachimi",
"creatorType": "editor"
}
],
"date": "2020",
"ISSN": "1361-6455",
"issue": "13",
"libraryCatalog": "Library Catalog - swb.bsz-bw.de",
"publicationTitle": "Journal of physics B",
"url": "http://dx.doi.org/10.1088/1361-6455/ab8834",
"volume": "53",
"attachments": [
{
"title": "Link to Library Catalog Entry",
"mimeType": "text/html",
"snapshot": false
},
{
"title": "Library Catalog Entry Snapshot",
"mimeType": "text/html",
"snapshot": true
}
],
"tags": [],
"notes": [
{
"note": "<div>Gesehen am 06.07.2020. - Im Titel ist die Zahl \"2\" jeweils tiefgestellt</div>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://opac.tib.eu/DB=1/XMLPRS=N/PPN?PPN=1749375400",
"items": [
{
"itemType": "book",
"title": "An investigation into WEEE arising and not arising in Ireland (EEE2WEEE): (2017-RE-MS-9)",
"creators": [
{
"firstName": "Yvonne",
"creatorType": "author",
"lastName": "Ryan-Fogarty"
}
],
"date": "February 2021",
"ISBN": "9781840959819",
"edition": "Online version",
"libraryCatalog": "Library Catalog - opac.tib.eu",
"place": "Johnstown Castle, Co. Wexford, Ireland",
"publisher": "Environmental Protection Agency",
"series": "EPA Research report. - Johnstown Castle, Co. Wexford, Ireland : Environmental Protection Agency, 2014- ; ZDB-ID: 3045798-1",
"seriesNumber": "366",
"shortTitle": "An investigation into WEEE arising and not arising in Ireland (EEE2WEEE)",
"url": "https://edocs.tib.eu/files/e01mr21/1749375400.pdf",
"attachments": [
{
"title": "Link to Library Catalog Entry",
"mimeType": "text/html",
"snapshot": false
},
{
"title": "Library Catalog Entry Snapshot",
"mimeType": "text/html",
"snapshot": true
}
],
"tags": [],
"notes": [
{
"note": "<div>WEEE = Waste Electrical and Electronic Equipment</div><div>Literaturverzeichnis: Seite 39-43</div><div>Archivierung/Langzeitarchivierung gewährleistet ; TIB Hannover</div>"
},
{
"note": "<div>Es gilt deutsches Urheberrecht. Das Werk bzw. der Inhalt darf zum eigenen Gebrauch kostenfrei heruntergeladen, konsumiert, gespeichert oder ausgedruckt, aber nicht im Internet bereitgestellt oder an Außenstehende weitergegeben werden. - German copyright law applies. The work or content may be downloaded, consumed, stored or printed for your own use but it may not be distributed via the internet or passed on to external parties.</div>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://opac.sub.uni-goettingen.de/DB=1/XMLPRS=N/PPN?PPN=174526969X",
"items": [
{
"itemType": "book",
"title": "12 Strokes: A Case-Based Guide to Acute Ischemic Stroke Management",
"creators": [
{
"firstName": "Ferdinand K.",
"creatorType": "author",
"lastName": "Hui"
}
],
"date": "2021",
"ISBN": "9783030568573",
"libraryCatalog": "Library Catalog - opac.sub.uni-goettingen.de",
"place": "Cham",
"publisher": "Springer International Publishing AG",
"shortTitle": "12 Strokes",
"url": "http://han.sub.uni-goettingen.de/han/ebookcentral1/ebookcentral.proquest.com/lib/subgoettingen/detail.action?docID=6454869",
"attachments": [
{
"title": "Link to Library Catalog Entry",
"mimeType": "text/html",
"snapshot": false
},
{
"title": "Library Catalog Entry Snapshot",
"mimeType": "text/html",
"snapshot": true
}
],
"tags": [
{
"tag": "Electronic books"
}
],
"notes": [
{
"note": "<div>Description based on publisher supplied metadata and other sources.</div>"
},
{
"note": "<div>Im Campus-Netz sowie für Angehörige der Universität Göttingen auch extern über Authentifizierungsmodul zugänglich. Vervielfältigungen (z.B. Kopien, Downloads) sind nur von einzelnen Kapiteln oder Seiten und nur zum eigenen wissenschaftlichen Gebrauch erlaubt. Keine Weitergabe an Dritte. Kein systematisches Downloaden durch Robots.</div>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://lhclz.gbv.de/DB=1/XMLPRS=N/PPN?PPN=839046855",
"items": [
{
"itemType": "book",
"title": "Customer Value Generation in Banking: The Zurich Model of Customer-Centricity",
"creators": [
{
"firstName": "Bernhard",
"lastName": "Koye",
"creatorType": "author"
},
{
"firstName": "Axel",
"lastName": "Liebetrau",
"creatorType": "author"
}
],
"date": "2024",
"libraryCatalog": "Library Catalog - lhclz.gbv.de",
"numPages": "209",
"place": "Cham",
"publisher": "Springer International Publishing",
"series": "Management for Professionals",
"shortTitle": "Customer Value Generation in Banking",
"url": "https://ebookcentral.proquest.com/lib/tuclausthal-ebooks/detail.action?docID=3567812",
"attachments": [
{
"title": "Link to Library Catalog Entry",
"mimeType": "text/html",
"snapshot": false
},
{
"title": "Library Catalog Entry Snapshot",
"mimeType": "text/html",
"snapshot": true
}
],
"tags": [
{
"tag": "Electronic books"
}
],
"notes": [
{
"note": "<div>Description based upon print version of record</div>"
},
{
"note": "<div>Campusweiter Zugriff. - Vervielfältigungen (z.B. Kopien, Downloads) sind nur von einzelnen Kapiteln oder Seiten und nur zum eigenen wissenschaftlichen Gebrauch erlaubt. Keine Weitergabe an Dritte. Kein systematisches Downloaden durch Robots.</div>"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://cbsopac.rz.uni-frankfurt.de/DB=2.1/PPNSET?PPN=318490412",
"items": [
{
"itemType": "book",
"title": "Daten- und Identitätsschutz in Cloud Computing, E-Government und E-Commerce",
"creators": [],
"ISBN": "9783642301025",
"edition": "1st ed. 2012",
"libraryCatalog": "Library Catalog - cbsopac.rz.uni-frankfurt.de",
"url": "https://doi.org/10.1007/978-3-642-30102-5",
"attachments": [
{
"title": "Link to Library Catalog Entry",
"mimeType": "text/html",
"snapshot": false
},
{
"title": "Library Catalog Entry Snapshot",
"mimeType": "text/html",
"snapshot": true
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100febrezo^https?://[^/]+\.tumblr\.com//*
Tumblr Translator
Copyright (C) 2020 Félix Brezo, felixbrezo@gmail.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the Affero GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
function detectWeb(doc, url) {
if (url.match(/^https?:\/\/www\./)) {
// only try to translate subdomain blogs
return false;
}
if (url.includes('/post/')) {
return "blogPost";
}
if (url.includes('/search/') && getSearchResults(doc, true)) {
return "multiple";
}
return "webpage";
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('#posts article');
for (let row of rows) {
let href = row.querySelector('a.post-notes').href;
let title = ZU.trimInternal(text(row, '.body-text p') || text(row, 'a.tag-link'));
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var resourceType = detectWeb(doc, url);
// Creating the item
var newItem = new Zotero.Item(resourceType);
var urlParts = url.split('/');
var tmpDate;
if (resourceType == "blogPost") {
newItem.blogTitle = ZU.xpathText(doc, "//meta[@property='og:site_name']/@content");
newItem.title = ZU.xpathText(doc, "//meta[@property='og:title']/@content");
tmpDate = ZU.xpathText(doc, '(//div[@class="date-note-wrapper"]/a)[1]');
if (!tmpDate) {
tmpDate = ZU.xpathText(doc, '//div[@class="date"]/text()');
}
newItem.date = ZU.strToISO(tmpDate);
}
else {
newItem.title = ZU.xpathText(doc, "//title/text()");
newItem.websiteTitle = ZU.xpathText(doc, "//meta[@name='description']/@content");
}
var tmpAuthor = urlParts[2].split(".")[0];
if (tmpAuthor) {
newItem.creators.push({ lastName: tmpAuthor, creatorType: "author", fieldMode: 1 });
}
newItem.websiteType = "Tumblr";
newItem.url = url;
// Adding the attachment
newItem.attachments.push({
title: "Tumblr Snapshot",
mimeType: "text/html",
url: url
});
newItem.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://blogdeprogramacion.tumblr.com/post/167688373297/c%C3%B3mo-integrar-opencv-y-python-en-windows",
"items": [
{
"itemType": "blogPost",
"title": "¿Cómo integrar OpenCV y Python en Windows?",
"creators": [
{
"lastName": "blogdeprogramacion",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "2017-11-19",
"blogTitle": "Blog de Programacion y Tecnologia",
"url": "https://blogdeprogramacion.tumblr.com/post/167688373297/c%C3%B3mo-integrar-opencv-y-python-en-windows",
"websiteType": "Tumblr",
"attachments": [
{
"title": "Tumblr Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://blogdeprogramacion.tumblr.com/",
"items": [
{
"itemType": "webpage",
"title": "Blog de Programacion y Tecnologia",
"creators": [
{
"lastName": "blogdeprogramacion",
"creatorType": "author",
"fieldMode": 1
}
],
"url": "https://blogdeprogramacion.tumblr.com/",
"websiteTitle": "Blog de programacion, tecnologia, electronica, tutoriales, informatica y sistemas computacionales.",
"websiteType": "Tumblr",
"attachments": [
{
"title": "Tumblr Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://montereybayaquarium.tumblr.com/search/turtle",
"items": "multiple"
}
]
/** END TEST CASES **/
100Matthias Mailänder^https?://(www\.)?game(star|pro)\.de/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Matthias Mailänder
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/artikel/')) {
return "magazineArticle";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function doWeb(doc, url) {
switch (detectWeb(doc, url)) {
case "multiple":
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) {
return true;
}
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
return true;
});
break;
case "magazineArticle":
scrape(doc, url);
break;
}
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var links = doc.querySelectorAll('.media-heading a');
for (let i = 0; i < links.length; i++) {
let href = links[i].href;
let title = ZU.trimInternal(links[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48'); // embedded metadata
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) { // correct bad metadata in here
if (url.includes('/artikel/')) {
item.itemType = "magazineArticle";
}
if (url.includes('gamestar.de')) {
item.publicationTitle = "GameStar";
}
if (url.includes('gamepro.de')) {
item.publicationTitle = "GamePro";
}
item.language = "de-DE";
item.creators = []; // reset bad author metadata
var authorMetadata = doc.querySelectorAll('p.info.m-b-2 b');
if (authorMetadata != undefined) {
for (let author of authorMetadata) {
item.creators.push(ZU.cleanAuthor(author.innerText, "author"));
}
}
authorMetadata = doc.querySelectorAll('a[class="btn btn-link btn-inline"]');
if (authorMetadata != undefined) {
for (let author of authorMetadata) {
item.creators.push(ZU.cleanAuthor(author.text, "author"));
}
}
item.complete();
});
translator.getTranslatorObject(function(trans) {
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.gamestar.de/artikel/black-white-peter-molyneux-laesst-sie-gott-spielen,1330147.html",
"items": [
{
"itemType": "magazineArticle",
"title": "Black & White im Test - Peter Molyneux lässt Sie Gott spielen",
"creators": [
{
"firstName": " Mick",
"lastName": "Schnelle",
"creatorType": "author"
}
],
"date": "2001-04-01T15:12:00+02:00",
"abstractNote": "Genial oder Gurke? Mit der endgültigen Testversion muss Black & White endlich Farbe bekennen: Das lang und heiß erwartete Götterspiel gerät auf dem ...",
"publicationTitle": "GameStar",
"libraryCatalog": "www.gamestar.de",
"language": "de-DE",
"url": "https://www.gamestar.de/artikel/black-white-peter-molyneux-laesst-sie-gott-spielen,1330147.html",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"notes": [],
"tags": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.gamepro.de/artikel/uncharted-4-a-thiefs-end-wettlauf-zum-piratenschatz,3271959.html",
"items": [
{
"itemType": "magazineArticle",
"title": "Uncharted 4 für PS4 im Test: Wettlauf zum Piratenschatz",
"shortTitle": "Uncharted 4 für PS4 im Test",
"creators": [
{
"firstName": "Kai",
"lastName": "Schmidt",
"creatorType": "author"
}
],
"date": "2020-04-02T07:42:00+02:00",
"abstractNote": "Uncharted A Thief's End ist nun Teil des PS Plus-Lineups im April 2020. Lest im Review, warum das PlayStation 4-Exclusive, ein echtes Meisterwerk ist.",
"publicationTitle": "GamePro",
"libraryCatalog": "www.gamepro.de",
"language": "de-DE",
"url": "https://www.gamepro.de/artikel/uncharted-4-a-thiefs-end-wettlauf-zum-piratenschatz,3271959.html",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"notes": [],
"tags": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.gamestar.de/suche/?query=grand+theft+auto",
"items": "multiple"
}
]
/** END TEST CASES **/
100optiprime, ApoB-100^https?://www\.heise\.de/(suche|select)//*
***** BEGIN LICENSE BLOCK *****
Heise Translator
Copyright © 2021 optiprime, ApoB-100
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
const magazines = {
"c't": { ISSN: '0724-8679' },
iX: { ISSN: '0935-9680' },
"Technology Review": { ISSN: '1613-0138' },
"Make Magazin": { ISSN: '2364-2548' },
"Mac & i": { ISSN: '2193-8938' },
"c't Fotografie": { ISSN: '2196-3878' },
"Heise Magazine": { ISSN: '2196-3878' }
};
function detectWeb(doc, url) {
if (url.includes('/select')) {
return 'magazineArticle';
}
else if (url.includes('/suche')) {
if (getSearchResults(doc, true)) {
return 'multiple';
}
}
return false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == 'multiple') {
Zotero.selectItems(getSearchResults(doc, false), function (selected) {
if (selected) {
ZU.processDocuments(Object.keys(selected), scrape);
}
});
}
else {
scrape(doc);
}
}
function getSearchResults(doc, checkOnly) {
let items = {};
let articles = ZU.xpath(doc, '//article[contains(@class, "search-result__teaser")]');
for (let i = 0; i < articles.length; ++i) {
let link = ZU.xpath(articles[i], './/a[contains(@class, "a-article-teaser__link")]')[0];
let title = ZU.xpath(articles[i], './/h1[contains(@class, "a-article-teaser__title")]')[0];
if (!link || !title) {
continue;
}
let href = link.href;
let text = ZU.trimInternal(title.textContent);
if (!href || !text) {
continue;
}
if (checkOnly) {
return true;
}
items[href] = text;
}
return (Object.keys(items).length != 0) ? items : false;
}
function scrape(doc) {
let elements = ZU.xpath(doc, '//script[@type="application/ld+json"]');
if (Array.isArray(elements)) {
let data = JSON.parse(elements[0].textContent)[0];
let item = new Zotero.Item('magazineArticle');
item.publisher = data.publisher.name;
item.publicationTitle = data.isPartOf.isPartOf.isPartOf.name;
item.ISSN = magazines[item.publicationTitle].ISSN;
item.volume = data.isPartOf.isPartOf.volumeNumber;
item.issue = data.isPartOf.issueNumber;
item.title = data.headline;
if (item.title) {
if (data.alternativeHeadline) {
item.title += ': ' + data.alternativeHeadline;
}
}
else {
item.title = data.alternativeHeadline;
if (!item.title) {
item.title = '[Untitled]';
}
}
item.shortTitle = data.headline;
item.attachments = [{
url: data.mainEntityOfPage,
title: 'Snapshot',
mimeType: 'text/html',
snapshot: true
}];
item.creators = [];
if (data.author.name) {
item.creators.push(ZU.cleanAuthor(data.author.name, 'author'));
}
item.abstractNote = data.description;
if (data.pageStart) {
item.pages = data.pageStart;
if (data.pageEnd) {
item.pages += '-' + data.pageEnd;
}
}
if (data.datePublished) {
item.date = data.datePublished.split('T')[0];
}
item.language = data.inLanguage;
if (data.keywords) {
item.tags = data.keywords.split(',');
}
item.url = data.mainEntityOfPage;
item.complete();
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.heise.de/suche/?q=raspberry&sort_by=date&make=ct&provider=magazine",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.heise.de/select/ct/2021/7/2031014484690149069",
"items": [
{
"itemType": "magazineArticle",
"title": "Impressum",
"creators": [
{
"firstName": "",
"lastName": "c't",
"creatorType": "author"
}
],
"date": "2021-03-12",
"ISSN": "0724-8679",
"issue": 7,
"language": "de",
"libraryCatalog": "Heise",
"pages": 193,
"publicationTitle": "c't",
"url": "https://www.heise.de/select/ct/2021/7/2031014484690149069",
"volume": 2021,
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html",
"snapshot": true
}
],
"tags": [
{
"tag": "Impressum"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100czar^https?://(www\.)?(polygon|heroesneverdie|riftherald|theflyingcourier)\.com/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2018 czar
http://en.wikipedia.org/wiki/User_talk:Czar
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (/\d{4}\/\d+\/\d+\/\d+\//.test(url) || /\/[^/]+\/\d+\//.test(url)) {
return "blogPost";
}
else if (/search\?q=|polygon\.com\/?($|news|reviews|features|guides|videos|movies|tv|comics|podcasts)\/?/.test(url) || getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48'); // embedded metadata
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) { // correct bad metadata in here
item.itemType = "blogPost";
if (!item.blogTitle) {
item.blogTitle = item.publicationTitle;
}
item.language = "en-US";
var authorMetadata = ZU.xpathText(doc, '//script[contains(text(), "dataLayer =")]');
if (authorMetadata) { // EM doesn't handle multiple authors, so start from scratch
authorMetadata = authorMetadata.match(/"Author"\s?:\s?"([^"]*)"/)[1].split(":");
item.creators = [];
do {
item.creators.push(ZU.cleanAuthor(authorMetadata[0], "author"));
authorMetadata.shift();
}
while (authorMetadata.length);
}
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.doWeb(doc, url);
});
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('h2.c-entry-box--compact__title a');
for (let i = 0; i < rows.length; i++) {
let href = rows[i].href;
let title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
switch (detectWeb(doc, url)) {
case "multiple":
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) {
return;
}
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
break;
case "blogPost":
scrape(doc, url);
break;
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.polygon.com/2015/6/14/8779193/earthbound-mother-famicom-wii-u-virtual-console-nintendo",
"items": [
{
"itemType": "blogPost",
"title": "Nintendo brings Mother to Virtual Console as Earthbound Beginnings — it's available today",
"creators": [
{
"firstName": "Michael",
"lastName": "McWhertor",
"creatorType": "author"
},
{
"firstName": "Arthur",
"lastName": "Gies",
"creatorType": "author"
}
],
"date": "2015-06-14T18:11:30-04:00",
"abstractNote": "At this year's Nintendo World Championships, Nintendo announced that Wii U owners would be able to get their hands on an EarthBound Beginnings, a Virtual Console re-release of the original game in...",
"blogTitle": "Polygon",
"language": "en-US",
"url": "https://www.polygon.com/2015/6/14/8779193/earthbound-mother-famicom-wii-u-virtual-console-nintendo",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.polygon.com/2013/11/11/5090912/sega-genesis-retrospective-book-turns-to-kickstarter-for-funding",
"items": [
{
"itemType": "blogPost",
"title": "Sega Genesis retrospective book turns to Kickstarter for funding",
"creators": [
{
"firstName": "Griffin",
"lastName": "McElroy",
"creatorType": "author"
}
],
"date": "2013-11-11T11:30:02-05:00",
"abstractNote": "Sega Mega Drive/Genesis: Collected Works, a \"documentary art book\" chronicling the creation and full history of Sega's classic home console and its iconic software, has turned to Kickstarter to...",
"blogTitle": "Polygon",
"language": "en-US",
"url": "https://www.polygon.com/2013/11/11/5090912/sega-genesis-retrospective-book-turns-to-kickstarter-for-funding",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.polygon.com/news",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.polygon.com/search?q=earthbound",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.polygon.com/",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.heroesneverdie.com/",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.heroesneverdie.com/2018/7/2/17524654/overwatch-hammond-lore-controversy",
"items": [
{
"itemType": "blogPost",
"title": "Hammond brings a ton of joy back into Overwatch",
"creators": [
{
"firstName": "Cass",
"lastName": "Marshall",
"creatorType": "author"
}
],
"date": "2018-07-02T13:00:21-04:00",
"abstractNote": "After a bunch of dark heroes, it’s time to get fun again",
"blogTitle": "Heroes Never Die",
"language": "en-US",
"url": "https://www.heroesneverdie.com/2018/7/2/17524654/overwatch-hammond-lore-controversy",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.polygon.com/interviews/22454722/black-panther-comics-ending-ta-nehisi-coates-interview",
"items": [
{
"itemType": "blogPost",
"title": "‘The miracle is Wakanda’: Ta-Nehisi Coates on ending Black Panther",
"creators": [
{
"firstName": "Evan",
"lastName": "Narcisse",
"creatorType": "author"
}
],
"date": "2021-05-26T12:34:52-04:00",
"abstractNote": "The writer reflects on his half-decade Marvel run",
"blogTitle": "Polygon",
"language": "en-US",
"shortTitle": "‘The miracle is Wakanda’",
"url": "https://www.polygon.com/interviews/22454722/black-panther-comics-ending-ta-nehisi-coates-interview",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100czar^https?://(www\.)?digitalspy\.com/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2018 czar
http://en.wikipedia.org/wiki/User_talk:Czar
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, _url) {
if (doc.querySelector('.content-hed')) {
return "blogPost";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48'); // embedded metadata (EM)
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) { // corrections to EM
item.itemType = "blogPost";
item.language = "en-GB";
item.creators = []; // reset bad author metadata
var authorMetadata = doc.querySelectorAll('a[rel="author"]');
for (let author of authorMetadata) {
item.creators.push(ZU.cleanAuthor(author.text, "author"));
}
item.tags = []; // tags are pretty SEO-y now
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.addCustomFields({ // pull from meta tags in here
title: 'title'
});
trans.doWeb(doc, url);
});
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.simple-item > a');
for (let i = 0; i < rows.length; i++) {
let href = rows[i].href;
let title = ZU.trimInternal(text(rows[i], '.item-title'));
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
switch (detectWeb(doc, url)) {
case "multiple":
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) {
return;
}
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
break;
case "blogPost":
scrape(doc, url);
break;
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.digitalspy.com/videogames/xbox-one/a661615/rare-replay-review-roundup-one-of-the-best-collections-in-gaming-history/",
"items": [
{
"itemType": "blogPost",
"title": "Is Rare Replay good? First reviews go live",
"creators": [
{
"firstName": "Albaraa",
"lastName": "Fahmy",
"creatorType": "author"
}
],
"date": "2015-08-04 12:47:00",
"abstractNote": "Early reviews applaud the compilation for comprising countless hours of content.",
"blogTitle": "Digital Spy",
"language": "en-GB",
"shortTitle": "Is Rare Replay good?",
"url": "http://www.digitalspy.com/videogames/xbox-one/a661615/rare-replay-review-roundup-one-of-the-best-collections-in-gaming-history/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.digitalspy.com/videogames/mass-effect/a786594/mass-effect-andromeda-trailer-news-release-date-uk-story-characters-gameplay/",
"items": [
{
"itemType": "blogPost",
"title": "Mass Effect Andromeda trailers, news, release date and everything you need to know",
"creators": [
{
"firstName": "Sam",
"lastName": "Loveridge",
"creatorType": "author"
}
],
"date": "2017-03-13 01:00:00",
"abstractNote": "Including story, characters and more.",
"blogTitle": "Digital Spy",
"language": "en-GB",
"url": "http://www.digitalspy.com/videogames/mass-effect/a786594/mass-effect-andromeda-trailer-news-release-date-uk-story-characters-gameplay/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.digitalspy.com/soaps/coronation-street/a36407166/coronation-street-sharon-bentley-tricks-dev-alahan-leanne-search/",
"items": [
{
"itemType": "blogPost",
"title": "Coronation Street's Sharon tricks Dev in her search for Leanne",
"creators": [
{
"firstName": "Amy",
"lastName": "West",
"creatorType": "author"
}
],
"date": "2021-05-12 03:14:00",
"abstractNote": "She won't stop until she's got what she wants.",
"blogTitle": "Digital Spy",
"language": "en-GB",
"url": "https://www.digitalspy.com/soaps/coronation-street/a36407166/coronation-street-sharon-bentley-tricks-dev-alahan-leanne-search/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.digitalspy.com/search/?q=xbox",
"items": "multiple"
}
]
/** END TEST CASES **/
250Avram Lyon and Abe Jellinek^https?://[^/]+\.bibliocommons\.com//*
***** BEGIN LICENSE BLOCK *****
BiblioCommons Translator
Copyright © 2021 Avram Lyon <ajlyon@gmail.com> and Abe Jellinek
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.match(/\/v2\/record\//)) {
return "book";
}
if (url.match(/\/v2\/search\?[^/]*query=/)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('h2.cp-title > a[href*="/item/show"]');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(text(row, '.title-content'));
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
let item = new Zotero.Item();
item.libraryCatalog = attr(doc, 'meta[property="og:site_name"]', 'content');
let recordUrl = url.endsWith('/originalrecord') ? url : url + '/originalrecord';
ZU.processDocuments(recordUrl, function (marcDoc) {
if (!marcDoc.querySelector('.bib-item-row')) {
// a small number of items don't have MARC data
// in that case, we just do our best
Z.debug("No MARC data");
item.itemType = 'book';
item.title = text(doc, '.cp-bib-title span[aria-hidden]');
let subtitle = text(doc, '.cp-bib-subtitle');
if (subtitle) {
item.title += ": " + subtitle;
}
let authors = doc.querySelectorAll('.main-info .cp-bib-authors span[aria-hidden]');
for (let author of authors) {
item.creators.push(ZU.cleanAuthor(author.innerText, "author", true));
}
let bibFields = doc.querySelectorAll('.cp-bib-field');
for (let bibField of bibFields) {
if (text(bibField, '.cp-bib-field-label').includes("Publication")) {
let value = text(bibField, '.main-content').split(', ');
item.publisher = value[0];
item.date = value[1];
}
}
let isbnMatches = text(doc, 'script[data-iso-key="_0"]')
.match(/"values":\["([0-9]{10}|[0-9]{13})"\]/);
let isbn = isbnMatches && isbnMatches[1];
if (isbn) {
item.ISBN = ZU.cleanISBN(isbn);
}
item.complete();
return;
}
// Load MARC
let translator = Z.loadTranslator("import");
translator.setTranslator("a6ee60df-1ddc-4aae-bb25-45e0537be973");
translator.getTranslatorObject(function (marc) {
let record = new marc.record();
for (let row of marcDoc.querySelectorAll('.bib-item-row')) {
record.addField(text(row, '.tag'), text(row, '.indicator'), row.lastChild.innerText.replace(/\$/g, '\x1F'));
}
record.translate(item);
item.complete();
});
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://bostonpl.bibliocommons.com/v2/record/S75C2051015",
"items": [
{
"itemType": "book",
"title": "Labor",
"creators": [
{
"firstName": "Marcia McKenna",
"lastName": "Biddle",
"creatorType": "author"
}
],
"date": "1979",
"ISBN": "9780875181677",
"abstractNote": "Brief biographies of five women prominently involved in the labor movement in the United States: Mother Jones, Mary Heaton Vorse, Frances Perkins, Addie Wyatt, and Dolores Huerta. Also includes 11 other women who have made outstanding contributions",
"callNumber": "HD6079.2.U5 B52",
"libraryCatalog": "Boston Public Library",
"numPages": "126",
"place": "Minneapolis",
"publisher": "Dillon Press",
"series": "Contributions of women",
"attachments": [],
"tags": [
{
"tag": "Biography Juvenile literature"
},
{
"tag": "Biography Juvenile literature"
},
{
"tag": "Juvenile biography"
},
{
"tag": "Juvenile literature"
},
{
"tag": "United States"
},
{
"tag": "United States"
},
{
"tag": "Women"
},
{
"tag": "Women labor union members"
},
{
"tag": "Women labor union members"
},
{
"tag": "Working class"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://bostonpl.bibliocommons.com/v2/search?query=labor&searchType=smart",
"items": "multiple"
},
{
"type": "web",
"url": "https://markham.bibliocommons.com/v2/record/S34C297846",
"items": [
{
"itemType": "book",
"title": "The raven",
"creators": [
{
"firstName": "Edgar Allan",
"lastName": "Poe",
"creatorType": "author"
},
{
"firstName": "Ryan",
"lastName": "Price",
"creatorType": "author"
}
],
"date": "2006",
"ISBN": "9781553374732",
"abstractNote": "An illustrated version of Edgar Allan Poe's poem",
"callNumber": "J 811.3 Poe 9254tc",
"libraryCatalog": "Markham Public Library",
"numPages": "1",
"place": "Toronto",
"publisher": "Kids Can Press",
"series": "Visions in poetry",
"attachments": [],
"tags": [
{
"tag": "Fantasy poetry, American"
},
{
"tag": "Poetry"
},
{
"tag": "Ravens"
}
],
"notes": [
{
"note": "\"KCP Poetry.\""
}
],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
250Simon Kornblith, Michael Berkowitz, Ming Yeung Cheung^https?://[^/]+/F(/?[A-Z0-9\-]*(\?.*)?$|\?func=find|\?func=scan|\?func=short|\?local_base=)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Simon Kornblith, Michael Berkowitz, and Ming Yeung Cheung
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
/*
Aleph OPAC Translator
Example installations (mainly French):
http://naude.bibliotheque-mazarine.fr/
http://bibli.polytechnique.fr/
http://sifrix2.sdv.fr/
http://aleph.insa-rouen.fr
http://brenet.ens-lyon.fr
http://bu-pau.univ-pau.fr/
http://babel.bu.univ-paris5.fr
http://inti.univ-paris4.fr/
http://servaleph.univ-catholyon.fr/
http://armada.scd.univ-paris12.fr/
http://catalogue.univ-angers.fr/
http://biblio.ville-lehavre.fr/
http://opac.nebis.ch/
http://scd2.univ-lille1.fr/
http://catalogue.univ-paris1.fr/
http://source.ulg.ac.be/
http://med.cite-sciences.fr/
http://biblio.mulhouse.fr/
http://mediatheque.sigdci76.fr/
http://opac.biu-montpellier.fr/
Japanese Diet Library:
https://ndlopac.ndl.go.jp
Germany:
http://aleph-www.ub.fu-berlin.de
http://opac.hu-berlin.de
http://alephdai.ub.hu-berlin.de
https://aleph.mpg.de
Mexico:
iibiblio.unam.mx
Poland:
https://aleph.bg.pwr.wroc.pl/F
*/
function detectWeb(doc, url) {
var singleRe = new RegExp("^https?://[^/]+/F/?[A-Z0-9\\-]*\\?.*(?:func=full-set-set|func=direct|func=myshelf-full.*)");
if (singleRe.test(url)) {
return "book";
}
else {
var tags = doc.getElementsByTagName("a");
for (var i = 0; i < tags.length; i++) {
if (singleRe.test(tags[i].href)) {
return "multiple";
}
}
}
return false;
}
function doWeb(doc, url) {
var detailRe = new RegExp("^https?://[^/]+/F/?[A-Z0-9\\-]*\\?.*(?:func=full-set-set|func=direct|func=myshelf-full|func=myself_full.*)");
var mab2Opac = new RegExp("^https?://(?!alephdai)[^/]+berlin|193\\.30\\.112\\.134|duisburg-essen/F/[A-Z0-9\\-]+\\?.*|^https?://katalog\\.ub\\.uni-duesseldorf\\.de/F|^https?://aleph\\.mpg\\.de/F");
var uri = doc.location.href;
var newUris = [];
if (detailRe.test(uri)) {
// find the 'add to basket' link where it will have the document number, replace the function with 'direct'
if (doc.evaluate('//*[contains(@href, "myshelf-add-ful-1")]', doc, null, XPathResult.ANY_TYPE, null).iterateNext()) {
var elmtsAdd = doc.evaluate('//*[contains(@href, "myshelf-add-ful-1")]', doc, null, XPathResult.ANY_TYPE, null);
var adduri = elmtsAdd.iterateNext().attributes.getNamedItem("href").value;
adduri = adduri.replace("myshelf-add-ful-1", "direct");
// adduri = adduri.replace("myshelf-add-ful-1", "myshelf-full");
var baseuri = uri.match(".*\\?");
var funcuri = adduri.match("\\?.*");
newuri = baseuri + funcuri[0].match("[^\\?].*");
newuri += "&format=001";
// Zotero.debug('baseuri = ' + baseuri);
// Zotero.debug('funcuri = ' + funcuri);
Zotero.debug('directuri = ' + newuri);
}
else {
var newuri = uri.replace(/&format=[0-9]{3}/, "&format=001");
if (newuri == uri) newuri += "&format=001";
}
var translator = Zotero.loadTranslator("import");
if (mab2Opac.test(uri)) {
Z.debug("Using MAB2 translator");
translator.setTranslator("91acf493-0de7-4473-8b62-89fd141e6c74");
}
else {
translator.setTranslator("a6ee60df-1ddc-4aae-bb25-45e0537be973");
}
translator.getTranslatorObject(function (marc) {
Zotero.Utilities.processDocuments([newuri], function (newDoc) {
scrape(newDoc, marc, url);
});
});
}
else {
var itemRegexp = '^https?://[^/]+/F/?[A-Z0-9\\-]*\\?.*(?:func=full-set-set.*\\&format=999|func=direct|func=myshelf-full.*)';
var items = Zotero.Utilities.getItemArray(doc, doc, itemRegexp, '^[0-9]+$');
// ugly hack to see if we have any items
var haveItems = Array.isArray(items) && items.length != 0;
// If we don't have any items otherwise, let us use the numbers
if (!haveItems) {
items = Zotero.Utilities.getItemArray(doc, doc, itemRegexp);
// We try to get more text by grabbing the whole table row
var newItems = {};
for (var link in items) {
// Z.debug(link.match(/[A-Z0-9]{20}[A-Z0-9]*-[0-9]+\?func.*$/)[0]);
var text = ZU.xpathText(doc, '//a[contains(@href,"' + link.match(/[A-Z0-9]{20}[A-Z0-9]*-[0-9]+\?func.*$/)[0] + '")]/ancestor::tr[1]');
if (text) {
newItems[link] = text;
haveItems = true;
}
}
if (haveItems) items = newItems;
}
Zotero.selectItems(items, function (items) {
if (!items) {
return;
}
for (var i in items) {
var newUri = i.replace("&format=999", "&format=001");
if (newUri == i) {
newUri += "&format=001";
}
newUris.push(newUri);
}
var translator = Zotero.loadTranslator("import");
if (mab2Opac.test(uri)) {
Z.debug("Using MAB2 translator");
translator.setTranslator("91acf493-0de7-4473-8b62-89fd141e6c74");
}
else {
translator.setTranslator("a6ee60df-1ddc-4aae-bb25-45e0537be973");
}
translator.getTranslatorObject(function (marc) {
Zotero.Utilities.processDocuments(newUris, function (newDoc) {
scrape(newDoc, marc, url);
});
});
});
}
}
function scrape(newDoc, marc, url) {
// var nonstandard = false;
var th = false;
var ndl = false;
var xpath;
// Z.debug(uri)
if (newDoc.evaluate('//*[tr[td/text()="LDR"]]/tr[td[2]]', newDoc, null, XPathResult.ANY_TYPE, null).iterateNext()) {
xpath = '//*[tr[td/text()="LDR"]]/tr[td[2]]';
}
else if (newDoc.evaluate('//tbody[tr/td[@scope="row"]/strong[contains(text(), "LDR")]]', newDoc, null, XPathResult.ANY_TYPE, null).iterateNext()) {
// UCSB Pegasus
xpath = '//tbody[tr/td[@scope="row"]/strong[contains(text(), "LDR")]]/tr';
}
else if (newDoc.evaluate('//*[tr[th[normalize-space(text())="LDR"]]]/tr[td[1]]', newDoc, null, XPathResult.ANY_TYPE, null).iterateNext()) {
xpath = '//*[tr[th[normalize-space(text())="LDR"]]]/tr[td[1]]';
th = true;
}
else if (newDoc.evaluate('//tr[2]//table[2]//tr', newDoc, null, XPathResult.ANY_TYPE, null).iterateNext()) {
xpath = '//tr[2]//table[2]//tr[td[2]]';
// nonstandard = true;
}
else if (newDoc.evaluate('//table//tr[td[2][@class="td1"]]', newDoc, null, XPathResult.ANY_TYPE, null).iterateNext()) {
xpath = '//table//tr[td[2][@class="td1"]]';
// nonstandard = true;
}
else if (newDoc.evaluate('//table/tbody/tr[td/span/b]', newDoc, null, XPathResult.ANY_TYPE, null).iterateNext()) {
// for NDL library
xpath = '//table/tbody/tr[td/span/b]';
ndl = true;
}
else if (newDoc.evaluate('//tr/td[2]/table/tbody[tr/td[contains(text(), "LDR")]]', newDoc, null, XPathResult.ANY_TYPE, null).iterateNext()) {
xpath = '//tr/td[2]/table/tbody[tr/td[contains(text(), "LDR")]]/tr';
// nonstandard = true;
}
// Z.debug(xpath)
var elmts = newDoc.evaluate(xpath, newDoc, null, XPathResult.ANY_TYPE, null);
var elmt;
var record = new marc.record();
while ((elmt = elmts.iterateNext())) {
var field;
if (th) {
field = Zotero.Utilities.superCleanString(newDoc.evaluate('./th', elmt, null, XPathResult.ANY_TYPE, null).iterateNext().textContent);
}
else {
field = Zotero.Utilities.superCleanString(newDoc.evaluate('./td[1]', elmt, null, XPathResult.ANY_TYPE, null).iterateNext().textContent);
}
// if (nonstandard) {
// var field = Zotero.Utilities.superCleanString(newDoc.evaluate('./td[1]', elmt, null, XPathResult.ANY_TYPE, null).iterateNext().textContent);
// } else {
// var field = Zotero.Utilities.superCleanString(newDoc.evaluate('./TD[1]/text()[1]', elmt, null, XPathResult.ANY_TYPE, null).iterateNext().nodeValue);
// }
// var field = Zotero.Utilities.superCleanString(newDoc.evaluate('./td[1]', elmt, null, XPathResult.ANY_TYPE, null).iterateNext().textContent);
if (field) {
var value;
if (th) {
value = newDoc.evaluate('./TD[1]', elmt, null, XPathResult.ANY_TYPE, null).iterateNext().textContent; // .split(/\n/)[1];
}
else if (ndl) {
value = newDoc.evaluate('./TD[3]', elmt, null, XPathResult.ANY_TYPE, null).iterateNext().textContent;
}
else {
value = newDoc.evaluate('./TD[2]', elmt, null, XPathResult.ANY_TYPE, null).iterateNext().textContent; // .split(/\n/)[1];
}
if (value.split(/\n/)[1]) value = Zotero.Utilities.trimInternal(value.split(/\n/)[1]);
Zotero.debug(field + " : " + value);
if (field == "LDR") {
record.leader = value;
}
else if (field != "FMT") {
value = value.replace(/\|([a-z]) /g, marc.subfieldDelimiter + "$1");
var code = field.substring(0, 3);
var ind = "";
if (field.length > 3) {
ind = field[3];
if (field.length > 4) {
ind += field[4];
}
}
record.addField(code, ind, value);
}
}
}
var newItem = new Zotero.Item();
record.translate(newItem);
var domain = url.match(/https?:\/\/([^/]+)/);
newItem.repository = domain[1] + " Library Catalog";
for (var i in newItem.creators) {
if (!newItem.creators[i].firstName) {
var name = newItem.creators[i].lastName.split(/([^\s]+)\s+(.*)$/);
newItem.creators[i] = { lastName: name[1], firstName: name[2], creatorType: 'author' };
}
}
var oldCreators = newItem.creators;
newItem.creators = [];
var transient = [];
for (i = 0; i < oldCreators.length; i++) {
var a = oldCreators[i];
if (a.lastName) {
if (!a.lastName.match(/\d+/)) transient.push(a);
}
}
for (i = 0; i < transient.length; i++) {
a = transient[i];
if (a.firstName) {
if (a.firstName.match(/\|/)) a.firstName = a.firstName.match(/([^|]+)\s+|/)[1];
}
}
newItem.creators = transient;
newItem.title = newItem.title.replace(/(<<|>>)/g, '');
newItem.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://aleph.mpg.de/F?func=direct&doc_number=000000037&local_base=mpg01",
"items": [
{
"itemType": "book",
"title": "The primary auditory neurons of the mammalian cochlea",
"creators": [
{
"firstName": "Alain",
"lastName": "Dabdoub",
"creatorType": "author"
},
{
"firstName": "Bernd",
"lastName": "Fritzsch",
"creatorType": "author"
},
{
"firstName": "Arthur N.",
"lastName": "Popper",
"creatorType": "author"
},
{
"firstName": "Richard R.",
"lastName": "Fay",
"creatorType": "author"
}
],
"date": "2016",
"ISBN": "9781493930302",
"extra": "Literaturangaben",
"language": "eng",
"libraryCatalog": "aleph.mpg.de Library Catalog",
"series": "Springer handbook of auditory research ; 52",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://naude.bibliotheque-mazarine.fr/F/?func=direct&doc_number=000319644",
"items": [
{
"itemType": "book",
"title": "Registre du dépôt de Nesle: oeuvres d'art saisies pendant la Révolution chez les émigrés et condamnés parisiens en vue de l'instruction publique",
"creators": [
{
"firstName": "Jean-Pierre",
"lastName": "Samoyault ",
"creatorType": "author"
},
{
"lastName": "Société",
"firstName": "de l'histoire de l'art français ",
"creatorType": "author"
}
],
"date": "2021",
"ISBN": "9782701806174",
"language": "fre",
"libraryCatalog": "naude.bibliotheque-mazarine.fr Library Catalog",
"place": "Paris",
"publisher": "éditions de Boccard",
"series": "Archives de l'art français",
"seriesNumber": "nouvelle période, XLI",
"shortTitle": "Registre du dépôt de Nesle",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Matthias Mailänder^https?://(www\.)?pcgames\.de/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Matthias Mailänder
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/Tests/')) {
return "magazineArticle";
}
return false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "magazineArticle") {
scrape(doc, url);
}
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48'); // embedded metadata
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) { // correct bad metadata in here
if (url.includes('/Tests/')) {
item.itemType = "magazineArticle";
}
item.publicationTitle = "PC Games";
item.language = "de-DE";
item.creators = []; // reset bad author metadata
var authorMetadata = doc.querySelectorAll('a[class="editorNameLink "]');
for (let author of authorMetadata) {
item.creators.push(ZU.cleanAuthor(author.text, "author"));
}
item.complete();
});
translator.getTranslatorObject(function(trans) {
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.pcgames.de/Thimbleweed-Park-Spiel-55045/Tests/Review-Adventure-Ron-Gilbert-1224475/",
"items": [
{
"itemType": "magazineArticle",
"title": "Thimbleweed Park im Test: Adventure-Comeback von Ron Gilbert",
"shortTitle": "Thimbleweed Park im Test",
"creators": [
{
"firstName": "Felix",
"lastName": "Schütz",
"creatorType": "author"
}
],
"date": "2017-03-30T18:01:00+02:00",
"abstractNote": "Pixeloptik, Verben-Interface und knackige Rätsel: Ron Gilbert kehrt zu seinen Wurzeln zurück. Aber macht sein Retro-Adventure auch Spaß? Das klären wir im Test.",
"publicationTitle": "PC Games",
"libraryCatalog": "www.pcgames.de",
"language": "de-DE",
"url": "https://www.pcgames.de/Thimbleweed-Park-Spiel-55045/Tests/Review-Adventure-Ron-Gilbert-1224475/",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"notes": [],
"tags": [
{
"tag": "adventure"
},
{
"tag": "kickstarter"
},
{
"tag": "lucas arts"
},
{
"tag": "monkey island"
},
{
"tag": "retro"
}
],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100czar^https?://(www\.)?wired\.(com|co\.uk)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2018 czar
http://en.wikipedia.org/wiki/User_talk:Czar
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
// attr()/text() v2 per https://github.com/zotero/translators/issues/1277
function attr(docOrElem,selector,attr,index){var elem=index?docOrElem.querySelectorAll(selector).item(index):docOrElem.querySelector(selector);return elem?elem.getAttribute(attr):null;}function text(docOrElem,selector,index){var elem=index?docOrElem.querySelectorAll(selector).item(index):docOrElem.querySelector(selector);return elem?elem.textContent:null;}
function detectWeb(doc, url) {
if (/\/(\d{4}\/\d{2}|story|article)\//.test(url)) {
return "magazineArticle";
} else if (/\/(category|tag|topic)\/|search\/?\?q=|wired\.com\/?$|wired\.co\.uk\/?$/.test(url) && getSearchResults(doc, true)) {
return "multiple";
}
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48'); // embedded metadata
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
item.itemType = "magazineArticle";
if (url.includes("wired.co.uk/article")) {
item.publicationTitle = "Wired UK";
item.ISSN = "1357-0978";
item.date = Zotero.Utilities.strToISO(text(doc,'div.a-author__article-date')); // use LSON-LD when implemented in EM
} else { // if not wired.co.uk
item.publicationTitle = "Wired";
item.ISSN = "1059-1028";
item.date = attr(doc,'meta[name="DisplayDate"], meta[name="parsely-pub-date"]','content');
item.creators = [];
var authorMetadata = attr(doc,'meta[name="Author"], meta[name="parsely-author"]','content') || text(doc, 'a[href^="/author"]');
if (authorMetadata) {
item.creators.push(ZU.cleanAuthor(authorMetadata, "author"));
}
if (item.tags) { // catch volume/issue if in tags
var match = null;
for (let tag of item.tags) {
match = tag.match(/^(\d{2})\.(\d{2})$/);
if (match) {
item.volume = match[1];
item.issue = parseInt(match[2]);
item.tags.splice(item.tags.indexOf(tag),1);
break;
}
}
}
}
item.complete();
});
translator.getTranslatorObject(function(trans) {
trans.doWeb(doc, url);
});
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('div.card-component h2, li.archive-item-component h2, section.c-card-section article.c-card h3');
var links = doc.querySelectorAll('.card-component__description > a:first-of-type, li.archive-item-component > a:first-of-type, section.c-card-section article.c-card > a');
for (let i=0; i<rows.length; i++) {
let href = links[i].href;
let title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
switch (detectWeb(doc, url)) {
case "multiple":
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) {
return true;
}
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
break;
case "magazineArticle":
scrape(doc, url);
break;
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.wired.com/story/in-defense-of-the-vegan-hot-dog/",
"items": [
{
"itemType": "magazineArticle",
"title": "In Defense of the Vegan Hot Dog",
"creators": [
{
"firstName": "Emily",
"lastName": "Dreyfuss",
"creatorType": "author"
}
],
"date": "2018-07-04T14:00:00.000Z",
"ISSN": "1059-1028",
"abstractNote": "One carnivore's advice: When a tofu dog snuggles up to your tube steak on the grill, don’t be a jerk about it.",
"libraryCatalog": "www.wired.com",
"publicationTitle": "Wired",
"url": "https://www.wired.com/story/in-defense-of-the-vegan-hot-dog/",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [
{
"tag": "Cooking and Recipes"
},
{
"tag": "Food and Drink"
},
{
"tag": "grilling"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.wired.com/tag/kickstarter/",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.wired.com/category/culture/",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.wired.com/search/?q=kickstarter&page=1&sort=score",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.wired.co.uk/article/olafur-eliasson-little-sun-charge",
"items": [
{
"itemType": "magazineArticle",
"title": "Olafur Eliasson is Kickstarting a solar-powered phone charger",
"creators": [
{
"firstName": "James",
"lastName": "Temperton",
"creatorType": "author"
}
],
"date": "2015-09-03",
"ISSN": "1357-0978",
"abstractNote": "A high-performance, solar-powered phone charger designed by artist Olafur Eliasson and engineer Frederik Ottesen has raised more than €40,000 (£29,100) on Kickstarter",
"language": "en-GB",
"libraryCatalog": "www.wired.co.uk",
"publicationTitle": "Wired UK",
"url": "https://www.wired.co.uk/article/olafur-eliasson-little-sun-charge",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Design"
},
{
"tag": "Technology"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.wired.com/",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.wired.co.uk/",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.wired.co.uk/topic/culture",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.wired.co.uk/search?q=kickstarter",
"items": "multiple"
}
]
/** END TEST CASES **/
100Sebastian Karcher^https?://(www\.)?stitcher\.com/(search|show)//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2020 Sebastian Karcher
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
// attr()/text() v2
// eslint-disable-next-line
function attr(docOrElem,selector,attr,index){var elem=index?docOrElem.querySelectorAll(selector).item(index):docOrElem.querySelector(selector);return elem?elem.getAttribute(attr):null}function text(docOrElem,selector,index){var elem=index?docOrElem.querySelectorAll(selector).item(index):docOrElem.querySelector(selector);return elem?elem.textContent:null}
function detectWeb(doc, url) {
if (url.includes('/episode/')) {
return "podcast";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
// Podcast pages
var rows = doc.querySelectorAll('a.episode-link');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
// Z.debug(configJSON)
let title = text(doc, ".episodeTitle");
let episodeInfo = text(doc, ".episodeInfo");
if (episodeInfo) {
var duration = episodeInfo.replace(/\|\n?.+/, "").trim();
var date = episodeInfo.replace(/\.+\|/, "").trim();
}
let podcast = text(doc, ".showTitle");
let abstract = text(doc, ".episodeDescription");
var item = new Zotero.Item("podcast");
item.title = title;
item.seriesTitle = podcast;
item.abstractNote = abstract;
if (duration) item.runningTime = duration;
if (date) item.date = ZU.strToISO(date);
item.url = url;
item.attachments.push({ document: doc, title: "Snapshot" });
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.stitcher.com/show/qualitative-conversations/episode/episode-3-the-qualitative-data-repository-dr-sebastian-karcher-52527940",
"items": [
{
"itemType": "podcast",
"title": "Episode 3: The Qualitative Data Repository & Dr. Sebastian Karcher",
"creators": [],
"abstractNote": "Learn about resources available through Syracuse University's Qualitative Data Repository (QDR), as your host, Dr. Jessica Lester, joins in conversation with QDR Associate Director, Dr. Sebastian Karcher.",
"runningTime": "23 minutes",
"seriesTitle": "Qualitative Conversations",
"shortTitle": "Episode 3",
"url": "https://www.stitcher.com/show/qualitative-conversations/episode/episode-3-the-qualitative-data-repository-dr-sebastian-karcher-52527940",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.stitcher.com/show/qualitative-conversations",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.stitcher.com/search/Zotero/episodes",
"items": "multiple"
}
]
/** END TEST CASES **/
100Sebastian Karcher^https?://www\.hindawi\.com/(journals|search)//*
Translator
Copyright (C) 2021 Sebastian Karcher
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
// attr()/text() v2
// eslint-disable-next-line
function attr(docOrElem,selector,attr,index){var elem=index?docOrElem.querySelectorAll(selector).item(index):docOrElem.querySelector(selector);return elem?elem.getAttribute(attr):null;}function text(docOrElem,selector,index){var elem=index?docOrElem.querySelectorAll(selector).item(index):docOrElem.querySelector(selector);return elem?elem.textContent:null;}
// eslint-disable-next-line no-unused-vars
function detectWeb(doc, url) {
if (attr(doc, 'meta[name="citation_title"]', 'content')) {
return "journalArticle";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('div.toc_article');
for (let row of rows) {
let href = attr(row, 'a[aria-label="Article Title"]', 'href');
let title = ZU.trimInternal(text(row, 'h2'));
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
// translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
if (!item.pages && item.DOI) {
// use article ID as a page (seems to be the last part of URL/DOI)
item.pages = 'e' + item.DOI.substr(item.DOI.lastIndexOf('/') + 1);
}
if (item.DOI) {
item.DOI = ZU.cleanDOI(item.DOI);
}
// convert html entities in abstract
if (item.abstractNote) {
item.abstractNote = ZU.unescapeHTML(item.abstractNote);
}
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.itemType = "journalArticle";
// TODO map additional meta tags here, or delete completely
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://www.hindawi.com/journals/jo/2012/",
"items": "multiple"
},
{
"type": "web",
"url": "http://www.hindawi.com/search/all/data/",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.hindawi.com/journals/ije/2015/210527/",
"items": [
{
"itemType": "journalArticle",
"title": "Validity of 12-Month Falls Recall in Community-Dwelling Older Women Participating in a Clinical Trial",
"creators": [
{
"firstName": "Kerrie M.",
"lastName": "Sanders",
"creatorType": "author"
},
{
"firstName": "Amanda L.",
"lastName": "Stuart",
"creatorType": "author"
},
{
"firstName": "David",
"lastName": "Scott",
"creatorType": "author"
},
{
"firstName": "Mark A.",
"lastName": "Kotowicz",
"creatorType": "author"
},
{
"firstName": "Geoff C.",
"lastName": "Nicholson",
"creatorType": "author"
}
],
"date": "2015/07/27",
"DOI": "10.1155/2015/210527",
"ISSN": "1687-8337",
"abstractNote": "Objectives. To compare 12-month falls recall with falls reported prospectively on daily falls calendars in a clinical trial of women aged ≥70 years. Methods. 2,096 community-dwelling women at high risk of falls and/or fracture completed a daily falls calendar and standardised interviews when falls were recorded, for 12 months. Data were compared to a 12-month falls recall question that categorised falls status as “no falls,” “a few times,” “several,” and “regular” falls. Results. 898 (43%) participants reported a fall on daily falls calendars of whom 692 (77%) recalled fall(s) at 12 months. Participants who did not recall a fall were older (median 79.3 years versus 77.8 years, ). Smaller proportions of fallers who sustained an injury or accessed health care failed to recall a fall (all ). Among participants who recalled “no fall,” 85% reported zero falls on daily calendars. Few women selected falls categories of “several times” or “regular” (4.1% and 0.4%, resp.) and the sensitivity of these categories was low (30% to 33%). Simply categorising participants into fallers or nonfallers had 77% sensitivity and 94% specificity. Conclusion. For studies where intensive ascertainment of falls is not feasible, 12-month falls recall questions with fewer responses may be an acceptable alternative.",
"language": "en",
"libraryCatalog": "www.hindawi.com",
"pages": "e210527",
"publicationTitle": "International Journal of Endocrinology",
"url": "https://www.hindawi.com/journals/ije/2015/210527/",
"volume": "2015",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Tim Sherratt, Aurimas Vinckevicius^https?://recordsearch\.naa\.gov\.au//*
National Archives of Australia Translator
Copyright (C) 2011 Tim Sherratt (tim@discontents.com.au, @wragge)
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
var multiplesRE = /\/(SeriesListing|ItemsListing|PhotoSearchSearchResults|PhotoListing)\.asp/i;
var singleItemRE = /\/(SeriesDetail|ItemDetail|PhotoSearchItemDetail|ViewImage|PhotoDetail)\.asp/i;
function detectWeb(doc, url) {
// RecordSearch - items and series - or Photosearch results
if (multiplesRE.test(url)) {
return getSearchResults(doc, url, true) ? "multiple" : false;
}
else if (singleItemRE.test(url)) {
return "manuscript";
}
return false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, url), function (items) {
if (!items) {
return;
}
var urls = [];
for (var i in items) {
urls.push(i);
}
ZU.processDocuments(urls, scrape);
});
}
else {
scrape(doc, url);
}
}
function getSearchResults(doc, url, checkOnly) {
var title,
link,
results,
table,
items = {},
found = false;
var m = url.match(multiplesRE);
if (!m) return false;
switch (m[1].toLowerCase()) {
case 'serieslisting':
table = doc.getElementsByClassName('SearchResults')[0];
if (!table) return false;
results = ZU.xpath(doc, '//table[@class="SearchResults"]//tr[@class!="header"]');
for (let i = 0; i < results.length; i++) {
title = results[i].getElementsByTagName('td')[2];
if (!title) continue;
link = getCleanLinkFromCell(title);
if (!link) continue;
if (checkOnly) return true;
found = true;
items[link] = ZU.trimInternal(title.textContent);
}
break;
case 'itemslisting':
table = doc.getElementsByClassName('SearchResults')[0];
if (!table) return false;
results = ZU.xpath(doc, '//table[@class="SearchResults"]//tr[@class!="header"]');
for (let i = 0; i < results.length; i++) {
title = results[i].getElementsByTagName('td')[3];
if (!title) continue;
link = getCleanLinkFromCell(title);
if (!link) continue;
if (checkOnly) return true;
found = true;
items[link] = ZU.trimInternal(title.textContent);
}
break;
case 'photolisting':
// Try the list view first
results = ZU.xpath(doc, '//table[contains(@id, "PhotoResults")]//table[@class="greyboxdetail"]');
var view = 'list';
// If no results try grid view
if (!results.length) {
results = ZU.xpath(doc, '//table[contains(@id, "PhotoResults")]/tbody/tr/td[@title]');
view = 'grid';
}
for (let i = 0; i < results.length; i++) {
if (view == 'list') {
title = results[i].getElementsByTagName('td')[1];
if (!title) continue;
link = getCleanLinkFromCell(title);
if (!link) continue;
title = title.textContent;
}
else {
title = results[i].getAttribute('title');
if (!title) continue;
link = results[i].getElementsByTagName('a')[0];
if (!link) continue;
link = link.href;
}
if (checkOnly) return true;
found = true;
items[link] = ZU.trimInternal(title);
}
break;
}
return found ? items : false;
}
function getHost(url) {
return url.match(/^https?:\/\/[^/]+/)[0];
}
function scrape(doc, url) {
var m = url.match(singleItemRE);
if (!m) return;
var item;
switch (m[1].toLowerCase()) {
case 'viewimage':
item = scrapeImage(doc, url);
break;
case 'photosearchitemdetail':
item = scrapePhoto(doc, url);
break;
case 'photodetail':
item = scrapePhoto(doc, url);
break;
case 'seriesdetail':
item = scrapeSeries(doc, url);
break;
case 'itemdetail':
item = scrapeItem(doc, url);
break;
default:
throw new Error("Unknown page type: " + m[1]);
}
if (item) {
item.archive = item.libraryCatalog = "National Archives of Australia";
item.complete();
}
}
function createPersistentLink(id, linkType) {
// Create persistent (as possible) links into RS
return 'https://recordsearch.naa.gov.au/scripts/AutoSearch.asp?O=' + linkType + '&Number=' + id;
}
function stripSeries(series) {
// Return cleaned contents of series cells, removing the extra notice
return series.substr(0, series.search(/(Click|All)/));
}
function getCleanLinkFromCell(cell) {
// Get a url from a cell that has an onclick attribute.
var link = cell.getAttribute('onclick');
link = link.substring(link.indexOf("'"));
return 'https://recordsearch.naa.gov.au/SearchNRetrieve/Interface/' + ZU.superCleanString(link);
}
/**
* Series/Item scraping
*/
function parseItemTable(table) {
var meta = {},
rows = table.getElementsByTagName('tr');
for (let i = 0; i < rows.length; i++) {
var td = rows[i].getElementsByTagName('td');
if (td.length != 2) continue;
var label = ZU.trimInternal(td[0].textContent).toLowerCase();
var data;
if (label == 'series note') {
// grab the full note, instead of the truncation
var notes = table.ownerDocument.getElementById('notes');
if (notes && notes.children.length == 2
&& (notes = notes.getElementsByTagName('pre')[0])
) {
data = notes.textContent;
}
else {
data = ZU.trimInternal(td[1].textContent);
}
}
else if (label == 'related searches') {
var childrens = td[1].getElementsByTagName('a');
data = [];
for (let j = 0; j < childrens.length; j++) {
data.push(childrens[i].textContent.trim());
}
}
else {
data = ZU.trimInternal(td[1].textContent);
}
if (!label || !data) continue;
meta[label] = data;
}
return meta;
}
function scrapeItem(doc) {
var meta = parseItemTable(ZU.xpath(doc, '//div[@class="detailsTable"]//tbody')[0]);
if (!meta) return null;
var item = new Zotero.Item('manuscript');
item.title = meta.title;
item.type = 'item';
item.date = meta['contents date range'];
item.place = meta.location;
var series = stripSeries(meta['series number']);
var control = meta['control symbol'];
item.archiveLocation = series + ', ' + control;
item['access status'] = meta['access status'];
item['access decision'] = meta['date of decision'];
var barcode = encodeURIComponent(meta['item id']);
item.url = createPersistentLink(barcode, 'I');
if (meta['item notes']) {
item.notes.push(meta['item notes']);
}
// Add link to digital copy if available
if (ZU.xpath(doc, '//div[contains(@id, "_pnlDigitalCopy")]/a[contains(normalize-space(text()), "View digital copy")]').length) {
// item.attachments.push({
// title: "Digital copy at National Archives of Australia",
// url: 'https://recordsearch.naa.gov.au/SearchNRetrieve/Interface/ViewImage.aspx?B=' + barcode,
// mimeType: 'text/html',
// snapshot: false
// });
item.attachments.push({
title: 'National Archives of Australia item PDF',
url: 'https://recordsearch.naa.gov.au/SearchNRetrieve/NAAMedia/ViewPDF.aspx?B=' + barcode + '&D=D',
mimeType: 'application/pdf'
});
}
return item;
}
function scrapeSeries(doc) {
var meta = parseItemTable(ZU.xpath(doc, '//div[@class="detailsTable"]//tbody')[0]);
if (!meta) return null;
var item = new Zotero.Item('manuscript');
item.title = meta.title;
item.type = 'series';
item.date = meta['contents dates'];
// Split multiple holdings with semi-colon
if (meta['quantity and location']) {
item.place = meta['quantity and location'].replace(/([A-Z]{1})([0-9]{1})/g, '$1; $2');
}
item.format = meta['predominant physical format'];
item.abstractNote = meta['series note'];
item.archiveLocation = meta['series number'];
item['number of items'] = stripSeries(meta['items in this series on recordsearch']);
var seriesNumber = encodeURIComponent(meta['series number']);
item.url = createPersistentLink(seriesNumber, 'S');
// Agencies recording into this series
var agencies = ZU.xpath(doc, '//div[@id="provenanceRecording"]//div[@class="linkagesInfo"]');
for (let i = 0; i < agencies.length; i++) {
item.creators.push({
lastName: ZU.trimInternal(agencies[i].textContent),
creatorType: "author",
fieldMode: 1
});
}
return item;
}
/**
* ViewImage
*/
function getImageField(doc, label) {
label = 'lbl' + label;
var data = doc.getElementById(label);
if (!data) return '';
return ZU.trimInternal(data.textContent);
}
function scrapeImage(doc, url) {
var image = doc.getElementById('divImage'),
singleView = image && image.offsetParent; // check if visble
var total = doc.getElementsByName('hTotalPages')[0],
page = doc.getElementsByName('hCurrentPage')[0];
page = page && Number.parseInt(page.value);
total = total && Number.parseInt(total.value);
var item = new Zotero.Item('manuscript');
item.title = getImageField(doc, 'Title');
if (singleView && page && total != 1) {
item.title += ' [' + page + (total ? ' of ' + total : '') + ']';
}
item.date = getImageField(doc, 'ContentsDate');
item.archiveLocation = getImageField(doc, 'Series') + ', ' + getImageField(doc, 'ControlSymbol');
var barcode = getImageField(doc, 'Barcode');
item.url = getHost(url) + '/SearchNRetrieve/Interface/ViewImage.aspx?'
+ 'B=' + encodeURIComponent(barcode)
+ (singleView ? '&S=' + page : '');
var imageUrlBase = '/SearchNRetrieve/NAAMedia/ShowImage.aspx?T=P&B=' + encodeURIComponent(barcode);
// In single view, save current image. In multiples view, save all
// (unless more than 10, then don't save at all)
if ((singleView && page) || (!singleView && total && total < 11)) {
var from = singleView ? page - 1 : 0, to = singleView ? page : total;
// var includeCount = total != 1;
for (let i = from; i < to; i++) {
item.attachments.push({
title: 'Folio'
+ (total != 1
? ' ' + (i + 1) + (total ? ' of ' + total : '')
: '')
+ ' [' + item.archiveLocation + ']',
url: imageUrlBase + '&S=' + page,
mimeType: 'image/jpeg'
});
}
}
return item;
}
/*
* PhotoSearch
*/
function scrapePhoto(doc) {
var table = ZU.xpath(doc, '//table[contains(@id, "PhotoDetailTable")]//table[contains(@id, "GreyBoxTable")]/tbody')[0];
if (!table) return null;
var meta = parseItemTable(table);
var item = new Zotero.Item('manuscript');
item.title = meta.title;
item.type = 'photograph';
item.date = meta.date || meta['date range'];
item.place = meta.location || meta['item location'];
item.archiveLocation = meta['series/control symbol'];
item.url = createPersistentLink(encodeURIComponent(meta['item id']), 'PSI');
if (meta['related searches']) {
item.tags = meta['related searches'];
}
var imageurl = ZU.xpathText(doc, '//table[contains(@id, "PhotoDetailTable")]//img/@src');
if (imageurl) {
imageurl = imageurl.replace(/([?&])T=[^&]*(?:&|$)/g, '$1') + '&T=P'; // T=P better quality
item.attachments.push({
title: 'Digital image of NAA: ' + item.archiveLocation,
url: imageurl,
mimeType: 'image/jpeg' // Seems like that is generally the case
});
}
return item;
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://recordsearch.naa.gov.au/SearchNRetrieve/Interface/ViewImage.aspx?B=12048&S=4",
"defer": true,
"items": [
{
"itemType": "manuscript",
"title": "Carl Gustav Opitz - Naturalization [4 of 7]",
"creators": [],
"date": "1911 - 1912",
"archive": "National Archives of Australia",
"archiveLocation": "A1, 1911/18393",
"libraryCatalog": "National Archives of Australia",
"url": "https://recordsearch.naa.gov.au/SearchNRetrieve/Interface/ViewImage.aspx?B=12048&S=4",
"attachments": [
{
"title": "Folio 4 of 7 [A1, 1911/18393]",
"mimeType": "image/jpeg"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://recordsearch.naa.gov.au/scripts/AutoSearch.asp?O=PSI&Number=11404473",
"defer": true,
"items": [
{
"itemType": "manuscript",
"title": "Antarctica - A Gentoo penguin on Heard Island guards its nesting mate [photographic image]. 1 photographic negative: b&w, acetate",
"creators": [],
"date": "1949 - 1949",
"archive": "National Archives of Australia",
"archiveLocation": "A1200, L11912",
"libraryCatalog": "National Archives of Australia",
"manuscriptType": "photograph",
"place": "Canberra",
"shortTitle": "Antarctica - A Gentoo penguin on Heard Island guards its nesting mate [photographic image]. 1 photographic negative",
"url": "https://recordsearch.naa.gov.au/scripts/AutoSearch.asp?O=PSI&Number=11404473",
"attachments": [
{
"title": "Digital image of NAA: A1200, L11912",
"mimeType": "image/jpeg"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"defer": true,
"url": "https://recordsearch.naa.gov.au/scripts/AutoSearch.asp?O=I&Number=149309",
"items": [
{
"itemType": "manuscript",
"title": "The Wragge Estate. Property for sale.",
"creators": [],
"date": "1917 - 1917",
"archive": "National Archives of Australia",
"archiveLocation": "A2479, 17/1306",
"libraryCatalog": "National Archives of Australia",
"manuscriptType": "item",
"place": "Canberra",
"url": "https://recordsearch.naa.gov.au/scripts/AutoSearch.asp?O=I&Number=149309",
"attachments": [
{
"title": "National Archives of Australia item PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://recordsearch.naa.gov.au/scripts/AutoSearch.asp?O=S&Number=A2",
"defer": true,
"items": [
{
"itemType": "manuscript",
"title": "Correspondence files, annual single number series",
"creators": [
{
"lastName": "CA 588, Prime Minister's Office",
"creatorType": "author",
"fieldMode": 1
},
{
"lastName": "CA 12, Prime Minister's Department",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "01 Jan 1895 - 31 Dec 1926",
"abstractNote": "Name Index Volumes, 1917-1951 (ex CP 602/1, AS12/8)",
"archive": "National Archives of Australia",
"archiveLocation": "A2",
"libraryCatalog": "National Archives of Australia",
"manuscriptType": "series",
"place": "35.74 metres held in ACT",
"url": "https://recordsearch.naa.gov.au/scripts/AutoSearch.asp?O=S&Number=A2",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Bartek Kawula^https?://journals\.scholarsportal\.info//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Bartek Kawula
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/my-articles')) {
if (getItems(doc)) {
return 'multiple';
}
}
else if (url.includes('/search?q')) {
if (getItems(doc)) {
return 'multiple';
}
}
else if (url.includes('/browse/')) {
let browse = doc.getElementById('toc');
if (browse) {
Zotero.monitorDOMChanges(browse.parentElement);
}
if (getItems(doc)) {
return 'multiple';
}
}
else if (url.includes('/details/')) {
return 'journalArticle';
}
return false;
}
function doWeb(doc, url) {
let type = detectWeb(doc, url);
if (type == 'multiple') {
let list = getItems(doc);
Zotero.selectItems(list, function (selectedItems) {
if (!selectedItems) return true;
let articles = [];
for (let i in selectedItems) {
let article = '/ris?uri=' + i;
articles.push(article);
}
ZU.doGet(articles, scrape);
return false;
}
);
}
else {
let uri = getURI(url);
let article = '/ris?uri=' + uri;
ZU.doGet(article, scrape);
}
return false;
}
function getURI(url) {
var a = '';
var b = '';
if (url.includes('/details/')) {
a = url.indexOf('details');
b = url.indexOf('xml');
return url.substring(a + 7, b + 3);
}
else if (url.includes('/resolve/')) {
if (url.includes('.xml')) {
a = url.indexOf('/resolve/');
b = url.indexOf('xml');
return url.substring(a + 9, b + 3);
}
else {
return '/' + url.split('/resolve/')[1] + '.xml';
}
}
return false;
}
function getItems(doc) {
var items = {}, found = false;
var titles = '';
if (doc.URL.includes('/my-articles')) {
titles = ZU.xpath(doc.getElementById('my-articles-list'), './/div[@class = "title"]/h3/a');
for (let i = 0; i < titles.length; i++) {
let title = ZU.trimInternal(titles[i].textContent);
let uri = getURI(titles[i].href);
items[uri] = title;
found = true;
}
}
else {
if (doc.URL.includes('/browse')) {
titles = ZU.xpath(doc, './/div/h3/a');
}
else {
titles = ZU.xpath(doc.getElementById('result-list'), './/div[@class = "details"]/h3/a');
}
for (let i = 0; i < titles.length; i++) {
let title = ZU.trimInternal(titles[i].textContent);
let uri = getURI(titles[i].href);
items[uri] = title;
found = true;
}
}
return found ? items : false;
}
function scrape(text) {
// loading RIS transformer.
let translator = Zotero.loadTranslator('import');
translator.setTranslator('32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7');
translator.setString(text);
translator.setHandler('itemDone', function (obj, item) {
let uri = getURI(item.attachments[0].path);
let pdfURL = '/pdf' + uri;
item.url = 'https://journals.scholarsportal.info/details' + uri;
item.attachments = [{
url: pdfURL,
title: 'Scholars Portal Full Text PDF',
mimeType: 'application/pdf'
}];
item.complete();
});
translator.translate();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://journals.scholarsportal.info/search?q=water&search_in=anywhere&date_from=&date_to=&sort=relevance&sub=",
"items": "multiple"
},
{
"type": "web",
"url": "https://journals.scholarsportal.info/details/10704965/v16i0001/58_ioiaaphwuiub.xml",
"items": [
{
"itemType": "journalArticle",
"title": "Impact of Increased Access and Price on Household Water Use in Urban Bolivia",
"creators": [
{
"lastName": "Israel",
"firstName": "Debra K.",
"creatorType": "author"
}
],
"date": "2007",
"DOI": "10.1177/1070496506298190",
"ISSN": "1070-4965",
"abstractNote": "Using the 1994 Bolivian Integrated Household Survey, this study analyzes the equity implications of urban water sector reform including both increased water prices and increased access to piped water. Household water expenditures are examined by income decile, and low-income households are found to spend a higher percentage of income on water than high-income households. However, households purchasing from private water vendors could benefit from obtaining piped water, because regression analysis shows that on average, these households spend more on water than those with piped water inside their buildings or yards. This differential was the greatest in the city of Cochabamba, which also had the largest percentage of households purchasing from private water vendors. To understand the equity impact of water reform, the effects on both prereform users of piped water and those without access to piped water must be considered.",
"issue": "1",
"journalAbbreviation": "The Journal of Environment & Development",
"libraryCatalog": "Scholars Portal Journals",
"pages": "58-83",
"publicationTitle": "The Journal of Environment & Development",
"url": "https://journals.scholarsportal.info/details/10704965/v16i0001/58_ioiaaphwuiub.xml",
"volume": "16",
"attachments": [
{
"title": "Scholars Portal Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Bolivia"
},
{
"tag": "Latin America"
},
{
"tag": "equity"
},
{
"tag": "water reform"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://journals.scholarsportal.info/browse/toc?uri=/08939454&p=1",
"items": "multiple"
}
]
/** END TEST CASES **/
100Ben Parr^https?://(www2?\.|blogs\.)?edweek\.org//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2021 Sebastian Karcher
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
// eslint-disable-next-line no-unused-vars
function detectWeb(doc, url) {
if (doc.getElementsByClassName('m-article-title').length) {
return "newspaperArticle";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('a.m-promo__title');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
// translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
// some garbage makes it into item tags
for (let i = item.tags.length - 1; i > -1; i--) {
if (item.tags[i].search(/premium\d|^lytics/) != -1) {
item.tags.splice(i, 1);
}
}
item.title = item.title.replace(/\(.+?\)$/, "");
item.ISSN = "0277-4232";
item.publicationTitle = "Education Week";
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.itemType = "newspaperArticle";
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.edweek.org/policy-politics/obama-using-education-issue-as-political-sword/2011/10?tkn=PUOFjigAbQPNufjjHPxYeafVz7T5Tf16qNb4&cmp=clp-edweek",
"items": [
{
"itemType": "newspaperArticle",
"title": "Obama Using Education Issue as Political Sword",
"creators": [
{
"firstName": "Michele",
"lastName": "McNeil",
"creatorType": "author"
}
],
"date": "2011-10-28T00:01:02",
"ISSN": "0277-4232",
"abstractNote": "The Obama administration highlights its education record, while drawing a sharp contrast with the GOP in Congress.",
"language": "en",
"libraryCatalog": "www.edweek.org",
"publicationTitle": "Education Week",
"section": "Education Funding",
"url": "https://www.edweek.org/policy-politics/obama-using-education-issue-as-political-sword/2011/10",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Barack Obama"
},
{
"tag": "Elections"
},
{
"tag": "Federal Policy"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.edweek.org/leadership/opinion-a-better-turnaround-strategy/2011/10?qs=%22character%20education%22%20inmeta%3ACover_year%3D2011%20inmeta%3Agsaentity_Source%2520U%E2%80%A6",
"items": [
{
"itemType": "newspaperArticle",
"title": "A Better Turnaround Strategy",
"creators": [
{
"firstName": "Sheldon H.",
"lastName": "Berman",
"creatorType": "author"
},
{
"firstName": "Arthur",
"lastName": "Camins",
"creatorType": "author"
}
],
"date": "2011-10-31T17:22:41",
"ISSN": "0277-4232",
"abstractNote": "Sheldon H. Berman and Arthur Camins describe a successful turnaround model which promotes a professionalized and collaborative teaching culture that is also student centered.",
"language": "en",
"libraryCatalog": "www.edweek.org",
"publicationTitle": "Education Week",
"section": "Equity & Diversity",
"url": "https://www.edweek.org/leadership/opinion-a-better-turnaround-strategy/2011/10",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Innovation"
},
{
"tag": "Underserved Students"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.edweek.org/search?q=testing#nt=navsearch",
"items": "multiple"
}
]
/** END TEST CASES **/
{"getCollections":"true","dataMode":"rdf\/xml"}{"exportNotes":true,"exportFileData":false}25Simon Kornblithrdfvar addedCollections = new Set();
var item;
var rdf = "http://www.w3.org/1999/02/22-rdf-syntax-ns#";
var n = {
bib:"http://purl.org/net/biblio#",
dc:"http://purl.org/dc/elements/1.1/",
dcterms:"http://purl.org/dc/terms/",
prism:"http://prismstandard.org/namespaces/1.2/basic/",
foaf:"http://xmlns.com/foaf/0.1/",
vcard:"http://nwalsh.com/rdf/vCard#",
vcard2:"http://www.w3.org/2006/vcard/ns#", // currently used only for NSF, but is probably
// very similar to the nwalsh vcard ontology in a
// different namespace
link:"http://purl.org/rss/1.0/modules/link/",
z:"http://www.zotero.org/namespaces/export#"
};
function generateRelations(resource, relations) {
for (let predicate in relations) {
if (predicate == 'dc:relation') {
for (let uri of relations[predicate]) {
if (itemResources[uri]) {
Zotero.RDF.addStatement(resource, n.dc + "relation", itemResources[uri], false);
}
}
}
}
}
function generateTags(resource, tags) {
Zotero.debug("processing tags");
for (var i=0; i<tags.length; i++) {
var tag = tags[i];
if (tag.type == 1) {
var tagResource = Zotero.RDF.newResource();
// set tag type and value
Zotero.RDF.addStatement(tagResource, rdf+"type", n.z+"AutomaticTag", false);
Zotero.RDF.addStatement(tagResource, rdf+"value", tag.tag, true);
// add relationship to resource
Zotero.RDF.addStatement(resource, n.dc+"subject", tagResource, false);
} else {
Zotero.RDF.addStatement(resource, n.dc+"subject", tag.tag, true);
}
}
}
function generateCollection(collection) {
var collectionResource = "#collection_"+collection.id;
Zotero.RDF.addStatement(collectionResource, rdf+"type", n.z+"Collection", false);
Zotero.RDF.addStatement(collectionResource, n.dc+"title", collection.name, true);
var children = collection.children ? collection.children : collection.descendents;
if (!children) return;
for (var i=0; i<children.length; i++) {
var child = children[i];
// add child list items
if (child.type == "collection") {
Zotero.RDF.addStatement(collectionResource, n.dcterms+"hasPart", "#collection_"+child.id, false);
addedCollections.add(child.id);
// do recursive processing of collections
generateCollection(child);
} else if (itemResources[child.id]) {
Zotero.RDF.addStatement(collectionResource, n.dcterms+"hasPart", itemResources[child.id], false);
}
}
}
/**
* Get display title
* Analogous to getDisplayTitle in item.js, but returns null if no display title distinct from
* title property
*/
function getDisplayTitle(item) {
if (!item.title && (item.itemType == "interview" || item.itemType == "letter")) {
var participants = [];
for (var i=0; i<item.creators.length; i++) {
var creator = item.creators[i];
if (item.itemType == "letter" && creator.creatorType == "recipient" ||
item.itemType == "interview" && creator.creatorType == "interviewer") {
participants.push(creator);
}
}
var displayTitle = "["+(item.itemType == "letter" ? "Letter" : "Interview");
if (participants.length) {
//var names = [creator.firstName ? creator.firstName+" "+creator.lastName : creator.lastName
var names = [];
for (var i=0; i<participants.length; i++) {
names.push(participants[i].lastName);
}
displayTitle += (item.itemType == "letter" ? " to " : " of ")+names[0];
if (participants.length == 2) {
displayTitle += " and "+names[1];
} else if (participants.length == 3) {
displayTitle += ", "+names[1]+", and "+names[2];
} else if (participants.length > 3) {
displayTitle += " et al.";
}
}
return displayTitle+"]";
} if (item.itemType == "case" && item.title && item.reporter) { // 'case' itemTypeID
return item.title+' (' + item.reporter + ')';
}
return null;
}
function generateItem(item, zoteroType, resource) {
var container = null;
var containerElement = null;
/** CORE FIELDS **/
// type
var type = null;
if (zoteroType == "book") {
type = n.bib+"Book";
} else if (zoteroType == "bookSection") {
type = n.bib+"BookSection";
container = n.bib+"Book";
} else if (zoteroType == "journalArticle") {
type = n.bib+"Article";
container = n.bib+"Journal";
} else if (zoteroType == "magazineArticle") {
type = n.bib+"Article";
container = n.bib+"Periodical";
} else if (zoteroType == "newspaperArticle") {
type = n.bib+"Article";
container = n.bib+"Newspaper";
} else if (zoteroType == "thesis") {
type = n.bib+"Thesis";
} else if (zoteroType == "letter") {
type = n.bib+"Letter";
} else if (zoteroType == "manuscript") {
type = n.bib+"Manuscript";
} else if (zoteroType == "interview") {
type = n.bib+"Interview";
} else if (zoteroType == "film") {
type = n.bib+"MotionPicture";
} else if (zoteroType == "artwork") {
type = n.bib+"Illustration";
} else if (zoteroType == "webpage") {
type = n.bib+"Document";
container = n.z+"Website";
} else if (zoteroType == "note") {
type = n.bib+"Memo";
if (!Zotero.getOption("exportNotes")) {
return;
}
} else if (zoteroType == "attachment") {
type = n.z+"Attachment";
} else if (zoteroType == "report") {
type = n.bib+"Report";
} else if (zoteroType == "bill") {
type = n.bib+"Legislation";
} else if (zoteroType == "case") {
type = n.bib+"Document"; // ??
container = n.bib+"CourtReporter";
} else if (zoteroType == "hearing") {
type = n.bib+"Report";
} else if (zoteroType == "patent") {
type = n.bib+"Patent";
} else if (zoteroType == "statute") {
type = n.bib+"Legislation";
} else if (zoteroType == "email") {
type = n.bib+"Letter";
} else if (zoteroType == "map") {
type = n.bib+"Image";
} else if (zoteroType == "blogPost") {
type = n.bib+"Document";
container = n.z+"Blog";
} else if (zoteroType == "instantMessage") {
type = n.bib+"Letter";
} else if (zoteroType == "forumPost") {
type = n.bib+"Document";
container = n.z+"Forum";
} else if (zoteroType == "audioRecording") {
type = n.bib+"Recording";
} else if (zoteroType == "presentation") {
type = n.bib+"ConferenceProceedings";
} else if (zoteroType == "videoRecording") {
type = n.bib+"Recording";
} else if (zoteroType == "tvBroadcast") {
type = n.bib+"Recording";
} else if (zoteroType == "radioBroadcast") {
type = n.bib+"Recording";
} else if (zoteroType == "podcast") {
type = n.bib+"Recording";
} else if (zoteroType == "computerProgram") {
type = n.bib+"Data";
} else if (zoteroType == "encyclopediaArticle"
|| zoteroType == "dictionaryEntry") {
container = n.bib+"Book";
} else if (zoteroType == "conferencePaper") {
container = n.bib+"Journal";
}
if (type) {
Zotero.RDF.addStatement(resource, rdf+"type", type, false);
}
Zotero.RDF.addStatement(resource, n.z+"itemType", zoteroType, true);
// generate section
if (item.section) {
var section = Zotero.RDF.newResource();
// set section type
Zotero.RDF.addStatement(section, rdf+"type", n.bib+"Part", false);
// set section title
Zotero.RDF.addStatement(section, n.dc+"title", item.section, true);
// add relationship to resource
Zotero.RDF.addStatement(resource, n.dcterms+"isPartOf", section, false);
}
// generate container
if (container) {
var testISSN = "urn:issn:"+encodeURI(item.ISSN);
if (item.ISSN && !Zotero.RDF.getArcsIn(testISSN)) {
// use ISSN as container URI if no other item is
containerElement = testISSN;
} else {
containerElement = Zotero.RDF.newResource();
}
// attach container to section (if exists) or resource
Zotero.RDF.addStatement((section ? section : resource), n.dcterms+"isPartOf", containerElement, false);
// add container type
Zotero.RDF.addStatement(containerElement, rdf+"type", container, false);
}
// generate series
if (item.series || item.seriesTitle || item.seriesText || item.seriesNumber) {
var series = Zotero.RDF.newResource();
// set series type
Zotero.RDF.addStatement(series, rdf+"type", n.bib+"Series", false);
// add relationship to resource
Zotero.RDF.addStatement((containerElement ? containerElement : resource), n.dcterms+"isPartOf", series, false);
}
// generate publisher
// BEGIN NSF
if (zoteroType == "nsfReviewer") {
var organization = Zotero.RDF.newResource();
Zotero.RDF.addStatement(organization, rdf+"type", n.vcard2+"Organization", false);
Zotero.RDF.addStatement(resource, n.vcard2+"org", organization, false);
} else {
// END NSF
if (item.publisher || item.distributor || item.label || item.company || item.institution || item.place) {
var organization = Zotero.RDF.newResource();
// set organization type
Zotero.RDF.addStatement(organization, rdf+"type", n.foaf+"Organization", false);
// add relationship to resource
Zotero.RDF.addStatement(resource, n.dc+"publisher", organization, false);
}
}
var typeProperties = ["reportType", "videoRecordingType", "letterType",
"manuscriptType", "mapType", "thesisType", "websiteType",
"audioRecordingType", "presentationType", "postType",
"audioFileType"];
var ignoreProperties = ["itemID", "itemType", "firstCreator", "dateAdded",
"dateModified", "section", "sourceItemID"];
// creators
if (item.creators) { // authors/editors/contributors
var creatorContainers = new Object();
// not yet in biblio
var biblioCreatorTypes = ["author", "editor", "contributor"];
for (var j in item.creators) {
var creator = Zotero.RDF.newResource();
Zotero.RDF.addStatement(creator, rdf+"type", n.foaf+"Person", false);
// gee. an entire vocabulary for describing people, and these aren't even
// standardized in it. oh well. using them anyway.
Zotero.RDF.addStatement(creator, n.foaf+"surname", item.creators[j].lastName, true);
if (item.creators[j].firstName) {
Zotero.RDF.addStatement(creator, n.foaf+"givenName", item.creators[j].firstName, true);
}
if (biblioCreatorTypes.indexOf(item.creators[j].creatorType) != -1) {
var cTag = n.bib+item.creators[j].creatorType+"s";
} else {
var cTag = n.z+item.creators[j].creatorType+"s";
}
if (!creatorContainers[cTag]) {
var creatorResource = Zotero.RDF.newResource();
// create new seq for author type
creatorContainers[cTag] = Zotero.RDF.newContainer("seq", creatorResource);
// attach container to resource
Zotero.RDF.addStatement(resource, cTag, creatorResource, false);
}
Zotero.RDF.addContainerElement(creatorContainers[cTag], creator, false);
}
}
// notes
if (item.notes && Zotero.getOption("exportNotes")) {
for (let note of item.notes) {
let noteResource = itemResources[note.itemID];
// add note tag
Zotero.RDF.addStatement(noteResource, rdf+"type", n.bib+"Memo", false);
// add note item.notes
Zotero.RDF.addStatement(noteResource, rdf + "value", note.note, true);
// add relationship between resource and note
Zotero.RDF.addStatement(resource, n.dcterms+"isReferencedBy", noteResource, false);
// Add note relations to RDF
if (note.relations) generateRelations(noteResource, note.relations);
generateTags(noteResource, note.tags);
}
}
// child attachments
if (item.attachments) {
for (var i=0; i<item.attachments.length; i++) {
var attachment = item.attachments[i];
var attachmentResource = itemResources[attachment.itemID];
Zotero.RDF.addStatement(resource, n.link+"link", attachmentResource, false);
generateItem(attachment, "attachment", attachmentResource);
}
}
// relative file path for attachment items
if (item.defaultPath) { // For Zotero 3.0
item.saveFile(item.defaultPath, true);
Zotero.RDF.addStatement(resource, rdf+"resource", item.defaultPath, false);
} else if (item.path) { // For Zotero 2.1
Zotero.RDF.addStatement(resource, rdf+"resource", item.path, false);
}
// Related items and tags
if (item.relations) generateRelations(resource, item.relations);
if (item.tags) generateTags(resource, item.tags);
for (var property in item.uniqueFields) {
var value = item[property];
if (!value) continue;
if (property == "title") { // title
// BEGIN NSF
if (zoteroType == "nsfReviewer") {
Zotero.RDF.addStatement(resource, n.vcard2+"fn", value, true);
} else {
// END NSF
Zotero.RDF.addStatement(resource, n.dc+"title", value, true);
}
} else if (property == "source") { // authors/editors/contributors
Zotero.RDF.addStatement(resource, n.dc+"source", value, true);
} else if (property == "url") { // url
// BEGIN NSF
if (item.homepage) {
Zotero.RDF.addStatement(resource, n.vcard2+"url", value, false);
} else {
// END NSF
// add url as identifier
var term = Zotero.RDF.newResource();
// set term type
Zotero.RDF.addStatement(term, rdf+"type", n.dcterms+"URI", false);
// set url value
Zotero.RDF.addStatement(term, rdf+"value", value, true);
// add relationship to resource
Zotero.RDF.addStatement(resource, n.dc+"identifier", term, false);
}
} else if (property == "accessionNumber") { // accessionNumber as generic ID
Zotero.RDF.addStatement(resource, n.dc+"identifier", value, true);
} else if (property == "rights") { // rights
Zotero.RDF.addStatement(resource, n.dc+"rights", value, true);
} else if (property == "edition" || // edition
property == "version") { // version
Zotero.RDF.addStatement(resource, n.prism+"edition", value, true);
} else if (property == "date") { // date
if (item.dateSent) {
Zotero.RDF.addStatement(resource, n.dcterms+"dateSubmitted", value, true);
} else {
Zotero.RDF.addStatement(resource, n.dc+"date", value, true);
}
} else if (property == "accessDate") { // accessDate
Zotero.RDF.addStatement(resource, n.dcterms+"dateSubmitted", value, true);
} else if (property == "issueDate") { // issueDate
Zotero.RDF.addStatement(resource, n.dcterms+"issued", value, true);
} else if (property == "pages") { // pages
// not yet part of biblio, but should be soon
Zotero.RDF.addStatement(resource, n.bib+"pages", value, true);
} else if (property == "extra") { // extra
Zotero.RDF.addStatement(resource, n.dc+"description", value, true);
} else if (property == "mimeType") { // mimeType
Zotero.RDF.addStatement(resource, n.link+"type", value, true);
} else if (property == "charset") { // charset
Zotero.RDF.addStatement(resource, n.link+"charset", value, true);
// THE FOLLOWING ARE ALL PART OF THE CONTAINER
} else if (property == "ISSN") { // ISSN
Zotero.RDF.addStatement((containerElement ? containerElement : resource), n.dc+"identifier", "ISSN "+value, true);
} else if (property == "ISBN") { // ISBN
Zotero.RDF.addStatement((containerElement ? containerElement : resource), n.dc+"identifier", "ISBN "+value, true);
} else if (property == "DOI") { // DOI
Zotero.RDF.addStatement((containerElement ? containerElement : resource), n.dc+"identifier", "DOI "+value, true);
} else if (property == "publicationTitle" || // publicationTitle
property == "reporter") { // reporter
Zotero.RDF.addStatement((containerElement ? containerElement : resource), n.dc+"title", value, true);
} else if (property == "journalAbbreviation") { // journalAbbreviation
Zotero.RDF.addStatement((containerElement ? containerElement : resource), n.dcterms+"alternative", value, true);
} else if (property == "volume") { // volume
Zotero.RDF.addStatement((containerElement ? containerElement : resource), n.prism+"volume", value, true);
} else if (property == "issue" || // issue
property == "number" || // number
property == "patentNumber") { // patentNumber
Zotero.RDF.addStatement((containerElement ? containerElement : resource), n.prism+"number", value, true);
} else if (property == "callNumber") {
var term = Zotero.RDF.newResource();
// set term type
Zotero.RDF.addStatement(term, rdf+"type", n.dcterms+"LCC", false);
// set callNumber value
Zotero.RDF.addStatement(term, rdf+"value", value, true);
// add relationship to resource
Zotero.RDF.addStatement(resource, n.dc+"subject", term, false);
} else if (property == "abstractNote") {
Zotero.RDF.addStatement(resource, n.dcterms+"abstract", value, true);
// THE FOLLOWING ARE ALL PART OF THE SERIES
} else if (property == "series") { // series
Zotero.RDF.addStatement(series, n.dc+"title", value, true);
} else if (property == "seriesTitle") { // seriesTitle
Zotero.RDF.addStatement(series, n.dcterms+"alternative", value, true);
} else if (property == "seriesText") { // seriesText
Zotero.RDF.addStatement(series, n.dc+"description", value, true);
} else if (property == "seriesNumber") { // seriesNumber
Zotero.RDF.addStatement(series, n.dc+"identifier", value, true);
// THE FOLLOWING ARE ALL PART OF THE PUBLISHER
} else if (property == "publisher" || // publisher
property == "distributor" || // distributor (film)
property == "label" || // label (audioRecording)
property == "company" || // company (computerProgram)
property == "institution") { // institution (report)
// BEGIN NSF
if (zoteroType == "nsfReviewer") {
Zotero.RDF.addStatement(organization, n.vcard2+"organization-name", value, true);
} else {
// END NSF
Zotero.RDF.addStatement(organization, n.foaf+"name", value, true);
}
} else if (property == "place") { // place
var address = Zotero.RDF.newResource();
// set address type
Zotero.RDF.addStatement(address, rdf+"type", n.vcard+"Address", false);
// set address locality
Zotero.RDF.addStatement(address, n.vcard+"locality", value, true);
// add relationship to organization
Zotero.RDF.addStatement(organization, n.vcard+"adr", address, false);
} else if (property == "archiveLocation") { // archiveLocation
Zotero.RDF.addStatement(resource, n.dc+"coverage", value, true);
} else if (property == "interviewMedium" ||
property == "artworkMedium") { // medium
Zotero.RDF.addStatement(resource, n.dcterms+"medium", value, true);
} else if (property == "conferenceName") {
var conference = Zotero.RDF.newResource();
// set conference type
Zotero.RDF.addStatement(conference, rdf+"type", n.bib+"Conference", false);
// set conference title
Zotero.RDF.addStatement(conference, n.dc+"title", value, true);
// add relationship to conference
Zotero.RDF.addStatement(resource, n.bib+"presentedAt", conference, false);
} else if (typeProperties.indexOf(property) != -1) {
Zotero.RDF.addStatement(resource, n.dc+"type", value, true);
// THE FOLLOWING RELATE TO NOTES
} else if (property == "note") {
if (Zotero.getOption("exportNotes")) {
if (item.itemType == "attachment") {
Zotero.RDF.addStatement(resource, n.dc+"description", value, true);
} else if (item.itemType == "note") {
Zotero.RDF.addStatement(resource, rdf+"value", value, true);
}
}
// BEGIN NSF
} else if (property == "address") {
var address = Zotero.RDF.newResource();
Zotero.RDF.addStatement(address, rdf+"type", n.vcard2+"Address", false);
Zotero.RDF.addStatement(address, n.vcard2+"label", value, true);
Zotero.RDF.addStatement(resource, n.vcard2+"adr", address, false);
} else if (property == "telephone") {
Zotero.RDF.addStatement(resource, n.vcard2+"tel", value, true);
} else if (property == "email") {
Zotero.RDF.addStatement(resource, n.vcard2+"email", value, true);
} else if (property == "accepted") {
Zotero.RDF.addStatement(resource, n.dcterms+"dateAccepted", value, true);
// END NSF
// THIS CATCHES ALL REMAINING PROPERTIES
} else if (ignoreProperties.indexOf(property) == -1) {
Zotero.debug("Zotero RDF: using Zotero namespace for property "+property);
Zotero.RDF.addStatement(resource, n.z+property, value, true);
}
}
var displayTitle = getDisplayTitle(item);
if (displayTitle) Zotero.RDF.addStatement(resource, n.z+"displayTitle", displayTitle, true);
}
function doExport() {
// add namespaces
for (var i in n) {
Zotero.RDF.addNamespace(i, n[i]);
}
// leave as global
itemResources = new Array();
// keep track of resources already assigned (in case two book items have the
// same ISBN, or something like that)
var usedResources = new Array();
var items = new Array();
// first, map each ID to a resource
while (item = Zotero.nextItem()) {
items.push(item);
Zotero.debug(item);
var testISBN = "urn:isbn:"+encodeURI(item.ISBN);
if (item.ISBN && !usedResources[testISBN]) {
itemResources[item.itemID] = itemResources[item.uri] = testISBN;
usedResources[itemResources[item.itemID]] = true;
} else if (item.itemType != "attachment" && item.url && !usedResources[item.url]) {
itemResources[item.itemID] = itemResources[item.uri] = item.url;
usedResources[itemResources[item.itemID]] = true;
} else {
// just specify a node ID
itemResources[item.itemID] = itemResources[item.uri] = "#item_" + item.itemID;
}
if (item.notes) {
for (var j in item.notes) {
itemResources[item.notes[j].itemID] = itemResources[item.notes[j].uri] = "#item_" + item.notes[j].itemID;
}
}
if (item.attachments) {
for (var i=0; i<item.attachments.length; i++) {
var attachment = item.attachments[i];
// just specify a node ID
itemResources[attachment.itemID] = itemResources[attachment.uri] = "#item_" + attachment.itemID;
}
}
}
for (var i=0; i<items.length; i++) {
var item = items[i];
// these items are global
generateItem(item, item.itemType, itemResources[item.itemID]);
}
/** RDF COLLECTION STRUCTURE **/
var collection;
while (collection = Zotero.nextCollection()) {
// Skip collections already added via recursion in generateCollection()
// TODO: Remove after everyone has 5.0.96, which fixes this with b3220e83b
if (addedCollections.has(collection.id)) continue;
generateCollection(collection);
}
}
100Philipp Zumstein^https?://(query\.nytimes\.com/(search|gst)/|(select\.|www\.|mobile\.|[^\/.]*\.blogs\.)?nytimes\.com/)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2017 Philipp Zumstein
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
// we use another function name to avoid confusions with the
// same function from the called EM translator (sigh)
return detectWebHere(doc, url);
}
function detectWebHere(doc, url) {
if (url.includes('/search') && getSearchResults(doc, true)) {
return "multiple";
}
if (ZU.xpathText(doc, '//meta[@property="og:type" and @content="article"]/@content')) {
if (url.includes('blog')) {
return "blogPost";
}
else {
return "newspaperArticle";
}
}
return false;
}
function scrape(doc, url) {
var type = detectWebHere(doc, url);
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
// translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
item.itemType = type;
if (item.language) {
if (item.language === "en") {
item.language = "en-US";
}
}
else {
item.language = ZU.xpathText(doc, '//meta[@itemprop="inLanguage"]/@content') || "en-US";
}
if (item.date) {
item.date = ZU.strToISO(item.date);
}
else {
item.date = attr(doc, 'time[datetime]', 'datetime')
|| attr(doc, 'meta[itemprop="datePublished"]', 'content')
|| attr(doc, 'meta[itemprop="dateModified"]', 'content');
}
if (item.itemType == "blogPost") {
item.blogTitle = ZU.xpathText(doc, '//meta[@property="og:site_name"]/@content');
}
else {
item.publicationTitle = "The New York Times";
item.ISSN = "0362-4331";
}
// Multiple authors are (sometimes) just put into the same Metadata field
var authors = attr(doc, 'meta[name="author"]', 'content') || attr(doc, 'meta[name="byl"]', 'content') || text(doc, '*[class^="Byline-bylineAuthor--"]');
if (authors && item.creators.length <= 1) {
authors = authors.replace(/^By /, '');
if (authors == authors.toUpperCase()) { // convert to title case if all caps
authors = ZU.capitalizeTitle(authors, true);
}
item.creators = [];
var authorsList = authors.split(/,|\band\b/);
for (let i = 0; i < authorsList.length; i++) {
item.creators.push(ZU.cleanAuthor(authorsList[i], "author"));
}
}
item.url = ZU.xpathText(doc, '//link[@rel="canonical"]/@href') || url;
if (item.url && item.url.substr(0, 2) == "//") {
item.url = "https:" + item.url;
}
item.libraryCatalog = "NYTimes.com";
// Convert all caps title of NYT archive pages to title case
if (item.title == item.title.toUpperCase()) {
item.title = ZU.capitalizeTitle(item.title, true);
}
// Strip "(Published [YEAR])" from old articles
item.title = item.title.replace(/\s+\(Published \d{4}\)$/, '');
// Only force all caps to title case when all tags are all caps
var allcaps = true;
for (let i = 0; i < item.tags.length; i++) {
if (item.tags[i] != item.tags[i].toUpperCase()) {
allcaps = false;
break;
}
}
if (allcaps) {
for (let i = 0; i < item.tags.length; i++) {
item.tags[i] = ZU.capitalizeTitle(item.tags[i], true);
}
}
/* TODO: Fix saving the PDF attachment which is currently broken
// PDF attachments are in subURL with key & signature
var pdfurl = ZU.xpathText(doc, '//div[@id="articleAccess"]//span[@class="downloadPDF"]/a[contains(@href, "/pdf")]/@href | //a[@class="button download-pdf-button"]/@href');
if (pdfurl) {
ZU.processDocuments(pdfurl,
function(pdfDoc) {
authenticatedPDFURL = pdfDoc.getElementById('archivePDF').src;
if (authenticatedPDFURL) {
item.attachments.push({
title: "NYTimes Archive PDF",
mimeType: 'application/pdf',
url: authenticatedPDFURL
});
} else {
Z.debug("Could not find authenticated PDF URL");
item.complete();
}
},
function() {
Z.debug("PDF retrieved: "+authenticatedPDFURL);
item.complete();
}
);
} else {
*/
Z.debug("Not attempting PDF retrieval");
item.complete();
// }
});
translator.getTranslatorObject(function (trans) {
trans.splitTags = false;
trans.addCustomFields({
dat: 'date',
});
trans.doWeb(doc, url);
});
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('li[data-testid*="result"]');
for (var i = 0; i < rows.length; i++) {
var href = ZU.xpathText(rows[i], '(.//a)[1]/@href');
var title = ZU.xpathText(rows[i], './/h4');
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) {
return;
}
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
}
else {
scrape(doc, url);
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.nytimes.com/1912/03/05/archives/two-money-inquiries-hearings-of-trust-charges-and-aldrich-plan-at.html",
"items": [
{
"itemType": "newspaperArticle",
"title": "TWO MONEY INQUIRIES.; Hearings of Trust Charges and Aldrich Plan at the Same Time.",
"creators": [
{
"firstName": "Special to The New York",
"lastName": "Times",
"creatorType": "author"
}
],
"date": "1912-03-05",
"ISSN": "0362-4331",
"abstractNote": "com weighs holding simultaneous hearings on money trust and Aldrich plan",
"language": "en-US",
"libraryCatalog": "NYTimes.com",
"publicationTitle": "The New York Times",
"section": "Archives",
"url": "https://www.nytimes.com/1912/03/05/archives/two-money-inquiries-hearings-of-trust-charges-and-aldrich-plan-at.html",
"attachments": [],
"tags": [
{
"tag": "Banks and Banking"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.nytimes.com/2010/08/21/education/21harvard.html?_r=1&scp=1&sq=marc%20hauser&st=cse",
"items": [
{
"itemType": "newspaperArticle",
"title": "Harvard Finds Marc Hauser Guilty of Scientific Misconduct",
"creators": [
{
"firstName": "Nicholas",
"lastName": "Wade",
"creatorType": "author"
}
],
"date": "2010-08-20",
"ISSN": "0362-4331",
"abstractNote": "The university has found Marc Hauser “solely responsible” for eight instances of scientific misconduct.",
"language": "en-US",
"libraryCatalog": "NYTimes.com",
"publicationTitle": "The New York Times",
"section": "Education",
"url": "https://www.nytimes.com/2010/08/21/education/21harvard.html",
"attachments": [],
"tags": [
{
"tag": "Ethics"
},
{
"tag": "Harvard University"
},
{
"tag": "Hauser, Marc D"
},
{
"tag": "Research"
},
{
"tag": "Science and Technology"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.nytimes.com/search?query=marc%20hauser&sort=best",
"defer": true,
"items": "multiple"
},
{
"type": "web",
"url": "https://opinionator.blogs.nytimes.com/2013/06/19/our-broken-social-contract/",
"items": [
{
"itemType": "blogPost",
"title": "Our Broken Social Contract",
"creators": [
{
"firstName": "Thomas B.",
"lastName": "Edsall",
"creatorType": "author"
}
],
"date": "2013-06-19",
"abstractNote": "At their core, are America’s problems primarily economic or moral?",
"blogTitle": "Opinionator",
"language": "en-US",
"url": "https://opinionator.blogs.nytimes.com/2013/06/19/our-broken-social-contract/",
"attachments": [],
"tags": [
{
"tag": "Economic Conditions and Trends"
},
{
"tag": "Income Inequality"
},
{
"tag": "Social Conditions and Trends"
},
{
"tag": "Thomas B. Edsall"
},
{
"tag": "United States"
},
{
"tag": "United States Economy"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.nytimes.com/2015/05/10/nyregion/manicurists-in-new-york-area-are-underpaid-and-unprotected.html?_r=0",
"items": [
{
"itemType": "newspaperArticle",
"title": "반짝이는 매니큐어에 숨겨진 네일 미용사들의 어두운 삶",
"creators": [
{
"firstName": "Sarah Maslin",
"lastName": "Nir",
"creatorType": "author"
}
],
"date": "2015-05-07",
"ISSN": "0362-4331",
"abstractNote": "뉴욕타임스는 취재 중 많은 네일숍 직원들이 부당한 대우와 인종차별 및 학대에 흔하게 시달리며 정부 노동자법률기구의 보호도 제대로 받지 못한다는 사실을 발견했다.",
"language": "ko-KR",
"libraryCatalog": "NYTimes.com",
"publicationTitle": "The New York Times",
"section": "New York",
"url": "https://www.nytimes.com/2015/05/10/nyregion/manicurists-in-new-york-area-are-underpaid-and-unprotected.html",
"attachments": [],
"tags": [
{
"tag": "Beauty Salons"
},
{
"tag": "Discrimination"
},
{
"tag": "Korean-Americans"
},
{
"tag": "Labor and Jobs"
},
{
"tag": "New York City"
},
{
"tag": "Wages and Salaries"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.nytimes.com/2017/05/24/us/politics/russia-trump-manafort-flynn.html?hp&action=click&pgtype=Homepage&clickSource=story-heading&module=span-ab-top-region®ion=top-news&WT.nav=top-news&_r=0",
"items": [
{
"itemType": "newspaperArticle",
"title": "Top Russian Officials Discussed How to Influence Trump Aides Last Summer",
"creators": [
{
"firstName": "Matthew",
"lastName": "Rosenberg",
"creatorType": "author"
},
{
"firstName": "Adam",
"lastName": "Goldman",
"creatorType": "author"
},
{
"firstName": "Matt",
"lastName": "Apuzzo",
"creatorType": "author"
}
],
"date": "2017-05-24",
"ISSN": "0362-4331",
"abstractNote": "American spies collected intelligence last summer revealing that Russians were debating how to work with Trump advisers, current and former officials say.",
"language": "en-US",
"libraryCatalog": "NYTimes.com",
"publicationTitle": "The New York Times",
"section": "U.S.",
"url": "https://www.nytimes.com/2017/05/24/us/politics/russia-trump-manafort-flynn.html",
"attachments": [],
"tags": [
{
"tag": "Cyberwarfare and Defense"
},
{
"tag": "Espionage and Intelligence Services"
},
{
"tag": "Flynn, Michael T"
},
{
"tag": "Manafort, Paul J"
},
{
"tag": "Presidential Election of 2016"
},
{
"tag": "Russia"
},
{
"tag": "Trump, Donald J"
},
{
"tag": "United States Politics and Government"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.nytimes.com/1966/09/12/archives/draft-deferment-scored-at-rutgers.html?login=email&auth=login-email",
"items": [
{
"itemType": "newspaperArticle",
"title": "Draft Deferment Scored at Rutgers",
"creators": [],
"date": "1966-09-12",
"ISSN": "0362-4331",
"abstractNote": "P Goodman urges Rutgers U students to campaign for abolition of student deferment, s, freshman orientation",
"language": "en-US",
"libraryCatalog": "NYTimes.com",
"publicationTitle": "The New York Times",
"section": "Archives",
"url": "https://www.nytimes.com/1966/09/12/archives/draft-deferment-scored-at-rutgers.html",
"attachments": [],
"tags": [
{
"tag": "Colleges and Universities"
},
{
"tag": "Draft and Mobilization of Troops"
},
{
"tag": "Miscellaneous Section"
},
{
"tag": "United States"
},
{
"tag": "United States Armament and Defense"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.nytimes.com/1970/11/12/archives/ideological-labels-changing-along-with-the-labelmakers-ideological.html",
"items": [
{
"itemType": "newspaperArticle",
"title": "Ideological Labels Changing Along With the Label–Makers",
"creators": [
{
"firstName": "Israel",
"lastName": "Shenker",
"creatorType": "author"
}
],
"date": "1970-11-12",
"ISSN": "0362-4331",
"abstractNote": "Comment on labeling pol ideology of intellectuals, apropos of Prof N Glazer coming pub of book of essays on subject; Glazer classification of P Goodman, D Macdonald, M Harrington, I Howe and late C W Mills noted; Goodman, Macdonald, Howe, Harrington, Prof Trilling, I Kristol, N Podhoretz, D Bell, B Rustin, Prof H Rosenberg comment; some pors",
"language": "en-US",
"libraryCatalog": "NYTimes.com",
"publicationTitle": "The New York Times",
"section": "Archives",
"url": "https://www.nytimes.com/1970/11/12/archives/ideological-labels-changing-along-with-the-labelmakers-ideological.html",
"attachments": [],
"tags": [
{
"tag": "Bell, Daniel"
},
{
"tag": "Glazer, Nathan"
},
{
"tag": "Goodman, Paul"
},
{
"tag": "Howe, Irving"
},
{
"tag": "Intellectuals"
},
{
"tag": "Kristol, Irving"
},
{
"tag": "Macdonald, Dwight"
},
{
"tag": "Podhoretz, Norman"
},
{
"tag": "Politics and Government"
},
{
"tag": "Trilling, Lionel"
},
{
"tag": "United States"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.nytimes.com/2017/07/03/business/oreo-new-flavors.html",
"items": [
{
"itemType": "newspaperArticle",
"title": "When Just Vanilla Won’t Do, How About a Blueberry Pie Oreo?",
"creators": [
{
"firstName": "Maya",
"lastName": "Salam",
"creatorType": "author"
}
],
"date": "2017-07-03",
"ISSN": "0362-4331",
"abstractNote": "The company has increasingly been experimenting with limited-edition flavors that seemed designed as much for an Instagram feed as they are to be eaten.",
"language": "en-US",
"libraryCatalog": "NYTimes.com",
"publicationTitle": "The New York Times",
"section": "Business",
"url": "https://www.nytimes.com/2017/07/03/business/oreo-new-flavors.html",
"attachments": [],
"tags": [
{
"tag": "Contests and Prizes"
},
{
"tag": "Cookies"
},
{
"tag": "Mondelez International Inc"
},
{
"tag": "Oreo"
},
{
"tag": "Social Media"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.nytimes.com/2018/01/11/opinion/social-media-dumber-steven-pinker.html",
"items": [
{
"itemType": "newspaperArticle",
"title": "Opinion | Social Media Is Making Us Dumber. Here’s Exhibit A.",
"creators": [
{
"firstName": "Jesse",
"lastName": "Singal",
"creatorType": "author"
}
],
"date": "2018-01-11",
"ISSN": "0362-4331",
"abstractNote": "Steven Pinker is a liberal, Jewish professor. But social media convinced people that he’s a darling of the alt-right.",
"language": "en-US",
"libraryCatalog": "NYTimes.com",
"publicationTitle": "The New York Times",
"section": "Opinion",
"url": "https://www.nytimes.com/2018/01/11/opinion/social-media-dumber-steven-pinker.html",
"attachments": [],
"tags": [
{
"tag": "Anti-Semitism"
},
{
"tag": "Fringe Groups and Movements"
},
{
"tag": "Harvard University"
},
{
"tag": "Jews and Judaism"
},
{
"tag": "Pinker, Steven"
},
{
"tag": "Social Media"
},
{
"tag": "Twitter"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.nytimes.com/interactive/2017/11/10/us/men-accused-sexual-misconduct-weinstein.html",
"items": [
{
"itemType": "newspaperArticle",
"title": "After Weinstein: 71 Men Accused of Sexual Misconduct and Their Fall From Power",
"creators": [
{
"firstName": "Sarah",
"lastName": "Almukhtar",
"creatorType": "author"
},
{
"firstName": "Michael",
"lastName": "Gold",
"creatorType": "author"
},
{
"firstName": "Larry",
"lastName": "Buchanan",
"creatorType": "author"
}
],
"date": "2017-11-10",
"ISSN": "0362-4331",
"abstractNote": "A list of men who have resigned, been fired or otherwise lost power since the Harvey Weinstein scandal broke.",
"language": "en-US",
"libraryCatalog": "NYTimes.com",
"publicationTitle": "The New York Times",
"section": "U.S.",
"shortTitle": "After Weinstein",
"url": "https://www.nytimes.com/interactive/2017/11/10/us/men-accused-sexual-misconduct-weinstein.html, https://www.nytimes.com/interactive/2017/11/10/us/men-accused-sexual-misconduct-weinstein.html",
"attachments": [],
"tags": [
{
"tag": "#MeToo Movement"
},
{
"tag": "Besh, John (1968- )"
},
{
"tag": "C K, Louis"
},
{
"tag": "Conyers, John Jr"
},
{
"tag": "Cornish, Tony"
},
{
"tag": "Franken, Al"
},
{
"tag": "Franks, Trent"
},
{
"tag": "Huff, Justin"
},
{
"tag": "Keillor, Garrison"
},
{
"tag": "Lauer, Matt"
},
{
"tag": "Levine, James"
},
{
"tag": "Lizza, Ryan"
},
{
"tag": "Masterson, Danny (1976- )"
},
{
"tag": "Price, Roy (1967- )"
},
{
"tag": "Rose, Charlie"
},
{
"tag": "Sex Crimes"
},
{
"tag": "Sexual Harassment"
},
{
"tag": "Simmons, Russell"
},
{
"tag": "Spacey, Kevin"
},
{
"tag": "Stein, Lorin"
},
{
"tag": "Weinstein, Harvey"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.nytimes.com/2017/05/22/world/europe/greece-athens-anarchy-austerity.html",
"items": [
{
"itemType": "newspaperArticle",
"title": "Anarchists Fill Services Void Left by Faltering Greek Governance",
"creators": [
{
"firstName": "Niki",
"lastName": "Kitsantonis",
"creatorType": "author"
}
],
"date": "2017-05-22",
"ISSN": "0362-4331",
"abstractNote": "Anarchist groups are taking matters into their own hands after years of austerity policies and a refugee crisis have undermined the Greek government.",
"language": "en-US",
"libraryCatalog": "NYTimes.com",
"publicationTitle": "The New York Times",
"section": "World",
"url": "https://www.nytimes.com/2017/05/22/world/europe/greece-athens-anarchy-austerity.html",
"attachments": [],
"tags": [
{
"tag": "Coalition of the Radical Left (Greece)"
},
{
"tag": "Demonstrations, Protests and Riots"
},
{
"tag": "Greece"
},
{
"tag": "Politics and Government"
},
{
"tag": "Terrorism"
},
{
"tag": "Vandalism"
},
{
"tag": "vis-photo"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Philipp Zumstein^https?://[^\.]+\.(biomedcentral|springeropen)\.com/(articles|search)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2015 Philipp Zumstein
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
// This translator covers BioMedCentral but also SpringerOpen.
// attr()/text() v2
// eslint-disable-next-line
function attr(docOrElem,selector,attr,index){var elem=index?docOrElem.querySelectorAll(selector).item(index):docOrElem.querySelector(selector);return elem?elem.getAttribute(attr):null;}function text(docOrElem,selector,index){var elem=index?docOrElem.querySelectorAll(selector).item(index):docOrElem.querySelector(selector);return elem?elem.textContent:null;}
function detectWeb(doc, url) {
if (url.includes('.com/articles/10.1186/')) {
return "journalArticle";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('div[data-test="search-content"] article h3.c-listing__title>a');
for (var i = 0; i < rows.length; i++) {
var href = rows[i].href;
var title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) {
return;
}
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var DOI = url.match(/\/(10\.[^#?]+)/)[1];
var risURL = "http://citation-needed.services.springer.com/v2/references/" + DOI + "?format=refman&flavour=citation";
var pdfURL = attr(doc, 'meta[name="citation_pdf_url"]', 'content');
ZU.doGet(risURL, function (text) {
var translator = Zotero.loadTranslator("import");
translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7");
translator.setString(text);
translator.setHandler("itemDone", function (obj, item) {
// We have to fix issue and pages because these informations are
// wrong in the RIS data.
var citation = ZU.xpath(doc, '//span[@class="ArticleCitation_Volume"]');
if (citation.length > 0) {
fixCitation(item, citation[0].innerHTML);
}
var keywordsNodes = doc.getElementsByClassName("c-article-subject-list__subject");
for (var i = 0; i < keywordsNodes.length; i++) {
item.tags.push(keywordsNodes[i].textContent);
}
if (pdfURL) {
item.attachments.push({
url: pdfURL,
title: "Full Text PDF",
mimeType: "application/pdf"
});
}
item.attachments.push({
title: "Snapshot",
document: doc
});
item.complete();
});
translator.translate();
});
}
function fixCitation(item, citation) {
// This function fixes the information for issue and pages
// depending on the information in the citation string.
// e.g. citation = <strong>8</strong>:212
// or citation = <strong>2</strong>(1):S1
var re = /<strong>(\d+)<\/strong>([\w()]*):(\w+)/;
var m = citation.match(re);
if (m) {
if (item.pages) {
// save the pages (PDF) first
item.notes.push({ note: "Pages " + item.pages + " in PDF" });
}
if (item.volume != m[1]) { // This should actually be the same as in RIS.
Z.debug("Volume number differs in RIS and citation text: " + item.volume + "!=" + m[1]);
item.volume = m[1];
}
// Most of the journal articles at BMC do not have issue numbers;
// however this value seem to be filled by default with 1 in the RIS.
// Therefore, we have to delete it here or replace it by the correct
// value.
item.issue = m[2].replace(/[()]/g, "");
// The article ids should be treated similar to pages.
item.pages = m[3];
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://biotechnologyforbiofuels.biomedcentral.com/articles/10.1186/s13068-015-0395-8",
"items": [
{
"itemType": "journalArticle",
"title": "Biomass accessibility analysis using electron tomography",
"creators": [
{
"lastName": "Hinkle",
"firstName": "Jacob D.",
"creatorType": "author"
},
{
"lastName": "Ciesielski",
"firstName": "Peter N.",
"creatorType": "author"
},
{
"lastName": "Gruchalla",
"firstName": "Kenny",
"creatorType": "author"
},
{
"lastName": "Munch",
"firstName": "Kristin R.",
"creatorType": "author"
},
{
"lastName": "Donohoe",
"firstName": "Bryon S.",
"creatorType": "author"
}
],
"date": "December 25, 2015",
"DOI": "10.1186/s13068-015-0395-8",
"ISSN": "1754-6834",
"abstractNote": "Substrate accessibility to catalysts has been a dominant theme in theories of biomass deconstruction. However, current methods of quantifying accessibility do not elucidate mechanisms for increased accessibility due to changes in microstructure following pretreatment.",
"issue": "1",
"journalAbbreviation": "Biotechnology for Biofuels",
"libraryCatalog": "BioMed Central",
"pages": "212",
"publicationTitle": "Biotechnology for Biofuels",
"url": "https://doi.org/10.1186/s13068-015-0395-8",
"volume": "8",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Accessibility"
},
{
"tag": "Biomass"
},
{
"tag": "Cellulose"
},
{
"tag": "Porosimetry"
},
{
"tag": "Pretreatment"
},
{
"tag": "Tomography"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://parasitesandvectors.biomedcentral.com/articles/10.1186/1756-3305-2-S1-S1",
"items": [
{
"itemType": "journalArticle",
"title": "Canine leishmaniosis in South America",
"creators": [
{
"lastName": "Dantas-Torres",
"firstName": "Filipe",
"creatorType": "author"
}
],
"date": "March 26, 2009",
"DOI": "10.1186/1756-3305-2-S1-S1",
"ISSN": "1756-3305",
"abstractNote": "Canine leishmaniosis is widespread in South America, where a number of Leishmania species have been isolated or molecularly characterised from dogs. Most cases of canine leishmaniosis are caused by Leishmania infantum (syn. Leishmania chagasi) and Leishmania braziliensis. The only well-established vector of Leishmania parasites to dogs in South America is Lutzomyia longipalpis, the main vector of L. infantum, but many other phlebotomine sandfly species might be involved. For quite some time, canine leishmaniosis has been regarded as a rural disease, but nowadays it is well-established in large urbanised areas. Serological investigations reveal that the prevalence of anti-Leishmania antibodies in dogs might reach more than 50%, being as high as 75% in highly endemic foci. Many aspects related to the epidemiology of canine leishmaniosis (e.g., factors increasing the risk disease development) in some South American countries other than Brazil are poorly understood and should be further studied. A better understanding of the epidemiology of canine leishmaniosis in South America would be helpful to design sustainable control and prevention strategies against Leishmania infection in both dogs and humans.",
"issue": "1",
"journalAbbreviation": "Parasites & Vectors",
"libraryCatalog": "BioMed Central",
"pages": "S1",
"publicationTitle": "Parasites & Vectors",
"url": "https://doi.org/10.1186/1756-3305-2-S1-S1",
"volume": "2",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Atlantic Rainforest"
},
{
"tag": "Imidacloprid"
},
{
"tag": "Leishmania Infection"
},
{
"tag": "Leishmania Parasite"
},
{
"tag": "Leishmania Species"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.biomedcentral.com/search?query=zelle&searchType=publisherSearch",
"items": "multiple"
},
{
"type": "web",
"url": "https://bmcevolbiol.biomedcentral.com/articles/",
"items": "multiple"
},
{
"type": "web",
"url": "https://jfootankleres.biomedcentral.com/articles/10.1186/1757-1146-1-S1-O4",
"items": [
{
"itemType": "journalArticle",
"title": "Plantar fascia thickness and first metatarsal mobility in patients with diabetes and neuropathy",
"creators": [
{
"lastName": "Rao",
"firstName": "Smita",
"creatorType": "author"
},
{
"lastName": "Saltzman",
"firstName": "Charles L.",
"creatorType": "author"
},
{
"lastName": "Yack",
"firstName": "H. John",
"creatorType": "author"
}
],
"date": "September 26, 2008",
"DOI": "10.1186/1757-1146-1-S1-O4",
"ISSN": "1757-1146",
"issue": "1",
"journalAbbreviation": "Journal of Foot and Ankle Research",
"libraryCatalog": "BioMed Central",
"pages": "O4",
"publicationTitle": "Journal of Foot and Ankle Research",
"url": "https://doi.org/10.1186/1757-1146-1-S1-O4",
"volume": "1",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Iowa Hospital"
},
{
"tag": "Kinematic Data"
},
{
"tag": "Order Butterworth Filter"
},
{
"tag": "Stance Phase"
},
{
"tag": "Ulcer Development"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://journalofinequalitiesandapplications.springeropen.com/articles/10.1186/1029-242X-2011-53",
"items": [
{
"itemType": "journalArticle",
"title": "Approximately cubic functional equations and cubic multipliers",
"creators": [
{
"lastName": "Bodaghi",
"firstName": "Abasalt",
"creatorType": "author"
},
{
"lastName": "Alias",
"firstName": "Idham Arif",
"creatorType": "author"
},
{
"lastName": "Ghahramani",
"firstName": "Mohammad Hossein",
"creatorType": "author"
}
],
"date": "September 13, 2011",
"DOI": "10.1186/1029-242X-2011-53",
"ISSN": "1029-242X",
"abstractNote": "In this paper, we prove the Hyers-Ulam stability and the superstability for cubic functional equation by using the fixed point alternative theorem. As a consequence, we show that the cubic multipliers are superstable under some conditions.",
"issue": "1",
"journalAbbreviation": "Journal of Inequalities and Applications",
"libraryCatalog": "BioMed Central",
"pages": "53",
"publicationTitle": "Journal of Inequalities and Applications",
"url": "https://doi.org/10.1186/1029-242X-2011-53",
"volume": "2011",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Hyers-Ulam stability"
},
{
"tag": "Superstability"
},
{
"tag": "cubic functional equation"
},
{
"tag": "multiplier"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://nanoscalereslett.springeropen.com/articles/10.1186/1556-276X-6-530",
"items": [
{
"itemType": "journalArticle",
"title": "Nanoscale potassium niobate crystal structure and phase transition",
"creators": [
{
"lastName": "Chen",
"firstName": "Haiyan",
"creatorType": "author"
},
{
"lastName": "Zhang",
"firstName": "Yixuan",
"creatorType": "author"
},
{
"lastName": "Lu",
"firstName": "Yanling",
"creatorType": "author"
}
],
"date": "September 23, 2011",
"DOI": "10.1186/1556-276X-6-530",
"ISSN": "1556-276X",
"abstractNote": "Nanoscale potassium niobate (KNbO3) powders of orthorhombic structure were synthesized using the sol-gel method. The heat-treatment temperature of the gels had a pronounced effect on KNbO3 particle size and morphology. Field emission scanning electron microscopy and transmission electron microscopy were used to determine particle size and morphology. The average KNbO3 grain size was estimated to be less than 100 nm, and transmission electron microscopy images indicated that KNbO3 particles had a brick-like morphology. Synchrotron X-ray diffraction was used to identify the room-temperature structures using Rietveld refinement. The ferroelectric orthorhombic phase was retained even for particles smaller than 50 nm. The orthorhombic to tetragonal and tetragonal to cubic phase transitions of nanocrystalline KNbO3 were investigated using temperature-dependent powder X-ray diffraction. Differential scanning calorimetry was used to examine the temperature dependence of KNbO3 phase transition. The Curie temperature and phase transition were independent of particle size, and Rietveld analyses showed increasing distortions with decreasing particle size.",
"issue": "1",
"journalAbbreviation": "Nanoscale Research Letters",
"libraryCatalog": "BioMed Central",
"pages": "530",
"publicationTitle": "Nanoscale Research Letters",
"url": "https://doi.org/10.1186/1556-276X-6-530",
"volume": "6",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "crystal structure"
},
{
"tag": "nanoscale powder."
},
{
"tag": "phase transition"
},
{
"tag": "potassium niobate"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://bmcchem.biomedcentral.com/articles/10.1186/1752-153X-5-5",
"items": [
{
"itemType": "journalArticle",
"title": "Cacao seeds are a \"Super Fruit\": A comparative analysis of various fruit powders and products",
"creators": [
{
"lastName": "Crozier",
"firstName": "Stephen J.",
"creatorType": "author"
},
{
"lastName": "Preston",
"firstName": "Amy G.",
"creatorType": "author"
},
{
"lastName": "Hurst",
"firstName": "Jeffrey W.",
"creatorType": "author"
},
{
"lastName": "Payne",
"firstName": "Mark J.",
"creatorType": "author"
},
{
"lastName": "Mann",
"firstName": "Julie",
"creatorType": "author"
},
{
"lastName": "Hainly",
"firstName": "Larry",
"creatorType": "author"
},
{
"lastName": "Miller",
"firstName": "Debra L.",
"creatorType": "author"
}
],
"date": "February 7, 2011",
"DOI": "10.1186/1752-153X-5-5",
"ISSN": "1752-153X",
"abstractNote": "Numerous popular media sources have developed lists of \"Super Foods\" and, more recently, \"Super Fruits\". Such distinctions often are based on the antioxidant capacity and content of naturally occurring compounds such as polyphenols within those whole fruits or juices of the fruit which may be linked to potential health benefits. Cocoa powder and chocolate are made from an extract of the seeds of the fruit of the Theobroma cacao tree. In this study, we compared cocoa powder and cocoa products to powders and juices derived from fruits commonly considered \"Super Fruits\".",
"issue": "1",
"journalAbbreviation": "Chemistry Central Journal",
"libraryCatalog": "BioMed Central",
"pages": "5",
"publicationTitle": "Chemistry Central Journal",
"shortTitle": "Cacao seeds are a \"Super Fruit\"",
"url": "https://doi.org/10.1186/1752-153X-5-5",
"volume": "5",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Cocoa Butter"
},
{
"tag": "Fruit Juice"
},
{
"tag": "Oxygen Radical Absorbance Capacity"
},
{
"tag": "Total Polyphenol"
},
{
"tag": "Total Polyphenol Content"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Sebastian Karcher/record/-/record/|results/-/results|^https?://(www\.)?(mokka\.hu/|odrportal\.hu/).+results/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2020 YOUR_NAME <- TODO
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
// attr()/text() v2
// eslint-disable-next-line
function attr(docOrElem,selector,attr,index){var elem=index?docOrElem.querySelectorAll(selector).item(index):docOrElem.querySelector(selector);return elem?elem.getAttribute(attr):null;}function text(docOrElem,selector,index){var elem=index?docOrElem.querySelectorAll(selector).item(index):docOrElem.querySelector(selector);return elem?elem.textContent:null;}
function detectWeb(doc, url) {
if (url.includes('/record/-/record/')) {
return "book";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
// e.g. http://portal.bjc.qulto.ro/
var rows = doc.querySelectorAll('.results-record-wrapper');
if (rows.length) {
for (let row of rows) {
let href = attr(row, '.go-to-record a', 'href');
let title = ZU.trimInternal(text(row, '.data-wrapper-title div.metadata-value'));
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
}
else {
// e.g. http://www.odrportal.hu
rows = doc.querySelectorAll('.recordRow>table');
for (let row of rows) {
let href = attr(row, 'td a', 'href');
let title = ZU.trimInternal(text(row, 'td.title'));
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function cleanMARCXML(text) {
// MARC XML is served inside an HTML div element with line breaks and escaped angle brackets
const chars = { '<': '<', '>': '>' };
text = text.replace(/&[gl]t;/g, m => chars[m]).replace(/<\/?div[^>]*>| |<br\s?\/>/g, "");
return text.trim();
}
function scrape(doc, url) {
// the URL is constructed using a string after the first "record" in the URL
let baseurl = url.substr(0, url.indexOf("record") + 6);
let MarcXMLUrl = baseurl + "?p_p_id=DisplayRecord_WAR_akfweb&p_p_lifecycle=2&p_p_state=normal&p_p_mode=view&p_p_resource_id=getRecord&p_p_cacheability=cacheLevelPage&p_p_col_id=column-1&p_p_col_count=2&_DisplayRecord_WAR_akfweb_implicitModel=true";
// Z.debug(MarcXMLUrl);
// regular display
let recordId = url.match(/manifestation\/([^/?#]+)/);
// permalink
if (!recordId) {
recordId = url.match(/record\/-\/record\/([^/?#]+)/);
}
recordId = recordId[1];
// Z.debug(baseurl + "/-/record/" + recordId);
let post = "recordId=" + recordId + "&dbid=solr&recordType=manifestation&format=marcxml.html&fromOutside=false";
ZU.doPost(MarcXMLUrl, post, function (text) {
// Z.debug(text);
text = cleanMARCXML(text);
// Z.debug(text);
// MARCXML
var translator = Zotero.loadTranslator("import");
translator.setTranslator("edd87d07-9194-42f8-b2ad-997c4c7deefd");
translator.setString(text);
translator.setHandler("itemDone", function (obj, item) {
item.attachments.push({
title: "Library Catalog link",
url: baseurl + "/-/record/" + recordId,
snapshot: false
});
item.complete();
});
translator.translate();
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://www.odrportal.hu/web/guest/record/-/record/MOKKAI0008496100",
"items": [
{
"itemType": "book",
"title": "2. Mednarodna likovna razstava =: Medunarodna likovna izlozba = Internationale Ausstellung bildender Künstler = Nemzetközi Képzőművészeti Kiállítás = Medzinárodná vytvarná vystava: Razstavni Paviljon Arhitekta Franca Novaka, Murska Sobota ... 7. IX.-16. X. 1969",
"creators": [],
"date": "1969",
"abstractNote": "Bartha László kőszegi, Geszler Mária, Majthényi Károly, Tóth V. László, Horváth János, Mészáros József szombathelyi képzőművészek munkái a kiállításon",
"callNumber": "73/76(100):061.4(497Muraszombat)=00",
"language": "mul",
"libraryCatalog": "Library Catalog (Quolto)",
"numPages": "93",
"place": "Murska Sobota",
"publisher": "Organizacijski komite mednarodne likovne razstave",
"shortTitle": "2. Mednarodna likovna razstava =",
"attachments": [
{
"title": "Library Catalog link",
"snapshot": false
}
],
"tags": [
{
"tag": "Bartha László (1908-1998)"
},
{
"tag": "Geszler Mária"
},
{
"tag": "Horváth János (1930-)"
},
{
"tag": "Kőszeg"
},
{
"tag": "Majthényi Károly (1914-1990)"
},
{
"tag": "Mészáros József (1925-1979)"
},
{
"tag": "Szombathely"
},
{
"tag": "Tóth László, V. (1930-2001)"
},
{
"tag": "festészet, festőművész"
},
{
"tag": "kerámiaművészet, keramikus"
},
{
"tag": "kulturális kapcsolat/nemzetközi"
},
{
"tag": "képzőművészet, képzőművész"
},
{
"tag": "nemzetközi kapcsolat/Szlovénia"
},
{
"tag": "szobrászat, szobrászművész"
}
],
"notes": [
{
"note": "Katalógus"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://portal.bjc.qulto.ro/record/-/record/BJC216859",
"items": [
{
"itemType": "book",
"title": "Examen de credinţă: versuri",
"creators": [
{
"firstName": "Victoria",
"lastName": "Fătu-Nalaţiu",
"creatorType": "author"
},
{
"firstName": "Gabriela",
"lastName": "Rusu",
"creatorType": "author"
},
{
"firstName": "Oliv",
"lastName": "Mircea",
"creatorType": "author"
}
],
"date": "1997",
"ISBN": "9789739739733",
"callNumber": "împrumut la sală 845674 821.135.1-1/F26",
"language": "rumeng",
"libraryCatalog": "Library Catalog (Quolto)",
"numPages": "136",
"place": "Bistriţa",
"publisher": "Aletheia",
"shortTitle": "Examen de credinţă",
"attachments": [
{
"title": "Library Catalog link",
"snapshot": false
}
],
"tags": [],
"notes": [
{
"note": "Ediţie bilingvă"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://portal.bjm.qulto.ro:8081/ro/record/-/record/BJM384882",
"items": [
{
"itemType": "book",
"title": "Mâna stângă a întunericului",
"creators": [
{
"firstName": "Ursula K.",
"lastName": "Le Guin",
"creatorType": "author"
},
{
"firstName": "Mihai-Dan",
"lastName": "Pavelescu",
"creatorType": "author"
}
],
"date": "2006",
"ISBN": "9789735698669",
"callNumber": "BJM",
"edition": "Ediţia a 2-a revizuită",
"language": "rum",
"libraryCatalog": "Library Catalog (Quolto)",
"numPages": "301",
"place": "Bucureşti",
"publisher": "Nemira",
"series": "Nautilus",
"attachments": [
{
"title": "Library Catalog link",
"snapshot": false
}
],
"tags": [
{
"tag": "LITERATURĂ AMERICANĂ"
},
{
"tag": "LITERATURĂ AMERICANĂ(roman s.f.)"
},
{
"tag": "roman"
}
],
"notes": [
{
"note": "Titlul original : The Left Hand of Darkness"
}
],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Sebastian Karcher^https?://(catalog\.libraries\.psu|clio\.columbia|searchworks\.stanford|search\.library\.brown)\.edu/(view|catalog|\?search)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2020 Sebastian Karcher
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
// attr()/text() v2
// eslint-disable-next-line
function attr(docOrElem,selector,attr,index){var elem=index?docOrElem.querySelectorAll(selector).item(index):docOrElem.querySelector(selector);return elem?elem.getAttribute(attr):null}function text(docOrElem,selector,index){var elem=index?docOrElem.querySelectorAll(selector).item(index):docOrElem.querySelector(selector);return elem?elem.textContent:null}
function detectWeb(doc, url) {
if (/\/(view|catalog)\/[a-z\d]+/.test(url) && (attr(doc, 'link[title="marcxml"]', 'href') || attr(doc, 'link[title="mods"]', 'href'))) {
return "book";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('div#documents a[data-context-href*="/"]');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var marcXML = attr(doc, 'link[title="marcxml"]', 'href');
var mods = attr(doc, 'link[title="mods"]', 'href');
// Z.debug(marcXML);
if (marcXML) {
ZU.doGet(marcXML, function (text) {
var translator = Zotero.loadTranslator("import");
translator.setTranslator("edd87d07-9194-42f8-b2ad-997c4c7deefd");
translator.setString(text);
translator.setHandler("itemDone", function (obj, item) {
item.attachments.push({
title: "Library Catalog Link",
url: url,
snapshot: false
});
item.complete();
});
translator.translate();
});
}
else if (mods) {
ZU.doGet(mods, function (text) {
var translator = Zotero.loadTranslator("import");
translator.setTranslator("0e2235e7-babf-413c-9acf-f27cce5f059c");
translator.setString(text);
translator.setHandler("itemDone", function (obj, item) {
item.attachments.push({
title: "Library Catalog Link",
url: url,
snapshot: false
});
item.complete();
});
translator.translate();
});
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://searchworks.stanford.edu/view/9968493",
"items": [
{
"itemType": "book",
"title": "Test marketing",
"creators": [
{
"firstName": "Hans",
"lastName": "Sittenfeld",
"creatorType": "author"
}
],
"date": "1967",
"callNumber": "HF5415.2 .S513",
"language": "eng",
"libraryCatalog": "Library Catalog (Blacklight)",
"numPages": "3",
"place": "London",
"publisher": "Business Publications",
"series": "An Advertiser's weekly marketing book",
"attachments": [
{
"title": "Library Catalog Link",
"snapshot": false
}
],
"tags": [
{
"tag": "Test marketing"
}
],
"notes": [
{
"note": "Translation of Der Testmarkt; Instrument des Marketing"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://clio.columbia.edu/catalog/499302",
"items": [
{
"itemType": "book",
"title": "Palladio: essai critique, avec douze dessins de l'auteur",
"creators": [
{
"firstName": "G. M.",
"lastName": "Cantacuzino",
"creatorType": "author"
}
],
"date": "1928",
"callNumber": "AA521 P1 C16",
"extra": "OCLC: 77791934",
"libraryCatalog": "Library Catalog (Blacklight)",
"numPages": "91",
"place": "Bucarest",
"publisher": "Cartae românească",
"shortTitle": "Palladio",
"attachments": [
{
"title": "Library Catalog Link",
"snapshot": false
}
],
"tags": [
{
"tag": "Palladio, Andrea"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://catalog.libraries.psu.edu/catalog/6849525",
"items": [
{
"itemType": "book",
"title": "Test No. 227: Terrestrial Plant Test: Vegetative Vigour Test",
"creators": [
{
"lastName": "Organisation for Economic Co-operation and Development",
"creatorType": "editor",
"fieldMode": true
}
],
"date": "2006",
"ISBN": "9789264067295",
"abstractNote": "This Test Guideline is designed to assess effects on vegetative vigour of terrestrial plants following above-ground exposure by general chemicals, biocides and crop protection products. The test can be conducted in order to determine the dose-response curve, or at a single concentration/rate as a limit test (range finding test is carried out depending on the results) according to the aim of the study. Plants are grown from seed usually to the 2- to 4- true leaf stage. Test substance is then sprayed on the plant and leaf surfaces at appropriate rate(s). After the application, the plants are evaluated against untreated control plants for effects on vigour and growth at various time intervals through 21 - 28 days from treatment. This study includes measurement of biomass of surviving plants (dry or fresh shoot weight, shoot height), visible detrimental effects on different parts of the plant, visual phytotoxicity and mortality (daily during the study) Appropriate statistical analysis are used to obtain an effective concentration ECx or an effective application rate ERx for the most sensitive parameter(s) of interest. Also, the no observed effect concentration (NOEC) and lowest observed effect concentration (LOEC) can be calculated in this test",
"libraryCatalog": "Library Catalog (Blacklight)",
"place": "Place of publication not identified",
"publisher": "OECD Publishing",
"series": "OECD Guidelines for the Testing of Chemicals, Section 2: Effects on Biotic Systems",
"shortTitle": "Test No. 227",
"url": "http://ezaccess.libraries.psu.edu/login?url=http://dx.doi.org/10.1787/9789264067295-en",
"attachments": [
{
"title": "Library Catalog Link",
"snapshot": false
}
],
"tags": [
{
"tag": "Environment"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://catalog.libraries.psu.edu/?search_field=all_fields&q=test",
"items": "multiple"
},
{
"type": "web",
"url": "https://clio.columbia.edu/catalog?q=testing&search_field=all_fields&commit=Search",
"items": "multiple"
},
{
"type": "web",
"url": "https://searchworks.stanford.edu/catalog?utf8=%E2%9C%93&search_field=search&q=data",
"items": "multiple"
},
{
"type": "web",
"url": "https://search.library.brown.edu/catalog/b1629621",
"items": [
{
"itemType": "book",
"title": "Qualitative analysis",
"creators": [
{
"firstName": "William",
"lastName": "Wardlaw",
"creatorType": "author"
},
{
"firstName": "Frederick William",
"lastName": "Pinkard",
"creatorType": "author"
}
],
"date": "1928",
"callNumber": "QD81 .W27",
"libraryCatalog": "Library Catalog (Blacklight)",
"numPages": "166",
"place": "London, New York [etc.]",
"publisher": "Longmans, Green and Co. Ltd",
"attachments": [
{
"title": "Library Catalog Link",
"snapshot": false
}
],
"tags": [
{
"tag": "Chemistry, Analytic"
},
{
"tag": "Qualitative"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://search.library.brown.edu/catalog?utf8=%E2%9C%93&search_field=all_fields&q=qualitative",
"items": "multiple"
},
{
"type": "web",
"url": "https://searchworks.stanford.edu/view/wg761wk9746",
"items": [
{
"itemType": "artwork",
"title": "Joan Baez, David Harris and son Gabriel leave La Tuna Federal Prison",
"creators": [
{
"firstName": "Bob",
"lastName": "Fitch",
"creatorType": "author"
}
],
"date": "1971-03-15",
"archiveLocation": "Stanford University. Libraries. Department of Special Collections and University Archives; M1994",
"libraryCatalog": "Library Catalog (Blacklight)",
"rights": "There is no fee for non-commercial image downloading and use. Commercial use requires permission from the Department of Special Collections and University Archives prior to publishing or rebroadcasting any item or work, in whole or in part, held by the Department. More information can be found on our permissions page [http://library.stanford.edu/spc/using-collections/permission-publish].",
"attachments": [
{
"title": "Library Catalog Link",
"snapshot": false
}
],
"tags": [
{
"tag": "Vietnam War, 1961-1975--Protest movements--United States"
}
],
"notes": [
{
"note": "Digitized by Bob Fitch."
}
],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Michael Berkowitz^https?://(www\.)?economist\.com/function detectWeb(doc, url) {
var m = url.match(/^https?:\/\/[^/]+\/[^/]*\/[^/]*\/\d+/);
//Z.debug(m)
if (url.includes('/node/') || m) {
return "magazineArticle";
}
if (getSearchResults(doc, url, true)) {
return "multiple";
}
return false;
}
function scrape(doc, url) {
var newItem = new Zotero.Item("magazineArticle");
newItem.ISSN = "0013-0613";
newItem.url = url;
newItem.publicationTitle = "The Economist";
// Headline
var title = text('h1 *[itemprop=headline]');
// As of 10/2020 these meta tags seem to be removed from the DOM after page load,
// so this won't work
if (!title) title = ZU.xpathText(doc, '//meta[@property="og:title"]/@content');
if (!title) {
try {
title = JSON.parse(text('script#__NEXT_DATA__')).props.pageProps.content.headline;
}
catch (e) {}
}
newItem.title = title;
if (doc.evaluate('//div[@class="clear"][@id="pay-barrier"]/div[@class="col-right"]', doc, null, XPathResult.ANY_TYPE, null).iterateNext()) {
newItem.extra = "(Subscription only)";
newItem.complete();
return;
}
//get abstract
var abstract = ZU.xpathText(doc, '//h1[@class="rubric"]');
if (!abstract) abstract = ZU.xpathText(doc, '//*[@itemprop="description"]');
newItem.abstractNote = abstract;
//get date and extra stuff
newItem.date = ZU.xpathText(doc, '//time[@itemtype="http://schema.org/DateTime"]/@datetime');
newItem.attachments = [{
document: doc,
title: "The Economist Snapshot",
mimeType: "text/html"
}];
newItem.complete();
}
function getSearchResults(doc, url, checkOnly) {
var items = {};
var found = false;
var rows;
if (url.includes('/search?')) {
rows = ZU.xpath(doc, '//a[@class="search-result"]');
}
else {
rows = doc.querySelectorAll('a.headline-link');
}
for (let i = 0; i < rows.length; i++) {
var href = rows[i].href;
let [subhead, head] = rows[i].innerText.split(/\n/);
let title = ZU.trimInternal(subhead);
if (head) {
title = ZU.trimInternal(head) + ' — ' + title;
}
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, url, false), function (items) {
if (!items) {
return;
}
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
}
else {
scrape(doc, url);
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.economist.com/asia/2011/11/12/dreams-and-realities",
"items": [
{
"itemType": "magazineArticle",
"title": "Dreams and realities",
"creators": [],
"date": "2011-11-12T00:00:00Z",
"ISSN": "0013-0613",
"abstractNote": "A battle over American-led free trade brews in Asia",
"libraryCatalog": "The Economist",
"publicationTitle": "The Economist",
"url": "https://www.economist.com/asia/2011/11/12/dreams-and-realities",
"attachments": [
{
"title": "The Economist Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.economist.com/printedition/2013-12-07",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.economist.com/sections/united-states",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.economist.com/search?q=mannheim",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.economist.com/international/2017/08/19/the-e-mail-larry-page-should-have-written-to-james-damore",
"items": [
{
"itemType": "magazineArticle",
"title": "The e-mail Larry Page should have written to James Damore",
"creators": [],
"date": "2017-08-19T00:00:00Z",
"ISSN": "0013-0613",
"abstractNote": "Last week this newspaper said Alphabet’s boss should write a “detailed, ringing rebuttal” of a viral anti-diversity memo sent at Google. Here is how we imagine it",
"libraryCatalog": "The Economist",
"publicationTitle": "The Economist",
"url": "https://www.economist.com/international/2017/08/19/the-e-mail-larry-page-should-have-written-to-james-damore",
"attachments": [
{
"title": "The Economist Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.economist.com/democracy-in-america/2017/11/15/the-justices-dive-into-new-abortion-controversy",
"items": [
{
"itemType": "magazineArticle",
"title": "The justices dive into new abortion controversy",
"creators": [],
"date": "2017-11-15T07:47:30Z",
"ISSN": "0013-0613",
"abstractNote": "Can a state require pro-life pregnancy centres to alert women of government-funded abortions?",
"libraryCatalog": "The Economist",
"publicationTitle": "The Economist",
"url": "https://www.economist.com/democracy-in-america/2017/11/15/the-justices-dive-into-new-abortion-controversy",
"attachments": [
{
"title": "The Economist Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Philipp Zumstein^https?://www\.researchgate\.net//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2017 Philipp Zumstein
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
// attr()/text() v2
// eslint-disable-next-line
function attr(docOrElem,selector,attr,index){var elem=index?docOrElem.querySelectorAll(selector).item(index):docOrElem.querySelector(selector);return elem?elem.getAttribute(attr):null}function text(docOrElem,selector,index){var elem=index?docOrElem.querySelectorAll(selector).item(index):docOrElem.querySelector(selector);return elem?elem.textContent:null}
function detectWeb(doc, url) {
if (url.includes('/publication/')) {
var type = text(doc, "span.research-detail-header-section__badge");
if (!type) {
type = text(doc, '[data-testid="research-meta-type"]');
if (!type) {
// for logged in users (yes, really...)
Zotero.debug('trying logged in way');
type = text(doc, 'b[data-reactid]');
}
}
// Z.debug(type)
// type = type.replace('(PDF Available)', '').trim();
switch (type) {
case "Data":// until we have a data itemType
case "Article":
return "journalArticle";
case "Conference Paper":
return "conferencePaper";
case "Chapter":
return "bookSection";
case "Thesis":
return "thesis";
case "Research":
return "report";
case "Presentation":
return "presentation";
default:
return "book";
}
}
else if ((url.includes('/search') || url.includes('/profile/') || url.includes('/scientific-contributions/')) && getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('a.publication-title, a.js-publication-title-link, a[itemprop="mainEntityOfPage"]');
if (!rows.length) {
rows = ZU.xpath(doc, '//div[contains(@class, "nova-v-publication-item__stack-item")]//a[contains(@class,"nova-e-link")]');
}
for (var i = 0; i < rows.length; i++) {
var href = rows[i].href;
var title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) {
return true;
}
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
return true;
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var type = detectWeb(doc, url);
var uid = attr(doc, 'meta[property="rg:id"]', 'content');
if (!uid) {
// trying to get the uid from URL; for logged in users
var uidURL = url.match(/publication\/(\d+)_/);
if (uidURL) uid = uidURL[1];
}
uid = uid.replace('PB:', '');
var risURL = "https://www.researchgate.net/lite.publication.PublicationDownloadCitationModal.downloadCitation.html?fileType=RIS&citation=citationAndAbstract&publicationUid=" + uid;
var pdfURL = attr(doc, 'meta[property="citation_pdf_url"]', 'content');
ZU.doGet(risURL, function (text) {
// Z.debug(text);
// fix wrong itemType information in RIS
if (type == "bookSection") text = text.replace('TY - BOOK', 'TY - CHAP');
if (type == "conferencePaper") text = text.replace('TY - BOOK', 'TY - CONF');
if (type == "report") text = text.replace('TY - BOOK', 'TY - RPRT');
if (type == "presentation") text = text.replace('TY - BOOK', 'TY - SLIDE');
if (type == "journalArticle") text = text.replace('TY - BOOK', 'TY - JOUR');
if (type == "thesis") text = text.replace('TY - BOOK', 'TY - THES');
var translator = Zotero.loadTranslator("import");
translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7");
translator.setString(text);
translator.setHandler("itemDone", function (obj, item) {
if (pdfURL) {
item.attachments.push({
url: pdfURL,
title: "Full Text PDF",
mimeType: "application/pdf"
});
}
item.attachments.push({
title: "ResearchGate Link",
url: url,
snapshot: false
});
item.complete();
});
translator.translate();
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.researchgate.net/publication/318069783_Academic_social_networking_sites_Comparative_analysis_of_ResearchGate_Academiaedu_Mendeley_and_Zotero",
"items": [
{
"itemType": "journalArticle",
"title": "Academic social networking sites: Comparative analysis of ResearchGate, Academia.edu, Mendeley and Zotero",
"creators": [
{
"lastName": "Bhardwaj",
"firstName": "Raj",
"creatorType": "author"
}
],
"date": "June 30, 2017",
"DOI": "10.1108/ILS-03-2017-0012",
"abstractNote": "Purpose\n\nThe purpose of the study is to compare four popular academic social networking sites (ASNSs) viz. ResearchGate, Academia.edu, Mendeley and Zotero.\n\nDesign/methodology/approach\n\nEvaluation method has been used with the help of checklist covering various features of ASNSs. A structured checklist has been prepared to compare four popular ASNSs, comprising 198 dichotomous questions divided into 12 broad categories.\n\nFindings\n\nThe study found that performance of ASNSs using the latest features and services is not up to the mark and none of the site rated as ‘Excellent’. The sites lack in incorporation of session filters, output features, privacy settings & text display, search and browsing fields. Availability of bibilographic features and general features are poor in these sites. Further, altmetrics and analytics features are not incorporated properly. User interface of the sites need to improve to draw researchers to use them. The study report reveals that ResearchGate scored the highest, 61.1 percent points, and was ranked ‘above average’, followed by Academia.edu with 48.0 percent and Mendeley with 43.9 percent are ranked ‘average’. However, the Zotero (38.9 percent) was ranked ‘below average’.\n\nPractical implications\n\nAccreditation agencies can identify suitable sites in the evaluation of institutions’ research output. Further, students and faculty members can choose the site suiting their needs. Library and information science professionals can utilize the checklist to impart training to the academic community which can help fostering research and development activities.\n\nOriginality/value\n\nThe study identifies features that ought to be available in a model ASNS. These features are categorized into 12 broad categories. The findings can also be used by developers of the sites to enhance functionalities. Institutions can choose suitable sites while collaborating with other institutions.",
"journalAbbreviation": "Information and Learning Science",
"libraryCatalog": "ResearchGate",
"pages": "298-316",
"publicationTitle": "Information and Learning Science",
"shortTitle": "Academic social networking sites",
"volume": "118",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "ResearchGate Link",
"snapshot": false
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.researchgate.net/publication/272943457_Zotero_Los_gestores_de_referencias_software_para_la_gestion_y_mantenimiento_de_las_referencias_bibliograficas_en_trabajos_de_investigacion",
"items": [
{
"itemType": "book",
"title": "Zotero: Los gestores de referencias: software para la gestión y mantenimiento de las referencias bibliográficas en trabajos de investigación",
"creators": [
{
"lastName": "Alonso-Arévalo",
"firstName": "Julio",
"creatorType": "author"
}
],
"date": "February 1, 2015",
"abstractNote": "El apartado metodológico es uno de los aspectos más importantes a tener en cuenta en la planificación de cualquier trabajo de investigación. El establecimiento del estado de la cuestión y la revisión bibliográfica, es una de las tareas metodológicas que requiere más inversión en tiempo y esfuerzo del trabajo de un investigador. La bibliografía citada en un documento contribuye a mejorar la credibilidad del mismo, a dar a conocer cuales han sido las fuentes que se han utilizado en su realización, conocer el nivel de actualización de la investigación y reconocer la tarea de otros profesionales que han contribuido a generar ese nuevo conocimiento. Para realizar esta tarea, en cierta manera tediosa, existen programas que facilitan las tareas de recopilación automática de datos desde las diversas fuentes de información (Bases de datos bibliográficas, revistas, páginas web, catálogos.. etc.) Además estos programas se integran con el procesador de texto para ayudar a insertar las citas bibliográficas en los estilos normalizados a medida que se van escribiendo los trabajos de investigación (ISO, ANSI, Vancouver, Chicago, APA..). \n\nZotero es un programa de código abierto que permite a los usuarios recolectar, administrar y citar referencias bibliográficas de investigaciones de todo tipo de orígenes desde el navegador. Zotero es, en su más básico nivel, es un administrador de referencias bibliográficas diseñado para almacenar, administrar y citar referencias, además de poder integrar en la herramienta libros, artículos y cualquier otro documento. Es difícil creer que desde su modesto lanzamiento en el otoño de 2006, Zotero haya sido descargado más de seis millones de veces y que se utilice en todo el mundo en más de treinta idiomas, y que miles de foros, entradas de blogs, artículos de prensa demuestran que los investigadores utilizan esta plataforma de investigación abierta que supera a cualquiera de las alternativas comerciales. Uno de sus puntos fuertes es que es una herramienta de software libre multiplataforma, es decir que puede funcionar en Windows, Linux o Mac (iOs). Disponible inicialmente como complemento para el navegador Firefox, desde la versión 3.0 también funciona como programa de escritorio independiente del navegador “Zotero StandAlone” . En muchas páginas web de investigación como Google Scholar, Web of Knowledge, Scopus, de la web social como Slideshare, Flickr o incluso comerciales como Amazon, Zotero detecta cuando un libro, artículo u otros recursos están siendo consultados, de manera que en la barra de dirección del navegador nos aparecerá el icono correspondiente (un libro, una hoja, una fotografía… ) y con un simple click del ratón encuentra y guarda la información completa de la referencia en un fichero local. Para ello previamente deberemos instalar una extensión para Chrome, Safari o FireFox en función del navegador que utilicemos.\n\nAquí encontrarás una guía sencilla sobre que son los gestores de referencias bibliográficas, que posibilidades ofrecen unos y otros, y también una guía para sacar el máximo partido de Zotero. Un programa de software libre muy apropiado para las tareas de Alfabetización informacional por su sencillez y capacidad intuitiva a la hora de trabajar, estudiar o investigar.",
"extra": "DOI: 10.13140/2.1.3514.1922",
"libraryCatalog": "ResearchGate",
"shortTitle": "Zotero",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "ResearchGate Link",
"snapshot": false
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.researchgate.net/publication/283057299_Understanding_Meaningful_Learning_in_a_Technology_Training_Program_A_Qualitative_Instrumental_Multiple-Case_Study",
"items": [
{
"itemType": "thesis",
"title": "Understanding Meaningful Learning in a Technology Training Program: A Qualitative Instrumental Multiple-Case Study",
"creators": [
{
"lastName": "Luo",
"firstName": "Shuhong",
"creatorType": "author"
}
],
"date": "June 1, 2015",
"abstractNote": "Meaningful learning is often missing in technology training and learning. This dissertation presents a qualitative, instrumental, multiple-case study of six students with diverse backgrounds who learned Zotero, a literature review and citation management software, in a 1-hour, one-on-one, face-to-face training session at a Midwestern university. The proposed model, simplified teaching–meaningful learning (STML), framed this study, which explored students’ learning processes and learning outcomes when they experience a simplified experiential learning model used in a Zotero training program. Through student and trainer interviews, trainers’ and my observations and reflections, and students’ documentations, I generated six narratives about each student’s meaningful learning during the Zotero training. Most students were engaged and explored actively and confidently during training. All perceived their learning process as meaningful, helping them to connect with their workflow. After training, all could use the basic functions of Zotero, understood them, and remembered them. Their procedures solved problems efficiently and flexibly and were workflow-centered. They considered Zotero easy to use and useful, and intended to use it. Two weeks later, they had adopted Zotero into current research projects or planned to use it in future work. However, they did not fully incorporate the meaningful learning approaches into personal learning strategies. Most retained strong tendencies to value rote and dependent learning, and did not conscientiously recognize and transfer similar patterns of general computer knowledge into the new software. These findings provided valuable insights into meaningful learning for technology educators in designing similar programs. Implications for future technology training design were discussed.",
"libraryCatalog": "ResearchGate",
"shortTitle": "Understanding Meaningful Learning in a Technology Training Program",
"attachments": [
{
"title": "ResearchGate Link",
"snapshot": false
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.researchgate.net/publication/315673297_Linguistic_Landscape_Bibliography_on_Zotero",
"items": [
{
"itemType": "report",
"title": "Linguistic Landscape Bibliography on Zotero",
"creators": [
{
"lastName": "Troyer",
"firstName": "Robert",
"creatorType": "author"
}
],
"date": "March 28, 2017",
"abstractNote": "This bibliography contains references to academic work in the field of Linguistic Landscapes (LL). It is intended to capture the range of the field from seminal works that are central to LL theory and methodologies to tangential works that utilize LL approaches.",
"libraryCatalog": "ResearchGate",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "ResearchGate Link",
"snapshot": false
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.researchgate.net/publication/316991339_Non-scientific_requirements_of_scientific_journals_suggestions_and_need_of_a_one_click_software",
"items": [
{
"itemType": "conferencePaper",
"title": "Non-scientific requirements of scientific journals, suggestions and need of a one click software",
"creators": [
{
"lastName": "Nadeem",
"firstName": "Said",
"creatorType": "author"
},
{
"lastName": "Guruler",
"firstName": "Huseyin",
"creatorType": "author"
},
{
"lastName": "Özler",
"firstName": "Mehmet",
"creatorType": "author"
}
],
"date": "May 5, 2017",
"abstractNote": "Scientists are always producing new results that has to be publish in some form; mostly in peer-reviewed journals in the form of communications, letters, research articles etc. Due to distinct format of each journal, authors has to write according to the author’s instructions of the target journal. Most of the manuscript are being rejected, and to submit to another journal, we have to change the format of journal including title page, headings and subheadings, numbering and bullets, formatting the page (indentions and margins, Line spacing font size, font) etc. Often we waste two/three days just to change the format. We can deal with the references styles using Endnote, that is also expensive software. Mendeley and Zotero are available for free but the reference style of most of our desired journals are not available and it is not easy to edit a present style. Time is money, precious and should not be loose in formatting. We suggest a single format for all scientific journals. If for commercial reasons, a single style is not possible, then we suggest for a software where the format of the manuscript (title page, author names and addresses, headings, bullets and numberings, figures and tables, references etc.) with a single click; by just selecting the name of desired journal. In this regard, we are working on “Palvasha Manuscript manager”. Herein we are presenting a beta version of the desired software. We are planning to upgrade our software so that in a single place, one can write the manuscript, draw figures and drawings, create tables, find most suitable journal as well as submit the manuscript automatically to the desired journal with a single click.",
"libraryCatalog": "ResearchGate",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "ResearchGate Link",
"snapshot": false
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.researchgate.net/publication/305727853_Reference_Management_Tools",
"items": [
{
"itemType": "bookSection",
"title": "Reference Management Tools:",
"creators": [
{
"lastName": "Ortega",
"firstName": "Jose",
"creatorType": "author"
}
],
"date": "December 31, 2016",
"ISBN": "9780081005927",
"abstractNote": "This chapter analyses the bibliographic coverage, networking functions and population distribution of reference management tools. These networking spaces generally emerged from desktop applications for organizing bibliographic references to social networking environments setup to share and tag citations for scholars. Two of the most important reference management tools, Mendeley and Zotero, are described in detail. Mendeley has the largest bibliographic database where users can read and tag the publications that other members share in the public catalogue. However, its networking functionalities are hardly exploited at all, which casts serious doubts on its future as a social networking platform. Zotero, on the other hand, is a local, reduced platform occupied above all by American users from the Humanities and Social Sciences. Nevertheless, the great limitation of this platform is that it does not have a public catalogue of the references added to the service, which impedes the sharing of references between members. As a result of this users employ groups as the means to achieve collaboration.",
"extra": "DOI: 10.1016/B978-0-08-100592-7.00004-6",
"libraryCatalog": "ResearchGate",
"pages": "65-99",
"shortTitle": "Reference Management Tools",
"attachments": [
{
"title": "ResearchGate Link",
"snapshot": false
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.researchgate.net/search/publications?q=zotero",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.researchgate.net/profile/Noga_Alon",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.researchgate.net/scientific-contributions/2109740616_Daniela_Hombach",
"items": "multiple"
}
]
/** END TEST CASES **/
100Simon Kornblith, Michael Berkowitz, and Ovid Technologies(gw2|asinghal|sp|ovid)[^/]+/ovidweb\.cgi/*
Ovid Zotero Translator
Copyright (c) 2000-2012 Ovid Technologies, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/*
Known "bug": translator will not work on PDF pages if those are accessed from
individual item pages. There does not seem to be any way to construct
metadata POST data from those views. If PDF is access directly from search
results, we can reconstruct necessary data from the URL.
We could try to go to a different page to fetch metadata
*/
function detectWeb(doc, url) {
if (getSearchResults(doc, true) && getMetadataPost(doc, url, [0])) {
return 'multiple';
}
var id = getIDFromPage(doc) || getIDFromUrl(url);
Zotero.debug("Found ID: " + id);
if (id && getMetadataPost(doc, url, [id])) {
return 'journalArticle';
}
return false;
}
function getMetadataPost(doc, url, ids) {
var s = doc.getElementById('S');
if (s) s = s.value && 'S=' + encodeURIComponent(s.value);
if (!s) s = getSFromUrl(url);
if (!s || !ids.length) {
if (!s) Zotero.debug("Could not find S parameter");
if (!ids.length) Zotero.debug("No IDs supplied");
return false;
}
var post = s
+ '&R=' + ids.map(function (id) {
return encodeURIComponent(id);
}).join('&R=')
+ "&jumpstartLink=1&Citation Page=Export Citation"
+ "&cmexport=1&exportType=endnote&zoteroRecords=1";
var action;
if (doc.getElementById('OUSRT')) {
// For OUS records, need to format UI code for OUS records in endnote format
Zotero.debug("For OUS");
action = doc.getElementsByName('Datalist')[0];
post += "&ousRecords=1";
}
else { // for MSP records
action = doc.getElementsByName('CitManPrev')[0];
post += "&cmFields=ALL";
}
if (action) {
action = action.value.replace(/\|.*/, "");
}
else {
// Try getting it from URL
var m = url.match(/S\.sh\.\d+/);
if (m) {
Zotero.debug("Using Citation Action parameter from URL: " + m[0]);
action = m[0];
}
}
if (!action) {
Zotero.debug("Citation Action component not found");
return false;
}
post += "&Citation Action=" + encodeURIComponent(action);
return post;
}
function getIDFromPage(doc) {
// E.g. single result in My Projects
if (!doc.getElementsByClassName('citation-table').length) return false;
var checkboxes = doc.getElementsByClassName('bibrecord-checkbox');
if (checkboxes.length == 1) {
return checkboxes[0].value;
}
return false;
}
function getIDFromUrl(url) {
var m = decodeURI(url).match(/=S\.sh\.[^&#|]+\|([1-9]\d*)/);
if (m) return m[1];
return false;
}
function getSFromUrl(url) {
var m = decodeURI(url).match(/\bS=([^&]+)/);
if (m) return 'S=' + encodeURIComponent(m[1]);
return false;
}
// seems like we have to check all of these, because some can be present but empty
// next to other nodes that are not empty
var titleNodeClasses = ['citation_title',
'titles-title',
'article-title',
'chapter_title',
'chapter-title',
'muse-title',
'booklist-title'];
function getSearchResults(doc, checkOnly, extras) {
var table = doc.getElementById('titles-records')
|| doc.getElementById('item-records');
if (!table) return false;
var rows = table.getElementsByClassName('titles-row');
if (!rows.length) rows = table.getElementsByClassName('toc-row');
if (!rows.length) rows = table.getElementsByClassName('booklist-row');
var successfulHit;
if (!rows.length) return false;
var items = {}, found = false;
for (var i = 0; i < rows.length; i++) {
var row = rows[i];
var id = row.getElementsByClassName('bibrecord-checkbox')[0];
if (id) id = id.value;
if (!id) continue;
var title;
if (successfulHit) {
title = row.getElementsByClassName(successfulHit)[0];
if (title) title = ZU.trimInternal(title.textContent);
}
else {
for (var j = 0; j < titleNodeClasses.length; j++) {
title = row.getElementsByClassName(titleNodeClasses[j])[0];
if (title) title = ZU.trimInternal(title.textContent);
if (title) {
successfulHit = titleNodeClasses[j];
break;
}
}
}
if (!title) continue;
if (checkOnly) return true;
found = true;
items[id] = title;
var checkbox = row.querySelectorAll('input.bibrecord-checkbox')[0];
if (checkbox) {
items[id] = {
title: title,
checked: checkbox.checked
};
}
if (extras) {
// Look for PDF link
var pdfLink = ZU.xpath(row, './/a[starts-with(@name, "PDF")]')[0];
if (pdfLink) {
extras[id] = {
pdfLink: pdfLink.href
};
}
}
}
return found ? items : false;
}
function doWeb(doc, url) {
var extras = {};
var results = getSearchResults(doc, false, extras);
if (results) {
Zotero.selectItems(results, function (selectedIds) {
if (!selectedIds) return;
var ids = [];
for (var i in selectedIds) {
ids.push(i);
}
fetchMetadata(doc, url, ids, extras);
});
}
else {
var id = getIDFromPage(doc) || getIDFromUrl(url);
// Look for PDF link on page as well
var pdfLink = doc.getElementById('pdf')
|| ZU.xpath(doc, '//a[starts-with(@name, "PDF")]')[0];
if (pdfLink) {
extras[id] = {
pdfLink: pdfLink.href
};
}
else if ((pdfLink = doc.getElementById('embedded-frame'))) {
extras[id] = {
resolvedPdfLink: pdfLink.src
};
}
else {
// Attempt to construct it from the URL
var s = getSFromUrl(url);
var pdfID = decodeURI(url).match(/\bS\.sh.\d+\|[1-9]\d*/);
if (s && pdfID) {
Zotero.debug("Manually constructing PDF URL. There might not be one available.");
extras[id] = {
pdfLink: 'ovidweb.cgi?' + s + '&PDFLink=B|' + encodeURIComponent(pdfID[0])
};
}
}
fetchMetadata(doc, url, [id], extras);
}
}
function fetchMetadata(doc, url, ids, extras) {
var postData = getMetadataPost(doc, url, ids);
Zotero.debug("POST: " + postData);
ZU.doPost('./ovidweb.cgi', postData, function (text) {
// Get rid of some extra HTML fluff from the request if it's there
// The section we want starts with something like
// --HMvBAmfg|xxEGNm@\<{bVtBLgneqH?vKCw?nsIZhjcjsyRFVQ=
// Content-type: application/x-bibliographic
// Content-Transfer-Encoding: quoted-printable
// Content-Description: Ovid Citations
//
// and ends with
// --HMvBAmfg|xxEGNm@\<{bVtBLgneqH?vKCw?nsIZhjcjsyRFVQ=--
text = text.replace(/[\s\S]*(--\S+)\s+Content-type:\s*application\/x-bibliographic[^<]+([\s\S]+?)\s*\1[\s\S]*/, '$2');
Z.debug(text);
var trans = Zotero.loadTranslator('import');
// OVID Tagged
trans.setTranslator('59e7e93e-4ef0-4777-8388-d6eddb3261bf');
trans.setString(text);
trans.setHandler('itemDone', function (obj, item) {
if (item.itemID && extras[item.itemID]) {
retrievePdfUrl(item, extras[item.itemID]);
}
else {
item.complete();
}
});
trans.translate();
});
}
function retrievePdfUrl(item, extras) {
if (extras.resolvedPdfLink) {
item.attachments.push({
title: "Full Text PDF",
url: extras.resolvedPdfLink,
mimeType: 'application/pdf'
});
item.complete();
}
else if (extras.pdfLink) {
Zotero.debug("Looking for PDF URL on " + extras.pdfLink);
ZU.doGet(extras.pdfLink, function (text) {
var m = text.match(/<iframe [^>]*src\s*=\s*(['"])(.*?)\1/);
if (m) {
item.attachments.push({
title: "Full Text PDF",
url: m[2],
mimeType: 'application/pdf'
});
}
}, function () {
item.complete();
});
}
else {
item.complete();
}
}
/** BEGIN TEST CASES **/
/** END TEST CASES **/
100Philipp Zumstein, Sebastian Karcher^https?://zenon\.dainst\.org/(Record/|Search/)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2014-2020 Philipp Zumstein and Sebastian Karcher
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
// return "bookSection"; // activate for testing
// return "journalArticle"; // activate for testing
if (url.includes("/Record")) { // book, journalArticle or bookSection --> will be improved during scraping
return "book";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = ZU.xpath(doc, '//div[contains(@class, "row")]//a[contains(@class, "title")]');
for (let i = 0; i < rows.length; i++) {
var href = rows[i].href;
var title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) {
return;
}
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
// e.g. url = "http://zenon.dainst.org/Record/000300287"
// remove anchor so this doesn't break https://zenon.dainst.org/Record/001275808#usercomments
var urlParts = url.replace(/#.*/, "").split("/");
var id = urlParts[urlParts.length - 1];
// call MARC translator
ZU.doGet('/Record/' + id + '/Details', function (text) {
var parser = new DOMParser();
var xml = parser.parseFromString(text, "text/html");
var translator = Zotero.loadTranslator("import");
translator.setTranslator("a6ee60df-1ddc-4aae-bb25-45e0537be973");
translator.getTranslatorObject(function (marc) {
var details = ZU.xpath(xml, '//tr');
var record = new marc.record();
var newItem = new Zotero.Item();
for (let i = 0; i < details.length; i++) {
var fieldTag = ZU.xpathText(details[i], './th');
// skip empty lines
if (!fieldTag) continue;
var values = ZU.xpath(details[i], './td');
if (values.length == 1) {
if (fieldTag == "LEADER") {
record.leader = ZU.xpathText(details[i], './td');
}
// the control fields are not anyhow used in MARC translator, thus we do not import them
}
if (values.length == 3) {
var ind1 = ZU.xpathText(details[i], './td[1]');
var ind2 = ZU.xpathText(details[i], './td[2]');
var fieldContent = ZU.xpathText(details[i], './td[3]', null, '').replace(/[\r\n\s]*\|/g, marc.subfieldDelimiter);
record.addField(fieldTag, ind1 + ind2, fieldContent);
}
}
record.translate(newItem);
// import tags from the 999 fields and filter out dublicate tags
// leaving this here in case it ever comes back, but doesn't exist as of October 2020
record._associateTags(newItem, 999, "a");
newItem.tags = newItem.tags.filter(function (item, index, inputArray) {
return inputArray.indexOf(item) == index;
});
// get container title from 773
record._associateDBField(newItem, 773, "t", "bookTitle");
// This used to be in 995 - not seeing this anymore in October 202 but
// leaving to make sure it doesn't break.
if (!newItem.bookTitle) {
record._associateDBField(newItem, 995, "n", "bookTitle");
}
if (newItem.bookTitle) {
if (record.leader.substr(6, 2) == "as") { // This seems to work good, but I don't know if is always working.
newItem.itemType = "journalArticle";
var regularExpression1 = /^(.*),\s?(\d+),\s?(\d+)\s?\(\d\d\d\d\)/; // e.g. Bulletin du Cercle d'Études Numismatiques, 44,2 (2007)
var regularExpression2 = /^(.*),\s?(\d+)\s?\(\d\d\d\d\)/; // e.g Mannheimer Geschichtsblätter, Neue Folge, 16 (2008)
var m;
if ((m = newItem.bookTitle.match(regularExpression1))) {
newItem.publicationTitle = m[1];
newItem.volume = m[2];
newItem.issue = m[3];
}
else if ((m = newItem.bookTitle.match(regularExpression2))) {
newItem.publicationTitle = m[1];
newItem.volume = m[2];
}
}
else {
newItem.itemType = "bookSection";
}
record._associateDBField(newItem, 300, "a", "pages");
delete newItem.numPages;
}
newItem.attachments.push({
url: url,
title: "DAI Zenon Entry",
mimeType: 'text/html',
snapshot: false
});
newItem.complete();
});
});
}/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://zenon.dainst.org/Record/000269027",
"items": [
{
"itemType": "book",
"title": "Die Aufnahme fremder Kultureinflüsse in Etrurien und das Problem des Retardierens in der etruskischen Kunst: Referate vom Symposion des Deutschen Archäologen-Verbandes: Mannheim 8.-10.2. 1980",
"creators": [
{
"lastName": "Deutscher Archäologen-Verband",
"creatorType": "editor",
"fieldMode": true
},
{
"lastName": "Universität Mannheim",
"creatorType": "editor",
"fieldMode": true
}
],
"date": "1981",
"callNumber": "DG223 .A8 1981",
"libraryCatalog": "DAI-Zenon",
"numPages": "197",
"place": "Mannheim",
"publisher": "Deutscher Archäologen-Verband",
"series": "Schriften des Deutschen Archäologen-Verbandes",
"seriesNumber": "5",
"shortTitle": "Die Aufnahme fremder Kultureinflüsse in Etrurien und das Problem des Retardierens in der etruskischen Kunst",
"attachments": [
{
"title": "DAI Zenon Entry",
"mimeType": "text/html",
"snapshot": false
}
],
"tags": [
{
"tag": "Etrusker"
},
{
"tag": "Kongreßschrift"
},
{
"tag": "Mannheim 1980"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://zenon.dainst.org/Record/000300287",
"items": [
{
"itemType": "bookSection",
"title": "Kulturbeziehungen zwischen dem eisenzeitlichen Etrurien und dem Ostalpenraum",
"creators": [
{
"firstName": "Luciana",
"lastName": "Aigner-Foresti",
"creatorType": "author"
}
],
"bookTitle": "Die Aufnahme fremder Kultureinflüsse in Etrurien und das Problem des Retardierens in der etruskischen Kunst, Mannheim 8.-10.2.1980",
"libraryCatalog": "DAI-Zenon",
"pages": "46-52, Abb",
"attachments": [
{
"title": "DAI Zenon Entry",
"mimeType": "text/html",
"snapshot": false
}
],
"tags": [
{
"tag": "Alpenländer (bis 1997)"
},
{
"tag": "Beziehungen"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://zenon.dainst.org/Record/001286369",
"items": [
{
"itemType": "journalArticle",
"title": "Zwischen Diesseits und Jenseits, fünf etruskische Urnen aus den Sammlungen der rem als Zeugen einer untergeganenen Kultur",
"creators": [
{
"firstName": "Alexandra",
"lastName": "Berend",
"creatorType": "author"
}
],
"date": "2008",
"libraryCatalog": "DAI-Zenon",
"pages": "100-107",
"publicationTitle": "Mannheimer Geschichtsblätter, Neue Folge",
"volume": "16",
"attachments": [
{
"title": "DAI Zenon Entry",
"mimeType": "text/html",
"snapshot": false
}
],
"tags": [
"Etrusker",
"Ikonographie",
"Impasto-Keramik",
"Mannheim, Reiss-Engelhorn-Museum",
"Urnenbestattungen",
"Villanova"
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://zenon.dainst.org/Record/001279328",
"items": [
{
"itemType": "journalArticle",
"title": "Un bronze d'Elaia (Eolide) aux noms de Caius et Lucius César",
"creators": [
{
"firstName": "Jean-Marc",
"lastName": "Doyen",
"creatorType": "author"
}
],
"date": "2007",
"issue": "2",
"libraryCatalog": "DAI-Zenon",
"pages": "329-330",
"publicationTitle": "Bulletin du Cercle d'Études Numismatiques",
"volume": "44",
"attachments": [
{
"title": "DAI Zenon Entry",
"mimeType": "text/html",
"snapshot": false
}
],
"tags": [
"Caesar, Gaius Iulius <20 v. Chr.-4>",
"Caesar, Lucius Iulius",
"Elaia",
"Römische Münzen"
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://zenon.dainst.org/Record/000251127",
"items": [
{
"itemType": "book",
"title": "Das Bild des Augustus auf den frühen Reichsprägungen: Studien zur Vergöttlichung des ersten Prinzeps",
"creators": [
{
"firstName": "Rainer",
"lastName": "Albert",
"creatorType": "author"
}
],
"date": "1981",
"language": "ger",
"libraryCatalog": "DAI-Zenon",
"numPages": "248",
"place": "Speyer",
"publisher": "Numismatische Gesellschaft",
"series": "Schriftenreihe der Numismatischen Gesellschaft Speyer",
"seriesNumber": "21",
"shortTitle": "Das Bild des Augustus auf den frühen Reichsprägungen",
"attachments": [
{
"title": "DAI Zenon Entry",
"mimeType": "text/html",
"snapshot": false
}
],
"tags": [
{
"tag": "Augustus"
},
{
"tag": "Herrscherkult"
},
{
"tag": "Münzen als Zeugnis"
}
],
"notes": [
{
"note": "Thesis (doctoral)--Universität Mannheim, 1980"
}
],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Adam Crymble, Sebastian Karcher^https?://(www\.)?archive\.org//*
***** BEGIN LICENSE BLOCK *****
Mango Library Translator
Copyright © 2017 Adam Crymble and Sebastian Karcher
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
var icon = ZU.xpathText(doc, '//div[@class="left-icon"]/span[contains(@class, "iconochive")]/@class');
if (icon) {
if (icon.includes("texts")) {
return "book";
}
else if (icon.includes("movies")) {
return "film";
}
else if (icon.includes("audio")) {
return "audioRecording";
}
else if (icon.includes("etree")) {
return "audioRecording";
}
else if (icon.includes("software")) {
return "computerProgram";
}
else if (icon.includes("image")) {
return "artwork";
}
else if (icon.includes("tv")) {
return "tvBroadcast";
}
else {
Z.debug("Unknown Item Type: " + icon);
}
}
else if (url.includes('/stream/')) {
return "book";
}
else if (getSearchResults(doc, url, true)) {
return "multiple";
}
return false;
}
var typemap = {
texts: "book",
movies: "film",
image: "artwork",
audio: "audioRecording",
etree: "audioRecording",
software: "computerProgram"
};
function test(data) {
var clean = data ? data[0] : undefined;
return clean;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = ZU.xpath(doc, '//div[@class="results"]//div[contains(@class, "item-ttl")]//a[@href]');
for (var i = 0; i < rows.length; i++) {
var href = rows[i].href;
var title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function scrape(doc, url) {
// maximum PDF size to be downloaded. default to 10 MB
var prefMaxPdfSizeMB = 10;
var pdfurl = ZU.xpathText(doc, '//div[contains(@class, "thats-right")]/div/div/a[contains(text(), "PDF") and not(contains(text(), "B/W"))]/@href');
var pdfSize = ZU.xpathText(doc, '//div[contains(@class, "thats-right")]/div/div/a[contains(text(), "PDF") and not(contains(text(), "B/W"))]/@data-original-title');
var canonicalurl = ZU.xpathText(doc, '//link[@rel="canonical"]/@href');
var apiurl;
if (canonicalurl) {
apiurl = canonicalurl + "&output=json";
// alternative is
// var apiurl = url.replace('/details/', '/metadata/').replace('/stream/', '/metadata/');
}
else {
apiurl = url.replace('/stream/', '/details/').replace(/#.*$/, '') + "&output=json";
}
ZU.doGet(apiurl, function (text) {
try {
var obj = JSON.parse(text).metadata;
}
catch (e) {
Zotero.debug("JSON parse error");
throw e;
}
var type = obj.mediatype[0];
var itemType = typemap[type] || "document";
if (type == "movies" && obj.collection.includes("tvarchive")) {
itemType = "tvBroadcast";
}
var newItem = new Zotero.Item(itemType);
newItem.title = obj.title[0];
var creators = obj.creator;
var i;
if (creators) {
// sometimes authors are in one field delimiter by ;
if (creators && creators[0].match(/;/)) {
creators = creators[0].split(/\s*;\s*/);
}
for (i = 0; i < creators.length; i++) {
// authors are lastname, firstname, additional info - only use the first two.
var author = creators[i].replace(/(,[^,]+)(,.+)/, "$1");
if (author.includes(',')) {
newItem.creators.push(ZU.cleanAuthor(author, "author", true));
}
else {
newItem.creators.push({ lastName: author, creatorType: "author", fieldMode: 1 });
}
}
}
var contributors = obj.contributor;
if (contributors) {
for (i = 0; i < contributors.length; i++) {
// authors are lastname, firstname, additional info - only use the first two.
var contributor = contributors[i].replace(/(,[^,]+)(,.+)/, "$1");
if (contributor.includes(',')) {
newItem.creators.push(ZU.cleanAuthor(contributor, "contributor", true));
}
else {
newItem.creators.push({ lastName: contributor, creatorType: "contributor", fieldMode: 1 });
}
}
}
for (i = 0; i < newItem.creators.length; i++) {
if (!newItem.creators[i].firstName) {
newItem.creators[i].fieldMode = 1;
}
}
// abstracts can be in multiple fields;
if (obj.description) newItem.abstractNote = ZU.cleanTags(obj.description.join("; "));
var date = obj.date || obj.year;
var tags = test(obj.subject);
if (tags) {
tags = tags.split(/\s*;\s*/);
for (i = 0; i < tags.length; i++) {
newItem.tags.push(tags[i]);
}
}
// download PDFs; We're being conservative here, only downloading if we understand the filesize
if (pdfurl && pdfSize && parseFloat(pdfSize)) {
// calculate file size in MB
var pdfSizeMB;
if (pdfSize.includes("M")) {
pdfSizeMB = parseFloat(pdfSize);
}
else if (pdfSize.includes("K")) {
pdfSizeMB = parseFloat(pdfSize) / 1000;
}
else if (pdfSize.includes("G")) {
pdfSizeMB = parseFloat(pdfSize) * 1000;
}
Z.debug(pdfSizeMB);
if (pdfSizeMB < prefMaxPdfSizeMB) {
newItem.attachments.push({ url: pdfurl, title: "Internet Archive Fulltext PDF", mimeType: "application/pdf" });
}
}
newItem.date = test(date);
newItem.medium = test(obj.medium);
newItem.publisher = test(obj.publisher);
newItem.language = test(obj.language);
newItem.callNumber = test(obj.call_number);
newItem.numPages = test(obj.imagecount);
newItem.runningTime = test(obj.runtime);
newItem.rights = test(obj.licenseurl);
if (!newItem.rights) newItem.rights = test(obj.rights);
if (Array.isArray(obj.isbn) && obj.isbn.length > 0) newItem.ISBN = (obj.isbn).join(' ');
newItem.url = "http://archive.org/details/" + test(obj.identifier);
newItem.complete();
});
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) {
return;
}
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
}
else {
scrape(doc, url);
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://archive.org/details/gullshornbookstu00dekk",
"items": [
{
"itemType": "book",
"title": "The gull's hornbook : Stultorum plena sunt omnia. Al savio mezza parola basta",
"creators": [
{
"firstName": "Thomas",
"lastName": "Dekker",
"creatorType": "author"
},
{
"firstName": "John",
"lastName": "Nott",
"creatorType": "author"
},
{
"lastName": "University of Pittsburgh Library System",
"creatorType": "contributor",
"fieldMode": 1
}
],
"date": "1812",
"abstractNote": "Notes by John Nott; Bibliography of Dekker: p. iii-ix",
"callNumber": "31735060398496",
"language": "eng",
"libraryCatalog": "Internet Archive",
"numPages": "228",
"publisher": "Bristol, Reprinted for J.M. Gutch and Sold in London by R. Baldwin, and R. Triphook",
"shortTitle": "The gull's hornbook",
"url": "http://archive.org/details/gullshornbookstu00dekk",
"tags": [],
"notes": [],
"seeAlso": [],
"attachments": []
}
]
},
{
"type": "web",
"url": "https://archive.org/details/darktowersdeutsc0000enri/mode/2up",
"items": [
{
"itemType":"book",
"creators":[
{
"firstName":"David",
"lastName":"Enrich",
"creatorType":"author"
},
{
"lastName":"Internet Archive",
"creatorType":"contributor",
"fieldMode": 1
}
],
"tags":[
{
"tag":"Trump, Donald, 1946-"
}
],
"title":"Dark towers : Deutsche Bank, Donald Trump, and an epic trail of destruction",
"abstractNote":"x, 402 pages ; 24 cm; \"A searing exposé by an award-winning journalist of the most scandalous bank in the world, including its shadowy ties to Donald Trump's business empire\"--; Includes bibliographical references (pages 367-390) and index; \"A searing expose by an award-winning journalist of the most scandalous bank in the world, including its shadowy ties to Donald Trump's business empire\"--",
"date":"2020",
"publisher":"New York, NY : Custom House",
"language":"eng",
"numPages":"426",
"ISBN":"9780062878816 9780062878830",
"url":"http://archive.org/details/darktowersdeutsc0000enri",
"libraryCatalog":"Internet Archive",
"shortTitle":"Dark towers",
"notes": [],
"seeAlso": [],
"attachments": []
}
]
},
{
"type": "web",
"url": "http://www.archive.org/search.php?query=cervantes%20AND%20mediatype%3Atexts",
"items": "multiple"
},
{
"type": "web",
"url": "http://archive.org/details/Allen_Ginsberg__Anne_Waldman__Steven_Tay_89P046",
"items": [
{
"itemType": "audioRecording",
"title": "Allen Ginsberg, Anne Waldman, Steven Taylor and Bobbi Louise Hawkins performance, July, 1989.",
"creators": [
{
"firstName": "Allen",
"lastName": "Ginsberg",
"creatorType": "author"
},
{
"firstName": "Bobbie Louise",
"lastName": "Hawkins",
"creatorType": "author"
},
{
"firstName": "Steven",
"lastName": "Taylor",
"creatorType": "author"
},
{
"firstName": "Anne",
"lastName": "Waldman",
"creatorType": "author"
}
],
"date": "1989-07-08 00:00:00",
"abstractNote": "Second half of a reading with Allen Ginsberg, Bobbie Louise Hawkins, Anne Waldman, and Steven Taylor. This portion of the reading features Waldman and Ginsberg. (Continued from 89P045)",
"accessDate": "CURRENT_TIMESTAMP",
"libraryCatalog": "Internet Archive",
"publisher": "Jack Kerouac School of Disembodied Poetics",
"rights": "http://creativecommons.org/licenses/by-nd-nc/1.0/",
"runningTime": "1:30:05",
"url": "http://archive.org/details/Allen_Ginsberg__Anne_Waldman__Steven_Tay_89P046",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://archive.org/details/AboutBan1935",
"items": [
{
"itemType": "film",
"title": "About Bananas",
"creators": [
{
"lastName": "Castle Films",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "1935",
"abstractNote": "Complete presentation of the banana industry from the clearing of the jungle and the planting to the shipment of the fruit to the American markets.",
"accessDate": "CURRENT_TIMESTAMP",
"libraryCatalog": "Internet Archive",
"rights": "http://creativecommons.org/licenses/publicdomain/",
"runningTime": "11:03",
"url": "http://archive.org/details/AboutBan1935",
"attachments": [],
"tags": [
"Agriculture: Bananas",
"Central America"
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://archive.org/details/msdos_Oregon_Trail_The_1990",
"items": [
{
"itemType": "computerProgram",
"title": "Oregon Trail, The",
"creators": [
{
"lastName": "MECC",
"creatorType": "author",
"fieldMode": 1
}
],
"date": "1990",
"abstractNote": "Also For\nApple II, Macintosh, Windows, Windows 3.x\nDeveloped by\nMECC\nPublished by\nMECC\nReleased\n1990\n\n\nPacing\nReal-Time\nPerspective\nBird's-eye view, Side view, Text-based / Spreadsheet, Top-down\nEducational\nGeography, History\nGenre\nEducational, Simulation\nSetting\nWestern\nInterface\nText Parser\nGameplay\nManagerial / Business Simulation\nVisual\nFixed / Flip-screen\n\n\nDescription\n\nAs a covered wagon party of pioneers, you head out west from Independence, Missouri to the Willamette River and valley in Oregon. You first must stock up on provisions, and then, while traveling, make decisions such as when to rest, how much food to eat, etc. The Oregon Trail incorporates simulation elements and planning ahead, along with discovery and adventure, as well as mini-game-like activities (hunting and floating down the Dalles River).\n\nFrom Mobygames.com. Original Entry",
"libraryCatalog": "Internet Archive",
"url": "http://archive.org/details/msdos_Oregon_Trail_The_1990",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://archive.org/details/mma_albert_einstein_pasadena_270713",
"items": [
{
"itemType": "artwork",
"title": "Albert Einstein, Pasadena",
"creators": [],
"date": "1931",
"artworkMedium": "Gelatin silver print",
"libraryCatalog": "Internet Archive",
"rights": "<a href=\"http://www.metmuseum.org/information/terms-and-conditions\" rel=\"nofollow\">Metropolitan Museum of Art Terms and Conditions</a>",
"url": "http://archive.org/details/mma_albert_einstein_pasadena_270713",
"attachments": [],
"tags": [
"Photographs"
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://archive.org/stream/siopsecretusplan0000prin#page/n85/mode/2up",
"items": [
{
"itemType": "book",
"title": "SIOP, the secret U.S. plan for nuclear war",
"creators": [
{
"firstName": "Peter",
"lastName": "Pringle",
"creatorType": "author"
},
{
"lastName": "Internet Archive",
"creatorType": "contributor",
"fieldMode": 1
}
],
"date": "1983",
"abstractNote": "Bibliography: p. 263-277; Includes index",
"language": "eng",
"libraryCatalog": "Internet Archive",
"numPages": "298",
"publisher": "New York : Norton",
"url": "http://archive.org/details/siopsecretusplan0000prin",
"attachments": [],
"tags": [
"Nuclear warfare"
],
"notes": [],
"seeAlso": [],
"ISBN": "9780393017984"
}
]
},
{
"type": "web",
"url": "https://archive.org/details/MSNBCW_20170114_020000_The_Rachel_Maddow_Show/start/60/end/120",
"items": [
{
"itemType": "tvBroadcast",
"title": "The Rachel Maddow Show : MSNBCW : January 13, 2017 6:00pm-7:01pm PST",
"creators": [
{
"lastName": "MSNBCW",
"creatorType": "contributor",
"fieldMode": 1
}
],
"date": "2017-01-14",
"abstractNote": "Rachel Maddow takes a look at the day's top political news stories.",
"language": "eng",
"libraryCatalog": "Internet Archive",
"runningTime": "01:01:00",
"shortTitle": "The Rachel Maddow Show",
"url": "http://archive.org/details/MSNBCW_20170114_020000_The_Rachel_Maddow_Show",
"attachments": [],
"tags": [
"amd",
"atlas",
"backups",
"bernie sanders",
"breo",
"britain",
"charleston",
"chuck schumer",
"chuck todd",
"cialis",
"clinton",
"comcast business",
"directv",
"donald trump",
"donald trump jr.",
"downy fabric conditioner",
"fbi",
"geico",
"james comey",
"john lewis",
"london",
"michael beschloss",
"moscow",
"nancy pelosi",
"nbc news",
"obama",
"oregon",
"osteo bi-flex",
"rachel",
"rachel maddow",
"richard nixon",
"russia",
"south carolina",
"south carolina",
"titan atlas",
"washington",
"waterloo"
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Sebastian Karcher^https?://(www\.)?ascelibrary\.org/(toc|doi|action)//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2020 Sebastian Karcher
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
// attr()/text() v2
// eslint-disable-next-line
function attr(docOrElem,selector,attr,index){var elem=index?docOrElem.querySelectorAll(selector).item(index):docOrElem.querySelector(selector);return elem?elem.getAttribute(attr):null}function text(docOrElem,selector,index){var elem=index?docOrElem.querySelectorAll(selector).item(index):docOrElem.querySelector(selector);return elem?elem.textContent:null}
function detectWeb(doc, url) {
if (/\/doi\/((abs|full)\/)?10\./.test(url)) {
return "journalArticle";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('div[class*="art_title"]>a');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
// EM only gets a social media preview for the abastract
let abstract = text(doc, 'article.article div[class*="Abstract"]>p');
// Z.debug(abstract);
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
item.libraryCatalog = "ASCE";
if (abstract) {
item.abstractNote = abstract;
}
// Remove mapping from DC:coverage to archiveLocation
item.archiveLocation = "";
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://ascelibrary.org/action/doSearch?text1=test&field1=AllField&logicalOpe1=AND&text2=&field2=AllField&logicalOpe2=NOT&text3=&field3=AllField&logicalOpe3=AND&text4=&field4=AllField&logicalOpe4=AND&text5=&field5=AllField&logicalOpe5=AND&text6=&field6=AllField&logicalOpe6=AND&text7=&field7=AllField&AfterMonth=&AfterYear=&BeforeMonth=&BeforeYear=",
"items": "multiple"
},
{
"type": "web",
"url": "https://ascelibrary.org/doi/abs/10.1061/%28ASCE%290887-381X%282003%2917%3A1%2837%29",
"items": [
{
"itemType": "journalArticle",
"title": "Friction Measurement on Cycleways Using a Portable Friction Tester",
"creators": [
{
"firstName": "A.",
"lastName": "Bergström",
"creatorType": "author"
},
{
"firstName": "H.",
"lastName": "Åström",
"creatorType": "author"
},
{
"firstName": "R.",
"lastName": "Magnusson",
"creatorType": "author"
}
],
"date": "2003/03/01",
"DOI": "10.1061/(ASCE)0887-381X(2003)17:1(37)",
"ISSN": "0887-381X",
"abstractNote": "In seeking to promote cycling in wintertime, it is desirable to understand how important the winter maintenance service level is in people’s decision to cycle or not, and methods to compare different road conditions on cycleways are therefore needed. By measuring friction, an assessment of the service level can be achieved, but methods available often involve the use of large vehicles, which can lead to overloading damage on cycleways, and constitute a safety risk for cyclists and pedestrians. A portable friction tester (PFT), originally designed to measure friction on road markings, was thought to be an appropriate instrument for cycleways and was, therefore, tested on different winter road conditions, and on different cycleway pavement materials. In this study, it was found that the PFT is a valuable tool for measuring friction on cycleways. Different winter road conditions, as well as different pavement materials, can be distinguished from each other through PFT measurements. The PFT provides a good complement to visual inspections of cycleways in winter maintenance evaluation and can, for example, be used to determine if desired service levels have been achieved.",
"issue": "1",
"language": "EN",
"libraryCatalog": "ASCE",
"pages": "37-57",
"publicationTitle": "Journal of Cold Regions Engineering",
"rights": "Copyright © 2003 American Society of Civil Engineers",
"url": "https://ascelibrary.org/doi/abs/10.1061/%28ASCE%290887-381X%282003%2917%3A1%2837%29",
"volume": "17",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Snapshot"
}
],
"tags": [
{
"tag": "Bicycles"
},
{
"tag": "Friction"
},
{
"tag": "Maintenance"
},
{
"tag": "Measurement"
},
{
"tag": "Roads"
},
{
"tag": "friction"
},
{
"tag": "inspection"
},
{
"tag": "maintenance engineering"
},
{
"tag": "road traffic"
},
{
"tag": "safety"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://ascelibrary.org/toc/jcemd4/138/5",
"items": "multiple"
}
]
/** END TEST CASES **/
100Ace Strong<acestrong@gmail.com>^https?://(www|book)\.douban\.com/(subject|doulist|people/[a-zA-Z._]*/(do|wish|collect)|.*?status=(do|wish|collect)|group/[0-9]*?/collection|tag)/*
Douban Translator
Copyright (C) 2009-2010 TAO Cheng, acestrong@gmail.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
// #######################
// ##### Sample URLs #####
// #######################
/*
* The starting point for an search is the URL below.
* In testing, I tried the following:
*
* - A search listing of books
* - A book page
* - A doulist page
* - A do page
* - A wish page
* - A collect page
*/
// http://book.douban.com/
// #################################
// #### Local utility functions ####
// #################################
function trimTags(text) {
return text.replace(/(<.*?>)/g, "");
}
// #############################
// ##### Scraper functions #####
// #############################
function scrapeAndParse(doc, url) {
// Z.debug({ url })
Zotero.Utilities.HTTP.doGet(url, function (page) {
// Z.debug(page)
var pattern;
// 类型 & URL
var itemType = "book";
var newItem = new Zotero.Item(itemType);
// Zotero.debug(itemType);
newItem.url = url;
// 标题
pattern = /<h1>([\s\S]*?)<\/h1>/;
if (pattern.test(page)) {
var title = pattern.exec(page)[1];
newItem.title = Zotero.Utilities.trim(trimTags(title));
// Zotero.debug("title: "+title);
}
// 又名
pattern = /<span [^>]*?>又名:(.*?)<\/span>/;
if (pattern.test(page)) {
var shortTitle = pattern.exec(page)[1];
newItem.shortTitle = Zotero.Utilities.trim(shortTitle);
// Zotero.debug("shortTitle: "+shortTitle);
}
// 作者
page = page.replace(/\n/g, "");
// Z.debug(page)
pattern = /<span>\s*<span[^>]*?>\s*作者<\/span>:(.*?)<\/span>/;
if (pattern.test(page)) {
var authorNames = trimTags(pattern.exec(page)[1]);
pattern = /(\[.*?\]|\(.*?\)|(.*?))/g;
authorNames = authorNames.replace(pattern, "").split("/");
// Zotero.debug(authorNames);
for (let i = 0; i < authorNames.length; i++) {
let useComma = true;
pattern = /[A-Za-z]/;
if (pattern.test(authorNames[i])) {
// 外文名
pattern = /,/;
if (!pattern.test(authorNames[i])) {
useComma = false;
}
}
newItem.creators.push(Zotero.Utilities.cleanAuthor(
Zotero.Utilities.trim(authorNames[i]),
"author", useComma));
}
}
// 译者
pattern = /<span>\s*<span [^>]*?>\s*译者<\/span>:(.*?)<\/span>/;
if (pattern.test(page)) {
var translatorNames = trimTags(pattern.exec(page)[1]);
pattern = /(\[.*?\])/g;
translatorNames = translatorNames.replace(pattern, "").split("/");
// Zotero.debug(translatorNames);
for (let i = 0; i < translatorNames.length; i++) {
let useComma = true;
pattern = /[A-Za-z]/;
if (pattern.test(translatorNames[i])) {
// 外文名
useComma = false;
}
newItem.creators.push(Zotero.Utilities.cleanAuthor(
Zotero.Utilities.trim(translatorNames[i]),
"translator", useComma));
}
}
// ISBN
pattern = /<span [^>]*?>ISBN:<\/span>(.*?)<br\/>/;
if (pattern.test(page)) {
var isbn = pattern.exec(page)[1];
newItem.ISBN = Zotero.Utilities.trim(isbn);
// Zotero.debug("isbn: "+isbn);
}
// 页数
pattern = /<span [^>]*?>页数:<\/span>(.*?)<br\/>/;
if (pattern.test(page)) {
var numPages = pattern.exec(page)[1];
newItem.numPages = Zotero.Utilities.trim(numPages);
// Zotero.debug("numPages: "+numPages);
}
// 出版社
pattern = /<span [^>]*?>出版社:<\/span>(.*?)<br\/>/;
if (pattern.test(page)) {
var publisher = pattern.exec(page)[1];
newItem.publisher = Zotero.Utilities.trim(publisher);
// Zotero.debug("publisher: "+publisher);
}
// 丛书
pattern = /<span [^>]*?>丛书:<\/span>(.*?)<br\/>/;
if (pattern.test(page)) {
var series = trimTags(pattern.exec(page)[1]);
newItem.series = Zotero.Utilities.trim(series);
// Zotero.debug("series: "+series);
}
// 出版年
pattern = /<span [^>]*?>出版年:<\/span>(.*?)<br\/>/;
if (pattern.test(page)) {
var date = pattern.exec(page)[1];
newItem.date = Zotero.Utilities.trim(date);
// Zotero.debug("date: "+date);
}
// 简介
var tags = ZU.xpath(doc, '//div[@id="db-tags-section"]/div//a');
for (let i in tags) {
newItem.tags.push(tags[i].textContent);
}
newItem.abstractNote = ZU.xpathText(doc, '//span[@class="short"]/div[@class="intro"]/p');
newItem.complete();
});
}
// #########################
// ##### API functions #####
// #########################
function detectWeb(doc, url) {
var pattern = /subject_search|doulist|people\/[a-zA-Z._]*?\/(?:do|wish|collect)|.*?status=(?:do|wish|collect)|group\/[0-9]*?\/collection|tag/;
if (pattern.test(url)) {
return "multiple";
}
else {
return "book";
}
}
function detectTitles(doc, url) {
var pattern = /\.douban\.com\/tag\//;
if (pattern.test(url)) {
return ZU.xpath(doc, '//div[@class="info"]/h2/a');
} else {
return ZU.xpath(doc, '//div[@class="title"]/a');
}
}
function doWeb(doc, url) {
var articles = [];
let r = /douban.com\/url\//;
if (detectWeb(doc, url) == "multiple") {
// also searches but they don't work as test cases in Scaffold
// e.g. https://book.douban.com/subject_search?search_text=Murakami&cat=1001
var items = {};
// var titles = ZU.xpath(doc, '//div[@class="title"]/a');
var titles = detectTitles(doc, url);
var title;
for (let i = 0; i < titles.length; i++) {
title = titles[i];
// Zotero.debug({ href: title.href, title: title.textContent });
if (r.test(title.href)) { // Ignore links
continue;
}
items[title.href] = title.textContent;
}
Zotero.selectItems(items, function (items) {
if (!items) {
return;
}
for (var i in items) {
articles.push(i);
}
Zotero.Utilities.processDocuments(articles, scrapeAndParse);
});
}
else {
scrapeAndParse(doc, url);
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://book.douban.com/subject/1355643/",
"items": [
{
"itemType": "book",
"title": "Norwegian Wood",
"creators": [
{
"firstName": "Haruki",
"lastName": "Murakami",
"creatorType": "author"
},
{
"firstName": "Jay",
"lastName": "Rubin",
"creatorType": "translator"
}
],
"date": "2003",
"ISBN": "9780099448822",
"abstractNote": "When he hears her favourite Beatles song, Toru Watanabe recalls his first love Naoko, the girlfriend of his best friend Kizuki. Immediately he is transported back almost twenty years to his student days in Tokyo, adrift in a world of uneasy friendships, casual sex, passion, loss and desire - to a time when an impetuous young woman called Midori marches into his life and he has ..., (展开全部)",
"libraryCatalog": "Douban",
"numPages": "389",
"publisher": "Vintage",
"url": "https://book.douban.com/subject/1355643/",
"attachments": [],
"tags": [
{
"tag": "HarukiMurakami"
},
{
"tag": "小说"
},
{
"tag": "挪威森林英文版"
},
{
"tag": "日本"
},
{
"tag": "日本文学"
},
{
"tag": "村上春树"
},
{
"tag": "英文原版"
},
{
"tag": "英文版"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.douban.com/doulist/120664512/",
"items": "multiple"
},
{
"type": "web",
"url": "https://book.douban.com/tag/认知心理学?type=S",
"items": "multiple"
}
]
/** END TEST CASES **/
100Sebastian Karcher^https?://www\.bnm\.me\.gov\.ar/catalogo/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2020 Sebastian Karcher
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
// We'll go with Book throughout for simplicity's sake
if (/\/Record\/\d+/.test(url)) {
return "book";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.result div[class*="resultItemLine"]>a.title[href*="/Record/"]');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) scrape(Object.keys(items));
});
}
else {
scrape([url]);
}
}
function constructMARCurls(urls) {
let MARCurls = [];
for (let url of urls) {
url = url.replace(/\/(Details|Holdings)([#?].*)?/, ""); // remove panels
MARCurls.push(url + "/Export?style=MARCXML");
}
return MARCurls;
}
function scrape(urls) {
let MARCurls = constructMARCurls(urls);
// Z.debug(MARCurls);
ZU.doGet(MARCurls, function(text) {
var translator = Zotero.loadTranslator("import");
// Z.debug(text);
// MARC XML
translator.setTranslator("edd87d07-9194-42f8-b2ad-997c4c7deefd");
translator.setString(text);
translator.translate();
});
}/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://www.bnm.me.gov.ar/catalogo/Record/000042859/Details",
"items": [
{
"itemType": "book",
"title": "Los tests: manual de pruebas psicométricas de inteligencia y de aptitudes",
"creators": [
{
"firstName": "Béla",
"lastName": "Szekely",
"creatorType": "author"
},
{
"firstName": "Alfredo D.",
"lastName": "Calcagno",
"creatorType": "author"
}
],
"date": "1950",
"callNumber": "37.048",
"edition": "2ª ed., con corr. y ampl",
"libraryCatalog": "Biblioteca Nacional de Maestros",
"numPages": "2",
"place": "Buenos Aires",
"publisher": "Editorial Kapelusz",
"series": "Biblioteca de Ciencias de la Educación",
"seriesNumber": "v. 3",
"shortTitle": "Los tests",
"attachments": [],
"tags": [
{
"tag": "EVALUACION DEL ALUMNO"
},
{
"tag": "PSICOMETRIA"
},
{
"tag": "PSICOMETRIA"
},
{
"tag": "TESTS DE INTELIGENCIA"
},
{
"tag": "TESTS DE INTELIGENCIA"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.bnm.me.gov.ar/catalogo/Search/Results?join=AND&bool0%5B%5D=AND&lookfor0%5B%5D=borges&type0%5B%5D=AllFields&lookfor0%5B%5D=&type0%5B%5D=AllFields&lookfor0%5B%5D=&type0%5B%5D=AllFields&limit%5B%5D=&illustration=-1&daterange%5B%5D=publishDate&publishDatefrom=&publishDateto=&submit=Buscar",
"items": "multiple"
},
{
"type": "web",
"url": "http://www.bnm.me.gov.ar/catalogo/Record/000074329",
"items": [
{
"itemType": "book",
"title": "Borges: cuentos",
"creators": [
{
"firstName": "Jorge Luis",
"lastName": "Borges",
"creatorType": "author"
},
{
"firstName": "María Adela",
"lastName": "Renard",
"creatorType": "author"
}
],
"date": "1998",
"ISBN": "9789501323016",
"callNumber": "860(82)-3",
"libraryCatalog": "Biblioteca Nacional de Maestros",
"numPages": "200",
"place": "Buenos Aires",
"publisher": "Kapelusz",
"series": "Grandes obras de la literatura universal",
"shortTitle": "Borges",
"attachments": [],
"tags": [
{
"tag": "ANTOLOGIAS"
},
{
"tag": "CRIOLLISMO"
},
{
"tag": "CUENTOS FANTASTICOS"
},
{
"tag": "CUENTOS POLICIALES"
},
{
"tag": "LITERATURA DE ARGENTINA"
}
],
"notes": [
{
"note": "Contiene referencias bibliográficas en p. 195"
}
],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100TFU, Mathis EON^https?://(www\.)?theses\.fr/([a-z]{2}/)?((s\d+|\d{4}.{8}|\d{8}X|\d{9})(?!\.(rdf|xml)$)|(sujets/\?q=|\?q=))(?!.*&format=(json|xml))/*
***** BEGIN LICENSE BLOCK *****
theses.fr
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
// Match against a results page or a Ph. D/supervisor/organization page which might contains multiple records e.g.
// http://www.theses.fr/fr/?q=zotero
// http://www.theses.fr/fr/154750417
if (url.includes('/?q=') || url.match(/\d{8}(\d|X)/)) {
return 'multiple';
}
else {
return 'thesis';
}
}
function getSearchResults(doc, checkOnly) {
let items = {};
let found = false;
let rows = ZU.xpath(doc, '//div[contains(@class, "encart arrondi-10")]//h2/a');
rows.forEach((row) => {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (checkOnly) return true;
found = true;
items[href] = title;
return row;
});
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) === 'multiple') {
Zotero.selectItems(getSearchResults(doc, false), (items) => {
if (!items) return;
let records = [];
let item = null;
for (item in items) {
records.push(item);
}
ZU.processDocuments(records, scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
let xmlDocumentUrl = `${url}.rdf`;
// Each thesis record has an underlying .rdf file
Zotero.Utilities.HTTP.doGet(xmlDocumentUrl, function (text) {
let parser = new DOMParser();
let xmlDoc = parser.parseFromString(text, 'application/xml');
// Skiping invalid or empty RDF files : prevents crashes while importing multiple records
if (xmlDoc.getElementsByTagName('parsererror')[0] || xmlDoc.children[0].childElementCount === 0) {
throw new Error("Invalid or empty RDF file");
}
// Importing XML namespaces for parsing purposes
let ns = {
bibo: 'http://purorg/ontology/bibo/',
dc: 'http://purl.org/dc/elements/1.1/',
dcterms: 'http://purl.org/dc/terms/',
foaf: 'http://xmlns.com/foaf/0.1/',
marcrel: 'http://www.loc.gov/loc.terms/relators/',
rdf: 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'
};
let title = ZU.xpathText(xmlDoc, '//dc:title', ns);
if (!title) throw new Error("Reccord must contains a title to be imported");
let newItem = new Zotero.Item();
newItem.itemType = 'thesis';
newItem.title = title;
ZU.xpath(xmlDoc, '//marcrel:aut//foaf:Person/foaf:name | //marcrel:dis//foaf:Person/foaf:name', ns).forEach((auth) => {
let author = ZU.cleanAuthor(auth.textContent, 'author', true);
newItem.creators.push(author);
});
// Supervisor(s) must be considered as contributor(s) for french thesis
ZU.xpath(xmlDoc, '//marcrel:ths//foaf:Person/foaf:name', ns).forEach((sup) => {
let supervisor = ZU.cleanAuthor(sup.textContent, 'contributor', true);
newItem.creators.push(supervisor);
});
newItem.abstractNote = ZU.xpathText(xmlDoc, '(//dcterms:abstract)[1]', ns);
// '/s + digit' in url means thesis in preparation
newItem.thesisType = url.match(/\/s\d+/) ? 'These en préparation' : 'These de doctorat';
newItem.university = ZU.xpathText(xmlDoc, '(//marcrel:dgg/foaf:Organization/foaf:name)[1]', ns);
let fullDate = ZU.xpathText(xmlDoc, '//dcterms:dateAccepted', ns);
let year = ZU.xpathText(xmlDoc, '//dc:date', ns);
// Some old records doesn't have a full date instead we can use the defense year
newItem.date = fullDate ? fullDate : year;
newItem.url = url;
newItem.libraryCatalog = 'theses.fr';
newItem.rights = 'Licence Etalab';
// Keep extra information such as laboratory, graduate schools, etc. in a note for thesis not yet defended
let notePrepa = Array.from(doc.getElementsByClassName('donnees-ombreprepa2')).map((description) => {
return Array.from(description.getElementsByTagName('p')).map(description => description.textContent.replace(/\n/g, ' ').trim());
}).join(' ');
if (notePrepa) {
newItem.notes.push({ note: notePrepa });
}
// Keep extra information such as laboratory, graduate schools, etc. in a note for defended thesis
let note = Array.from(doc.getElementsByClassName('donnees-ombre')).map((description) => {
return Array.from(description.getElementsByTagName('p')).map(description => description.textContent.replace(/\n/g, ' ').trim());
}).join(' ');
if (note) {
newItem.notes.push({ note: note });
}
ZU.xpath(xmlDoc, '//dc:subject', ns).forEach((t) => {
let tag = t.textContent;
newItem.tags.push(tag);
});
newItem.complete();
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://theses.fr/?q=Mesure+de+masse+de+noyau#",
"items": "multiple"
},
{
"type": "web",
"url": "http://www.theses.fr/fr/154750417",
"items": "multiple"
},
{
"type": "web",
"url": "http://www.theses.fr/fr/188120777",
"items": "multiple"
},
{
"type": "web",
"url": "http://www.theses.fr/2016SACLS590",
"items": [
{
"itemType": "thesis",
"title": "Measurement of the W boson mass with the ATLAS detector",
"creators": [
{
"firstName": "Oleh",
"lastName": "Kivernyk",
"creatorType": "author"
},
{
"firstName": "Maarten",
"lastName": "Boonekamp",
"creatorType": "contributor"
}
],
"date": "2016-09-19",
"abstractNote": "Cette thèse décrit une mesure de la masse du boson W avec le détecteur ATLAS. La mesure exploite les données enregistrées par ATLAS en 2011, a une énergie dans le centre de masse de 7 TeV et correspondant à une luminosité intégrée de 4.6 inverse femtobarn. Les mesures sont faites par ajustement aux données de distributions en énergie transverse des leptons charges et en masse transverse du boson W obtenues par simulation, dans les canaux électron et muon, et dans plusieurs catégories cinématiques. Les différentes mesures sont en bon accord et leur combinaison donne une valeur de m_W = 80371.1 ± 18.6 MeV. La valeur mesurée est compatible avec la moyenne mondiale des mesures existantes, m_W = 80385 ± 15 MeV, et l'incertitude obtenue est compétitive avec les mesures les plus précises réalisées par les collaborations CDF et D0.",
"libraryCatalog": "theses.fr",
"thesisType": "These de doctorat",
"university": "Université Paris-Saclay (ComUE)",
"url": "http://www.theses.fr/2016SACLS590",
"attachments": [],
"tags": [
{
"tag": "ATLAS"
},
{
"tag": "ATLAS"
},
{
"tag": "Bosons W -- Masse"
},
{
"tag": "Grand collisionneur de hadrons"
},
{
"tag": "LHC"
},
{
"tag": "LHC"
},
{
"tag": "Masse du boson W"
},
{
"tag": "Modèle standard"
},
{
"tag": "Modèle standard (physique nucléaire)"
},
{
"tag": "Standard Model"
},
{
"tag": "W boson mass"
}
],
"rights": "Licence Etalab",
"notes": [
{
"note": "Sous la direction de Maarten Boonekamp. Soutenue le 19-09-2016,à l'Université Paris-Saclay (ComUE) , dans le cadre de École doctorale Particules, Hadrons, Énergie et Noyau : Instrumentation, Imagerie, Cosmos et Simulation (Orsay, Essonne ; 2015-....) , en partenariat avec Département de physique des particules (Gif-sur-Yvette, Essonne) (laboratoire) , Centre européen pour la recherche nucléaire (laboratoire) et de Université Paris-Sud (1970-2019) (établissement opérateur d'inscription) ."
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.theses.fr/s128743",
"items": [
{
"itemType": "thesis",
"creators": [
{
"firstName": "Alice",
"lastName": "Cartier",
"creatorType": "author"
},
{
"firstName": "Gilles J.",
"lastName": "Guglielmi",
"creatorType": "contributor"
}
],
"notes": [
{
"note": "Thèses en préparation à Paris 2 , dans le cadre de Ecole doctorale Georges Vedel Droit public interne, science administrative et science politique (Paris) depuis le 01-10-2014 ."
}
],
"tags": [],
"seeAlso": [],
"attachments": [],
"title": "Les relations bilatérales France-Québec à l'épreuve de l'OMC et de l'UE",
"abstractNote": "Champ territorial: les fondements juridiques France/Québec/Canada/Europe, approches croisées européen/international. 1ère partie orientée histoire du droit: analyse relation bilatérale France/Québec: prémices enjeux diplomatiques et culturels pour la France de \"Gesta Dei per Francos\" aux échanges particuliers France/Québec (1910-1860), puis enjeux diplomatiques et culturels pour la France dans les années 1960 de Gaulle, Malraux, Québec et francophonie), Trente Glorieuses et période de guerre froide, tournant sur le plan international influant et restructurant les bases juridiques. Pour le Canada: période de \"crise majeure de son histoire\" avec la Révolution tranquille et remise en cause des rapports/accords diplomatiques avec la France qui existaient depuis Napoléon III, apparition ouverte d'un rapport triangulaire (Paris-Ottawa-Québec). Le Québec s'éveille, s'affirme, rêve d'indépendance.",
"thesisType": "These en préparation",
"university": "Paris 2",
"date": "2014",
"url": "http://www.theses.fr/s128743",
"libraryCatalog": "theses.fr",
"rights": "Licence Etalab"
}
]
}
]
/** END TEST CASES **/
100Guy Aglionby^https://research\.google/(pubs|people|research-areas|teams)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2018 Guy Aglionby
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
// See BibTeX.js
var bibtex2zoteroTypeMap = {
book: "book", // or booklet, proceedings
inbook: "bookSection",
incollection: "bookSection",
article: "journalArticle", // or magazineArticle or newspaperArticle
patent: "patent",
phdthesis: "thesis",
unpublished: "manuscript",
inproceedings: "conferencePaper", // check for conference also
conference: "conferencePaper",
techreport: "report",
booklet: "book",
manual: "book",
mastersthesis: "thesis",
misc: "book",
proceedings: "book",
online: "webpage",
// from BibLaTeX translator:
thesis: "thesis",
letter: "letter",
movie: "film",
artwork: "artwork",
report: "report",
legislation: "bill",
jurisdiction: "case",
audio: "audioRecording",
video: "videoRecording",
software: "computerProgram",
inreference: "encyclopediaArticle",
collection: "book",
mvbook: "book"
};
function detectWeb(doc, url) {
if (url.includes('/pubs/pub')) {
let bibtex = extractBibtex(doc);
let doctype = bibtex.split('{')[0].replace('@', '');
return bibtex2zoteroTypeMap[doctype] || 'journalArticle';
}
else if (getSearchResults(doc, true)) {
return 'multiple';
}
return false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) === 'multiple') {
// The below two pages with multiples are populated after page load has finished,
// so can't be used as automatic test cases. For others this is not the case.
// https://ai.google/research/people/105197
// https://ai.google/research/pubs/
Zotero.selectItems(getSearchResults(doc), function (selected) {
if (selected) {
ZU.processDocuments(Object.keys(selected), scrape);
}
});
}
else {
scrape(doc, url);
}
}
function scrape(doc) {
let bibtex = extractBibtex(doc);
let translator = Zotero.loadTranslator("import");
translator.setTranslator("9cb70025-a888-4a29-a210-93ec52da40d4");
translator.setString(bibtex);
translator.setHandler("itemDone", function (obj, item) {
let downloadUrl = ZU.xpathText(doc, '//a[span[contains(@class, "icon--download")]]/@href');
if (downloadUrl && downloadUrl.endsWith('.pdf')) {
item.attachments.push({
url: downloadUrl,
title: 'Full Text PDF',
mimeType: 'application/pdf'
});
}
delete item.itemID;
item.complete();
});
translator.translate();
}
function extractBibtex(doc) {
let bibtex = ZU.xpathText(doc, '//a[contains(text(), "Bibtex")]/@copy-to-clipboard');
return decodeURIComponent(bibtex);
}
function getSearchResults(doc, checkOnly) {
let items = {};
let found = false;
let rows = ZU.xpath(doc, '//a[contains(@class, "card__title")]');
for (let i = 0; i < rows.length; i++) {
let href = rows[i].href;
let title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://research.google/pubs/pub47251/",
"items": [
{
"itemType": "conferencePaper",
"title": "\"If I press delete, it's gone\" - User Understanding of Online Data Deletion and Expiration",
"creators": [
{
"firstName": "Ambar",
"lastName": "Murillo",
"creatorType": "author"
},
{
"firstName": "Andreas",
"lastName": "Kramm",
"creatorType": "author"
},
{
"firstName": "Sebastian",
"lastName": "Schnorf",
"creatorType": "author"
},
{
"firstName": "Alexander De",
"lastName": "Luca",
"creatorType": "author"
}
],
"date": "2018",
"libraryCatalog": "Google Research",
"proceedingsTitle": "Proceedings of the Symposium on Usable Privacy and Security 2018",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://research.google/pubs/pub46616/",
"items": [
{
"itemType": "report",
"title": "Designing A/B tests in a collaboration network",
"creators": [
{
"firstName": "Sangho",
"lastName": "Yoon",
"creatorType": "author"
}
],
"date": "2018",
"libraryCatalog": "Google Research",
"url": "http://www.unofficialgoogledatascience.com/2018/01/designing-ab-tests-in-collaboration.html",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://research.google/research-areas/algorithms-and-theory/",
"items": "multiple"
},
{
"type": "web",
"url": "https://research.google/teams/applied-science/gas/",
"items": "multiple"
}
]
/** END TEST CASES **/
100Philipp Zumstein^https?://(www|opac)\.sbn\.it/opacsbn/opaclib/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2015 Philipp Zumstein
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
var typeMapping = {
"testo a stampa": "book",
// "musica a stampa" ,
"documento da proiettare o video": "videoRecording",
"registrazione sonora": "audioRecording",
// "musica manoscritta",
"documento grafico": "artwork",
// "risorsa elettronica",
"documento cartografico a stampa": "map",
"registrazione sonora non musicale": "audioRecording",
// "documento multimediale",
// "testo manoscritto",
// "oggetto tridimensionale",
// "documento cartografico manoscritto"
};
function detectWeb(doc, url) {
if (url.includes("full.jsp")) {
var type = ZU.xpathText(doc, '//tr[ td[contains(text(), "Tipo documento")] ]/td[contains(@class,"detail_value")]');
// Z.debug(type.trim());
return typeMapping[type.trim().toLowerCase()] || "book";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = ZU.xpath(doc, '//li[contains(@class, "element")]//div[contains(@class, "content")]/strong/a');
for (var i = 0; i < rows.length; i++) {
var href = rows[i].href;
var title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) {
return;
}
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, _url) {
var urlMarc = ZU.xpathText(doc, '(//a[contains(@title, "Scarico Marc21 del record") or contains(@title, "Download Marc21 record")]/@href)[1]');
// Z.debug(urlMarc);
ZU.doGet(urlMarc, function (text) {
// call MARC translator
var translator = Zotero.loadTranslator("import");
translator.setTranslator("a6ee60df-1ddc-4aae-bb25-45e0537be973");
translator.setString(text);
translator.translate();
});
}/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://www.sbn.it/opacsbn/opaclib?db=solr_iccu&select_db=solr_iccu&saveparams=false&resultForward=opac%2Ficcu%2Ffull.jsp&searchForm=opac%2Ficcu%2Ffree.jsp&y=0&do_cmd=search_show_cmd&x=0&nentries=1&rpnlabel=+Tutti+i+campi+%3D+zotero+%28parole+in+AND%29+&rpnquery=%2540attrset%2Bbib-1%2B%2B%2540attr%2B1%253D1016%2B%2540attr%2B4%253D6%2B%2522zotero%2522&&fname=none&from=1",
"items": [
{
"itemType": "book",
"title": "Zotero: a guide for librarians, researchers and educators",
"creators": [
{
"firstName": "Jason",
"lastName": "Puckett",
"creatorType": "author"
}
],
"date": "2011",
"ISBN": "9780838985892",
"language": "eng",
"libraryCatalog": "sbn.it",
"numPages": "159",
"place": "Chicago (Ill.)",
"publisher": "Association of college and research libraries",
"shortTitle": "Zotero",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://opac.sbn.it/opacsbn/opaclib?db=solr_iccu&rpnquery=%2540attrset%2Bbib-1%2B%2B%2540attr%2B1%253D1032%2B%2540attr%2B4%253D2%2B%2522VEA0102960%2522&totalResult=1&select_db=solr_iccu&nentries=1&rpnlabel=BID%3DVEA0102960&resultForward=opac%2Ficcu%2Ffull.jsp&searchForm=opac%2Ficcu%2Ferror.jsp&do_cmd=show_cmd&saveparams=false&&fname=none&from=1",
"items": [
{
"itemType": "book",
"title": "La qualità: un impegno per le biblioteche: atti delle quarte giornate di studio del Cnba, Torino 22-24 maggio 1997",
"creators": [
{
"lastName": "Coordinamento nazionale delle biblioteche di architettura",
"creatorType": "author",
"fieldMode": true
},
{
"firstName": "Ezio",
"lastName": "Tarantino",
"creatorType": "editor"
},
{
"firstName": "Giovanna",
"lastName": "Terranova",
"creatorType": "editor"
}
],
"date": "1998",
"callNumber": "026.72",
"language": "ita",
"libraryCatalog": "sbn.it",
"numPages": "158",
"place": "Roma",
"publisher": "CNBA Coordinamento nazionale biblioteche di architettura",
"shortTitle": "La qualità",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.sbn.it/opacsbn/opaclib?db=solr_iccu&select_db=solr_iccu&nentries=10&from=1&searchForm=opac/iccu/error.jsp&resultForward=opac/iccu/brief.jsp&do_cmd=show_cmd&rpnlabel=+Any+%3D+google+%28words+in+AND%29+&rpnquery=%40attrset+bib-1++%40attr+1%3D1016+%40attr+4%3D6+%22google%22&totalResult=186",
"items": "multiple"
}
]
/** END TEST CASES **/
100Sebastian Karcher^https?://www\.emerald\.com/insight/(publication/|content/|search\?)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2019 Sebastian Karcher
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
// attr()/text() v2
// eslint-disable-next-line
function attr(docOrElem,selector,attr,index){var elem=index?docOrElem.querySelectorAll(selector).item(index):docOrElem.querySelector(selector);return elem?elem.getAttribute(attr):null;}function text(docOrElem,selector,index){var elem=index?docOrElem.querySelectorAll(selector).item(index):docOrElem.querySelector(selector);return elem?elem.textContent:null;}
function detectWeb(doc, url) {
// ensure that we only detect where scrape will (most likely) work
if (url.includes('/content/doi/') && (url.search(/\/(10\.[^#?/]+\/[^#?/]+)\//) != -1 || url.includes("/full"))) {
if (attr(doc, 'meta[name="dc.Type"]', 'content') == "book-part") {
return "bookSection";
}
else return "journalArticle";
}
else if (getSearchResults(doc, url, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, url, checkOnly) {
var items = {};
var found = false;
var rows;
if (url.includes("insight/search?")) {
// search results
rows = doc.querySelectorAll('h2>a.intent_link');
}
else {
// journal issue or books,
rows = doc.querySelectorAll('.intent_issue_item h4>a, li.intent_book_chapter>a');
}
for (let i = 0; i < rows.length; i++) {
let href = rows[i].href;
let title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, url, false), function (items) {
if (!items) {
return;
}
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var DOI = url.match(/\/(10\.[^#?/]+\/[^#?/]+)\//);
var risURL;
if (DOI) {
risURL = "/insight/content/doi/" + DOI[1] + "/full/ris";
}
else {
Z.debug("can't find DOI, trying alternative approach for risURL");
risURL = url.replace(/\/full.*/, "/full/ris");
}
// Z.debug(risURL);
var pdfURL;
// make this works on PDF pages
if (url.includes("full/pdf?")) {
pdfURL = url;
}
else {
pdfURL = attr(doc, 'a.intent_pdf_link', 'href');
}
// Z.debug("pdfURL: " + pdfURL);
ZU.doGet(risURL, function (response) {
// they number authors in their RIS...
response = response.replace(/A\d+\s+-/g, "AU -");
var abstract = doc.getElementById('abstract');
var translator = Zotero.loadTranslator("import");
var tags = doc.querySelectorAll('li .intent_text');
translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7");
translator.setString(response);
translator.setHandler("itemDone", function (obj, item) {
if (pdfURL) {
item.attachments.push({
url: pdfURL,
title: "Full Text PDF",
mimeType: "application/pdf"
});
}
else {
item.attachments.push({
title: "Snapshot",
document: doc
});
}
for (let tag of tags) {
item.tags.push(tag.textContent);
}
var authorsNodes = doc.querySelectorAll("div > a.contrib-search");
if (authorsNodes.length > 0) {
// prefer the authors information from the website as it contains the last and first name separately
// where the RIS data does not separate them correctly (it uses a space instead of comma)
// but the editors are only part of the RIS data
var authors = [];
for (let author of authorsNodes) {
authors.push({
firstName: text(author, "span.given-names"),
lastName: text(author, "span.surname"),
creatorType: "author"
});
}
var otherContributors = item.creators.filter(creator => creator.creatorType !== "author");
item.creators = otherContributors.length !== 0 ? authors.concat(separateNames(otherContributors)) : authors;
}
else {
Z.debug("No tags available for authors");
item.creators = separateNames(item.creators);
}
if (item.date) {
item.date = ZU.strToISO(item.date);
}
if (abstract) {
item.abstractNote = ZU.trimInternal(abstract.textContent).replace(/^Abstract\s*/, "");
}
item.complete();
});
translator.translate();
});
}
function separateNames(creators) {
for (let i = 0; i < creators.length; i++) {
var lastName = creators[i].lastName.split(" ");
// Only authors are in the format lastname firstname in RIS
// Other creators are firstname lastname
if (!creators[i].firstName && lastName.length > 1) {
if (creators[i].creatorType === "author") {
creators[i].firstName = lastName.slice(1).join(" ");
creators[i].lastName = lastName[0];
}
else {
creators[i].firstName = lastName[0];
creators[i].lastName = lastName.slice(1).join(" ");
}
delete creators[i].fieldMode;
}
delete creators[i].fieldMode;
}
return creators;
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.emerald.com/insight/content/doi/10.1108/IJPH-07-2016-0028/full/html",
"items": [
{
"itemType": "journalArticle",
"title": "Universal opt-out screening for hepatitis C virus (HCV) within correctional facilities is an effective intervention to improve public health",
"creators": [
{
"lastName": "Morris",
"creatorType": "author",
"firstName": "Meghan D."
},
{
"lastName": "Brown",
"creatorType": "author",
"firstName": "Brandon"
},
{
"lastName": "Allen",
"creatorType": "author",
"firstName": "Scott A."
}
],
"date": "2017-01-01",
"DOI": "10.1108/IJPH-07-2016-0028",
"ISSN": "1744-9200",
"abstractNote": "Purpose Worldwide efforts to identify individuals infected with the hepatitis C virus (HCV) focus almost exclusively on community healthcare systems, thereby failing to reach high-risk populations and those with poor access to primary care. In the USA, community-based HCV testing policies and guidelines overlook correctional facilities, where HCV rates are believed to be as high as 40 percent. This is a missed opportunity: more than ten million Americans move through correctional facilities each year. Herein, the purpose of this paper is to examine HCV testing practices in the US correctional system, California and describe how universal opt-out HCV testing could expand early HCV detection, improve public health in correctional facilities and communities, and prove cost-effective over time. Design/methodology/approach A commentary on the value of standardizing screening programs across facilities by mandating all facilities (universal) to implement opt-out testing policies for all prisoners upon entry to the correctional facilities. Findings Current variability in facility-level testing programs results in inconsistent testing levels across correctional facilities, and therefore makes estimating the actual number of HCV-infected adults in the USA difficult. The authors argue that universal opt-out testing policies ensure earlier diagnosis of HCV among a population most affected by the disease and is more cost-effective than selective testing policies. Originality/value The commentary explores the current limitations of selective testing policies in correctional systems and provides recommendations and implications for public health and correctional organizations.",
"issue": "3/4",
"libraryCatalog": "Emerald Insight",
"pages": "192-199",
"publicationTitle": "International Journal of Prisoner Health",
"url": "https://doi.org/10.1108/IJPH-07-2016-0028",
"volume": "13",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "California"
},
{
"tag": "Criminal justice system"
},
{
"tag": "Epidemiology"
},
{
"tag": "HCV testing"
},
{
"tag": "Hepatitis C virus (HCV)"
},
{
"tag": "Public health"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.emerald.com/insight/search?q=testing&advanced=true&openAccess=true",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.emerald.com/insight/content/doi/10.1108/S1085-462220150000016007/full/html",
"items": [
{
"itemType": "bookSection",
"title": "Creating a Cheat-Proof Testing and Learning Environment: A Unique Testing Opportunity for Each Student",
"creators": [
{
"lastName": "Menk",
"creatorType": "author",
"firstName": "K. Bryan"
},
{
"lastName": "Malone",
"creatorType": "author",
"firstName": "Stephanie"
}
],
"date": "2015-01-01",
"ISBN": "9781784415877 9781784415884",
"abstractNote": "Originality/value This technique creates opportunities for students to have unique assignments encouraging student to student teaching and can be applied to assignments in any accounting course (undergraduate and graduate). This testing method has been used in Intermediate I and II, Individual Taxation, and Corporate Taxation.",
"bookTitle": "Advances in Accounting Education: Teaching and Curriculum Innovations",
"extra": "DOI: 10.1108/S1085-462220150000016007",
"libraryCatalog": "Emerald Insight",
"pages": "133-161",
"publisher": "Emerald Group Publishing Limited",
"series": "Advances in Accounting Education",
"shortTitle": "Creating a Cheat-Proof Testing and Learning Environment",
"url": "https://doi.org/10.1108/S1085-462220150000016007",
"volume": "16",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [
{
"tag": "Accounting education"
},
{
"tag": "Tax"
},
{
"tag": "Testing procedures"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.emerald.com/insight/publication/issn/0140-9174/vol/32/iss/12",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.emerald.com/insight/content/doi/10.1108/00070700410528754/full/html",
"items": [
{
"itemType": "journalArticle",
"title": "The influence of context upon consumer sensory evaluation of chicken‐meat quality",
"creators": [
{
"lastName": "Kennedy",
"creatorType": "author",
"firstName": "Orla"
},
{
"lastName": "Stewart‐Knox",
"creatorType": "author",
"firstName": "Barbara"
},
{
"lastName": "Mitchell",
"creatorType": "author",
"firstName": "Peter"
},
{
"lastName": "Thurnham",
"creatorType": "author",
"firstName": "David"
}
],
"date": "2004-01-01",
"DOI": "10.1108/00070700410528754",
"ISSN": "0007-070X",
"abstractNote": "There is an apparent lack of research investigating how different test conditions influence or bias consumer sensory evaluation of food. The aim of the present pilot study was to determine if testing conditions had any effect on responses of an untrained panel to a novel chicken product. Assessments of flavour, texture and overall liking of corn‐fed chicken were made across three different testing conditions (laboratory‐based under normal lighting; laboratory‐based under controlled lighting; and, home testing). Least favourable evaluations occurred under laboratory‐based conditions irrespective of what lighting was used. Consumers perceived the product more favourably in terms of flavour (p < 0.001), texture (p < 0.001) and overall preference (p < 0.001) when evaluated in the familiar setting of the home. Home testing produced more consistent assessments than under either of the two laboratory‐based test conditions. The results imply that home evaluation should be undertaken routinely in new food product development.",
"issue": "3",
"libraryCatalog": "Emerald Insight",
"pages": "158-165",
"publicationTitle": "British Food Journal",
"url": "https://doi.org/10.1108/00070700410528754",
"volume": "106",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Food products"
},
{
"tag": "Poultry"
},
{
"tag": "Sensory perception"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.emerald.com/insight/content/doi/10.1108/S0163-786X(2012)0000033008/full/html",
"items": [
{
"itemType": "bookSection",
"title": "Media Framing of the Pittsburgh G-20 Protests",
"creators": [
{
"lastName": "Kutz-Flamenbaum",
"creatorType": "author",
"firstName": "Rachel V."
},
{
"lastName": "Staggenborg",
"creatorType": "author",
"firstName": "Suzanne"
},
{
"lastName": "Duncan",
"creatorType": "author",
"firstName": "Brittany J."
},
{
"lastName": "Earl",
"creatorType": "editor",
"firstName": "Jennifer"
},
{
"lastName": "A. Rohlinger",
"creatorType": "editor",
"firstName": "Deana"
}
],
"date": "2012-01-01",
"ISBN": "9781780528816 9781780528809",
"abstractNote": "Research implications – We argue that events such as the G-20 meetings provide protesters with opportunities to gain temporary “standing” with the media. During such times, activists can use tactics and frames to alter the balance of power in relations with the media and the state and to attract positive media coverage, particularly when activists develop strategies that are not exclusively focused on the media. We argue that a combination of political opportunities and activist media strategies enabled protest organizers to position themselves as central figures in the G-20 news story and leverage that position to build media interest, develop relationships with reporters, and influence newspaper coverage.",
"bookTitle": "Media, Movements, and Political Change",
"extra": "DOI: 10.1108/S0163-786X(2012)0000033008",
"libraryCatalog": "Emerald Insight",
"pages": "109-135",
"publisher": "Emerald Group Publishing Limited",
"series": "Research in Social Movements, Conflicts and Change",
"url": "https://doi.org/10.1108/S0163-786X(2012)0000033008",
"volume": "33",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [
{
"tag": "Anarchist(s)"
},
{
"tag": "Framing"
},
{
"tag": "G-20"
},
{
"tag": "Media strategy"
},
{
"tag": "Strategy"
},
{
"tag": "Summit protests"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.emerald.com/insight/content/doi/10.1108/eb058217/full/html",
"items": [
{
"itemType": "journalArticle",
"title": "Tourism research in Spain: The contribution of geography (1960–1995)",
"creators": [
{
"lastName": "Antón i Clavé",
"creatorType": "author",
"firstName": "Salvador"
},
{
"lastName": "López Palomeque",
"creatorType": "author",
"firstName": "Francisco"
},
{
"lastName": "Marchena Gómez",
"creatorType": "author",
"firstName": "Manuel J."
},
{
"lastName": "Vera Rebollo",
"creatorType": "author",
"firstName": "Sevilla"
},
{
"lastName": "Fernando Vera Rebollo",
"creatorType": "author",
"firstName": "J."
}
],
"date": "1996-01-01",
"DOI": "10.1108/eb058217",
"ISSN": "0251-3102",
"abstractNote": "The Geography of Tourism in Spain is now at a par in terms of its scientific production with other European countries. Since the middle of the '80s the quality and volume of contributions is analogous to the rest of the European Union, although as a part of University Geography in Spain it has not achieved the level of dedication reached by other subjects considering the importance of tourist activities to the economy, the society and the territory of Spain. It could be said that the Geography of Tourism in Spain is in the international vanguard in dealing with Mediterranean coastal tourism, with the relationships between the residential real estate and tourism sectors and with aspects related to tourism and leisure in rural and protected areas.",
"issue": "1",
"libraryCatalog": "Emerald Insight",
"pages": "46-64",
"publicationTitle": "The Tourist Review",
"shortTitle": "Tourism research in Spain",
"url": "https://doi.org/10.1108/eb058217",
"volume": "51",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
{
"tag": "Environment"
},
{
"tag": "Geography of Leisure"
},
{
"tag": "Regional Paradigms"
},
{
"tag": "Rural"
},
{
"tag": "Territory"
},
{
"tag": "Tourism"
},
{
"tag": "Tourism Real‐Estate"
},
{
"tag": "Urban and Coastal Geography"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Eran Rosenthal^https?://(www\.)?(en\.)?globes\.co\.il//**
Copyright (c) 2019 Eran Rosenthal
This program is free software: you can redistribute it and/or
modify it under the terms of the GNU Affero General Public License
as published by the Free Software Foundation, either version 3 of
the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public
License along with this program. If not, see
<http://www.gnu.org/licenses/>.
*/
// attr()/text() v2
// eslint-disable-next-line
function attr(docOrElem,selector,attr,index){var elem=index?docOrElem.querySelectorAll(selector).item(index):docOrElem.querySelector(selector);return elem?elem.getAttribute(attr):null;}function text(docOrElem,selector,index){var elem=index?docOrElem.querySelectorAll(selector).item(index):docOrElem.querySelector(selector);return elem?elem.textContent:null;}
function detectWeb(doc, _url) {
if (attr(doc, 'meta[property="og:type"]', 'content') == "article") {
return 'newspaperArticle';
}
return false;
}
function doWeb(doc, url) {
var i;
var item = new Zotero.Item('newspaperArticle');
item.title = ZU.xpathText(doc, '//meta[@property="og:title"]/@content');
item.publicationTitle = 'Globes';
item.url = url;
item.abstractNote = ZU.xpathText(doc, '//meta[@name="description"]/@content');
item.section = ZU.xpathText(doc, '//meta[@property="article:section"]/@content');
var tags = ZU.xpath(doc, '//meta[@property="article:tag"]');
for (i = 0; i < tags.length; i++) {
item.tags.push(tags[i].content);
}
var json = ZU.xpathText(doc, '//script[@type="application/ld+json"]');
var data = JSON.parse(json);
if (data) {
if (data.author && Array.isArray(data.author)) {
for (i = 0; i < data.author.length; i++) {
// note the author sometimes include date in form of Month Year
// and possibly Day Month Year
var author = data.author[i].name;
var isDate = /19[0-9]{2}$/.test(author)
|| /2[0-9]{3}$/.test(author);
if (!isDate) {
author = Zotero.Utilities.cleanAuthor(author, 'author');
item.creators.push(author);
}
}
}
if (data.inLanguage) {
item.language = data.inLanguage;
}
if (data.datePublished) {
item.date = ZU.strToISO(data.datePublished);
}
}
item.attachments.push({
title: "Globes Snapshot",
document: doc,
mimeType: "text/html"
});
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.globes.co.il/news/article.aspx?did=1001302127",
"items": [
{
"itemType": "newspaperArticle",
"title": "הקרטל התאילנדי שובר שיאים של אכזריות. האם אדם אחד יצליח לעצור אותם?",
"creators": [],
"abstractNote": "גורמים עלומים בצפון-מזרח תאילנד מנהלים כבר שנים מערך מתוחכם ומורכב להפליא של ציד בלתי חוקיים, ומרוויחים הון עתק מהכליה שהם ממיטים על כמה מהמינים האקזוטיים בעולם ● האם האדם היחיד שנאבק בתופעה יצליח להפיל את סינדיקט ההברחות שאיש לא יכול לו? ● גיליון שכולו קנאה ",
"libraryCatalog": "Globes",
"publicationTitle": "Globes",
"section": "מגזין G",
"url": "https://www.globes.co.il/news/article.aspx?did=1001302127",
"attachments": [
{
"title": "Globes Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "אקטיביזם"
},
{
"tag": "בעלי חיים"
},
{
"tag": "גיליון שכולו קנאה"
},
{
"tag": "יבשת אפריקה"
},
{
"tag": "תאילנד"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.globes.co.il/news/article.aspx?did=1001303186",
"items": [
{
"itemType": "newspaperArticle",
"title": "\"עשיתי חשבון נפש. גם שאר המעורבים בפרשה צריכים לעשות אחד\"",
"creators": [
{
"firstName": "שלומית",
"lastName": "לן",
"creatorType": "author"
},
{
"firstName": "נעמה",
"lastName": "סיקולר",
"creatorType": "author"
}
],
"date": "2019-08-10",
"abstractNote": "שנה וחצי אחרי תחקיר \"עובדה\", רמי ברכה, מהאנשים החזקים בהייטק, מדבר לראשונה, ביחד עם אשתו תמי מלחין ברכה, על הטענות שהטריד מינית ● הוא עונה על כל השאלות, מכיר בטעויות שעשה אבל לא מתנצל, מצטער שהתפטר מקרן פיטנגו וחושב שגם תנועת MeToo צריכה לעשות חשבון נפש",
"language": "he",
"libraryCatalog": "Globes",
"publicationTitle": "Globes",
"section": "בארץ",
"url": "https://www.globes.co.il/news/article.aspx?did=1001303186",
"attachments": [
{
"title": "Globes Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "MeToo"
},
{
"tag": "הטרדה מינית"
},
{
"tag": "רמי ברכה"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://en.globes.co.il/en/article-will-competition-authority-approve-taboola-outbrain-merger-1001302929",
"items": [
{
"itemType": "newspaperArticle",
"title": "Will the regulator approve Taboola-Outbrain merger?",
"creators": [],
"date": "2019-06-10",
"abstractNote": "There are very real grounds for the Israel Competition Authority to nix the merger of the content recommendation companies.",
"language": "en",
"libraryCatalog": "Globes",
"publicationTitle": "Globes",
"section": "Features",
"url": "https://en.globes.co.il/en/article-will-competition-authority-approve-taboola-outbrain-merger-1001302929",
"attachments": [
{
"title": "Globes Snapshot",
"mimeType": "text/html"
}
],
"tags": [
{
"tag": "Artimedia"
},
{
"tag": "Competition Authority"
},
{
"tag": "Israel"
},
{
"tag": "Outbrain"
},
{
"tag": "Taboola"
},
{
"tag": "advertising"
},
{
"tag": "business"
},
{
"tag": "content recommendations"
},
{
"tag": "digital advertising"
},
{
"tag": "media"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Philipp Zumstein^https?://mainichi\.jp/(?:english/)?(articles/|search\?)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2016 Philipp Zumstein
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
// attr()/text() v2
// eslint-disable-next-line
function attr(docOrElem,selector,attr,index){var elem=index?docOrElem.querySelectorAll(selector).item(index):docOrElem.querySelector(selector);return elem?elem.getAttribute(attr):null;}function text(docOrElem,selector,index){var elem=index?docOrElem.querySelectorAll(selector).item(index):docOrElem.querySelector(selector);return elem?elem.textContent:null;}
function detectWeb(doc, url) {
if (url.includes('/articles/')) {
return "newspaperArticle";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = ZU.xpath(doc, '//li/a[contains(@href, "/articles/")]');
for (var i = 0; i < rows.length; i++) {
var href = rows[i].href;
var title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) {
return;
}
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var item = new Zotero.Item("newspaperArticle");
item.title = text(doc, 'header>h1, .header-box h1');
item.publicationTitle = "Mainichi Daily News";
var start = url.indexOf("/articles/") + "/articles/".length;
var stop = url.indexOf("/", start);
var datestring = url.substring(start, stop);
if (datestring.length == 8) {
item.date = datestring.substring(0, 4) + "-" + datestring.substring(4, 6) + "-" + datestring.substring(6, 8);
}
else {
item.date = ZU.xpathText(doc, '//div[contains(@class, "article-info")]//time');
}
if (url.includes("/english/")) {
item.language = "en";
}
else {
item.language = "jp";
}
item.section = ZU.xpathText(doc, '//div[contains(@class, "container")]/ul/li[@class="active"]');
item.url = url;
item.attachments.push({
title: "Snapshot",
document: doc
});
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://mainichi.jp/articles/20160409/ddn/041/040/012000c",
"items": [
{
"itemType": "newspaperArticle",
"title": "北野天満宮の桜、新品種? 住友林業・苗木増殖に成功",
"creators": [],
"date": "2016-04-09",
"language": "jp",
"libraryCatalog": "Mainichi Daily News",
"publicationTitle": "Mainichi Daily News",
"section": "地域, めっちゃ関西",
"url": "https://mainichi.jp/articles/20160409/ddn/041/040/012000c",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://mainichi.jp/english/articles/20160608/p2a/00m/0na/005000c",
"items": [
{
"itemType": "newspaperArticle",
"title": "Obama's origami cranes to go on display at Hiroshima Peace Memorial Museum",
"creators": [],
"date": "2016-06-08",
"language": "en",
"libraryCatalog": "Mainichi Daily News",
"publicationTitle": "Mainichi Daily News",
"section": "Japan",
"url": "https://mainichi.jp/english/articles/20160608/p2a/00m/0na/005000c",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://mainichi.jp/search?q=%E5%AE%AE%E5%B4%8E+%E9%A7%BF&p=1",
"items": "multiple"
},
{
"type": "web",
"url": "http://mainichi.jp/english/search?q=tokyo",
"items": "multiple"
}
]
/** END TEST CASES **/
100Klaus Flittner^https?://depatisnet\.dpma\.de/DepatisNet/depatisnet/*
***** BEGIN LICENSE BLOCK *****
DEPATISnet translator - Copyright © 2014 Klaus Flittner
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes("action=bibdat")) {
return "patent";
}
if (url.includes("action=treffer") && Object.keys(getSearchResults(doc)).length) {
return "multiple";
}
return false;
}
function getSearchResults(doc) {
var results = {};
var rows = ZU.xpath(doc, '//div[@id="inhalt"]/form/table/tbody/tr');
for (var i = 0, n = rows.length; i < n; i++) {
var columns = ZU.xpath(rows[i], './td');
var href = ZU.xpath(columns[0], './a')[0].href;
var name = ZU.trimInternal(columns[0].textContent);
name = name + " \"" + cleanTitle(columns[1]) + "\"";
results[href] = name;
}
return results;
}
var labelMap = {
AN: "applicationNumber",
AB: "abstractNote",
};
function cleanTitle(value) {
var titles = value.textContent.split(/\[[A-Z]{2}\]/);
if (titles.length < 2) {
return "";
}
var title = ZU.trimInternal(titles[1]);
if (title == title.toUpperCase()) {
title = ZU.capitalizeTitle(title, true);
}
return title;
}
function cleanName(name, inventors) {
name = ZU.trimInternal(name);
if (name == "") return "";
var parts = name.split(",");
parts = parts.map(
function (part) {
part = ZU.trimInternal(part);
if (part.toUpperCase() == part) {
part = ZU.capitalizeTitle(part, true);
}
return part;
}
);
// Last is always country code, so only return first part if there are only two
// if second part starts with a number it is a postal code and first part is
// either a company name or a name without delimiter between last and given name
if (parts.length <= 2 || parts[1].match(/^[0-9]/)) {
if (inventors) {
name = parts[0].split(/ /);
return name.shift() + ", " + name.join(" ");
}
else {
return parts[0];
}
}
else {
return parts[0] + ", " + parts[1];
}
}
function scrape(doc, url) {
var newItem = new Zotero.Item("patent");
var ipcs = [];
var rows = ZU.xpath(doc, '//table[@class="tab_detail"]/tbody/tr');
for (var i = 0, n = rows.length; i < n; i++) {
var columns = ZU.xpath(rows[i], './td');
var label;
var value;
if (columns.length == 4) {
label = columns[2].textContent;
value = columns[3];
}
else if (columns.length == 3) {
label = columns[1].textContent;
value = columns[2];
}
if (!value) continue;
// Z.debug("label: " + label);
// Z.debug("value: " + value.textContent);
switch (label) {
case "TI":
newItem.title = cleanTitle(value);
break;
case "IN":
newItem.creators = [];
var creators = value.textContent.split(";");
for (let creator of creators) {
creator = cleanName(creator, true);
if (creator != "") {
newItem.creators.push(ZU.cleanAuthor(creator, "inventor", true));
}
}
break;
case "PA":
var assigneeNames = value.textContent.split(";").map(name => cleanName(name, false)).filter(name => name != "");
newItem.assignee = assigneeNames.join("; ");
break;
case "ICM":
case "ICS":
var ipc = ZU.xpathText(value, './a').split(",");
for (let name of ipc) {
ipcs.push(ZU.trimInternal(name));
}
break;
case "PUB":
var date = value.textContent.replace(/\s+/g, '').split(".");
newItem.date = date[2] + "-" + date[1] + "-" + date[0];
break;
case "AD":
var filingDate = value.textContent.replace(/\s+/g, '').split(".");
newItem.filingDate = filingDate[2] + "-" + filingDate[1] + "-" + filingDate[0];
break;
default:
if (labelMap[label]) {
newItem[labelMap[label]] = ZU.trimInternal(value.textContent);
}
}
}
var pn = url.match(/\bdocid=([^&#]*)/)[1];
newItem.url = "http://depatisnet.dpma.de/DepatisNet/depatisnet?action=bibdat&docid=" + pn;
newItem.patentNumber = pn.replace(/^([A-Z]{2})[0]*(.*)$/, "$1$2");
// some entries (especially JP and RU patents) have no titles listed in DepatisNet
// use the patentnumber instead for these entries
if (!newItem.title) {
newItem.title = newItem.patentNumber;
}
newItem.extra = "IPC: " + ipcs.join("; ");
newItem.attachments.push({
title: "DEPATISnet patent record",
url: url,
snapshot: false
});
var pages = ZU.xpathText(doc, '//div[@id="inhalt"]/h2');
// e.g. "Dokument DE000004446098C2 (Seiten: 8)"
// but there is no PDF available when we have "Seiten: 0"
if (pages && /(Seiten|Pages):\s*[1-9][0-9]*/.test(pages)) {
var pdfurl = "https://depatisnet.dpma.de/DepatisNet/depatisnet/" + pn + "_all_pages.pdf?window=1&space=menu&content=download_doc_verify&action=download_doc&docid=" + pn;
newItem.attachments.push({
title: "Fulltext",
url: pdfurl,
mimeType: "application/pdf"
});
}
newItem.complete();
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
var results = getSearchResults(doc);
Z.selectItems(results,
function (items) {
if (!items) return;
var urls = [];
for (var j in items) {
urls.push(j);
}
ZU.processDocuments(urls, scrape);
}
);
}
else {
scrape(doc, url);
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://depatisnet.dpma.de/DepatisNet/depatisnet?action=bibdat&docid=DE000004446098C2",
"items": [
{
"itemType": "patent",
"title": "Elektrischer Verbinder mit Abschirmung",
"creators": [
{
"firstName": "Jacques",
"lastName": "Longueville",
"creatorType": "inventor"
},
{
"firstName": "Gerhard",
"lastName": "Meyer",
"creatorType": "inventor"
}
],
"issueDate": "1998-11-26",
"applicationNumber": "4446098",
"assignee": "Philips Patentverwaltung GmbH; Siemens AG",
"extra": "IPC: H01R 23/68; H01R 4/24; H01R 13/648; H01R 13/652",
"filingDate": "1994-12-22",
"patentNumber": "DE4446098C2",
"url": "http://depatisnet.dpma.de/DepatisNet/depatisnet?action=bibdat&docid=DE000004446098C2",
"attachments": [
{
"title": "DEPATISnet patent record"
},
{
"title": "Fulltext",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://depatisnet.dpma.de/DepatisNet/depatisnet?action=bibdat&docid=EP000000871998A1",
"items": [
{
"itemType": "patent",
"title": "Elektrischer Verbinder Mit Abschirmung",
"creators": [
{
"firstName": "Jacques",
"lastName": "Longueville",
"creatorType": "inventor"
},
{
"firstName": "Gerhard",
"lastName": "Meyer",
"creatorType": "inventor"
}
],
"issueDate": "1998-10-21",
"applicationNumber": "95942705",
"assignee": "Koninkl Philips Electronics Nv; Philips Patentverwaltung; Siemens Ag",
"extra": "IPC: H01R 12/16;",
"filingDate": "1995-12-20",
"patentNumber": "EP871998A1",
"url": "http://depatisnet.dpma.de/DepatisNet/depatisnet?action=bibdat&docid=EP000000871998A1",
"attachments": [
{
"title": "DEPATISnet patent record"
},
{
"title": "Fulltext",
"mimeType": "application/pdf"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://depatisnet.dpma.de/DepatisNet/depatisnet?action=bibdat&docid=AR000000047789A1",
"items": [
{
"itemType": "patent",
"title": "Sistema De Inyeccion De Odorizante En El Gas Natural",
"creators": [],
"issueDate": "2006-02-22",
"abstractNote": "[XX] Un sistema de inyeccion de odorizante en el gas natural, para inyectar odorizante en un conducto de gas natural, que incluye un conducto de derivacion, un tanque de odorizante, un medidor de caudal, una válvula de control y un controlador acoplado para comunicarse con el medidor de caudal y con la válvula de control. El conducto de derivacion incluye una entrada que está en comunicacion fluida con una seccion corriente abajo del conducto de gas, y una salida que está en comunicacion fluida con una seccion corriente abajo del conducto de gas. El tanque de odorizante, la válvula de control y el medidor de caudal están dispuestos en el conducto de derivacion. El medidor de caudal detecta una característica de una corriente de fluido que lo atraviesa y genera una senal de flujo de fluido correspondiente. El controlador está programado para operar la válvula de control en base a la senal de flujo de fluido recibida del medidor de caudal.",
"applicationNumber": "P 050100188",
"assignee": "Fisher Controls Int",
"extra": "IPC: F17D 5/02; F17D 1/04; F17D 3/12; G01M 3/28; F17D 5/00",
"filingDate": "2005-01-19",
"patentNumber": "AR47789A1",
"url": "http://depatisnet.dpma.de/DepatisNet/depatisnet?action=bibdat&docid=AR000000047789A1",
"attachments": [
{
"title": "DEPATISnet patent record"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://depatisnet.dpma.de/DepatisNet/depatisnet?action=bibdat&docid=JP002007522283A",
"items": [
{
"itemType": "patent",
"title": "JP2007522283A",
"creators": [],
"issueDate": "2007-08-09",
"applicationNumber": "2006551227",
"extra": "IPC: C10L 3/10;",
"filingDate": "2005-01-18",
"patentNumber": "JP2007522283A",
"url": "http://depatisnet.dpma.de/DepatisNet/depatisnet?action=bibdat&docid=JP002007522283A",
"attachments": [
{
"title": "DEPATISnet patent record"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Jonathan Schulz^https?://www\.(springer|palgrave)\.com/\w\w/(book|search)\W/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2017 Jonathan Schulz
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
var action = url.match(/^https?:\/\/[^/]+\/[^/]+\/([^/?#]+)/);
if (!action) return false;
switch (action[1]) {
case "book":
// test if any relevant <meta> information is available
if (ZU.xpathText(doc, '//meta[@property="og:title"]/@content')) return "book";
break;
case "search":
// test for relevant search entries
return getSearchResults(doc, true) ? "multiple" : false;
}
return false;
}
function doWeb(doc, url) {
var detectionType = detectWeb(doc, url);
switch (detectionType) {
case "book":
scrapeBook(doc, url);
break;
case "multiple":
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) return;
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrapeBook);
});
break;
}
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var searchEntries = ZU.xpath(doc, '//div[@id="result-list"]/div');
for (let i = 0; i < searchEntries.length; i++) {
var itemType = searchEntries[i].getAttribute("class");
// test if we actually have a usable result
if (!itemType || itemType.search(/result-item-\d+/) == -1
|| !itemType.includes('result-type-book')) continue;
var titleLink = ZU.xpath(searchEntries[i], "h4/a");
if (titleLink.length === 0) continue;
// extract book title and URL
var title = titleLink[0].textContent;
var href = titleLink[0].getAttribute("href");
if (!title || !href) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function scrapeBook(doc, _url) {
// Call the embedded metadata translator
var translator = Zotero.loadTranslator("web");
translator.setTranslator("951c027d-74ac-47d4-a107-9c3069ab7b48");
translator.setDocument(doc);
translator.setHandler("itemDone", function (obj, item) {
// From EM the item.title field looks like this:
// item.title = <book title> | <first creator> | Springer
item.title = ZU.xpathText(doc, '//h1');
var subtitle = ZU.xpathText(doc, '//div[contains(@class, "bibliographic-information")]/h2');
if (subtitle) item.title += ': ' + subtitle;
// There are no creators in the Embedded Metadata and thus we need
// to add them manually here.
var editors = ZU.xpathText(doc, '//li[@itemprop="editor"]/span');
var authors = ZU.xpathText(doc, '//li[@itemprop="author"]/span');
if (editors) {
editors = editors.split(", ");
for (let i = 0; i < editors.length; i++) item.creators.push(ZU.cleanAuthor(editors[i], "editor", editors[i].includes(',')));
}
if (authors) {
authors = authors.split(", ");
for (let i = 0; i < authors.length; i++) item.creators.push(ZU.cleanAuthor(authors[i], "author", authors[i].includes(',')));
}
if (!item.publisher) {
item.publisher = ZU.xpathText(doc, '//dd[@itemprop="publisher"]/span');
}
// see if we can seperate "Springer-Verlag <place>" into publisher and place
if (item.publisher && item.publisher.search(/^Springer-Verlag\s.+/) != -1) {
var publisherInfo = item.publisher.match(/^(Springer-Verlag)\s(.+)/);
item.publisher = publisherInfo[1];
item.place = publisherInfo[2];
}
if (!item.ISBN) {
item.ISBN = ZU.xpathText(doc, '//dd[@itemprop="isbn"]');
}
if (!item.year) {
var yearField = ZU.xpathText(doc, '//div[@class="copyright"]');
if (yearField) {
item.date = yearField.replace('©', '');
}
}
item.series = ZU.xpathText(doc, '//a[contains(@class, "series")]');
var edition = ZU.xpathText(doc, '//dt[text()="Edition Number" or text()="Auflage"]/following-sibling::dd[1]');
if (edition && edition !== "1") item.edition = edition;
var doi = ZU.xpathText(doc, '//dt[text()="DOI"]/following-sibling::dd[1]');
if (doi) {
if (item.extra) {
if (!item.extra.includes("DOI")) {
item.extra += "\nDOI: " + doi;
}
}
else {
item.extra = "DOI: " + doi;
}
}
// The abstract note might be shortened in the <meta> field; try to load
// the full abstract note
var longAbstractNote = ZU.xpathText(doc, '(//div[@class="product-about"]//div[@class="springer-html"])[1]');
if (longAbstractNote) {
item.abstractNote = ZU.trimInternal(longAbstractNote);
}
item.complete();
});
translator.translate();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.springer.com/us/book/9783319633237",
"items": [
{
"itemType": "book",
"title": "Theoretical Physics 7: Quantum Mechanics - Methods and Applications",
"creators": [
{
"firstName": "Wolfgang",
"lastName": "Nolting",
"creatorType": "author"
}
],
"date": "2017",
"ISBN": "9783319633237",
"abstractNote": "This textbook offers a clear and comprehensive introduction to methods and applications in quantum mechanics, one of the core components of undergraduate physics courses. It follows on naturally from the previous volumes in this series, thus developing the understanding of quantized states further on. The first part of the book introduces the quantum theory of angular momentum and approximation methods. More complex themes are covered in the second part of the book, which describes multiple particle systems and scattering theory. Ideally suited to undergraduate students with some grounding in the basics of quantum mechanics, the book is enhanced throughout with learning features such as boxed inserts and chapter summaries, with key mathematical derivations highlighted to aid understanding. The text is supported by numerous worked examples and end of chapter problem sets. About the Theoretical Physics series Translated from the renowned and highly successful German editions, the eight volumes of this series cover the complete core curriculum of theoretical physics at undergraduate level. Each volume is self-contained and provides all the material necessary for the individual course topic. Numerous problems with detailed solutions support a deeper understanding. Wolfgang Nolting is famous for his refined didactical style and has been referred to as the \"German Feynman\" in reviews.",
"extra": "DOI: 10.1007/978-3-319-63324-4",
"language": "en",
"libraryCatalog": "www.springer.com",
"publisher": "Springer International Publishing",
"shortTitle": "Theoretical Physics 7",
"url": "https://www.springer.com/us/book/9783319633237",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.springer.com/us/book/9789462094826",
"items": [
{
"itemType": "book",
"title": "Testing Times: A History of Vocational, Civil Service and Secondary Examinations in England since 1850",
"creators": [
{
"firstName": "Willis",
"lastName": "Richard",
"creatorType": "author"
}
],
"date": "2013",
"ISBN": "9789462094826",
"abstractNote": "This book focuses on the delivery of public examinations offered by the main examining boards in England since Victorian England. The investigation reveals that the provision of examinations was as controversial in the nineteenth century as it is today, particularly since the government is now determined to bring in reform. The issues of grade inflation, the place of coursework in marking, and the introduction of technological change all feature in this book. Educational policy is primarily examined as well as some reference to the global scene. The study analyses archival material from a wide range of sources, including those records stored at the National Archives and the London Metropolitan Archives. An emphasis is placed upon the various institutions that contributed to the process, including the Royal Society of Arts, the London Chamber of Commerce, the City of Guilds of London Institute and the University of London. Attention is given to the findings of the Taunton Commission and the Bryce Commission and shorter reports such as the Northcote-Trevelyn Report which served to radicalise entry and recruitment to the Civil Service. The modern GCSE and the plans for I-levels are considered and key observations are made about the efficacy of those examinations offered by Oxford and Cambridge universities and O-levels, A-levels and NVQs, The reader is given every opportunity to benefit enthusiastically in this account of examinations, and those engaged in education, whether teachers, examiners, students or administrators, will be able to gain useful insights into the workings of the examination system.",
"extra": "DOI: 10.1007/978-94-6209-482-6",
"language": "en",
"libraryCatalog": "www.springer.com",
"publisher": "Sense Publishers",
"shortTitle": "Testing Times",
"url": "https://www.springer.com/us/book/9789462094826",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.springer.com/de/book/9783540212904",
"items": [
{
"itemType": "book",
"title": "Complex Geometry: An Introduction",
"creators": [
{
"firstName": "Daniel",
"lastName": "Huybrechts",
"creatorType": "author"
}
],
"date": "2005",
"ISBN": "9783540212904",
"abstractNote": "Complex geometry studies (compact) complex manifolds. It discusses algebraic as well as metric aspects. The subject is on the crossroad of algebraic and differential geometry. Recent developments in string theory have made it an highly attractive area, both for mathematicians and theoretical physicists. The author’s goal is to provide an easily accessible introduction to the subject. The book contains detailed accounts of the basic concepts and the many exercises illustrate the theory. Appendices to various chapters allow an outlook to recent research directions. Daniel Huybrechts is currently Professor of Mathematics at the University Denis Diderot in Paris.",
"extra": "DOI: 10.1007/b137952",
"language": "en",
"libraryCatalog": "www.springer.com",
"place": "Berlin Heidelberg",
"publisher": "Springer-Verlag",
"series": "Universitext",
"shortTitle": "Complex Geometry",
"url": "https://www.springer.com/de/book/9783540212904",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.springer.com/gb/book/9783658115449",
"items": [
{
"itemType": "book",
"title": "Analysis 1: Differential- und Integralrechnung einer Veränderlichen",
"creators": [
{
"firstName": "Otto",
"lastName": "Forster",
"creatorType": "author"
}
],
"date": "2016",
"ISBN": "9783658115449",
"abstractNote": "Dieses seit vier Jahrzehnten bewährte Standardwerk ist gedacht als Begleittext zur Analysis-Vorlesung des ersten Semesters für Mathematiker, Physiker und Informatiker. Bei der Darstellung wurde besonderer Wert darauf gelegt, in systematischer Weise, aber ohne zu große Abstraktionen zu den wesentlichen Inhalten vorzudringen und sie mit vielen konkreten Beispielen zu illustrieren. An verschiedenen Stellen wurden Bezüge zur Informatik hergestellt. Einige numerische Beispiele wurden durch Programm-Codes ergänzt, so dass die Rechnungen direkt am Computer nachvollzogen werden können. Die vorliegende 12. Auflage wurde in mehreren Details verbessert und enthält einige zusätzliche Aufgaben und Beispiele.",
"edition": "12",
"extra": "DOI: 10.1007/978-3-658-11545-6",
"language": "de",
"libraryCatalog": "www.springer.com",
"publisher": "Springer Spektrum",
"series": "Grundkurs Mathematik",
"shortTitle": "Analysis 1",
"url": "https://www.springer.com/gb/book/9783658115449",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.springer.com/jp/book/9783642331909",
"items": [
{
"itemType": "book",
"title": "Advances in Visual Computing: 8th International Symposium, ISVC 2012, Rethymnon, Crete, Greece, July 16-18, 2012, Revised Selected Papers, Part II",
"creators": [
{
"firstName": "George",
"lastName": "Bebis",
"creatorType": "editor"
},
{
"firstName": "Richard",
"lastName": "Boyle",
"creatorType": "editor"
},
{
"firstName": "Bahram",
"lastName": "Parvin",
"creatorType": "editor"
},
{
"firstName": "Darko",
"lastName": "Koracin",
"creatorType": "editor"
},
{
"firstName": "Fowlkes",
"lastName": "Charless",
"creatorType": "editor"
},
{
"firstName": "Wang",
"lastName": "Sen",
"creatorType": "editor"
},
{
"firstName": "Choi",
"lastName": "Min-Hyung",
"creatorType": "editor"
},
{
"firstName": "Stephan",
"lastName": "Mantler",
"creatorType": "editor"
},
{
"firstName": "Jurgen",
"lastName": "Schulze",
"creatorType": "editor"
},
{
"firstName": "Daniel",
"lastName": "Acevedo",
"creatorType": "editor"
},
{
"firstName": "Klaus",
"lastName": "Mueller",
"creatorType": "editor"
},
{
"firstName": "Michael",
"lastName": "Papka",
"creatorType": "editor"
}
],
"date": "2012",
"ISBN": "9783642331909",
"abstractNote": "The two volume set LNCS 7431 and 7432 constitutes the refereed proceedings of the 8th International Symposium on Visual Computing, ISVC 2012, held in Rethymnon, Crete, Greece, in July 2012. The 68 revised full papers and 35 poster papers presented together with 45 special track papers were carefully reviewed and selected from more than 200 submissions. The papers are organized in topical sections: Part I (LNCS 7431) comprises computational bioimaging; computer graphics; calibration and 3D vision; object recognition; illumination, modeling, and segmentation; visualization; 3D mapping, modeling and surface reconstruction; motion and tracking; optimization for vision, graphics, and medical imaging, HCI and recognition. Part II (LNCS 7432) comprises topics such as unconstrained biometrics: advances and trends; intelligent environments: algorithms and applications; applications; virtual reality; face processing and recognition.",
"extra": "DOI: 10.1007/978-3-642-33191-6",
"language": "en",
"libraryCatalog": "www.springer.com",
"place": "Berlin Heidelberg",
"publisher": "Springer-Verlag",
"series": "Image Processing, Computer Vision, Pattern Recognition, and Graphics",
"shortTitle": "Advances in Visual Computing",
"url": "https://www.springer.com/jp/book/9783642331909",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.springer.com/jp/search?query=references&submit=Submit+Query",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.palgrave.com/de/book/9783030047580#aboutAuthors",
"items": [
{
"itemType": "book",
"title": "The Economic Consequences of the Peace: With a new introduction by Michael Cox",
"creators": [
{
"firstName": "Michael",
"lastName": "Cox",
"creatorType": "editor"
},
{
"firstName": "John Maynard",
"lastName": "Keynes",
"creatorType": "author"
}
],
"date": "2019",
"ISBN": "9783030047580",
"abstractNote": "First published in December 1919, this global bestseller attacking those who had made the peace in Paris after the First World War, sparked immediate controversy. It also made John Maynard Keynes famous overnight and soon came to define how people around the world viewed the Versailles Peace Treaty. In Germany the book, which argued against reparations, was greeted with enthusiasm; in France with dismay; and in the US as ammunition that could be (and was) used against Woodrow Wilson in his ultimately unsuccessful bid to sell the League of Nations to an increasingly sceptical American public. Meanwhile in his own country the book provoked outrage amongst establishment critics – Keynes was even refused membership of the prestigious British Academy – while admirers from Winston Churchill to the founders of the LSE, Sidney and Beatrice Webb, went on to praise Keynes for his wisdom and humanity. Keynes may have written what he thought was a reasoned critique of the economics of the peace settlement. In effect, he had penned a political bombshell whose key arguments are still being debated today. The Economic Consequences of the Peace is now reissued by Keynes’ publisher of choice with a new introduction from Michael Cox, one of the major figures in the field of International Relations today. Scholarly yet engaged and readable, Cox’s introduction to the work – written a century after the book first hit the headlines – critically appraises Keynes' polemic contextualising and bringing to life the text for a new generation of scholars and students of IR, IPE, Politics and History. The original text and this authoritative introduction provide essential reading for anyone who wishes to understand the tragedy that was the twentieth century; why making peace with former enemies can be just as hard as winning a war against them; and how and why ideas really do matter.",
"extra": "DOI: 10.1007/978-3-030-04759-7",
"language": "en",
"libraryCatalog": "www.palgrave.com",
"publisher": "Palgrave Macmillan",
"shortTitle": "The Economic Consequences of the Peace",
"url": "https://www.palgrave.com/de/book/9783030047580",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Sebastian Karcher^https?://(www\.)?voxeu\.org/*
***** BEGIN LICENSE BLOCK *****
VoxEU Translator
Copyright © 2011, 2012 Sebastian Karcher
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/article/')) {
return "blogPost";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('ul.search-results>li>h2>a');
for (let i = 0; i < rows.length; i++) {
let href = rows[i].href;
let title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) {
return;
}
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var item = new Zotero.Item("blogPost");
item.title = text("h1.article-title");
item.abstractNote = text("div.article-teaser");
item.publicationTitle = "VoxEU.org";
item.url = url;
item.date = text("span.date-display-single");
if (item.date) {
item.date = ZU.strToISO(item.date);
}
var creators = doc.querySelectorAll("div.author span.field-content");
for (let creator of creators) {
item.creators.push(ZU.cleanAuthor(creator.textContent, "author"));
}
item.attachments = [{
document: doc,
title: "Snapshot"
}];
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://voxeu.org/article/green-growth-evidence-energy-taxes-europe",
"items": [
{
"itemType": "blogPost",
"title": "Green growth? Evidence from energy taxes in Europe",
"creators": [
{
"firstName": "Richard",
"lastName": "Tol",
"creatorType": "author"
},
{
"firstName": "Seán",
"lastName": "Lyons",
"creatorType": "author"
}
],
"date": "2011-11-12",
"abstractNote": "Politicians around the world like to argue that ‘green growth’ will create jobs and stimulate innovation. This column examines the impact of energy taxes on business, with a dataset of 11 million European firms between 1996 and 2007. The results are mixed – it seems that dirty, smoke-filled growth may well be better for the firm’s workers and their customers.",
"blogTitle": "VoxEU.org",
"shortTitle": "Green growth?",
"url": "https://voxeu.org/article/green-growth-evidence-energy-taxes-europe",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.voxeu.org/search/node/Are%20migrants%20paid%20more%3F",
"items": "multiple"
}
]
/** END TEST CASES **/
100Michael Berkowitz^https?://([^/]*\.)?time\.com//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2008 Michael Berkowitz
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/search/?q=') && getSearchResults(doc, true)) {
return "multiple";
}
else if (url.search(/\/article\/|\d{4}\/\d{2}\/\d{2}\/./) != -1
|| ZU.xpath(doc, '//section[@class="article-body"]/div[@class="issue-date"]').length
|| doc.getElementsByClassName('active').length
) {
return "magazineArticle";
}
// TODO: detect new content on scroll, beacause we should not detect on
// ads and ToC content
return false;
}
function handleAuthors(authors) {
if (authors && (authors = authors.trim())) {
var matches = authors.match(/^\s*([^/]+?)\s*\/\s*(.+?)\s*$/);
if (matches) {
if (matches[1] == 'AP' || matches[1] == 'Fortune') {
authors = matches[2];
}
else {
authors = matches[1];
}
}
// x, y and z
authors = authors.replace(/^\s*By\s+/, "").split(/\s*,\s*|\s+and\s+/i);
var authArr = [];
for (var i = 0, n = authors.length; i < n; i++) {
let author = authors[i].replace(/\s*[@/].+/, "");
if (author.toUpperCase() == author) {
author = ZU.capitalizeTitle(author);
}
authArr.push(ZU.cleanAuthor(author, 'author'));
}
if (authArr.length) return authArr;
}
return [];
}
function handleKeywords(keywords) {
if (keywords && (keywords = keywords.trim())) {
return keywords.split(/,\s*/);
}
return [];
}
function scrape(doc, url) {
var article = ZU.xpath(doc, '//section/div[@class="wrapper"]/article[contains(@class, "active")]')[0];
var metaUrl = ZU.xpathText(doc, '/html/head/meta[@property="og:url"]/@content');
if (article && metaUrl && !doc.location.href.includes(metaUrl)) {
// time has a feature where you scroll to the next article
// in this case we have to use the active article instead
var item = new Zotero.Item("magazineArticle");
item.title = ZU.trimInternal(article.getElementsByClassName('article-title')[0].textContent);
item.publicationTitle = "Time";
item.url = url;
item.ISSN = "0040-781X";
item.language = "en-US";
var authors = article.getElementsByClassName('byline');
if (authors.length) {
item.creators = handleAuthors(authors
.map(function (a) {
return ZU.trimInternal(a.textContent);
})
.join(', ')
);
}
var keywords = ZU.xpathText(article, 'header//a[@class="topic-tag" or @class="section-tag"]');
if (keywords) item.tags = handleKeywords(keywords);
item.abstractNote = ZU.xpathText(doc, '//h2[@class="article-excerpt"]');
item.date = ZU.xpathText(article, 'header//time[@class="publish-date"]/@datetime');
item.complete();
}
else {
var translator = Zotero.loadTranslator('web');
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
item.itemType = "magazineArticle";
item.publicationTitle = "Time";
item.url = url;
item.ISSN = "0040-781X";
item.language = "en-US";
var authors = ZU.xpathText(doc, '//meta[@name="byline"]/@content')
|| ZU.xpathText(doc, '//span[@class="author vcard"]/a', null, ' and ')
|| ZU.xpathText(doc, '//span[@class="entry-byline"]')
|| ZU.xpathText(doc, '//header[@class="article-header"]//ul[@class="article-authors"]//span[@class="byline"]/a')
|| ZU.xpathText(doc, '//div[contains(@class, "author-text")]/a');
if (authors) item.creators = handleAuthors(authors);
var title = ZU.xpathText(doc, '//h1[@class="entry-title"]');
if (!item.title && title) item.title = title;
var keywords = ZU.xpathText(doc, '/html/head/meta[@name="keywords"]/@content')
|| ZU.xpathText(doc, 'header//a[@class="topic-tag" or @class="section-tag"]');
if (item.tags.length == 0 && keywords) item.tags = handleKeywords(keywords);
if (!item.abstractNote) item.abstractNote = ZU.xpathText(doc, '//h2[@class="article-excerpt"]');
if (!item.date) {
item.date = ZU.xpathText(doc, '//time[@class="publish-date"]/@datetime')
|| ZU.xpathText(doc, '//div[contains(@class, "published-date")]')
|| ZU.xpathText(doc, '//span[contains(@class, "entry-date")]');
}
if (item.date) {
item.date = ZU.strToISO(item.date);
}
item.complete();
});
translator.getTranslatorObject(function (em) {
em.addCustomFields({
date: 'date'
});
});
translator.translate();
}
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('article .headline>a');
for (var i = 0; i < rows.length; i++) {
var href = rows[i].href;
var title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) {
return;
}
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
}
else {
scrape(doc, url);
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://time.com/3533556/the-war-on-teacher-tenure/",
"items": [
{
"itemType": "magazineArticle",
"title": "The War on Teacher Tenure",
"creators": [
{
"firstName": "Haley Sweetland",
"lastName": "Edwards",
"creatorType": "author"
}
],
"date": "2014-10-23 05:58:37",
"ISSN": "0040-781X",
"abstractNote": "It’s really difficult to fire a bad teacher. A group of Silicon Valley investors wants to change that",
"accessDate": "CURRENT_TIMESTAMP",
"libraryCatalog": "time.com",
"publicationTitle": "Time",
"url": "http://time.com/3533556/the-war-on-teacher-tenure/",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [
"cover story",
"education",
"nation",
"silicon valley",
"teahers",
"tech"
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://time.com/3512672/the-new-ebola-protocols",
"items": [
{
"itemType": "magazineArticle",
"title": "The New Ebola Protocols",
"creators": [
{
"firstName": "David Von",
"lastName": "Drehle",
"creatorType": "author"
}
],
"date": "2014-10-16 06:26:47",
"ISSN": "0040-781X",
"abstractNote": "New U.S. cases have health experts rethinking the response and turning to doctors and hospitals that were truly prepared",
"accessDate": "CURRENT_TIMESTAMP",
"libraryCatalog": "time.com",
"publicationTitle": "Time",
"url": "http://time.com/3512672/the-new-ebola-protocols/",
"attachments": [
{
"document": "[object]",
"title": "Snapshot"
}
],
"tags": [
"ebola",
"medicine"
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://content.time.com/time/nation/article/0,8599,2099187,00.html",
"items": [
{
"itemType": "magazineArticle",
"title": "How the U.S. Postal Service Fell Apart",
"creators": [
{
"firstName": "Josh",
"lastName": "Sanburn",
"creatorType": "author"
}
],
"date": "Thursday, Nov. 17, 2011",
"ISSN": "0040-781X",
"abstractNote": "Battling debilitating congressional mandates and competition online, the USPS is closing thousands of post offices and struggling to find a place in the modern world. But there are people behind the scenes trying to save this American institution",
"language": "en-US",
"libraryCatalog": "content.time.com",
"publicationTitle": "Time",
"url": "http://content.time.com/time/nation/article/0,8599,2099187,00.html",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [
"Post Offices",
"Postal Service",
"USPS",
"United States Postal Service"
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://content.time.com/time/nation/article/0,8599,2108263,00.html",
"items": [
{
"itemType": "magazineArticle",
"title": "On Scene in Indiana and Kentucky: When the Tornadoes Came",
"creators": [
{
"firstName": "Cary",
"lastName": "Stemle",
"creatorType": "author"
}
],
"date": "Sunday, Mar. 04, 2012",
"ISSN": "0040-781X",
"abstractNote": "The month of March isn't really the heart of the tornado season but they have come fast and with awesome destruction.",
"language": "en-US",
"libraryCatalog": "content.time.com",
"publicationTitle": "Time",
"shortTitle": "On Scene in Indiana and Kentucky",
"url": "http://content.time.com/time/nation/article/0,8599,2108263,00.html",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [
"destruction",
"henryville",
"indiana",
"kentucky",
"storm",
"tornado",
"weather"
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://swampland.time.com/2012/03/04/obama-courts-aipac-before-netanyahu-meeting/?iid=sl-main-lede",
"items": [
{
"itemType": "magazineArticle",
"title": "Obama Courts AIPAC Before Netanyahu Meeting",
"creators": [
{
"firstName": "Jay",
"lastName": "Newton-Small",
"creatorType": "author"
}
],
"date": "2012-03-04",
"ISSN": "0040-781X",
"abstractNote": "Obama rejected any notion that his administration has not been in Israel's corner. “Over the last three years, as President of the United States, I have kept my commitments to the state of Israel.\" The President then ticked off the number of ways he has supported Israel in the last year.",
"language": "en-US",
"libraryCatalog": "swampland.time.com",
"publicationTitle": "Time",
"url": "http://swampland.time.com/2012/03/04/obama-courts-aipac-before-netanyahu-meeting/?iid=sl-main-lede",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [
{
"tag": "aipac"
},
{
"tag": "barack obama"
},
{
"tag": "bibi"
},
{
"tag": "iran"
},
{
"tag": "israel"
},
{
"tag": "mahmoud ahamadinejad"
},
{
"tag": "netanyahu"
},
{
"tag": "obama"
},
{
"tag": "speech"
},
{
"tag": "washington"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://business.time.com/2012/03/02/struggling-to-stay-afloat-number-of-underwater-homeowners-keeps-on-rising/?iid=pf-main-lede/",
"items": [
{
"itemType": "magazineArticle",
"title": "Struggling to Stay Afloat: Number of Underwater Homeowners Keeps on Rising",
"creators": [
{
"firstName": "Brad",
"lastName": "Tuttle",
"creatorType": "author"
}
],
"date": "2012-03-02",
"ISSN": "0040-781X",
"abstractNote": "Despite signs that some housing markets are improving, the overall trend is for home prices (and values) to keep dropping—and dropping. As values shrink, more and more homeowners find themselves underwater, the unfortunate scenario in which one owes more on the mortgage than the home is worth.",
"language": "en-US",
"libraryCatalog": "business.time.com",
"publicationTitle": "Time",
"shortTitle": "Struggling to Stay Afloat",
"url": "http://business.time.com/2012/03/02/struggling-to-stay-afloat-number-of-underwater-homeowners-keeps-on-rising/?iid=pf-main-lede/",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [
{
"tag": "arizona"
},
{
"tag": "baltimore"
},
{
"tag": "california"
},
{
"tag": "california real estate"
},
{
"tag": "dallas"
},
{
"tag": "economics & policy"
},
{
"tag": "florida"
},
{
"tag": "florida real estate"
},
{
"tag": "georgia"
},
{
"tag": "mortgages"
},
{
"tag": "nevada"
},
{
"tag": "personal finance"
},
{
"tag": "real estate & homes"
},
{
"tag": "real estate markets"
},
{
"tag": "sunbelt"
},
{
"tag": "the economy"
},
{
"tag": "underwater"
},
{
"tag": "upside-down"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://time.com/search/?q=labor",
"items": "multiple"
},
{
"type": "web",
"url": "https://time.com/5691641/trump-conspiracy-fears/",
"items": [
{
"itemType": "magazineArticle",
"title": "How Trump's Obsession With a Conspiracy Theory Led to the Impeachment Crisis",
"creators": [
{
"firstName": "Simon",
"lastName": "Shuster",
"creatorType": "author"
},
{
"firstName": "Vera",
"lastName": "Bergengruen",
"creatorType": "author"
}
],
"date": "2019-10-03",
"ISSN": "0040-781X",
"abstractNote": "The warning signs were there",
"language": "en-US",
"libraryCatalog": "time.com",
"publicationTitle": "Time",
"url": "https://time.com/5691641/trump-conspiracy-fears/",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [
{
"tag": "White House"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
{"exportNotes":true}50Volodymir Skipaenex/*
Evernote Export Translator
Copyright (C) 2012 Volodymir Skipa
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
function doExport() {
Zotero.setCharacterSet("utf-8");
var evernoteString = "<?xml version='1.0' encoding='UTF-8'?>\n<!DOCTYPE en-export SYSTEM 'http://xml.evernote.com/pub/evernote-export.dtd'>\n<en-export application='Zotero' version='" + Zotero.Utilities.getVersion() + "'>\n";
var item;
// eslint-disable-next-line no-cond-assign
while (item = Zotero.nextItem()) {
var itemString = "<note>\n";
var title = item.title || "[Untitled]";
// encode brackets <>
title = title.replace(/</g, '<').replace(/>/g, '>');
// title cannot be longer than 255
if (title.length > 252) {
title = title.substr(0, 252) + "...";
}
itemString += " <title>" + title + "</title>\n";
itemString += " <content>\n";
itemString += " <![CDATA[<?xml version='1.0' encoding='UTF-8'?><!DOCTYPE en-note SYSTEM 'http://xml.evernote.com/pub/enml2.dtd'>\n";
itemString += " <en-note>\n";
/** NOTES **/
if (item.notes && item.notes.length > 0 && Zotero.getOption("exportNotes")) {
for (let i in item.notes) {
// delete all class and id attributes, because these will
// otherwise create an error when importing in Evernote
let noteContent = item.notes[i].note
.replace(/(<[^>]*) class="[^"]+"([^>]*>)/g, "$1$2")
.replace(/(<[^>]*) id="[^"]+"([^>]*>)/g, "$1$2");
// delete elements like html, body, head which might create
// another problem when importing in Evernote
noteContent = noteContent.replace(/<\/?(html|head|body)[^>]*>/g, '');
itemString += " <div>" + noteContent + "<br/></div>\n";
}
}
itemString += " </en-note>]]>\n";
itemString += " </content>\n";
var dateCreated = item.dateAdded.replace(/[-:]/g, "").replace(" ", "T") + "Z";
itemString += " <created>" + dateCreated + "</created>\n";
var dateUpdated = item.dateModified.replace(/[-:]/g, "").replace(" ", "T") + "Z";
itemString += " <updated>" + dateUpdated + "</updated>\n";
/** TAGS **/
for (var j in item.tags) {
let tag = item.tags[j].tag;
// comma is not allowed in tags
tag = tag.replace(/\s*,\s*/g, ' / ');
// encode brackets <>
tag = tag.replace(/</g, '<').replace(/>/g, '>');
// in Evernote tags must be smaller than 100 characters
if (tag.length > 95) {
tag = tag.substr(0, 95) + "...";
}
itemString += " <tag>" + tag + "</tag>\n";
}
itemString += " <note-attributes>\n";
itemString += " <source>web.clip</source>\n";
itemString += " <source-url>" + item.url + "</source-url>\n";
itemString += " </note-attributes>\n";
itemString += "</note>\n";
// replace "&" with "&"
itemString = itemString.replace(/&/g, "&");
evernoteString += itemString;
}
Zotero.write(evernoteString);
Zotero.write("</en-export>\n");
}
100Qiang Huhttps?://(www\.)?bioconductor\.org/(packages/.*/bioc/html|help/search)//*
***** BEGIN LICENSE BLOCK *****
Bioconductor Packages Translator
Copyright © 2019 Qiang Hu
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
// attr()/text() v2
// eslint-disable-next-line
function attr(docOrElem,selector,attr,index){var elem=index?docOrElem.querySelectorAll(selector).item(index):docOrElem.querySelector(selector);return elem?elem.getAttribute(attr):null;}function text(docOrElem,selector,index){var elem=index?docOrElem.querySelectorAll(selector).item(index):docOrElem.querySelector(selector);return elem?elem.textContent:null;}
function detectWeb(doc, url) {
if (url.includes('/bioc/html/')) {
return "computerProgram";
}
else if (url.includes('/search/index.html') && getSearchResults(doc, true)) {
return "multiple";
}
else {
return false;
}
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('dl>dt>a[href*="/bioc/html/"]');
for (let i = 0; i < rows.length; i++) {
let href = rows[i].href;
let title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) {
return;
}
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
}
else if (detectWeb(doc, url) == "computerProgram") {
scrape(doc, url);
}
}
function scrape(doc, url) {
var item = new Zotero.Item('computerProgram');
item.title = text(doc, '#PageContent > h1');
var subtitle = text(doc, '#PageContent > div.do_not_rebase > h2');
if (subtitle) {
item.title += ": " + subtitle;
}
var doi = ZU.xpathText(doc, '//*[@id="PageContent"]/div[2]/a[contains(@href, "https://doi.org/")]');
if (doi !== null) {
item.extra = 'DOI: ' + doi;
}
var rows = doc.querySelectorAll('#PageContent > div.do_not_rebase > p');
for (let i = 0; i < rows.length; i++) {
if (ZU.trimInternal(rows[i].textContent).startsWith('Bioconductor version:')) {
item.company = ZU.trimInternal(rows[i].textContent);
item.abstractNote = ZU.trimInternal(rows[i + 1].textContent);
}
if (ZU.trimInternal(rows[i].textContent).startsWith('Author')) {
var authorString = ZU.trimInternal(rows[i].textContent);
var creators = authorString.replace(/Author:\s*/, '').replace(/\[.+?\]/g, '').replace(/\(.+?\)/g, '');
creators = creators.split(/,|and\s*/);
for (let i = 0; i < creators.length; i++) {
item.creators.push(ZU.cleanAuthor(creators[i], 'programmer'));
}
}
}
item.versionNumber = ZU.xpathText(doc, '//table/tbody/tr/td[contains(text(), "Version")]/following-sibling::td');
item.rights = ZU.xpathText(doc, '//table/tbody/tr/td[contains(text(), "License")]/following-sibling::td');
item.url = ZU.xpathText(doc, '//table/tbody/tr/td[contains(text(), "Package Short Url")]/following-sibling::td') || url;
var year = ZU.xpathText(doc, '//*[@id="SiteGlobalFooter"]/div/p[contains(text(), "Copyright")]');
if (year) {
item.date = year.match(/\d+/g)[1];
}
var tags = ZU.xpath(doc, '//td[contains(text(), "biocViews")]/following-sibling::td/a');
for (let i = 0; i < tags.length; i++) {
item.tags.push(tags[i].textContent);
}
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://bioconductor.org/help/search/index.html?q=SummarizedExperiment/",
"items": "multiple"
},
{
"type": "web",
"url": "https://bioconductor.org/packages/release/bioc/html/SummarizedExperiment.html",
"items": [
{
"itemType": "computerProgram",
"title": "SummarizedExperiment: SummarizedExperiment container",
"creators": [
{
"firstName": "Martin",
"lastName": "Morgan",
"creatorType": "programmer"
},
{
"firstName": "Valerie",
"lastName": "Obenchain",
"creatorType": "programmer"
},
{
"firstName": "Jim",
"lastName": "Hester",
"creatorType": "programmer"
},
{
"firstName": "Hervé",
"lastName": "Pagès",
"creatorType": "programmer"
}
],
"date": "2019",
"abstractNote": "The SummarizedExperiment container contains one or more assays, each represented by a matrix-like object of numeric or other mode. The rows typically represent genomic ranges of interest and the columns represent samples.",
"company": "Bioconductor version: Release (3.9)",
"extra": "DOI: 10.18129/B9.bioc.SummarizedExperiment",
"libraryCatalog": "Bioconductor",
"rights": "Artistic-2.0",
"shortTitle": "SummarizedExperiment",
"url": "http://bioconductor.org/packages/SummarizedExperiment/",
"versionNumber": "1.14.1",
"attachments": [],
"tags": [
{
"tag": "Annotation"
},
{
"tag": "Coverage"
},
{
"tag": "Genetics"
},
{
"tag": "GenomeAnnotation"
},
{
"tag": "Infrastructure"
},
{
"tag": "Sequencing"
},
{
"tag": "Software"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://bioconductor.org/packages/devel/bioc/html/SummarizedExperiment.html",
"items": [
{
"itemType": "computerProgram",
"title": "SummarizedExperiment: SummarizedExperiment container",
"creators": [
{
"firstName": "Martin",
"lastName": "Morgan",
"creatorType": "programmer"
},
{
"firstName": "Valerie",
"lastName": "Obenchain",
"creatorType": "programmer"
},
{
"firstName": "Jim",
"lastName": "Hester",
"creatorType": "programmer"
},
{
"firstName": "Hervé",
"lastName": "Pagès",
"creatorType": "programmer"
}
],
"date": "2019",
"abstractNote": "The SummarizedExperiment container contains one or more assays, each represented by a matrix-like object of numeric or other mode. The rows typically represent genomic ranges of interest and the columns represent samples.",
"company": "Bioconductor version: Development (3.10)",
"extra": "DOI: 10.18129/B9.bioc.SummarizedExperiment",
"libraryCatalog": "Bioconductor",
"rights": "Artistic-2.0",
"shortTitle": "SummarizedExperiment",
"url": "http://bioconductor.org/packages/SummarizedExperiment/",
"versionNumber": "1.15.9",
"attachments": [],
"tags": [
{
"tag": "Annotation"
},
{
"tag": "Coverage"
},
{
"tag": "Genetics"
},
{
"tag": "GenomeAnnotation"
},
{
"tag": "Infrastructure"
},
{
"tag": "Sequencing"
},
{
"tag": "Software"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://bioconductor.org/packages/3.2/bioc/html/SummarizedExperiment.html",
"items": [
{
"itemType": "computerProgram",
"title": "SummarizedExperiment: SummarizedExperiment container",
"creators": [
{
"firstName": "Martin",
"lastName": "Morgan",
"creatorType": "programmer"
},
{
"firstName": "Valerie",
"lastName": "Obenchain",
"creatorType": "programmer"
},
{
"firstName": "Jim",
"lastName": "Hester",
"creatorType": "programmer"
},
{
"firstName": "Hervé",
"lastName": "Pagès",
"creatorType": "programmer"
}
],
"date": "2016",
"abstractNote": "The SummarizedExperiment container contains one or more assays, each represented by a matrix-like object of numeric or other mode. The rows typically represent genomic ranges of interest and the columns represent samples.",
"company": "Bioconductor version: 3.2",
"libraryCatalog": "Bioconductor",
"rights": "Artistic-2.0",
"shortTitle": "SummarizedExperiment",
"url": "http://bioconductor.org/packages/SummarizedExperiment/",
"versionNumber": "1.0.2",
"attachments": [],
"tags": [
{
"tag": "Annotation"
},
{
"tag": "Coverage"
},
{
"tag": "Genetics"
},
{
"tag": "GenomeAnnotation"
},
{
"tag": "Infrastructure"
},
{
"tag": "Sequencing"
},
{
"tag": "Software"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Philipp Zumstein^https?://(www\.)?atsinternationaljournal\.com//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2019 Philipp Zumstein
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
// attr()/text() v2
// eslint-disable-next-line
function attr(docOrElem,selector,attr,index){var elem=index?docOrElem.querySelectorAll(selector).item(index):docOrElem.querySelector(selector);return elem?elem.getAttribute(attr):null;}function text(docOrElem,selector,index){var elem=index?docOrElem.querySelectorAll(selector).item(index):docOrElem.querySelector(selector);return elem?elem.textContent:null;}
// convert a roman number, e.g. XLVIII into an arabic number, e.g. 48
function roman2arabic(roman) {
let mapping = {
M: 1000,
D: 500,
C: 100,
L: 50,
X: 10,
V: 5,
I: 1
};
let result = 0;
for (let i = 0; i < roman.length; i++) {
let value = mapping[roman[i]];
if (i + 1 < roman.length) {
if (value >= mapping[roman[i + 1]]) {
result += mapping[roman[i]];
}
else {
result -= mapping[roman[i]];
}
}
else {
result += mapping[roman[i]];
}
}
return result;
}
function detectWeb(doc, url) {
// TODO: can wo do this better?
if (url.split('/').length == 7) {
return "journalArticle";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.article-title a, .search-results a, .category li a');
for (let row of rows) {
let href = row.href;
let title = ZU.trimInternal(row.textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var item = new Zotero.Item('journalArticle');
item.title = text(doc, 'h1.article-title');
// we use volume here because the issues are numbered
// consecutively over years
item.volume = text(doc, 'h1.page-title');
if (item.volume) {
item.date = ZU.strToISO(item.volume);
// convert the volume numbers into arabic numbers
if (item.volume.includes(' - ')) {
let conversion = roman2arabic(item.volume.split(' - ')[0]);
if (conversion !== 0) {
item.volume = conversion;
}
}
else {
// Special Issue 2018 Vol2 --> Special Issue 2
item.volume = item.volume.replace(/\d\d\d\d(\s+Vol\.?\s*)?/, '');
}
}
var authors = text(doc, 'section.article-content em');
if (authors) {
item.creators = authors.split(',').map(name => ZU.cleanAuthor(name, "author"));
}
var tags = doc.querySelectorAll('.tags *[itemprop=keywords]');
item.tags = [];
for (let tag of tags) {
item.tags.push(tag.textContent.trim());
}
item.pages = ZU.xpathText(doc, '//section[contains(@class, "article-content")]//strong[contains(., "Pages")]/following-sibling::text()[1]');
item.abstractNote = ZU.xpathText(doc, '//section[contains(@class, "article-content")]//strong[contains(., "Abstract")]/following-sibling::text()[1]');
var keywords = ZU.xpathText(doc, '//section[contains(@class, "article-content")]//strong[contains(., "Keywords")]/following-sibling::text()[1]');
if (keywords && item.tags.length === 0) {
item.tags = keywords.split(';');
}
item.url = url;
item.ISSN = '1824-5463';
item.language = 'en';
item.publicationTitle = 'Advances in Transportation Studies';
item.journalAbbreviation = 'ATS';
item.extra = 'pusblisher:Aracne Editrice\nplace:Roma';
item.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://www.atsinternationaljournal.com/index.php/2019-issues/xlviii-july-2019/1056-do-drivers-have-a-good-understanding-of-distraction-by-wrap-advertisements-investigating-the-impact-of-wrap-advertisement-on-distraction-related-driver-s-accidents",
"items": [
{
"itemType": "journalArticle",
"title": "Do drivers have a good understanding of distraction by wrap advertisements? Investigating the impact of wrap advertisement on distraction-related driver’s accidents",
"creators": [
{
"firstName": "A. R.",
"lastName": "Mahpour",
"creatorType": "author"
},
{
"firstName": "A. Mohammadian",
"lastName": "Amiri",
"creatorType": "author"
},
{
"firstName": "E. Shah",
"lastName": "Ebrahimi",
"creatorType": "author"
}
],
"date": "2019-07",
"ISSN": "1824-5463",
"abstractNote": "Drivers encounter a variety of outdoor advertising including fixed and wrap advertisement and large amounts of information and data in different locations, which can sometimes confuse the audience due to congestion, accumulation, and non-compliance with the standards and diversity of concepts. Fully understanding how small distractions can influence the ability to drive could prevent a serious accident. Despite the enormous amount of effort has been devoted to evaluating the impact of fix advertising on traffic safety, the importance of investing wrap advertisements seems to be disregarded. Therefore, the present study seeks firstly to compare the importance of distraction caused by wrap advertisement with other parameters affecting drivers’ awareness, then to find out which aspects of wrap advertisement may distract drivers while driving. To address this objective, at first, a questionnaire-based accidents database was prepared regarding those occurred because of distraction, and then the weight of distraction caused by wrap advertisement was identified using AHP. Subsequently, accidents that occurred because of this specific issue were modeled using the discrete choice technique. The results showed that in contrast with the prevailing opinion of drivers, the probability of distraction while driving caused by wrap advertisement is relatively high which can be considered as an alarming issue. Moreover, according to the results of discrete choice modeling, drivers with different characteristics, such as age or gender can be affected by wrap advertisement in different ways.",
"extra": "pusblisher:Aracne Editrice\nplace:Roma",
"journalAbbreviation": "ATS",
"language": "en",
"libraryCatalog": "ATS International Journal",
"pages": "19-30",
"publicationTitle": "Advances in Transportation Studies",
"shortTitle": "Do drivers have a good understanding of distraction by wrap advertisements?",
"url": "http://www.atsinternationaljournal.com/index.php/2019-issues/xlviii-july-2019/1056-do-drivers-have-a-good-understanding-of-distraction-by-wrap-advertisements-investigating-the-impact-of-wrap-advertisement-on-distraction-related-driver-s-accidents",
"volume": 48,
"attachments": [],
"tags": [
{
"tag": "Analysis"
},
{
"tag": "Crashes"
},
{
"tag": "Driver"
},
{
"tag": "Driver Behaviour"
},
{
"tag": "Models"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.atsinternationaljournal.com/index.php/2004-issues/special-issue-2004",
"items": "multiple"
},
{
"type": "web",
"url": "http://www.atsinternationaljournal.com/index.php/paper-search?q=reference+management",
"items": "multiple"
},
{
"type": "web",
"url": "http://www.atsinternationaljournal.com/index.php/2018-issues/special-issue-2018-vol2/989-dynamic-traffic-safety-grade-evaluation-model-for-road-sections-based-on-gray-fixed-weight-clustering",
"items": [
{
"itemType": "journalArticle",
"title": "Dynamic traffic safety grade evaluation model for road sections based on gray fixed weight clustering",
"creators": [
{
"firstName": "H. L.",
"lastName": "Jing",
"creatorType": "author"
},
{
"firstName": "L. T.",
"lastName": "Ye",
"creatorType": "author"
},
{
"firstName": "J. Z.",
"lastName": "Wang",
"creatorType": "author"
},
{
"firstName": "Z.",
"lastName": "Xie",
"creatorType": "author"
},
{
"firstName": "M.",
"lastName": "Brown",
"creatorType": "author"
}
],
"date": "2018",
"ISSN": "1824-5463",
"abstractNote": "The conventional gray predication model GM (1, 1) cannot accurately analyze the dynamic traffic index information of complex and scattered road sections because it may cause relatively large error and performs not well in stability. In order to solve this problem, a dynamic traffic safety grade evaluation model for road sections based on gray fixed weight clustering is designed. In this method, In this method, the gray clustering evaluation method is adopted for gray clustering to complex and scattered traffic safety grade evaluation indexes, and the gray fixed weight clustering method is adopted to weight each clustering index in advance; the clustering weight of each index is set by a fuzzy consistent matrix, on which the fixed weight coefficient of the index is calculated and the clustering vector is constructed; the cluster coefficients and cluster vectors are combined to obtain the clustering indexes of traffic safety evaluation; then a BP neural network dynamic traffic safety grade evaluation model for road sections is constructed according to the indexes, so as to accurately evaluate the dynamic traffic safety grade of road sections. The experiment results show that the designed model method can effectively evaluate the dynamic traffic safety grade of 31 road sections in areas with a high probability of traffic congestion with small evaluation error and high stability, so it meets the design requirements.",
"extra": "pusblisher:Aracne Editrice\nplace:Roma",
"journalAbbreviation": "ATS",
"language": "en",
"libraryCatalog": "ATS International Journal",
"pages": "15-24",
"publicationTitle": "Advances in Transportation Studies",
"url": "http://www.atsinternationaljournal.com/index.php/2018-issues/special-issue-2018-vol2/989-dynamic-traffic-safety-grade-evaluation-model-for-road-sections-based-on-gray-fixed-weight-clustering",
"volume": "Special Issue 2",
"attachments": [],
"tags": [
{
"tag": "Models"
},
{
"tag": "Road Safety"
},
{
"tag": "Traffic"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Aurimas Vinckevicius, Emiliano Heyns^https?://[^/]*verniana\.org(:\d+)?/volumes/\d+//**
Copyright (c) 2012-2019 Aurimas Vinckevicius, Emiliano Heyns
This program is free software: you can redistribute it and/or
modify it under the terms of the GNU Affero General Public License
as published by the Free Software Foundation, either version 3 of
the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public
License along with this program. If not, see
<http://www.gnu.org/licenses/>.
*/
// eslint-disable-next-line
function attr(docOrElem,selector,attr,index){var elem=index?docOrElem.querySelectorAll(selector).item(index):docOrElem.querySelector(selector);return elem?elem.getAttribute(attr):null;}function text(docOrElem,selector,index){var elem=index?docOrElem.querySelectorAll(selector).item(index):docOrElem.querySelector(selector);return elem?elem.textContent:null;}
function detectWeb(doc, _url) {
if (doc.querySelector('ul.volume_toc li')) return 'multiple';
if (doc.querySelector('.ref_on_top')) return 'journalArticle';
return false;
}
function returnMatch(t, r) {
let m = t.match(r);
return m ? m[1] : '';
}
function scrape(doc, url) {
let item = new Zotero.Item('journalArticle');
item.url = url;
item.title = ZU.capitalizeTitle(ZU.trimInternal(text(doc, '#content h1') || ''));
item.creators = (text(doc, 'div#content p.author a') || text(doc, 'div#content p.author')).split(' et ').map(author => ZU.cleanAuthor(author.trim(), 'author'));
item.abstractNote = text(doc, 'p.abstract');
let refOnTop = (text(doc, 'div.ref_on_top') || '').trim();
item.volume = returnMatch(refOnTop, /volume (\d+)/i);
item.pages = returnMatch(refOnTop, /(\d+(?:–\d+)?)$/);
item.ISSN = '1565-8872';
item.attachments = [];
let m = url.match(/^(https?:\/\/www\.verniana\.org\/volumes\/[0-9]+\/)[^/]+(\/[^.]+)\.html$/);
if (m) {
item.attachments = [
{
url: m[1] + 'A4' + m[2] + '.pdf',
title: 'Full text PDF',
mimeType: 'application/pdf'
},
{
url: m[1] + 'HTML' + m[2] + '.html',
title: 'Snapshot',
mimeType: 'text/html'
},
];
}
item.complete();
}
function doWeb(doc, url) {
if (detectWeb(doc, url) === 'multiple') {
let items = {};
for (let item of doc.querySelectorAll('ul.volume_toc li')) {
let title = text(item, '.title');
if (!title) continue;
let a = Array.from(item.querySelectorAll('a')).find(a => a.textContent === 'HTML');
if (!a) continue;
let href = a.getAttribute('href');
if (href) items[href] = title;
}
Zotero.selectItems(items, function (items) {
ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://www.verniana.org/volumes/04/index.en.html",
"items": "multiple"
},
{
"type": "web",
"url": "http://www.verniana.org/volumes/07/Resumes/AlcideMorgaz.html",
"items": [
{
"itemType": "journalArticle",
"title": "Alcide Poitrineux et Simon Morgaz: deux mises au point sur Jules Verne et le théâtre",
"creators": [
{
"firstName": "Stefan",
"lastName": "Schmidt",
"creatorType": "author"
},
{
"firstName": "Volker",
"lastName": "Dehs",
"creatorType": "author"
}
],
"ISSN": "1565-8872",
"abstractNote": "Jules Verne a collaboré en 1883 à une pièce qui ne fut jamais jouée, Les Erreurs d'Alcide. De récentes découvertes apportent plus de\nprécisions sur cette collaboration. Dans Famille-sans-nom, le nom de famille des héros est Morgaz. Quelques années après la parution du roman, une pièce\nintitulée Simon Morgaz fut jouée en 1896.",
"libraryCatalog": "Verniana-Jules Verne Studies",
"pages": "97–104",
"url": "http://www.verniana.org/volumes/07/Resumes/AlcideMorgaz.html",
"volume": "7",
"shortTitle": "Alcide Poitrineux et Simon Morgaz",
"attachments": [
{
"title": "Full text PDF",
"mimeType": "application/pdf"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.verniana.org/volumes/03/Abstracts/Garmt.html",
"items": [
{
"itemType": "journalArticle",
"title": "Sur la trace des “kritiskshalhen” du professeur Friedrich",
"creators": [
{
"firstName": "Garmt de",
"lastName": "Vries-Uiterweerd",
"creatorType": "author"
}
],
"ISSN": "1565-8872",
"abstractNote": "The \"ultra X rays of professor Friedrich of Elbing\" that Jules Verne mentions in Le Testament d’un excentrique do not come from the\nauthor's imagination. The trace of their discovery can be followed from a meeting of the Vienna Academy of Science to an article in the Revue scientifique, which Jules\nVerne used to read.",
"libraryCatalog": "Verniana-Jules Verne Studies",
"pages": "125–130",
"url": "http://www.verniana.org/volumes/03/Abstracts/Garmt.html",
"volume": "3",
"attachments": [
{
"title": "Full text PDF",
"mimeType": "application/pdf"
},
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Philipp Zumstein^https?://(www|news?)\.bbc\.(co\.uk|com)/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2016 Philipp Zumstein
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
url = url.replace(/[?#].+/, "");
if (/\d{8}$/.test(url) || /\d{7}\.(stm)$/.test(url)) {
var pageNode = doc.getElementById("page");
if (pageNode) {
// Z.debug(pageNode.className);
if (pageNode.className.includes("media-asset-page") || pageNode.className.includes("vxp-headlines")) {
return "videoRecording";
}
}
return "newspaperArticle";
}
if (url.includes("/newsbeat/article")) {
return "blogPost";
}
if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = ZU.xpath(doc, '//a[h3]');
// for NewsBeat
if (!rows.length) {
rows = ZU.xpath(doc, '//article/div/h1[@itemprop="headline"]/a');
}
for (let i = 0; i < rows.length; i++) {
var href = rows[i].href;
var title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) {
return;
}
var articles = [];
for (let i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
url = url.replace(/[?#].+/, "");
var itemType = detectWeb(doc, url);
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
// add date and time if missing by one of four attempts:
// 1. look at the json-ld data
// 2. calculate it from the data-seconds attribute
// 3. extract it from a nonstandard meta field
// 4. for old pages, get from metadata
var jsonld = ZU.xpathText(doc, '//script[@type="application/ld+json"]');
var data = JSON.parse(jsonld);
// Z.debug(data);
if (data && data.datePublished) {
item.date = data.datePublished;
}
else {
var seconds = ZU.xpathText(doc, '(//div[h1 or h2]//*[contains(@class, "date")]/@data-seconds)[1]');
if (!item.date && seconds) {
// Z.debug(seconds);
var date = new Date(1000 * seconds);
item.date = date.toISOString();
}
else {
item.date = ZU.xpathText(doc, '//meta[@property="rnews:datePublished"]/@content');
if (!item.date) {
item.date = ZU.xpathText(doc, '//p[@class="timestamp"]');
if (!item.date) {
item.date = ZU.xpathText(doc, '//meta[@name="OriginalPublicationDate"]/@content');
}
}
}
}
if (item.date) {
item.date = ZU.strToISO(item.date);
}
// delete wrongly attached creators like
// "firstName": "B. B. C.", "lastName": "News"
item.creators = [];
// add authors from byline__name but only if they
// are real authors and not just part of the webpage title
// like By BBC Trending, By News from Elsewhere... or By Who, What Why
var authorString = ZU.xpathText(doc, '//span[@class="byline__name"]');
var webpageTitle = ZU.xpathText(doc, '//h1');
if (authorString) {
authorString = authorString.replace('By', '').replace('...', '');
let authors = authorString.split('&');
for (let i = 0; i < authors.length; i++) {
if (webpageTitle.toLowerCase().includes(authors[i].trim().toLowerCase())) {
continue;
}
item.creators.push(ZU.cleanAuthor(authors[i], "author"));
}
}
else {
authorString = ZU.xpathText(doc, '//p[@class="byline"]');
var title = ZU.xpathText(doc, '//em[@class="title"]');
if (authorString) {
authorString = authorString.replace(title, '').replace('By', '');
let authors = authorString.split('&');
for (let i = 0; i < authors.length; i++) {
item.creators.push(ZU.cleanAuthor(authors[i], "author"));
}
}
}
if (url.includes("/newsbeat/article")) {
item.blogTitle = "BBC Newsbeat";
}
// description for old BBC pages
if (!item.abstractNote) {
item.abstractNote = ZU.xpathText(doc, '//meta[@name="Description"]/@content');
}
for (let i in item.tags) {
item.tags[i] = item.tags[i].charAt(0).toUpperCase() + item.tags[i].substring(1);
}
if (!item.language || item.language === "en") {
item.language = "en-GB";
}
if (url.substr(-4) == ".stm") {
item.title = ZU.xpathText(doc, '//meta[@name="Headline"]/@content');
}
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.itemType = itemType;
trans.doWeb(doc, url);
});
}/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.bbc.com/news/magazine-15335899",
"items": [
{
"itemType": "newspaperArticle",
"title": "Spain's stolen babies",
"creators": [
{
"firstName": "Katya",
"lastName": "Adler",
"creatorType": "author"
}
],
"date": "2011-10-18",
"abstractNote": "Spanish society has been shaken by revelations of the mass trafficking of babies, dating back to the Franco era but continuing until the 1990s involving respected doctors, nuns and priests.",
"language": "en-GB",
"libraryCatalog": "www.bbc.com",
"publicationTitle": "BBC News",
"section": "Magazine",
"url": "https://www.bbc.com/news/magazine-15335899",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.bbc.com/news/world/asia/india",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.bbc.com/news/blogs-news-from-elsewhere-37117404",
"items": [
{
"itemType": "newspaperArticle",
"title": "Fines for not liking boss's Weibo posts",
"creators": [],
"date": "2016-08-18",
"abstractNote": "Company in China punishes employees who don't comment on manager's social media posts.",
"language": "en-GB",
"libraryCatalog": "www.bbc.com",
"publicationTitle": "BBC News",
"section": "News from Elsewhere",
"url": "https://www.bbc.com/news/blogs-news-from-elsewhere-37117404",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.bbc.com/news/magazine-36287752",
"items": [
{
"itemType": "newspaperArticle",
"title": "'I found my dad on Facebook'",
"creators": [
{
"firstName": "Abdirahim",
"lastName": "Saeed",
"creatorType": "author"
},
{
"firstName": "Deirdre",
"lastName": "Finnerty",
"creatorType": "author"
}
],
"date": "2016-08-17",
"abstractNote": "How a simple post on social media ended a Russian woman's 40-year search for her father.",
"language": "en-GB",
"libraryCatalog": "www.bbc.com",
"publicationTitle": "BBC News",
"section": "Magazine",
"url": "https://www.bbc.com/news/magazine-36287752",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.bbc.co.uk/search?q=harry+potter",
"items": "multiple"
},
{
"type": "web",
"url": "http://www.bbc.co.uk/newsbeat/article/32129457/will-new-music-streaming-service-tidal-make-the-waves-artists-want",
"items": [
{
"itemType": "blogPost",
"title": "Will new music streaming service Tidal make the waves artists want? - BBC Newsbeat",
"creators": [
{
"firstName": "Chi Chi",
"lastName": "Izundu",
"creatorType": "author"
}
],
"date": "2015-03-31",
"abstractNote": "Exclusive music news, big interviews, entertainment, social media trends and video from the news people at BBC Radio 1 and 1Xtra.",
"blogTitle": "BBC Newsbeat",
"language": "en-GB",
"shortTitle": "Will new music streaming service Tidal make the waves artists want?",
"url": "http://www.bbc.co.uk/newsbeat/article/32129457/will-new-music-streaming-service-tidal-make-the-waves-artists-want",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.bbc.com/sport/olympics/37068610",
"items": [
{
"itemType": "newspaperArticle",
"title": "Rio Olympics 2016: Joseph Schooling beats Michael Phelps in 100m butterfly",
"creators": [],
"date": "2016-08-13",
"abstractNote": "Singapore's Joseph Schooling wins his nation's first ever gold medal with victory in the 100m butterfly as Michael Phelps finishes joint second.",
"language": "en-GB",
"libraryCatalog": "www.bbc.com",
"publicationTitle": "BBC Sport",
"section": "Olympics",
"shortTitle": "Rio Olympics 2016",
"url": "https://www.bbc.com/sport/olympics/37068610",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://news.bbc.co.uk/2/hi/uk_news/politics/2116949.stm",
"items": [
{
"itemType": "newspaperArticle",
"title": "EU must expand, Straw warns",
"creators": [],
"date": "2002-07-08",
"abstractNote": "Debate on reform of the Common Agricultural Policy must not dilute support for EU enlargement, Foreign Secretary Jack Straw will warn.",
"language": "en-GB",
"libraryCatalog": "news.bbc.co.uk",
"url": "http://news.bbc.co.uk/2/hi/uk_news/politics/2116949.stm",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [
"BBC",
"BBC News",
"British",
"Foreign",
"International",
"News",
"News online",
"Online",
"Service",
"Uk",
"World"
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.bbc.com/portuguese/internacional-48562081",
"items": [
{
"itemType": "newspaperArticle",
"title": "Como peixes e até camarões podem ser 'recrutados' como espiões",
"creators": [
{
"firstName": "Emma",
"lastName": "Woollacott",
"creatorType": "author"
}
],
"date": "2019-06-10",
"abstractNote": "Animais são usados há muito tempo para fins militares, mas agora um projeto americano quer saber se as criaturas marinhas também podem agir como sensores.",
"language": "pt",
"libraryCatalog": "www.bbc.com",
"publicationTitle": "BBC News Brasil",
"section": "Internacional",
"url": "https://www.bbc.com/portuguese/internacional-48562081",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
300Simon Kornblith/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2007-2012 Simon Kornblith
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
var RECOGNIZABLE_FORMATS = [
"rdf_zotero",
"rdf_bibliontology",
"marc",
"unimarc",
"marcxml",
"mods",
"ris",
"refer",
"bibtex",
"rdf_dc"
];
var FORMAT_GUIDS = {
rdf_zotero: "5e3ad958-ac79-463d-812b-a86a9235c28f", // eslint-disable-line camelcase
rdf_bibliontology: "14763d25-8ba0-45df-8f52-b8d1108e7ac9", // eslint-disable-line camelcase
mods: "0e2235e7-babf-413c-9acf-f27cce5f059c",
marc: "a6ee60df-1ddc-4aae-bb25-45e0537be973",
unimarc: "a6ee60df-1ddc-4aae-bb25-45e0537be973",
marcxml: "edd87d07-9194-42f8-b2ad-997c4c7deefd",
ris: "32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7",
refer: "881f60f2-0802-411a-9228-ce5f47b64c7d",
bibtex: "9cb70025-a888-4a29-a210-93ec52da40d4",
rdf_dc: "5e3ad958-ac79-463d-812b-a86a9235c28f" // eslint-disable-line camelcase
};
var unAPIResolver = false;
var defaultFormat, unAPIIDs;
/**
* A class to describe an unAPI format description
* @property isSupported {Boolean} Whether Zotero supports a format contained in this description
* @property name {String} The unAPI format name, used to retrieve item descriptions
* @property translatorID {String} The ID of the translator used to read this format
*
* @constructor
* @param {String} aXML unAPI format description XML
*/
function UnAPIFormat(aXML) {
var parser = new DOMParser();
var doc = parser.parseFromString(aXML.replace(/<!DOCTYPE[^>]*>/, "").replace(/<\?xml[^>]*\?>/, ""), "text/xml");
var foundFormat = {};
// Loop through to determine format name
var nodes = doc.documentElement.getElementsByTagName("format");
var nNodes = nodes.length;
if (!nNodes) {
// Hack to fix for Firefox 10/Zotero 3.0.1
var i = 0;
while (i in nodes) nNodes = ++i;
}
var node, name, lowerName, format;
for (let i = 0; i < nNodes; i++) {
node = nodes[i];
name = node.getAttribute("name");
lowerName = name.toLowerCase();
format = false;
// Look for formats we can recognize
if (["rdf_zotero", "rdf_bibliontology", "bibtex", "endnote", "rdf_dc"].includes(lowerName)) {
format = lowerName;
}
else if (lowerName == "rdf_bibliontology") {
format = "rdf_bibliontology";
}
else if (lowerName === "mods"
|| node.getAttribute("namespace_uri") === "http://www.loc.gov/mods/v3"
|| node.getAttribute("docs") === "http://www.loc.gov/standards/mods/"
|| node.getAttribute("type") === "application/mods+xml") {
format = "mods";
}
else if (lowerName.match(/^marc\b/)
|| node.getAttribute("type") === "application/marc") {
format = "marc";
}
else if (lowerName.match(/^unimarc\b/)
|| node.getAttribute("type") === "application/unimarc") {
format = "unimarc";
}
else if (lowerName.match(/^marcxml\b/)
|| node.getAttribute("type") === "application/marcxml+xml"
|| node.getAttribute("docs") === "http://www.loc.gov/marcxml/") {
format = "marcxml";
}
else if (node.getAttribute("docs") === "http://www.refman.com/support/risformat_intro.asp"
|| lowerName.match(/^ris\b/)) {
format = "ris";
}
if (format) foundFormat[format] = name;
}
// Loop through again to determine optimal supported format
for (let i = 0; i < RECOGNIZABLE_FORMATS.length; i++) {
if (foundFormat[RECOGNIZABLE_FORMATS[i]]) {
this.isSupported = true;
this.name = foundFormat[RECOGNIZABLE_FORMATS[i]];
this.translatorID = FORMAT_GUIDS[RECOGNIZABLE_FORMATS[i]];
return;
}
}
this.isSupported = false;
}
/**
* A class encapsulating an UnAPI ID
* @property format {UnAPIFormat} Information regarding the format
* @property items {Zotero.Item[]} Items corresponding to this ID
*
* @constructor
* @param {String} id The ID contained in an abbr tag
*/
function UnAPIID(id) {
this.id = id;
unAPIIDs[id] = this;
}
UnAPIID.prototype = {
/**
* Gets the item type for this item
* @param {Function} callback Callback to be passed itemType when it is known
*/
getItemType: function (callback) {
this.getItems(function (items) {
if (items.length === 0) {
callback(false);
}
else if (items.length === 1) {
callback(items[0].itemType);
}
else {
callback("multiple");
}
});
},
/**
* Gets items associated with this ID
* @param {Function} callback Callback to be passed items when they have been retrieved
*/
getItems: function (callback) {
if (this.items) {
callback(this.items);
return;
}
this.items = [];
this.isSupported((isSupported) => {
if (!isSupported) {
callback([]);
return;
}
Zotero.Utilities.HTTP.doGet(unAPIResolver + "?id=" + this.id + "&format=" + this.format.name, (text) => {
var translator = Zotero.loadTranslator("import");
translator.setTranslator(this.format.translatorID);
translator.setString(text);
translator.setHandler("itemDone", (obj, item) => {
// add item to array
this.items.push(item);
});
translator.setHandler("done", () => {
// run callback on item array
callback(this.items);
});
try {
translator.translate();
}
catch (e) {
Zotero.debug("unAPI: Could not parse " + this.format.name + " metadata for ID " + this.id + ": " + e);
callback(this.items);
}
});
});
},
/**
* Determines whether Zotero can handle this ID
* @param {Function} callback Callback to be passed isSupported when it is known
*/
isSupported: function (callback) {
if (this.hasOwnProperty("format")) {
callback(this.format.isSupported);
return;
}
getDefaultFormat((defaultFormat) => {
// first try default format, since this won't require >1 HTTP request
if (defaultFormat.isSupported) {
this.format = defaultFormat;
callback(true);
}
else {
// if no supported default format, try format for this item
Zotero.Utilities.HTTP.doGet(unAPIResolver + "?id=" + this.id, (text) => {
this.format = new UnAPIFormat(text);
callback(!!this.format.isSupported);
});
}
});
}
};
/**
* This and the x: prefix in the XPath are to work around an issue with pages
* served as application/xhtml+xml
*
* https://developer.mozilla.org/en/Introduction_to_using_XPath_in_JavaScript#Implementing_a_default_namespace_for_XML_documents
*/
function nsResolver() {
return 'http://www.w3.org/1999/xhtml';
}
/**
* Extracts UnAPIIDs from a document
* @param {document} A document object from which to extract unAPIIds
* @return {UnAPIID[]} The unAPI ID objects extracted from the document
*/
function getUnAPIIDs(doc) {
// look for a resolver
var newUnAPIResolver = doc.evaluate('//x:link[@rel="unapi-server"]', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext();
if (!newUnAPIResolver) return [];
newUnAPIResolver = newUnAPIResolver.getAttribute("href");
if (unAPIResolver !== newUnAPIResolver) {
// if unAPI resolver has changed, clear
defaultFormat = false;
unAPIResolver = newUnAPIResolver;
unAPIIDs = [];
}
// look for abbrs
var abbrs = doc.evaluate('//x:abbr[contains(@class, " unapi-id") or contains(@class, "unapi-id ") or @class="unapi-id"][@title]',
doc, nsResolver, XPathResult.ANY_TYPE, null);
var abbr;
var ids = [];
while (abbr = abbrs.iterateNext()) { // eslint-disable-line no-cond-assign
var id = abbr.getAttribute("title");
ids.push(unAPIIDs[id] ? unAPIIDs[id] : new UnAPIID(id));
}
return ids;
}
/**
* Retrieves the list of formats available for all items accessible through this unAPI resolver
* @param {Function} callback A callback to be passed the format when it is available
*/
function getDefaultFormat(callback) {
if (defaultFormat) {
callback(defaultFormat);
}
else {
Zotero.Utilities.HTTP.doGet(unAPIResolver, function (text) {
// determine format of this item
defaultFormat = new UnAPIFormat(text);
callback(defaultFormat);
});
}
}
/**
* Determines itemType for detection
*/
function determineDetectItemType(ids, supportedId) {
var id = ids.shift();
id.isSupported(function (isSupported) {
if (isSupported && supportedId !== undefined) {
// If there are multiple items with valid itemTypes, use "multiple"
Zotero.done("multiple");
}
else if (ids.length) {
// If IDs remain to be handled, handle the next one
determineDetectItemType(ids, (isSupported ? id : supportedId));
}
else if (isSupported) {
// If all IDs have been handled, get foundItemType for only supported ID
id.getItemType(Zotero.done);
}
else {
Zotero.done(false);
}
});
}
/**
* Get all items
* @param {UnAPIID[]} ids List of UnAPI IDs
* @param {Function} callback Function to pass item array to when items have been retrieved
* @param {Zotero.Item[]} items Item array; used for recursive calls
**/
function getAllItems(ids, callback, items) {
var id = ids.shift();
id.getItems(function (retrievedItems) {
var collectedItems = (items ? items.concat(retrievedItems) : retrievedItems);
if (ids.length) {
getAllItems(ids, callback, collectedItems);
}
else {
callback(collectedItems);
}
});
}
function detectWeb(doc, _url) {
// get unAPI IDs
var ids = getUnAPIIDs(doc);
if (!ids.length) return false;
if (!ids.length === 1) {
// Only one item, so we will just get its item type
ids[0].getItemType(Zotero.done);
}
else {
// Several items. We will need to call determineDetectItemType
determineDetectItemType(ids);
}
return false;
}
function doWeb(doc, _url) {
var ids = getUnAPIIDs(doc);
getAllItems(ids, function (items) {
// get the domain we're scraping, so we can use it for libraryCatalog
let domain = doc.location.href.match(/https?:\/\/([^/]+)/);
if (items.length == 1) {
// If only one item, just complete it
items[0].libraryCatalog = domain[1];
items[0].complete();
}
else if (items.length > 0) {
// If multiple items, extract their titles
var itemTitles = {};
for (var i in items) {
itemTitles[i] = items[i].title;
}
// Show item selection dialog
Zotero.selectItems(itemTitles, function (chosenItems) {
if (!chosenItems) return;
// Complete items
for (var i in chosenItems) {
items[i].libraryCatalog = domain[1];
items[i].complete();
}
});
}
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://search.library.utoronto.ca/search?N=0&Ntk=Anywhere&Ntt=nimni+challenge+of+post-zionism&Ntx=mode%252Bmatchallpartial&Nu=p_work_normalized&Np=1&formName=search_form_simple",
"items": [
{
"itemType": "book",
"title": "The challenge of Post-Zionism: alternatives to Israeli fundamentalist politics",
"creators": [
{
"firstName": "Ephraim",
"lastName": "Nimni",
"creatorType": "editor"
}
],
"date": "2003",
"ISBN": "9781856498937 9781856498944",
"callNumber": "DS113.4 .C45 2003",
"extra": "OCLC: 50670646",
"libraryCatalog": "search.library.utoronto.ca",
"numPages": "209",
"place": "London ; New York",
"publisher": "Zed Books",
"series": "Postcolonial encounters",
"shortTitle": "The challenge of Post-Zionism",
"attachments": [],
"tags": [
{
"tag": "Israel"
},
{
"tag": "National characteristics, Israeli"
},
{
"tag": "Philosophy"
},
{
"tag": "Politics and government"
},
{
"tag": "Post-Zionism"
},
{
"tag": "Zionism"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://search.library.utoronto.ca/search?N=0&Ntk=Anywhere&Ntt=adam+smith&Ntx=mode%252Bmatchallpartial&Nu=p_work_normalized&Np=1&formName=search_form_simple",
"items": "multiple"
},
{
"type": "web",
"url": "http://demo1.orex.es/cgi-bin/koha/opac-detail.pl?biblionumber=3",
"items": [
{
"itemType": "book",
"title": "Carlota Fainberg",
"creators": [
{
"firstName": "Antonio",
"lastName": "Muñoz Molina",
"creatorType": "author"
}
],
"date": "1999",
"ISBN": "9788420441610",
"libraryCatalog": "demo1.orex.es",
"numPages": "174",
"place": "Madrid",
"publisher": "Alfaguara",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Reto Mantz^https?://(www\.|testsystem\.)?juris\.de//*
***** BEGIN LICENSE BLOCK *****
Juris Translator, Copyright © 2014 Reto Mantz
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
// For testing one has to first open starting page with user name, e.g.
// https://www.juris.de/jportal/?action=JLoginUser&username=UNI_MANNHEIM
// Array with the different - recognized - types
var mappingItemTypes = {
MONOGRAPHIE: 'book',
SAMMELWERK: 'book',
AUFSATZ: 'journalArticle',
KONGRESSBERICHT: 'conferencePaper',
'KONGRESSVORTRAG, AUFSATZ': 'conferencePaper',
URTEIL: 'case',
'URT.': 'case',
BESCHLUSS: 'case',
'BESCHL.': 'case',
'ERLEDIGTES ANHÄNGIGES VERFAHREN': 'case',
GESETZ: 'statute',
SONSTIGES: 'journalArticle'
};
// most information in Juris is saved in tables where the description of the data is of class TD30 => gather this data
var scrapeData = {};
function initData(doc) {
var nodes = doc.getElementsByClassName('TD30');
for (var i = 0; i < nodes.length; i++) {
var label = ZU.trimInternal(nodes[i].textContent);
label = label.substr(0, label.length - 1); // chop off ':', but .replace(/:$/, '') may be more reliable
var value = nodes[i].nextElementSibling;
if (label && value) {
scrapeData[label] = ZU.trimInternal(value.textContent);
}
}
if (scrapeData.Norm) {
scrapeData.Normen = scrapeData.Norm;
}
}
function detectWeb(doc, _url) {
initData(doc); // gather data
var type = scrapeData.Beitragstyp || scrapeData.Dokumenttyp;
if (type) {
type = type.toUpperCase();
if (mappingItemTypes[type]) {
return mappingItemTypes[type];
}
else {
Z.debug(type + " not yet suppported");
}
}
if (scrapeData.Werk && scrapeData.Zitiervorschlag) {
if (scrapeData.Zitiervorschlag.includes('Handbuch')) {
return 'bookSection';
}
else {
return 'encyclopediaArticle'; // for articles in commentary
}
}
var coins = ZU.xpathText(doc, '//span[@class="Z3988"]/@title');
if (coins) {
if (coins.includes("rft.genre=article")) {
return 'journalArticle';
}
}
// Z.debug(scrapeData)
Z.monitorDOMChanges(ZU.xpath(doc, '//div[@id="container"]/div')[0]);
return false;
}
function addNote(originalNote, newNote) {
if (originalNote.length === 0) {
originalNote = "<h2>Additional Metadata</h2>" + newNote;
}
else {
originalNote += newNote;
}
return originalNote;
}
function scrape(doc, url, itemType) {
var item = new Zotero.Item(itemType);
// scrape authors
var myAuthorsString = scrapeData.Autor;
// example: "Michael Fricke, Martin Gerecke"
if (myAuthorsString) {
var myAuthors = ZU.trimInternal(myAuthorsString).split(",");
for (var index = 0; index < myAuthors.length; ++index) {
var author = ZU.trimInternal(myAuthors[index]);
item.creators.push(ZU.cleanAuthor(author, 'author', false));
}
}
var editorString = scrapeData.Herausgeber || scrapeData.Gesamtherausgeber;
if (editorString) {
var editors = ZU.trimInternal(editorString).split("/");
for (let i = 0; i < editors.length; i++) {
item.creators.push(ZU.cleanAuthor(editors[i], 'editor', false));
}
}
// scrape title
item.title = ZU.xpathText(doc, "//div[@class='docLayoutTitel']/h3")
|| ZU.xpathText(doc, "//div[contains(@class, 'docLayoutTitel')]//strong")
|| ZU.xpathText(doc, "//div[contains(@class, 'docLayoutTitel')]")
|| ZU.xpathText(doc, "//div[contains(@class, 'docbar__title')]");
item.date = scrapeData.Erscheinungsjahr || scrapeData.Stand;
item.edition = scrapeData.Ausgabe || scrapeData.Auflage;
var isbn = scrapeData.Bestellnummer;
if (isbn) {
item.ISBN = isbn.replace('ISBN', '').trim();
}
var pub = scrapeData.Verlag;
if (pub) {
// e.g. de Gruyter, Berlin
var pubLoc = pub.split(',');
if (pubLoc.length === 2) {
item.publisher = pubLoc[0];
item.place = pubLoc[1];
}
else {
item.publisher = pub;
}
}
item.conferenceName = scrapeData.Kongress;
item.publicLawNumber = scrapeData.FNA; // Fundstellennachweis A (?)
item.code = scrapeData['Amtliche Abkürzung'];
if (itemType === "statute" && scrapeData.Zitiervorschlag) {
// e.g. "Zitiervorschlag": "§ 154 VwGO in der Fassung vom 20.12.2001"
var m = scrapeData.Zitiervorschlag.match(/in der Fassung vom ([\d.]+)/);
if (m) {
item.dateEnacted = ZU.strToISO(m[1]);
}
m = scrapeData.Zitiervorschlag.match(/§ (.+?) /);
if (m) {
item.codeNumber = m[1];
}
}
item.publicationTitle = ZU.xpathText(doc, '(//table//img[contains(@alt,"Abkürzung Fundstelle")]/@title)[1]')
|| scrapeData.Werk;
// scrape src
// example 1: "AfP 2014, 293-299"
// example 2: "ZStW 125, 259-298 (2013)"
var mySrcString = scrapeData.Fundstelle;
if (mySrcString) {
// match example 1
var matchSrc = mySrcString.match(/^([^,]+)\s(\d{4})\s*,\s*(\d+(?:-\d+)?)\s*$/);
if (matchSrc) {
item.journalAbbreviation = ZU.trimInternal(matchSrc[1]);
item.date = matchSrc[2];
item.pages = matchSrc[3];
}
// match example 2
else {
matchSrc = mySrcString.match(/^([^,]+)\s(\d+)\s*,\s*(\d+(?:-\d+)?)\s*\((\d{4})\)\s*$/);
if (matchSrc) {
item.journalAbbreviation = ZU.trimInternal(matchSrc[1]);
item.issue = matchSrc[2];
item.pages = matchSrc[3];
item.date = matchSrc[4];
}
}
}
finalize(doc, url, item);
}
function finalize(doc, url, item) {
var note = "";
// regulations cited in the database for the article
var citedRegulations = scrapeData.Normen;
if (citedRegulations) {
note = addNote(note, "<h3>Normen</h3><p>" + ZU.trimInternal(citedRegulations) + "</p>");
}
var inofficialTitle = ZU.xpathText(doc, "//div[@class='docLayoutTitel']/div/dl/dd/p");
if (inofficialTitle) {
note = addNote(note, "<h3>Titel</h3><p>" + ZU.trimInternal(inofficialTitle) + "</p>");
}
// sources if available
if (ZU.xpathText(doc, "//h3[.='Fundstellen']")) {
var sources = ZU.xpathText(doc, "//td[@class='TableUnten']/div[2]/div[4]");
if (sources) {
note = addNote(note, "<h3>Fundstellen</h3><p>" + ZU.trimInternal(sources) + "</p>");
}
}
if (note.length !== 0) {
item.notes.push({ note: note });
}
// saving a snapshot is currently not working properly
// item.attachments = [{
// title: "Snapshot",
// document: doc
// }];
var perma = ZU.xpathText(doc, '//span[contains(@class, "docLayoutPermalinkItemLink")]');
if (perma) {
item.attachments.push({
title: "Juris Permalink",
url: perma,
snapshot: false
});
}
var pdfLink = ZU.xpathText(doc, '//a[contains(@class, "button--pdf")]/@href');
if (pdfLink) {
item.attachments.push({
title: "Fulltext PDF",
url: pdfLink,
mimeType: "application/pdf"
});
}
item.complete();
}
function scrapeCase(doc, url) {
var item = new Zotero.Item('case');
// court
item.court = scrapeData.Gericht;
// if there is additional information about the body inside the court (starting with a number), disregard it
// examples: BGH 1. Zivilsenat, LG Köln 26. Zivilkammer
var m = item.court.match(/^[A-Za-zÖöÄäÜüß ]+/);
if (m) item.court = ZU.trimInternal(m[0]);
// add jurisdiction to item.extra - in accordance with citeproc-js - for compatability with Zotero-MLZ
item.extra = "";
if (item.court.indexOf('EuG') === 0) {
item.extra += "jurisdiction: europa.eu";
}
else {
item.extra += "jurisdiction: de";
}
// date
var myDateString = scrapeData.Entscheidungsdatum;
if (myDateString) {
item.dateDecided = myDateString.replace(/(\d\d?)\.\s*(\d\d?)\.\s*(\d\d\d\d)/, "$3-$2-$1");
}
// docketNumber
item.docketNumber = scrapeData.Aktenzeichen;
// type of decision. Save this in item.extra according to citeproc-js
var decisionType = scrapeData.Dokumenttyp;
if (/(Beschluss)|Beschl\./i.test(decisionType)) {
item.extra += "\ngenre: Beschl.";
}
else if (/(Urteil)|(Urt\.)/i.test(decisionType)) {
item.extra += "\ngenre: Urt.";
}
// name of decision (caseName) if availabe
// since the CSL stylesheet does not have a "caseName" property, but uses only "title" we have to use other field => item.history (=CSL.references)
// also, item.caseName and item.title are identical in Zotero. Therefore, we should not use item.caseName at all
var caseName = scrapeData.Entscheidungsname;
item.title = item.court + ", " + myDateString + " - " + item.docketNumber;
if (caseName) {
item.shortTitle = caseName;
item.title += " - " + caseName;
}
finalize(doc, url, item);
}
function doWeb(doc, url) {
var myType = detectWeb(doc, url);
if (myType == 'case') {
scrapeCase(doc, url);
}
else {
scrape(doc, url, myType);
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.juris.de/r3/search?query=DOKNR%3ASBLU000136614",
"items": [
{
"itemType": "journalArticle",
"creators": [
{
"firstName": "Nina",
"lastName": "Nestler",
"creatorType": "author"
}
],
"notes": [
{
"note": "<h2>Additional Metadata</h2><h3>Normen</h3><p>KrWaffKontrG, AWG, StGB</p>"
}
],
"tags": [],
"seeAlso": [],
"attachments": [
{
"title": "Juris Permalink",
"snapshot": false
},
{
"title": "Fulltext PDF",
"mimeType": "application/pdf"
}
],
"title": "Der Schutz der äußeren Sicherheit Deutschlands durch das Strafrecht",
"date": "2013",
"publicationTitle": "Zeitschrift für die gesamte Strafrechtswissenschaft",
"journalAbbreviation": "ZStW",
"issue": "125",
"pages": "259-298",
"libraryCatalog": "Juris"
}
]
},
{
"type": "web",
"url": "https://www.juris.de/r3/search?query=DOKNR%3ASILU000241514",
"items": [
{
"itemType": "journalArticle",
"creators": [
{
"firstName": "Michael",
"lastName": "Fricke",
"creatorType": "author"
},
{
"firstName": "Martin",
"lastName": "Gerecke",
"creatorType": "author"
}
],
"notes": [
{
"note": "<h2>Additional Metadata</h2><h3>Normen</h3><p>Art 5 GG, Art 10 MRK, § 53 Abs 1 Nr 5 StPO, § 97 Abs 5 StPO, § 383 Abs 1 Nr 5 ZPO ... mehr</p>"
}
],
"tags": [],
"seeAlso": [],
"attachments": [
{
"title": "Juris Permalink",
"snapshot": false
},
{
"title": "Fulltext PDF",
"mimeType": "application/pdf"
}
],
"title": "Informantenschutz und Informantenhaftung",
"date": "2014",
"publicationTitle": "Archiv für Presserecht",
"journalAbbreviation": "AfP",
"pages": "293-299",
"libraryCatalog": "Juris"
}
]
},
{
"type": "web",
"url": "https://www.juris.de/r3/search?query=DOKNR%3AKORE316642014",
"items": [
{
"itemType": "case",
"creators": [],
"notes": [
{
"note": "<h2>Additional Metadata</h2><h3>Normen</h3><p>§ 101 Abs 2 S 1 Nr 3 UrhG, § 101 Abs 9 S 1 UrhG, § 91 Abs 1 S 1 ZPO</p><h3>Titel</h3><p>Urheberrechtsverletzung im Internet: Erstattungsfähigkeit der Kosten des Verfahrens gegen einen Internet-Provider auf Auskunft über die Inhaber bestimmter IP-Adressen - Deus Ex</p>"
}
],
"tags": [],
"seeAlso": [],
"attachments": [
{
"title": "Juris Permalink",
"snapshot": false
},
{
"title": "Fulltext PDF",
"mimeType": "application/pdf"
}
],
"court": "BGH",
"extra": "jurisdiction: de\ngenre: Beschl.",
"dateDecided": "2014-05-15",
"docketNumber": "I ZB 71/13",
"shortTitle": "Deus Ex",
"caseName": "BGH, 15.05.2014 - I ZB 71/13 - Deus Ex"
}
]
},
{
"type": "web",
"url": "https://www.juris.de/r3/search?query=DOKNR%3ASBLU000100614",
"items": [
{
"itemType": "journalArticle",
"creators": [
{
"firstName": "Michael",
"lastName": "Halstenberg",
"creatorType": "author"
}
],
"notes": [
{
"note": "<h2>Additional Metadata</h2><h3>Normen</h3><p>§ 69 BauO NW, § 633 BGB, VOB B</p>"
}
],
"tags": [],
"seeAlso": [],
"attachments": [
{
"title": "Juris Permalink",
"snapshot": false
},
{
"title": "Fulltext PDF",
"mimeType": "application/pdf"
}
],
"title": "Die bauaufsichtliche Einführung der Eurocodes - ein Problem für das Vertragsrecht?",
"date": "2014",
"publicationTitle": "Baurecht",
"journalAbbreviation": "BauR",
"pages": "431-442",
"libraryCatalog": "Juris"
}
]
},
{
"type": "web",
"url": "https://www.juris.de/r3/search?query=DOKNR%3AMWRE140003062",
"items": [
{
"itemType": "case",
"creators": [],
"notes": [
{
"note": "<h2>Additional Metadata</h2><h3>Normen</h3><p>§ 71a Abs 1 AsylVfG 1992</p><h3>Titel</h3><p>Behandlung eines Asylantrages als Folgeantrag, der nach Ablehnung eines in einem EU-Mitgliedstaat (hier: Ungarn) gestellten Asylantrages abgelehnt worden war</p>"
}
],
"tags": [],
"seeAlso": [],
"attachments": [
{
"title": "Juris Permalink",
"snapshot": false
},
{
"title": "Fulltext PDF",
"mimeType": "application/pdf"
}
],
"court": "VG Frankfurt",
"extra": "jurisdiction: de\ngenre: Beschl.",
"dateDecided": "2014-11-04",
"docketNumber": "6 L 544/14.A, 6 L 544/14.A (PKH)",
"caseName": "VG Frankfurt, 04.11.2014 - 6 L 544/14.A, 6 L 544/14.A (PKH)"
}
]
},
{
"type": "web",
"url": "https://www.juris.de/r3/search?query=DOKNR%3Ajzs-B2-1422A-1283-1",
"items": [
{
"itemType": "journalArticle",
"creators": [
{
"firstName": "Georg",
"lastName": "Lanfermann",
"creatorType": "author"
},
{
"firstName": "Silja",
"lastName": "Maul",
"creatorType": "author"
}
],
"notes": [],
"tags": [],
"seeAlso": [],
"attachments": [
{
"title": "Juris Permalink",
"snapshot": false
},
{
"title": "Fulltext PDF",
"mimeType": "application/pdf"
}
],
"title": "Maßnahmenpaket der Europäischen Kommission zum Gesellschaftsrecht und Corporate Governance",
"date": "2014",
"publicationTitle": "Betriebs-Berater",
"journalAbbreviation": "BB",
"pages": "1283-1294",
"libraryCatalog": "Juris"
}
]
},
{
"type": "web",
"url": "https://www.juris.de/r3/search?query=DOKNR%3AJURE140017979",
"items": [
{
"itemType": "case",
"creators": [],
"notes": [
{
"note": "<h2>Additional Metadata</h2><h3>Normen</h3><p>§ 143 Abs 1 S 1 InsO, § 133 InsO</p><h3>Titel</h3><p>Anspruch des Insolvenzverwalters auf Rückgewähr der Leistungen nach Insolvenzanfechtung</p>"
}
],
"tags": [],
"seeAlso": [],
"attachments": [
{
"title": "Juris Permalink",
"snapshot": false
},
{
"title": "Fulltext PDF",
"mimeType": "application/pdf"
}
],
"court": "LG Köln",
"extra": "jurisdiction: de\ngenre: Urt.",
"dateDecided": "2014-10-22",
"docketNumber": "26 O 142/13",
"caseName": "LG Köln, 22.10.2014 - 26 O 142/13"
}
]
},
{
"type": "web",
"url": "https://www.juris.de/r3/search?query=DOKNR%3Ajzs-B2-1401A-3-1",
"items": [
{
"itemType": "journalArticle",
"creators": [
{
"firstName": "Christoph",
"lastName": "Thole",
"creatorType": "author"
},
{
"firstName": "Aljoscha",
"lastName": "Schmidberger",
"creatorType": "author"
}
],
"notes": [],
"tags": [],
"seeAlso": [],
"attachments": [
{
"title": "Juris Permalink",
"snapshot": false
},
{
"title": "Fulltext PDF",
"mimeType": "application/pdf"
}
],
"title": "Die Insolvenzanfechtung von (überhöhten) Gehältern und Vergütungen von Geschäftsleitern und Sanierungsberatern",
"date": "2014",
"publicationTitle": "Betriebs-Berater",
"journalAbbreviation": "BB",
"pages": "3-8",
"libraryCatalog": "Juris"
}
]
},
{
"type": "web",
"url": "https://www.juris.de/r3/search?query=DOKNR%3AKORE310852014",
"items": [
{
"itemType": "case",
"creators": [],
"notes": [
{
"note": "<h2>Additional Metadata</h2><h3>Normen</h3><p>§ 97 Abs 1 S 1 UrhG</p><h3>Titel</h3><p>Urheberrechtsverletzung durch Teilnahme an einer Internet-Musiktauschbörse; Haftung des Internetanschlussinhabers für Rechtsverletzungen volljähriger Familienangehöriger; tatsächliche Vermutung für eine Täterschaft des Anschlussinhabers und Umfang dessen sekundärer Darlegungslast - BearShare</p>"
}
],
"tags": [],
"seeAlso": [],
"attachments": [
{
"title": "Juris Permalink",
"snapshot": false
},
{
"title": "Fulltext PDF",
"mimeType": "application/pdf"
}
],
"court": "BGH",
"extra": "jurisdiction: de\ngenre: Urt.",
"dateDecided": "2014-01-08",
"docketNumber": "I ZR 169/12",
"shortTitle": "BearShare",
"caseName": "BGH, 08.01.2014 - I ZR 169/12 - BearShare"
}
]
},
{
"type": "web",
"url": "https://www.juris.de/r3/search?query=DOKNR%3AKORE570922014",
"items": [
{
"itemType": "case",
"creators": [],
"notes": [
{
"note": "<h2>Additional Metadata</h2><h3>Normen</h3><p>EGRL 29/2001 Art 3 Abs 2, EGRL 29/2001 Art 5 Abs 1, EGRL 29/2001 Art 5 Abs 2 Buchst b, EGRL 29/2001 Art 8 Abs 2, EGRL 29/2001 Art 8 Abs 3 ... mehr</p><h3>Titel</h3><p>Auslegung der Urheberrechtsrichtlinie auf Vorabentscheidungsersuchen eines österreichischen Gerichts: Gerichtliche Anordnung einer unbestimmten Website-Zugangssperrung gegenüber einem Anbieter von Internetzugangsdiensten wegen Urheberrechtsverletzungen</p>"
}
],
"tags": [],
"seeAlso": [],
"attachments": [
{
"title": "Juris Permalink",
"snapshot": false
},
{
"title": "Fulltext PDF",
"mimeType": "application/pdf"
}
],
"court": "EuGH",
"extra": "jurisdiction: europa.eu\ngenre: Urt.",
"dateDecided": "2014-03-27",
"docketNumber": "C-314/12",
"caseName": "EuGH, 27.03.2014 - C-314/12"
}
]
},
{
"type": "web",
"url": "https://www.juris.de/r3/search?query=DOKNR%3AKORE307572013",
"items": [
{
"itemType": "case",
"creators": [],
"notes": [
{
"note": "<h2>Additional Metadata</h2><h3>Normen</h3><p>§ 832 Abs 1 BGB, § 19a UrhG, § 78 Abs 1 Nr 1 UrhG, § 85 Abs 1 S 1 UrhG, § 97 UrhG</p><h3>Titel</h3><p>Urheberrechtsverletzung im Internet: Grenzen der Aufsichtspflicht von Eltern eines 13-jährigen Kindes hinsichtlich des Verbots der Teilnahme an Internet-Tauschbörsen - Morpheus</p>"
}
],
"tags": [],
"seeAlso": [],
"attachments": [
{
"title": "Juris Permalink",
"snapshot": false
},
{
"title": "Fulltext PDF",
"mimeType": "application/pdf"
}
],
"court": "BGH",
"extra": "jurisdiction: de\ngenre: Urt.",
"dateDecided": "2012-11-15",
"docketNumber": "I ZR 74/12",
"shortTitle": "Morpheus",
"caseName": "BGH, 15.11.2012 - I ZR 74/12 - Morpheus"
}
]
}
]
/** END TEST CASES **/
100Martin Meyerhoff, Philipp Zumstein^https?://www\.welt\.de/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2011-2019 Martin Meyerhoff, Philipp Zumstein
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
/*
"Multiple" doesn't work on the search pages, because that's another host. However, every other page does it:
http://www.welt.de/themen/Fukushima/
http://www.welt.de/wirtschaft/
http://www.welt.de/wirtschaft/article12962920/Krankenkassen-werfen-Aerzten-Gewinnstreben-vor.html
*/
function detectWeb(doc, _url) {
if (ZU.xpathText(doc, '//meta[@property="og:type"]/@content') == "article") {
Zotero.debug("newspaperArticle");
return "newspaperArticle";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function scrape(doc, url) {
var data = ZU.xpathText(doc, '//script[@type="application/ld+json"]');
var json = JSON.parse(data);
// Z.debug(json);
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
// translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
item.date = json.datePublished;
if (item.creators.length == 0) {
item.creators.push(ZU.cleanAuthor(json.author.name, "author"));
}
if (json.headline) {
item.title = json.headline;
Z.debug(json.headline);
}
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.itemType = "newspaperArticle";
trans.doWeb(doc, url);
});
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = ZU.xpath(doc, '//h4/a[@data-qa="Teaser.Link"]');
for (var i = 0; i < rows.length; i++) {
var href = rows[i].href;
var title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) return;
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
}
else {
scrape(doc, url);
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.welt.de/wirtschaft/article12962920/Krankenkassen-werfen-Aerzten-Gewinnstreben-vor.html",
"items": [
{
"itemType": "newspaperArticle",
"title": "Gesundheit: Krankenkassen werfen Ärzten Gewinnstreben vor",
"creators": [
{
"firstName": "Philipp",
"lastName": "Neumann",
"creatorType": "author"
}
],
"date": "2011-03-26T06:50:04Z",
"abstractNote": "Die Chefin des Krankenkassenverbands Doris Pfeiffer fordert den Gesundheitsminister auf, überschüssiges Geld im Gesundheitsfonds zurückzugegeben.",
"libraryCatalog": "www.welt.de",
"publicationTitle": "DIE WELT",
"shortTitle": "Gesundheit",
"url": "https://www.welt.de/wirtschaft/article12962920/Krankenkassen-werfen-Aerzten-Gewinnstreben-vor.html",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [
"Doris",
"Kliniken",
"Krankenkassen",
"Pfeiffer"
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.welt.de/wirtschaft/",
"items": "multiple"
}
]
/** END TEST CASES **/
100Adam Crymble^https?://(www\.)?archivescanada\.ca/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2019 Adam Crymble
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, _url) {
if (doc.location.href.match("RouteRqst")) {
return "multiple";
}
else if (doc.location.href.match("ItemDisplay")) {
return "book";
}
return false;
}
function associateData(newItem, dataTags, field, zoteroField) {
if (dataTags[field]) {
newItem[zoteroField] = dataTags[field];
}
}
function scrape(doc, _url) {
var dataTags = {};
var tagsContent = [];
var cainNo;
var newItem = new Zotero.Item("book");
var data = doc.evaluate('//td/p', doc, null, XPathResult.ANY_TYPE, null);
var dataCount = doc.evaluate('count (//td/p)', doc, null, XPathResult.ANY_TYPE, null);
for (i = 0; i < dataCount.numberValue; i++) {
let data1 = data.iterateNext().textContent.replace(/^\s*|\s*$/g, '').split(":");
let fieldTitle = data1[0].replace(/\s+/g, '');
if (fieldTitle == "PROVENANCE") {
var multiAuthors = data1[1].split(/\n/);
for (var j = 0; j < multiAuthors.length; j++) {
if (multiAuthors[j].match(",")) {
var authorName = multiAuthors[j].replace(/^\s*|\s*$/g, '').split(",");
authorName[0] = authorName[0].replace(/\s+/g, '');
dataTags.PROVENANCE = (authorName[1] + (" ") + authorName[0]);
newItem.creators.push(Zotero.Utilities.cleanAuthor(dataTags.PROVENANCE, "author"));
}
else {
newItem.creators.push({ lastName: multiAuthors[j].replace(/^\s*|\s*$/g, ''), creatorType: "creator" });
}
}
}
else if (fieldTitle == "SUBJECTS" | fieldTitle == "MATIÈRES") {
tagsContent = data1[1].split(/\n/);
}
else {
dataTags[fieldTitle] = data1[1];
}
}
if (doc.evaluate('//tr[3]/td/table/tbody/tr[1]/td/table/tbody/tr[2]/td/table/tbody/tr/td[1]', doc, null, XPathResult.ANY_TYPE, null).iterateNext()) {
cainNo = doc.evaluate('//tr[3]/td/table/tbody/tr[1]/td/table/tbody/tr[2]/td/table/tbody/tr/td[1]', doc, null, XPathResult.ANY_TYPE, null).iterateNext().textContent;
newItem.archiveLocation = cainNo.replace(/^\s*|\s*$/g, '');
}
for (var i = 0; i < tagsContent.length; i++) {
newItem.tags[i] = tagsContent[i].replace(/^\s*|\s*$/g, '');
}
associateData(newItem, dataTags, "TITLE", "title");
associateData(newItem, dataTags, "REPOSITORY", "repository");
associateData(newItem, dataTags, "RETRIEVALNUMBER", "callNumber");
associateData(newItem, dataTags, "DATES", "date");
associateData(newItem, dataTags, "SCOPEANDCONTENT", "abstractNote");
associateData(newItem, dataTags, "LANGUAGE", "language");
associateData(newItem, dataTags, "LANGUE", "language");
associateData(newItem, dataTags, "TITRE", "title");
associateData(newItem, dataTags, "CENTRED'ARCHIVES", "repository");
associateData(newItem, dataTags, "NUMÉROD'EXTRACTION", "callNumber");
associateData(newItem, dataTags, "PORTÉEETCONTENU", "abstractNote");
newItem.url = doc.location.href;
newItem.complete();
}
function doWeb(doc, url) {
var articles = [];
if (detectWeb(doc, url) == "multiple") {
var items = {};
var titles = doc.evaluate('//td[3]/a', doc, null, XPathResult.ANY_TYPE, null);
var nextTitle;
while (nextTitle = titles.iterateNext()) { // eslint-disable-line no-cond-assign
items[nextTitle.href] = nextTitle.textContent;
}
Zotero.selectItems(items, function (items) {
if (!items) return;
for (var i in items) {
articles.push(i);
}
Zotero.Utilities.processDocuments(articles, scrape);
});
}
else {
scrape(doc, url);
}
}
100Philipp Zumstein^https?://www\.nzherald\.co\.nz/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2017 Philipp Zumstein
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes("/search") && getSearchResults(doc, true)) {
return "multiple";
}
else if (url.includes("/news/article.cfm")) {
return "newspaperArticle";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('article.result-item a[href*="/news/article.cfm"]');
for (var i = 0; i < rows.length; i++) {
var href = rows[i].href;
var title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) return;
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
// translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
item.ISSN = "1170-0777";
// EM looks at byline for author which does not work well here;
// thus we delete this and do it here again properly
item.creators = [];
var author = text(doc, '.byline.has-author .author');
if (!author) {
var firstElement = text(doc, '#article-content p.element');
if (firstElement && firstElement.includes('By')) {
author = firstElement;
}
}
if (author) {
item.creators.push(ZU.cleanAuthor(author.replace('By', ''), "author"));
}
item.url = attr(doc, 'link[rel=canonical]', 'href');
if (item.language) {
item.language = item.language.replace('_', '-');
}
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.itemType = "newspaperArticle";
trans.addCustomFields({
language: 'language',
'article:section': 'section'
});
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://www.nzherald.co.nz/world/news/article.cfm?c_id=2&objectid=11892211",
"items": [
{
"itemType": "newspaperArticle",
"title": "China unveils its answer to US Reaper drone - how does it compare?",
"creators": [
{
"firstName": "Stephen",
"lastName": "Chen",
"creatorType": "author"
}
],
"date": "2017-07-18T02:45:22Z",
"ISSN": "1170-0777",
"abstractNote": "A production model of China's heavy military drone has made a successful flight.",
"language": "en-NZ",
"libraryCatalog": "www.nzherald.co.nz",
"publicationTitle": "NZ Herald",
"section": "World",
"url": "http://www.nzherald.co.nz/world/news/article.cfm?c_id=2&objectid=11892211",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [
"Asia",
"China",
"Front Page - Top Stories"
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.nzherald.co.nz/technology/news/article.cfm?c_id=5&objectid=11891847",
"items": [
{
"itemType": "newspaperArticle",
"title": "Data drones a sign of the times",
"creators": [
{
"firstName": "James",
"lastName": "Penn",
"creatorType": "author"
}
],
"date": "2017-07-19T18:00:00Z",
"ISSN": "1170-0777",
"abstractNote": "New tech could have farmers checking the state of their farm before getting out of bed.",
"language": "en-NZ",
"libraryCatalog": "www.nzherald.co.nz",
"publicationTitle": "NZ Herald",
"section": "Business, Technology",
"url": "http://www.nzherald.co.nz/business/news/article.cfm?c_id=3&objectid=11891847",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [
"Agribusiness Report",
"Agricultural Services",
"The Country"
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.nzherald.co.nz/technology/news/article.cfm?c_id=5&objectid=11892937",
"items": [
{
"itemType": "newspaperArticle",
"title": "Nanogirl Michelle Dickinson: Getaway without the long-haul flight",
"creators": [
{
"firstName": "Michelle",
"lastName": "Dickinson",
"creatorType": "author"
}
],
"date": "2017-07-21T17:00:00Z",
"ISSN": "1170-0777",
"abstractNote": "COMMENT: The future of air travel is faster and quieter.",
"language": "en-NZ",
"libraryCatalog": "www.nzherald.co.nz",
"publicationTitle": "NZ Herald",
"section": "Technology",
"shortTitle": "Nanogirl Michelle Dickinson",
"url": "http://www.nzherald.co.nz/technology/news/article.cfm?c_id=5&objectid=11892937",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [
"Opinion",
"Science"
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.nzherald.co.nz/nz/news/article.cfm?c_id=1&objectid=11893407",
"items": [
{
"itemType": "newspaperArticle",
"title": "Steve Braunias: The Secret Diary of Todd Barclay",
"creators": [
{
"firstName": "Steve",
"lastName": "Braunias",
"creatorType": "author"
}
],
"date": "2017-07-21T17:00:00Z",
"ISSN": "1170-0777",
"abstractNote": "Steve Braunias takes a look at Todd Barclay's secret diary",
"language": "en-NZ",
"libraryCatalog": "www.nzherald.co.nz",
"publicationTitle": "NZ Herald",
"section": "New Zealand",
"shortTitle": "Steve Braunias",
"url": "http://www.nzherald.co.nz/nz/news/article.cfm?c_id=1&objectid=11893407",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [
"Australasia",
"Front Page - Top Stories",
"New Zealand",
"Opinion",
"Politics",
"WC - Opinion"
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.nzherald.co.nz/search/hobbits/?type=article,image.gallery,video.other&c_id=2",
"items": "multiple"
}
]
/** END TEST CASES **/
100Piyush Srivastava^https?://(theoryofcomputing\.org|toc\.cse\.iitk\.ac\.in|www\.cims\.nyu\.edu/~regev/toc|toc\.ilab\.sztaki\.hu|toc\.nada\.kth\.se|tocmirror\.cs\.tau\.ac\.il)/articles/[vg].*(/|html?)$/*
Copyright 2013, Piyush Srivastava.
This program is free software: you can redistribute it and/or modify it
under the terms of the GNU Affero General Public License as published by the
Free Software Foundation, either version 3 of the License, or (at your
option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License
for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/*
Theory of Computing translator
*****************************
The Theory of Computing journal has mirror sites located at the following
domains:
1) theoryofcomputing.org
2) toc.cse.iitk.ac.in
3) toc.nada.kth.se
4) toc.ilab.sztaki.hu
5) tocmirror.cs.tau.ac.il
6) www.cims.nyu.edu/~regev/toc/
It has two kinds of articles, "Graduate Surveys", which their provided BibTeX
classes regard as "books" and regular "Journal Articles". The structure of the
URL for the graduate survey looks like
DOMAIN/articles/gs[0-9]{3}/
while that of the articles looks like
DOMAIN/articles/v[0-9]{3}a{0-9]{3}/.
These formats are used by detectWeb to find out whether we are looking at a
graduate survey ("Book") or a journal article.
The theory of computing journal provides the PDF file for a given article (say
gs001) at the url DOMAIN/article/gs001/gs001.pdf.
*/
// A Regexp for extracting the Domain
var surveyRegexp = new RegExp("articles/(gs[^/]+)");
var journalRegexp = new RegExp("articles/(v[^/]+)");
function detectWeb(doc, url) {
if (surveyRegexp.test(url)) return "book";
else return "journalArticle";
}
function doWeb(doc, url) {
var typeRegExp;
var type = detectWeb(doc, url);
// Select the right regexp according to the article type
if (type == "journalArticle") typeRegExp = journalRegexp;
else typeRegExp = surveyRegexp;
var urlData = typeRegExp.exec(url);
// urlData is an Array of three elements, with the element at index 1 containg the
// base domain of the mirror being accesses, and the element at index 2
// containing the article ID.
var articleID = urlData[1];
// We now start constructing the Zoetro item
var newItem = new Zotero.Item(type);
// Store the snapshot and the PDF file
newItem.attachments.push({
title: "Theory of Computing Snapshot", document: doc
});
var pdfLink = articleID + ".pdf";
newItem.attachments.push({
title: "Theory of computing Full Text PDF",
mimeType: "application/pdf",
url: pdfLink
});
// Get the article topLine
var topLine = ZU.xpathText(doc, '//div[@id="articletopline"]');
// Get the article publication date lines
var pubDateLines = ZU.xpathText(doc, '//div[@id="articledates"]');
// Get the article copyright line (to determine authors)
// This seems the most consistent way of determining the authors for this
// journal.
var authorLine = ZU.xpathText(doc, '//div[@id="copyright"]/a[1]');
var keywordLine = ZU.xpathText(doc, '(//div[@class="hang"])[3]');
var DOI = ZU.xpathText(doc, '//div[@id="doi"]');
// Now start filling up data
// Title
var title = ZU.xpathText(doc, '//div[@id="articletitle"]');
if (!title) title = ZU.xpathText(doc, '//div[@id="title"]');
newItem.title = title;
// DOI and URL
newItem.DOI = ZU.cleanDOI(DOI);
newItem.url = url;
// Publcication date line
if (pubDateLines) {
var pubDateRegexp = /Published:\s+(\w+\s+[0-9]+(?:,|\s)+[0-9]+)/gm;
newItem.date = pubDateRegexp.exec(pubDateLines)[1];
// This also contain page information for surveys
if (type == "book") {
var pageNum = /([0-9]+)\s+pages/.exec(pubDateLines)[1];
newItem.numPages = pageNum;
}
}
// Keywords
if (keywordLine) {
let keywords = ZU.trimInternal(/Keywords:\s+(.*)/.exec(keywordLine)[1]);
let keywordList = keywords.split(/,\s+/);
newItem.tags = keywordList;
}
// Author
if (authorLine) {
authorLine = ZU.trimInternal(authorLine);
let authors = /[^0-9]+[0-9]+\s+(.*)/.exec(authorLine)[1];
authors = authors.replace(/,?\s+and\s+/, ", ");
let authorList = authors.split(/\s*,\s+/);
for (let author in authorList) {
newItem.creators.push(ZU.cleanAuthor(authorList[author], "author"));
}
}
// Article number etc.
if (topLine) {
topLine = ZU.trimInternal(topLine);
if (type == "book") {
let number = /Graduate Surveys\s+([0-9]+)/.exec(topLine)[1];
newItem.seriesNumber = number;
}
else if (type == "journalArticle") {
let volumeData = /Volume\s+([0-9]+).*Article\s+([0-9]+)\s+pp\.\s+([0-9]+)-([0-9]+)/.exec(topLine);
newItem.volume = volumeData[1];
newItem.number = volumeData[2];
newItem.pages = volumeData[3] + "–" + volumeData[4];
}
}
// Format specific data
if (type == "book") {
newItem.series = "Graduate Surveys";
newItem.publisher = "Theory of Computing Library";
}
if (type == "journalArticle") {
newItem.publicationTitle = "Theory of Computing";
newItem.publisher = "Theory of Computing";
}
newItem.complete();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://theoryofcomputing.org/articles/gs004/",
"items": [
{
"itemType": "book",
"title": "Variations on the Sensitivity Conjecture",
"creators": [
{
"firstName": "Pooya",
"lastName": "Hatami",
"creatorType": "author"
},
{
"firstName": "Raghav",
"lastName": "Kulkarni",
"creatorType": "author"
},
{
"firstName": "Denis",
"lastName": "Pankratov",
"creatorType": "author"
}
],
"date": "June 22, 2011",
"DOI": "10.4086/toc.gs.2011.004",
"accessDate": "CURRENT_TIMESTAMP",
"libraryCatalog": "Theory of Computing",
"numPages": "27",
"publisher": "Theory of Computing Library",
"series": "Graduate Surveys",
"seriesNumber": "4",
"url": "http://theoryofcomputing.org/articles/gs004/",
"attachments": [
{
"title": "Theory of Computing Snapshot"
},
{
"title": "Theory of computing Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
"block sensitivity",
"complexity measures of Boolean functions",
"sensitivity"
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://toc.nada.kth.se/articles/v009a013/index.html",
"items": [
{
"itemType": "journalArticle",
"title": "Optimal Hitting Sets for Combinatorial Shapes",
"creators": [
{
"firstName": "Aditya",
"lastName": "Bhaskara",
"creatorType": "author"
},
{
"firstName": "Devendra",
"lastName": "Desai",
"creatorType": "author"
},
{
"firstName": "Srikanth",
"lastName": "Srinivasan",
"creatorType": "author"
}
],
"date": "May 25, 2013",
"DOI": "10.4086/toc.2013.v009a013",
"accessDate": "CURRENT_TIMESTAMP",
"libraryCatalog": "Theory of Computing",
"number": "13",
"pages": "441–470",
"publicationTitle": "Theory of Computing",
"publisher": "Theory of Computing",
"url": "http://toc.nada.kth.se/articles/v009a013/index.html",
"volume": "9",
"attachments": [
{
"title": "Theory of Computing Snapshot"
},
{
"title": "Theory of computing Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
"derandomization",
"expanders",
"explicit construction",
"hitting sets",
"perfect hashing"
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://tocmirror.cs.tau.ac.il/articles/gs003/index.html",
"items": [
{
"itemType": "book",
"title": "Selected Results in Additive Combinatorics: An Exposition",
"creators": [
{
"firstName": "Emanuele",
"lastName": "Viola",
"creatorType": "author"
}
],
"date": "May 15, 2011",
"DOI": "10.4086/toc.gs.2011.003",
"accessDate": "CURRENT_TIMESTAMP",
"libraryCatalog": "Theory of Computing",
"numPages": "15",
"publisher": "Theory of Computing Library",
"series": "Graduate Surveys",
"seriesNumber": "3",
"shortTitle": "Selected Results in Additive Combinatorics",
"url": "http://tocmirror.cs.tau.ac.il/articles/gs003/index.html",
"attachments": [
{
"title": "Theory of Computing Snapshot"
},
{
"title": "Theory of computing Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
"additive combinatorics",
"linearity testing"
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://toc.ilab.sztaki.hu/articles/v005a002/index.html",
"items": [
{
"itemType": "journalArticle",
"title": "Deterministic History-Independent Strategies for Storing Information on Write-Once Memories",
"creators": [
{
"firstName": "Tal",
"lastName": "Moran",
"creatorType": "author"
},
{
"firstName": "Moni",
"lastName": "Naor",
"creatorType": "author"
},
{
"firstName": "Gil",
"lastName": "Segev",
"creatorType": "author"
}
],
"date": "May 23, 2009",
"DOI": "10.4086/toc.2009.v005a002",
"accessDate": "CURRENT_TIMESTAMP",
"libraryCatalog": "Theory of Computing",
"number": "2",
"pages": "43–67",
"publicationTitle": "Theory of Computing",
"publisher": "Theory of Computing",
"url": "http://toc.ilab.sztaki.hu/articles/v005a002/index.html",
"volume": "5",
"attachments": [
{
"title": "Theory of Computing Snapshot"
},
{
"title": "Theory of computing Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
"conflict resolution",
"expander graphs",
"history-independent",
"information-theoretic security",
"tamper-evident",
"vote storage mechanism",
"write-once memory"
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://toc.nada.kth.se/articles/v009a009/index.html",
"items": [
{
"itemType": "journalArticle",
"title": "Quantum Money from Hidden Subspaces",
"creators": [
{
"firstName": "Scott",
"lastName": "Aaronson",
"creatorType": "author"
},
{
"firstName": "Paul",
"lastName": "Christiano",
"creatorType": "author"
}
],
"date": "March 11, 2013",
"DOI": "10.4086/toc.2013.v009a009",
"libraryCatalog": "Theory of Computing",
"pages": "349–401",
"publicationTitle": "Theory of Computing",
"url": "http://toc.nada.kth.se/articles/v009a009/index.html",
"volume": "9",
"attachments": [
{
"title": "Theory of Computing Snapshot"
},
{
"title": "Theory of computing Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
"electronic cash",
"multivariate polynomials",
"quantum cryptography",
"quantum lower bounds"
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.cims.nyu.edu/~regev/toc/articles/gs003/",
"items": [
{
"itemType": "book",
"title": "Selected Results in Additive Combinatorics: An Exposition",
"creators": [
{
"firstName": "Emanuele",
"lastName": "Viola",
"creatorType": "author"
}
],
"date": "May 15, 2011",
"DOI": "10.4086/toc.gs.2011.003",
"accessDate": "CURRENT_TIMESTAMP",
"libraryCatalog": "Theory of Computing",
"numPages": "15",
"publisher": "Theory of Computing Library",
"series": "Graduate Surveys",
"seriesNumber": "3",
"shortTitle": "Selected Results in Additive Combinatorics",
"url": "http://www.cims.nyu.edu/~regev/toc/articles/gs003/",
"attachments": [
{
"title": "Theory of Computing Snapshot"
},
{
"title": "Theory of computing Full Text PDF",
"mimeType": "application/pdf"
}
],
"tags": [
"additive combinatorics",
"linearity testing"
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Ace Strong <acestrong@gmail.com>^https?://[ds]\.(g\.)?wanfangdata\.com\.cn/*
Wanfang Data Translator
Copyright (C) 2010 TAO Cheng, acestrong@gmail.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
// #######################
// ##### Sample URLs #####
// #######################
/*
* The starting point for an search is the URL below.
* In testing, I tried the following:
*
* - A search listing of journals
* - A search listing of thesis
* - A search listing of conference papers
* - A search listing of foreign literatures(for chinese)
* - A journal paper page
* - A thesis page
* - A conference paper page
* - A foreign literature page
*/
// http://g.wanfangdata.com.cn/Default.aspx
// #################################
// #### Local utility functions ####
// #################################
// sets the rs cookie value to the provided ID and returns the old value
function setCookie(doc, rsId) {
if (!rsId) return null;
var matches = doc.cookie.match(/(?:$|; )rs=([^;]*)/);
var oldCookie = matches ? unescape(matches[1]) : null;
var domain = escape('wanfangdata.com.cn');
var id = escape(rsId);
doc.cookie = 'rs=' + id + ';domain=' + domain;
return oldCookie;
}
function detectCode(url) {
var pattern = /[ds]\.(?:g\.)?wanfangdata\.com\.cn\/([A-Za-z]*?)_/;
if (pattern.test(url)) {
var code = pattern.exec(url)[1];
return code;
}
return null;
}
function detectType(code) {
if (code == "Periodical"
|| code == "OAPaper") {
return "journalArticle";
}
else if (code == "Thesis") {
return "thesis";
}
else if (code == "Conference") {
return "conferencePaper";
}
else if (code == "NSTLHY") {
return "conferencePaper";
}
else if (code == "NSTLQK") {
return "journalArticle";
}
else {
return false;
}
}
function getSearchResults(doc, checkOnly) {
var items = [], found = false,
lis = ZU.xpath(doc, '//li[contains(@class,"title_li")]');
for (var i = 0, n = lis.length; i < n; i++) {
var a = lis[i].getElementsByTagName("a")[1];
var title = ZU.trimInternal(ZU.cleanTags(a.textContent));
var link = a.getAttribute("href").match(/\/([^/]+)\.aspx/)[1];
if (!link) continue;
if (checkOnly) return true;
items[link] = title;
found = true;
}
return found ? items : false;
}
function getItemId(doc) {
var action = ZU.xpathText(doc, '//form[@id="aspnetForm"]/@action');
if (!action) return null;
var id = action.match(/(?:\?|&)ID=([^&]+)/);
if (!id) return null;
return id[1];
}
// #############################
// ##### Scraper functions #####
// #############################
function scrape(doc, id) {
id = '|' + id + '|';
var oldCookie = setCookie(doc, id);
var exportUrl = 'http://s.wanfangdata.com.cn/Export/Export.aspx?scheme=EndNote';
ZU.doGet(exportUrl, function (text) {
var matches = text.match(/<div\s+id=["']export_container["']>((?:.|[\r\n])+?)<\/div>/i);
if (!matches) return;
text = ZU.cleanTags(matches[1].replace(/[\r\n]/g, ''));
var translator = Zotero.loadTranslator('import');
translator.setTranslator('881f60f2-0802-411a-9228-ce5f47b64c7d');
translator.setString(text);
translator.setHandler('itemDone', function (obj, item) {
// author first and last names are mixed up
for (var i = 0, n = item.creators.length; i < n; i++) {
if (!item.creators[i].firstName) continue;
var first = item.creators[i].lastName;
item.creators[i].lastName = item.creators[i].firstName;
item.creators[i].firstName = first;
}
// type is actually DOI
if (item.type) {
item.DOI = item.type;
delete item.type;
}
// tags are messed up
item.tags = [];
item.complete();
});
translator.setHandler('done', function () {
setCookie(doc, oldCookie);
});
translator.translate();
});
}
// #########################
// ##### API functions #####
// #########################
function detectWeb(doc, url) {
if (url.toLowerCase().includes('paper.aspx')
&& getSearchResults(doc, true)
) {
return "multiple";
}
let pattern = /[ds]\.(?:g\.)?wanfangdata\.com\.cn/;
if (pattern.test(url) && getItemId(doc)) {
var code = detectCode(url);
return detectType(code);
}
return false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
// search page
var items = getSearchResults(doc);
Zotero.selectItems(items, function (selectedItems) {
if (!selectedItems) return;
var urls = [];
for (var i in selectedItems) {
urls.push(i);
}
var ids = '|' + urls.join('|') + '|';
scrape(doc, ids);
});
}
else {
var id = getItemId(doc);
scrape(doc, id);
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://d.wanfangdata.com.cn/Periodical_xdqb200902027.aspx",
"items": [
{
"itemType": "journalArticle",
"title": "参考文献管理工具研究",
"creators": [
{
"firstName": "",
"lastName": "余敏",
"creatorType": "author"
},
{
"firstName": "",
"lastName": "朱江",
"creatorType": "author"
},
{
"firstName": "",
"lastName": "丁照蕾",
"creatorType": "author"
}
],
"date": "2009",
"DOI": "10.3969/j.issn.1008-0821.2009.02.027",
"abstractNote": "介绍了参考文献管理的基本方法,对参考文献管理工具的主要功能进行了对比,最后分析了参考文献管理的趋势.",
"archiveLocation": "北京万方数据股份有限公司",
"extra": "Yu Min\nZhu Jiang\nDing Zhaolei",
"issue": "2",
"libraryCatalog": "Wanfang Data",
"pages": "94-98,93",
"publicationTitle": "JOURNAL OF MODERN INFORMATION",
"url": "http://d.wanfangdata.com.cn/Periodical_xdqb200902027.aspx",
"volume": "29",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://d.wanfangdata.com.cn/NSTLQK_NSTL_QKJJ0216348353.aspx",
"items": [
{
"itemType": "journalArticle",
"title": "Zotero: harnessing the power of a personal bibliographic manager.",
"creators": [
{
"firstName": "JT",
"lastName": "Coar",
"creatorType": "author"
},
{
"firstName": "JP",
"lastName": "Sewell",
"creatorType": "author"
}
],
"date": "2010",
"ISBN": "0363-3624",
"abstractNote": "Zotero is a powerful free personal bibliographic manager (PBM) for writers. Use of a PBM allows the writer to focus on content, rather than the tedious details of formatting citations and references. Zotero 2.0 (http://www.zotero.org) has new features including the ability to synchronize citations with the off-site Zotero server and the ability to collaborate and share with others. An overview on how to use the software and discussion about the strengths and limitations are included.",
"accessDate": "CURRENT_TIMESTAMP",
"archiveLocation": "北京万方数据股份有限公司",
"issue": "5",
"libraryCatalog": "Wanfang Data",
"pages": "205-207",
"publicationTitle": "Nurse educator",
"shortTitle": "Zotero",
"url": "http://d.wanfangdata.com.cn/NSTLQK_NSTL_QKJJ0216348353.aspx",
"volume": "35",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://s.wanfangdata.com.cn/Paper.aspx?q=zotero+DBID%3A%28NSTL_QK+OR+NSTL_HY%29&f=d.top",
"items": "multiple"
}
]
/** END TEST CASES **/
100Sonali Gupta^https?://tvbythenumbers\.zap2it\.com//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2017 Sonali Gupta
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/?s=') && getSearchResults(doc, true)) return "multiple";
else if (doc.body.className.includes("single-post")) return "blogPost";
return false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) return;
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
}
else {
scrape(doc, url);
}
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = ZU.xpath(doc, '//div[@class="container container-small"]/article/h2/a');
for (var i = 0; i < rows.length; i++) {
var href = rows[i].href;
var title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
if (item.date) item.date = ZU.strToISO(item.date);
var authors = ZU.xpath(doc, '//a[@rel="author"]');
for (let i = 0; i < authors.length; i++) {
if (authors[i].textContent != 'TV By The Numbers') {
item.creators.push(ZU.cleanAuthor(authors[i].textContent, "author"));
}
}
item.publicationTitle = "TV By The Numbers";
var tags = ZU.xpath(doc, '//a[@rel="tag"]');
item.tags = [];
for (let i = 0; i < tags.length; i++) {
item.tags.push(tags[i].textContent);
}
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.itemType = "blogPost";
trans.doWeb(doc, url);
});
} /** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://tvbythenumbers.zap2it.com/page/20/?s=harry+potter",
"items": "multiple"
},
{
"type": "web",
"url": "http://tvbythenumbers.zap2it.com/daily-ratings/monday-final-ratings-july-3-2017/",
"items": [
{
"itemType": "blogPost",
"title": "‘American Ninja Warrior’ adjusts up: Monday final ratings",
"creators": [
{
"firstName": "Rick",
"lastName": "Porter",
"creatorType": "author"
}
],
"date": "2017-07-06",
"abstractNote": "Final broadcast primetime live + same-day ratings for Monday, July 3, 2017 The top show on a rerun-filled Monday night saw its adults 18-49 rating grow from the preliminary numbers to the finals. &…",
"blogTitle": "TV By The Numbers",
"shortTitle": "‘American Ninja Warrior’ adjusts up",
"url": "http://tvbythenumbers.zap2it.com/daily-ratings/monday-final-ratings-july-3-2017/",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [
"American Ninja Warrior Ratings",
"Battle of the Network Stars Ratings",
"Kevin Can Wait Ratings",
"Life in Pieces Ratings",
"Man With a Plan Ratings",
"Mom Ratings",
"Scorpion Ratings",
"So You Think You Can Dance Ratings",
"Spartan: Ultimate Team Challenge Ratings",
"Supergirl Ratings",
"Superhuman Ratings",
"The Bachelorette Ratings",
"Whose Line is it Anyway Ratings"
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://tvbythenumbers.zap2it.com/sdsdskdh279882992z1/tv-ratings-friday-grimm-constantine-fall-shark-tank-the-amazing-race-last-man-standing-up-cristela-hawaii-five-0-steady/322517/",
"items": [
{
"itemType": "blogPost",
"title": "TV Ratings Friday: ‘Grimm’ & ‘Constantine’ Fall, ‘Shark Tank’, ‘The Amazing Race’ & ‘Last Man Standing’ Up, ‘Cristela’ & ‘Hawaii FIve-0’ Steady",
"creators": [],
"date": "2014-11-01",
"abstractNote": "ABC was number one in adults 18-49 while CBS won with total viewers.",
"blogTitle": "TV By The Numbers",
"shortTitle": "TV Ratings Friday",
"url": "http://tvbythenumbers.zap2it.com/sdsdskdh279882992z1/tv-ratings-friday-grimm-constantine-fall-shark-tank-the-amazing-race-last-man-standing-up-cristela-hawaii-five-0-steady/",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [
"20/20 Ratings",
"America's Next Top Model Ratings",
"Blue Bloods Ratings",
"Constantine Ratings",
"Cristela Ratings",
"Dateline Ratings",
"Gotham Ratings",
"Hawaii Five-0 Ratings",
"Last Man Standing Ratings",
"Shark Tank Ratings",
"The Amazing Race Ratings",
"Utopia Ratings",
"Whose Line is it Anyway Ratings",
"World Series Ratings"
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Philipp Zumstein^https?://(www\.)?tvnz\.co\.nz/one-news//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2017 Philipp Zumstein
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes("/search?") && getSearchResults(doc, true)) {
return "multiple";
}
if (ZU.xpathText(doc, '//meta[@property="og:type"]/@content')) {
return "newspaperArticle";
}
return false;
}
function scrape(doc, url) {
var item = new Zotero.Item("newspaperArticle");
item.title = ZU.xpathText(doc, '//meta[@property="og:title"]/@content');
item.date = ZU.xpathText(doc, '(//div[contains(@class, "storyPage") and h1]//time)[1]');
if (item.date) {
if (item.date.match(/\d\d?:\d\d[pa]m/)) {
item.date = "Today";
}
else if (!item.date.match(/\d\d\d\d/)) {
item.date += " 2017";
}
item.date = ZU.strToISO(item.date);
}
item.abstractNote = ZU.xpathText(doc, '//meta[@property="og:description"]/@content');
var tagString = ZU.xpathText(doc, '//meta[@name="news_keywords"]/@content');
if (tagString) {
item.tags = tagString.split(', ');
}
item.section = ZU.xpathText(doc, '//div[@class="colStorySectionHeader"]/div[@class="tagItem"]/h2');
item.url = ZU.xpathText(doc, '//link[@rel="canonical"]/@href') || url;
item.publicationTitle = "TVNZ";
item.language = "en-NZ";
item.complete();
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = ZU.xpath(doc, '//div[@class="tileContent"]/a[h3]');
for (var i = 0; i < rows.length; i++) {
var href = rows[i].href;
var title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.tvnz.co.nz/one-news/new-zealand/below-average-temperatures-forecast-across-nz-first-half-july",
"items": [
{
"itemType": "newspaperArticle",
"title": "Below average temperatures forecast across NZ for first half of July",
"creators": [],
"date": "2017-07-05",
"abstractNote": "MetService's long-range forecast for this month has colder temperatures than usual.",
"language": "en-NZ",
"libraryCatalog": "TVNZ",
"publicationTitle": "TVNZ",
"section": "New Zealand",
"url": "https://www.tvnz.co.nz/one-news/new-zealand/below-average-temperatures-forecast-across-nz-first-half-july",
"attachments": [],
"tags": [
"new-zealand",
"nzn",
"one-news",
"weather-news"
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.tvnz.co.nz/one-news/new-zealand/watch-stunning-aurora-australis-storm-lights-up-southern-skies",
"items": [
{
"itemType": "newspaperArticle",
"title": "Watch: Stunning Aurora Australis storm lights up southern skies",
"creators": [],
"date": "2017-05-28",
"abstractNote": "A geomagnetic storm made for some incredible photos in the South Island overnight.",
"language": "en-NZ",
"libraryCatalog": "TVNZ",
"publicationTitle": "TVNZ",
"section": "New Zealand",
"shortTitle": "Watch",
"url": "https://www.tvnz.co.nz/one-news/new-zealand/watch-stunning-aurora-australis-storm-lights-up-southern-skies",
"attachments": [],
"tags": [
"breakfast",
"new-zealand",
"space"
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.tvnz.co.nz/one-news/search?q=storm",
"items": "multiple"
}
]
/** END TEST CASES **/
100Philipp Zumstein^https?://(www\.)?thieme-connect\.com/products//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2018 Philipp Zumstein
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
/*
Other example:
https://www.thieme-connect.de/DOI/DOI?10.1055/s-2008-1081006
which does not save as a test
*/
function detectWeb(doc, url) {
if (url.includes('/abstract/') || url.includes('/html/') || url.includes('/DOI/DOI?')) {
return "journalArticle";
}
else if (url.includes('lookinside')) {
return "bookSection";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('a.articleTitle');
for (let i = 0; i < rows.length; i++) {
let href = rows[i].href;
let title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) return;
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, _url) {
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
// delete leading zeros in pages and issue
if (item.pages) {
item.pages = item.pages.replace(/\b0+/g, '');
}
if (item.issue) {
item.issue = item.issue.replace(/\b0+/g, '');
}
if (item.abstractNote) {
item.abstractNote = ZU.cleanTags(item.abstractNote);
}
// add tags manually here
var keywords = text(doc, '.articleKeywords');
if (keywords) {
item.tags = keywords.split('-').map(
value => value.replace(/^\s*(Keywords|Schlüsselwörter)\n/, '').trim()
);
}
item.complete();
});
translator.translate();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.thieme-connect.com/products/ejournals/abstract/10.1055/s-0038-1636965",
"items": [
{
"itemType": "journalArticle",
"title": "Epidemiologische Aspekte zum säkularen Trend bei Übergewicht und Adipositas bei Kindern und Jugendlichen",
"creators": [
{
"firstName": "R.",
"lastName": "Gausche",
"creatorType": "author"
},
{
"firstName": "C.",
"lastName": "Beger",
"creatorType": "author"
},
{
"firstName": "U.",
"lastName": "Spielau",
"creatorType": "author"
},
{
"firstName": "R.",
"lastName": "Pfäffle",
"creatorType": "author"
},
{
"firstName": "A.",
"lastName": "Körner",
"creatorType": "author"
},
{
"firstName": "W.",
"lastName": "Kieß",
"creatorType": "author"
}
],
"date": "2018",
"DOI": "10.1055/s-0038-1636965",
"ISSN": "1865-1739, 2567-6334",
"abstractNote": "Die Datensammlung des Kinderärztenetzwerks CrescNet ermöglicht es, langfristige Veränderungen in der Entwicklung des Body Mass Index (BMI) bei Kindern und Jugendlichen nachzuweisen. Der BMI von Kindern und Jugendlichen liegt 2006 und 2016 deutlich erhöht gegenüber den Vergleichsdaten aus 1995. Für jüngere Kinder kann zwischen 2006 und 2016 eine leichte Abnahme nachgewiesen werden. Für ältere Kinder und Jugendliche besteht nach wie vor ein großer Handlungsbedarf in der Prävention von Übergewicht und in der Therapie von Adipositas. Verhältnisbezogene Präventionsansätze sollten favorisiert werden und mit Hilfe eines Monitorings von BMI in ihrer Wirksamkeit überprüft werden. The data collection CrescNet makes it possible to detect long-term changes of the Body Mass Index (BMI) development in children and adolescents. In 2006 and 2016 the BMI is significant higher than references from 1995 proposed. Only in early childhood a slight decrease of BMI between 2006 and 2016 was visible, whereas the BMI of juveniles and adolescents increased further. For juveniles and adolescents there is still a great need for action in the prevention of overweight and in the therapy of obesity. Settingbased prevention approaches should be favored and their effectiveness should be evaluated by means of monitoring by BMI.",
"issue": "1",
"language": "de",
"libraryCatalog": "www.thieme-connect.com",
"pages": "4-9",
"publicationTitle": "Adipositas - Ursachen, Folgeerkrankungen, Therapie",
"rights": "Schattauer GmbH",
"url": "http://www.thieme-connect.de/DOI/DOI?10.1055/s-0038-1636965",
"volume": "12",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Snapshot"
}
],
"tags": [
{
"tag": "Adipositas bei Kindern und Jugendlichen"
},
{
"tag": "Body Mass Index"
},
{
"tag": "Datensammlung"
},
{
"tag": "Retrospektive Studie"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.thieme-connect.com/products/ejournals/journal/10.1055/s-00034923",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.thieme-connect.com/products/all/search?query=zotero&radius=fulltext&option=AND&clearSavedProfileSearch=true",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.thieme-connect.com/products/ejournals/abstract/10.3415/VCOT-17-01-0018",
"items": [
{
"itemType": "journalArticle",
"title": "Comparison of Radiographic Measurements of the Femur in Yorkshire Terriers with and without Medial Patellar Luxation",
"creators": [
{
"firstName": "Michal",
"lastName": "Žilinčík",
"creatorType": "author"
},
{
"firstName": "Marián",
"lastName": "Hluchý",
"creatorType": "author"
},
{
"firstName": "Ladislav",
"lastName": "Takáč",
"creatorType": "author"
},
{
"firstName": "Valent",
"lastName": "Ledecký",
"creatorType": "author"
}
],
"date": "2018",
"DOI": "10.3415/VCOT-17-01-0018",
"ISSN": "0932-0814, 2567-6911",
"abstractNote": "Objective This article aimed to compare measurements of anatomical angles of the femurs, based on radiography, in Yorkshire Terriers without or with various grades of medial patellar luxation (MPL) based on radiography. Methods The skeletally mature Yorkshire Terrier dogs without MPL and with various grades of MPL were included in this prospective study. Cases with other orthopaedic disorders were excluded. For inclusion of the dog, it was required that standardized digital radiographs of both femurs in craniocaudal and axial directions were available. Measurements of the anatomical lateral proximal femoral angle, anatomical lateral distal femoral angle, femoral varus angle, anteversion angle and femoral inclination angle were performed. Results Forty-two Yorkshire Terriers (84 hindlimbs) were included in the study. They were divided into five groups according to grade of MPL as healthy (n = 12), grade I (n = 9), grade II (n = 44), grade III (n = 10) and grade IV (n = 9) dogs. The anatomical lateral proximal femoral angle and anteversion angle were significantly lower in dogs with grade IV MPL, while anatomical lateral distal femoral angle and femoral varus angle were significantly higher. The femoral inclination angle values did not differ significantly. Clinical Significance Yorkshire Terriers affected with grade IV MPL had severe femoral deformities or femoral varus and external rotation of the distal femur. Reference range can be used as an aid in diagnosis, determining indications and surgical planning for corrective osteotomy.",
"issue": "1",
"journalAbbreviation": "Vet Comp Orthop Traumatol",
"language": "en",
"libraryCatalog": "www.thieme-connect.com",
"pages": "17-22",
"publicationTitle": "Veterinary and Comparative Orthopaedics and Traumatology",
"rights": "Schattauer GmbH Stuttgart",
"url": "http://www.thieme-connect.de/DOI/DOI?10.3415/VCOT-17-01-0018",
"volume": "31",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Snapshot"
}
],
"tags": [
{
"tag": "bone deformity"
},
{
"tag": "dogs"
},
{
"tag": "patellar luxation"
},
{
"tag": "radiography"
}
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.thieme-connect.com/products/ebooks/lookinside/10.1055/b-0034-5719",
"items": [
{
"itemType": "bookSection",
"title": "4 Thorax (Pleura, Lunge)",
"creators": [],
"date": "2012",
"ISBN": "9783131263476 9783131831170",
"abstractNote": "Thieme E-Books & E-Journals",
"bookTitle": "Allgemein- und Viszeralchirurgie essentials",
"edition": "7., vollständig überarbeitete Auflage",
"extra": "DOI: 10.1055/b-0034-5719",
"language": "de",
"libraryCatalog": "www.thieme-connect.com",
"publisher": "Thieme Verlag",
"rights": "© 2012 Georg Thieme Verlag KG",
"url": "https://www.thieme-connect.com/products/ebooks/lookinside/10.1055/b-0034-5719",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Snapshot"
}
],
"tags": [
{
"tag": "Orthopädie- und Unfallchirurgie"
}
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Philipp Zumstein^https?://[^/]*telegraph\.co\.uk//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2017 Philipp Zumstein
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, _url) {
if (ZU.xpathText(doc, '//meta[@property="og:type"]/@content') == "article") {
if (ZU.xpathText(doc, '//meta[@name="tmgads.channel"]/@content') == 'blogs') {
return 'blogPost';
}
else {
return 'newspaperArticle';
}
}
return false;
}
function scrape(doc, url) {
var type = detectWeb(doc, url);
var translator = Zotero.loadTranslator('web');
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
// translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
// set proper item type
item.itemType = type;
// fix title
item.title = item.title.replace(/\s*[-–][^-–]*Telegraph[^-]*$/, '');
// fix newlines in abstract
item.abstractNote = ZU.trimInternal(item.abstractNote);
// keywords
var keywords = ZU.xpathText(doc, '//meta[@name="keywords"]/@content');
if (keywords && keywords.trim()) {
item.tags = keywords.split(/,\s*/);
}
// the author extraction from EM contains also additional info/clutter about persons
// e.g. "Chief Political Correspondent"
// thus, we do here a different scraping method
item.creators = [];
var authors = ZU.xpathText(doc, '//meta[@name="GSAAuthor"]/@content')
|| ZU.xpathText(doc, '//meta[@name="DCSext.author"]/@content');
if (authors) {
let authorsList = authors.split(';');
for (let author of authorsList) {
// clean authors string
// e.g. "By Alex Spillius in Washington"
author = author.replace(/^By /, '').replace(/ in .*/, '');
item.creators.push(ZU.cleanAuthor(author, 'author'));
}
}
if (item.date) {
item.date = ZU.strToISO(item.date);
}
if (item.itemType == "newspaperArticle") {
item.ISSN = "0307-1235";
}
item.language = "en-GB";
item.complete();
});
translator.getTranslatorObject(function (em) {
em.addCustomFields({
'DCSext.articleFirstPublished': 'date'
});
em.doWeb(doc, url);
});
}
function doWeb(doc, url) {
scrape(doc, url);
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://www.telegraph.co.uk/news/worldnews/asia/china/8888909/China-Google-Earth-spots-huge-unidentified-structures-in-Gobi-desert.html",
"items": [
{
"itemType": "newspaperArticle",
"title": "China: Google Earth spots huge, unidentified structures in Gobi desert",
"creators": [
{
"firstName": "Malcolm",
"lastName": "Moore",
"creatorType": "author"
}
],
"date": "2011-11-14",
"ISSN": "0307-1235",
"abstractNote": "Vast, unidentified, structures have been spotted by satellites in the barren Gobi desert, raising questions about what China might be building in a region it uses for its military, space and nuclear programmes.",
"language": "en-GB",
"libraryCatalog": "www.telegraph.co.uk",
"section": "World",
"shortTitle": "China",
"url": "http://www.telegraph.co.uk/news/worldnews/asia/china/8888909/China-Google-Earth-spots-huge-unidentified-structures-in-Gobi-desert.html",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [
"Asia",
"China",
"News",
"World News"
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.telegraph.co.uk/news/2017/05/26/britain-should-pay-brexit-divorce-bill-sake-future-relations/",
"items": [
{
"itemType": "newspaperArticle",
"title": "Britain should pay Brexit divorce bill for the sake of 'future relations' with EU, says Donald Tusk",
"creators": [
{
"firstName": "Gordon",
"lastName": "Rayner",
"creatorType": "author"
}
],
"date": "2017-05-26",
"ISSN": "0307-1235",
"abstractNote": "Donald Tusk has told Britain to pay its Brexit divorce bill for the sake of “future relations” with the EU as he rubbished suggestions that Brussels might end up owing money to the UK.",
"language": "en-GB",
"libraryCatalog": "www.telegraph.co.uk",
"publicationTitle": "The Telegraph",
"url": "http://www.telegraph.co.uk/news/2017/05/26/britain-should-pay-brexit-divorce-bill-sake-future-relations/",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [
"Boris Johnson",
"Brexit",
"Brexit Negotiations",
"Brussels",
"David Davis",
"Divorce",
"Donald Trump",
"Donald Tusk",
"Europe",
"European Commission",
"European Council",
"European Union",
"G7 Summit",
"Jean-Claude Juncker",
"News",
"Politics",
"Standard",
"Terrorism",
"Theresa May"
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.telegraph.co.uk/news/2017/03/26/hong-kong-chief-executive-election-need-know/",
"items": [
{
"itemType": "newspaperArticle",
"title": "The Hong Kong chief executive election: What you need to know",
"creators": [
{
"firstName": "Neil",
"lastName": "Connor",
"creatorType": "author"
}
],
"date": "2017-03-26",
"ISSN": "0307-1235",
"abstractNote": "A committee will decide Hong Kong’s new leader on Sunday in the first chief executive election since mass protests brought the city to a standstill in 2014.",
"language": "en-GB",
"libraryCatalog": "www.telegraph.co.uk",
"publicationTitle": "The Telegraph",
"shortTitle": "The Hong Kong chief executive election",
"url": "http://www.telegraph.co.uk/news/2017/03/26/hong-kong-chief-executive-election-need-know/",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [
"Asia",
"China",
"Hong Kong",
"News",
"Standard",
"World News"
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.telegraph.co.uk/news/worldnews/barackobama/6262938/Barack-Obama-cancels-meeting-with-Dalai-Lama-to-keep-China-happy.html",
"items": [
{
"itemType": "newspaperArticle",
"title": "Barack Obama cancels meeting with Dalai Lama 'to keep China happy'",
"creators": [
{
"firstName": "Alex",
"lastName": "Spillius",
"creatorType": "author"
}
],
"date": "2009-10-05",
"ISSN": "0307-1235",
"abstractNote": "President Barack Obama has refused to meet the Dalai Lama in Washington this week in a move to curry favour with the Chinese.",
"language": "en-GB",
"libraryCatalog": "www.telegraph.co.uk",
"section": "World",
"url": "http://www.telegraph.co.uk/news/worldnews/barackobama/6262938/Barack-Obama-cancels-meeting-with-Dalai-Lama-to-keep-China-happy.html",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [
"Barack Obama",
"News",
"World News"
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.telegraph.co.uk/news/2017/06/09/election-results-2017-theresa-may-clings-power-needs-support/",
"items": [
{
"itemType": "newspaperArticle",
"title": "Election results 2017: Theresa May says sorry to defeated Tory candidates as she eyes deal with DUP",
"creators": [
{
"firstName": "Laura",
"lastName": "Hughes",
"creatorType": "author"
},
{
"firstName": "Jack",
"lastName": "Maidment",
"creatorType": "author"
},
{
"firstName": "Barney",
"lastName": "Henderson",
"creatorType": "author"
}
],
"date": "2017-06-09",
"ISSN": "0307-1235",
"abstractNote": "Theresa May has said sorry to the Tory MPs and ministers who lost their seats as a result of her decision to call a snap general election which cost the Conservatives their majority.",
"language": "en-GB",
"libraryCatalog": "www.telegraph.co.uk",
"publicationTitle": "The Telegraph",
"shortTitle": "Election results 2017",
"url": "http://www.telegraph.co.uk/news/2017/06/09/election-results-2017-theresa-may-clings-power-needs-support/",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [
"Conservative Party",
"General Election 2017",
"Jeremy Corbyn",
"Labour Party",
"News",
"Politics",
"Theresa May",
"UK News"
],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Philipp Zumstein^https?://www\.thetimes\.co\.uk//*
***** BEGIN LICENSE BLOCK *****
Copyright © 2017 Philipp Zumstein
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('/edition/') || url.includes('/article/')) {
return "newspaperArticle";
}
return false;
}
function doWeb(doc, url) {
scrape(doc, url);
}
function scrape(doc, url) {
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
// translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
var date = ZU.xpathText(doc, '//time[contains(@class, "Dateline")]');
if (date) {
item.date = ZU.strToISO(date);
}
item.publicationTitle = ZU.xpathText(doc, '//p[contains(@class, "Meta-content")]/span[contains(@class, "Publication")]');
if (item.publicationTitle == "The Sunday Times") {
item.ISSN = "0956-1382";
}
else {
item.ISSN = "0140-0460";
}
item.url = ZU.xpathText(doc, '//link[@rel="canonical"]/@href') || url;
item.section = ZU.xpathText(doc, '//article[@id="article-main"]/@data-article-sectionname');
item.complete();
});
translator.getTranslatorObject(function (trans) {
trans.itemType = "newspaperArticle";
trans.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.thetimes.co.uk/edition/scotland/rare-animals-among-body-count-at-scottish-zoos-htpkmkfvx",
"items": [
{
"itemType": "newspaperArticle",
"title": "Rare animals among body count at Scottish zoos",
"creators": [
{
"firstName": "Mark",
"lastName": "Macaskill",
"creatorType": "author"
}
],
"date": "2017-07-02",
"ISSN": "0956-1382",
"abstractNote": "More than 900 creatures in the care of the Royal Zoological Society of Scotland (RZSS) died in captivity last year, including several hundred rare snails bred for conservation. Figures released by...",
"libraryCatalog": "www.thetimes.co.uk",
"publicationTitle": "The Sunday Times",
"section": "Scotland",
"url": "https://www.thetimes.co.uk/article/rare-animals-among-body-count-at-scottish-zoos-htpkmkfvx",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.thetimes.co.uk/edition/money/weve-come-a-long-way-since-1967-reg-2l5j3gsph",
"items": [
{
"itemType": "newspaperArticle",
"title": "We’ve come a long way since 1967, Reg",
"creators": [
{
"firstName": "Nina",
"lastName": "Montagu-Smith",
"creatorType": "author"
}
],
"date": "2017-07-02",
"ISSN": "0956-1382",
"abstractNote": "Last week was the 50th anniversary of a landmark in the history of money: on June 27, 1967, the world’s first cash machine was unveiled in the unlikely setting of a Barclays branch in Enfield...",
"libraryCatalog": "www.thetimes.co.uk",
"publicationTitle": "The Sunday Times",
"section": "Money",
"url": "https://www.thetimes.co.uk/article/weve-come-a-long-way-since-1967-reg-2l5j3gsph",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.thetimes.co.uk/edition/news/british-museum-looks-to-the-future-with-digital-developments-to-control-crowds-3dfczszdz",
"items": [
{
"itemType": "newspaperArticle",
"title": "British Museum looks to the future with digital developments to control crowds",
"creators": [
{
"firstName": "David",
"lastName": "Sanderson",
"creatorType": "author"
}
],
"date": "2017-07-05",
"ISSN": "0140-0460",
"abstractNote": "The British Museum launched its vision for the future yesterday and indicated that its digital developments will be used to control the enormous crowds that flock to its artefacts. The museum’s...",
"libraryCatalog": "www.thetimes.co.uk",
"publicationTitle": "The Times",
"section": "News",
"url": "https://www.thetimes.co.uk/article/british-museum-looks-to-the-future-with-digital-developments-to-control-crowds-3dfczszdz",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
100Sebastian Karcher, Philipp Zumstein^https?://upcommons\.upc\.edu/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2017 Sebastian Karcher, Philipp Zumstein
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
var itemTypes = {
Article: "journalArticle",
Audiovisual: "film",
Book: "book",
Thesis: "thesis",
"Working Paper": "report",
"Technical Report": "report"
};
function detectWeb(doc, url) {
var type = ZU.xpathText(doc, '//meta[@name="DC.type"]/@content');
if (url.includes('/handle/') && type) {
return itemTypes[type] || "document";
}
else if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = ZU.xpath(doc, '//div[contains(@class, "row")]//h4[contains(@class, "artifact-title")]/a[contains(@href, "/handle/")]');
for (var i = 0; i < rows.length; i++) {
var href = rows[i].href;
var title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) return;
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
// We call the Embedded Metadata translator to do the actual work
var translator = Zotero.loadTranslator("web");
translator.setTranslator("951c027d-74ac-47d4-a107-9c3069ab7b48");
translator.setHandler("itemDone", function (obj, item) {
var type = ZU.xpathText(doc, '//meta[@name="DC.type"]/@content');
if (itemTypes[type]) item.itemType = itemTypes[type];
item.abstractNote = item.extra;
item.extra = "";
item.complete();
});
translator.getTranslatorObject(function (obj) {
obj.doWeb(doc, url);
});
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://upcommons.upc.edu/handle/2117/14979;jsessionid=AC2F8E675DC24715BCDE63BA8844A489?",
"items": [
{
"itemType": "journalArticle",
"title": "The new pelagic operational observatory of the catalan sea (OOCS) for the multisensor coordinated measurement of atmospheric and oceanographic conditions",
"creators": [
{
"firstName": "Antonio",
"lastName": "Cruzado",
"creatorType": "author"
},
{
"firstName": "Nixon",
"lastName": "Bahamón Rivera",
"creatorType": "author"
},
{
"firstName": "Jacopo",
"lastName": "Aguzzi",
"creatorType": "author"
},
{
"firstName": "Raffaele",
"lastName": "Bernardello",
"creatorType": "author"
},
{
"firstName": "Ahumada",
"lastName": "Sempoal",
"creatorType": "author"
},
{
"firstName": "Miguel",
"lastName": "Angel",
"creatorType": "author"
},
{
"firstName": "Joan",
"lastName": "Puigdefàbregas Sagristà",
"creatorType": "author"
},
{
"firstName": "Jordi",
"lastName": "Cateura Sabrí",
"creatorType": "author"
},
{
"firstName": "Eduardo",
"lastName": "Muñoz",
"creatorType": "author"
},
{
"firstName": "Zoila",
"lastName": "Velasquez Forero",
"creatorType": "author"
}
],
"date": "2011-12",
"DOI": "10.3390/s111211251",
"ISSN": "1424-8220",
"issue": "12",
"language": "eng",
"libraryCatalog": "upcommons.upc.edu",
"pages": "11251-11272",
"publicationTitle": "Sensors",
"rights": "Open Access",
"url": "http://upcommons.upc.edu/handle/2117/14979",
"volume": "11",
"attachments": [
{
"title": "Full Text PDF",
"mimeType": "application/pdf"
},
{
"title": "Snapshot"
}
],
"tags": [
"Catalunya -- Oceanografia",
"Climatologia -- Mesurament",
"Climatology",
"Multisensor coordinated monitoring",
"Numerical multiparametric modelling",
"Ocean forecast",
"Oceanografia -- Mesurament",
"Oceanographic buoy",
"Operational oceanography",
"PAR",
"Pelagic observatory",
"Sensors",
"Submarine canyons",
"Western Mediterranean Sea",
"Àrees temàtiques de la UPC::Enginyeria agroalimentària::Ciències de la terra i de la vida::Climatologia i meteorologia",
"Àrees temàtiques de la UPC::Enginyeria civil::Geologia::Oceanografia",
"Àrees temàtiques de la UPC::Enginyeria electrònica::Instrumentació i mesura::Sensors i actuadors"
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://upcommons.upc.edu/handle/2117/5301?",
"items": "multiple"
},
{
"type": "web",
"url": "http://upcommons.upc.edu/discover?scope=/&query=zotero&submit=",
"items": "multiple"
}
]
/** END TEST CASES **/
{"dataMode":"rdf\/xml"}100Simon Kornblithrdf/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2008 Simon Kornblith
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function doExport() {
var dc = "http://purl.org/dc/elements/1.1/";
Zotero.RDF.addNamespace("dc", dc);
var item;
while (item = Zotero.nextItem()) { // eslint-disable-line no-cond-assign
if (item.itemType == "note" || item.itemType == "attachment") {
continue;
}
var resource;
if (item.ISBN) {
resource = "urn:isbn:" + item.ISBN;
}
else if (item.url) {
resource = item.url;
}
else {
// just specify a node ID
resource = Zotero.RDF.newResource();
}
/** CORE FIELDS **/
// title
if (item.title) {
Zotero.RDF.addStatement(resource, dc + "title", item.title, true);
}
// type
Zotero.RDF.addStatement(resource, dc + "type", item.itemType, true);
// creators
for (var j in item.creators) {
// put creators in lastName, firstName format (although DC doesn't specify)
var creator = item.creators[j].lastName;
if (item.creators[j].firstName) {
creator += ", " + item.creators[j].firstName;
}
if (item.creators[j].creatorType == "author") {
Zotero.RDF.addStatement(resource, dc + "creator", creator, true);
}
else {
Zotero.RDF.addStatement(resource, dc + "contributor", creator, true);
}
}
/** FIELDS ON NEARLY EVERYTHING BUT NOT A PART OF THE CORE **/
// source
if (item.source) {
Zotero.RDF.addStatement(resource, dc + "source", item.source, true);
}
// accessionNumber as generic ID
if (item.accessionNumber) {
Zotero.RDF.addStatement(resource, dc + "identifier", item.accessionNumber, true);
}
// rights
if (item.rights) {
Zotero.RDF.addStatement(resource, dc + "rights", item.rights, true);
}
/** SUPPLEMENTAL FIELDS **/
// TODO - create text citation and OpenURL citation to handle volume, number, pages, issue, place
// publisher/distributor
if (item.publisher) {
Zotero.RDF.addStatement(resource, dc + "publisher", item.publisher, true);
}
else if (item.distributor) {
Zotero.RDF.addStatement(resource, dc + "publisher", item.distributor, true);
}
else if (item.institution) {
Zotero.RDF.addStatement(resource, dc + "publisher", item.institution, true);
}
// date/year
if (item.date) {
Zotero.RDF.addStatement(resource, dc + "date", item.date, true);
}
// ISBN/ISSN/DOI
if (item.ISBN) {
Zotero.RDF.addStatement(resource, dc + "identifier", "ISBN " + item.ISBN, true);
}
if (item.ISSN) {
Zotero.RDF.addStatement(resource, dc + "identifier", "ISSN " + item.ISSN, true);
}
if (item.DOI) {
Zotero.RDF.addStatement(resource, dc + "identifier", "DOI " + item.DOI, true);
}
// callNumber
if (item.callNumber) {
Zotero.RDF.addStatement(resource, dc + "identifier", item.callNumber, true);
}
// archiveLocation
if (item.archiveLocation) {
Zotero.RDF.addStatement(resource, dc + "coverage", item.archiveLocation, true);
}
// medium
if (item.medium) {
// The "medium" property is only part of the qualified DC terms,
// therefore we use here the "format" property.
Zotero.RDF.addStatement(resource, dc + "format", item.medium, true);
}
}
}
100Sebastian Karcher^https?://(www\.)?vimeo\.com/*
Vimeo Translator
Copyright (C) 2012 Sebastian Karcher
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
function detectWeb(doc, url) {
// the meta properties are missing once you're logged in
var xpath = '//meta[@property="og:video:type"]|//div[@class="video_meta"]';
if (ZU.xpath(doc, xpath).length > 0) {
return "videoRecording";
}
if (url.includes('vimeo.com/search?q=') && getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = ZU.xpath(doc, '//div[contains(@class, "iris_p_infinite__item")]//a[div/h5 and contains(@href, "//vimeo.com/")]');
for (var i = 0; i < rows.length; i++) {
var href = rows[i].href;
var title = ZU.xpathText(rows[i], './/h5');
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
// Due to some dynamic loading the DOM might not be ready for the method above
// but the data is also saved in some JSON object in a script tag of the website.
if (!found) {
var script = ZU.xpathText(doc, '//body/script[contains(., "vimeo.config")]');
if (script) {
var start = script.indexOf('vimeo.config');
var stop = script.indexOf('\n', start);
var data = script.substring(start + 45, stop - 2);
var json = JSON.parse(data);
if (json && json.api && json.api.initial_json && json.api.initial_json.data) {
var results = json.api.initial_json.data;
for (var entry of results) {
if (entry.clip && entry.clip.link && entry.clip.name) {
items[entry.clip.link] = entry.clip.name;
found = true;
}
}
}
}
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) return;
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, _url) {
var json = ZU.xpathText(doc, '//script[@type="application/ld+json"]');
var objects = JSON.parse(json);
var videoObject;
for (var i = 0; i < objects.length; i++) {
if (objects[i]["@type"] == "VideoObject") {
videoObject = objects[i];
}
}
var item = new Zotero.Item("videoRecording");
item.title = videoObject.name;
item.url = videoObject.url;
item.abstractNote = videoObject.description;
item.runningTime = videoObject.duration;
item.date = videoObject.uploadDate;
var author = videoObject.author;
if (author) {
item.creators.push(ZU.cleanAuthor(author.name, "author"));
}
var keywords = videoObject.keywords;
if (keywords) {
var tags = keywords.replace('[', '').replace(']', '').split(',');
for (var j = 0; j < tags.length; j++) {
item.tags.push(tags[j]);
}
}
item.attachments.push({
title: "Snapshot",
document: doc
});
item.complete();
}/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://vimeo.com/search?q=cello",
"items": "multiple"
},
{
"type": "web",
"url": "https://vimeo.com/31179423",
"items": [
{
"itemType": "videoRecording",
"title": "Strings: J.S. Bach - Cello Suite No. 1 - Prelude",
"creators": [
{
"firstName": "Alexander",
"lastName": "Chen",
"creatorType": "author"
}
],
"date": "2011-10-26T22:29:03-04:00",
"abstractNote": "Strings (2011) by Alexander Chen visualizes the first Prelude from Bach's Cello Suites. Using the math behind string length and pitch, it came from a simple…",
"libraryCatalog": "Vimeo",
"runningTime": "PT00H02M57S",
"shortTitle": "Strings",
"url": "https://vimeo.com/31179423",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [
"art",
"audio",
"classical",
"experimental",
"html5",
"interactive",
"music",
"sound",
"visualization"
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://vimeo.com/search?q=zotero",
"items": "multiple"
}
]
/** END TEST CASES **/
100Sebastian Karcher^https?://www\.uptodate\.com/contents//*
***** BEGIN LICENSE BLOCK *****
UpToDate Translator
Copyright © 2013 Sebastian Karcher
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, _url) {
if (ZU.xpathText(doc, '//ol[@id="reference"]//a')) return "multiple";
else if (ZU.xpathText(doc, '//div[@class="abstractRow"]/div[@class="label" and contains(text(), "TI")]')) return "journalArticle";
return false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
let items = {};
var titles = ZU.xpath(doc, '//ol[@id="reference"]//a');
for (var i in titles) {
items[titles[i].href] = titles[i].textContent;
}
Zotero.selectItems(items, function (items) {
if (!items) return;
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
}
else scrape(doc, url);
}
function scrape(doc, url) {
var PMID = ZU.xpathText(doc, '//div[@class="abstractRow"]/div[@class="label" and contains(text(), "PMID")]/following-sibling::div');
if (PMID) PMID = PMID.trim();
Z.debug(PMID);
if (!PMID) {
Z.debug("We don't have a PMID parsing item from page");
var item = new Zotero.Item("journalArticle");
item.title = ZU.xpathText(doc, '//div[@class="abstractRow"]/div[@class="label" and contains(text(), "TI")]/following-sibling::div');
var authors = ZU.xpathText(doc, '//div[@class="abstractRow"]/div[@class="label" and contains(text(), "AU")]/following-sibling::div');
authors = authors.split(/\s*,\s*/);
for (var i in authors) {
var author = authors[i].match(/^([^\s]+)\s+(.+)/);
item.creators.push({
creatorType: "author",
lastName: author[1],
firstName: author[2]
});
}
var citation = ZU.xpathText(doc, '//div[@class="abstractRow"]/div[@class="label" and contains(text(), "SO")]/following-sibling::div');
Z.debug(citation);
item.publicationTitle = item.journalAbbreviation = citation.match(/.+?\./)[0];
var date = citation.match(/(\d{4})\s*;/);
if (date) item.date = date[1];
var volume = citation.match(/;\s*(\d+)/);
if (volume) item.volume = volume[1];
var issue = citation.match(/\((\d+)\)/);
if (issue) item.issue = issue[1];
var pages = citation.match(/:([\d-]+)/);
if (pages) item.pages = pages[1];
item.attachments.push({
document: doc,
title: "UpToDate Record",
mimeType: "text/html"
});
item.complete();
}
else {
url = "http://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=pubmed&retmode=xml&id=" + PMID;
Zotero.Utilities.HTTP.doGet(url, function (text) {
// load translator for PubMed
var translator = Zotero.loadTranslator("import");
translator.setTranslator("fcf41bed-0cbc-3704-85c7-8062a0068a7a");
translator.setString(text);
// don't save when item is done
translator.setHandler("itemDone", function (obj, item) {
item.attachments.push({
document: doc,
title: "UpToDate Record",
mimeType: "text/html"
});
item.complete();
});
translator.translate();
});
}
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://www.uptodate.com/contents/cancer-prevention/abstract/1",
"items": [
{
"itemType": "journalArticle",
"title": "Global cancer statistics",
"creators": [
{
"firstName": "Ahmedin",
"lastName": "Jemal",
"creatorType": "author"
},
{
"firstName": "Freddie",
"lastName": "Bray",
"creatorType": "author"
},
{
"firstName": "Melissa M.",
"lastName": "Center",
"creatorType": "author"
},
{
"firstName": "Jacques",
"lastName": "Ferlay",
"creatorType": "author"
},
{
"firstName": "Elizabeth",
"lastName": "Ward",
"creatorType": "author"
},
{
"firstName": "David",
"lastName": "Forman",
"creatorType": "author"
}
],
"date": "2011 Mar-Apr",
"DOI": "10.3322/caac.20107",
"ISSN": "1542-4863",
"abstractNote": "The global burden of cancer continues to increase largely because of the aging and growth of the world population alongside an increasing adoption of cancer-causing behaviors, particularly smoking, in economically developing countries. Based on the GLOBOCAN 2008 estimates, about 12.7 million cancer cases and 7.6 million cancer deaths are estimated to have occurred in 2008; of these, 56% of the cases and 64% of the deaths occurred in the economically developing world. Breast cancer is the most frequently diagnosed cancer and the leading cause of cancer death among females, accounting for 23% of the total cancer cases and 14% of the cancer deaths. Lung cancer is the leading cancer site in males, comprising 17% of the total new cancer cases and 23% of the total cancer deaths. Breast cancer is now also the leading cause of cancer death among females in economically developing countries, a shift from the previous decade during which the most common cause of cancer death was cervical cancer. Further, the mortality burden for lung cancer among females in developing countries is as high as the burden for cervical cancer, with each accounting for 11% of the total female cancer deaths. Although overall cancer incidence rates in the developing world are half those seen in the developed world in both sexes, the overall cancer mortality rates are generally similar. Cancer survival tends to be poorer in developing countries, most likely because of a combination of a late stage at diagnosis and limited access to timely and standard treatment. A substantial proportion of the worldwide burden of cancer could be prevented through the application of existing cancer control knowledge and by implementing programs for tobacco control, vaccination (for liver and cervical cancers), and early detection and treatment, as well as public health campaigns promoting physical activity and a healthier dietary intake. Clinicians, public health professionals, and policy makers can play an active role in accelerating the application of such interventions globally.",
"extra": "PMID: 21296855",
"issue": "2",
"journalAbbreviation": "CA Cancer J Clin",
"language": "eng",
"libraryCatalog": "UpToDate References",
"pages": "69-90",
"publicationTitle": "CA: a cancer journal for clinicians",
"volume": "61",
"attachments": [
{
"title": "PubMed entry",
"mimeType": "text/html",
"snapshot": false
},
{
"title": "UpToDate Record",
"mimeType": "text/html"
}
],
"tags": [
"Humans",
"Internationality",
"Neoplasms"
],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.uptodate.com/contents/approach-to-the-diagnosis-and-evaluation-of-low-back-pain-in-adults?source=search_result&search=back+pain&selectedTitle=1%7E150",
"items": "multiple"
}
]
/** END TEST CASES **/
100Philipp Zumstein^https?://(www\.)?washingtonmonthly\.com/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2017 Philipp Zumstein
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
var header = ZU.xpath(doc, '//header[contains(@class, "entry-header")]');
if (header && header.length == 1) {
if (url.includes('/magazine/')) {
return 'magazineArticle';
}
else {
return 'blogPost';
}
}
if (getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = ZU.xpath(doc, '//h3[contains(@class, "entry-title")]/a');
for (var i = 0; i < rows.length; i++) {
var href = rows[i].href;
var title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) return;
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var type = url.includes('/magazine/') ? 'magazineArticle' : 'blogPost';
var translator = Zotero.loadTranslator('web');
// Embedded Metadata
translator.setTranslator('951c027d-74ac-47d4-a107-9c3069ab7b48');
translator.setDocument(doc);
translator.setHandler('itemDone', function (obj, item) {
item.itemType = type;
var header = ZU.xpath(doc, '//header[contains(@class, "entry-header")]');
var authors = ZU.xpathText(header, './/div[contains(@class, "author-info")]/a[contains(@class, "author-name")]');
if (authors) {
var authorsList = authors.split(' and ');
for (var i = 0; i < authorsList.length; i++) {
item.creators.push(ZU.cleanAuthor(authorsList[i], "author"));
}
}
item.volume = ZU.xpathText(header, './div[contains(@class, "issue-header")]');
var category = ZU.xpathText(header, './div[contains(@class, "header-tag")]');
if (type == "blogPost" && category) {
delete item.publicationTitle;
item.blogTitle = "Washington Monthly - " + category.trim();
}
if (type == "magazineArticle") {
item.ISSN = "0043-0633";
}
item.complete();
});
translator.translate();
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://washingtonmonthly.com/magazine/mayjune-2011/the-information-sage/",
"items": [
{
"itemType": "magazineArticle",
"title": "The Information Sage",
"creators": [
{
"firstName": "Joshua",
"lastName": "Yaffa",
"creatorType": "author"
}
],
"date": "2011-04-26T16:49:38+00:00",
"ISSN": "0043-0633",
"abstractNote": "Meet Edward Tufte, the graphics guru to the power elite who is revolutionizing how we see data.",
"libraryCatalog": "washingtonmonthly.com",
"publicationTitle": "Washington Monthly",
"url": "http://washingtonmonthly.com/magazine/mayjune-2011/the-information-sage/",
"volume": "May/June 2011",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://washingtonmonthly.com/2011/11/19/note-to-presenters-at-academic-conferences/",
"items": [
{
"itemType": "blogPost",
"title": "Note to Presenters at Academic Conferences",
"creators": [
{
"firstName": "Mark",
"lastName": "Kleiman",
"creatorType": "author"
}
],
"date": "2011-11-19T12:55:31+00:00",
"abstractNote": "1. Most of the audience either has a Ph.D. or is about to get one. 2. It is extremely hard to get a doctorate without finishing college. 3. Colleges rarely accept students without high school diplomas. 4. Before graduating from high school it is necessary to pass the third grade. 5. Passing the third grade",
"blogTitle": "Washington Monthly - Politics",
"url": "http://washingtonmonthly.com/2011/11/19/note-to-presenters-at-academic-conferences/",
"attachments": [
{
"title": "Snapshot"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://washingtonmonthly.com/?s=europe",
"items": "multiple"
},
{
"type": "web",
"url": "http://washingtonmonthly.com/political-animal/",
"items": "multiple"
}
]
/** END TEST CASES **/